import {define} from '/node_modules/vl-ui-core/dist/vl-core.js';
import {VlMapLayerAction} from '/src/vl-map-layer-action.js';
import {VlDeleteAction} from '/node_modules/vl-mapactions/dist/vl-mapactions.js';
import {VlMapLayerStyle} from '/src/vl-map-layer-style.js';
/**
* VlMapDeleteAction
* @class
* @classdesc Actie om features te deleten van een layer
*
* @extends VlMapLayerAction
*
* @see {@link https://www.github.com/milieuinfo/webcomponent-vl-ui-map/releases/latest|Release notes}
* @see {@link https://www.github.com/milieuinfo/webcomponent-vl-ui-map/issues|Issues}
* @see {@link https://webcomponenten.omgeving.vlaanderen.be/demo/vl-map-delete-action.html|Demo}
*/
export class VlMapDeleteAction extends VlMapLayerAction {
/**
* Geeft de stijl die een geselecteerd feature zal krijgen.
*
* @return {Object} de stijl
*/
get style() {
return this._style;
}
/**
* Zet de stijl die een geselecteerde feature zal krijgen.
*
* @param {VlMapLayerStyle|Object} style - de stijl: een VlMapLayerStyle of een OpenLayers Style
*/
set style(style) {
if (style instanceof VlMapLayerStyle) {
this._style = style.style;
} else {
this._style = style;
}
this._processAction();
}
/**
* Zet de functie die wordt uitgevoerd na het uitvoeren van de verwijder actie.
* Voor elke geselecteerde feature wordt de reject callback gebruikt om de feature te verwijderen of de reject callback zodat de feature niet verwijderd wordt.
*
* @param {Function} callback functie met volgende argumenten:
* - {[ol.Feature]} de te verwijderen features
* - {Function} resolve callback met ol.Feature als argument die verwijderd wordt
* - {Function} reject callback zonder argument waarbij de highlight verwijderd wordt
*/
onDelete(callback) {
this.__callback = callback;
}
get _callback() {
return (features, resolve, reject) => {
if (this.__callback) {
return this.__callback(features, resolve, reject);
} else {
features.forEach((feature) => resolve(feature));
}
};
}
_createAction(layer) {
const options = {
style: this._style,
};
return new VlDeleteAction(layer, this._callback, options);
}
}
define('vl-map-delete-action', VlMapDeleteAction);