function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
import { Feature } from "ol";
import { Point } from "ol/geom";

/**
 * TODO highlightPointFeatureFilter and getHighlightGeometry seems never used anymore in the codebase.
 * TODO silent parameter seems also never be used
 * could we remove them?
 */
const highlightPointFeatures = (features, layer, highlightLayer, coordinate, silent // Used to prevent state updates in popup components (e.g. DvLineInfo, DvFeatureInfo)
) => {
  highlightLayer.getSource().clear();
  const filtered = !silent && layer.get("highlightPointFeatureFilter") ? features.filter(feat => layer.get("highlightPointFeatureFilter")(feat, layer)) : features;
  filtered.forEach(feat => {
    if (feat && feat.getGeometry()) {
      const layerHighlightGeom = layer.get("getHighlightGeometry") && layer.get("getHighlightGeometry")(feat, layer, coordinate);
      if (feat.getGeometry().getType() === "Point") {
        highlightLayer.getSource().addFeature(new Feature(_objectSpread(_objectSpread({}, feat.getProperties()), {}, {
          geometry: layerHighlightGeom || feat.getGeometry(),
          silent
        })));
      } else {
        // In case mapbox render an icon for a polygon or a line we display
        // the highlight style on the coordinate clicked.
        // Needed for platforms layer.
        const {
          layer: mbLayer
        } = feat.get("mapboxFeature") || {};
        const defaultHighlightGeom = mbLayer && mbLayer.layout && mbLayer.layout["icon-image"] && new Point(coordinate);
        if (layerHighlightGeom || defaultHighlightGeom) {
          highlightLayer.getSource().clear();
          highlightLayer.getSource().addFeature(new Feature(_objectSpread(_objectSpread({}, feat.getProperties()), {}, {
            geometry: layerHighlightGeom || defaultHighlightGeom,
            silent
          })));
        }
      }
    }
  });
};
export default highlightPointFeatures;
//# sourceMappingURL=highlightPointFeatures.js.map