import BeleuchtungsLayer from "../../layers/BeleuchtungsLayer";
import TrafimageMapboxLayer from "../../layers/TrafimageMapboxLayer";
import MapboxStyleLayer from "../../layers/MapboxStyleLayer";
import MapsGeoAdminLayer from "../../layers/MapsGeoAdminLayer";
import { MapsRteKlasse, MapsRteKlasseValues } from "../../utils/constants";

// eslint-disable-next-line import/prefer-default-export
export const getBeleuchtungsLayers = () => {
  const beleuchtungDataLayer = new TrafimageMapboxLayer({
    name: "ch.sbb.beleuchtungsstaerken.data",
    visible: true,
    zIndex: -1,
    // Add zIndex as the MapboxLayer would block tiled layers (buslines)
    style: "basemap_infra_bright_ch.sbb.beleuchtung",
    properties: {
      hideInLegend: true
    },
    mapOptions: {
      preserveDrawingBuffer: true
    }
  });
  const beleuchtungstaerken1Layer = new BeleuchtungsLayer({
    name: "ch.sbb.beleuchtungsstaerken1",
    mapboxLayer: beleuchtungDataLayer,
    styleLayersFilter: _ref => {
      let {
        metadata
      } = _ref;
      return (metadata === null || metadata === void 0 ? void 0 : metadata[MapsRteKlasse]) === MapsRteKlasseValues.KLASSE_1;
    },
    properties: {
      hasInfos: true,
      useOverlay: true,
      popupComponent: "BeleuchtungsPopup",
      layerInfoComponent: "BeleuchtungLayerInfo",
      isQueryable: true
    }
  });
  const beleuchtungstaerken2aLayer = new BeleuchtungsLayer({
    name: "ch.sbb.beleuchtungsstaerken2a",
    mapboxLayer: beleuchtungDataLayer,
    styleLayersFilter: _ref2 => {
      let {
        metadata
      } = _ref2;
      return (metadata === null || metadata === void 0 ? void 0 : metadata[MapsRteKlasse]) === MapsRteKlasseValues.KLASSE_2A;
    },
    properties: {
      hasInfos: true,
      useOverlay: true,
      popupComponent: "BeleuchtungsPopup",
      layerInfoComponent: "BeleuchtungLayerInfo",
      isQueryable: true
    }
  });
  const beleuchtungstaerken2bLayer = new BeleuchtungsLayer({
    name: "ch.sbb.beleuchtungsstaerken2b",
    mapboxLayer: beleuchtungDataLayer,
    styleLayersFilter: _ref3 => {
      let {
        metadata
      } = _ref3;
      return (metadata === null || metadata === void 0 ? void 0 : metadata[MapsRteKlasse]) === MapsRteKlasseValues.KLASSE_2B;
    },
    properties: {
      hasInfos: true,
      useOverlay: true,
      popupComponent: "BeleuchtungsPopup",
      layerInfoComponent: "BeleuchtungLayerInfo",
      isQueryable: true
    }
  });
  const beleuchtungstaerken3Layer = new BeleuchtungsLayer({
    name: "ch.sbb.beleuchtungsstaerken3",
    mapboxLayer: beleuchtungDataLayer,
    styleLayersFilter: _ref4 => {
      let {
        metadata
      } = _ref4;
      return (metadata === null || metadata === void 0 ? void 0 : metadata[MapsRteKlasse]) === MapsRteKlasseValues.KLASSE_3;
    },
    properties: {
      hasInfos: true,
      useOverlay: true,
      popupComponent: "BeleuchtungsPopup",
      layerInfoComponent: "BeleuchtungLayerInfo",
      isQueryable: true
    }
  });
  const beleuchtungstaerken4Layer = new BeleuchtungsLayer({
    name: "ch.sbb.beleuchtungsstaerken4",
    mapboxLayer: beleuchtungDataLayer,
    styleLayersFilter: _ref5 => {
      let {
        metadata
      } = _ref5;
      return (metadata === null || metadata === void 0 ? void 0 : metadata[MapsRteKlasse]) === MapsRteKlasseValues.KLASSE_4;
    },
    properties: {
      hasInfos: true,
      useOverlay: true,
      popupComponent: "BeleuchtungsPopup",
      layerInfoComponent: "BeleuchtungLayerInfo",
      isQueryable: true
    }
  });
  const createMapsGeoAdminStyleLayer = key => {
    return new MapboxStyleLayer({
      name: key,
      key,
      visible: false,
      mapboxLayer: beleuchtungDataLayer,
      styleLayersFilter: _ref6 => {
        let {
          id
        } = _ref6;
        return id === key;
      },
      properties: {
        legendKey: key,
        hasInfos: true,
        layerInfoComponent: "MapsGeoAdminLayerInfo",
        isQueryable: true
      }
    });
  };
  const mapsGeoAdminSchutzgebieteLayerKeys = ["ch.bafu.wrz-jagdbanngebiete_select", "ch.bafu.wrz-wildruhezonen_portal", "ch.bafu.waldreservate", "ch.bafu.unesco-weltnaturerbe", "ch.bak.schutzgebiete-unesco_weltkulturerbe", "ch.bafu.schutzgebiete-smaragd", "ch.bafu.schutzgebiete-paerke_nationaler_bedeutung_perimeter", "ch.bafu.schutzgebiete-ramsar", "ch.pronatura.naturschutzgebiete", "ch.bafu.schutzgebiete-biosphaerenreservate"];
  const beleuchtungstaerkenSchutzgebieteLayer = new MapsGeoAdminLayer({
    name: "ch.sbb.beleuchtungsstaerken.bafu-schutzgebiete.group",
    visible: false,
    children: mapsGeoAdminSchutzgebieteLayerKeys.map(createMapsGeoAdminStyleLayer),
    properties: {
      featureInfoEventTypes: ["singleclick"],
      useOverlay: true,
      popupComponent: "MapsGeoAdminPopup",
      isQueryable: true
    }
  });
  const mapsGeoAdminBundesinventareLayerKeys = ["ch.bafu.bundesinventare-vogelreservate", "ch.bafu.bundesinventare-auen_vegetation_alpin", "ch.bafu.bundesinventare-trockenwiesen_trockenweiden_anhang2", "ch.bafu.bundesinventare-trockenwiesen_trockenweiden", "ch.bafu.bundesinventare-moorlandschaften", "ch.bafu.bundesinventare-bln", "ch.bafu.bundesinventare-jagdbanngebiete", "ch.bafu.bundesinventare-hochmoore", "ch.bafu.bundesinventare-flachmoore", "ch.bafu.bundesinventare-auen_anhang2", "ch.bafu.bundesinventare-auen", "ch.bafu.bundesinventare-amphibien_wanderobjekte", "ch.bafu.bundesinventare-amphibien", "ch.bafu.bundesinventare-amphibien_anhang4"];
  const beleuchtungstaerkenBundesInventareLayer = new MapsGeoAdminLayer({
    name: "ch.sbb.beleuchtungsstaerken.bafu-bundesinventare.group",
    visible: false,
    children: mapsGeoAdminBundesinventareLayerKeys.map(createMapsGeoAdminStyleLayer),
    properties: {
      featureInfoEventTypes: ["singleclick"],
      useOverlay: true,
      popupComponent: "MapsGeoAdminPopup",
      isQueryable: true
    }
  });
  return [beleuchtungDataLayer, beleuchtungstaerkenBundesInventareLayer, beleuchtungstaerkenSchutzgebieteLayer, beleuchtungstaerken4Layer, beleuchtungstaerken3Layer, beleuchtungstaerken2bLayer, beleuchtungstaerken2aLayer, beleuchtungstaerken1Layer];
};
//# sourceMappingURL=index.js.map