@platform/state
Version:
A small, simple, strongly typed, [rx/observable] state-machine.
25 lines (24 loc) • 1.28 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((0, operators_1.takeUntil)(dispose$));
var changing$ = $.pipe((0, operators_1.filter)(function (e) { return e.type === 'StateObject/changing'; }), (0, operators_1.map)(function (e) { return e.payload; }), (0, operators_1.share)());
var changed$ = $.pipe((0, operators_1.filter)(function (e) { return e.type === 'StateObject/changed'; }), (0, operators_1.map)(function (e) { return e.payload; }), (0, operators_1.share)());
var patched$ = changed$.pipe((0, operators_1.map)(function (e) {
var op = e.op, cid = e.cid;
var _a = e.patches, prev = _a.prev, next = _a.next;
return { op: op, cid: cid, prev: prev, next: next };
}));
var cancelled$ = $.pipe((0, operators_1.filter)(function (e) { return e.type === 'StateObject/cancelled'; }), (0, operators_1.map)(function (e) { return e.payload; }), (0, operators_1.share)());
return {
$: $,
dispose$: dispose$,
changing$: changing$,
changed$: changed$,
patched$: patched$,
cancelled$: cancelled$,
};
}
exports.create = create;