livemark 0.7.1 → 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/{build/website → source}/plugins/vite-livemark.ts +0 -7
- package/source/program.ts +18 -0
- package/source/settings.ts +6 -0
- package/{build/website → source}/vite.config.ts +4 -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.d.ts +2 -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/program.js +0 -16
- 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}/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
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { describe, expect, it } from "vite-plus/test";
|
|
2
|
+
import { transformBadgeDirectives } from "./remark-badge.js";
|
|
3
|
+
function makeTextDirective(name, text, attributes) {
|
|
4
|
+
return {
|
|
5
|
+
type: "textDirective",
|
|
6
|
+
name,
|
|
7
|
+
attributes: attributes ?? {},
|
|
8
|
+
children: [{ type: "text", value: text }],
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
function makeTree(...children) {
|
|
12
|
+
return { type: "root", children };
|
|
13
|
+
}
|
|
14
|
+
describe("transformBadgeDirectives", () => {
|
|
15
|
+
function process(tree) {
|
|
16
|
+
transformBadgeDirectives(tree);
|
|
17
|
+
return tree;
|
|
18
|
+
}
|
|
19
|
+
it("should convert :badge directive to InlineBadge JSX element", () => {
|
|
20
|
+
const directive = makeTextDirective("badge", "Beta");
|
|
21
|
+
const tree = process(makeTree({
|
|
22
|
+
type: "paragraph",
|
|
23
|
+
children: [directive],
|
|
24
|
+
}));
|
|
25
|
+
const paragraph = tree.children[0];
|
|
26
|
+
if (!paragraph || paragraph.type !== "paragraph")
|
|
27
|
+
throw new Error("Expected paragraph");
|
|
28
|
+
const node = paragraph.children[0];
|
|
29
|
+
expect(node).toMatchObject({
|
|
30
|
+
type: "mdxJsxTextElement",
|
|
31
|
+
name: "InlineBadge",
|
|
32
|
+
attributes: [{ type: "mdxJsxAttribute", name: "label", value: "Beta" }],
|
|
33
|
+
children: [],
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
it("should pass variant attribute when provided", () => {
|
|
37
|
+
const directive = makeTextDirective("badge", "Deprecated", {
|
|
38
|
+
variant: "destructive",
|
|
39
|
+
});
|
|
40
|
+
const tree = process(makeTree({
|
|
41
|
+
type: "paragraph",
|
|
42
|
+
children: [directive],
|
|
43
|
+
}));
|
|
44
|
+
const paragraph = tree.children[0];
|
|
45
|
+
if (!paragraph || paragraph.type !== "paragraph")
|
|
46
|
+
throw new Error("Expected paragraph");
|
|
47
|
+
const node = paragraph.children[0];
|
|
48
|
+
expect(node).toMatchObject({
|
|
49
|
+
type: "mdxJsxTextElement",
|
|
50
|
+
name: "InlineBadge",
|
|
51
|
+
attributes: [
|
|
52
|
+
{ type: "mdxJsxAttribute", name: "label", value: "Deprecated" },
|
|
53
|
+
{
|
|
54
|
+
type: "mdxJsxAttribute",
|
|
55
|
+
name: "variant",
|
|
56
|
+
value: "destructive",
|
|
57
|
+
},
|
|
58
|
+
],
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
it("should ignore non-badge text directives", () => {
|
|
62
|
+
const directive = makeTextDirective("other", "Text");
|
|
63
|
+
const tree = process(makeTree({
|
|
64
|
+
type: "paragraph",
|
|
65
|
+
children: [directive],
|
|
66
|
+
}));
|
|
67
|
+
const paragraph = tree.children[0];
|
|
68
|
+
if (!paragraph || paragraph.type !== "paragraph")
|
|
69
|
+
throw new Error("Expected paragraph");
|
|
70
|
+
expect(paragraph.children[0]).toMatchObject({
|
|
71
|
+
type: "textDirective",
|
|
72
|
+
name: "other",
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtYXJrLWJhZGdlLnVuaXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvcGx1Z2lucy9yZW1hcmstYmFkZ2UudW5pdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUU1RCxTQUFTLGlCQUFpQixDQUN4QixJQUFZLEVBQ1osSUFBWSxFQUNaLFVBQW1DO0lBRW5DLE9BQU87UUFDTCxJQUFJLEVBQUUsZUFBZTtRQUNyQixJQUFJO1FBQ0osVUFBVSxFQUFFLFVBQVUsSUFBSSxFQUFFO1FBQzVCLFFBQVEsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7S0FDMUMsQ0FBQTtBQUNILENBQUM7QUFFRCxTQUFTLFFBQVEsQ0FBQyxHQUFHLFFBQTBCO0lBQzdDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFBO0FBQ25DLENBQUM7QUFFRCxRQUFRLENBQUMsMEJBQTBCLEVBQUUsR0FBRyxFQUFFO0lBQ3hDLFNBQVMsT0FBTyxDQUFDLElBQVU7UUFDekIsd0JBQXdCLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDOUIsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0lBRUQsRUFBRSxDQUFDLDREQUE0RCxFQUFFLEdBQUcsRUFBRTtRQUNwRSxNQUFNLFNBQVMsR0FBRyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFDcEQsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUNsQixRQUFRLENBQUM7WUFDUCxJQUFJLEVBQUUsV0FBVztZQUNqQixRQUFRLEVBQUUsQ0FBQyxTQUFTLENBQUM7U0FDdEIsQ0FBQyxDQUNILENBQUE7UUFFRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ2xDLElBQUksQ0FBQyxTQUFTLElBQUksU0FBUyxDQUFDLElBQUksS0FBSyxXQUFXO1lBQzlDLE1BQU0sSUFBSSxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQTtRQUN2QyxNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ2xDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxhQUFhLENBQUM7WUFDekIsSUFBSSxFQUFFLG1CQUFtQjtZQUN6QixJQUFJLEVBQUUsYUFBYTtZQUNuQixVQUFVLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUN2RSxRQUFRLEVBQUUsRUFBRTtTQUNiLENBQUMsQ0FBQTtJQUNKLENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLDZDQUE2QyxFQUFFLEdBQUcsRUFBRTtRQUNyRCxNQUFNLFNBQVMsR0FBRyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsWUFBWSxFQUFFO1lBQ3pELE9BQU8sRUFBRSxhQUFhO1NBQ3ZCLENBQUMsQ0FBQTtRQUNGLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FDbEIsUUFBUSxDQUFDO1lBQ1AsSUFBSSxFQUFFLFdBQVc7WUFDakIsUUFBUSxFQUFFLENBQUMsU0FBUyxDQUFDO1NBQ3RCLENBQUMsQ0FDSCxDQUFBO1FBRUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNsQyxJQUFJLENBQUMsU0FBUyxJQUFJLFNBQVMsQ0FBQyxJQUFJLEtBQUssV0FBVztZQUM5QyxNQUFNLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUE7UUFDdkMsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNsQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsYUFBYSxDQUFDO1lBQ3pCLElBQUksRUFBRSxtQkFBbUI7WUFDekIsSUFBSSxFQUFFLGFBQWE7WUFDbkIsVUFBVSxFQUFFO2dCQUNWLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRTtnQkFDL0Q7b0JBQ0UsSUFBSSxFQUFFLGlCQUFpQjtvQkFDdkIsSUFBSSxFQUFFLFNBQVM7b0JBQ2YsS0FBSyxFQUFFLGFBQWE7aUJBQ3JCO2FBQ0Y7U0FDRixDQUFDLENBQUE7SUFDSixDQUFDLENBQUMsQ0FBQTtJQUVGLEVBQUUsQ0FBQyx5Q0FBeUMsRUFBRSxHQUFHLEVBQUU7UUFDakQsTUFBTSxTQUFTLEdBQUcsaUJBQWlCLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1FBQ3BELE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FDbEIsUUFBUSxDQUFDO1lBQ1AsSUFBSSxFQUFFLFdBQVc7WUFDakIsUUFBUSxFQUFFLENBQUMsU0FBUyxDQUFDO1NBQ3RCLENBQUMsQ0FDSCxDQUFBO1FBRUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNsQyxJQUFJLENBQUMsU0FBUyxJQUFJLFNBQVMsQ0FBQyxJQUFJLEtBQUssV0FBVztZQUM5QyxNQUFNLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUE7UUFDdkMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUM7WUFDMUMsSUFBSSxFQUFFLGVBQWU7WUFDckIsSUFBSSxFQUFFLE9BQU87U0FDZCxDQUFDLENBQUE7SUFDSixDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSb290IH0gZnJvbSBcIm1kYXN0XCJcbmltcG9ydCB0eXBlIHsgVGV4dERpcmVjdGl2ZSB9IGZyb20gXCJtZGFzdC11dGlsLWRpcmVjdGl2ZVwiXG5pbXBvcnQgeyBkZXNjcmliZSwgZXhwZWN0LCBpdCB9IGZyb20gXCJ2aXRlLXBsdXMvdGVzdFwiXG5pbXBvcnQgeyB0cmFuc2Zvcm1CYWRnZURpcmVjdGl2ZXMgfSBmcm9tIFwiLi9yZW1hcmstYmFkZ2UudHNcIlxuXG5mdW5jdGlvbiBtYWtlVGV4dERpcmVjdGl2ZShcbiAgbmFtZTogc3RyaW5nLFxuICB0ZXh0OiBzdHJpbmcsXG4gIGF0dHJpYnV0ZXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuKTogVGV4dERpcmVjdGl2ZSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogXCJ0ZXh0RGlyZWN0aXZlXCIsXG4gICAgbmFtZSxcbiAgICBhdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzID8/IHt9LFxuICAgIGNoaWxkcmVuOiBbeyB0eXBlOiBcInRleHRcIiwgdmFsdWU6IHRleHQgfV0sXG4gIH1cbn1cblxuZnVuY3Rpb24gbWFrZVRyZWUoLi4uY2hpbGRyZW46IFJvb3RbXCJjaGlsZHJlblwiXSk6IFJvb3Qge1xuICByZXR1cm4geyB0eXBlOiBcInJvb3RcIiwgY2hpbGRyZW4gfVxufVxuXG5kZXNjcmliZShcInRyYW5zZm9ybUJhZGdlRGlyZWN0aXZlc1wiLCAoKSA9PiB7XG4gIGZ1bmN0aW9uIHByb2Nlc3ModHJlZTogUm9vdCkge1xuICAgIHRyYW5zZm9ybUJhZGdlRGlyZWN0aXZlcyh0cmVlKVxuICAgIHJldHVybiB0cmVlXG4gIH1cblxuICBpdChcInNob3VsZCBjb252ZXJ0IDpiYWRnZSBkaXJlY3RpdmUgdG8gSW5saW5lQmFkZ2UgSlNYIGVsZW1lbnRcIiwgKCkgPT4ge1xuICAgIGNvbnN0IGRpcmVjdGl2ZSA9IG1ha2VUZXh0RGlyZWN0aXZlKFwiYmFkZ2VcIiwgXCJCZXRhXCIpXG4gICAgY29uc3QgdHJlZSA9IHByb2Nlc3MoXG4gICAgICBtYWtlVHJlZSh7XG4gICAgICAgIHR5cGU6IFwicGFyYWdyYXBoXCIsXG4gICAgICAgIGNoaWxkcmVuOiBbZGlyZWN0aXZlXSxcbiAgICAgIH0pLFxuICAgIClcblxuICAgIGNvbnN0IHBhcmFncmFwaCA9IHRyZWUuY2hpbGRyZW5bMF1cbiAgICBpZiAoIXBhcmFncmFwaCB8fCBwYXJhZ3JhcGgudHlwZSAhPT0gXCJwYXJhZ3JhcGhcIilcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIHBhcmFncmFwaFwiKVxuICAgIGNvbnN0IG5vZGUgPSBwYXJhZ3JhcGguY2hpbGRyZW5bMF1cbiAgICBleHBlY3Qobm9kZSkudG9NYXRjaE9iamVjdCh7XG4gICAgICB0eXBlOiBcIm1keEpzeFRleHRFbGVtZW50XCIsXG4gICAgICBuYW1lOiBcIklubGluZUJhZGdlXCIsXG4gICAgICBhdHRyaWJ1dGVzOiBbeyB0eXBlOiBcIm1keEpzeEF0dHJpYnV0ZVwiLCBuYW1lOiBcImxhYmVsXCIsIHZhbHVlOiBcIkJldGFcIiB9XSxcbiAgICAgIGNoaWxkcmVuOiBbXSxcbiAgICB9KVxuICB9KVxuXG4gIGl0KFwic2hvdWxkIHBhc3MgdmFyaWFudCBhdHRyaWJ1dGUgd2hlbiBwcm92aWRlZFwiLCAoKSA9PiB7XG4gICAgY29uc3QgZGlyZWN0aXZlID0gbWFrZVRleHREaXJlY3RpdmUoXCJiYWRnZVwiLCBcIkRlcHJlY2F0ZWRcIiwge1xuICAgICAgdmFyaWFudDogXCJkZXN0cnVjdGl2ZVwiLFxuICAgIH0pXG4gICAgY29uc3QgdHJlZSA9IHByb2Nlc3MoXG4gICAgICBtYWtlVHJlZSh7XG4gICAgICAgIHR5cGU6IFwicGFyYWdyYXBoXCIsXG4gICAgICAgIGNoaWxkcmVuOiBbZGlyZWN0aXZlXSxcbiAgICAgIH0pLFxuICAgIClcblxuICAgIGNvbnN0IHBhcmFncmFwaCA9IHRyZWUuY2hpbGRyZW5bMF1cbiAgICBpZiAoIXBhcmFncmFwaCB8fCBwYXJhZ3JhcGgudHlwZSAhPT0gXCJwYXJhZ3JhcGhcIilcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIHBhcmFncmFwaFwiKVxuICAgIGNvbnN0IG5vZGUgPSBwYXJhZ3JhcGguY2hpbGRyZW5bMF1cbiAgICBleHBlY3Qobm9kZSkudG9NYXRjaE9iamVjdCh7XG4gICAgICB0eXBlOiBcIm1keEpzeFRleHRFbGVtZW50XCIsXG4gICAgICBuYW1lOiBcIklubGluZUJhZGdlXCIsXG4gICAgICBhdHRyaWJ1dGVzOiBbXG4gICAgICAgIHsgdHlwZTogXCJtZHhKc3hBdHRyaWJ1dGVcIiwgbmFtZTogXCJsYWJlbFwiLCB2YWx1ZTogXCJEZXByZWNhdGVkXCIgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwibWR4SnN4QXR0cmlidXRlXCIsXG4gICAgICAgICAgbmFtZTogXCJ2YXJpYW50XCIsXG4gICAgICAgICAgdmFsdWU6IFwiZGVzdHJ1Y3RpdmVcIixcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSlcbiAgfSlcblxuICBpdChcInNob3VsZCBpZ25vcmUgbm9uLWJhZGdlIHRleHQgZGlyZWN0aXZlc1wiLCAoKSA9PiB7XG4gICAgY29uc3QgZGlyZWN0aXZlID0gbWFrZVRleHREaXJlY3RpdmUoXCJvdGhlclwiLCBcIlRleHRcIilcbiAgICBjb25zdCB0cmVlID0gcHJvY2VzcyhcbiAgICAgIG1ha2VUcmVlKHtcbiAgICAgICAgdHlwZTogXCJwYXJhZ3JhcGhcIixcbiAgICAgICAgY2hpbGRyZW46IFtkaXJlY3RpdmVdLFxuICAgICAgfSksXG4gICAgKVxuXG4gICAgY29uc3QgcGFyYWdyYXBoID0gdHJlZS5jaGlsZHJlblswXVxuICAgIGlmICghcGFyYWdyYXBoIHx8IHBhcmFncmFwaC50eXBlICE9PSBcInBhcmFncmFwaFwiKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgcGFyYWdyYXBoXCIpXG4gICAgZXhwZWN0KHBhcmFncmFwaC5jaGlsZHJlblswXSkudG9NYXRjaE9iamVjdCh7XG4gICAgICB0eXBlOiBcInRleHREaXJlY3RpdmVcIixcbiAgICAgIG5hbWU6IFwib3RoZXJcIixcbiAgICB9KVxuICB9KVxufSlcbiJdfQ==
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Root } from "mdast";
|
|
2
|
+
import type { Plugin } from "unified";
|
|
3
|
+
/** Walk a mdast tree and convert ::button leaf directives into LinkButton JSX elements */
|
|
4
|
+
export declare function transformButtonDirectives(tree: Root): void;
|
|
5
|
+
/** Remark plugin that converts ::button leaf directives into LinkButton JSX elements */
|
|
6
|
+
export declare const remarkButton: Plugin<[], Root>;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { visit } from "unist-util-visit";
|
|
2
|
+
/** Walk a mdast tree and convert ::button leaf directives into LinkButton JSX elements */
|
|
3
|
+
export function transformButtonDirectives(tree) {
|
|
4
|
+
visit(tree, "leafDirective", (node, index, parent) => {
|
|
5
|
+
if (node.name !== "button" || index === undefined || !parent)
|
|
6
|
+
return;
|
|
7
|
+
const label = node.children.map(c => ("value" in c ? String(c.value) : "")).join("") ||
|
|
8
|
+
node.attributes?.label;
|
|
9
|
+
const href = node.attributes?.href;
|
|
10
|
+
if (!href || !label)
|
|
11
|
+
return;
|
|
12
|
+
const variant = node.attributes?.variant;
|
|
13
|
+
const size = node.attributes?.size;
|
|
14
|
+
const jsxNode = {
|
|
15
|
+
type: "mdxJsxFlowElement",
|
|
16
|
+
name: "LinkButton",
|
|
17
|
+
attributes: [
|
|
18
|
+
{ type: "mdxJsxAttribute", name: "href", value: href },
|
|
19
|
+
{ type: "mdxJsxAttribute", name: "label", value: label },
|
|
20
|
+
...(variant
|
|
21
|
+
? [
|
|
22
|
+
{
|
|
23
|
+
type: "mdxJsxAttribute",
|
|
24
|
+
name: "variant",
|
|
25
|
+
value: variant,
|
|
26
|
+
},
|
|
27
|
+
]
|
|
28
|
+
: []),
|
|
29
|
+
...(size
|
|
30
|
+
? [
|
|
31
|
+
{
|
|
32
|
+
type: "mdxJsxAttribute",
|
|
33
|
+
name: "size",
|
|
34
|
+
value: size,
|
|
35
|
+
},
|
|
36
|
+
]
|
|
37
|
+
: []),
|
|
38
|
+
],
|
|
39
|
+
children: [],
|
|
40
|
+
data: { _mdxExplicitJsx: true },
|
|
41
|
+
};
|
|
42
|
+
// @ts-expect-error mdxJsxFlowElement is not in mdast types
|
|
43
|
+
parent.children.splice(index, 1, jsxNode);
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
/** Remark plugin that converts ::button leaf directives into LinkButton JSX elements */
|
|
47
|
+
export const remarkButton = () => {
|
|
48
|
+
return tree => {
|
|
49
|
+
transformButtonDirectives(tree);
|
|
50
|
+
};
|
|
51
|
+
};
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtYXJrLWJ1dHRvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9wbHVnaW5zL3JlbWFyay1idXR0b24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBRXhDLDBGQUEwRjtBQUMxRixNQUFNLFVBQVUseUJBQXlCLENBQUMsSUFBVTtJQUNsRCxLQUFLLENBQUMsSUFBSSxFQUFFLGVBQWUsRUFBRSxDQUFDLElBQW1CLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQ2xFLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRLElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFNO1FBRXBFLE1BQU0sS0FBSyxHQUNULElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDdEUsSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUE7UUFFeEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUE7UUFDbEMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFNO1FBRTNCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFBO1FBQ3hDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFBO1FBRWxDLE1BQU0sT0FBTyxHQUFHO1lBQ2QsSUFBSSxFQUFFLG1CQUE0QjtZQUNsQyxJQUFJLEVBQUUsWUFBWTtZQUNsQixVQUFVLEVBQUU7Z0JBQ1YsRUFBRSxJQUFJLEVBQUUsaUJBQTBCLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO2dCQUMvRCxFQUFFLElBQUksRUFBRSxpQkFBMEIsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7Z0JBQ2pFLEdBQUcsQ0FBQyxPQUFPO29CQUNULENBQUMsQ0FBQzt3QkFDRTs0QkFDRSxJQUFJLEVBQUUsaUJBQTBCOzRCQUNoQyxJQUFJLEVBQUUsU0FBUzs0QkFDZixLQUFLLEVBQUUsT0FBTzt5QkFDZjtxQkFDRjtvQkFDSCxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNQLEdBQUcsQ0FBQyxJQUFJO29CQUNOLENBQUMsQ0FBQzt3QkFDRTs0QkFDRSxJQUFJLEVBQUUsaUJBQTBCOzRCQUNoQyxJQUFJLEVBQUUsTUFBTTs0QkFDWixLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtvQkFDSCxDQUFDLENBQUMsRUFBRSxDQUFDO2FBQ1I7WUFDRCxRQUFRLEVBQUUsRUFBRTtZQUNaLElBQUksRUFBRSxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUU7U0FDaEMsQ0FBQTtRQUVELDJEQUEyRDtRQUMzRCxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQzNDLENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQztBQUVELHdGQUF3RjtBQUN4RixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQXFCLEdBQUcsRUFBRTtJQUNqRCxPQUFPLElBQUksQ0FBQyxFQUFFO1FBQ1oseUJBQXlCLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDakMsQ0FBQyxDQUFBO0FBQ0gsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSb290IH0gZnJvbSBcIm1kYXN0XCJcbmltcG9ydCB0eXBlIHsgTGVhZkRpcmVjdGl2ZSB9IGZyb20gXCJtZGFzdC11dGlsLWRpcmVjdGl2ZVwiXG5pbXBvcnQgdHlwZSB7IFBsdWdpbiB9IGZyb20gXCJ1bmlmaWVkXCJcbmltcG9ydCB7IHZpc2l0IH0gZnJvbSBcInVuaXN0LXV0aWwtdmlzaXRcIlxuXG4vKiogV2FsayBhIG1kYXN0IHRyZWUgYW5kIGNvbnZlcnQgOjpidXR0b24gbGVhZiBkaXJlY3RpdmVzIGludG8gTGlua0J1dHRvbiBKU1ggZWxlbWVudHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1CdXR0b25EaXJlY3RpdmVzKHRyZWU6IFJvb3QpIHtcbiAgdmlzaXQodHJlZSwgXCJsZWFmRGlyZWN0aXZlXCIsIChub2RlOiBMZWFmRGlyZWN0aXZlLCBpbmRleCwgcGFyZW50KSA9PiB7XG4gICAgaWYgKG5vZGUubmFtZSAhPT0gXCJidXR0b25cIiB8fCBpbmRleCA9PT0gdW5kZWZpbmVkIHx8ICFwYXJlbnQpIHJldHVyblxuXG4gICAgY29uc3QgbGFiZWwgPVxuICAgICAgbm9kZS5jaGlsZHJlbi5tYXAoYyA9PiAoXCJ2YWx1ZVwiIGluIGMgPyBTdHJpbmcoYy52YWx1ZSkgOiBcIlwiKSkuam9pbihcIlwiKSB8fFxuICAgICAgbm9kZS5hdHRyaWJ1dGVzPy5sYWJlbFxuXG4gICAgY29uc3QgaHJlZiA9IG5vZGUuYXR0cmlidXRlcz8uaHJlZlxuICAgIGlmICghaHJlZiB8fCAhbGFiZWwpIHJldHVyblxuXG4gICAgY29uc3QgdmFyaWFudCA9IG5vZGUuYXR0cmlidXRlcz8udmFyaWFudFxuICAgIGNvbnN0IHNpemUgPSBub2RlLmF0dHJpYnV0ZXM/LnNpemVcblxuICAgIGNvbnN0IGpzeE5vZGUgPSB7XG4gICAgICB0eXBlOiBcIm1keEpzeEZsb3dFbGVtZW50XCIgYXMgY29uc3QsXG4gICAgICBuYW1lOiBcIkxpbmtCdXR0b25cIixcbiAgICAgIGF0dHJpYnV0ZXM6IFtcbiAgICAgICAgeyB0eXBlOiBcIm1keEpzeEF0dHJpYnV0ZVwiIGFzIGNvbnN0LCBuYW1lOiBcImhyZWZcIiwgdmFsdWU6IGhyZWYgfSxcbiAgICAgICAgeyB0eXBlOiBcIm1keEpzeEF0dHJpYnV0ZVwiIGFzIGNvbnN0LCBuYW1lOiBcImxhYmVsXCIsIHZhbHVlOiBsYWJlbCB9LFxuICAgICAgICAuLi4odmFyaWFudFxuICAgICAgICAgID8gW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdHlwZTogXCJtZHhKc3hBdHRyaWJ1dGVcIiBhcyBjb25zdCxcbiAgICAgICAgICAgICAgICBuYW1lOiBcInZhcmlhbnRcIixcbiAgICAgICAgICAgICAgICB2YWx1ZTogdmFyaWFudCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF1cbiAgICAgICAgICA6IFtdKSxcbiAgICAgICAgLi4uKHNpemVcbiAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHR5cGU6IFwibWR4SnN4QXR0cmlidXRlXCIgYXMgY29uc3QsXG4gICAgICAgICAgICAgICAgbmFtZTogXCJzaXplXCIsXG4gICAgICAgICAgICAgICAgdmFsdWU6IHNpemUsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdXG4gICAgICAgICAgOiBbXSksXG4gICAgICBdLFxuICAgICAgY2hpbGRyZW46IFtdLFxuICAgICAgZGF0YTogeyBfbWR4RXhwbGljaXRKc3g6IHRydWUgfSxcbiAgICB9XG5cbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIG1keEpzeEZsb3dFbGVtZW50IGlzIG5vdCBpbiBtZGFzdCB0eXBlc1xuICAgIHBhcmVudC5jaGlsZHJlbi5zcGxpY2UoaW5kZXgsIDEsIGpzeE5vZGUpXG4gIH0pXG59XG5cbi8qKiBSZW1hcmsgcGx1Z2luIHRoYXQgY29udmVydHMgOjpidXR0b24gbGVhZiBkaXJlY3RpdmVzIGludG8gTGlua0J1dHRvbiBKU1ggZWxlbWVudHMgKi9cbmV4cG9ydCBjb25zdCByZW1hcmtCdXR0b246IFBsdWdpbjxbXSwgUm9vdD4gPSAoKSA9PiB7XG4gIHJldHVybiB0cmVlID0+IHtcbiAgICB0cmFuc2Zvcm1CdXR0b25EaXJlY3RpdmVzKHRyZWUpXG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { describe, expect, it } from "vite-plus/test";
|
|
2
|
+
import { transformButtonDirectives } from "./remark-button.js";
|
|
3
|
+
function makeLeafDirective(name, attributes, children = []) {
|
|
4
|
+
return {
|
|
5
|
+
type: "leafDirective",
|
|
6
|
+
name,
|
|
7
|
+
attributes,
|
|
8
|
+
children,
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
function makeTree(...children) {
|
|
12
|
+
return { type: "root", children };
|
|
13
|
+
}
|
|
14
|
+
function process(tree) {
|
|
15
|
+
transformButtonDirectives(tree);
|
|
16
|
+
return tree;
|
|
17
|
+
}
|
|
18
|
+
describe("transformButtonDirectives", () => {
|
|
19
|
+
it("should convert ::button with bracket text to LinkButton JSX element", () => {
|
|
20
|
+
const tree = process(makeTree(makeLeafDirective("button", { href: "/start" }, [
|
|
21
|
+
{ type: "text", value: "Get Started" },
|
|
22
|
+
])));
|
|
23
|
+
const node = tree.children[0];
|
|
24
|
+
expect(node).toMatchObject({
|
|
25
|
+
type: "mdxJsxFlowElement",
|
|
26
|
+
name: "LinkButton",
|
|
27
|
+
attributes: [
|
|
28
|
+
{ type: "mdxJsxAttribute", name: "href", value: "/start" },
|
|
29
|
+
{ type: "mdxJsxAttribute", name: "label", value: "Get Started" },
|
|
30
|
+
],
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
it("should convert ::button with label attribute to LinkButton JSX element", () => {
|
|
34
|
+
const tree = process(makeTree(makeLeafDirective("button", { href: "/docs", label: "Read Docs" })));
|
|
35
|
+
const node = tree.children[0];
|
|
36
|
+
expect(node).toMatchObject({
|
|
37
|
+
type: "mdxJsxFlowElement",
|
|
38
|
+
name: "LinkButton",
|
|
39
|
+
attributes: [
|
|
40
|
+
{ type: "mdxJsxAttribute", name: "href", value: "/docs" },
|
|
41
|
+
{ type: "mdxJsxAttribute", name: "label", value: "Read Docs" },
|
|
42
|
+
],
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
it("should prefer bracket text over label attribute", () => {
|
|
46
|
+
const tree = process(makeTree(makeLeafDirective("button", { href: "/x", label: "Fallback" }, [
|
|
47
|
+
{ type: "text", value: "Primary" },
|
|
48
|
+
])));
|
|
49
|
+
const node = tree.children[0];
|
|
50
|
+
expect(node).toMatchObject({
|
|
51
|
+
type: "mdxJsxFlowElement",
|
|
52
|
+
name: "LinkButton",
|
|
53
|
+
attributes: [
|
|
54
|
+
{ type: "mdxJsxAttribute", name: "href", value: "/x" },
|
|
55
|
+
{ type: "mdxJsxAttribute", name: "label", value: "Primary" },
|
|
56
|
+
],
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
it("should pass variant attribute when provided", () => {
|
|
60
|
+
const tree = process(makeTree(makeLeafDirective("button", { href: "/a", variant: "outline" }, [
|
|
61
|
+
{ type: "text", value: "Click" },
|
|
62
|
+
])));
|
|
63
|
+
const node = tree.children[0];
|
|
64
|
+
expect(node).toMatchObject({
|
|
65
|
+
type: "mdxJsxFlowElement",
|
|
66
|
+
name: "LinkButton",
|
|
67
|
+
attributes: [
|
|
68
|
+
{ type: "mdxJsxAttribute", name: "href", value: "/a" },
|
|
69
|
+
{ type: "mdxJsxAttribute", name: "label", value: "Click" },
|
|
70
|
+
{ type: "mdxJsxAttribute", name: "variant", value: "outline" },
|
|
71
|
+
],
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
it("should pass size attribute when provided", () => {
|
|
75
|
+
const tree = process(makeTree(makeLeafDirective("button", { href: "/a", size: "lg" }, [
|
|
76
|
+
{ type: "text", value: "Big" },
|
|
77
|
+
])));
|
|
78
|
+
const node = tree.children[0];
|
|
79
|
+
expect(node).toMatchObject({
|
|
80
|
+
type: "mdxJsxFlowElement",
|
|
81
|
+
name: "LinkButton",
|
|
82
|
+
attributes: [
|
|
83
|
+
{ type: "mdxJsxAttribute", name: "href", value: "/a" },
|
|
84
|
+
{ type: "mdxJsxAttribute", name: "label", value: "Big" },
|
|
85
|
+
{ type: "mdxJsxAttribute", name: "size", value: "lg" },
|
|
86
|
+
],
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
it("should skip button directive without href", () => {
|
|
90
|
+
const tree = process(makeTree(makeLeafDirective("button", { label: "No Link" })));
|
|
91
|
+
const node = tree.children[0];
|
|
92
|
+
expect(node).toMatchObject({ type: "leafDirective", name: "button" });
|
|
93
|
+
});
|
|
94
|
+
it("should skip button directive without label or bracket text", () => {
|
|
95
|
+
const tree = process(makeTree(makeLeafDirective("button", { href: "/no-label" })));
|
|
96
|
+
const node = tree.children[0];
|
|
97
|
+
expect(node).toMatchObject({ type: "leafDirective", name: "button" });
|
|
98
|
+
});
|
|
99
|
+
it("should ignore unrelated leaf directives", () => {
|
|
100
|
+
const tree = process(makeTree(makeLeafDirective("video", { type: "youtube", id: "abc" })));
|
|
101
|
+
const node = tree.children[0];
|
|
102
|
+
expect(node).toMatchObject({ type: "leafDirective", name: "video" });
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtYXJrLWJ1dHRvbi51bml0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc291cmNlL3BsdWdpbnMvcmVtYXJrLWJ1dHRvbi51bml0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQ3JELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBRTlELFNBQVMsaUJBQWlCLENBQ3hCLElBQVksRUFDWixVQUFrQyxFQUNsQyxRQUFRLEdBQThCLEVBQUU7SUFFeEMsT0FBTztRQUNMLElBQUksRUFBRSxlQUF3QztRQUM5QyxJQUFJO1FBQ0osVUFBVTtRQUNWLFFBQVE7S0FDVCxDQUFBO0FBQ0gsQ0FBQztBQUVELFNBQVMsUUFBUSxDQUFDLEdBQUcsUUFBMEI7SUFDN0MsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLENBQUE7QUFDbkMsQ0FBQztBQUVELFNBQVMsT0FBTyxDQUFDLElBQVU7SUFDekIseUJBQXlCLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDL0IsT0FBTyxJQUFJLENBQUE7QUFDYixDQUFDO0FBRUQsUUFBUSxDQUFDLDJCQUEyQixFQUFFLEdBQUcsRUFBRTtJQUN6QyxFQUFFLENBQUMscUVBQXFFLEVBQUUsR0FBRyxFQUFFO1FBQzdFLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FDbEIsUUFBUSxDQUNOLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsRUFBRTtZQUM5QyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRTtTQUN2QyxDQUFDLENBQ0gsQ0FDRixDQUFBO1FBQ0QsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUM3QixNQUFNLENBQUMsSUFBSSxDQUFD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LENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFJvb3QgfSBmcm9tIFwibWRhc3RcIlxuaW1wb3J0IHR5cGUgeyBMZWFmRGlyZWN0aXZlIH0gZnJvbSBcIm1kYXN0LXV0aWwtZGlyZWN0aXZlXCJcbmltcG9ydCB7IGRlc2NyaWJlLCBleHBlY3QsIGl0IH0gZnJvbSBcInZpdGUtcGx1cy90ZXN0XCJcbmltcG9ydCB7IHRyYW5zZm9ybUJ1dHRvbkRpcmVjdGl2ZXMgfSBmcm9tIFwiLi9yZW1hcmstYnV0dG9uLnRzXCJcblxuZnVuY3Rpb24gbWFrZUxlYWZEaXJlY3RpdmUoXG4gIG5hbWU6IHN0cmluZyxcbiAgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbiAgY2hpbGRyZW46IExlYWZEaXJlY3RpdmVbXCJjaGlsZHJlblwiXSA9IFtdLFxuKTogTGVhZkRpcmVjdGl2ZSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogXCJsZWFmRGlyZWN0aXZlXCIgYXMgTGVhZkRpcmVjdGl2ZVtcInR5cGVcIl0sXG4gICAgbmFtZSxcbiAgICBhdHRyaWJ1dGVzLFxuICAgIGNoaWxkcmVuLFxuICB9XG59XG5cbmZ1bmN0aW9uIG1ha2VUcmVlKC4uLmNoaWxkcmVuOiBSb290W1wiY2hpbGRyZW5cIl0pOiBSb290IHtcbiAgcmV0dXJuIHsgdHlwZTogXCJyb290XCIsIGNoaWxkcmVuIH1cbn1cblxuZnVuY3Rpb24gcHJvY2Vzcyh0cmVlOiBSb290KSB7XG4gIHRyYW5zZm9ybUJ1dHRvbkRpcmVjdGl2ZXModHJlZSlcbiAgcmV0dXJuIHRyZWVcbn1cblxuZGVzY3JpYmUoXCJ0cmFuc2Zvcm1CdXR0b25EaXJlY3RpdmVzXCIsICgpID0+IHtcbiAgaXQoXCJzaG91bGQgY29udmVydCA6OmJ1dHRvbiB3aXRoIGJyYWNrZXQgdGV4dCB0byBMaW5rQnV0dG9uIEpTWCBlbGVtZW50XCIsICgpID0+IHtcbiAgICBjb25zdCB0cmVlID0gcHJvY2VzcyhcbiAgICAgIG1ha2VUcmVlKFxuICAgICAgICBtYWtlTGVhZkRpcmVjdGl2ZShcImJ1dHRvblwiLCB7IGhyZWY6IFwiL3N0YXJ0XCIgfSwgW1xuICAgICAgICAgIHsgdHlwZTogXCJ0ZXh0XCIsIHZhbHVlOiBcIkdldCBTdGFydGVkXCIgfSxcbiAgICAgICAgXSksXG4gICAgICApLFxuICAgIClcbiAgICBjb25zdCBub2RlID0gdHJlZS5jaGlsZHJlblswXVxuICAgIGV4cGVjdChub2RlKS50b01hdGNoT2JqZWN0KHtcbiAgICAgIHR5cGU6IFwibWR4SnN4Rmxvd0VsZW1lbnRcIixcbiAgICAgIG5hbWU6IFwiTGlua0J1dHRvblwiLFxuICAgICAgYXR0cmlidXRlczogW1xuICAgICAgICB7IHR5cGU6IFwibWR4SnN4QXR0cmlidXRlXCIsIG5hbWU6IFwiaHJlZlwiLCB2YWx1ZTogXCIvc3RhcnRcIiB9LFxuICAgICAgICB7IHR5cGU6IFwibWR4SnN4QXR0cmlidXRlXCIsIG5hbWU6IFwibGFiZWxcIiwgdmFsdWU6IFwiR2V0IFN0YXJ0ZWRcIiB9LFxuICAgICAgXSxcbiAgICB9KVxuICB9KVxuXG4gIGl0KFwic2hvdWxkIGNvbnZlcnQgOjpidXR0b24gd2l0aCBsYWJlbCBhdHRyaWJ1dGUgdG8gTGlua0J1dHRvbiBKU1ggZWxlbWVudFwiLCAoKSA9PiB7XG4gICAgY29uc3QgdHJlZSA9IHByb2Nlc3MoXG4gICAgICBtYWtlVHJlZShcbiAgICAgICAgbWFrZUxlYWZEaXJlY3RpdmUoXCJidXR0b25cIiwgeyBocmVmOiBcIi9kb2NzXCIsIGxhYmVsOiBcIlJlYWQgRG9jc1wiIH0pLFxuICAgICAgKSxcbiAgICApXG4gICAgY29uc3Qgbm9kZSA9IHRyZWUuY2hpbGRyZW5bMF1cbiAgICBleHBlY3Qobm9kZSkudG9NYXRjaE9iamVjdCh7XG4gICAgICB0eXBlOiBcIm1keEpzeEZsb3dFbGVtZW50XCIsXG4gICAgICBuYW1lOiBcIkxpbmtCdXR0b25cIixcbiAgICAgIGF0dHJpYnV0ZXM6IFtcbiAgICAgICAgeyB0eXBlOiBcIm1keEpzeEF0dHJpYnV0ZVwiLCBuYW1lOiBcImhyZWZcIiwgdmFsdWU6IFwiL2RvY3NcIiB9LFxuICAgICAgICB7IHR5cGU6IFwibWR4SnN4QXR0cmlidXRlXCIsIG5hbWU6IFwibGFiZWxcIiwgdmFsdWU6IFwiUmVhZCBEb2NzXCIgfSxcbiAgICAgIF0sXG4gICAgfSlcbiAgfSlcblxuICBpdChcInNob3VsZCBwcmVmZXIgYnJhY2tldCB0ZXh0IG92ZXIgbGFiZWwgYXR0cmlidXRlXCIsICgpID0+IHtcbiAgICBjb25zdCB0cmVlID0gcHJvY2VzcyhcbiAgICAgIG1ha2VUcmVlKFxuICAgICAgICBtYWtlTGVhZkRpcmVjdGl2ZShcImJ1dHRvblwiLCB7IGhyZWY6IFwiL3hcIiwgbGFiZWw6IFwiRmFsbGJhY2tcIiB9LCBbXG4gICAgICAgICAgeyB0eXBlOiBcInRleHRcIiwgdmFsdWU6IFwiUHJpbWFyeVwiIH0sXG4gICAgICAgIF0pLFxuICAgICAgKSxcbiAgICApXG4gICAgY29uc3Qgbm9kZSA9IHRyZWUuY2hpbGRyZW5bMF1cbiAgICBleHBlY3Qobm9kZSkudG9NYXRjaE9iamVjdCh7XG4gICAgICB0eXBlOiBcIm1keEpzeEZsb3dFbGVtZW50XCIsXG4gICAgICBuYW1lOiBcIkxpbmtCdXR0b25cIixcbiAgICAgIGF0dHJpYnV0ZXM6IFtcbiAgICAgICAgeyB0eXBlOiBcIm1keEpzeEF0dHJpYnV0ZVwiLCBuYW1lOiBcImhyZWZcIiwgdmFsdWU6IFwiL3hcIiB9LFxuICAgICAgICB7IHR5cGU6IFwibWR4SnN4QXR0cmlidXRlXCIsIG5hbWU6IFwibGFiZWxcIiwgdmFsdWU6IFwiUHJpbWFyeVwiIH0sXG4gICAgICBdLFxuICAgIH0pXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgcGFzcyB2YXJpYW50IGF0dHJpYnV0ZSB3aGVuIHByb3ZpZGVkXCIsICgpID0+IHtcbiAgICBjb25zdCB0cmVlID0gcHJvY2VzcyhcbiAgICAgIG1ha2VUcmVlKFxuICAgICAgICBtYWtlTGVhZkRpcmVjdGl2ZShcImJ1dHRvblwiLCB7IGhyZWY6IFwiL2FcIiwgdmFyaWFudDogXCJvdXRsaW5lXCIgfSwgW1xuICAgICAgICAgIHsgdHlwZTogXCJ0ZXh0XCIsIHZhbHVlOiBcIkNsaWNrXCIgfSxcbiAgICAgICAgXSksXG4gICAgICApLFxuICAgIClcbiAgICBjb25zdCBub2RlID0gdHJlZS5jaGlsZHJlblswXVxuICAgIGV4cGVjdChub2RlKS50b01hdGNoT2JqZWN0KHtcbiAgICAgIHR5cGU6IFwibWR4SnN4Rmxvd0VsZW1lbnRcIixcbiAgICAgIG5hbWU6IFwiTGlua0J1dHRvblwiLFxuICAgICAgYXR0cmlidXRlczogW1xuICAgICAgICB7IHR5cGU6IFwibWR4SnN4QXR0cmlidXRlXCIsIG5hbWU6IFwiaHJlZlwiLCB2YWx1ZTogXCIvYVwiIH0sXG4gICAgICAgIHsgdHlwZTogXCJtZHhKc3hBdHRyaWJ1dGVcIiwgbmFtZTogXCJsYWJlbFwiLCB2YWx1ZTogXCJDbGlja1wiIH0sXG4gICAgICAgIHsgdHlwZTogXCJtZHhKc3hBdHRyaWJ1dGVcIiwgbmFtZTogXCJ2YXJpYW50XCIsIHZhbHVlOiBcIm91dGxpbmVcIiB9LFxuICAgICAgXSxcbiAgICB9KVxuICB9KVxuXG4gIGl0KFwic2hvdWxkIHBhc3Mgc2l6ZSBhdHRyaWJ1dGUgd2hlbiBwcm92aWRlZFwiLCAoKSA9PiB7XG4gICAgY29uc3QgdHJlZSA9IHByb2Nlc3MoXG4gICAgICBtYWtlVHJlZShcbiAgICAgICAgbWFrZUxlYWZEaXJlY3RpdmUoXCJidXR0b25cIiwgeyBocmVmOiBcIi9hXCIsIHNpemU6IFwibGdcIiB9LCBbXG4gICAgICAgICAgeyB0eXBlOiBcInRleHRcIiwgdmFsdWU6IFwiQmlnXCIgfSxcbiAgICAgICAgXSksXG4gICAgICApLFxuICAgIClcbiAgICBjb25zdCBub2RlID0gdHJlZS5jaGlsZHJlblswXVxuICAgIGV4cGVjdChub2RlKS50b01hdGNoT2JqZWN0KHtcbiAgICAgIHR5cGU6IFwibWR4SnN4Rmxvd0VsZW1lbnRcIixcbiAgICAgIG5hbWU6IFwiTGlua0J1dHRvblwiLFxuICAgICAgYXR0cmlidXRlczogW1xuICAgICAgICB7IHR5cGU6IFwibWR4SnN4QXR0cmlidXRlXCIsIG5hbWU6IFwiaHJlZlwiLCB2YWx1ZTogXCIvYVwiIH0sXG4gICAgICAgIHsgdHlwZTogXCJtZHhKc3hBdHRyaWJ1dGVcIiwgbmFtZTogXCJsYWJlbFwiLCB2YWx1ZTogXCJCaWdcIiB9LFxuICAgICAgICB7IHR5cGU6IFwibWR4SnN4QXR0cmlidXRlXCIsIG5hbWU6IFwic2l6ZVwiLCB2YWx1ZTogXCJsZ1wiIH0sXG4gICAgICBdLFxuICAgIH0pXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgc2tpcCBidXR0b24gZGlyZWN0aXZlIHdpdGhvdXQgaHJlZlwiLCAoKSA9PiB7XG4gICAgY29uc3QgdHJlZSA9IHByb2Nlc3MoXG4gICAgICBtYWtlVHJlZShtYWtlTGVhZkRpcmVjdGl2ZShcImJ1dHRvblwiLCB7IGxhYmVsOiBcIk5vIExpbmtcIiB9KSksXG4gICAgKVxuICAgIGNvbnN0IG5vZGUgPSB0cmVlLmNoaWxkcmVuWzBdXG4gICAgZXhwZWN0KG5vZGUpLnRvTWF0Y2hPYmplY3QoeyB0eXBlOiBcImxlYWZEaXJlY3RpdmVcIiwgbmFtZTogXCJidXR0b25cIiB9KVxuICB9KVxuXG4gIGl0KFwic2hvdWxkIHNraXAgYnV0dG9uIGRpcmVjdGl2ZSB3aXRob3V0IGxhYmVsIG9yIGJyYWNrZXQgdGV4dFwiLCAoKSA9PiB7XG4gICAgY29uc3QgdHJlZSA9IHByb2Nlc3MoXG4gICAgICBtYWtlVHJlZShtYWtlTGVhZkRpcmVjdGl2ZShcImJ1dHRvblwiLCB7IGhyZWY6IFwiL25vLWxhYmVsXCIgfSkpLFxuICAgIClcbiAgICBjb25zdCBub2RlID0gdHJlZS5jaGlsZHJlblswXVxuICAgIGV4cGVjdChub2RlKS50b01hdGNoT2JqZWN0KHsgdHlwZTogXCJsZWFmRGlyZWN0aXZlXCIsIG5hbWU6IFwiYnV0dG9uXCIgfSlcbiAgfSlcblxuICBpdChcInNob3VsZCBpZ25vcmUgdW5yZWxhdGVkIGxlYWYgZGlyZWN0aXZlc1wiLCAoKSA9PiB7XG4gICAgY29uc3QgdHJlZSA9IHByb2Nlc3MoXG4gICAgICBtYWtlVHJlZShtYWtlTGVhZkRpcmVjdGl2ZShcInZpZGVvXCIsIHsgdHlwZTogXCJ5b3V0dWJlXCIsIGlkOiBcImFiY1wiIH0pKSxcbiAgICApXG4gICAgY29uc3Qgbm9kZSA9IHRyZWUuY2hpbGRyZW5bMF1cbiAgICBleHBlY3Qobm9kZSkudG9NYXRjaE9iamVjdCh7IHR5cGU6IFwibGVhZkRpcmVjdGl2ZVwiLCBuYW1lOiBcInZpZGVvXCIgfSlcbiAgfSlcbn0pXG4iXX0=
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { visit } from "unist-util-visit";
|
|
2
|
+
const calloutTypes = new Set(["note", "tip", "info", "warning", "danger"]);
|
|
3
|
+
/** Remark plugin that converts container directives into Callout JSX elements */
|
|
4
|
+
export const remarkCallout = () => {
|
|
5
|
+
return tree => {
|
|
6
|
+
visit(tree, "containerDirective", (node, index, parent) => {
|
|
7
|
+
if (!calloutTypes.has(node.name) || index === undefined || !parent)
|
|
8
|
+
return;
|
|
9
|
+
const labelParagraph = node.children.find((child) => child.type === "paragraph" && !!child.data?.directiveLabel);
|
|
10
|
+
const title = labelParagraph
|
|
11
|
+
? {
|
|
12
|
+
type: "mdxJsxAttribute",
|
|
13
|
+
name: "title",
|
|
14
|
+
value: labelParagraph.children
|
|
15
|
+
.map(c => ("value" in c ? String(c.value) : ""))
|
|
16
|
+
.join(""),
|
|
17
|
+
}
|
|
18
|
+
: undefined;
|
|
19
|
+
const body = node.children.filter(child => !(child.type === "paragraph" && child.data?.directiveLabel));
|
|
20
|
+
const jsxNode = {
|
|
21
|
+
type: "mdxJsxFlowElement",
|
|
22
|
+
name: "Callout",
|
|
23
|
+
attributes: [
|
|
24
|
+
{
|
|
25
|
+
type: "mdxJsxAttribute",
|
|
26
|
+
name: "type",
|
|
27
|
+
value: node.name,
|
|
28
|
+
},
|
|
29
|
+
...(title ? [title] : []),
|
|
30
|
+
],
|
|
31
|
+
children: body,
|
|
32
|
+
data: { _mdxExplicitJsx: true },
|
|
33
|
+
};
|
|
34
|
+
// @ts-expect-error mdxJsxFlowElement is not in mdast types
|
|
35
|
+
parent.children.splice(index, 1, jsxNode);
|
|
36
|
+
});
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtYXJrLWNhbGxvdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvcGx1Z2lucy9yZW1hcmstY2FsbG91dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFFeEMsTUFBTSxZQUFZLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQTtBQUUxRSxpRkFBaUY7QUFDakYsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFxQixHQUFHLEVBQUU7SUFDbEQsT0FBTyxJQUFJLENBQUMsRUFBRTtRQUNaLEtBQUssQ0FDSCxJQUFJLEVBQ0osb0JBQW9CLEVBQ3BCLENBQUMsSUFBd0IsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDMUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssS0FBSyxTQUFTLElBQUksQ0FBQyxNQUFNO2dCQUNoRSxPQUFNO1lBRVIsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ3ZDLENBQUMsS0FBSyxFQUFzQixFQUFFLENBQzVCLEtBQUssQ0FBQyxJQUFJLEtBQUssV0FBVyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FDN0QsQ0FBQTtZQUVELE1BQU0sS0FBSyxHQUFHLGNBQWM7Z0JBQzFCLENBQUMsQ0FBQztvQkFDRSxJQUFJLEVBQUUsaUJBQTBCO29CQUNoQyxJQUFJLEVBQUUsT0FBTztvQkFDYixLQUFLLEVBQUUsY0FBYyxDQUFDLFFBQVE7eUJBQzNCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7eUJBQy9DLElBQUksQ0FBQyxFQUFFLENBQUM7aUJBQ1o7Z0JBQ0gsQ0FBQyxDQUFDLFNBQVMsQ0FBQTtZQUViLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUMvQixLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLFdBQVcsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxDQUNyRSxDQUFBO1lBRUQsTUFBTSxPQUFPLEdBQUc7Z0JBQ2QsSUFBSSxFQUFFLG1CQUE0QjtnQkFDbEMsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsVUFBVSxFQUFFO29CQUNWO3dCQUNFLElBQUksRUFBRSxpQkFBMEI7d0JBQ2hDLElBQUksRUFBRSxNQUFNO3dCQUNaLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSTtxQkFDakI7b0JBQ0QsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2lCQUMxQjtnQkFDRCxRQUFRLEVBQUUsSUFBSTtnQkFDZCxJQUFJLEVBQUUsRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFO2FBQ2hDLENBQUE7WUFFRCwyREFBMkQ7WUFDM0QsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQTtRQUMzQyxDQUFDLENBQ0YsQ0FBQTtJQUNILENBQUMsQ0FBQTtBQUNILENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUGFyYWdyYXBoLCBSb290IH0gZnJvbSBcIm1kYXN0XCJcbmltcG9ydCB0eXBlIHsgQ29udGFpbmVyRGlyZWN0aXZlIH0gZnJvbSBcIm1kYXN0LXV0aWwtZGlyZWN0aXZlXCJcbmltcG9ydCB0eXBlIHsgUGx1Z2luIH0gZnJvbSBcInVuaWZpZWRcIlxuaW1wb3J0IHsgdmlzaXQgfSBmcm9tIFwidW5pc3QtdXRpbC12aXNpdFwiXG5cbmNvbnN0IGNhbGxvdXRUeXBlcyA9IG5ldyBTZXQoW1wibm90ZVwiLCBcInRpcFwiLCBcImluZm9cIiwgXCJ3YXJuaW5nXCIsIFwiZGFuZ2VyXCJdKVxuXG4vKiogUmVtYXJrIHBsdWdpbiB0aGF0IGNvbnZlcnRzIGNvbnRhaW5lciBkaXJlY3RpdmVzIGludG8gQ2FsbG91dCBKU1ggZWxlbWVudHMgKi9cbmV4cG9ydCBjb25zdCByZW1hcmtDYWxsb3V0OiBQbHVnaW48W10sIFJvb3Q+ID0gKCkgPT4ge1xuICByZXR1cm4gdHJlZSA9PiB7XG4gICAgdmlzaXQoXG4gICAgICB0cmVlLFxuICAgICAgXCJjb250YWluZXJEaXJlY3RpdmVcIixcbiAgICAgIChub2RlOiBDb250YWluZXJEaXJlY3RpdmUsIGluZGV4LCBwYXJlbnQpID0+IHtcbiAgICAgICAgaWYgKCFjYWxsb3V0VHlwZXMuaGFzKG5vZGUubmFtZSkgfHwgaW5kZXggPT09IHVuZGVmaW5lZCB8fCAhcGFyZW50KVxuICAgICAgICAgIHJldHVyblxuXG4gICAgICAgIGNvbnN0IGxhYmVsUGFyYWdyYXBoID0gbm9kZS5jaGlsZHJlbi5maW5kKFxuICAgICAgICAgIChjaGlsZCk6IGNoaWxkIGlzIFBhcmFncmFwaCA9PlxuICAgICAgICAgICAgY2hpbGQudHlwZSA9PT0gXCJwYXJhZ3JhcGhcIiAmJiAhIWNoaWxkLmRhdGE/LmRpcmVjdGl2ZUxhYmVsLFxuICAgICAgICApXG5cbiAgICAgICAgY29uc3QgdGl0bGUgPSBsYWJlbFBhcmFncmFwaFxuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICB0eXBlOiBcIm1keEpzeEF0dHJpYnV0ZVwiIGFzIGNvbnN0LFxuICAgICAgICAgICAgICBuYW1lOiBcInRpdGxlXCIsXG4gICAgICAgICAgICAgIHZhbHVlOiBsYWJlbFBhcmFncmFwaC5jaGlsZHJlblxuICAgICAgICAgICAgICAgIC5tYXAoYyA9PiAoXCJ2YWx1ZVwiIGluIGMgPyBTdHJpbmcoYy52YWx1ZSkgOiBcIlwiKSlcbiAgICAgICAgICAgICAgICAuam9pbihcIlwiKSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA6IHVuZGVmaW5lZFxuXG4gICAgICAgIGNvbnN0IGJvZHkgPSBub2RlLmNoaWxkcmVuLmZpbHRlcihcbiAgICAgICAgICBjaGlsZCA9PiAhKGNoaWxkLnR5cGUgPT09IFwicGFyYWdyYXBoXCIgJiYgY2hpbGQuZGF0YT8uZGlyZWN0aXZlTGFiZWwpLFxuICAgICAgICApXG5cbiAgICAgICAgY29uc3QganN4Tm9kZSA9IHtcbiAgICAgICAgICB0eXBlOiBcIm1keEpzeEZsb3dFbGVtZW50XCIgYXMgY29uc3QsXG4gICAgICAgICAgbmFtZTogXCJDYWxsb3V0XCIsXG4gICAgICAgICAgYXR0cmlidXRlczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0eXBlOiBcIm1keEpzeEF0dHJpYnV0ZVwiIGFzIGNvbnN0LFxuICAgICAgICAgICAgICBuYW1lOiBcInR5cGVcIixcbiAgICAgICAgICAgICAgdmFsdWU6IG5vZGUubmFtZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAuLi4odGl0bGUgPyBbdGl0bGVdIDogW10pLFxuICAgICAgICAgIF0sXG4gICAgICAgICAgY2hpbGRyZW46IGJvZHksXG4gICAgICAgICAgZGF0YTogeyBfbWR4RXhwbGljaXRKc3g6IHRydWUgfSxcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgbWR4SnN4Rmxvd0VsZW1lbnQgaXMgbm90IGluIG1kYXN0IHR5cGVzXG4gICAgICAgIHBhcmVudC5jaGlsZHJlbi5zcGxpY2UoaW5kZXgsIDEsIGpzeE5vZGUpXG4gICAgICB9LFxuICAgIClcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { visit, SKIP } from "unist-util-visit";
|
|
2
|
+
/** Remark plugin that converts :::card directives into Card/Cards JSX elements */
|
|
3
|
+
export const remarkCard = () => {
|
|
4
|
+
return tree => {
|
|
5
|
+
visit(tree, "containerDirective", (node, index, parent) => {
|
|
6
|
+
if (node.name !== "card" || index === undefined || !parent)
|
|
7
|
+
return;
|
|
8
|
+
const title = node.attributes?.title ?? "";
|
|
9
|
+
const href = node.attributes?.href;
|
|
10
|
+
const icon = node.attributes?.icon;
|
|
11
|
+
const attributes = [
|
|
12
|
+
{ type: "mdxJsxAttribute", name: "title", value: title },
|
|
13
|
+
...(href
|
|
14
|
+
? [{ type: "mdxJsxAttribute", name: "href", value: href }]
|
|
15
|
+
: []),
|
|
16
|
+
...(icon
|
|
17
|
+
? [{ type: "mdxJsxAttribute", name: "icon", value: icon }]
|
|
18
|
+
: []),
|
|
19
|
+
];
|
|
20
|
+
const jsxNode = {
|
|
21
|
+
type: "mdxJsxFlowElement",
|
|
22
|
+
name: "Card",
|
|
23
|
+
attributes,
|
|
24
|
+
children: node.children,
|
|
25
|
+
data: { _mdxExplicitJsx: true },
|
|
26
|
+
};
|
|
27
|
+
// @ts-expect-error mdxJsxFlowElement is not in mdast types
|
|
28
|
+
parent.children[index] = jsxNode;
|
|
29
|
+
return SKIP;
|
|
30
|
+
});
|
|
31
|
+
const children = tree.children;
|
|
32
|
+
let i = 0;
|
|
33
|
+
while (i < children.length) {
|
|
34
|
+
const node = children[i];
|
|
35
|
+
// @ts-expect-error mdxJsxFlowElement is not in mdast types
|
|
36
|
+
if (node?.type !== "mdxJsxFlowElement" || node.name !== "Card") {
|
|
37
|
+
i++;
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
let j = i + 1;
|
|
41
|
+
while (j < children.length) {
|
|
42
|
+
const next = children[j];
|
|
43
|
+
// @ts-expect-error mdxJsxFlowElement is not in mdast types
|
|
44
|
+
if (next?.type !== "mdxJsxFlowElement" || next.name !== "Card")
|
|
45
|
+
break;
|
|
46
|
+
j++;
|
|
47
|
+
}
|
|
48
|
+
if (j - i < 2) {
|
|
49
|
+
i++;
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
const group = children.slice(i, j);
|
|
53
|
+
const wrapper = {
|
|
54
|
+
type: "mdxJsxFlowElement",
|
|
55
|
+
name: "Cards",
|
|
56
|
+
attributes: [],
|
|
57
|
+
children: group,
|
|
58
|
+
data: { _mdxExplicitJsx: true },
|
|
59
|
+
};
|
|
60
|
+
// @ts-expect-error mdxJsxFlowElement is not in mdast types
|
|
61
|
+
children.splice(i, j - i, wrapper);
|
|
62
|
+
i++;
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtYXJrLWNhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvcGx1Z2lucy9yZW1hcmstY2FyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBRTlDLGtGQUFrRjtBQUNsRixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQXFCLEdBQUcsRUFBRTtJQUMvQyxPQUFPLElBQUksQ0FBQyxFQUFFO1FBQ1osS0FBSyxDQUNILElBQUksRUFDSixvQkFBb0IsRUFDcEIsQ0FBQyxJQUF3QixFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUMxQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTSxJQUFJLEtBQUssS0FBSyxTQUFTLElBQUksQ0FBQyxNQUFNO2dCQUFFLE9BQU07WUFFbEUsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLElBQUksRUFBRSxDQUFBO1lBQzFDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFBO1lBQ2xDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFBO1lBRWxDLE1BQU0sVUFBVSxHQUFHO2dCQUNqQixFQUFFLElBQUksRUFBRSxpQkFBMEIsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7Z0JBQ2pFLEdBQUcsQ0FBQyxJQUFJO29CQUNOLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLGlCQUEwQixFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDO29CQUNuRSxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNQLEdBQUcsQ0FBQyxJQUFJO29CQUNOLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLGlCQUEwQixFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDO29CQUNuRSxDQUFDLENBQUMsRUFBRSxDQUFDO2FBQ1IsQ0FBQTtZQUVELE1BQU0sT0FBTyxHQUFHO2dCQUNkLElBQUksRUFBRSxtQkFBNEI7Z0JBQ2xDLElBQUksRUFBRSxNQUFNO2dCQUNaLFVBQVU7Z0JBQ1YsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO2dCQUN2QixJQUFJLEVBQUUsRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFO2FBQ2hDLENBQUE7WUFFRCwyREFBMkQ7WUFDM0QsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxPQUFPLENBQUE7WUFDaEMsT0FBTyxJQUFJLENBQUE7UUFDYixDQUFDLENBQ0YsQ0FBQTtRQUVELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUE7UUFDOUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQ1QsT0FBTyxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzNCLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUN4QiwyREFBMkQ7WUFDM0QsSUFBSSxJQUFJLEVBQUUsSUFBSSxLQUFLLG1CQUFtQixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTSxFQUFFLENBQUM7Z0JBQy9ELENBQUMsRUFBRSxDQUFBO2dCQUNILFNBQVE7WUFDVixDQUFDO1lBRUQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUNiLE9BQU8sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDM0IsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFBO2dCQUN4QiwyREFBMkQ7Z0JBQzNELElBQUksSUFBSSxFQUFFLElBQUksS0FBSyxtQkFBbUIsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLE1BQU07b0JBQUUsTUFBSztnQkFDckUsQ0FBQyxFQUFFLENBQUE7WUFDTCxDQUFDO1lBRUQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNkLENBQUMsRUFBRSxDQUFBO2dCQUNILFNBQVE7WUFDVixDQUFDO1lBRUQsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7WUFDbEMsTUFBTSxPQUFPLEdBQUc7Z0JBQ2QsSUFBSSxFQUFFLG1CQUE0QjtnQkFDbEMsSUFBSSxFQUFFLE9BQU87Z0JBQ2IsVUFBVSxFQUFFLEVBQUU7Z0JBQ2QsUUFBUSxFQUFFLEtBQUs7Z0JBQ2YsSUFBSSxFQUFFLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRTthQUNoQyxDQUFBO1lBRUQsMkRBQTJEO1lBQzNELFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUE7WUFDbEMsQ0FBQyxFQUFFLENBQUE7UUFDTCxDQUFDO0lBQ0gsQ0FBQyxDQUFBO0FBQ0gsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSb290IH0gZnJvbSBcIm1kYXN0XCJcbmltcG9ydCB0eXBlIHsgQ29udGFpbmVyRGlyZWN0aXZlIH0gZnJvbSBcIm1kYXN0LXV0aWwtZGlyZWN0aXZlXCJcbmltcG9ydCB0eXBlIHsgUGx1Z2luIH0gZnJvbSBcInVuaWZpZWRcIlxuaW1wb3J0IHsgdmlzaXQsIFNLSVAgfSBmcm9tIFwidW5pc3QtdXRpbC12aXNpdFwiXG5cbi8qKiBSZW1hcmsgcGx1Z2luIHRoYXQgY29udmVydHMgOjo6Y2FyZCBkaXJlY3RpdmVzIGludG8gQ2FyZC9DYXJkcyBKU1ggZWxlbWVudHMgKi9cbmV4cG9ydCBjb25zdCByZW1hcmtDYXJkOiBQbHVnaW48W10sIFJvb3Q+ID0gKCkgPT4ge1xuICByZXR1cm4gdHJlZSA9PiB7XG4gICAgdmlzaXQoXG4gICAgICB0cmVlLFxuICAgICAgXCJjb250YWluZXJEaXJlY3RpdmVcIixcbiAgICAgIChub2RlOiBDb250YWluZXJEaXJlY3RpdmUsIGluZGV4LCBwYXJlbnQpID0+IHtcbiAgICAgICAgaWYgKG5vZGUubmFtZSAhPT0gXCJjYXJkXCIgfHwgaW5kZXggPT09IHVuZGVmaW5lZCB8fCAhcGFyZW50KSByZXR1cm5cblxuICAgICAgICBjb25zdCB0aXRsZSA9IG5vZGUuYXR0cmlidXRlcz8udGl0bGUgPz8gXCJcIlxuICAgICAgICBjb25zdCBocmVmID0gbm9kZS5hdHRyaWJ1dGVzPy5ocmVmXG4gICAgICAgIGNvbnN0IGljb24gPSBub2RlLmF0dHJpYnV0ZXM/Lmljb25cblxuICAgICAgICBjb25zdCBhdHRyaWJ1dGVzID0gW1xuICAgICAgICAgIHsgdHlwZTogXCJtZHhKc3hBdHRyaWJ1dGVcIiBhcyBjb25zdCwgbmFtZTogXCJ0aXRsZVwiLCB2YWx1ZTogdGl0bGUgfSxcbiAgICAgICAgICAuLi4oaHJlZlxuICAgICAgICAgICAgPyBbeyB0eXBlOiBcIm1keEpzeEF0dHJpYnV0ZVwiIGFzIGNvbnN0LCBuYW1lOiBcImhyZWZcIiwgdmFsdWU6IGhyZWYgfV1cbiAgICAgICAgICAgIDogW10pLFxuICAgICAgICAgIC4uLihpY29uXG4gICAgICAgICAgICA/IFt7IHR5cGU6IFwibWR4SnN4QXR0cmlidXRlXCIgYXMgY29uc3QsIG5hbWU6IFwiaWNvblwiLCB2YWx1ZTogaWNvbiB9XVxuICAgICAgICAgICAgOiBbXSksXG4gICAgICAgIF1cblxuICAgICAgICBjb25zdCBqc3hOb2RlID0ge1xuICAgICAgICAgIHR5cGU6IFwibWR4SnN4Rmxvd0VsZW1lbnRcIiBhcyBjb25zdCxcbiAgICAgICAgICBuYW1lOiBcIkNhcmRcIixcbiAgICAgICAgICBhdHRyaWJ1dGVzLFxuICAgICAgICAgIGNoaWxkcmVuOiBub2RlLmNoaWxkcmVuLFxuICAgICAgICAgIGRhdGE6IHsgX21keEV4cGxpY2l0SnN4OiB0cnVlIH0sXG4gICAgICAgIH1cblxuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIG1keEpzeEZsb3dFbGVtZW50IGlzIG5vdCBpbiBtZGFzdCB0eXBlc1xuICAgICAgICBwYXJlbnQuY2hpbGRyZW5baW5kZXhdID0ganN4Tm9kZVxuICAgICAgICByZXR1cm4gU0tJUFxuICAgICAgfSxcbiAgICApXG5cbiAgICBjb25zdCBjaGlsZHJlbiA9IHRyZWUuY2hpbGRyZW5cbiAgICBsZXQgaSA9IDBcbiAgICB3aGlsZSAoaSA8IGNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgY29uc3Qgbm9kZSA9IGNoaWxkcmVuW2ldXG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIG1keEpzeEZsb3dFbGVtZW50IGlzIG5vdCBpbiBtZGFzdCB0eXBlc1xuICAgICAgaWYgKG5vZGU/LnR5cGUgIT09IFwibWR4SnN4Rmxvd0VsZW1lbnRcIiB8fCBub2RlLm5hbWUgIT09IFwiQ2FyZFwiKSB7XG4gICAgICAgIGkrK1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBsZXQgaiA9IGkgKyAxXG4gICAgICB3aGlsZSAoaiA8IGNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICBjb25zdCBuZXh0ID0gY2hpbGRyZW5bal1cbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBtZHhKc3hGbG93RWxlbWVudCBpcyBub3QgaW4gbWRhc3QgdHlwZXNcbiAgICAgICAgaWYgKG5leHQ/LnR5cGUgIT09IFwibWR4SnN4Rmxvd0VsZW1lbnRcIiB8fCBuZXh0Lm5hbWUgIT09IFwiQ2FyZFwiKSBicmVha1xuICAgICAgICBqKytcbiAgICAgIH1cblxuICAgICAgaWYgKGogLSBpIDwgMikge1xuICAgICAgICBpKytcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgY29uc3QgZ3JvdXAgPSBjaGlsZHJlbi5zbGljZShpLCBqKVxuICAgICAgY29uc3Qgd3JhcHBlciA9IHtcbiAgICAgICAgdHlwZTogXCJtZHhKc3hGbG93RWxlbWVudFwiIGFzIGNvbnN0LFxuICAgICAgICBuYW1lOiBcIkNhcmRzXCIsXG4gICAgICAgIGF0dHJpYnV0ZXM6IFtdLFxuICAgICAgICBjaGlsZHJlbjogZ3JvdXAsXG4gICAgICAgIGRhdGE6IHsgX21keEV4cGxpY2l0SnN4OiB0cnVlIH0sXG4gICAgICB9XG5cbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgbWR4SnN4Rmxvd0VsZW1lbnQgaXMgbm90IGluIG1kYXN0IHR5cGVzXG4gICAgICBjaGlsZHJlbi5zcGxpY2UoaSwgaiAtIGksIHdyYXBwZXIpXG4gICAgICBpKytcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
const TAB_PATTERN = /\btab="([^"]+)"/;
|
|
2
|
+
const SYNC_PATTERN = /\bsync="([^"]+)"/;
|
|
3
|
+
/** Remark plugin that groups consecutive code blocks with tab="name" meta into a CodeTabs component */
|
|
4
|
+
export const remarkCodeTabs = () => {
|
|
5
|
+
return tree => {
|
|
6
|
+
const children = tree.children;
|
|
7
|
+
let i = 0;
|
|
8
|
+
while (i < children.length) {
|
|
9
|
+
const node = children[i];
|
|
10
|
+
if (node?.type !== "code" || !node.meta) {
|
|
11
|
+
i++;
|
|
12
|
+
continue;
|
|
13
|
+
}
|
|
14
|
+
const firstMatch = TAB_PATTERN.exec(node.meta);
|
|
15
|
+
if (!firstMatch) {
|
|
16
|
+
i++;
|
|
17
|
+
continue;
|
|
18
|
+
}
|
|
19
|
+
const group = [
|
|
20
|
+
{ name: firstMatch[1], code: node },
|
|
21
|
+
];
|
|
22
|
+
let j = i + 1;
|
|
23
|
+
while (j < children.length) {
|
|
24
|
+
const next = children[j];
|
|
25
|
+
if (next?.type !== "code" || !next.meta)
|
|
26
|
+
break;
|
|
27
|
+
const nextMatch = TAB_PATTERN.exec(next.meta);
|
|
28
|
+
if (!nextMatch)
|
|
29
|
+
break;
|
|
30
|
+
group.push({ name: nextMatch[1], code: next });
|
|
31
|
+
j++;
|
|
32
|
+
}
|
|
33
|
+
if (group.length < 2) {
|
|
34
|
+
i++;
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
const firstMeta = group[0].code.meta;
|
|
38
|
+
const syncMatch = SYNC_PATTERN.exec(firstMeta);
|
|
39
|
+
for (const item of group) {
|
|
40
|
+
item.code.meta =
|
|
41
|
+
item.code
|
|
42
|
+
.meta.replace(TAB_PATTERN, "")
|
|
43
|
+
.replace(SYNC_PATTERN, "")
|
|
44
|
+
.trim() || null;
|
|
45
|
+
}
|
|
46
|
+
const codeTabsAttrs = [
|
|
47
|
+
{
|
|
48
|
+
type: "mdxJsxAttribute",
|
|
49
|
+
name: "tabs",
|
|
50
|
+
value: JSON.stringify(group.map(g => g.name)),
|
|
51
|
+
},
|
|
52
|
+
];
|
|
53
|
+
if (syncMatch) {
|
|
54
|
+
codeTabsAttrs.push({
|
|
55
|
+
type: "mdxJsxAttribute",
|
|
56
|
+
name: "sync",
|
|
57
|
+
value: syncMatch[1],
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
const jsxNode = {
|
|
61
|
+
type: "mdxJsxFlowElement",
|
|
62
|
+
name: "CodeTabs",
|
|
63
|
+
attributes: codeTabsAttrs,
|
|
64
|
+
children: group.map(g => g.code),
|
|
65
|
+
};
|
|
66
|
+
// @ts-expect-error mdxJsxFlowElement is not in mdast types
|
|
67
|
+
children.splice(i, group.length, jsxNode);
|
|
68
|
+
i++;
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
};
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtYXJrLWNvZGUtdGFicy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9wbHVnaW5zL3JlbWFyay1jb2RlLXRhYnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxXQUFXLEdBQUcsaUJBQWlCLENBQUE7QUFDckMsTUFBTSxZQUFZLEdBQUcsa0JBQWtCLENBQUE7QUFFdkMsdUdBQXVHO0FBQ3ZHLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBcUIsR0FBRyxFQUFFO0lBQ25ELE9BQU8sSUFBSSxDQUFDLEVBQUU7UUFDWixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFBO1FBQzlCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUVULE9BQU8sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMzQixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDeEIsSUFBSSxJQUFJLEVBQUUsSUFBSSxLQUFLLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDeEMsQ0FBQyxFQUFFLENBQUE7Z0JBQ0gsU0FBUTtZQUNWLENBQUM7WUFFRCxNQUFNLFVBQVUsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUM5QyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ2hCLENBQUMsRUFBRSxDQUFBO2dCQUNILFNBQVE7WUFDVixDQUFDO1lBRUQsTUFBTSxLQUFLLEdBQW1DO2dCQUM1QyxFQUFFLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTthQUNyQyxDQUFBO1lBRUQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUNiLE9BQU8sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDM0IsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFBO2dCQUN4QixJQUFJLElBQUksRUFBRSxJQUFJLEtBQUssTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUk7b0JBQUUsTUFBSztnQkFDOUMsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7Z0JBQzdDLElBQUksQ0FBQyxTQUFTO29CQUFFLE1BQUs7Z0JBQ3JCLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO2dCQUMvQyxDQUFDLEVBQUUsQ0FBQTtZQUNMLENBQUM7WUFFRCxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3JCLENBQUMsRUFBRSxDQUFBO2dCQUNILFNBQVE7WUFDVixDQUFDO1lBRUQsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBRSxDQUFDLElBQUksQ0FBQyxJQUFLLENBQUE7WUFDdEMsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtZQUU5QyxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUk7b0JBQ1osSUFBSSxDQUFDLElBQUk7eUJBQ04sSUFBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO3lCQUM5QixPQUFPLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQzt5QkFDekIsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFBO1lBQ3JCLENBQUM7WUFFRCxNQUFNLGFBQWEsR0FJYjtnQkFDSjtvQkFDRSxJQUFJLEVBQUUsaUJBQWlCO29CQUN2QixJQUFJLEVBQUUsTUFBTTtvQkFDWixLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUM5QzthQUNGLENBQUE7WUFDRCxJQUFJLFNBQVMsRUFBRSxDQUFDO2dCQUNkLGFBQWEsQ0FBQyxJQUFJLENBQUM7b0JBQ2pCLElBQUksRUFBRSxpQkFBaUI7b0JBQ3ZCLElBQUksRUFBRSxNQUFNO29CQUNaLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFFO2lCQUNyQixDQUFDLENBQUE7WUFDSixDQUFDO1lBRUQsTUFBTSxPQUFPLEdBQUc7Z0JBQ2QsSUFBSSxFQUFFLG1CQUFtQjtnQkFDekIsSUFBSSxFQUFFLFVBQVU7Z0JBQ2hCLFVBQVUsRUFBRSxhQUFhO2dCQUN6QixRQUFRLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7YUFDakMsQ0FBQTtZQUVELDJEQUEyRDtZQUMzRCxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFBO1lBQ3pDLENBQUMsRUFBRSxDQUFBO1FBQ0wsQ0FBQztJQUNILENBQUMsQ0FBQTtBQUNILENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ29kZSwgUm9vdCB9IGZyb20gXCJtZGFzdFwiXG5pbXBvcnQgdHlwZSB7IFBsdWdpbiB9IGZyb20gXCJ1bmlmaWVkXCJcblxuY29uc3QgVEFCX1BBVFRFUk4gPSAvXFxidGFiPVwiKFteXCJdKylcIi9cbmNvbnN0IFNZTkNfUEFUVEVSTiA9IC9cXGJzeW5jPVwiKFteXCJdKylcIi9cblxuLyoqIFJlbWFyayBwbHVnaW4gdGhhdCBncm91cHMgY29uc2VjdXRpdmUgY29kZSBibG9ja3Mgd2l0aCB0YWI9XCJuYW1lXCIgbWV0YSBpbnRvIGEgQ29kZVRhYnMgY29tcG9uZW50ICovXG5leHBvcnQgY29uc3QgcmVtYXJrQ29kZVRhYnM6IFBsdWdpbjxbXSwgUm9vdD4gPSAoKSA9PiB7XG4gIHJldHVybiB0cmVlID0+IHtcbiAgICBjb25zdCBjaGlsZHJlbiA9IHRyZWUuY2hpbGRyZW5cbiAgICBsZXQgaSA9IDBcblxuICAgIHdoaWxlIChpIDwgY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICBjb25zdCBub2RlID0gY2hpbGRyZW5baV1cbiAgICAgIGlmIChub2RlPy50eXBlICE9PSBcImNvZGVcIiB8fCAhbm9kZS5tZXRhKSB7XG4gICAgICAgIGkrK1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBjb25zdCBmaXJzdE1hdGNoID0gVEFCX1BBVFRFUk4uZXhlYyhub2RlLm1ldGEpXG4gICAgICBpZiAoIWZpcnN0TWF0Y2gpIHtcbiAgICAgICAgaSsrXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGdyb3VwOiB7IG5hbWU6IHN0cmluZzsgY29kZTogQ29kZSB9W10gPSBbXG4gICAgICAgIHsgbmFtZTogZmlyc3RNYXRjaFsxXSEsIGNvZGU6IG5vZGUgfSxcbiAgICAgIF1cblxuICAgICAgbGV0IGogPSBpICsgMVxuICAgICAgd2hpbGUgKGogPCBjaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgbmV4dCA9IGNoaWxkcmVuW2pdXG4gICAgICAgIGlmIChuZXh0Py50eXBlICE9PSBcImNvZGVcIiB8fCAhbmV4dC5tZXRhKSBicmVha1xuICAgICAgICBjb25zdCBuZXh0TWF0Y2ggPSBUQUJfUEFUVEVSTi5leGVjKG5leHQubWV0YSlcbiAgICAgICAgaWYgKCFuZXh0TWF0Y2gpIGJyZWFrXG4gICAgICAgIGdyb3VwLnB1c2goeyBuYW1lOiBuZXh0TWF0Y2hbMV0hLCBjb2RlOiBuZXh0IH0pXG4gICAgICAgIGorK1xuICAgICAgfVxuXG4gICAgICBpZiAoZ3JvdXAubGVuZ3RoIDwgMikge1xuICAgICAgICBpKytcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgY29uc3QgZmlyc3RNZXRhID0gZ3JvdXBbMF0hLmNvZGUubWV0YSFcbiAgICAgIGNvbnN0IHN5bmNNYXRjaCA9IFNZTkNfUEFUVEVSTi5leGVjKGZpcnN0TWV0YSlcblxuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGdyb3VwKSB7XG4gICAgICAgIGl0ZW0uY29kZS5tZXRhID1cbiAgICAgICAgICBpdGVtLmNvZGVcbiAgICAgICAgICAgIC5tZXRhIS5yZXBsYWNlKFRBQl9QQVRURVJOLCBcIlwiKVxuICAgICAgICAgICAgLnJlcGxhY2UoU1lOQ19QQVRURVJOLCBcIlwiKVxuICAgICAgICAgICAgLnRyaW0oKSB8fCBudWxsXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNvZGVUYWJzQXR0cnM6IHtcbiAgICAgICAgdHlwZTogXCJtZHhKc3hBdHRyaWJ1dGVcIlxuICAgICAgICBuYW1lOiBzdHJpbmdcbiAgICAgICAgdmFsdWU6IHN0cmluZ1xuICAgICAgfVtdID0gW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJtZHhKc3hBdHRyaWJ1dGVcIixcbiAgICAgICAgICBuYW1lOiBcInRhYnNcIixcbiAgICAgICAgICB2YWx1ZTogSlNPTi5zdHJpbmdpZnkoZ3JvdXAubWFwKGcgPT4gZy5uYW1lKSksXG4gICAgICAgIH0sXG4gICAgICBdXG4gICAgICBpZiAoc3luY01hdGNoKSB7XG4gICAgICAgIGNvZGVUYWJzQXR0cnMucHVzaCh7XG4gICAgICAgICAgdHlwZTogXCJtZHhKc3hBdHRyaWJ1dGVcIixcbiAgICAgICAgICBuYW1lOiBcInN5bmNcIixcbiAgICAgICAgICB2YWx1ZTogc3luY01hdGNoWzFdISxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgY29uc3QganN4Tm9kZSA9IHtcbiAgICAgICAgdHlwZTogXCJtZHhKc3hGbG93RWxlbWVudFwiLFxuICAgICAgICBuYW1lOiBcIkNvZGVUYWJzXCIsXG4gICAgICAgIGF0dHJpYnV0ZXM6IGNvZGVUYWJzQXR0cnMsXG4gICAgICAgIGNoaWxkcmVuOiBncm91cC5tYXAoZyA9PiBnLmNvZGUpLFxuICAgICAgfVxuXG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIG1keEpzeEZsb3dFbGVtZW50IGlzIG5vdCBpbiBtZGFzdCB0eXBlc1xuICAgICAgY2hpbGRyZW4uc3BsaWNlKGksIGdyb3VwLmxlbmd0aCwganN4Tm9kZSlcbiAgICAgIGkrK1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -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;
|