@motorcycle/router
Version:
Standard Router Driver for Motorcycle.js
39 lines • 1.44 kB
JavaScript
;
var __assign = (this && this.__assign) || Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
Object.defineProperty(exports, "__esModule", { value: true });
var most_1 = require("most");
var prelude_1 = require("@most/prelude");
var most_subject_1 = require("most-subject");
exports.RouterComponent = prelude_1.curry2(function Router(definitions, sources) {
var match$ = sources.router.define(definitions).thru(most_subject_1.hold(1));
return match$.filter(isNotNull).map(function (_a) {
var path = _a.path, value = _a.value;
var router = sources.router.path(path);
var sinks = value(__assign({}, sources, { router: router }));
var sinks$ = typeof sinks.observe === 'function'
? sinks.map(augmentSinks)
: most_1.of(sinks).map(augmentSinks);
return sinks$;
})
.switch();
});
function augmentSinks(nestedSinks) {
return __assign({}, nestedSinks, { router: (nestedSinks.router || most_1.never()).skipRepeatsWith(equalPaths) });
}
function isNotNull(_a) {
var path = _a.path;
return path !== null;
}
function equalPaths(_a, _b) {
var path = _a.path;
var path2 = _b.path;
return path !== path2;
}
//# sourceMappingURL=RouterHOC.js.map