@prodo/core
Version:
Core package for [Prodo](https://prodo.dev). See [documentation](https://docs.prodo.dev) for more info.
50 lines • 1.78 kB
JavaScript
;
var __spreadArrays = (this && this.__spreadArrays) || function () {
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
for (var r = Array(s), k = 0, i = 0; i < il; i++)
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
r[k] = a[j];
return r;
};
Object.defineProperty(exports, "__esModule", { value: true });
var immer_1 = require("immer");
var watch_1 = require("./watch");
exports.startEvent = function (store, actionName, pluginName, args, origin) {
var event = {
id: origin.id,
parentId: origin.parentId,
actionName: actionName,
pluginName: pluginName,
args: args,
nextActions: [],
patches: [],
prevUniverse: store.universe,
};
if (store.trackHistory) {
if (store.history.length >= 1024) {
store.history.shift();
}
store.history.push(event);
}
return event;
};
exports.completeEvent = function (event, store) {
var nextUniverse = immer_1.applyPatches(store.universe, event.patches);
store.universe = nextUniverse;
event.nextUniverse = nextUniverse;
watch_1.submitPatches(store, store.universe, event);
event.nextActions.forEach(function (_a) {
var func = _a.func, args = _a.args, origin = _a.origin;
if (store.watchForComplete) {
store.watchForComplete.count += 1;
}
setTimeout(function () { return store.exec.apply(store, __spreadArrays([origin, func], args)); }, 0);
});
if (store.watchForComplete) {
store.watchForComplete.count -= 1;
if (store.watchForComplete.count === 0) {
store.watchForComplete.cb();
}
}
};
//# sourceMappingURL=events.js.map