@patternplate/client
Version:
Universal javascript client application for patternplate
70 lines (58 loc) • 2.07 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.flat = exports.default = exports.selectFlatPool = void 0;
var _search = require("@patternplate/search");
var _reselect = require("reselect");
var _docs = require("../selectors/docs");
var _navigation = require("../selectors/navigation");
var _tree = require("../selectors/tree");
const selectFlatPool = (0, _reselect.createSelector)(_docs.flat, _navigation.flat, state => ({
hide: state.hideEnabled,
id: state.id,
location: state.routing.locationBeforeTransitions,
base: state.base,
prefix: "doc",
search: () => []
}), (docs, nav, context) => {
const enriched = flatten(docs.map(d => {
return (0, _tree.enrich)(d, context);
}));
return enriched.concat(nav).filter(item => Boolean(item.id) && Boolean(item.contentType));
});
exports.selectFlatPool = selectFlatPool;
const selectSearch = (0, _reselect.createSelector)(selectFlatPool, flatPool => {
const search = () => [];
return term => {
const matches = search(term);
return matches.map(item => flatPool.find(p => p.id === item));
};
});
const selectPool = (0, _reselect.createSelector)(_docs.flat, _navigation.flat, state => ({
hide: state.hideEnabled,
id: state.id,
location: state.routing.locationBeforeTransitions,
base: state.base,
prefix: "doc",
search: selectSearch(state)
}), (docs, nav, context) => {
const enriched = flatten(docs.map(d => {
return (0, _tree.enrich)(d, context);
}));
return enriched.concat(nav).filter(item => Boolean(item.id) && Boolean(item.contentType));
});
function flatten(tree, initial = []) {
return tree.reduce((acc, item) => {
acc.push(item);
if (Array.isArray(item.children)) {
flatten(item.children, acc);
}
return acc;
}, initial);
}
var _default = selectPool;
exports.default = _default;
const flat = (0, _reselect.createSelector)(_docs.flat, _navigation.flat, (docs, nav) => flatten(docs.concat(nav)).filter(item => item.type === "item"));
exports.flat = flat;
//# sourceMappingURL=pool.js.map