UNPKG

@patternplate/client

Version:

Universal javascript client application for patternplate

70 lines (58 loc) 2.07 kB
"use strict"; 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