|
1 | 1 | <script lang="ts"> |
2 | | - import { isDefinition, isHeading } from '@accuser/mdast-util-type-guards'; |
3 | | - import { collect, Node } from '@typematter/svelte-unist'; |
4 | | - import GithubSlugger from 'github-slugger'; |
5 | | - import { toString } from 'mdast-util-to-string'; |
6 | | - import { SvelteMap } from 'svelte/reactivity'; |
| 2 | + import { Node } from '@typematter/svelte-unist'; |
| 3 | + import { getDefinitions } from './get-definitions.js'; |
| 4 | + import { getFrontmatter } from './get-frontmatter.js'; |
| 5 | + import { getHeadingIds } from './get-heading-ids.js'; |
7 | 6 | import { setRootContext } from './root-context.js'; |
8 | 7 |
|
9 | 8 | let { node }: { node: import('mdast').Root } = $props(); |
10 | 9 |
|
11 | 10 | let { children } = $derived(node); |
12 | 11 |
|
13 | | - let definitions = $derived( |
14 | | - collect(node, isDefinition).reduce( |
15 | | - (acc, definition) => acc.set(definition.identifier, definition), |
16 | | - new SvelteMap<string, import('mdast').Definition>() |
17 | | - ) |
18 | | - ); |
19 | | -
|
20 | | - let headings = $derived.by(() => { |
21 | | - const slugger = new GithubSlugger(); |
22 | | -
|
23 | | - return collect(node, isHeading).reduce( |
24 | | - (acc, heading) => acc.set(heading, slugger.slug(toString(heading.children))), |
25 | | - new SvelteMap<import('mdast').Heading, string>() |
26 | | - ); |
27 | | - }); |
| 12 | + let definitions = $derived(getDefinitions(node)); |
| 13 | + let frontmatter = $derived(getFrontmatter(node)); |
| 14 | + let headings = $derived(getHeadingIds(node)); |
28 | 15 |
|
29 | 16 | setRootContext({ |
30 | 17 | getDefinition: (identifier) => definitions.get(identifier), |
| 18 | + getFrontmatter: () => frontmatter, |
31 | 19 | getHeadingId: (heading) => headings.get(heading) |
32 | 20 | }); |
33 | 21 | </script> |
|
0 commit comments