@mantine/utils
Version:
[](https://www.npmjs.com/package/@mantine/utils)
47 lines (45 loc) • 1.28 kB
JavaScript
function groupOptions({ data }) {
const sortedData = [];
const unGroupedData = [];
const groupedData = data.reduce((acc, item, index) => {
if (item.group) {
if (acc[item.group])
acc[item.group].push(index);
else
acc[item.group] = [index];
} else {
unGroupedData.push(index);
}
return acc;
}, {});
Object.keys(groupedData).forEach((groupName) => {
sortedData.push(...groupedData[groupName].map((index) => data[index]));
});
sortedData.push(...unGroupedData.map((itemIndex) => data[itemIndex]));
return sortedData;
}
function getGroupedOptions(data) {
const sorted = groupOptions({ data });
const unGrouped = [];
const grouped = [];
let groupName = null;
sorted.forEach((item, index) => {
if (!item.group) {
unGrouped.push({ type: "item", item, index });
} else {
if (groupName !== item.group) {
groupName = item.group;
grouped.push({ type: "label", label: groupName });
}
grouped.push({ type: "item", item, index });
}
});
return {
grouped,
unGrouped,
items: [...grouped, ...unGrouped],
hasItems: grouped.length > 0 || unGrouped.length > 0
};
}
export { getGroupedOptions, groupOptions };
//# sourceMappingURL=group-options.js.map