mosx
Version:
Multiview observable state management engine
60 lines • 4.02 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.MosxTester = void 0;
class MosxTester {
constructor(tracker) {
this.tracker = tracker;
this.action = null;
this.disposers = {};
this.triggers = [];
this.unhandled = [];
}
addListener(id, tags, reversible = true) {
this.disposers[id] = this.tracker.onPatch((change) => {
const trigger = this.triggers.pop();
if (trigger) {
trigger(id, change);
}
else if (this.action && !this.triggers.length) {
this.unhandled.push({ id, change });
}
}, { tags, reversible });
}
onAction(action) {
this.triggers = [];
this.action = action;
return this;
}
trigger(count, listener) {
if (typeof count === "function") {
listener = count;
count = 1;
}
while (count-- && listener) {
this.triggers.push(listener);
}
return this;
}
dispose(id) {
if (this.disposers[id]) {
this.disposers[id]();
}
}
run(final) {
this.triggers = this.triggers.reverse();
if (this.action) {
this.action();
}
else {
console.log("action not defined!");
}
if (this.triggers.length > 0) {
this.unhandled.push({ count: this.triggers.length });
}
final && final(this.unhandled);
this.action = null;
this.unhandled = [];
}
}
exports.MosxTester = MosxTester;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rlc3Rlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFLQSxNQUFhLFVBQVU7SUFNckIsWUFBbUIsT0FBd0I7UUFBeEIsWUFBTyxHQUFQLE9BQU8sQ0FBaUI7UUFMcEMsV0FBTSxHQUFrQixJQUFJLENBQUE7UUFDNUIsY0FBUyxHQUE2QixFQUFFLENBQUE7UUFDeEMsYUFBUSxHQUFjLEVBQUUsQ0FBQTtRQUN4QixjQUFTLEdBQVUsRUFBRSxDQUFBO0lBRWtCLENBQUM7SUFFeEMsV0FBVyxDQUFDLEVBQVUsRUFBRSxJQUF1QixFQUFFLFVBQVUsR0FBRyxJQUFJO1FBQ3ZFLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNuRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFBO1lBQ25DLElBQUksT0FBTyxFQUFFO2dCQUNYLE9BQU8sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUE7YUFDcEI7aUJBQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUU7Z0JBQy9DLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUE7YUFDcEM7UUFDSCxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQTtJQUMxQixDQUFDO0lBRU0sUUFBUSxDQUFDLE1BQWM7UUFDNUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUE7UUFDbEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUE7UUFDcEIsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0lBRU0sT0FBTyxDQUFDLEtBQVUsRUFBRSxRQUFrQjtRQUMzQyxJQUFJLE9BQU8sS0FBSyxLQUFLLFVBQVUsRUFBRTtZQUMvQixRQUFRLEdBQUcsS0FBSyxDQUFBO1lBQ2hCLEtBQUssR0FBRyxDQUFDLENBQUE7U0FDVjtRQUNELE9BQU8sS0FBSyxFQUFFLElBQUksUUFBUSxFQUFFO1lBQzFCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1NBQzdCO1FBQ0QsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0lBRU0sT0FBTyxDQUFDLEVBQVU7UUFDdkIsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQTtTQUNyQjtJQUNILENBQUM7SUFFTSxHQUFHLENBQUMsS0FBa0M7UUFDM0MsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFBO1FBQ3ZDLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNmLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQTtTQUNkO2FBQU07WUFDTCxPQUFPLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLENBQUE7U0FDbkM7UUFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUM1QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUE7U0FDckQ7UUFDRCxLQUFLLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUM5QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQTtRQUNsQixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQTtJQUNyQixDQUFDO0NBQ0Y7QUF4REQsZ0NBd0RDIn0=