@mopinion/deploy
Version:
Deploy your Mopinion feedback forms with ease
55 lines (46 loc) • 1.43 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = createListenerStore;
var _utils = require("../utils");
function createListenerStore() {
var state = {
intervals: [],
cleanUps: []
};
function clearListeners() {
var clearIntervals = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
state.cleanUps.forEach(function (runCleanUp) {
return runCleanUp();
});
state.cleanUps = [];
if (clearIntervals) {
state.intervals.forEach(function (cancel) {
return cancel();
});
state.intervals = [];
}
for (var key in state) {
if (['intervals', 'cleanUps'].indexOf(key) === -1) {
delete state[key];
}
}
}
function setListener() {
var fn = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function () {};
var cleanUp = fn(state);
state.cleanUps.push(cleanUp);
}
function setIntervalListener() {
var fn = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function () {};
var time = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2000;
state.intervals.push((0, _utils.setRecursiveTimeout)(fn, time));
}
return {
clearListeners: clearListeners,
setListener: setListener,
setIntervalListener: setIntervalListener
};
}
//# sourceMappingURL=createListenerStore.js.map