UNPKG

element-book

Version:

An [`element-vir`](https://npmjs.com/package/element-vir) drop-in element for building, testing, and demonstrating a collection of elements (or, in other words, a design system).

47 lines (46 loc) 1.53 kB
import { type Values } from '@augment-vir/common'; import { type AnyBookEntryType, type BookEntryType } from '../book-entry/book-entry-type.js'; import { type BookEntry } from '../book-entry/book-entry.js'; /** * Property used to mark tree nodes. * * @category Internal */ export declare const isBookTreeNodeMarker = "_isBookTreeNode"; /** * The base tree node type for {@link BookTreeNode}. * * @category Internal */ export type InternalBookTreeNodeType<Entry> = { [isBookTreeNodeMarker]: true; entry: Entry; /** UrlBreadcrumb is different from entry.title because it's modified to support URLs. */ urlBreadcrumb: string; fullUrlBreadcrumbs: ReadonlyArray<string>; children: Record<string, BookTreeNode>; /** * False when an entry has been added by traversing manually added parents. True when the entry * was added as an explicit entry. */ manuallyAdded: boolean; }; /** * Any element-book tree node. * * @category Internal */ export type BookTreeNode<EntryTypes extends BookEntryType = AnyBookEntryType> = Values<{ [EntryType in EntryTypes]: InternalBookTreeNodeType<Extract<BookEntry, { entryType: EntryType; }>>; }> | (AnyBookEntryType extends EntryTypes ? InternalBookTreeNodeType<BookEntry> : never); /** * The full element-book app tree for representing page structure. * * @category Internal */ export type BookTree = Readonly<{ tree: Readonly<BookTreeNode<BookEntryType.Root>>; flattenedNodes: ReadonlyArray<Readonly<BookTreeNode>>; }>;