@mozaic-ds/vue-3
Version:
Vue.js implementation of Mozaic Design System
48 lines (43 loc) • 1.06 kB
JavaScript
import { toRaw } from 'vue';
function findMenuTreeWithCode(items, code) {
const selection = [];
for (const item of items) {
if (item.code === code) {
selection.push(item);
return selection;
} else if (item.items) {
const prevSelection = findMenuTreeWithCode(item.items, code);
if (prevSelection.length) {
return [item, ...prevSelection];
}
}
}
return selection;
}
export function selectFeature(features, utilities, userFeatures, home, code) {
let items = [...features, ...flatten(utilities), ...userFeatures];
if (home) {
items = [...items, home];
}
if (!items.length) {
return;
}
if (!code) {
return undefined;
}
const tree = findMenuTreeWithCode(items, code);
if (tree.length) {
return {
lv0: toRaw(tree[0]),
lv1: toRaw(tree[1]),
lv2: toRaw(tree[2]),
};
} else {
return undefined;
}
}
export function flatten(arrayOfArrays) {
return arrayOfArrays.reduce((accumulator, array) => {
return [...accumulator, ...array];
}, []);
}