"use strict";
var ReactBrowserEventEmitter = require('ReactBrowserEventEmitter');
var accumulateInto = require('accumulateInto');
var forEachAccumulated = require('forEachAccumulated');
var invariant = require('invariant');
function remove(event) {
event.remove();
}
var LocalEventTrapMixin = {
trapBubbledEvent(topLevelType, handlerBaseName) {
invariant(this.isMounted(), 'Must be mounted to trap events');
var listener = ReactBrowserEventEmitter.trapBubbledEvent(
topLevelType,
handlerBaseName,
this.getDOMNode()
);
this._localEventListeners =
accumulateInto(this._localEventListeners, listener);
},
componentWillUnmount() {
if (this._localEventListeners) {
forEachAccumulated(this._localEventListeners, remove);
}
}
};
module.exports = LocalEventTrapMixin;