@motorcycle/router
Version:
Standard Router Driver for Motorcycle.js
37 lines • 1.32 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;
};
import { never, of } from 'most';
import { curry2 } from '@most/prelude';
import { hold } from 'most-subject';
export var RouterComponent = curry2(function Router(definitions, sources) {
var match$ = sources.router.define(definitions).thru(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)
: of(sinks).map(augmentSinks);
return sinks$;
})
.switch();
});
function augmentSinks(nestedSinks) {
return __assign({}, nestedSinks, { router: (nestedSinks.router || 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