UNPKG

@patternplate/client

Version:

Universal javascript client application for patternplate

81 lines (72 loc) 3.05 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.flat = exports.default = void 0; var _search = require("@patternplate/search"); var _lodash = require("lodash"); var _reselect = require("reselect"); var _navigation = require("../selectors/navigation"); var _tree = require("./tree"); const sd = (0, _reselect.createSelector)(state => state.schema.docs, state => state.id, state => state.hideEnabled, state => state.routing.locationBeforeTransitions, state => state.base, () => () => [], (tree, id, hide, location, base, search) => { const context = { hide, id, prefix: "doc", location, base, search }; return (0, _tree.flatten)((0, _tree.sanitize)((0, _lodash.merge)({}, tree), context)).filter(item => item.type !== "folder"); }); const selectFlatPool = (0, _reselect.createSelector)(sd, _navigation.flat, state => ({ hide: state.hideEnabled, id: state.id, location: state.routing.locationBeforeTransitions, base: state.base, prefix: "doc", search: () => [] }), (docs, nav, context) => { return docs.map(d => (0, _tree.enrich)(d, context)).concat(nav).filter(item => Boolean(item.id) && Boolean(item.contentType)); }); const selectSubSearch = (0, _reselect.createSelector)(selectFlatPool, flatPool => { const search = (0, _search.createSearch)(flatPool); return term => { const matches = search(term); return matches.map(item => flatPool.find(p => p.id === item)); }; }); const selectDocsTree = (0, _reselect.createSelector)(state => state.schema.docs, state => state.id, state => state.hideEnabled, state => state.routing.locationBeforeTransitions, state => state.base, selectSubSearch, (tree, id, hide, location, base, search) => { const context = { hide, id, prefix: "doc", location, base, search }; return (0, _tree.sanitize)((0, _lodash.merge)({}, tree), context); }); const selectFirstItem = (0, _reselect.createSelector)(selectDocsTree, tree => { const list = (0, _tree.flatten)(tree); return list ? list[0] : null; }); const selectQueries = (0, _reselect.createSelector)(selectDocsTree, tree => (0, _tree.flatten)(tree).map(item => (item.manifest.options || {}).query).filter(Boolean)); const selectQueried = (0, _reselect.createSelector)(selectDocsTree, selectQueries, (tree, queries) => { const search = (0, _search.createSearch)((0, _tree.flatten)(tree)); return queries.reduce((acc, query) => { return acc.concat(search(query).filter(r => acc.indexOf(r) === -1)); }, []); }); const selectDocs = (0, _reselect.createSelector)(selectDocsTree, selectFirstItem, selectQueried, state => state.id, (tree, first, queried, id) => { tree.children = tree.children.filter(child => child.type === "folder" || queried.indexOf(child.id) === -1); if (id === '/' && first) { first.active = true; } return tree; }); var _default = selectDocs; exports.default = _default; const flat = (0, _reselect.createSelector)(selectDocs, _tree.flatten); exports.flat = flat; //# sourceMappingURL=docs.js.map