feat(lemon-ui): Add table support to LemonMarkdown (#37243)
Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
|
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 6.3 KiB After Width: | Height: | Size: 6.2 KiB |
|
Before Width: | Height: | Size: 6.0 KiB After Width: | Height: | Size: 5.9 KiB |
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.4 KiB |
|
After Width: | Height: | Size: 34 KiB |
|
After Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 43 KiB |
|
After Width: | Height: | Size: 43 KiB |
|
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 4.3 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 51 KiB |
|
After Width: | Height: | Size: 51 KiB |
|
Before Width: | Height: | Size: 250 KiB After Width: | Height: | Size: 250 KiB |
|
Before Width: | Height: | Size: 249 KiB After Width: | Height: | Size: 249 KiB |
@@ -108,9 +108,9 @@
|
||||
"@tailwindcss/cli": "4.0.11",
|
||||
"@testing-library/dom": ">=7.21.4",
|
||||
"@tiptap/core": "^3.0.7",
|
||||
"@tiptap/extension-heading": "^3.0.7",
|
||||
"@tiptap/extension-document": "^3.0.7",
|
||||
"@tiptap/extension-floating-menu": "^3.0.7",
|
||||
"@tiptap/extension-heading": "^3.0.7",
|
||||
"@tiptap/extension-list": "^3.0.7",
|
||||
"@tiptap/extension-table-of-contents": "^3.0.7",
|
||||
"@tiptap/extensions": "^3.0.7",
|
||||
@@ -212,6 +212,7 @@
|
||||
"react-toastify": "^8.2.0",
|
||||
"react-transition-group": "^4.4.5",
|
||||
"react-virtualized": "^9.22.5",
|
||||
"remark-gfm": "^1.0.0",
|
||||
"resize-observer-polyfill": "^1.5.1",
|
||||
"sass": "^1.26.2",
|
||||
"simple-statistics": "^7.8.8",
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
|
||||
pre {
|
||||
padding-top: 0.375rem;
|
||||
padding-bottom: 0.375rem;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -74,4 +74,61 @@
|
||||
img {
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
// Table styling - minimal approach
|
||||
table {
|
||||
margin: 1em 0;
|
||||
overflow: auto;
|
||||
border-spacing: 0;
|
||||
border-collapse: separate;
|
||||
border: 1px solid var(--border);
|
||||
border-radius: var(--radius);
|
||||
}
|
||||
|
||||
th,
|
||||
td {
|
||||
padding: 0.375rem 0.75rem;
|
||||
color: var(--default);
|
||||
text-align: left;
|
||||
vertical-align: top;
|
||||
border-right: 1px solid var(--border);
|
||||
border-bottom: 1px solid var(--border);
|
||||
|
||||
&:last-child {
|
||||
border-right: none;
|
||||
}
|
||||
}
|
||||
|
||||
th {
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
tbody tr:last-child td {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.LemonMarkdown__task {
|
||||
display: flex;
|
||||
gap: 0.5rem;
|
||||
align-items: center;
|
||||
list-style: none;
|
||||
|
||||
.LemonCheckbox {
|
||||
flex-shrink: 0;
|
||||
margin-top: 0.125rem; // Slight adjustment to align with text
|
||||
}
|
||||
}
|
||||
|
||||
.LemonMarkdown__task-content {
|
||||
flex: 1;
|
||||
min-width: 0; // Allow text to wrap
|
||||
// Remove edge paragraph margins in task items for better spacing
|
||||
p:first-child {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
p:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -45,3 +45,115 @@ LowKeyHeadings.args = {
|
||||
**Strong** and *emphasized* text.`,
|
||||
lowKeyHeadings: true,
|
||||
}
|
||||
|
||||
export const WithTables: Story = Template.bind({})
|
||||
WithTables.args = {
|
||||
children: `# Analytics dashboard
|
||||
|
||||
Here's a breakdown of our top traffic sources:
|
||||
|
||||
| Source | Unique users | Percentage |
|
||||
|--------|-------------|------------|
|
||||
| Direct | 362,389 | 45.2% |
|
||||
| Google | 122,910 | 15.3% |
|
||||
| posthog.com | 23,067 | 2.9% |
|
||||
| us.posthog.com | 21,593 | 2.7% |
|
||||
| eu.posthog.com | 10,723 | 1.3% |
|
||||
| LinkedIn | 5,255 | 0.7% |
|
||||
| GitHub | 4,019 | 0.5% |
|
||||
| Bing | 2,950 | 0.4% |
|
||||
| DuckDuckGo | 2,933 | 0.4% |
|
||||
|
||||
## Browser breakdown
|
||||
|
||||
| Browser | Users | Market share |
|
||||
|---------|-------|-------------|
|
||||
| Chrome | 450,123 | 72.1% |
|
||||
| Safari | 89,234 | 14.3% |
|
||||
| Firefox | 45,678 | 7.3% |
|
||||
| Edge | 25,432 | 4.1% |
|
||||
| Other | 13,890 | 2.2% |
|
||||
|
||||
*Data from the last 30 days*`,
|
||||
}
|
||||
|
||||
export const GitHubFlavoredMarkdown: Story = Template.bind({})
|
||||
GitHubFlavoredMarkdown.args = {
|
||||
children: `# GitHub-flavored Markdown features
|
||||
|
||||
## Strikethrough text
|
||||
This text is ~~deleted~~ and this text is **bold**.
|
||||
|
||||
You can also combine ~~**bold and deleted**~~ text.
|
||||
|
||||
## Task lists
|
||||
Here's our development progress:
|
||||
|
||||
- [x] Add remark-gfm plugin support
|
||||
- [x] Implement table styling
|
||||
- [x] Create Storybook stories
|
||||
- [ ] Add comprehensive documentation
|
||||
- [ ] Performance optimization
|
||||
- [ ] Mobile responsiveness testing
|
||||
|
||||
## Autolink literals
|
||||
Visit https://posthog.com for more information about our product.
|
||||
|
||||
You can also check out our GitHub repository at https://github.com/PostHog/posthog
|
||||
|
||||
Email us at hello@posthog.com for support.`,
|
||||
}
|
||||
|
||||
export const Strikethrough: Story = Template.bind({})
|
||||
Strikethrough.args = {
|
||||
children: `# Text Formatting
|
||||
|
||||
This is ~~incorrect~~ **correct** information.
|
||||
|
||||
~~The old way~~ → The new way
|
||||
|
||||
You can combine ~~strikethrough~~ with *emphasis* and **bold** text.`,
|
||||
}
|
||||
|
||||
export const TaskLists: Story = Template.bind({})
|
||||
TaskLists.args = {
|
||||
children: `# Project Todo List
|
||||
|
||||
## Sprint 1
|
||||
- [x] Setup project repository
|
||||
- [x] Configure CI/CD pipeline
|
||||
- [x] Write initial documentation
|
||||
- [ ] Implement core features
|
||||
- [ ] Add comprehensive tests
|
||||
|
||||
## Sprint 2
|
||||
- [ ] Performance optimization
|
||||
- [ ] Security audit
|
||||
- [ ] User acceptance testing
|
||||
- [x] Code review process
|
||||
|
||||
## Notes
|
||||
- Use [x] for completed tasks
|
||||
- Use [ ] for pending tasks
|
||||
- Tasks can be nested and combined with other markdown`,
|
||||
}
|
||||
|
||||
export const AutolinkLiterals: Story = Template.bind({})
|
||||
AutolinkLiterals.args = {
|
||||
children: `# Automatic Links
|
||||
|
||||
## Websites
|
||||
Visit https://posthog.com to learn more about our platform.
|
||||
|
||||
Check out our documentation at https://posthog.com/docs
|
||||
|
||||
## Email Addresses
|
||||
Contact us at hello@posthog.com for general inquiries.
|
||||
|
||||
For technical support: support@posthog.com
|
||||
|
||||
## Mixed Content
|
||||
Our GitHub repository (https://github.com/PostHog/posthog) contains the full source code.
|
||||
|
||||
For questions, email team@posthog.com or visit https://posthog.com/questions`,
|
||||
}
|
||||
|
||||
@@ -1,10 +1,13 @@
|
||||
import './LemonMarkdown.scss'
|
||||
|
||||
import clsx from 'clsx'
|
||||
import { props } from 'kea'
|
||||
import React, { memo, useMemo } from 'react'
|
||||
import ReactMarkdown from 'react-markdown'
|
||||
import remarkGfm from 'remark-gfm'
|
||||
|
||||
import { CodeSnippet, Language } from 'lib/components/CodeSnippet'
|
||||
import { LemonCheckbox } from 'lib/lemon-ui/LemonCheckbox'
|
||||
|
||||
import { Link } from '../Link'
|
||||
|
||||
@@ -45,6 +48,19 @@ const LemonMarkdownRenderer = memo(function LemonMarkdownRenderer({
|
||||
{value}
|
||||
</CodeSnippet>
|
||||
),
|
||||
listItem: ({ checked, children }: any): JSX.Element => {
|
||||
// Handle task list items with LemonCheckbox
|
||||
if (checked != null) {
|
||||
return (
|
||||
<li className="LemonMarkdown__task">
|
||||
<LemonCheckbox checked={checked} disabledReason="Read-only for display" size="small" />
|
||||
<span className="LemonMarkdown__task-content">{children}</span>
|
||||
</li>
|
||||
)
|
||||
}
|
||||
// Regular list item
|
||||
return <li {...props}>{children}</li>
|
||||
},
|
||||
...(lowKeyHeadings
|
||||
? {
|
||||
heading: 'strong',
|
||||
@@ -59,6 +75,7 @@ const LemonMarkdownRenderer = memo(function LemonMarkdownRenderer({
|
||||
<ReactMarkdown
|
||||
renderers={renderers}
|
||||
disallowedTypes={['html']} // Don't want to deal with the security considerations of HTML
|
||||
plugins={[remarkGfm]}
|
||||
>
|
||||
{children}
|
||||
</ReactMarkdown>
|
||||
|
||||
@@ -3,7 +3,7 @@ import './Link.scss'
|
||||
import { router } from 'kea-router'
|
||||
import React, { useContext } from 'react'
|
||||
|
||||
import { IconExternal, IconOpenSidebar } from '@posthog/icons'
|
||||
import { IconExternal, IconOpenSidebar, IconSend } from '@posthog/icons'
|
||||
|
||||
import { ButtonPrimitiveProps, buttonPrimitiveVariants } from 'lib/ui/Button/ButtonPrimitives'
|
||||
import { isExternalLink } from 'lib/utils'
|
||||
@@ -218,6 +218,8 @@ export const Link: React.FC<LinkProps & React.RefAttributes<HTMLElement>> = Reac
|
||||
{targetBlankIcon &&
|
||||
(shouldOpenInDocsPanel && sidePanelStateLogic.isMounted() ? (
|
||||
<IconOpenSidebar />
|
||||
) : href?.startsWith('mailto:') ? (
|
||||
<IconSend />
|
||||
) : target === '_blank' ? (
|
||||
<IconExternal className={buttonProps ? 'size-3' : ''} />
|
||||
) : null)}
|
||||
|
||||
163
pnpm-lock.yaml
generated
@@ -976,6 +976,9 @@ importers:
|
||||
react-virtualized:
|
||||
specifier: ^9.22.5
|
||||
version: 9.22.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
|
||||
remark-gfm:
|
||||
specifier: ^1.0.0
|
||||
version: 1.0.0
|
||||
resize-observer-polyfill:
|
||||
specifier: ^1.5.1
|
||||
version: 1.5.1
|
||||
@@ -9813,6 +9816,9 @@ packages:
|
||||
caseless@0.12.0:
|
||||
resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==}
|
||||
|
||||
ccount@1.1.0:
|
||||
resolution: {integrity: sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==}
|
||||
|
||||
chalk-template@1.1.0:
|
||||
resolution: {integrity: sha512-T2VJbcDuZQ0Tb2EWwSotMPJjgpy1/tGee1BTpUNsGZ/qgNjV2t7Mvu+d4600U564nbLesN1x2dPL+xii174Ekg==}
|
||||
engines: {node: '>=14.16'}
|
||||
@@ -13547,6 +13553,9 @@ packages:
|
||||
long@5.2.4:
|
||||
resolution: {integrity: sha512-qtzLbJE8hq7VabR3mISmVGtoXP8KGc2Z/AT8OuqlYD7JTR3oqrgwdjnk07wpj1twXxYmgDXgoKVWUG/fReSzHg==}
|
||||
|
||||
longest-streak@2.0.4:
|
||||
resolution: {integrity: sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==}
|
||||
|
||||
loose-envify@1.4.0:
|
||||
resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
|
||||
hasBin: true
|
||||
@@ -13638,6 +13647,9 @@ packages:
|
||||
resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==}
|
||||
hasBin: true
|
||||
|
||||
markdown-table@2.0.0:
|
||||
resolution: {integrity: sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==}
|
||||
|
||||
markdown-to-jsx@7.3.2:
|
||||
resolution: {integrity: sha512-B+28F5ucp83aQm+OxNrPkS8z0tMKaeHiy0lHJs3LqCyDQFtWuenaIrkaVTgAm1pf1AU85LXltva86hlaT17i8Q==}
|
||||
engines: {node: '>= 10'}
|
||||
@@ -13675,9 +13687,30 @@ packages:
|
||||
mdast-util-definitions@4.0.0:
|
||||
resolution: {integrity: sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==}
|
||||
|
||||
mdast-util-find-and-replace@1.1.1:
|
||||
resolution: {integrity: sha512-9cKl33Y21lyckGzpSmEQnIDjEfeeWelN5s1kUW1LwdB0Fkuq2u+4GdqcGEygYxJE8GVqCl0741bYXHgamfWAZA==}
|
||||
|
||||
mdast-util-from-markdown@0.8.5:
|
||||
resolution: {integrity: sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==}
|
||||
|
||||
mdast-util-gfm-autolink-literal@0.1.3:
|
||||
resolution: {integrity: sha512-GjmLjWrXg1wqMIO9+ZsRik/s7PLwTaeCHVB7vRxUwLntZc8mzmTsLVr6HW1yLokcnhfURsn5zmSVdi3/xWWu1A==}
|
||||
|
||||
mdast-util-gfm-strikethrough@0.2.3:
|
||||
resolution: {integrity: sha512-5OQLXpt6qdbttcDG/UxYY7Yjj3e8P7X16LzvpX8pIQPYJ/C2Z1qFGMmcw+1PZMUM3Z8wt8NRfYTvCni93mgsgA==}
|
||||
|
||||
mdast-util-gfm-table@0.1.6:
|
||||
resolution: {integrity: sha512-j4yDxQ66AJSBwGkbpFEp9uG/LS1tZV3P33fN1gkyRB2LoRL+RR3f76m0HPHaby6F4Z5xr9Fv1URmATlRRUIpRQ==}
|
||||
|
||||
mdast-util-gfm-task-list-item@0.1.6:
|
||||
resolution: {integrity: sha512-/d51FFIfPsSmCIRNp7E6pozM9z1GYPIkSy1urQ8s/o4TC22BZ7DqfHFWiqBD23bc7J3vV1Fc9O4QIHBlfuit8A==}
|
||||
|
||||
mdast-util-gfm@0.1.2:
|
||||
resolution: {integrity: sha512-NNkhDx/qYcuOWB7xHUGWZYVXvjPFFd6afg6/e2g+SV4r9q5XUcCbV4Wfa3DLYIiD+xAEZc6K4MGaE/m0KDcPwQ==}
|
||||
|
||||
mdast-util-to-markdown@0.6.5:
|
||||
resolution: {integrity: sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==}
|
||||
|
||||
mdast-util-to-string@1.1.0:
|
||||
resolution: {integrity: sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==}
|
||||
|
||||
@@ -13729,6 +13762,24 @@ packages:
|
||||
mhchemparser@4.2.1:
|
||||
resolution: {integrity: sha512-kYmyrCirqJf3zZ9t/0wGgRZ4/ZJw//VwaRVGA75C4nhE60vtnIzhl9J9ndkX/h6hxSN7pjg/cE0VxbnNM+bnDQ==}
|
||||
|
||||
micromark-extension-gfm-autolink-literal@0.5.7:
|
||||
resolution: {integrity: sha512-ePiDGH0/lhcngCe8FtH4ARFoxKTUelMp4L7Gg2pujYD5CSMb9PbblnyL+AAMud/SNMyusbS2XDSiPIRcQoNFAw==}
|
||||
|
||||
micromark-extension-gfm-strikethrough@0.6.5:
|
||||
resolution: {integrity: sha512-PpOKlgokpQRwUesRwWEp+fHjGGkZEejj83k9gU5iXCbDG+XBA92BqnRKYJdfqfkrRcZRgGuPuXb7DaK/DmxOhw==}
|
||||
|
||||
micromark-extension-gfm-table@0.4.3:
|
||||
resolution: {integrity: sha512-hVGvESPq0fk6ALWtomcwmgLvH8ZSVpcPjzi0AjPclB9FsVRgMtGZkUcpE0zgjOCFAznKepF4z3hX8z6e3HODdA==}
|
||||
|
||||
micromark-extension-gfm-tagfilter@0.3.0:
|
||||
resolution: {integrity: sha512-9GU0xBatryXifL//FJH+tAZ6i240xQuFrSL7mYi8f4oZSbc+NvXjkrHemeYP0+L4ZUT+Ptz3b95zhUZnMtoi/Q==}
|
||||
|
||||
micromark-extension-gfm-task-list-item@0.3.3:
|
||||
resolution: {integrity: sha512-0zvM5iSLKrc/NQl84pZSjGo66aTGd57C1idmlWmE87lkMcXrTxg1uXa/nXomxJytoje9trP0NDLvw4bZ/Z/XCQ==}
|
||||
|
||||
micromark-extension-gfm@0.3.3:
|
||||
resolution: {integrity: sha512-oVN4zv5/tAIA+l3GbMi7lWeYpJ14oQyJ3uEim20ktYFAcfX1x3LNlFGGlmrZHt7u9YlKExmyJdDGaTt6cMSR/A==}
|
||||
|
||||
micromark@2.11.4:
|
||||
resolution: {integrity: sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==}
|
||||
|
||||
@@ -15973,6 +16024,9 @@ packages:
|
||||
remark-external-links@8.0.0:
|
||||
resolution: {integrity: sha512-5vPSX0kHoSsqtdftSHhIYofVINC8qmp0nctkeU9YoJwV3YfiBRiI6cbFRJ0oI/1F9xS+bopXG0m2KS8VFscuKA==}
|
||||
|
||||
remark-gfm@1.0.0:
|
||||
resolution: {integrity: sha512-KfexHJCiqvrdBZVbQ6RopMZGwaXz6wFJEfByIuEwGf0arvITHjiKKZ1dpXujjH9KZdm1//XJQwgfnJ3lmXaDPA==}
|
||||
|
||||
remark-parse@9.0.0:
|
||||
resolution: {integrity: sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==}
|
||||
|
||||
@@ -15982,6 +16036,10 @@ packages:
|
||||
renderkid@3.0.0:
|
||||
resolution: {integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==}
|
||||
|
||||
repeat-string@1.6.1:
|
||||
resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==}
|
||||
engines: {node: '>=0.10'}
|
||||
|
||||
request-progress@3.0.0:
|
||||
resolution: {integrity: sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==}
|
||||
|
||||
@@ -18023,6 +18081,9 @@ packages:
|
||||
react:
|
||||
optional: true
|
||||
|
||||
zwitch@1.0.5:
|
||||
resolution: {integrity: sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==}
|
||||
|
||||
zxcvbn@4.4.2:
|
||||
resolution: {integrity: sha512-Bq0B+ixT/DMyG8kgX2xWcI5jUvCwqrMxSFam7m0lAf78nf04hv6lNCsyLYdyYTrCVMqNDY/206K7eExYCeSyUQ==}
|
||||
|
||||
@@ -28733,6 +28794,8 @@ snapshots:
|
||||
|
||||
caseless@0.12.0: {}
|
||||
|
||||
ccount@1.1.0: {}
|
||||
|
||||
chalk-template@1.1.0:
|
||||
dependencies:
|
||||
chalk: 5.4.1
|
||||
@@ -33367,6 +33430,8 @@ snapshots:
|
||||
|
||||
long@5.2.4: {}
|
||||
|
||||
longest-streak@2.0.4: {}
|
||||
|
||||
loose-envify@1.4.0:
|
||||
dependencies:
|
||||
js-tokens: 4.0.0
|
||||
@@ -33506,6 +33571,10 @@ snapshots:
|
||||
punycode.js: 2.3.1
|
||||
uc.micro: 2.1.0
|
||||
|
||||
markdown-table@2.0.0:
|
||||
dependencies:
|
||||
repeat-string: 1.6.1
|
||||
|
||||
markdown-to-jsx@7.3.2(react@18.2.0):
|
||||
dependencies:
|
||||
react: 18.2.0
|
||||
@@ -33548,6 +33617,12 @@ snapshots:
|
||||
dependencies:
|
||||
unist-util-visit: 2.0.3
|
||||
|
||||
mdast-util-find-and-replace@1.1.1:
|
||||
dependencies:
|
||||
escape-string-regexp: 4.0.0
|
||||
unist-util-is: 4.1.0
|
||||
unist-util-visit-parents: 3.1.1
|
||||
|
||||
mdast-util-from-markdown@0.8.5:
|
||||
dependencies:
|
||||
'@types/mdast': 3.0.10
|
||||
@@ -33558,6 +33633,46 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
mdast-util-gfm-autolink-literal@0.1.3:
|
||||
dependencies:
|
||||
ccount: 1.1.0
|
||||
mdast-util-find-and-replace: 1.1.1
|
||||
micromark: 2.11.4
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
mdast-util-gfm-strikethrough@0.2.3:
|
||||
dependencies:
|
||||
mdast-util-to-markdown: 0.6.5
|
||||
|
||||
mdast-util-gfm-table@0.1.6:
|
||||
dependencies:
|
||||
markdown-table: 2.0.0
|
||||
mdast-util-to-markdown: 0.6.5
|
||||
|
||||
mdast-util-gfm-task-list-item@0.1.6:
|
||||
dependencies:
|
||||
mdast-util-to-markdown: 0.6.5
|
||||
|
||||
mdast-util-gfm@0.1.2:
|
||||
dependencies:
|
||||
mdast-util-gfm-autolink-literal: 0.1.3
|
||||
mdast-util-gfm-strikethrough: 0.2.3
|
||||
mdast-util-gfm-table: 0.1.6
|
||||
mdast-util-gfm-task-list-item: 0.1.6
|
||||
mdast-util-to-markdown: 0.6.5
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
mdast-util-to-markdown@0.6.5:
|
||||
dependencies:
|
||||
'@types/unist': 2.0.6
|
||||
longest-streak: 2.0.4
|
||||
mdast-util-to-string: 2.0.0
|
||||
parse-entities: 2.0.0
|
||||
repeat-string: 1.6.1
|
||||
zwitch: 1.0.5
|
||||
|
||||
mdast-util-to-string@1.1.0: {}
|
||||
|
||||
mdast-util-to-string@2.0.0: {}
|
||||
@@ -33605,6 +33720,43 @@ snapshots:
|
||||
|
||||
mhchemparser@4.2.1: {}
|
||||
|
||||
micromark-extension-gfm-autolink-literal@0.5.7:
|
||||
dependencies:
|
||||
micromark: 2.11.4
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
micromark-extension-gfm-strikethrough@0.6.5:
|
||||
dependencies:
|
||||
micromark: 2.11.4
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
micromark-extension-gfm-table@0.4.3:
|
||||
dependencies:
|
||||
micromark: 2.11.4
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
micromark-extension-gfm-tagfilter@0.3.0: {}
|
||||
|
||||
micromark-extension-gfm-task-list-item@0.3.3:
|
||||
dependencies:
|
||||
micromark: 2.11.4
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
micromark-extension-gfm@0.3.3:
|
||||
dependencies:
|
||||
micromark: 2.11.4
|
||||
micromark-extension-gfm-autolink-literal: 0.5.7
|
||||
micromark-extension-gfm-strikethrough: 0.6.5
|
||||
micromark-extension-gfm-table: 0.4.3
|
||||
micromark-extension-gfm-tagfilter: 0.3.0
|
||||
micromark-extension-gfm-task-list-item: 0.3.3
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
micromark@2.11.4:
|
||||
dependencies:
|
||||
debug: 4.4.0(supports-color@8.1.1)
|
||||
@@ -36411,6 +36563,13 @@ snapshots:
|
||||
space-separated-tokens: 1.1.5
|
||||
unist-util-visit: 2.0.3
|
||||
|
||||
remark-gfm@1.0.0:
|
||||
dependencies:
|
||||
mdast-util-gfm: 0.1.2
|
||||
micromark-extension-gfm: 0.3.3
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
remark-parse@9.0.0:
|
||||
dependencies:
|
||||
mdast-util-from-markdown: 0.8.5
|
||||
@@ -36431,6 +36590,8 @@ snapshots:
|
||||
lodash: 4.17.21
|
||||
strip-ansi: 6.0.1
|
||||
|
||||
repeat-string@1.6.1: {}
|
||||
|
||||
request-progress@3.0.0:
|
||||
dependencies:
|
||||
throttleit: 1.0.0
|
||||
@@ -38708,4 +38869,6 @@ snapshots:
|
||||
'@types/react': 17.0.52
|
||||
react: 18.2.0
|
||||
|
||||
zwitch@1.0.5: {}
|
||||
|
||||
zxcvbn@4.4.2: {}
|
||||
|
||||