UNPKG

mosx

Version:

Multiview observable state management engine

60 lines 4.02 kB
"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=