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 { VectorLayer } from "mobility-toolbox-js/ol";
import Fill from "ol/style/Fill";
import GeoJSON from "ol/format/GeoJSON";
import Icon from "ol/style/Icon";
import OLVectorLayer from "ol/layer/Vector";
import OLVectorSource from "ol/source/Vector";
import Style from "ol/style/Style";
import Text from "ol/style/Text";
import featureCollection from "./FeatureCollection.json";

/**
 * Layer for Zweitausbildung Abroad
 * Extends {@link https://mobility-toolbox-js.netlify.app/api/class/src/ol/layers/VectorLayer%20js~VectorLayer%20html}
 * @private
 * @class
 * @param {Object} [options] Layer options.
 */
class ZweitausbildungAbroadLayer extends VectorLayer {
  constructor() {
    let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
    const olLayer = new OLVectorLayer({
      style: (f, r) => this.style(f, r),
      source: new OLVectorSource({
        format: new GeoJSON(),
        loader: () => {
          const format = new GeoJSON();
          const features = format.readFeatures(featureCollection);
          this.olLayer.getSource().clear();
          this.olLayer.getSource().addFeatures(features);
        }
      }),
      zIndex: options.zIndex || 0
    });
    super(_objectSpread(_objectSpread({}, options), {}, {
      olLayer
    }));
    this.styleCache = {};
  }
  setLanguage(language) {
    this.language = language;
    this.olLayer.changed();
  }
  setStaticFilesUrl(staticFilesUrl) {
    this.staticFilesUrl = staticFilesUrl;
    this.olLayer.changed();
  }
  style(feature, resolution) {
    const text = feature.get("title_".concat(this.language));
    const hover = feature.get("hoverStyle");
    const fontSize = hover ? 20 : 16;
    const cacheKey = text + hover + resolution;
    if (!this.styleCache[cacheKey]) {
      this.styleCache[cacheKey] = [new Style({
        text: new Text({
          textBaseline: "middle",
          textAlign: "center",
          text,
          fill: new Fill({
            color: "white"
          }),
          font: "".concat(fontSize, "px Arial, Verdana, Helvetica, sans-serif")
        })
      }), new Style({
        image: new Icon({
          src: "".concat(this.staticFilesUrl, "/img/layers/zweitausbildung/button_rectangle.png"),
          anchor: [0.4, 0.505]
        })
      })];
    }
    return this.styleCache[cacheKey];
  }
}
export default ZweitausbildungAbroadLayer;
//# sourceMappingURL=ZweitausbildungAbroadLayer.js.map