Repository navigation
@fumadocs/satteri@0.6.0
·
8 commits
to dev
since this release
Index tables by row
Structured data records each table row as a Markdown table of its header row and itself, instead of a record per cell. Type tables from auto-type-table record a row for each prop instead of the TypeTable element. Re-sync your search indexes to pick them up.
remarkStructure()defaultstypestotableinstead oftableCell.tableRowToStructuredData()fromfumadocs-core/searchcreates the structured data of a table row,typeTableToStructuredData()fromfumadocs-typescriptof a type table.- Search hooks group the rows of a table into a
tableitem,<SearchDialogList />renders it withTable,<SearchDialogListTable />by default. - Algolia and Orama Cloud link to the anchor of every record, like the props of type tables.
- Orama Cloud searches
title,sectionandcontentby default, setparams.propertiesto search other fields. remarkStructure()of Sätteri records thedata.structuredDataof nodes in place of the nodes.
Markdown and search records from the authored source
remarkLLMs() and remarkStructure() of fumadocs-core slice their Markdown from the authored source like Sätteri, instead of stringifying the syntax tree. It is much faster, Markdown is no longer escaped or reformatted, and local images keep their addresses. Re-sync your search indexes to pick up the new records.
- Plugins record the Markdown of content they replace with
replaceSource()orembedSource()fromfumadocs-core/mdx-plugins/stringifier, in place ofdata._stringify, and add search records withdata.structuredData. Nodes they insert otherwise are left out. Anamespacelimits an edit to the stringifiers of that namespace, likesearchfor search records. - Search records are always Markdown, also in Sätteri.
filterElementreplacesstringify.filterElement, it chooses the JSX elements kept as HTML tags (File,TypeTable,CalloutandCardby default) that search dialogs render as components. Other elements and links are replaced by their content, images are removed, and an element on one line is recorded like a paragraph. - Removed
defaultStringifier()(usecreateStringifier()),StringifyOptions,allowedMdxAttributes,filterMdxAttributes,placeholder()(usemdxAsPlaceholder), and thestringifyandmdast-util-to-markdownoptions of both plugins. - Included content goes through the plugins like the document's own, Sätteri includes
.mdfiles as Markdown. <auto-files>shows its files in a code block,auto-type-tableits props in a Markdown table, created bytypeTableToMarkdown()fromfumadocs-typescript.remarkShow()andfileGenerator()offumadocs-docgenrecord their Markdown, generators receive thefileto do the same.- Records of
fumadocs-obsidianresolve wikilinks, and leave comments, block IDs, callout markers and embeds out. Comments are removed before parsing, so they no longer split a paragraph. - Pages of
fumadocs-pythoncompile from their MDX, so they have Markdown and search records. fumadocs-mdx,fumadocs-docgenandfumadocs-obsidianrequirefumadocs-core16.17.0.
Fix #3662
Fix Markdown output and search records
remarkImage()withonError: 'hide'removes the right images when a paragraph has several, and Sätteri removes them from the Markdown too.filescode blocks ofremarkMdxFiles()nest the entries under the last item of a folder (after└──), and trees indented with spaces only.- The remark and rehype plugins no longer slow down quadratically on large documents, like
rehypeToc()taking 17 ms instead of 239 ms on a 5 MB page. fumadocs-epubremoves every unresolved image, the second of two adjacent ones was kept.- Sätteri: headings with expression props, like
<Badge value={1} />or local images, compile again, without these elements in theirtocentry. - Sätteri:
remarkStructure()records every node type listed intypes, likefumadocs-core. A blockquote is one search record instead of two. In the Markdown, includes and type tables stay inside their list item or blockquote, heading IDs no longer break setext and closed ATX headings, and nested replacements no longer duplicate the source after them.