import { UiElement } from "../../ui/UiElement.js";
import { LayerTree } from "../../map/LayerTree.js";
import { FileDropTarget } from "../../ui/dnd/FileDropTarget.js";
import { FileBinder } from "../../map/importer/binder/FileBinder.js";
/**
* Loader for Drag Drop File Based Layers
*
* @author rhess <robin.hess@awi.de>
*/
/**
* A function that initializes a drag drop area
* for file based layers
*
* @memberof vef.viewer.loader
*
* @param {object} options
* @param {Viewer} viewer
*/
export function FileDropArea(options, viewer) {
const layerTree = viewer.elements[options.targetTree];
if (!(layerTree instanceof LayerTree)) return;
let target = viewer.elements[options.dropTarget];
if (target instanceof UiElement) target = target.getElement();
if (target instanceof HTMLElement) {
new FileDropTarget(target).on("drop", (files) => {
for (let i in files) {
if (files[i] instanceof File) {
FileBinder.loadFileLayer(files[i], options).then(data => {
layerTree.addStructuredLayers(data.layers, data.structure, "top");
});
}
}
});
}
}