livemark 0.7.2 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +14 -14
- package/source/actions/changelog/build.ts +245 -0
- package/source/actions/changelog/build.unit.ts +69 -0
- package/source/actions/config/define.ts +11 -0
- package/source/actions/config/define.unit.ts +33 -0
- package/source/actions/config/load.ts +22 -0
- package/source/actions/config/load.unit.ts +30 -0
- package/source/commands/build.ts +21 -0
- package/source/commands/escape.ts +77 -0
- package/source/commands/preview.ts +25 -0
- package/source/commands/start.ts +26 -0
- package/{build/website → source}/components/Article.tsx +12 -2
- package/{build/website → source}/components/Callout.tsx +1 -1
- package/{build/website → source}/components/Layout.tsx +3 -14
- package/{build/website → source}/components/LinkButton.tsx +1 -1
- package/{build/website → source}/components/PageToolbar.tsx +21 -8
- package/{build/website → source}/components/Section.tsx +1 -1
- package/{build/website → source}/components/SectionHeader.tsx +1 -1
- package/{build/website/components/MiniSidebar.tsx → source/components/Sidebar.tsx} +21 -5
- package/{build/website/components/Sidebar.tsx → source/components/SidebarArticles.tsx} +22 -55
- package/source/components/SidebarPosts.tsx +129 -0
- package/source/components/SidebarReleases.tsx +85 -0
- package/{build/website → source}/content-collections.ts +2 -2
- package/{build/website → source}/elements/accordion.tsx +1 -1
- package/{build/website → source}/elements/alert-dialog.tsx +1 -1
- package/{build/website → source}/elements/alert.tsx +1 -1
- package/{build/website → source}/elements/aspect-ratio.tsx +1 -1
- package/{build/website → source}/elements/avatar.tsx +1 -1
- package/{build/website → source}/elements/badge.tsx +1 -1
- package/{build/website → source}/elements/breadcrumb.tsx +1 -1
- package/{build/website → source}/elements/button-group.tsx +1 -1
- package/{build/website → source}/elements/button.tsx +1 -1
- package/{build/website → source}/elements/calendar.tsx +1 -1
- package/{build/website → source}/elements/card.tsx +1 -1
- package/{build/website → source}/elements/carousel.tsx +1 -1
- package/{build/website → source}/elements/chart.tsx +1 -1
- package/{build/website → source}/elements/checkbox.tsx +1 -1
- package/{build/website → source}/elements/command.tsx +1 -1
- package/{build/website → source}/elements/context-menu.tsx +1 -1
- package/{build/website → source}/elements/dialog.tsx +1 -1
- package/{build/website → source}/elements/drawer.tsx +1 -1
- package/{build/website → source}/elements/dropdown-menu.tsx +1 -1
- package/{build/website → source}/elements/empty.tsx +1 -1
- package/{build/website → source}/elements/field.tsx +1 -1
- package/{build/website → source}/elements/hover-card.tsx +1 -1
- package/{build/website → source}/elements/input-group.tsx +1 -1
- package/{build/website → source}/elements/input-otp.tsx +1 -1
- package/{build/website → source}/elements/input.tsx +1 -1
- package/{build/website → source}/elements/item.tsx +1 -1
- package/{build/website → source}/elements/kbd.tsx +1 -1
- package/{build/website → source}/elements/label.tsx +1 -1
- package/{build/website → source}/elements/menubar.tsx +1 -1
- package/{build/website → source}/elements/native-select.tsx +1 -1
- package/{build/website → source}/elements/navigation-menu.tsx +1 -1
- package/{build/website → source}/elements/pagination.tsx +1 -1
- package/{build/website → source}/elements/popover.tsx +1 -1
- package/{build/website → source}/elements/progress.tsx +1 -1
- package/{build/website → source}/elements/radio-group.tsx +1 -1
- package/{build/website → source}/elements/resizable.tsx +1 -1
- package/{build/website → source}/elements/scroll-area.tsx +1 -1
- package/{build/website → source}/elements/select.tsx +1 -1
- package/{build/website → source}/elements/separator.tsx +1 -1
- package/{build/website → source}/elements/sheet.tsx +1 -1
- package/{build/website → source}/elements/sidebar.tsx +7 -4
- package/{build/website → source}/elements/skeleton.tsx +1 -1
- package/{build/website → source}/elements/slider.tsx +1 -1
- package/{build/website → source}/elements/spinner.tsx +1 -1
- package/{build/website → source}/elements/switch.tsx +1 -1
- package/{build/website → source}/elements/table.tsx +1 -1
- package/{build/website → source}/elements/tabs.tsx +1 -1
- package/{build/website → source}/elements/textarea.tsx +1 -1
- package/{build/website → source}/elements/toggle-group.tsx +1 -1
- package/{build/website → source}/elements/toggle.tsx +1 -1
- package/{build/website → source}/elements/tooltip.tsx +1 -1
- package/source/entrypoints/main.ts +12 -0
- package/{build/website → source}/env.d.ts +1 -1
- package/source/helpers/program.ts +6 -0
- package/{build/website → source}/helpers/section.ts +1 -1
- package/source/hooks/media.ts +29 -0
- package/source/index.ts +1 -0
- package/{build/website → source}/models/article.ts +4 -0
- package/source/models/config.ts +51 -0
- package/source/models/link.ts +11 -0
- package/source/models/patch.ts +9 -0
- package/source/models/section.ts +45 -0
- package/source/models/theme.ts +74 -0
- package/source/program.ts +18 -0
- package/source/settings.ts +6 -0
- package/{build/website → source}/vite.config.ts +3 -3
- package/{build → target}/actions/changelog/build.d.ts +1 -0
- package/target/actions/changelog/build.js +187 -0
- package/target/actions/changelog/build.unit.js +66 -0
- package/target/actions/config/define.js +8 -0
- package/target/actions/config/define.unit.js +29 -0
- package/target/actions/config/load.js +25 -0
- package/target/actions/config/load.unit.js +23 -0
- package/target/client.d.ts +1 -0
- package/target/client.js +6 -0
- package/target/commands/build.js +14 -0
- package/target/commands/escape.js +56 -0
- package/target/commands/preview.js +18 -0
- package/target/commands/start.js +19 -0
- package/target/components/Abbr.d.ts +5 -0
- package/target/components/Abbr.js +9 -0
- package/target/components/AnsiCode.d.ts +4 -0
- package/target/components/AnsiCode.js +6 -0
- package/target/components/Article.d.ts +5 -0
- package/target/components/Article.js +105 -0
- package/target/components/BackToTop.d.ts +3 -0
- package/target/components/BackToTop.js +19 -0
- package/target/components/Banner.d.ts +2 -0
- package/target/components/Banner.js +12 -0
- package/target/components/BlogIndex.d.ts +4 -0
- package/target/components/BlogIndex.js +62 -0
- package/target/components/Breadcrumbs.d.ts +1 -0
- package/target/components/Breadcrumbs.js +13 -0
- package/target/components/Callout.d.ts +8 -0
- package/target/components/Callout.js +43 -0
- package/target/components/Card.d.ts +7 -0
- package/target/components/Card.js +17 -0
- package/target/components/Cards.d.ts +4 -0
- package/target/components/Cards.js +6 -0
- package/target/components/ChangelogIndex.d.ts +4 -0
- package/target/components/ChangelogIndex.js +57 -0
- package/target/components/CodeBlock.d.ts +1 -0
- package/target/components/CodeBlock.js +47 -0
- package/target/components/CodeTabs.d.ts +6 -0
- package/target/components/CodeTabs.js +49 -0
- package/target/components/Column.d.ts +4 -0
- package/target/components/Column.js +6 -0
- package/target/components/Columns.d.ts +5 -0
- package/target/components/Columns.js +10 -0
- package/target/components/Content.d.ts +3 -0
- package/target/components/Content.js +5 -0
- package/target/components/ContentTab.d.ts +5 -0
- package/target/components/ContentTab.js +6 -0
- package/target/components/ContentTabs.d.ts +5 -0
- package/target/components/ContentTabs.js +47 -0
- package/target/components/DefaultCatchBoundary.d.ts +2 -0
- package/target/components/DefaultCatchBoundary.js +20 -0
- package/target/components/DefinitionList.d.ts +7 -0
- package/target/components/DefinitionList.js +14 -0
- package/target/components/Details.d.ts +5 -0
- package/target/components/Details.js +13 -0
- package/target/components/FileTree.d.ts +4 -0
- package/target/components/FileTree.js +17 -0
- package/target/components/Footer.d.ts +2 -0
- package/target/components/Footer.js +9 -0
- package/target/components/FootnoteRef.d.ts +3 -0
- package/target/components/FootnoteRef.js +31 -0
- package/target/components/Heading.d.ts +8 -0
- package/target/components/Heading.js +18 -0
- package/target/components/InlineBadge.d.ts +5 -0
- package/target/components/InlineBadge.js +7 -0
- package/target/components/InlineIcon.d.ts +5 -0
- package/target/components/InlineIcon.js +10 -0
- package/target/components/InlineToc.d.ts +4 -0
- package/target/components/InlineToc.js +14 -0
- package/target/components/Layout.d.ts +4 -0
- package/target/components/Layout.js +65 -0
- package/target/components/LinkButton.d.ts +7 -0
- package/target/components/LinkButton.js +11 -0
- package/target/components/Mermaid.d.ts +4 -0
- package/target/components/Mermaid.js +8 -0
- package/target/components/MermaidRenderer.d.ts +4 -0
- package/target/components/MermaidRenderer.js +32 -0
- package/target/components/NotFound.d.ts +3 -0
- package/target/components/NotFound.js +10 -0
- package/target/components/PackageTabs.d.ts +9 -0
- package/target/components/PackageTabs.js +28 -0
- package/target/components/PageToolbar.d.ts +7 -0
- package/target/components/PageToolbar.js +34 -0
- package/target/components/PrevNext.d.ts +4 -0
- package/target/components/PrevNext.js +34 -0
- package/target/components/Search.d.ts +2 -0
- package/target/components/Search.js +16 -0
- package/target/components/SearchDialog.d.ts +5 -0
- package/target/components/SearchDialog.js +139 -0
- package/target/components/Section.d.ts +5 -0
- package/target/components/Section.js +8 -0
- package/target/components/SectionHeader.d.ts +7 -0
- package/target/components/SectionHeader.js +7 -0
- package/target/components/Sidebar.d.ts +4 -0
- package/target/components/Sidebar.js +33 -0
- package/target/components/SidebarArticles.d.ts +2 -0
- package/target/components/SidebarArticles.js +45 -0
- package/target/components/SidebarLinks.d.ts +4 -0
- package/target/components/SidebarLinks.js +26 -0
- package/target/components/SidebarPosts.d.ts +2 -0
- package/target/components/SidebarPosts.js +53 -0
- package/target/components/SidebarReleases.d.ts +2 -0
- package/target/components/SidebarReleases.js +35 -0
- package/target/components/SidebarSections.d.ts +4 -0
- package/target/components/SidebarSections.js +36 -0
- package/target/components/SiteTitle.d.ts +2 -0
- package/target/components/SiteTitle.js +12 -0
- package/target/components/SortableTable.d.ts +5 -0
- package/target/components/SortableTable.js +63 -0
- package/target/components/SoundCloud.d.ts +4 -0
- package/target/components/SoundCloud.js +7 -0
- package/target/components/TagIndex.d.ts +5 -0
- package/target/components/TagIndex.js +64 -0
- package/target/components/Theme.d.ts +1 -0
- package/target/components/Theme.js +21 -0
- package/target/components/Toc.d.ts +12 -0
- package/target/components/Toc.js +128 -0
- package/target/components/YouTube.d.ts +4 -0
- package/target/components/YouTube.js +6 -0
- package/target/components/ZoomImage.d.ts +4 -0
- package/target/components/ZoomImage.js +26 -0
- package/target/content/article.d.ts +43 -0
- package/target/content/article.js +54 -0
- package/target/content/tag.d.ts +2 -0
- package/target/content/tag.js +30 -0
- package/target/content-collections.d.ts +2 -0
- package/target/content-collections.js +192 -0
- package/target/elements/accordion.d.ts +6 -0
- package/target/elements/accordion.js +19 -0
- package/target/elements/alert-dialog.d.ts +18 -0
- package/target/elements/alert-dialog.js +44 -0
- package/target/elements/alert.d.ts +9 -0
- package/target/elements/alert.js +28 -0
- package/target/elements/aspect-ratio.d.ts +4 -0
- package/target/elements/aspect-ratio.js +9 -0
- package/target/elements/avatar.d.ts +11 -0
- package/target/elements/avatar.js +23 -0
- package/target/elements/badge.d.ts +7 -0
- package/target/elements/badge.js +34 -0
- package/target/elements/breadcrumb.d.ts +9 -0
- package/target/elements/breadcrumb.js +39 -0
- package/target/elements/button-group.d.ts +10 -0
- package/target/elements/button-group.js +37 -0
- package/target/elements/button.d.ts +8 -0
- package/target/elements/button.js +35 -0
- package/target/elements/calendar.d.ts +10 -0
- package/target/elements/calendar.js +76 -0
- package/target/elements/card.d.ts +11 -0
- package/target/elements/card.js +25 -0
- package/target/elements/carousel.d.ts +28 -0
- package/target/elements/carousel.js +95 -0
- package/target/elements/chart.d.ts +44 -0
- package/target/elements/chart.js +140 -0
- package/target/elements/checkbox.d.ts +3 -0
- package/target/elements/checkbox.js +9 -0
- package/target/elements/collapsible.d.ts +5 -0
- package/target/elements/collapsible.js +13 -0
- package/target/elements/command.d.ts +23 -0
- package/target/elements/command.js +42 -0
- package/target/elements/context-menu.d.ts +29 -0
- package/target/elements/context-menu.js +54 -0
- package/target/elements/dialog.d.ts +16 -0
- package/target/elements/dialog.js +41 -0
- package/target/elements/direction.d.ts +1 -0
- package/target/elements/direction.js +2 -0
- package/target/elements/drawer.d.ts +12 -0
- package/target/elements/drawer.js +38 -0
- package/target/elements/dropdown-menu.d.ts +24 -0
- package/target/elements/dropdown-menu.js +54 -0
- package/target/elements/empty.d.ts +11 -0
- package/target/elements/empty.js +34 -0
- package/target/elements/field.d.ts +24 -0
- package/target/elements/field.js +69 -0
- package/target/elements/hover-card.d.ts +5 -0
- package/target/elements/hover-card.js +14 -0
- package/target/elements/input-group.d.ts +18 -0
- package/target/elements/input-group.js +60 -0
- package/target/elements/input-otp.d.ts +11 -0
- package/target/elements/input-otp.js +21 -0
- package/target/elements/input.d.ts +2 -0
- package/target/elements/input.js +8 -0
- package/target/elements/item.d.ts +21 -0
- package/target/elements/item.js +79 -0
- package/target/elements/kbd.d.ts +3 -0
- package/target/elements/kbd.js +10 -0
- package/target/elements/label.d.ts +2 -0
- package/target/elements/label.js +8 -0
- package/target/elements/menubar.d.ts +29 -0
- package/target/elements/menubar.js +58 -0
- package/target/elements/native-select.d.ts +8 -0
- package/target/elements/native-select.js +16 -0
- package/target/elements/navigation-menu.d.ts +11 -0
- package/target/elements/navigation-menu.js +34 -0
- package/target/elements/pagination.d.ts +17 -0
- package/target/elements/pagination.js +33 -0
- package/target/elements/popover.d.ts +9 -0
- package/target/elements/popover.js +23 -0
- package/target/elements/progress.d.ts +7 -0
- package/target/elements/progress.js +21 -0
- package/target/elements/radio-group.d.ts +5 -0
- package/target/elements/radio-group.js +12 -0
- package/target/elements/resizable.d.ts +7 -0
- package/target/elements/resizable.js +14 -0
- package/target/elements/scroll-area.d.ts +4 -0
- package/target/elements/scroll-area.js +13 -0
- package/target/elements/select.d.ts +15 -0
- package/target/elements/select.js +39 -0
- package/target/elements/separator.d.ts +3 -0
- package/target/elements/separator.js +8 -0
- package/target/elements/sheet.d.ts +13 -0
- package/target/elements/sheet.js +41 -0
- package/target/elements/sidebar.d.ts +63 -0
- package/target/elements/sidebar.js +272 -0
- package/target/elements/skeleton.d.ts +2 -0
- package/target/elements/skeleton.js +7 -0
- package/target/elements/slider.d.ts +3 -0
- package/target/elements/slider.js +15 -0
- package/target/elements/sonner.d.ts +3 -0
- package/target/elements/sonner.js +23 -0
- package/target/elements/spinner.d.ts +2 -0
- package/target/elements/spinner.js +8 -0
- package/target/elements/switch.d.ts +5 -0
- package/target/elements/switch.js +8 -0
- package/target/elements/table.d.ts +9 -0
- package/target/elements/table.js +28 -0
- package/target/elements/tabs.d.ts +10 -0
- package/target/elements/tabs.js +29 -0
- package/target/elements/textarea.d.ts +2 -0
- package/target/elements/textarea.js +7 -0
- package/target/elements/toggle-group.d.ts +10 -0
- package/target/elements/toggle-group.js +24 -0
- package/target/elements/toggle.d.ts +8 -0
- package/target/elements/toggle.js +26 -0
- package/target/elements/tooltip.d.ts +6 -0
- package/target/elements/tooltip.js +18 -0
- package/target/entrypoints/main.js +12 -0
- package/target/helpers/article-icon.d.ts +3 -0
- package/target/helpers/article-icon.js +34 -0
- package/target/helpers/article.d.ts +24 -0
- package/target/helpers/article.js +73 -0
- package/target/helpers/changelog-source.d.ts +7 -0
- package/target/helpers/changelog-source.js +16 -0
- package/target/helpers/changelog-source.unit.d.ts +1 -0
- package/target/helpers/changelog-source.unit.js +33 -0
- package/target/helpers/dynamic-icon-resolver.d.ts +5 -0
- package/target/helpers/dynamic-icon-resolver.js +17 -0
- package/target/helpers/dynamic-icon.d.ts +5 -0
- package/target/helpers/dynamic-icon.js +8 -0
- package/target/helpers/favicon.d.ts +2 -0
- package/target/helpers/favicon.js +11 -0
- package/target/helpers/model.d.ts +3 -0
- package/target/helpers/model.js +4 -0
- package/target/helpers/program.js +5 -0
- package/target/helpers/resolve-asset-path.d.ts +2 -0
- package/target/helpers/resolve-asset-path.js +9 -0
- package/target/helpers/resolve-includes.d.ts +2 -0
- package/target/helpers/resolve-includes.js +113 -0
- package/target/helpers/resolve-includes.unit.d.ts +1 -0
- package/target/helpers/resolve-includes.unit.js +76 -0
- package/target/helpers/search-text.d.ts +2 -0
- package/target/helpers/search-text.js +16 -0
- package/target/helpers/section.d.ts +13 -0
- package/target/helpers/section.js +39 -0
- package/target/helpers/section.unit.d.ts +1 -0
- package/target/helpers/section.unit.js +62 -0
- package/target/helpers/theme.d.ts +5 -0
- package/target/helpers/theme.js +23 -0
- package/target/helpers/toc-context.d.ts +5 -0
- package/target/helpers/toc-context.js +8 -0
- package/target/helpers/toc.d.ts +3 -0
- package/target/helpers/toc.js +41 -0
- package/target/helpers/toc.unit.d.ts +1 -0
- package/target/helpers/toc.unit.js +65 -0
- package/target/hooks/in-view.d.ts +4 -0
- package/target/hooks/in-view.js +23 -0
- package/target/hooks/media.d.ts +6 -0
- package/target/hooks/media.js +25 -0
- package/target/index.js +2 -0
- package/target/models/article.d.ts +57 -0
- package/target/models/article.js +21 -0
- package/{build → target}/models/config.d.ts +10 -0
- package/target/models/config.js +34 -0
- package/target/models/link.js +9 -0
- package/{build → target}/models/patch.d.ts +5 -0
- package/target/models/patch.js +7 -0
- package/target/models/section.js +26 -0
- package/target/models/theme.js +73 -0
- package/target/models/toc.d.ts +5 -0
- package/target/models/toc.js +2 -0
- package/target/plugins/rehype-inline-code.d.ts +19 -0
- package/target/plugins/rehype-inline-code.js +55 -0
- package/target/plugins/rehype-task-list-a11y.d.ts +10 -0
- package/target/plugins/rehype-task-list-a11y.js +29 -0
- package/target/plugins/remark-abbr.d.ts +6 -0
- package/target/plugins/remark-abbr.js +39 -0
- package/target/plugins/remark-abbr.unit.d.ts +1 -0
- package/target/plugins/remark-abbr.unit.js +79 -0
- package/target/plugins/remark-ansi.d.ts +8 -0
- package/target/plugins/remark-ansi.js +239 -0
- package/target/plugins/remark-ansi.unit.d.ts +1 -0
- package/target/plugins/remark-ansi.unit.js +134 -0
- package/target/plugins/remark-badge.d.ts +6 -0
- package/target/plugins/remark-badge.js +43 -0
- package/target/plugins/remark-badge.unit.d.ts +1 -0
- package/target/plugins/remark-badge.unit.js +76 -0
- package/target/plugins/remark-button.d.ts +6 -0
- package/target/plugins/remark-button.js +52 -0
- package/target/plugins/remark-button.unit.d.ts +1 -0
- package/target/plugins/remark-button.unit.js +105 -0
- package/target/plugins/remark-callout.d.ts +4 -0
- package/target/plugins/remark-callout.js +39 -0
- package/target/plugins/remark-card.d.ts +4 -0
- package/target/plugins/remark-card.js +66 -0
- package/target/plugins/remark-code-tabs.d.ts +4 -0
- package/target/plugins/remark-code-tabs.js +72 -0
- package/target/plugins/remark-columns.d.ts +4 -0
- package/target/plugins/remark-columns.js +54 -0
- package/target/plugins/remark-custom-heading-id.d.ts +14 -0
- package/target/plugins/remark-custom-heading-id.js +54 -0
- package/target/plugins/remark-custom-heading-id.unit.d.ts +1 -0
- package/target/plugins/remark-custom-heading-id.unit.js +91 -0
- package/target/plugins/remark-deflist.d.ts +4 -0
- package/target/plugins/remark-deflist.js +31 -0
- package/target/plugins/remark-details.d.ts +4 -0
- package/target/plugins/remark-details.js +33 -0
- package/target/plugins/remark-filetree.d.ts +12 -0
- package/target/plugins/remark-filetree.js +61 -0
- package/target/plugins/remark-filetree.unit.d.ts +1 -0
- package/target/plugins/remark-filetree.unit.js +87 -0
- package/target/plugins/remark-github-callout.d.ts +4 -0
- package/target/plugins/remark-github-callout.js +62 -0
- package/target/plugins/remark-icon.d.ts +4 -0
- package/target/plugins/remark-icon.js +36 -0
- package/target/plugins/remark-image.d.ts +9 -0
- package/target/plugins/remark-image.js +26 -0
- package/target/plugins/remark-media.d.ts +6 -0
- package/target/plugins/remark-media.js +52 -0
- package/target/plugins/remark-media.unit.d.ts +1 -0
- package/target/plugins/remark-media.unit.js +54 -0
- package/target/plugins/remark-mermaid.d.ts +4 -0
- package/target/plugins/remark-mermaid.js +20 -0
- package/target/plugins/remark-npm.d.ts +4 -0
- package/target/plugins/remark-npm.js +32 -0
- package/target/plugins/remark-steps.d.ts +6 -0
- package/target/plugins/remark-steps.js +30 -0
- package/target/plugins/remark-steps.unit.d.ts +1 -0
- package/target/plugins/remark-steps.unit.js +65 -0
- package/target/plugins/remark-tab.d.ts +6 -0
- package/target/plugins/remark-tab.js +76 -0
- package/target/plugins/remark-tab.unit.d.ts +1 -0
- package/target/plugins/remark-tab.unit.js +156 -0
- package/target/plugins/remark-toc.d.ts +6 -0
- package/target/plugins/remark-toc.js +33 -0
- package/target/plugins/remark-toc.unit.d.ts +1 -0
- package/target/plugins/remark-toc.unit.js +57 -0
- package/target/plugins/shiki-icon.d.ts +16 -0
- package/target/plugins/shiki-icon.js +66 -0
- package/target/plugins/shiki-line-highlight.d.ts +27 -0
- package/target/plugins/shiki-line-highlight.js +140 -0
- package/target/plugins/vite-livemark.d.ts +13 -0
- package/target/plugins/vite-livemark.js +76 -0
- package/target/program.js +18 -0
- package/target/routeTree.gen.d.ts +57 -0
- package/target/routeTree.gen.js +27 -0
- package/target/router.d.ts +6 -0
- package/target/router.js +26 -0
- package/target/routes/$.d.ts +1 -0
- package/target/routes/$.js +85 -0
- package/target/routes/__root.d.ts +1 -0
- package/target/routes/__root.js +69 -0
- package/target/server.d.ts +2 -0
- package/target/server.js +7 -0
- package/target/settings.js +7 -0
- package/target/utils/style.d.ts +2 -0
- package/target/utils/style.js +6 -0
- package/target/vite.config.d.ts +2 -0
- package/target/vite.config.js +64 -0
- package/build/actions/changelog/build.js +0 -158
- package/build/actions/changelog/build.unit.js +0 -66
- package/build/actions/config/define.js +0 -8
- package/build/actions/config/define.unit.js +0 -29
- package/build/actions/config/load.js +0 -25
- package/build/actions/config/load.unit.js +0 -23
- package/build/commands/build.js +0 -14
- package/build/commands/escape.js +0 -56
- package/build/commands/preview.js +0 -18
- package/build/commands/start.js +0 -19
- package/build/docs/markdown/includes/example.d.ts +0 -58
- package/build/docs/markdown/includes/example.js +0 -5
- package/build/entrypoints/main.js +0 -12
- package/build/helpers/program.js +0 -5
- package/build/index.js +0 -2
- package/build/livemark.config.d.ts +0 -58
- package/build/livemark.config.js +0 -25
- package/build/models/config.js +0 -34
- package/build/models/link.js +0 -9
- package/build/models/patch.js +0 -7
- package/build/models/section.js +0 -26
- package/build/models/theme.js +0 -73
- package/build/package.json +0 -138
- package/build/program.js +0 -18
- package/build/settings.js +0 -7
- package/build/vite.config.d.ts +0 -2
- package/build/vite.config.js +0 -48
- package/build/website/components/BlogSidebar.tsx +0 -162
- package/build/website/components/ChangelogSidebar.tsx +0 -120
- package/build/website/hooks/media.ts +0 -19
- /package/{build/website → source}/assets/logo.svg +0 -0
- /package/{build/website → source}/client.tsx +0 -0
- /package/{build/website → source}/components/Abbr.tsx +0 -0
- /package/{build/website → source}/components/AnsiCode.tsx +0 -0
- /package/{build/website → source}/components/BackToTop.tsx +0 -0
- /package/{build/website → source}/components/Banner.tsx +0 -0
- /package/{build/website → source}/components/BlogIndex.tsx +0 -0
- /package/{build/website → source}/components/Breadcrumbs.tsx +0 -0
- /package/{build/website → source}/components/Card.tsx +0 -0
- /package/{build/website → source}/components/Cards.tsx +0 -0
- /package/{build/website → source}/components/ChangelogIndex.tsx +0 -0
- /package/{build/website → source}/components/CodeBlock.tsx +0 -0
- /package/{build/website → source}/components/CodeTabs.tsx +0 -0
- /package/{build/website → source}/components/Column.tsx +0 -0
- /package/{build/website → source}/components/Columns.tsx +0 -0
- /package/{build/website → source}/components/Content.tsx +0 -0
- /package/{build/website → source}/components/ContentTab.tsx +0 -0
- /package/{build/website → source}/components/ContentTabs.tsx +0 -0
- /package/{build/website → source}/components/DefaultCatchBoundary.tsx +0 -0
- /package/{build/website → source}/components/DefinitionList.tsx +0 -0
- /package/{build/website → source}/components/Details.tsx +0 -0
- /package/{build/website → source}/components/FileTree.tsx +0 -0
- /package/{build/website → source}/components/Footer.tsx +0 -0
- /package/{build/website → source}/components/FootnoteRef.tsx +0 -0
- /package/{build/website → source}/components/Heading.tsx +0 -0
- /package/{build/website → source}/components/InlineBadge.tsx +0 -0
- /package/{build/website → source}/components/InlineIcon.tsx +0 -0
- /package/{build/website → source}/components/InlineToc.tsx +0 -0
- /package/{build/website → source}/components/Mermaid.tsx +0 -0
- /package/{build/website → source}/components/MermaidRenderer.tsx +0 -0
- /package/{build/website → source}/components/NotFound.tsx +0 -0
- /package/{build/website → source}/components/PackageTabs.tsx +0 -0
- /package/{build/website → source}/components/PrevNext.tsx +0 -0
- /package/{build/website → source}/components/Search.tsx +0 -0
- /package/{build/website → source}/components/SearchDialog.tsx +0 -0
- /package/{build/website → source}/components/SidebarLinks.tsx +0 -0
- /package/{build/website → source}/components/SidebarSections.tsx +0 -0
- /package/{build/website → source}/components/SiteTitle.tsx +0 -0
- /package/{build/website → source}/components/SortableTable.tsx +0 -0
- /package/{build/website → source}/components/SoundCloud.tsx +0 -0
- /package/{build/website → source}/components/TagIndex.tsx +0 -0
- /package/{build/website → source}/components/Theme.tsx +0 -0
- /package/{build/website → source}/components/Toc.tsx +0 -0
- /package/{build/website → source}/components/YouTube.tsx +0 -0
- /package/{build/website → source}/components/ZoomImage.tsx +0 -0
- /package/{build/website → source}/content/article.ts +0 -0
- /package/{build/website → source}/content/tag.ts +0 -0
- /package/{build/website → source}/elements/collapsible.tsx +0 -0
- /package/{build/website → source}/elements/direction.tsx +0 -0
- /package/{build/website → source}/elements/sonner.tsx +0 -0
- /package/{build/website → source}/helpers/article-icon.ts +0 -0
- /package/{build/website → source}/helpers/article.ts +0 -0
- /package/{build/website → source}/helpers/changelog-source.ts +0 -0
- /package/{build/website → source}/helpers/changelog-source.unit.ts +0 -0
- /package/{build/website → source}/helpers/dynamic-icon-resolver.tsx +0 -0
- /package/{build/website → source}/helpers/dynamic-icon.tsx +0 -0
- /package/{build/website → source}/helpers/favicon.ts +0 -0
- /package/{build/website → source}/helpers/model.ts +0 -0
- /package/{build/website → source}/helpers/resolve-asset-path.ts +0 -0
- /package/{build/website → source}/helpers/resolve-includes.ts +0 -0
- /package/{build/website → source}/helpers/resolve-includes.unit.ts +0 -0
- /package/{build/website → source}/helpers/search-text.ts +0 -0
- /package/{build/website → source}/helpers/section.unit.ts +0 -0
- /package/{build/website → source}/helpers/theme.ts +0 -0
- /package/{build/website → source}/helpers/toc-context.ts +0 -0
- /package/{build/website → source}/helpers/toc.ts +0 -0
- /package/{build/website → source}/helpers/toc.unit.ts +0 -0
- /package/{build/website → source}/hooks/in-view.ts +0 -0
- /package/{build/website → source}/models/toc.ts +0 -0
- /package/{build/website → source}/plugins/rehype-inline-code.ts +0 -0
- /package/{build/website → source}/plugins/rehype-task-list-a11y.ts +0 -0
- /package/{build/website → source}/plugins/remark-abbr.ts +0 -0
- /package/{build/website → source}/plugins/remark-abbr.unit.ts +0 -0
- /package/{build/website → source}/plugins/remark-ansi.ts +0 -0
- /package/{build/website → source}/plugins/remark-ansi.unit.ts +0 -0
- /package/{build/website → source}/plugins/remark-badge.ts +0 -0
- /package/{build/website → source}/plugins/remark-badge.unit.ts +0 -0
- /package/{build/website → source}/plugins/remark-button.ts +0 -0
- /package/{build/website → source}/plugins/remark-button.unit.ts +0 -0
- /package/{build/website → source}/plugins/remark-callout.ts +0 -0
- /package/{build/website → source}/plugins/remark-card.ts +0 -0
- /package/{build/website → source}/plugins/remark-code-tabs.ts +0 -0
- /package/{build/website → source}/plugins/remark-columns.ts +0 -0
- /package/{build/website → source}/plugins/remark-custom-heading-id.ts +0 -0
- /package/{build/website → source}/plugins/remark-custom-heading-id.unit.ts +0 -0
- /package/{build/website → source}/plugins/remark-deflist.ts +0 -0
- /package/{build/website → source}/plugins/remark-details.ts +0 -0
- /package/{build/website → source}/plugins/remark-filetree.ts +0 -0
- /package/{build/website → source}/plugins/remark-filetree.unit.ts +0 -0
- /package/{build/website → source}/plugins/remark-github-callout.ts +0 -0
- /package/{build/website → source}/plugins/remark-icon.ts +0 -0
- /package/{build/website → source}/plugins/remark-image.ts +0 -0
- /package/{build/website → source}/plugins/remark-media.ts +0 -0
- /package/{build/website → source}/plugins/remark-media.unit.ts +0 -0
- /package/{build/website → source}/plugins/remark-mermaid.ts +0 -0
- /package/{build/website → source}/plugins/remark-npm.ts +0 -0
- /package/{build/website → source}/plugins/remark-steps.ts +0 -0
- /package/{build/website → source}/plugins/remark-steps.unit.ts +0 -0
- /package/{build/website → source}/plugins/remark-tab.ts +0 -0
- /package/{build/website → source}/plugins/remark-tab.unit.ts +0 -0
- /package/{build/website → source}/plugins/remark-toc.ts +0 -0
- /package/{build/website → source}/plugins/remark-toc.unit.ts +0 -0
- /package/{build/website → source}/plugins/shiki-icon.ts +0 -0
- /package/{build/website → source}/plugins/shiki-line-highlight.ts +0 -0
- /package/{build/website → source}/plugins/vite-livemark.ts +0 -0
- /package/{build/website → source}/routeTree.gen.ts +0 -0
- /package/{build/website → source}/router.tsx +0 -0
- /package/{build/website → source}/routes/$.tsx +0 -0
- /package/{build/website → source}/routes/__root.tsx +0 -0
- /package/{build/website → source}/server.ts +0 -0
- /package/{build/website → source}/styles/general.css +0 -0
- /package/{build/website → source}/styles/markdown.css +0 -0
- /package/{build/website/helpers → source/utils}/style.ts +0 -0
- /package/{build → target}/actions/changelog/build.unit.d.ts +0 -0
- /package/{build → target}/actions/config/define.d.ts +0 -0
- /package/{build → target}/actions/config/define.unit.d.ts +0 -0
- /package/{build → target}/actions/config/load.d.ts +0 -0
- /package/{build → target}/actions/config/load.unit.d.ts +0 -0
- /package/{build → target}/commands/build.d.ts +0 -0
- /package/{build → target}/commands/escape.d.ts +0 -0
- /package/{build → target}/commands/preview.d.ts +0 -0
- /package/{build → target}/commands/start.d.ts +0 -0
- /package/{build → target}/entrypoints/main.d.ts +0 -0
- /package/{build → target}/helpers/program.d.ts +0 -0
- /package/{build → target}/index.d.ts +0 -0
- /package/{build → target}/models/link.d.ts +0 -0
- /package/{build → target}/models/section.d.ts +0 -0
- /package/{build → target}/models/theme.d.ts +0 -0
- /package/{build → target}/program.d.ts +0 -0
- /package/{build → target}/settings.d.ts +0 -0
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { visit, SKIP } from "unist-util-visit";
|
|
2
|
+
/** Remark plugin that converts consecutive :::column directives into a Columns grid */
|
|
3
|
+
export const remarkColumns = () => {
|
|
4
|
+
return tree => {
|
|
5
|
+
visit(tree, "containerDirective", (node, index, parent) => {
|
|
6
|
+
if (node.name !== "column" || index === undefined || !parent)
|
|
7
|
+
return;
|
|
8
|
+
const jsxNode = {
|
|
9
|
+
type: "mdxJsxFlowElement",
|
|
10
|
+
name: "Column",
|
|
11
|
+
attributes: [],
|
|
12
|
+
children: node.children,
|
|
13
|
+
data: { _mdxExplicitJsx: true },
|
|
14
|
+
};
|
|
15
|
+
// @ts-expect-error mdxJsxFlowElement is not in mdast types
|
|
16
|
+
parent.children[index] = jsxNode;
|
|
17
|
+
return SKIP;
|
|
18
|
+
});
|
|
19
|
+
const children = tree.children;
|
|
20
|
+
let i = 0;
|
|
21
|
+
while (i < children.length) {
|
|
22
|
+
const node = children[i];
|
|
23
|
+
// @ts-expect-error mdxJsxFlowElement is not in mdast types
|
|
24
|
+
if (node?.type !== "mdxJsxFlowElement" || node.name !== "Column") {
|
|
25
|
+
i++;
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
let j = i + 1;
|
|
29
|
+
while (j < children.length) {
|
|
30
|
+
const next = children[j];
|
|
31
|
+
// @ts-expect-error mdxJsxFlowElement is not in mdast types
|
|
32
|
+
if (next?.type !== "mdxJsxFlowElement" || next.name !== "Column")
|
|
33
|
+
break;
|
|
34
|
+
j++;
|
|
35
|
+
}
|
|
36
|
+
if (j - i < 2) {
|
|
37
|
+
i++;
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
const group = children.slice(i, j);
|
|
41
|
+
const wrapper = {
|
|
42
|
+
type: "mdxJsxFlowElement",
|
|
43
|
+
name: "Columns",
|
|
44
|
+
attributes: [],
|
|
45
|
+
children: group,
|
|
46
|
+
data: { _mdxExplicitJsx: true },
|
|
47
|
+
};
|
|
48
|
+
// @ts-expect-error mdxJsxFlowElement is not in mdast types
|
|
49
|
+
children.splice(i, j - i, wrapper);
|
|
50
|
+
i++;
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtYXJrLWNvbHVtbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvcGx1Z2lucy9yZW1hcmstY29sdW1ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBRTlDLHVGQUF1RjtBQUN2RixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQXFCLEdBQUcsRUFBRTtJQUNsRCxPQUFPLElBQUksQ0FBQyxFQUFFO1FBQ1osS0FBSyxDQUNILElBQUksRUFDSixvQkFBb0IsRUFDcEIsQ0FBQyxJQUF3QixFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUMxQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUSxJQUFJLEtBQUssS0FBSyxTQUFTLElBQUksQ0FBQyxNQUFNO2dCQUFFLE9BQU07WUFFcEUsTUFBTSxPQUFPLEdBQUc7Z0JBQ2QsSUFBSSxFQUFFLG1CQUE0QjtnQkFDbEMsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsVUFBVSxFQUFFLEVBQUU7Z0JBQ2QsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO2dCQUN2QixJQUFJLEVBQUUsRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFO2FBQ2hDLENBQUE7WUFFRCwyREFBMkQ7WUFDM0QsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxPQUFPLENBQUE7WUFDaEMsT0FBTyxJQUFJLENBQUE7UUFDYixDQUFDLENBQ0YsQ0FBQTtRQUVELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUE7UUFDOUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQ1QsT0FBTyxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzNCLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUN4QiwyREFBMkQ7WUFDM0QsSUFBSSxJQUFJLEVBQUUsSUFBSSxLQUFLLG1CQUFtQixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQ2pFLENBQUMsRUFBRSxDQUFBO2dCQUNILFNBQVE7WUFDVixDQUFDO1lBRUQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUNiLE9BQU8sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDM0IsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFBO2dCQUN4QiwyREFBMkQ7Z0JBQzNELElBQUksSUFBSSxFQUFFLElBQUksS0FBSyxtQkFBbUIsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVE7b0JBQUUsTUFBSztnQkFDdkUsQ0FBQyxFQUFFLENBQUE7WUFDTCxDQUFDO1lBRUQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNkLENBQUMsRUFBRSxDQUFBO2dCQUNILFNBQVE7WUFDVixDQUFDO1lBRUQsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7WUFDbEMsTUFBTSxPQUFPLEdBQUc7Z0JBQ2QsSUFBSSxFQUFFLG1CQUE0QjtnQkFDbEMsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsVUFBVSxFQUFFLEVBQUU7Z0JBQ2QsUUFBUSxFQUFFLEtBQUs7Z0JBQ2YsSUFBSSxFQUFFLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRTthQUNoQyxDQUFBO1lBRUQsMkRBQTJEO1lBQzNELFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUE7WUFDbEMsQ0FBQyxFQUFFLENBQUE7UUFDTCxDQUFDO0lBQ0gsQ0FBQyxDQUFBO0FBQ0gsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSb290IH0gZnJvbSBcIm1kYXN0XCJcbmltcG9ydCB0eXBlIHsgQ29udGFpbmVyRGlyZWN0aXZlIH0gZnJvbSBcIm1kYXN0LXV0aWwtZGlyZWN0aXZlXCJcbmltcG9ydCB0eXBlIHsgUGx1Z2luIH0gZnJvbSBcInVuaWZpZWRcIlxuaW1wb3J0IHsgdmlzaXQsIFNLSVAgfSBmcm9tIFwidW5pc3QtdXRpbC12aXNpdFwiXG5cbi8qKiBSZW1hcmsgcGx1Z2luIHRoYXQgY29udmVydHMgY29uc2VjdXRpdmUgOjo6Y29sdW1uIGRpcmVjdGl2ZXMgaW50byBhIENvbHVtbnMgZ3JpZCAqL1xuZXhwb3J0IGNvbnN0IHJlbWFya0NvbHVtbnM6IFBsdWdpbjxbXSwgUm9vdD4gPSAoKSA9PiB7XG4gIHJldHVybiB0cmVlID0+IHtcbiAgICB2aXNpdChcbiAgICAgIHRyZWUsXG4gICAgICBcImNvbnRhaW5lckRpcmVjdGl2ZVwiLFxuICAgICAgKG5vZGU6IENvbnRhaW5lckRpcmVjdGl2ZSwgaW5kZXgsIHBhcmVudCkgPT4ge1xuICAgICAgICBpZiAobm9kZS5uYW1lICE9PSBcImNvbHVtblwiIHx8IGluZGV4ID09PSB1bmRlZmluZWQgfHwgIXBhcmVudCkgcmV0dXJuXG5cbiAgICAgICAgY29uc3QganN4Tm9kZSA9IHtcbiAgICAgICAgICB0eXBlOiBcIm1keEpzeEZsb3dFbGVtZW50XCIgYXMgY29uc3QsXG4gICAgICAgICAgbmFtZTogXCJDb2x1bW5cIixcbiAgICAgICAgICBhdHRyaWJ1dGVzOiBbXSxcbiAgICAgICAgICBjaGlsZHJlbjogbm9kZS5jaGlsZHJlbixcbiAgICAgICAgICBkYXRhOiB7IF9tZHhFeHBsaWNpdEpzeDogdHJ1ZSB9LFxuICAgICAgICB9XG5cbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBtZHhKc3hGbG93RWxlbWVudCBpcyBub3QgaW4gbWRhc3QgdHlwZXNcbiAgICAgICAgcGFyZW50LmNoaWxkcmVuW2luZGV4XSA9IGpzeE5vZGVcbiAgICAgICAgcmV0dXJuIFNLSVBcbiAgICAgIH0sXG4gICAgKVxuXG4gICAgY29uc3QgY2hpbGRyZW4gPSB0cmVlLmNoaWxkcmVuXG4gICAgbGV0IGkgPSAwXG4gICAgd2hpbGUgKGkgPCBjaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBjaGlsZHJlbltpXVxuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBtZHhKc3hGbG93RWxlbWVudCBpcyBub3QgaW4gbWRhc3QgdHlwZXNcbiAgICAgIGlmIChub2RlPy50eXBlICE9PSBcIm1keEpzeEZsb3dFbGVtZW50XCIgfHwgbm9kZS5uYW1lICE9PSBcIkNvbHVtblwiKSB7XG4gICAgICAgIGkrK1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBsZXQgaiA9IGkgKyAxXG4gICAgICB3aGlsZSAoaiA8IGNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICBjb25zdCBuZXh0ID0gY2hpbGRyZW5bal1cbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBtZHhKc3hGbG93RWxlbWVudCBpcyBub3QgaW4gbWRhc3QgdHlwZXNcbiAgICAgICAgaWYgKG5leHQ/LnR5cGUgIT09IFwibWR4SnN4Rmxvd0VsZW1lbnRcIiB8fCBuZXh0Lm5hbWUgIT09IFwiQ29sdW1uXCIpIGJyZWFrXG4gICAgICAgIGorK1xuICAgICAgfVxuXG4gICAgICBpZiAoaiAtIGkgPCAyKSB7XG4gICAgICAgIGkrK1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBjb25zdCBncm91cCA9IGNoaWxkcmVuLnNsaWNlKGksIGopXG4gICAgICBjb25zdCB3cmFwcGVyID0ge1xuICAgICAgICB0eXBlOiBcIm1keEpzeEZsb3dFbGVtZW50XCIgYXMgY29uc3QsXG4gICAgICAgIG5hbWU6IFwiQ29sdW1uc1wiLFxuICAgICAgICBhdHRyaWJ1dGVzOiBbXSxcbiAgICAgICAgY2hpbGRyZW46IGdyb3VwLFxuICAgICAgICBkYXRhOiB7IF9tZHhFeHBsaWNpdEpzeDogdHJ1ZSB9LFxuICAgICAgfVxuXG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIG1keEpzeEZsb3dFbGVtZW50IGlzIG5vdCBpbiBtZGFzdCB0eXBlc1xuICAgICAgY2hpbGRyZW4uc3BsaWNlKGksIGogLSBpLCB3cmFwcGVyKVxuICAgICAgaSsrXG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Root } from "mdast";
|
|
2
|
+
import type { Plugin } from "unified";
|
|
3
|
+
declare module "mdast" {
|
|
4
|
+
interface HeadingData {
|
|
5
|
+
hProperties?: Record<string, string | number | boolean | null | undefined>;
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
/** Walk a mdast tree and process heading annotations: `[#id]`, `[!toc]`, and `[toc]` */
|
|
9
|
+
export declare function transformHeadingAnnotations(tree: Root): void;
|
|
10
|
+
/** @deprecated Use transformHeadingAnnotations instead */
|
|
11
|
+
export declare const transformCustomHeadingIds: typeof transformHeadingAnnotations;
|
|
12
|
+
/** Remark plugin that processes heading annotations: `[#custom-id]`, `[!toc]`, and `[toc]` */
|
|
13
|
+
declare const remarkCustomHeadingId: Plugin<[], Root>;
|
|
14
|
+
export default remarkCustomHeadingId;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { SKIP, visit } from "unist-util-visit";
|
|
2
|
+
const CUSTOM_ID_PATTERN = /\s*\[#([^\]]+)\]\s*$/;
|
|
3
|
+
const TOC_HIDDEN_PATTERN = /\s*\[!toc\]\s*$/;
|
|
4
|
+
const TOC_ONLY_PATTERN = /\s*\[toc\]\s*$/;
|
|
5
|
+
/** Walk a mdast tree and process heading annotations: `[#id]`, `[!toc]`, and `[toc]` */
|
|
6
|
+
export function transformHeadingAnnotations(tree) {
|
|
7
|
+
visit(tree, "heading", (node, index, parent) => {
|
|
8
|
+
const lastChild = node.children[node.children.length - 1];
|
|
9
|
+
if (!lastChild || lastChild.type !== "text")
|
|
10
|
+
return undefined;
|
|
11
|
+
if (TOC_ONLY_PATTERN.test(lastChild.value)) {
|
|
12
|
+
if (parent && index !== undefined) {
|
|
13
|
+
parent.children.splice(index, 1);
|
|
14
|
+
return [SKIP, index];
|
|
15
|
+
}
|
|
16
|
+
return undefined;
|
|
17
|
+
}
|
|
18
|
+
if (TOC_HIDDEN_PATTERN.test(lastChild.value)) {
|
|
19
|
+
lastChild.value = lastChild.value.replace(TOC_HIDDEN_PATTERN, "");
|
|
20
|
+
if (lastChild.value === "" && node.children.length > 1) {
|
|
21
|
+
node.children.pop();
|
|
22
|
+
}
|
|
23
|
+
node.data = node.data ?? {};
|
|
24
|
+
node.data.hProperties = {
|
|
25
|
+
...node.data.hProperties,
|
|
26
|
+
"data-toc-hidden": true,
|
|
27
|
+
};
|
|
28
|
+
return undefined;
|
|
29
|
+
}
|
|
30
|
+
const match = CUSTOM_ID_PATTERN.exec(lastChild.value);
|
|
31
|
+
if (!match)
|
|
32
|
+
return undefined;
|
|
33
|
+
const customId = match[1];
|
|
34
|
+
if (!customId)
|
|
35
|
+
return undefined;
|
|
36
|
+
lastChild.value = lastChild.value.replace(CUSTOM_ID_PATTERN, "");
|
|
37
|
+
if (lastChild.value === "" && node.children.length > 1) {
|
|
38
|
+
node.children.pop();
|
|
39
|
+
}
|
|
40
|
+
node.data = node.data ?? {};
|
|
41
|
+
node.data.hProperties = { ...node.data.hProperties, id: customId };
|
|
42
|
+
return undefined;
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
/** @deprecated Use transformHeadingAnnotations instead */
|
|
46
|
+
export const transformCustomHeadingIds = transformHeadingAnnotations;
|
|
47
|
+
/** Remark plugin that processes heading annotations: `[#custom-id]`, `[!toc]`, and `[toc]` */
|
|
48
|
+
const remarkCustomHeadingId = () => {
|
|
49
|
+
return tree => {
|
|
50
|
+
transformHeadingAnnotations(tree);
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
export default remarkCustomHeadingId;
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtYXJrLWN1c3RvbS1oZWFkaW5nLWlkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL3BsdWdpbnMvcmVtYXJrLWN1c3RvbS1oZWFkaW5nLWlkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFROUMsTUFBTSxpQkFBaUIsR0FBRyxzQkFBc0IsQ0FBQTtBQUNoRCxNQUFNLGtCQUFrQixHQUFHLGlCQUFpQixDQUFBO0FBQzVDLE1BQU0sZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUE7QUFFekMsd0ZBQXdGO0FBQ3hGLE1BQU0sVUFBVSwyQkFBMkIsQ0FBQyxJQUFVO0lBQ3BELEtBQUssQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUMsSUFBYSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUN0RCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFBO1FBQ3pELElBQUksQ0FBQyxTQUFTLElBQUksU0FBUyxDQUFDLElBQUksS0FBSyxNQUFNO1lBQUUsT0FBTyxTQUFTLENBQUE7UUFFN0QsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDM0MsSUFBSSxNQUFNLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUNsQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUE7Z0JBQ2hDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFVLENBQUE7WUFDL0IsQ0FBQztZQUNELE9BQU8sU0FBUyxDQUFBO1FBQ2xCLENBQUM7UUFFRCxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM3QyxTQUFTLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLEVBQUUsQ0FBQyxDQUFBO1lBQ2pFLElBQUksU0FBUyxDQUFDLEtBQUssS0FBSyxFQUFFLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3ZELElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUE7WUFDckIsQ0FBQztZQUNELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUE7WUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUc7Z0JBQ3RCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXO2dCQUN4QixpQkFBaUIsRUFBRSxJQUFJO2FBQ3hCLENBQUE7WUFDRCxPQUFPLFNBQVMsQ0FBQTtRQUNsQixDQUFDO1FBRUQsTUFBTSxLQUFLLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNyRCxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU8sU0FBUyxDQUFBO1FBRTVCLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUN6QixJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU8sU0FBUyxDQUFBO1FBRS9CLFNBQVMsQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFFaEUsSUFBSSxTQUFTLENBQUMsS0FBSyxLQUFLLEVBQUUsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN2RCxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFBO1FBQ3JCLENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFBO1FBQzNCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUE7UUFDbEUsT0FBTyxTQUFTLENBQUE7SUFDbEIsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDO0FBRUQsMERBQTBEO0FBQzFELE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLDJCQUEyQixDQUFBO0FBRXBFLDhGQUE4RjtBQUM5RixNQUFNLHFCQUFxQixHQUFxQixHQUFHLEVBQUU7SUFDbkQsT0FBTyxJQUFJLENBQUMsRUFBRTtRQUNaLDJCQUEyQixDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ25DLENBQUMsQ0FBQTtBQUNILENBQUMsQ0FBQTtBQUVELGVBQWUscUJBQXFCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEhlYWRpbmcsIFJvb3QgfSBmcm9tIFwibWRhc3RcIlxuaW1wb3J0IHR5cGUgeyBQbHVnaW4gfSBmcm9tIFwidW5pZmllZFwiXG5pbXBvcnQgeyBTS0lQLCB2aXNpdCB9IGZyb20gXCJ1bmlzdC11dGlsLXZpc2l0XCJcblxuZGVjbGFyZSBtb2R1bGUgXCJtZGFzdFwiIHtcbiAgaW50ZXJmYWNlIEhlYWRpbmdEYXRhIHtcbiAgICBoUHJvcGVydGllcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkPlxuICB9XG59XG5cbmNvbnN0IENVU1RPTV9JRF9QQVRURVJOID0gL1xccypcXFsjKFteXFxdXSspXFxdXFxzKiQvXG5jb25zdCBUT0NfSElEREVOX1BBVFRFUk4gPSAvXFxzKlxcWyF0b2NcXF1cXHMqJC9cbmNvbnN0IFRPQ19PTkxZX1BBVFRFUk4gPSAvXFxzKlxcW3RvY1xcXVxccyokL1xuXG4vKiogV2FsayBhIG1kYXN0IHRyZWUgYW5kIHByb2Nlc3MgaGVhZGluZyBhbm5vdGF0aW9uczogYFsjaWRdYCwgYFshdG9jXWAsIGFuZCBgW3RvY11gICovXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtSGVhZGluZ0Fubm90YXRpb25zKHRyZWU6IFJvb3QpIHtcbiAgdmlzaXQodHJlZSwgXCJoZWFkaW5nXCIsIChub2RlOiBIZWFkaW5nLCBpbmRleCwgcGFyZW50KSA9PiB7XG4gICAgY29uc3QgbGFzdENoaWxkID0gbm9kZS5jaGlsZHJlbltub2RlLmNoaWxkcmVuLmxlbmd0aCAtIDFdXG4gICAgaWYgKCFsYXN0Q2hpbGQgfHwgbGFzdENoaWxkLnR5cGUgIT09IFwidGV4dFwiKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgICBpZiAoVE9DX09OTFlfUEFUVEVSTi50ZXN0KGxhc3RDaGlsZC52YWx1ZSkpIHtcbiAgICAgIGlmIChwYXJlbnQgJiYgaW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBwYXJlbnQuY2hpbGRyZW4uc3BsaWNlKGluZGV4LCAxKVxuICAgICAgICByZXR1cm4gW1NLSVAsIGluZGV4XSBhcyBjb25zdFxuICAgICAgfVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGlmIChUT0NfSElEREVOX1BBVFRFUk4udGVzdChsYXN0Q2hpbGQudmFsdWUpKSB7XG4gICAgICBsYXN0Q2hpbGQudmFsdWUgPSBsYXN0Q2hpbGQudmFsdWUucmVwbGFjZShUT0NfSElEREVOX1BBVFRFUk4sIFwiXCIpXG4gICAgICBpZiAobGFzdENoaWxkLnZhbHVlID09PSBcIlwiICYmIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMSkge1xuICAgICAgICBub2RlLmNoaWxkcmVuLnBvcCgpXG4gICAgICB9XG4gICAgICBub2RlLmRhdGEgPSBub2RlLmRhdGEgPz8ge31cbiAgICAgIG5vZGUuZGF0YS5oUHJvcGVydGllcyA9IHtcbiAgICAgICAgLi4ubm9kZS5kYXRhLmhQcm9wZXJ0aWVzLFxuICAgICAgICBcImRhdGEtdG9jLWhpZGRlblwiOiB0cnVlLFxuICAgICAgfVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGNvbnN0IG1hdGNoID0gQ1VTVE9NX0lEX1BBVFRFUk4uZXhlYyhsYXN0Q2hpbGQudmFsdWUpXG4gICAgaWYgKCFtYXRjaCkgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgY29uc3QgY3VzdG9tSWQgPSBtYXRjaFsxXVxuICAgIGlmICghY3VzdG9tSWQpIHJldHVybiB1bmRlZmluZWRcblxuICAgIGxhc3RDaGlsZC52YWx1ZSA9IGxhc3RDaGlsZC52YWx1ZS5yZXBsYWNlKENVU1RPTV9JRF9QQVRURVJOLCBcIlwiKVxuXG4gICAgaWYgKGxhc3RDaGlsZC52YWx1ZSA9PT0gXCJcIiAmJiBub2RlLmNoaWxkcmVuLmxlbmd0aCA+IDEpIHtcbiAgICAgIG5vZGUuY2hpbGRyZW4ucG9wKClcbiAgICB9XG5cbiAgICBub2RlLmRhdGEgPSBub2RlLmRhdGEgPz8ge31cbiAgICBub2RlLmRhdGEuaFByb3BlcnRpZXMgPSB7IC4uLm5vZGUuZGF0YS5oUHJvcGVydGllcywgaWQ6IGN1c3RvbUlkIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH0pXG59XG5cbi8qKiBAZGVwcmVjYXRlZCBVc2UgdHJhbnNmb3JtSGVhZGluZ0Fubm90YXRpb25zIGluc3RlYWQgKi9cbmV4cG9ydCBjb25zdCB0cmFuc2Zvcm1DdXN0b21IZWFkaW5nSWRzID0gdHJhbnNmb3JtSGVhZGluZ0Fubm90YXRpb25zXG5cbi8qKiBSZW1hcmsgcGx1Z2luIHRoYXQgcHJvY2Vzc2VzIGhlYWRpbmcgYW5ub3RhdGlvbnM6IGBbI2N1c3RvbS1pZF1gLCBgWyF0b2NdYCwgYW5kIGBbdG9jXWAgKi9cbmNvbnN0IHJlbWFya0N1c3RvbUhlYWRpbmdJZDogUGx1Z2luPFtdLCBSb290PiA9ICgpID0+IHtcbiAgcmV0dXJuIHRyZWUgPT4ge1xuICAgIHRyYW5zZm9ybUhlYWRpbmdBbm5vdGF0aW9ucyh0cmVlKVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IHJlbWFya0N1c3RvbUhlYWRpbmdJZFxuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { describe, expect, it } from "vite-plus/test";
|
|
2
|
+
import { transformCustomHeadingIds, transformHeadingAnnotations, } from "./remark-custom-heading-id.js";
|
|
3
|
+
function makeHeading(depth, text) {
|
|
4
|
+
return { type: "heading", depth, children: [{ type: "text", value: text }] };
|
|
5
|
+
}
|
|
6
|
+
function makeBoldHeading(boldText, trailingText) {
|
|
7
|
+
return {
|
|
8
|
+
type: "heading",
|
|
9
|
+
depth: 2,
|
|
10
|
+
children: [
|
|
11
|
+
{ type: "strong", children: [{ type: "text", value: boldText }] },
|
|
12
|
+
{ type: "text", value: trailingText },
|
|
13
|
+
],
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
function makeTree(...headings) {
|
|
17
|
+
return { type: "root", children: headings };
|
|
18
|
+
}
|
|
19
|
+
function findHeading(tree, index) {
|
|
20
|
+
const node = tree.children[index];
|
|
21
|
+
if (!node || node.type !== "heading")
|
|
22
|
+
throw new Error("No heading at index");
|
|
23
|
+
return node;
|
|
24
|
+
}
|
|
25
|
+
function headingText(heading) {
|
|
26
|
+
return heading.children
|
|
27
|
+
.filter((c) => c.type === "text")
|
|
28
|
+
.map(c => c.value)
|
|
29
|
+
.join("");
|
|
30
|
+
}
|
|
31
|
+
describe("transformHeadingAnnotations", () => {
|
|
32
|
+
function process(tree) {
|
|
33
|
+
transformHeadingAnnotations(tree);
|
|
34
|
+
return tree;
|
|
35
|
+
}
|
|
36
|
+
it("should set a custom id from [#custom-id] syntax", () => {
|
|
37
|
+
const tree = process(makeTree(makeHeading(2, "My Heading [#custom-id]")));
|
|
38
|
+
const heading = findHeading(tree, 0);
|
|
39
|
+
expect(heading.data?.hProperties).toEqual({ id: "custom-id" });
|
|
40
|
+
expect(headingText(heading)).toBe("My Heading");
|
|
41
|
+
});
|
|
42
|
+
it("should leave headings without custom ids unchanged", () => {
|
|
43
|
+
const tree = process(makeTree(makeHeading(2, "Normal Heading")));
|
|
44
|
+
const heading = findHeading(tree, 0);
|
|
45
|
+
expect(heading.data).toBeUndefined();
|
|
46
|
+
expect(headingText(heading)).toBe("Normal Heading");
|
|
47
|
+
});
|
|
48
|
+
it("should handle different heading depths", () => {
|
|
49
|
+
const tree = process(makeTree(makeHeading(3, "Deep Heading [#deep]"), makeHeading(4, "Deeper Heading [#deeper]")));
|
|
50
|
+
const h3 = findHeading(tree, 0);
|
|
51
|
+
expect(h3.data?.hProperties).toEqual({ id: "deep" });
|
|
52
|
+
expect(h3.depth).toBe(3);
|
|
53
|
+
const h4 = findHeading(tree, 1);
|
|
54
|
+
expect(h4.data?.hProperties).toEqual({ id: "deeper" });
|
|
55
|
+
expect(h4.depth).toBe(4);
|
|
56
|
+
});
|
|
57
|
+
it("should handle ids with hyphens and numbers", () => {
|
|
58
|
+
const tree = process(makeTree(makeHeading(2, "Section 1 [#section-1-intro]")));
|
|
59
|
+
const heading = findHeading(tree, 0);
|
|
60
|
+
expect(heading.data?.hProperties).toEqual({ id: "section-1-intro" });
|
|
61
|
+
expect(headingText(heading)).toBe("Section 1");
|
|
62
|
+
});
|
|
63
|
+
it("should preserve inline formatting before the id", () => {
|
|
64
|
+
const tree = process(makeTree(makeBoldHeading("Bold", " heading [#bold-heading]")));
|
|
65
|
+
const heading = findHeading(tree, 0);
|
|
66
|
+
expect(heading.data?.hProperties).toEqual({ id: "bold-heading" });
|
|
67
|
+
expect(heading.children.some(c => c.type === "strong")).toBe(true);
|
|
68
|
+
expect(headingText(heading)).toBe(" heading");
|
|
69
|
+
});
|
|
70
|
+
it("should add data-toc-hidden for [!toc] headings", () => {
|
|
71
|
+
const tree = process(makeTree(makeHeading(2, "Hidden Heading [!toc]")));
|
|
72
|
+
const heading = findHeading(tree, 0);
|
|
73
|
+
expect(heading.data?.hProperties).toEqual({ "data-toc-hidden": true });
|
|
74
|
+
expect(headingText(heading)).toBe("Hidden Heading");
|
|
75
|
+
});
|
|
76
|
+
it("should remove [toc] headings from the tree", () => {
|
|
77
|
+
const tree = process(makeTree(makeHeading(2, "Visible Heading"), makeHeading(2, "TOC Only Heading [toc]"), makeHeading(3, "Another Visible")));
|
|
78
|
+
expect(tree.children).toHaveLength(2);
|
|
79
|
+
expect(headingText(findHeading(tree, 0))).toBe("Visible Heading");
|
|
80
|
+
expect(headingText(findHeading(tree, 1))).toBe("Another Visible");
|
|
81
|
+
});
|
|
82
|
+
it("should remove consecutive [toc] headings correctly", () => {
|
|
83
|
+
const tree = process(makeTree(makeHeading(2, "First [toc]"), makeHeading(2, "Second [toc]"), makeHeading(2, "Kept")));
|
|
84
|
+
expect(tree.children).toHaveLength(1);
|
|
85
|
+
expect(headingText(findHeading(tree, 0))).toBe("Kept");
|
|
86
|
+
});
|
|
87
|
+
it("should be available as transformCustomHeadingIds for backward compatibility", () => {
|
|
88
|
+
expect(transformCustomHeadingIds).toBe(transformHeadingAnnotations);
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtYXJrLWN1c3RvbS1oZWFkaW5nLWlkLnVuaXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvcGx1Z2lucy9yZW1hcmstY3VzdG9tLWhlYWRpbmctaWQudW5pdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUNyRCxPQUFPLEVBQ0wseUJBQXlCLEVBQ3pCLDJCQUEyQixHQUM1QixNQUFNLCtCQUErQixDQUFBO0FBRXRDLFNBQVMsV0FBVyxDQUFDLEtBQTRCLEVBQUUsSUFBWTtJQUM3RCxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUE7QUFDOUUsQ0FBQztBQUVELFNBQVMsZUFBZSxDQUFDLFFBQWdCLEVBQUUsWUFBb0I7SUFDN0QsT0FBTztRQUNMLElBQUksRUFBRSxTQUFTO1FBQ2YsS0FBSyxFQUFFLENBQUM7UUFDUixRQUFRLEVBQUU7WUFDUixFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFO1lBQ2pFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFO1NBQ3RDO0tBQ0YsQ0FBQTtBQUNILENBQUM7QUFFRCxTQUFTLFFBQVEsQ0FBQyxHQUFHLFFBQW1CO0lBQ3RDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQTtBQUM3QyxDQUFDO0FBRUQsU0FBUyxXQUFXLENBQUMsSUFBVSxFQUFFLEtBQWE7SUFDNUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFD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SSxHQUFHLE9BQU8sQ0FDbEIsUUFBUSxDQUNOLFdBQVcsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLEVBQzdCLFdBQVcsQ0FBQyxDQUFDLEVBQUUsY0FBYyxDQUFDLEVBQzlCLFdBQVcsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQ3ZCLENBQ0YsQ0FBQTtRQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ3JDLE1BQU0sQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ3hELENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLDZFQUE2RSxFQUFFLEdBQUcsRUFBRTtRQUNyRixNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsQ0FBQTtJQUNyRSxDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBIZWFkaW5nLCBSb290LCBUZXh0IH0gZnJvbSBcIm1kYXN0XCJcbmltcG9ydCB7IGRlc2NyaWJlLCBleHBlY3QsIGl0IH0gZnJvbSBcInZpdGUtcGx1cy90ZXN0XCJcbmltcG9ydCB7XG4gIHRyYW5zZm9ybUN1c3RvbUhlYWRpbmdJZHMsXG4gIHRyYW5zZm9ybUhlYWRpbmdBbm5vdGF0aW9ucyxcbn0gZnJvbSBcIi4vcmVtYXJrLWN1c3RvbS1oZWFkaW5nLWlkLnRzXCJcblxuZnVuY3Rpb24gbWFrZUhlYWRpbmcoZGVwdGg6IDEgfCAyIHwgMyB8IDQgfCA1IHwgNiwgdGV4dDogc3RyaW5nKTogSGVhZGluZyB7XG4gIHJldHVybiB7IHR5cGU6IFwiaGVhZGluZ1wiLCBkZXB0aCwgY2hpbGRyZW46IFt7IHR5cGU6IFwidGV4dFwiLCB2YWx1ZTogdGV4dCB9XSB9XG59XG5cbmZ1bmN0aW9uIG1ha2VCb2xkSGVhZGluZyhib2xkVGV4dDogc3RyaW5nLCB0cmFpbGluZ1RleHQ6IHN0cmluZyk6IEhlYWRpbmcge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IFwiaGVhZGluZ1wiLFxuICAgIGRlcHRoOiAyLFxuICAgIGNoaWxkcmVuOiBbXG4gICAgICB7IHR5cGU6IFwic3Ryb25nXCIsIGNoaWxkcmVuOiBbeyB0eXBlOiBcInRleHRcIiwgdmFsdWU6IGJvbGRUZXh0IH1dIH0sXG4gICAgICB7IHR5cGU6IFwidGV4dFwiLCB2YWx1ZTogdHJhaWxpbmdUZXh0IH0sXG4gICAgXSxcbiAgfVxufVxuXG5mdW5jdGlvbiBtYWtlVHJlZSguLi5oZWFkaW5nczogSGVhZGluZ1tdKTogUm9vdCB7XG4gIHJldHVybiB7IHR5cGU6IFwicm9vdFwiLCBjaGlsZHJlbjogaGVhZGluZ3MgfVxufVxuXG5mdW5jdGlvbiBmaW5kSGVhZGluZyh0cmVlOiBSb290LCBpbmRleDogbnVtYmVyKTogSGVhZGluZyB7XG4gIGNvbnN0IG5vZGUgPSB0cmVlLmNoaWxkcmVuW2luZGV4XVxuICBpZiAoIW5vZGUgfHwgbm9kZS50eXBlICE9PSBcImhlYWRpbmdcIikgdGhyb3cgbmV3IEVycm9yKFwiTm8gaGVhZGluZyBhdCBpbmRleFwiKVxuICByZXR1cm4gbm9kZVxufVxuXG5mdW5jdGlvbiBoZWFkaW5nVGV4dChoZWFkaW5nOiBIZWFkaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGhlYWRpbmcuY2hpbGRyZW5cbiAgICAuZmlsdGVyKChjKTogYyBpcyBUZXh0ID0+IGMudHlwZSA9PT0gXCJ0ZXh0XCIpXG4gICAgLm1hcChjID0+IGMudmFsdWUpXG4gICAgLmpvaW4oXCJcIilcbn1cblxuZGVzY3JpYmUoXCJ0cmFuc2Zvcm1IZWFkaW5nQW5ub3RhdGlvbnNcIiwgKCkgPT4ge1xuICBmdW5jdGlvbiBwcm9jZXNzKHRyZWU6IFJvb3QpIHtcbiAgICB0cmFuc2Zvcm1IZWFkaW5nQW5ub3RhdGlvbnModHJlZSlcbiAgICByZXR1cm4gdHJlZVxuICB9XG5cbiAgaXQoXCJzaG91bGQgc2V0IGEgY3VzdG9tIGlkIGZyb20gWyNjdXN0b20taWRdIHN5bnRheFwiLCAoKSA9PiB7XG4gICAgY29uc3QgdHJlZSA9IHByb2Nlc3MobWFrZVRyZWUobWFrZUhlYWRpbmcoMiwgXCJNeSBIZWFkaW5nIFsjY3VzdG9tLWlkXVwiKSkpXG4gICAgY29uc3QgaGVhZGluZyA9IGZpbmRIZWFkaW5nKHRyZWUsIDApXG4gICAgZXhwZWN0KGhlYWRpbmcuZGF0YT8uaFByb3BlcnRpZXMpLnRvRXF1YWwoeyBpZDogXCJjdXN0b20taWRcIiB9KVxuICAgIGV4cGVjdChoZWFkaW5nVGV4dChoZWFkaW5nKSkudG9CZShcIk15IEhlYWRpbmdcIilcbiAgfSlcblxuICBpdChcInNob3VsZCBsZWF2ZSBoZWFkaW5ncyB3aXRob3V0IGN1c3RvbSBpZHMgdW5jaGFuZ2VkXCIsICgpID0+IHtcbiAgICBjb25zdCB0cmVlID0gcHJvY2VzcyhtYWtlVHJlZShtYWtlSGVhZGluZygyLCBcIk5vcm1hbCBIZWFkaW5nXCIpKSlcbiAgICBjb25zdCBoZWFkaW5nID0gZmluZEhlYWRpbmcodHJlZSwgMClcbiAgICBleHBlY3QoaGVhZGluZy5kYXRhKS50b0JlVW5kZWZpbmVkKClcbiAgICBleHBlY3QoaGVhZGluZ1RleHQoaGVhZGluZykpLnRvQmUoXCJOb3JtYWwgSGVhZGluZ1wiKVxuICB9KVxuXG4gIGl0KFwic2hvdWxkIGhhbmRsZSBkaWZmZXJlbnQgaGVhZGluZyBkZXB0aHNcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHRyZWUgPSBwcm9jZXNzKFxuICAgICAgbWFrZVRyZWUoXG4gICAgICAgIG1ha2VIZWFkaW5nKDMsIFwiRGVlcCBIZWFkaW5nIFsjZGVlcF1cIiksXG4gICAgICAgIG1ha2VIZWFkaW5nKDQsIFwiRGVlcGVyIEhlYWRpbmcgWyNkZWVwZXJdXCIpLFxuICAgICAgKSxcbiAgICApXG5cbiAgICBjb25zdCBoMyA9IGZpbmRIZWFkaW5nKHRyZWUsIDApXG4gICAgZXhwZWN0KGgzLmRhdGE/LmhQcm9wZXJ0aWVzKS50b0VxdWFsKHsgaWQ6IFwiZGVlcFwiIH0pXG4gICAgZXhwZWN0KGgzLmRlcHRoKS50b0JlKDMpXG5cbiAgICBjb25zdCBoNCA9IGZpbmRIZWFkaW5nKHRyZWUsIDEpXG4gICAgZXhwZWN0KGg0LmRhdGE/LmhQcm9wZXJ0aWVzKS50b0VxdWFsKHsgaWQ6IFwiZGVlcGVyXCIgfSlcbiAgICBleHBlY3QoaDQuZGVwdGgpLnRvQmUoNClcbiAgfSlcblxuICBpdChcInNob3VsZCBoYW5kbGUgaWRzIHdpdGggaHlwaGVucyBhbmQgbnVtYmVyc1wiLCAoKSA9PiB7XG4gICAgY29uc3QgdHJlZSA9IHByb2Nlc3MoXG4gICAgICBtYWtlVHJlZShtYWtlSGVhZGluZygyLCBcIlNlY3Rpb24gMSBbI3NlY3Rpb24tMS1pbnRyb11cIikpLFxuICAgIClcbiAgICBjb25zdCBoZWFkaW5nID0gZmluZEhlYWRpbmcodHJlZSwgMClcbiAgICBleHBlY3QoaGVhZGluZy5kYXRhPy5oUHJvcGVydGllcykudG9FcXVhbCh7IGlkOiBcInNlY3Rpb24tMS1pbnRyb1wiIH0pXG4gICAgZXhwZWN0KGhlYWRpbmdUZXh0KGhlYWRpbmcpKS50b0JlKFwiU2VjdGlvbiAxXCIpXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgcHJlc2VydmUgaW5saW5lIGZvcm1hdHRpbmcgYmVmb3JlIHRoZSBpZFwiLCAoKSA9PiB7XG4gICAgY29uc3QgdHJlZSA9IHByb2Nlc3MoXG4gICAgICBtYWtlVHJlZShtYWtlQm9sZEhlYWRpbmcoXCJCb2xkXCIsIFwiIGhlYWRpbmcgWyNib2xkLWhlYWRpbmddXCIpKSxcbiAgICApXG4gICAgY29uc3QgaGVhZGluZyA9IGZpbmRIZWFkaW5nKHRyZWUsIDApXG4gICAgZXhwZWN0KGhlYWRpbmcuZGF0YT8uaFByb3BlcnRpZXMpLnRvRXF1YWwoeyBpZDogXCJib2xkLWhlYWRpbmdcIiB9KVxuICAgIGV4cGVjdChoZWFkaW5nLmNoaWxkcmVuLnNvbWUoYyA9PiBjLnR5cGUgPT09IFwic3Ryb25nXCIpKS50b0JlKHRydWUpXG4gICAgZXhwZWN0KGhlYWRpbmdUZXh0KGhlYWRpbmcpKS50b0JlKFwiIGhlYWRpbmdcIilcbiAgfSlcblxuICBpdChcInNob3VsZCBhZGQgZGF0YS10b2MtaGlkZGVuIGZvciBbIXRvY10gaGVhZGluZ3NcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHRyZWUgPSBwcm9jZXNzKG1ha2VUcmVlKG1ha2VIZWFkaW5nKDIsIFwiSGlkZGVuIEhlYWRpbmcgWyF0b2NdXCIpKSlcbiAgICBjb25zdCBoZWFkaW5nID0gZmluZEhlYWRpbmcodHJlZSwgMClcbiAgICBleHBlY3QoaGVhZGluZy5kYXRhPy5oUHJvcGVydGllcykudG9FcXVhbCh7IFwiZGF0YS10b2MtaGlkZGVuXCI6IHRydWUgfSlcbiAgICBleHBlY3QoaGVhZGluZ1RleHQoaGVhZGluZykpLnRvQmUoXCJIaWRkZW4gSGVhZGluZ1wiKVxuICB9KVxuXG4gIGl0KFwic2hvdWxkIHJlbW92ZSBbdG9jXSBoZWFkaW5ncyBmcm9tIHRoZSB0cmVlXCIsICgpID0+IHtcbiAgICBjb25zdCB0cmVlID0gcHJvY2VzcyhcbiAgICAgIG1ha2VUcmVlKFxuICAgICAgICBtYWtlSGVhZGluZygyLCBcIlZpc2libGUgSGVhZGluZ1wiKSxcbiAgICAgICAgbWFrZUhlYWRpbmcoMiwgXCJUT0MgT25seSBIZWFkaW5nIFt0b2NdXCIpLFxuICAgICAgICBtYWtlSGVhZGluZygzLCBcIkFub3RoZXIgVmlzaWJsZVwiKSxcbiAgICAgICksXG4gICAgKVxuICAgIGV4cGVjdCh0cmVlLmNoaWxkcmVuKS50b0hhdmVMZW5ndGgoMilcbiAgICBleHBlY3QoaGVhZGluZ1RleHQoZmluZEhlYWRpbmcodHJlZSwgMCkpKS50b0JlKFwiVmlzaWJsZSBIZWFkaW5nXCIpXG4gICAgZXhwZWN0KGhlYWRpbmdUZXh0KGZpbmRIZWFkaW5nKHRyZWUsIDEpKSkudG9CZShcIkFub3RoZXIgVmlzaWJsZVwiKVxuICB9KVxuXG4gIGl0KFwic2hvdWxkIHJlbW92ZSBjb25zZWN1dGl2ZSBbdG9jXSBoZWFkaW5ncyBjb3JyZWN0bHlcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHRyZWUgPSBwcm9jZXNzKFxuICAgICAgbWFrZVRyZWUoXG4gICAgICAgIG1ha2VIZWFkaW5nKDIsIFwiRmlyc3QgW3RvY11cIiksXG4gICAgICAgIG1ha2VIZWFkaW5nKDIsIFwiU2Vjb25kIFt0b2NdXCIpLFxuICAgICAgICBtYWtlSGVhZGluZygyLCBcIktlcHRcIiksXG4gICAgICApLFxuICAgIClcbiAgICBleHBlY3QodHJlZS5jaGlsZHJlbikudG9IYXZlTGVuZ3RoKDEpXG4gICAgZXhwZWN0KGhlYWRpbmdUZXh0KGZpbmRIZWFkaW5nKHRyZWUsIDApKSkudG9CZShcIktlcHRcIilcbiAgfSlcblxuICBpdChcInNob3VsZCBiZSBhdmFpbGFibGUgYXMgdHJhbnNmb3JtQ3VzdG9tSGVhZGluZ0lkcyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eVwiLCAoKSA9PiB7XG4gICAgZXhwZWN0KHRyYW5zZm9ybUN1c3RvbUhlYWRpbmdJZHMpLnRvQmUodHJhbnNmb3JtSGVhZGluZ0Fubm90YXRpb25zKVxuICB9KVxufSlcbiJdfQ==
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { visit, SKIP } from "unist-util-visit";
|
|
2
|
+
/** Remark plugin that converts defList nodes into DefinitionList/DefinitionTerm/DefinitionDetail JSX elements */
|
|
3
|
+
export const remarkDeflist = () => {
|
|
4
|
+
return tree => {
|
|
5
|
+
visit(tree, "defList", (node, index, parent) => {
|
|
6
|
+
if (index === undefined || !parent)
|
|
7
|
+
return;
|
|
8
|
+
const children = node.children.map(child => {
|
|
9
|
+
const name = child.type === "defListTerm" ? "DefinitionTerm" : "DefinitionDetail";
|
|
10
|
+
return {
|
|
11
|
+
type: "mdxJsxFlowElement",
|
|
12
|
+
name,
|
|
13
|
+
attributes: [],
|
|
14
|
+
children: child.children,
|
|
15
|
+
data: { _mdxExplicitJsx: true },
|
|
16
|
+
};
|
|
17
|
+
});
|
|
18
|
+
const jsxNode = {
|
|
19
|
+
type: "mdxJsxFlowElement",
|
|
20
|
+
name: "DefinitionList",
|
|
21
|
+
attributes: [],
|
|
22
|
+
children,
|
|
23
|
+
data: { _mdxExplicitJsx: true },
|
|
24
|
+
};
|
|
25
|
+
// @ts-expect-error mdxJsxFlowElement is not in mdast types
|
|
26
|
+
parent.children.splice(index, 1, jsxNode);
|
|
27
|
+
return SKIP;
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtYXJrLWRlZmxpc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvcGx1Z2lucy9yZW1hcmstZGVmbGlzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBRTlDLGlIQUFpSDtBQUNqSCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQXFCLEdBQUcsRUFBRTtJQUNsRCxPQUFPLElBQUksQ0FBQyxFQUFFO1FBQ1osS0FBSyxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxJQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3JELElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxDQUFDLE1BQU07Z0JBQUUsT0FBTTtZQUUxQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDekMsTUFBTSxJQUFJLEdBQ1IsS0FBSyxDQUFDLElBQUksS0FBSyxhQUFhLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQTtnQkFDdEUsT0FBTztvQkFDTCxJQUFJLEVBQUUsbUJBQTRCO29CQUNsQyxJQUFJO29CQUNKLFVBQVUsRUFBRSxFQUFFO29CQUNkLFFBQVEsRUFBRyxLQUFnQixDQUFDLFFBQVE7b0JBQ3BDLElBQUksRUFBRSxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUU7aUJBQ2hDLENBQUE7WUFDSCxDQUFDLENBQUMsQ0FBQTtZQUVGLE1BQU0sT0FBTyxHQUFHO2dCQUNkLElBQUksRUFBRSxtQkFBNEI7Z0JBQ2xDLElBQUksRUFBRSxnQkFBZ0I7Z0JBQ3RCLFVBQVUsRUFBRSxFQUFFO2dCQUNkLFFBQVE7Z0JBQ1IsSUFBSSxFQUFFLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRTthQUNoQyxDQUFBO1lBRUQsMkRBQTJEO1lBQzNELE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUE7WUFDekMsT0FBTyxJQUFJLENBQUE7UUFDYixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUMsQ0FBQTtBQUNILENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUm9vdCwgUGFyZW50IH0gZnJvbSBcIm1kYXN0XCJcbmltcG9ydCB0eXBlIHsgUGx1Z2luIH0gZnJvbSBcInVuaWZpZWRcIlxuaW1wb3J0IHsgdmlzaXQsIFNLSVAgfSBmcm9tIFwidW5pc3QtdXRpbC12aXNpdFwiXG5cbi8qKiBSZW1hcmsgcGx1Z2luIHRoYXQgY29udmVydHMgZGVmTGlzdCBub2RlcyBpbnRvIERlZmluaXRpb25MaXN0L0RlZmluaXRpb25UZXJtL0RlZmluaXRpb25EZXRhaWwgSlNYIGVsZW1lbnRzICovXG5leHBvcnQgY29uc3QgcmVtYXJrRGVmbGlzdDogUGx1Z2luPFtdLCBSb290PiA9ICgpID0+IHtcbiAgcmV0dXJuIHRyZWUgPT4ge1xuICAgIHZpc2l0KHRyZWUsIFwiZGVmTGlzdFwiLCAobm9kZTogUGFyZW50LCBpbmRleCwgcGFyZW50KSA9PiB7XG4gICAgICBpZiAoaW5kZXggPT09IHVuZGVmaW5lZCB8fCAhcGFyZW50KSByZXR1cm5cblxuICAgICAgY29uc3QgY2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuLm1hcChjaGlsZCA9PiB7XG4gICAgICAgIGNvbnN0IG5hbWUgPVxuICAgICAgICAgIGNoaWxkLnR5cGUgPT09IFwiZGVmTGlzdFRlcm1cIiA/IFwiRGVmaW5pdGlvblRlcm1cIiA6IFwiRGVmaW5pdGlvbkRldGFpbFwiXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogXCJtZHhKc3hGbG93RWxlbWVudFwiIGFzIGNvbnN0LFxuICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgYXR0cmlidXRlczogW10sXG4gICAgICAgICAgY2hpbGRyZW46IChjaGlsZCBhcyBQYXJlbnQpLmNoaWxkcmVuLFxuICAgICAgICAgIGRhdGE6IHsgX21keEV4cGxpY2l0SnN4OiB0cnVlIH0sXG4gICAgICAgIH1cbiAgICAgIH0pXG5cbiAgICAgIGNvbnN0IGpzeE5vZGUgPSB7XG4gICAgICAgIHR5cGU6IFwibWR4SnN4Rmxvd0VsZW1lbnRcIiBhcyBjb25zdCxcbiAgICAgICAgbmFtZTogXCJEZWZpbml0aW9uTGlzdFwiLFxuICAgICAgICBhdHRyaWJ1dGVzOiBbXSxcbiAgICAgICAgY2hpbGRyZW4sXG4gICAgICAgIGRhdGE6IHsgX21keEV4cGxpY2l0SnN4OiB0cnVlIH0sXG4gICAgICB9XG5cbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgbWR4SnN4Rmxvd0VsZW1lbnQgaXMgbm90IGluIG1kYXN0IHR5cGVzXG4gICAgICBwYXJlbnQuY2hpbGRyZW4uc3BsaWNlKGluZGV4LCAxLCBqc3hOb2RlKVxuICAgICAgcmV0dXJuIFNLSVBcbiAgICB9KVxuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { visit } from "unist-util-visit";
|
|
2
|
+
/** Remark plugin that converts :::details directives into collapsible details/summary elements */
|
|
3
|
+
export const remarkDetails = () => {
|
|
4
|
+
return tree => {
|
|
5
|
+
visit(tree, "containerDirective", (node, index, parent) => {
|
|
6
|
+
if (node.name !== "details" || index === undefined || !parent)
|
|
7
|
+
return;
|
|
8
|
+
const labelParagraph = node.children.find((child) => child.type === "paragraph" && !!child.data?.directiveLabel);
|
|
9
|
+
const summary = labelParagraph
|
|
10
|
+
? labelParagraph.children
|
|
11
|
+
.map(c => ("value" in c ? String(c.value) : ""))
|
|
12
|
+
.join("")
|
|
13
|
+
: "Details";
|
|
14
|
+
const body = node.children.filter(child => !(child.type === "paragraph" && child.data?.directiveLabel));
|
|
15
|
+
const jsxNode = {
|
|
16
|
+
type: "mdxJsxFlowElement",
|
|
17
|
+
name: "Details",
|
|
18
|
+
attributes: [
|
|
19
|
+
{
|
|
20
|
+
type: "mdxJsxAttribute",
|
|
21
|
+
name: "summary",
|
|
22
|
+
value: summary,
|
|
23
|
+
},
|
|
24
|
+
],
|
|
25
|
+
children: body,
|
|
26
|
+
data: { _mdxExplicitJsx: true },
|
|
27
|
+
};
|
|
28
|
+
// @ts-expect-error mdxJsxFlowElement is not in mdast types
|
|
29
|
+
parent.children.splice(index, 1, jsxNode);
|
|
30
|
+
});
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtYXJrLWRldGFpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvcGx1Z2lucy9yZW1hcmstZGV0YWlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFFeEMsa0dBQWtHO0FBQ2xHLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBcUIsR0FBRyxFQUFFO0lBQ2xELE9BQU8sSUFBSSxDQUFDLEVBQUU7UUFDWixLQUFLLENBQ0gsSUFBSSxFQUNKLG9CQUFvQixFQUNwQixDQUFDLElBQXdCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQzFDLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxTQUFTLElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxDQUFDLE1BQU07Z0JBQUUsT0FBTTtZQUVyRSxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDdkMsQ0FBQyxLQUFLLEVBQXNCLEVBQUUsQ0FDNUIsS0FBSyxDQUFDLElBQUksS0FBSyxXQUFXLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUM3RCxDQUFBO1lBRUQsTUFBTSxPQUFPLEdBQUcsY0FBYztnQkFDNUIsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxRQUFRO3FCQUNwQixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO3FCQUMvQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUNiLENBQUMsQ0FBQyxTQUFTLENBQUE7WUFFYixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FDL0IsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxXQUFXLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsQ0FDckUsQ0FBQTtZQUVELE1BQU0sT0FBTyxHQUFHO2dCQUNkLElBQUksRUFBRSxtQkFBNEI7Z0JBQ2xDLElBQUksRUFBRSxTQUFTO2dCQUNmLFVBQVUsRUFBRTtvQkFDVjt3QkFDRSxJQUFJLEVBQUUsaUJBQTBCO3dCQUNoQyxJQUFJLEVBQUUsU0FBUzt3QkFDZixLQUFLLEVBQUUsT0FBTztxQkFDZjtpQkFDRjtnQkFDRCxRQUFRLEVBQUUsSUFBSTtnQkFDZCxJQUFJLEVBQUUsRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFO2FBQ2hDLENBQUE7WUFFRCwyREFBMkQ7WUFDM0QsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQTtRQUMzQyxDQUFDLENBQ0YsQ0FBQTtJQUNILENBQUMsQ0FBQTtBQUNILENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUGFyYWdyYXBoLCBSb290IH0gZnJvbSBcIm1kYXN0XCJcbmltcG9ydCB0eXBlIHsgQ29udGFpbmVyRGlyZWN0aXZlIH0gZnJvbSBcIm1kYXN0LXV0aWwtZGlyZWN0aXZlXCJcbmltcG9ydCB0eXBlIHsgUGx1Z2luIH0gZnJvbSBcInVuaWZpZWRcIlxuaW1wb3J0IHsgdmlzaXQgfSBmcm9tIFwidW5pc3QtdXRpbC12aXNpdFwiXG5cbi8qKiBSZW1hcmsgcGx1Z2luIHRoYXQgY29udmVydHMgOjo6ZGV0YWlscyBkaXJlY3RpdmVzIGludG8gY29sbGFwc2libGUgZGV0YWlscy9zdW1tYXJ5IGVsZW1lbnRzICovXG5leHBvcnQgY29uc3QgcmVtYXJrRGV0YWlsczogUGx1Z2luPFtdLCBSb290PiA9ICgpID0+IHtcbiAgcmV0dXJuIHRyZWUgPT4ge1xuICAgIHZpc2l0KFxuICAgICAgdHJlZSxcbiAgICAgIFwiY29udGFpbmVyRGlyZWN0aXZlXCIsXG4gICAgICAobm9kZTogQ29udGFpbmVyRGlyZWN0aXZlLCBpbmRleCwgcGFyZW50KSA9PiB7XG4gICAgICAgIGlmIChub2RlLm5hbWUgIT09IFwiZGV0YWlsc1wiIHx8IGluZGV4ID09PSB1bmRlZmluZWQgfHwgIXBhcmVudCkgcmV0dXJuXG5cbiAgICAgICAgY29uc3QgbGFiZWxQYXJhZ3JhcGggPSBub2RlLmNoaWxkcmVuLmZpbmQoXG4gICAgICAgICAgKGNoaWxkKTogY2hpbGQgaXMgUGFyYWdyYXBoID0+XG4gICAgICAgICAgICBjaGlsZC50eXBlID09PSBcInBhcmFncmFwaFwiICYmICEhY2hpbGQuZGF0YT8uZGlyZWN0aXZlTGFiZWwsXG4gICAgICAgIClcblxuICAgICAgICBjb25zdCBzdW1tYXJ5ID0gbGFiZWxQYXJhZ3JhcGhcbiAgICAgICAgICA/IGxhYmVsUGFyYWdyYXBoLmNoaWxkcmVuXG4gICAgICAgICAgICAgIC5tYXAoYyA9PiAoXCJ2YWx1ZVwiIGluIGMgPyBTdHJpbmcoYy52YWx1ZSkgOiBcIlwiKSlcbiAgICAgICAgICAgICAgLmpvaW4oXCJcIilcbiAgICAgICAgICA6IFwiRGV0YWlsc1wiXG5cbiAgICAgICAgY29uc3QgYm9keSA9IG5vZGUuY2hpbGRyZW4uZmlsdGVyKFxuICAgICAgICAgIGNoaWxkID0+ICEoY2hpbGQudHlwZSA9PT0gXCJwYXJhZ3JhcGhcIiAmJiBjaGlsZC5kYXRhPy5kaXJlY3RpdmVMYWJlbCksXG4gICAgICAgIClcblxuICAgICAgICBjb25zdCBqc3hOb2RlID0ge1xuICAgICAgICAgIHR5cGU6IFwibWR4SnN4Rmxvd0VsZW1lbnRcIiBhcyBjb25zdCxcbiAgICAgICAgICBuYW1lOiBcIkRldGFpbHNcIixcbiAgICAgICAgICBhdHRyaWJ1dGVzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHR5cGU6IFwibWR4SnN4QXR0cmlidXRlXCIgYXMgY29uc3QsXG4gICAgICAgICAgICAgIG5hbWU6IFwic3VtbWFyeVwiLFxuICAgICAgICAgICAgICB2YWx1ZTogc3VtbWFyeSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBjaGlsZHJlbjogYm9keSxcbiAgICAgICAgICBkYXRhOiB7IF9tZHhFeHBsaWNpdEpzeDogdHJ1ZSB9LFxuICAgICAgICB9XG5cbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBtZHhKc3hGbG93RWxlbWVudCBpcyBub3QgaW4gbWRhc3QgdHlwZXNcbiAgICAgICAgcGFyZW50LmNoaWxkcmVuLnNwbGljZShpbmRleCwgMSwganN4Tm9kZSlcbiAgICAgIH0sXG4gICAgKVxuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { List, Root } from "mdast";
|
|
2
|
+
import type { Plugin } from "unified";
|
|
3
|
+
interface TreeItem {
|
|
4
|
+
name: string;
|
|
5
|
+
isDir: boolean;
|
|
6
|
+
children?: TreeItem[];
|
|
7
|
+
}
|
|
8
|
+
/** Extract tree items from a mdast list node */
|
|
9
|
+
export declare function parseList(list: List): TreeItem[];
|
|
10
|
+
/** Remark plugin that converts :::filetree directives into FileTree JSX elements */
|
|
11
|
+
export declare const remarkFiletree: Plugin<[], Root>;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { visit, SKIP } from "unist-util-visit";
|
|
2
|
+
/** Extract tree items from a mdast list node */
|
|
3
|
+
export function parseList(list) {
|
|
4
|
+
const items = [];
|
|
5
|
+
for (const listItem of list.children) {
|
|
6
|
+
if (listItem.type !== "listItem")
|
|
7
|
+
continue;
|
|
8
|
+
const item = parseListItem(listItem);
|
|
9
|
+
if (item)
|
|
10
|
+
items.push(item);
|
|
11
|
+
}
|
|
12
|
+
return items;
|
|
13
|
+
}
|
|
14
|
+
function parseListItem(listItem) {
|
|
15
|
+
const paragraph = listItem.children.find((child) => child.type === "paragraph");
|
|
16
|
+
if (!paragraph)
|
|
17
|
+
return undefined;
|
|
18
|
+
const textContent = paragraph.children
|
|
19
|
+
.filter((c) => c.type === "text")
|
|
20
|
+
.map(c => c.value)
|
|
21
|
+
.join("")
|
|
22
|
+
.trim();
|
|
23
|
+
if (!textContent)
|
|
24
|
+
return undefined;
|
|
25
|
+
const isDir = textContent.endsWith("/");
|
|
26
|
+
const name = isDir ? textContent.slice(0, -1) : textContent;
|
|
27
|
+
const nestedList = listItem.children.find((child) => child.type === "list");
|
|
28
|
+
const children = nestedList ? parseList(nestedList) : undefined;
|
|
29
|
+
return { name, isDir, children };
|
|
30
|
+
}
|
|
31
|
+
/** Remark plugin that converts :::filetree directives into FileTree JSX elements */
|
|
32
|
+
export const remarkFiletree = () => {
|
|
33
|
+
return tree => {
|
|
34
|
+
visit(tree, "containerDirective", (node, index, parent) => {
|
|
35
|
+
if (node.name !== "filetree" || index === undefined || !parent)
|
|
36
|
+
return;
|
|
37
|
+
const lists = node.children.filter((child) => child.type === "list");
|
|
38
|
+
const treeItems = [];
|
|
39
|
+
for (const list of lists) {
|
|
40
|
+
treeItems.push(...parseList(list));
|
|
41
|
+
}
|
|
42
|
+
const jsxNode = {
|
|
43
|
+
type: "mdxJsxFlowElement",
|
|
44
|
+
name: "FileTree",
|
|
45
|
+
attributes: [
|
|
46
|
+
{
|
|
47
|
+
type: "mdxJsxAttribute",
|
|
48
|
+
name: "tree",
|
|
49
|
+
value: JSON.stringify(treeItems),
|
|
50
|
+
},
|
|
51
|
+
],
|
|
52
|
+
children: [],
|
|
53
|
+
data: { _mdxExplicitJsx: true },
|
|
54
|
+
};
|
|
55
|
+
// @ts-expect-error mdxJsxFlowElement is not in mdast types
|
|
56
|
+
parent.children[index] = jsxNode;
|
|
57
|
+
return SKIP;
|
|
58
|
+
});
|
|
59
|
+
};
|
|
60
|
+
};
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtYXJrLWZpbGV0cmVlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL3BsdWdpbnMvcmVtYXJrLWZpbGV0cmVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFROUMsZ0RBQWdEO0FBQ2hELE1BQU0sVUFBVSxTQUFTLENBQUMsSUFBVTtJQUNsQyxNQUFNLEtBQUssR0FBZSxFQUFFLENBQUE7SUFFNUIsS0FBSyxNQUFNLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDckMsSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLFVBQVU7WUFBRSxTQUFRO1FBQzFDLE1BQU0sSUFBSSxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUNwQyxJQUFJLElBQUk7WUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQzVCLENBQUM7SUFFRCxPQUFPLEtBQUssQ0FBQTtBQUNkLENBQUM7QUFFRCxTQUFTLGFBQWEsQ0FBQyxRQUFrQjtJQUN2QyxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDdEMsQ0FBQyxLQUFLLEVBQXNCLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FDMUQsQ0FBQTtJQUNELElBQUksQ0FBQyxTQUFTO1FBQUUsT0FBTyxTQUFTLENBQUE7SUFFaEMsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLFFBQVE7U0FDbkMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQztTQUMzQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1NBQ2pCLElBQUksQ0FBQyxFQUFFLENBQUM7U0FDUixJQUFJLEVBQUUsQ0FBQTtJQUVULElBQUksQ0FBQyxXQUFXO1FBQUUsT0FBTyxTQUFTLENBQUE7SUFFbEMsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUN2QyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQTtJQUUzRCxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDdkMsQ0FBQyxLQUFLLEVBQWlCLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FDaEQsQ0FBQTtJQUVELE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUE7SUFFL0QsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUE7QUFDbEMsQ0FBQztBQUVELG9GQUFvRjtBQUNwRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQXFCLEdBQUcsRUFBRTtJQUNuRCxPQUFPLElBQUksQ0FBQyxFQUFFO1FBQ1osS0FBSyxDQUNILElBQUksRUFDSixvQkFBb0IsRUFDcEIsQ0FBQyxJQUF3QixFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUMxQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssVUFBVSxJQUFJLEtBQUssS0FBSyxTQUFTLElBQUksQ0FBQyxNQUFNO2dCQUFFLE9BQU07WUFFdEUsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQ2hDLENBQUMsS0FBSyxFQUFpQixFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxNQUFNLENBQ2hELENBQUE7WUFFRCxNQUFNLFNBQVMsR0FBZSxFQUFFLENBQUE7WUFDaEMsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDekIsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO1lBQ3BDLENBQUM7WUFFRCxNQUFNLE9BQU8sR0FBRztnQkFDZCxJQUFJLEVBQUUsbUJBQTRCO2dCQUNsQyxJQUFJLEVBQUUsVUFBVTtnQkFDaEIsVUFBVSxFQUFFO29CQUNWO3dCQUNFLElBQUksRUFBRSxpQkFBMEI7d0JBQ2hDLElBQUksRUFBRSxNQUFNO3dCQUNaLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQztxQkFDakM7aUJBQ0Y7Z0JBQ0QsUUFBUSxFQUFFLEVBQUU7Z0JBQ1osSUFBSSxFQUFFLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRTthQUNoQyxDQUFBO1lBRUQsMkRBQTJEO1lBQzNELE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsT0FBTyxDQUFBO1lBQ2hDLE9BQU8sSUFBSSxDQUFBO1FBQ2IsQ0FBQyxDQUNGLENBQUE7SUFDSCxDQUFDLENBQUE7QUFDSCxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IExpc3QsIExpc3RJdGVtLCBQYXJhZ3JhcGgsIFJvb3QsIFRleHQgfSBmcm9tIFwibWRhc3RcIlxuaW1wb3J0IHR5cGUgeyBDb250YWluZXJEaXJlY3RpdmUgfSBmcm9tIFwibWRhc3QtdXRpbC1kaXJlY3RpdmVcIlxuaW1wb3J0IHR5cGUgeyBQbHVnaW4gfSBmcm9tIFwidW5pZmllZFwiXG5pbXBvcnQgeyB2aXNpdCwgU0tJUCB9IGZyb20gXCJ1bmlzdC11dGlsLXZpc2l0XCJcblxuaW50ZXJmYWNlIFRyZWVJdGVtIHtcbiAgbmFtZTogc3RyaW5nXG4gIGlzRGlyOiBib29sZWFuXG4gIGNoaWxkcmVuPzogVHJlZUl0ZW1bXVxufVxuXG4vKiogRXh0cmFjdCB0cmVlIGl0ZW1zIGZyb20gYSBtZGFzdCBsaXN0IG5vZGUgKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUxpc3QobGlzdDogTGlzdCk6IFRyZWVJdGVtW10ge1xuICBjb25zdCBpdGVtczogVHJlZUl0ZW1bXSA9IFtdXG5cbiAgZm9yIChjb25zdCBsaXN0SXRlbSBvZiBsaXN0LmNoaWxkcmVuKSB7XG4gICAgaWYgKGxpc3RJdGVtLnR5cGUgIT09IFwibGlzdEl0ZW1cIikgY29udGludWVcbiAgICBjb25zdCBpdGVtID0gcGFyc2VMaXN0SXRlbShsaXN0SXRlbSlcbiAgICBpZiAoaXRlbSkgaXRlbXMucHVzaChpdGVtKVxuICB9XG5cbiAgcmV0dXJuIGl0ZW1zXG59XG5cbmZ1bmN0aW9uIHBhcnNlTGlzdEl0ZW0obGlzdEl0ZW06IExpc3RJdGVtKTogVHJlZUl0ZW0gfCB1bmRlZmluZWQge1xuICBjb25zdCBwYXJhZ3JhcGggPSBsaXN0SXRlbS5jaGlsZHJlbi5maW5kKFxuICAgIChjaGlsZCk6IGNoaWxkIGlzIFBhcmFncmFwaCA9PiBjaGlsZC50eXBlID09PSBcInBhcmFncmFwaFwiLFxuICApXG4gIGlmICghcGFyYWdyYXBoKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgY29uc3QgdGV4dENvbnRlbnQgPSBwYXJhZ3JhcGguY2hpbGRyZW5cbiAgICAuZmlsdGVyKChjKTogYyBpcyBUZXh0ID0+IGMudHlwZSA9PT0gXCJ0ZXh0XCIpXG4gICAgLm1hcChjID0+IGMudmFsdWUpXG4gICAgLmpvaW4oXCJcIilcbiAgICAudHJpbSgpXG5cbiAgaWYgKCF0ZXh0Q29udGVudCkgcmV0dXJuIHVuZGVmaW5lZFxuXG4gIGNvbnN0IGlzRGlyID0gdGV4dENvbnRlbnQuZW5kc1dpdGgoXCIvXCIpXG4gIGNvbnN0IG5hbWUgPSBpc0RpciA/IHRleHRDb250ZW50LnNsaWNlKDAsIC0xKSA6IHRleHRDb250ZW50XG5cbiAgY29uc3QgbmVzdGVkTGlzdCA9IGxpc3RJdGVtLmNoaWxkcmVuLmZpbmQoXG4gICAgKGNoaWxkKTogY2hpbGQgaXMgTGlzdCA9PiBjaGlsZC50eXBlID09PSBcImxpc3RcIixcbiAgKVxuXG4gIGNvbnN0IGNoaWxkcmVuID0gbmVzdGVkTGlzdCA/IHBhcnNlTGlzdChuZXN0ZWRMaXN0KSA6IHVuZGVmaW5lZFxuXG4gIHJldHVybiB7IG5hbWUsIGlzRGlyLCBjaGlsZHJlbiB9XG59XG5cbi8qKiBSZW1hcmsgcGx1Z2luIHRoYXQgY29udmVydHMgOjo6ZmlsZXRyZWUgZGlyZWN0aXZlcyBpbnRvIEZpbGVUcmVlIEpTWCBlbGVtZW50cyAqL1xuZXhwb3J0IGNvbnN0IHJlbWFya0ZpbGV0cmVlOiBQbHVnaW48W10sIFJvb3Q+ID0gKCkgPT4ge1xuICByZXR1cm4gdHJlZSA9PiB7XG4gICAgdmlzaXQoXG4gICAgICB0cmVlLFxuICAgICAgXCJjb250YWluZXJEaXJlY3RpdmVcIixcbiAgICAgIChub2RlOiBDb250YWluZXJEaXJlY3RpdmUsIGluZGV4LCBwYXJlbnQpID0+IHtcbiAgICAgICAgaWYgKG5vZGUubmFtZSAhPT0gXCJmaWxldHJlZVwiIHx8IGluZGV4ID09PSB1bmRlZmluZWQgfHwgIXBhcmVudCkgcmV0dXJuXG5cbiAgICAgICAgY29uc3QgbGlzdHMgPSBub2RlLmNoaWxkcmVuLmZpbHRlcihcbiAgICAgICAgICAoY2hpbGQpOiBjaGlsZCBpcyBMaXN0ID0+IGNoaWxkLnR5cGUgPT09IFwibGlzdFwiLFxuICAgICAgICApXG5cbiAgICAgICAgY29uc3QgdHJlZUl0ZW1zOiBUcmVlSXRlbVtdID0gW11cbiAgICAgICAgZm9yIChjb25zdCBsaXN0IG9mIGxpc3RzKSB7XG4gICAgICAgICAgdHJlZUl0ZW1zLnB1c2goLi4ucGFyc2VMaXN0KGxpc3QpKVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QganN4Tm9kZSA9IHtcbiAgICAgICAgICB0eXBlOiBcIm1keEpzeEZsb3dFbGVtZW50XCIgYXMgY29uc3QsXG4gICAgICAgICAgbmFtZTogXCJGaWxlVHJlZVwiLFxuICAgICAgICAgIGF0dHJpYnV0ZXM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdHlwZTogXCJtZHhKc3hBdHRyaWJ1dGVcIiBhcyBjb25zdCxcbiAgICAgICAgICAgICAgbmFtZTogXCJ0cmVlXCIsXG4gICAgICAgICAgICAgIHZhbHVlOiBKU09OLnN0cmluZ2lmeSh0cmVlSXRlbXMpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIGNoaWxkcmVuOiBbXSxcbiAgICAgICAgICBkYXRhOiB7IF9tZHhFeHBsaWNpdEpzeDogdHJ1ZSB9LFxuICAgICAgICB9XG5cbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBtZHhKc3hGbG93RWxlbWVudCBpcyBub3QgaW4gbWRhc3QgdHlwZXNcbiAgICAgICAgcGFyZW50LmNoaWxkcmVuW2luZGV4XSA9IGpzeE5vZGVcbiAgICAgICAgcmV0dXJuIFNLSVBcbiAgICAgIH0sXG4gICAgKVxuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { describe, expect, it } from "vite-plus/test";
|
|
2
|
+
import { parseList } from "./remark-filetree.js";
|
|
3
|
+
function text(value) {
|
|
4
|
+
return { type: "text", value };
|
|
5
|
+
}
|
|
6
|
+
function paragraph(...children) {
|
|
7
|
+
return { type: "paragraph", children };
|
|
8
|
+
}
|
|
9
|
+
function listItem(...children) {
|
|
10
|
+
return { type: "listItem", children, spread: false };
|
|
11
|
+
}
|
|
12
|
+
function list(...children) {
|
|
13
|
+
return { type: "list", children, ordered: false, spread: false };
|
|
14
|
+
}
|
|
15
|
+
describe("parseList", () => {
|
|
16
|
+
it("should parse flat file entries", () => {
|
|
17
|
+
const input = list(listItem(paragraph(text("package.json"))), listItem(paragraph(text("tsconfig.json"))));
|
|
18
|
+
expect(parseList(input)).toEqual([
|
|
19
|
+
{ name: "package.json", isDir: false },
|
|
20
|
+
{ name: "tsconfig.json", isDir: false },
|
|
21
|
+
]);
|
|
22
|
+
});
|
|
23
|
+
it("should detect directories by trailing slash", () => {
|
|
24
|
+
const input = list(listItem(paragraph(text("src/"))), listItem(paragraph(text("README.md"))));
|
|
25
|
+
expect(parseList(input)).toEqual([
|
|
26
|
+
{ name: "src", isDir: true },
|
|
27
|
+
{ name: "README.md", isDir: false },
|
|
28
|
+
]);
|
|
29
|
+
});
|
|
30
|
+
it("should parse nested directory structures", () => {
|
|
31
|
+
const input = list(listItem(paragraph(text("src/")), list(listItem(paragraph(text("index.ts"))), listItem(paragraph(text("components/")), list(listItem(paragraph(text("Button.tsx"))))))));
|
|
32
|
+
expect(parseList(input)).toEqual([
|
|
33
|
+
{
|
|
34
|
+
name: "src",
|
|
35
|
+
isDir: true,
|
|
36
|
+
children: [
|
|
37
|
+
{ name: "index.ts", isDir: false },
|
|
38
|
+
{
|
|
39
|
+
name: "components",
|
|
40
|
+
isDir: true,
|
|
41
|
+
children: [{ name: "Button.tsx", isDir: false }],
|
|
42
|
+
},
|
|
43
|
+
],
|
|
44
|
+
},
|
|
45
|
+
]);
|
|
46
|
+
});
|
|
47
|
+
it("should skip list items without text content", () => {
|
|
48
|
+
const emptyItem = {
|
|
49
|
+
type: "listItem",
|
|
50
|
+
children: [],
|
|
51
|
+
spread: false,
|
|
52
|
+
};
|
|
53
|
+
const input = list(emptyItem, listItem(paragraph(text("file.ts"))));
|
|
54
|
+
expect(parseList(input)).toEqual([{ name: "file.ts", isDir: false }]);
|
|
55
|
+
});
|
|
56
|
+
it("should trim whitespace from names", () => {
|
|
57
|
+
const input = list(listItem(paragraph(text(" file.ts "))));
|
|
58
|
+
expect(parseList(input)).toEqual([{ name: "file.ts", isDir: false }]);
|
|
59
|
+
});
|
|
60
|
+
it("should handle deeply nested structures", () => {
|
|
61
|
+
const input = list(listItem(paragraph(text("a/")), list(listItem(paragraph(text("b/")), list(listItem(paragraph(text("c/")), list(listItem(paragraph(text("deep.ts"))))))))));
|
|
62
|
+
expect(parseList(input)).toEqual([
|
|
63
|
+
{
|
|
64
|
+
name: "a",
|
|
65
|
+
isDir: true,
|
|
66
|
+
children: [
|
|
67
|
+
{
|
|
68
|
+
name: "b",
|
|
69
|
+
isDir: true,
|
|
70
|
+
children: [
|
|
71
|
+
{
|
|
72
|
+
name: "c",
|
|
73
|
+
isDir: true,
|
|
74
|
+
children: [{ name: "deep.ts", isDir: false }],
|
|
75
|
+
},
|
|
76
|
+
],
|
|
77
|
+
},
|
|
78
|
+
],
|
|
79
|
+
},
|
|
80
|
+
]);
|
|
81
|
+
});
|
|
82
|
+
it("should return undefined children for directories without nested list", () => {
|
|
83
|
+
const input = list(listItem(paragraph(text("empty-dir/"))));
|
|
84
|
+
expect(parseList(input)).toEqual([{ name: "empty-dir", isDir: true }]);
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtYXJrLWZpbGV0cmVlLnVuaXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvcGx1Z2lucy9yZW1hcmstZmlsZXRyZWUudW5pdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFFaEQsU0FBUyxJQUFJLENBQUMsS0FBYTtJQUN6QixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQTtBQUNoQyxDQUFDO0FBRUQsU0FBUyxTQUFTLENBQUMsR0FBRyxRQUFnQjtJQUNwQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsQ0FBQTtBQUN4QyxDQUFDO0FBRUQsU0FBUyxRQUFRLENBQUMsR0FBRyxRQUE4QjtJQUNqRCxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFBO0FBQ3RELENBQUM7QUFFRCxTQUFTLElBQUksQ0FBQyxHQUFHLFFBQW9CO0lBQ25DLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQTtBQUNsRSxDQUFDO0FBRUQsUUFBUSxDQUFDLFdBQVcsRUFBRSxHQUFHLEVBQUU7SUFDekIsRUFBRSxDQUFDLGdDQUFnQyxFQUFFLEdBQUcsRUFBRTtRQUN4QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQ2hCLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFDekMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUMzQyxDQUFBO1FB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QyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBRTNELE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUN4RSxDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBMaXN0LCBMaXN0SXRlbSwgUGFyYWdyYXBoLCBUZXh0IH0gZnJvbSBcIm1kYXN0XCJcbmltcG9ydCB7IGRlc2NyaWJlLCBleHBlY3QsIGl0IH0gZnJvbSBcInZpdGUtcGx1cy90ZXN0XCJcbmltcG9ydCB7IHBhcnNlTGlzdCB9IGZyb20gXCIuL3JlbWFyay1maWxldHJlZS50c1wiXG5cbmZ1bmN0aW9uIHRleHQodmFsdWU6IHN0cmluZyk6IFRleHQge1xuICByZXR1cm4geyB0eXBlOiBcInRleHRcIiwgdmFsdWUgfVxufVxuXG5mdW5jdGlvbiBwYXJhZ3JhcGgoLi4uY2hpbGRyZW46IFRleHRbXSk6IFBhcmFncmFwaCB7XG4gIHJldHVybiB7IHR5cGU6IFwicGFyYWdyYXBoXCIsIGNoaWxkcmVuIH1cbn1cblxuZnVuY3Rpb24gbGlzdEl0ZW0oLi4uY2hpbGRyZW46IChQYXJhZ3JhcGggfCBMaXN0KVtdKTogTGlzdEl0ZW0ge1xuICByZXR1cm4geyB0eXBlOiBcImxpc3RJdGVtXCIsIGNoaWxkcmVuLCBzcHJlYWQ6IGZhbHNlIH1cbn1cblxuZnVuY3Rpb24gbGlzdCguLi5jaGlsZHJlbjogTGlzdEl0ZW1bXSk6IExpc3Qge1xuICByZXR1cm4geyB0eXBlOiBcImxpc3RcIiwgY2hpbGRyZW4sIG9yZGVyZWQ6IGZhbHNlLCBzcHJlYWQ6IGZhbHNlIH1cbn1cblxuZGVzY3JpYmUoXCJwYXJzZUxpc3RcIiwgKCkgPT4ge1xuICBpdChcInNob3VsZCBwYXJzZSBmbGF0IGZpbGUgZW50cmllc1wiLCAoKSA9PiB7XG4gICAgY29uc3QgaW5wdXQgPSBsaXN0KFxuICAgICAgbGlzdEl0ZW0ocGFyYWdyYXBoKHRleHQoXCJwYWNrYWdlLmpzb25cIikpKSxcbiAgICAgIGxpc3RJdGVtKHBhcmFncmFwaCh0ZXh0KFwidHNjb25maWcuanNvblwiKSkpLFxuICAgIClcblxuICAgIGV4cGVjdChwYXJzZUxpc3QoaW5wdXQpKS50b0VxdWFsKFtcbiAgICAgIHsgbmFtZTogXCJwYWNrYWdlLmpzb25cIiwgaXNEaXI6IGZhbHNlIH0sXG4gICAgICB7IG5hbWU6IFwidHNjb25maWcuanNvblwiLCBpc0RpcjogZmFsc2UgfSxcbiAgICBdKVxuICB9KVxuXG4gIGl0KFwic2hvdWxkIGRldGVjdCBkaXJlY3RvcmllcyBieSB0cmFpbGluZyBzbGFzaFwiLCAoKSA9PiB7XG4gICAgY29uc3QgaW5wdXQgPSBsaXN0KFxuICAgICAgbGlzdEl0ZW0ocGFyYWdyYXBoKHRleHQoXCJzcmMvXCIpKSksXG4gICAgICBsaXN0SXRlbShwYXJhZ3JhcGgodGV4dChcIlJFQURNRS5tZFwiKSkpLFxuICAgIClcblxuICAgIGV4cGVjdChwYXJzZUxpc3QoaW5wdXQpKS50b0VxdWFsKFtcbiAgICAgIHsgbmFtZTogXCJzcmNcIiwgaXNEaXI6IHRydWUgfSxcbiAgICAgIHsgbmFtZTogXCJSRUFETUUubWRcIiwgaXNEaXI6IGZhbHNlIH0sXG4gICAgXSlcbiAgfSlcblxuICBpdChcInNob3VsZCBwYXJzZSBuZXN0ZWQgZGlyZWN0b3J5IHN0cnVjdHVyZXNcIiwgKCkgPT4ge1xuICAgIGNvbnN0IGlucHV0ID0gbGlzdChcbiAgICAgIGxpc3RJdGVtKFxuICAgICAgICBwYXJhZ3JhcGgodGV4dChcInNyYy9cIikpLFxuICAgICAgICBsaXN0KFxuICAgICAgICAgIGxpc3RJdGVtKHBhcmFncmFwaCh0ZXh0KFwiaW5kZXgudHNcIikpKSxcbiAgICAgICAgICBsaXN0SXRlbShcbiAgICAgICAgICAgIHBhcmFncmFwaCh0ZXh0KFwiY29tcG9uZW50cy9cIikpLFxuICAgICAgICAgICAgbGlzdChsaXN0SXRlbShwYXJhZ3JhcGgodGV4dChcIkJ1dHRvbi50c3hcIikpKSksXG4gICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgKVxuXG4gICAgZXhwZWN0KHBhcnNlTGlzdChpbnB1dCkpLnRvRXF1YWwoW1xuICAgICAge1xuICAgICAgICBuYW1lOiBcInNyY1wiLFxuICAgICAgICBpc0RpcjogdHJ1ZSxcbiAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICB7IG5hbWU6IFwiaW5kZXgudHNcIiwgaXNEaXI6IGZhbHNlIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJjb21wb25lbnRzXCIsXG4gICAgICAgICAgICBpc0RpcjogdHJ1ZSxcbiAgICAgICAgICAgIGNoaWxkcmVuOiBbeyBuYW1lOiBcIkJ1dHRvbi50c3hcIiwgaXNEaXI6IGZhbHNlIH1dLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIF0pXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgc2tpcCBsaXN0IGl0ZW1zIHdpdGhvdXQgdGV4dCBjb250ZW50XCIsICgpID0+IHtcbiAgICBjb25zdCBlbXB0eUl0ZW06IExpc3RJdGVtID0ge1xuICAgICAgdHlwZTogXCJsaXN0SXRlbVwiLFxuICAgICAgY2hpbGRyZW46IFtdLFxuICAgICAgc3ByZWFkOiBmYWxzZSxcbiAgICB9XG4gICAgY29uc3QgaW5wdXQgPSBsaXN0KGVtcHR5SXRlbSwgbGlzdEl0ZW0ocGFyYWdyYXBoKHRleHQoXCJmaWxlLnRzXCIpKSkpXG5cbiAgICBleHBlY3QocGFyc2VMaXN0KGlucHV0KSkudG9FcXVhbChbeyBuYW1lOiBcImZpbGUudHNcIiwgaXNEaXI6IGZhbHNlIH1dKVxuICB9KVxuXG4gIGl0KFwic2hvdWxkIHRyaW0gd2hpdGVzcGFjZSBmcm9tIG5hbWVzXCIsICgpID0+IHtcbiAgICBjb25zdCBpbnB1dCA9IGxpc3QobGlzdEl0ZW0ocGFyYWdyYXBoKHRleHQoXCIgIGZpbGUudHMgIFwiKSkpKVxuXG4gICAgZXhwZWN0KHBhcnNlTGlzdChpbnB1dCkpLnRvRXF1YWwoW3sgbmFtZTogXCJmaWxlLnRzXCIsIGlzRGlyOiBmYWxzZSB9XSlcbiAgfSlcblxuICBpdChcInNob3VsZCBoYW5kbGUgZGVlcGx5IG5lc3RlZCBzdHJ1Y3R1cmVzXCIsICgpID0+IHtcbiAgICBjb25zdCBpbnB1dCA9IGxpc3QoXG4gICAgICBsaXN0SXRlbShcbiAgICAgICAgcGFyYWdyYXBoKHRleHQoXCJhL1wiKSksXG4gICAgICAgIGxpc3QoXG4gICAgICAgICAgbGlzdEl0ZW0oXG4gICAgICAgICAgICBwYXJhZ3JhcGgodGV4dChcImIvXCIpKSxcbiAgICAgICAgICAgIGxpc3QoXG4gICAgICAgICAgICAgIGxpc3RJdGVtKFxuICAgICAgICAgICAgICAgIHBhcmFncmFwaCh0ZXh0KFwiYy9cIikpLFxuICAgICAgICAgICAgICAgIGxpc3QobGlzdEl0ZW0ocGFyYWdyYXBoKHRleHQoXCJkZWVwLnRzXCIpKSkpLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICApXG5cbiAgICBleHBlY3QocGFyc2VMaXN0KGlucHV0KSkudG9FcXVhbChbXG4gICAgICB7XG4gICAgICAgIG5hbWU6IFwiYVwiLFxuICAgICAgICBpc0RpcjogdHJ1ZSxcbiAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcImJcIixcbiAgICAgICAgICAgIGlzRGlyOiB0cnVlLFxuICAgICAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IFwiY1wiLFxuICAgICAgICAgICAgICAgIGlzRGlyOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbeyBuYW1lOiBcImRlZXAudHNcIiwgaXNEaXI6IGZhbHNlIH1dLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICBdKVxuICB9KVxuXG4gIGl0KFwic2hvdWxkIHJldHVybiB1bmRlZmluZWQgY2hpbGRyZW4gZm9yIGRpcmVjdG9yaWVzIHdpdGhvdXQgbmVzdGVkIGxpc3RcIiwgKCkgPT4ge1xuICAgIGNvbnN0IGlucHV0ID0gbGlzdChsaXN0SXRlbShwYXJhZ3JhcGgodGV4dChcImVtcHR5LWRpci9cIikpKSlcblxuICAgIGV4cGVjdChwYXJzZUxpc3QoaW5wdXQpKS50b0VxdWFsKFt7IG5hbWU6IFwiZW1wdHktZGlyXCIsIGlzRGlyOiB0cnVlIH1dKVxuICB9KVxufSlcbiJdfQ==
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { visit } from "unist-util-visit";
|
|
2
|
+
const typeMap = {
|
|
3
|
+
NOTE: "note",
|
|
4
|
+
TIP: "tip",
|
|
5
|
+
WARNING: "warning",
|
|
6
|
+
CAUTION: "danger",
|
|
7
|
+
IMPORTANT: "info",
|
|
8
|
+
};
|
|
9
|
+
const calloutPattern = /^\[!(\w+)\]\s*/;
|
|
10
|
+
/** Remark plugin that converts GitHub-style blockquote callouts into Callout JSX elements */
|
|
11
|
+
export const remarkGithubCallout = () => {
|
|
12
|
+
return tree => {
|
|
13
|
+
visit(tree, "blockquote", (node, index, parent) => {
|
|
14
|
+
if (!parent || index === undefined || node.children.length === 0)
|
|
15
|
+
return;
|
|
16
|
+
const first = node.children[0];
|
|
17
|
+
if (first?.type !== "paragraph" || first.children.length === 0)
|
|
18
|
+
return;
|
|
19
|
+
const firstInline = first.children[0];
|
|
20
|
+
if (firstInline?.type !== "text")
|
|
21
|
+
return;
|
|
22
|
+
const match = calloutPattern.exec(firstInline.value);
|
|
23
|
+
if (!match)
|
|
24
|
+
return;
|
|
25
|
+
const rawType = match[1];
|
|
26
|
+
if (!rawType)
|
|
27
|
+
return;
|
|
28
|
+
const calloutType = typeMap[rawType];
|
|
29
|
+
if (!calloutType)
|
|
30
|
+
return;
|
|
31
|
+
const remainingText = firstInline.value.slice(match[0].length);
|
|
32
|
+
const updatedFirstChildren = [
|
|
33
|
+
...(remainingText
|
|
34
|
+
? [{ type: "text", value: remainingText }]
|
|
35
|
+
: []),
|
|
36
|
+
...first.children.slice(1),
|
|
37
|
+
];
|
|
38
|
+
const body = updatedFirstChildren.length > 0
|
|
39
|
+
? [
|
|
40
|
+
{ ...first, children: updatedFirstChildren },
|
|
41
|
+
...node.children.slice(1),
|
|
42
|
+
]
|
|
43
|
+
: node.children.slice(1);
|
|
44
|
+
const jsxNode = {
|
|
45
|
+
type: "mdxJsxFlowElement",
|
|
46
|
+
name: "Callout",
|
|
47
|
+
attributes: [
|
|
48
|
+
{
|
|
49
|
+
type: "mdxJsxAttribute",
|
|
50
|
+
name: "type",
|
|
51
|
+
value: calloutType,
|
|
52
|
+
},
|
|
53
|
+
],
|
|
54
|
+
children: body,
|
|
55
|
+
data: { _mdxExplicitJsx: true },
|
|
56
|
+
};
|
|
57
|
+
// @ts-expect-error mdxJsxFlowElement is not in mdast types
|
|
58
|
+
parent.children.splice(index, 1, jsxNode);
|
|
59
|
+
});
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtYXJrLWdpdGh1Yi1jYWxsb3V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL3BsdWdpbnMvcmVtYXJrLWdpdGh1Yi1jYWxsb3V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUV4QyxNQUFNLE9BQU8sR0FBMkI7SUFDdEMsSUFBSSxFQUFFLE1BQU07SUFDWixHQUFHLEVBQUUsS0FBSztJQUNWLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLFNBQVMsRUFBRSxNQUFNO0NBQ2xCLENBQUE7QUFFRCxNQUFNLGNBQWMsR0FBRyxnQkFBZ0IsQ0FBQTtBQUV2Qyw2RkFBNkY7QUFDN0YsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQXFCLEdBQUcsRUFBRTtJQUN4RCxPQUFPLElBQUksQ0FBQyxFQUFFO1FBQ1osS0FBSyxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsQ0FBQyxJQUFnQixFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUM1RCxJQUFJLENBQUMsTUFBTSxJQUFJLEtBQUssS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQztnQkFBRSxPQUFNO1lBRXhFLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDOUIsSUFBSSxLQUFLLEVBQUUsSUFBSSxLQUFLLFdBQVcsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDO2dCQUFFLE9BQU07WUFFdEUsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUNyQyxJQUFJLFdBQVcsRUFBRSxJQUFJLEtBQUssTUFBTTtnQkFBRSxPQUFNO1lBRXhDLE1BQU0sS0FBSyxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ3BELElBQUksQ0FBQyxLQUFLO2dCQUFFLE9BQU07WUFFbEIsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ3hCLElBQUksQ0FBQyxPQUFPO2dCQUFFLE9BQU07WUFFcEIsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1lBQ3BDLElBQUksQ0FBQyxXQUFXO2dCQUFFLE9BQU07WUFFeEIsTUFBTSxhQUFhLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1lBRTlELE1BQU0sb0JBQW9CLEdBQUc7Z0JBQzNCLEdBQUcsQ0FBQyxhQUFhO29CQUNmLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQWUsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFpQixDQUFDO29CQUNsRSxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNQLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2FBQzNCLENBQUE7WUFFRCxNQUFNLElBQUksR0FDUixvQkFBb0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQztnQkFDN0IsQ0FBQyxDQUFDO29CQUNFLEVBQUUsR0FBRyxLQUFLLEVBQUUsUUFBUSxFQUFFLG9CQUFvQixFQUFzQjtvQkFDaEUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7aUJBQzFCO2dCQUNILENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUU1QixNQUFNLE9BQU8sR0FBRztnQkFDZCxJQUFJLEVBQUUsbUJBQTRCO2dCQUNsQyxJQUFJLEVBQUUsU0FBUztnQkFDZixVQUFVLEVBQUU7b0JBQ1Y7d0JBQ0UsSUFBSSxFQUFFLGlCQUEwQjt3QkFDaEMsSUFBSSxFQUFFLE1BQU07d0JBQ1osS0FBSyxFQUFFLFdBQVc7cUJBQ25CO2lCQUNGO2dCQUNELFFBQVEsRUFBRSxJQUFJO2dCQUNkLElBQUksRUFBRSxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUU7YUFDaEMsQ0FBQTtZQUVELDJEQUEyRDtZQUMzRCxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFBO1FBQzNDLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQyxDQUFBO0FBQ0gsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBCbG9ja3F1b3RlLCBQYXJhZ3JhcGgsIFJvb3QsIFRleHQgfSBmcm9tIFwibWRhc3RcIlxuaW1wb3J0IHR5cGUgeyBQbHVnaW4gfSBmcm9tIFwidW5pZmllZFwiXG5pbXBvcnQgeyB2aXNpdCB9IGZyb20gXCJ1bmlzdC11dGlsLXZpc2l0XCJcblxuY29uc3QgdHlwZU1hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgTk9URTogXCJub3RlXCIsXG4gIFRJUDogXCJ0aXBcIixcbiAgV0FSTklORzogXCJ3YXJuaW5nXCIsXG4gIENBVVRJT046IFwiZGFuZ2VyXCIsXG4gIElNUE9SVEFOVDogXCJpbmZvXCIsXG59XG5cbmNvbnN0IGNhbGxvdXRQYXR0ZXJuID0gL15cXFshKFxcdyspXFxdXFxzKi9cblxuLyoqIFJlbWFyayBwbHVnaW4gdGhhdCBjb252ZXJ0cyBHaXRIdWItc3R5bGUgYmxvY2txdW90ZSBjYWxsb3V0cyBpbnRvIENhbGxvdXQgSlNYIGVsZW1lbnRzICovXG5leHBvcnQgY29uc3QgcmVtYXJrR2l0aHViQ2FsbG91dDogUGx1Z2luPFtdLCBSb290PiA9ICgpID0+IHtcbiAgcmV0dXJuIHRyZWUgPT4ge1xuICAgIHZpc2l0KHRyZWUsIFwiYmxvY2txdW90ZVwiLCAobm9kZTogQmxvY2txdW90ZSwgaW5kZXgsIHBhcmVudCkgPT4ge1xuICAgICAgaWYgKCFwYXJlbnQgfHwgaW5kZXggPT09IHVuZGVmaW5lZCB8fCBub2RlLmNoaWxkcmVuLmxlbmd0aCA9PT0gMCkgcmV0dXJuXG5cbiAgICAgIGNvbnN0IGZpcnN0ID0gbm9kZS5jaGlsZHJlblswXVxuICAgICAgaWYgKGZpcnN0Py50eXBlICE9PSBcInBhcmFncmFwaFwiIHx8IGZpcnN0LmNoaWxkcmVuLmxlbmd0aCA9PT0gMCkgcmV0dXJuXG5cbiAgICAgIGNvbnN0IGZpcnN0SW5saW5lID0gZmlyc3QuY2hpbGRyZW5bMF1cbiAgICAgIGlmIChmaXJzdElubGluZT8udHlwZSAhPT0gXCJ0ZXh0XCIpIHJldHVyblxuXG4gICAgICBjb25zdCBtYXRjaCA9IGNhbGxvdXRQYXR0ZXJuLmV4ZWMoZmlyc3RJbmxpbmUudmFsdWUpXG4gICAgICBpZiAoIW1hdGNoKSByZXR1cm5cblxuICAgICAgY29uc3QgcmF3VHlwZSA9IG1hdGNoWzFdXG4gICAgICBpZiAoIXJhd1R5cGUpIHJldHVyblxuXG4gICAgICBjb25zdCBjYWxsb3V0VHlwZSA9IHR5cGVNYXBbcmF3VHlwZV1cbiAgICAgIGlmICghY2FsbG91dFR5cGUpIHJldHVyblxuXG4gICAgICBjb25zdCByZW1haW5pbmdUZXh0ID0gZmlyc3RJbmxpbmUudmFsdWUuc2xpY2UobWF0Y2hbMF0ubGVuZ3RoKVxuXG4gICAgICBjb25zdCB1cGRhdGVkRmlyc3RDaGlsZHJlbiA9IFtcbiAgICAgICAgLi4uKHJlbWFpbmluZ1RleHRcbiAgICAgICAgICA/IFt7IHR5cGU6IFwidGV4dFwiIGFzIGNvbnN0LCB2YWx1ZTogcmVtYWluaW5nVGV4dCB9IHNhdGlzZmllcyBUZXh0XVxuICAgICAgICAgIDogW10pLFxuICAgICAgICAuLi5maXJzdC5jaGlsZHJlbi5zbGljZSgxKSxcbiAgICAgIF1cblxuICAgICAgY29uc3QgYm9keSA9XG4gICAgICAgIHVwZGF0ZWRGaXJzdENoaWxkcmVuLmxlbmd0aCA+IDBcbiAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgeyAuLi5maXJzdCwgY2hpbGRyZW46IHVwZGF0ZWRGaXJzdENoaWxkcmVuIH0gc2F0aXNmaWVzIFBhcmFncmFwaCxcbiAgICAgICAgICAgICAgLi4ubm9kZS5jaGlsZHJlbi5zbGljZSgxKSxcbiAgICAgICAgICAgIF1cbiAgICAgICAgICA6IG5vZGUuY2hpbGRyZW4uc2xpY2UoMSlcblxuICAgICAgY29uc3QganN4Tm9kZSA9IHtcbiAgICAgICAgdHlwZTogXCJtZHhKc3hGbG93RWxlbWVudFwiIGFzIGNvbnN0LFxuICAgICAgICBuYW1lOiBcIkNhbGxvdXRcIixcbiAgICAgICAgYXR0cmlidXRlczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHR5cGU6IFwibWR4SnN4QXR0cmlidXRlXCIgYXMgY29uc3QsXG4gICAgICAgICAgICBuYW1lOiBcInR5cGVcIixcbiAgICAgICAgICAgIHZhbHVlOiBjYWxsb3V0VHlwZSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBjaGlsZHJlbjogYm9keSxcbiAgICAgICAgZGF0YTogeyBfbWR4RXhwbGljaXRKc3g6IHRydWUgfSxcbiAgICAgIH1cblxuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBtZHhKc3hGbG93RWxlbWVudCBpcyBub3QgaW4gbWRhc3QgdHlwZXNcbiAgICAgIHBhcmVudC5jaGlsZHJlbi5zcGxpY2UoaW5kZXgsIDEsIGpzeE5vZGUpXG4gICAgfSlcbiAgfVxufVxuIl19
|