112 lines
2.6 KiB
TypeScript
112 lines
2.6 KiB
TypeScript
import { DocumentMetadata } from '@nrwl/nx-dev/data-access-documents';
|
|
import { MenuItem, MenuSection } from './menu.models';
|
|
|
|
export function createMenuItems(
|
|
versionId: string,
|
|
flavor: string,
|
|
root: DocumentMetadata[]
|
|
): MenuItem[] {
|
|
const items = root.find((x) => x.id === flavor)?.itemList;
|
|
|
|
const createPathMetadata = (g: DocumentMetadata, parentId = ''): MenuItem => {
|
|
const pathData = {
|
|
...g,
|
|
path: `/${versionId}/${flavor}/${parentId}/${g.id}`,
|
|
};
|
|
|
|
if (Array.isArray(g.itemList)) {
|
|
pathData.itemList = g.itemList.map((value) =>
|
|
createPathMetadata(value, `${parentId}/${g.id}`)
|
|
);
|
|
}
|
|
|
|
return pathData;
|
|
};
|
|
|
|
return (
|
|
items?.map((item) => {
|
|
return {
|
|
...item,
|
|
itemList: item.itemList?.map((ii) => createPathMetadata(ii, item.id)),
|
|
};
|
|
}) ?? []
|
|
);
|
|
}
|
|
|
|
export function getBasicSection(items: MenuItem[]): MenuSection {
|
|
return {
|
|
id: 'basic',
|
|
name: 'Basic',
|
|
hideSectionHeader: true,
|
|
itemList: items
|
|
.filter(
|
|
(m) =>
|
|
m.id === 'getting-started' ||
|
|
m.id === 'tutorial' ||
|
|
m.id === 'migration' ||
|
|
m.id === 'core-concepts'
|
|
)
|
|
.map((m) => {
|
|
return {
|
|
...m,
|
|
disableCollapsible: m.id !== 'tutorial',
|
|
};
|
|
}),
|
|
};
|
|
}
|
|
|
|
export function getDeepDiveSection(items: MenuItem[]): MenuSection {
|
|
return {
|
|
id: 'deep-dive',
|
|
name: 'Deep Dive',
|
|
itemList: items
|
|
.filter(
|
|
(m) =>
|
|
m.id === 'workspace-concepts' ||
|
|
m.id === 'structure' ||
|
|
m.id === 'generators' ||
|
|
m.id === 'executors' ||
|
|
m.id === 'ci' ||
|
|
m.id === 'modern-angular' ||
|
|
m.id === 'guides' ||
|
|
m.id === 'examples' ||
|
|
m.id === 'core-extended'
|
|
)
|
|
.map((m) => ({
|
|
...m,
|
|
disableCollapsible: true,
|
|
itemList: m.itemList?.map((item) => ({
|
|
...item,
|
|
disableCollapsible: true,
|
|
})),
|
|
})),
|
|
};
|
|
}
|
|
|
|
export function getApiSection(items: MenuItem[]): MenuSection {
|
|
return {
|
|
id: 'api',
|
|
name: 'API / Reference',
|
|
itemList: items.filter(
|
|
(m) =>
|
|
// m.id === 'plugins-overview' ||
|
|
m.id === 'workspace' ||
|
|
m.id === 'web' ||
|
|
m.id === 'angular' ||
|
|
m.id === 'react' ||
|
|
m.id === 'jest' ||
|
|
m.id === 'cypress' ||
|
|
m.id === 'storybook' ||
|
|
m.id === 'linter' ||
|
|
m.id === 'node' ||
|
|
m.id === 'express' ||
|
|
m.id === 'nest' ||
|
|
m.id === 'next' ||
|
|
m.id === 'gatsby' ||
|
|
m.id === 'nx-plugin' ||
|
|
m.id === 'nx-devkit' ||
|
|
m.id === 'cli'
|
|
),
|
|
};
|
|
}
|