pretur.navigation
Version:
SPA navigation helper using react and redux
66 lines • 10.4 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
function byPath(descriptor) {
return descriptor.path;
}
function visible(descriptor) {
return !descriptor.hidden;
}
function buildDescriptorsFromTree(root) {
var pages = [];
var folders = [];
var pathTree = [];
var filteredPathTree = [];
buildPageFolderTree(root, pages, folders, pathTree, filteredPathTree, []);
var folderContents = buildFolderContents(folders.map(byPath), pages.map(byPath));
var filteredFolderContents = buildFolderContents(folders.map(byPath), pages.filter(visible).map(byPath));
return { pages: pages, folders: folders, pathTree: pathTree, folderContents: folderContents, filteredPathTree: filteredPathTree, filteredFolderContents: filteredFolderContents };
}
exports.buildDescriptorsFromTree = buildDescriptorsFromTree;
function buildPageFolderTree(root, pages, folders, pathTree, filteredPathTree, chain) {
pathTree.push(chain.join('/'));
filteredPathTree.push(chain.join('/'));
for (var _i = 0, _a = Object.keys(root); _i < _a.length; _i++) {
var path = _a[_i];
var newChain = chain.concat(path);
var absolutePath = newChain.join('/');
if (root[path].contents) {
var folder = root[path];
folder.path = absolutePath;
var newPathTree = [];
var newFilteredPathTree = [];
pathTree.push(newPathTree);
folders.push(folder);
buildPageFolderTree(folder.contents, pages, folders, newPathTree, newFilteredPathTree, newChain);
if (newFilteredPathTree.length > 1) {
filteredPathTree.push(newFilteredPathTree);
}
}
else {
var page = root[path];
page.path = absolutePath;
pathTree.push(absolutePath);
if (!page.hidden) {
filteredPathTree.push(absolutePath);
}
pages.push(page);
}
}
}
function buildFolderContents(folders, pages) {
var folderContents = {};
folderContents[''] = pages.slice();
for (var _i = 0, folders_1 = folders; _i < folders_1.length; _i++) {
var folder = folders_1[_i];
folderContents[folder] = [];
for (var _a = 0, pages_1 = pages; _a < pages_1.length; _a++) {
var page = pages_1[_a];
if (page.indexOf(folder) !== -1) {
folderContents[folder].push(page);
}
}
folderContents[folder].sort();
}
return folderContents;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGREZXNjcmlwdG9yc0Zyb21UcmVlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2J1aWxkRGVzY3JpcHRvcnNGcm9tVHJlZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVdBLGdCQUFnQixVQUE2QjtJQUMzQyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztBQUN6QixDQUFDO0FBRUQsaUJBQWlCLFVBQWdCO0lBQy9CLE1BQU0sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7QUFDNUIsQ0FBQztBQUVELGtDQUNFLElBQXFCO0lBRXJCLElBQU0sS0FBSyxHQUFXLEVBQUUsQ0FBQztJQUN6QixJQUFNLE9BQU8sR0FBaUIsRUFBRSxDQUFDO0lBQ2pDLElBQU0sUUFBUSxHQUFhLEVBQUUsQ0FBQztJQUM5QixJQUFNLGdCQUFnQixHQUFhLEVBQUUsQ0FBQztJQUV0QyxtQkFBbUIsQ0FBSSxJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFN0UsSUFBTSxjQUFjLEdBQUcsbUJBQW1CLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDbkYsSUFBTSxzQkFBc0IsR0FBRyxtQkFBbUIsQ0FDaEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFDbkIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQ2xDLENBQUM7SUFFRixNQUFNLENBQUMsRUFBRSxLQUFLLE9BQUEsRUFBRSxPQUFPLFNBQUEsRUFBRSxRQUFRLFVBQUEsRUFBRSxjQUFjLGdCQUFBLEVBQUUsZ0JBQWdCLGtCQUFBLEVBQUUsc0JBQXNCLHdCQUFBLEVBQUUsQ0FBQztBQUNoRyxDQUFDO0FBakJELDREQWlCQztBQUVE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LGNBQWMsQ0FBQztBQUN4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGFnZUZvbGRlciwgUGF0aFRyZWUsIFBhZ2VUcmVlTm9kZSwgUGFnZSwgVmFsaWRUcmVlTm9kZSB9IGZyb20gJy4vcGFnZXMnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBEZXNjcmlwdG9ycyB7XHJcbiAgcGFnZXM6IFBhZ2U8YW55LCBhbnk+W107XHJcbiAgZm9sZGVyczogUGFnZUZvbGRlcltdO1xyXG4gIHBhdGhUcmVlOiBQYXRoVHJlZTtcclxuICBmb2xkZXJDb250ZW50czogeyBbZm9sZGVyOiBzdHJpbmddOiBzdHJpbmdbXSB9O1xyXG4gIGZpbHRlcmVkUGF0aFRyZWU6IFBhdGhUcmVlO1xyXG4gIGZpbHRlcmVkRm9sZGVyQ29udGVudHM6IHsgW2ZvbGRlcjogc3RyaW5nXTogc3RyaW5nW10gfTtcclxufVxyXG5cclxuZnVuY3Rpb24gYnlQYXRoKGRlc2NyaXB0b3I6IFBhZ2VGb2xkZXIgfCBQYWdlKSB7XHJcbiAgcmV0dXJuIGRlc2NyaXB0b3IucGF0aDtcclxufVxyXG5cclxuZnVuY3Rpb24gdmlzaWJsZShkZXNjcmlwdG9yOiBQYWdlKSB7XHJcbiAgcmV0dXJuICFkZXNjcmlwdG9yLmhpZGRlbjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkRGVzY3JpcHRvcnNGcm9tVHJlZTxUIGV4dGVuZHMgVmFsaWRUcmVlTm9kZT4oXHJcbiAgcm9vdDogUGFnZVRyZWVOb2RlPFQ+LFxyXG4pOiBEZXNjcmlwdG9ycyB7XHJcbiAgY29uc3QgcGFnZXM6IFBhZ2VbXSA9IFtdO1xyXG4gIGNvbnN0IGZvbGRlcnM6IFBhZ2VGb2xkZXJbXSA9IFtdO1xyXG4gIGNvbnN0IHBhdGhUcmVlOiBQYXRoVHJlZSA9IFtdO1xyXG4gIGNvbnN0IGZpbHRlcmVkUGF0aFRyZWU6IFBhdGhUcmVlID0gW107XHJcblxyXG4gIGJ1aWxkUGFnZUZvbGRlclRyZWU8VD4ocm9vdCwgcGFnZXMsIGZvbGRlcnMsIHBhdGhUcmVlLCBmaWx0ZXJlZFBhdGhUcmVlLCBbXSk7XHJcblxyXG4gIGNvbnN0IGZvbGRlckNvbnRlbnRzID0gYnVpbGRGb2xkZXJDb250ZW50cyhmb2xkZXJzLm1hcChieVBhdGgpLCBwYWdlcy5tYXAoYnlQYXRoKSk7XHJcbiAgY29uc3QgZmlsdGVyZWRGb2xkZXJDb250ZW50cyA9IGJ1aWxkRm9sZGVyQ29udGVudHMoXHJcbiAgICBmb2xkZXJzLm1hcChieVBhdGgpLFxyXG4gICAgcGFnZXMuZmlsdGVyKHZpc2libGUpLm1hcChieVBhdGgpLFxyXG4gICk7XHJcblxyXG4gIHJldHVybiB7IHBhZ2VzLCBmb2xkZXJzLCBwYXRoVHJlZSwgZm9sZGVyQ29udGVudHMsIGZpbHRlcmVkUGF0aFRyZWUsIGZpbHRlcmVkRm9sZGVyQ29udGVudHMgfTtcclxufVxyXG5cclxuZnVuY3Rpb24gYnVpbGRQYWdlRm9sZGVyVHJlZTxUIGV4dGVuZHMgVmFsaWRUcmVlTm9kZT4oXHJcbiAgcm9vdDogUGFnZVRyZWVOb2RlPFQ+LFxyXG4gIHBhZ2VzOiBQYWdlW10sXHJcbiAgZm9sZGVyczogUGFnZUZvbGRlcltdLFxyXG4gIHBhdGhUcmVlOiBQYXRoVHJlZSxcclxuICBmaWx0ZXJlZFBhdGhUcmVlOiBQYXRoVHJlZSxcclxuICBjaGFpbjogc3RyaW5nW10sXHJcbik6IHZvaWQge1xyXG5cclxuICBwYXRoVHJlZS5wdXNoKGNoYWluLmpvaW4oJy8nKSk7XHJcbiAgZmlsdGVyZWRQYXRoVHJlZS5wdXNoKGNoYWluLmpvaW4oJy8nKSk7XHJcblxyXG4gIGZvciAoY29uc3QgcGF0aCBvZiBPYmplY3Qua2V5cyhyb290KSkge1xyXG4gICAgY29uc3QgbmV3Q2hhaW4gPSBjaGFpbi5jb25jYXQocGF0aCk7XHJcbiAgICBjb25zdCBhYnNvbHV0ZVBhdGggPSBuZXdDaGFpbi5qb2luKCcvJyk7XHJcblxyXG4gICAgaWYgKCg8UGFnZUZvbGRlcj5yb290W3BhdGhdKS5jb250ZW50cykge1xyXG4gICAgICBjb25zdCBmb2xkZXIgPSA8UGFnZUZvbGRlcj5yb290W3BhdGhdO1xyXG4gICAgICBmb2xkZXIucGF0aCA9IGFic29sdXRlUGF0aDtcclxuXHJcbiAgICAgIGNvbnN0IG5ld1BhdGhUcmVlOiBQYXRoVHJlZSA9IFtdO1xyXG4gICAgICBjb25zdCBuZXdGaWx0ZXJlZFBhdGhUcmVlOiBQYXRoVHJlZSA9IFtdO1xyXG4gICAgICBwYXRoVHJlZS5wdXNoKG5ld1BhdGhUcmVlKTtcclxuXHJcbiAgICAgIGZvbGRlcnMucHVzaChmb2xkZXIpO1xyXG5cclxuICAgICAgYnVpbGRQYWdlRm9sZGVyVHJlZShcclxuICAgICAgICBmb2xkZXIuY29udGVudHMsXHJcbiAgICAgICAgcGFnZXMsXHJcbiAgICAgICAgZm9sZGVycyxcclxuICAgICAgICBuZXdQYXRoVHJlZSxcclxuICAgICAgICBuZXdGaWx0ZXJlZFBhdGhUcmVlLFxyXG4gICAgICAgIG5ld0NoYWluLFxyXG4gICAgICApO1xyXG5cclxuICAgICAgaWYgKG5ld0ZpbHRlcmVkUGF0aFRyZWUubGVuZ3RoID4gMSkge1xyXG4gICAgICAgIGZpbHRlcmVkUGF0aFRyZWUucHVzaChuZXdGaWx0ZXJlZFBhdGhUcmVlKTtcclxuICAgICAgfVxyXG5cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IHBhZ2UgPSA8UGFnZT5yb290W3BhdGhdO1xyXG4gICAgICBwYWdlLnBhdGggPSBhYnNvbHV0ZVBhdGg7XHJcblxyXG4gICAgICBwYXRoVHJlZS5wdXNoKGFic29sdXRlUGF0aCk7XHJcblxyXG4gICAgICBpZiAoIXBhZ2UuaGlkZGVuKSB7XHJcbiAgICAgICAgZmlsdGVyZWRQYXRoVHJlZS5wdXNoKGFic29sdXRlUGF0aCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHBhZ2VzLnB1c2gocGFnZSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBidWlsZEZvbGRlckNvbnRlbnRzKGZvbGRlcnM6IHN0cmluZ1tdLCBwYWdlczogc3RyaW5nW10pOiB7IFtmb2xkZXI6IHN0cmluZ106IHN0cmluZ1tdIH0ge1xyXG4gIGNvbnN0IGZvbGRlckNvbnRlbnRzOiB7IFtmb2xkZXI6IHN0cmluZ106IHN0cmluZ1tdIH0gPSB7fTtcclxuXHJcbiAgZm9sZGVyQ29udGVudHNbJyddID0gcGFnZXMuc2xpY2UoKTtcclxuXHJcbiAgZm9yIChjb25zdCBmb2xkZXIgb2YgZm9sZGVycykge1xyXG4gICAgZm9sZGVyQ29udGVudHNbZm9sZGVyXSA9IFtdO1xyXG5cclxuICAgIGZvciAoY29uc3QgcGFnZSBvZiBwYWdlcykge1xyXG4gICAgICBpZiAocGFnZS5pbmRleE9mKGZvbGRlcikgIT09IC0xKSB7XHJcbiAgICAgICAgZm9sZGVyQ29udGVudHNbZm9sZGVyXS5wdXNoKHBhZ2UpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZm9sZGVyQ29udGVudHNbZm9sZGVyXS5zb3J0KCk7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gZm9sZGVyQ29udGVudHM7XHJcbn1cclxuIl19