@platform/state
Version:
A small, simple, strongly typed, [rx/observable] state-machine.
25 lines (24 loc) • 1.26 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.create = void 0;
var operators_1 = require("rxjs/operators");
function create(event$, dispose$) {
var $ = event$.pipe(operators_1.takeUntil(dispose$));
var changing$ = $.pipe(operators_1.filter(function (e) { return e.type === 'StateObject/changing'; }), operators_1.map(function (e) { return e.payload; }), operators_1.share());
var changed$ = $.pipe(operators_1.filter(function (e) { return e.type === 'StateObject/changed'; }), operators_1.map(function (e) { return e.payload; }), operators_1.share());
var patched$ = changed$.pipe(operators_1.map(function (e) {
var op = e.op, cid = e.cid, action = e.action;
var _a = e.patches, prev = _a.prev, next = _a.next;
return { op: op, cid: cid, action: action, prev: prev, next: next };
}));
var cancelled$ = $.pipe(operators_1.filter(function (e) { return e.type === 'StateObject/cancelled'; }), operators_1.map(function (e) { return e.payload; }), operators_1.share());
return {
$: $,
dispose$: dispose$,
changing$: changing$,
changed$: changed$,
patched$: patched$,
cancelled$: cancelled$,
};
}
exports.create = create;