Source: interactions/snap.js

let ol = require('openlayers');

/**
 * Класс, предназначенный для управления привязками к объектам
 * @class Snap
 */
class Snap {
   constructor(params) {
      let interaction = new ol.interaction.Snap(params);
      this.interaction = interaction;
      this.type = "snap";
      this.id = params.id || params.layerId;
      this.events={};

      this.initEvents(params);
   }

   initEvents(params) {
   }

    /**
     * Подписка на события
     * @param eventName
     * @param listener
     */
    on(eventName, listener) {
        let self = this;
        let eventStore = self.events;
        eventStore[eventName] = listener;
    }

    /**
     * Выключение подписки на событие
     * @param eventName
     */
    off(eventName) {
        let self = this;
        let eventStore = self.events;
        if (eventStore[eventName]) delete eventStore[eventName];
    }

    /**
     * Инициация события с контекстом
     * @param eventName
     * @param context
     */
    emit(eventName, context) {
        let self = this;
        let eventStore = self.events;
        let listener = eventStore[eventName];
        if (listener && typeof listener === "function") {
            listener(context);
        }
    }
}

module.exports = Snap;