import { WMSLayer } from "../layer/WMSLayer/WMSLayer.js";
import { WFSLayer } from "../layer/WFSLayer/WFSLayer.js";
import { Layer } from "../layer/Layer/Layer.js";
import { GeoJSONLayer } from "../layer/GeoJSONLayer/GeoJSONLayer.js";
import { TileLayer } from "../layer/TileLayer/TileLayer.js";
import { DwsLayer } from "../layer/DwsLayer/DwsLayer.js";
import { CsvLayer } from "../layer/CsvLayer/CsvLayer.js";
import { OpusLayer } from "../layer/OpusLayer/OpusLayer.js";
import { Folder } from "../layer/Folder/Folder.js";
import { FilterLayer } from "../layer/FilterLayer/FilterLayer.js";
import { StaLayer } from "../layer/StaLayer/StaLayer.js";
const layerClasses = {
"wms": WMSLayer,
"wfs": WFSLayer,
"geojson": GeoJSONLayer,
"dws": DwsLayer,
"csv": CsvLayer,
"opus": OpusLayer,
"tile": TileLayer,
"folder": Folder,
"filter": FilterLayer,
"sta": StaLayer
}
/**
* Static method to load a layer from a json config
* @param {object} config
* @returns {Layer} loaded layer instance
*/
export function loadLayer(config, cache, id) {
const type = (config.type || cache.type || "").toLowerCase();
const LayerClass = layerClasses[type] || Folder;
return new LayerClass(config, cache, id);
}