2022-12-28 18:46:51 +00:00
|
|
|
import { generateBlockId, IBlockData } from "@schlechtenburg/core";
|
|
|
|
import { getDefaultData as getDefaultLayoutData, ILayoutData, name as layoutName } from "@schlechtenburg/layout";
|
|
|
|
import { getDefaultData as getDefaultHeadingData, name as headingName } from "@schlechtenburg/heading";
|
2022-12-29 02:47:45 +00:00
|
|
|
import { IPage } from "~~/composables/pages";
|
2022-12-28 18:46:51 +00:00
|
|
|
|
|
|
|
export const getNewPageBlock: () => IBlockData<ILayoutData> = () => ({
|
|
|
|
id: generateBlockId(),
|
|
|
|
name: layoutName,
|
|
|
|
data: getDefaultLayoutData({
|
|
|
|
children: [
|
|
|
|
{
|
|
|
|
id: generateBlockId(),
|
|
|
|
name: headingName,
|
|
|
|
data: getDefaultHeadingData({ value: 'New page' }),
|
|
|
|
}
|
|
|
|
],
|
|
|
|
}),
|
|
|
|
});
|
2022-12-29 02:47:45 +00:00
|
|
|
|
|
|
|
export const getPageParents = (page: IPage, pages: IPage[], parents: IPage[]):IPage[] => {
|
|
|
|
const parent = pages.find(p => p.id === page.attributes?.parent?.data?.id);
|
|
|
|
if (!parent) {
|
|
|
|
return parents;
|
|
|
|
}
|
|
|
|
|
|
|
|
return getPageParents(
|
|
|
|
parent,
|
|
|
|
pages,
|
|
|
|
[
|
|
|
|
parent,
|
|
|
|
...parents,
|
|
|
|
],
|
|
|
|
);
|
|
|
|
};
|
|
|
|
|
|
|
|
export const getPagePath = (page: IPage, pages: IPage[]) => {
|
|
|
|
const ancestors = [
|
|
|
|
...getPageParents(page, pages, []),
|
|
|
|
page,
|
|
|
|
];
|
|
|
|
|
|
|
|
return ancestors.reduce((path, page) => page.attributes?.slug ? `${path}/${page.attributes?.slug}` : path, '');
|
|
|
|
}
|