Added PageComponents

This commit is contained in:
2026-09-30 16:20:40 +02:00
parent c6023cf857
commit e57e2da09d
37 changed files with 1408 additions and 62 deletions

View File

@@ -30,3 +30,23 @@ export function trailOf(article: Article): Article[] {
for (let node: Article | null = article; node; node = node.parent) trail.unshift(node)
return trail
}
export type ContextGroup = {
heading: Article | null
entries: Article[]
}
export function contextOf(article: Article | null, roots: Article[]): ContextGroup[] {
if (!article) return [{ heading: null, entries: roots }]
const { parent } = article
const siblings = (parent ? parent.children : roots).filter((entry) => entry !== article)
const groups: ContextGroup[] = [
{ heading: parent?.parent ?? null, entries: parent?.listed ? [parent] : [] },
{ heading: parent, entries: siblings },
{ heading: article, entries: article.children },
]
return groups.filter((group) => group.entries.length > 0)
}