UNPKG

@prodo/core

Version:

Core package for [Prodo](https://prodo.dev). See [documentation](https://docs.prodo.dev) for more info.

50 lines 1.78 kB
"use strict"; 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