19 lines
1.2 KiB
JavaScript
19 lines
1.2 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.getFirstLetter = exports.groupByFirstLetter = exports.groupByQuadrants = exports.featuredOnly = void 0;
|
|
exports.featuredOnly = (items) => items.filter(item => item.featured);
|
|
exports.groupByQuadrants = (items) => items.reduce((quadrants, item) => (Object.assign(Object.assign({}, quadrants), { [item.quadrant]: addItemToQuadrant(quadrants[item.quadrant], item) })), {});
|
|
exports.groupByFirstLetter = (items) => {
|
|
const index = items.reduce((letterIndex, item) => (Object.assign(Object.assign({}, letterIndex), { [exports.getFirstLetter(item)]: addItemToList(letterIndex[exports.getFirstLetter(item)], item) })), {});
|
|
return Object.keys(index)
|
|
.sort()
|
|
.map(letter => ({
|
|
letter,
|
|
items: index[letter],
|
|
}));
|
|
};
|
|
const addItemToQuadrant = (quadrant = {}, item) => (Object.assign(Object.assign({}, quadrant), { [item.ring]: addItemToRing(quadrant[item.ring], item) }));
|
|
const addItemToList = (list = [], item) => [...list, item];
|
|
const addItemToRing = (ring = [], item) => [...ring, item];
|
|
exports.getFirstLetter = (item) => item.title.substr(0, 1).toUpperCase();
|