refraction-player
Version:
Event player for Refraction
59 lines (48 loc) • 1.69 kB
JavaScript
;
exports.__esModule = true;
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
var timeoutIterate = function timeoutIterate(i, conditionFn, consumerFn, timeoutFn) {
if (conditionFn(i)) {
setTimeout(function () {
consumerFn(i);
timeoutIterate(i + 1, conditionFn, consumerFn, timeoutFn);
}, timeoutFn(i));
}
};
exports["default"] = function (_ref) {
var refraction = _ref.refraction;
var _ref$track = _ref.track;
var track = _ref$track === undefined ? [] : _ref$track;
var _ref$exclude = _ref.exclude;
var exclude = _ref$exclude === undefined ? [] : _ref$exclude;
var _ref$delay = _ref.delay;
var delay = _ref$delay === undefined ? 200 : _ref$delay;
var _ref$ignoreTime = _ref.ignoreTime;
var ignoreTime = _ref$ignoreTime === undefined ? false : _ref$ignoreTime;
var previousTime = -1;
var events = [].concat(_toConsumableArray(track));
var timeout = function timeout(i) {
var result = delay;
var time = events[i].time;
if (time && !ignoreTime) {
if (previousTime === -1) {
previousTime = time;
}
result = time - previousTime;
previousTime = time;
}
return result;
};
var exists = function exists(i) {
return i < events.length;
};
var consume = function consume(i) {
var _events$i = events[i];
var channel = _events$i.channel;
var param = _events$i.param;
if (exclude.indexOf(channel) === -1) {
refraction.publish(channel, param);
}
};
timeoutIterate(0, exists, consume, timeout);
};