From 049b42502ad92b5dc19635a8272987d6dcfbdb2f Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Wed, 4 Feb 2026 03:32:19 +0000 Subject: [PATCH 1/5] feat(note-block): add single newline support in preview Add remark-breaks plugin to the note block markdown renderer to convert single newlines into line breaks. This fixes the issue where users had to use double newlines (\n\n) to create visible line breaks in the note block preview. Co-authored-by: Emir Karabeg --- .../w/[workflowId]/components/note-block/note-block.tsx | 3 ++- apps/sim/package.json | 1 + bun.lock | 5 +++++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/note-block/note-block.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/note-block/note-block.tsx index c5dd3070e1a..4bfa5776e25 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/note-block/note-block.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/note-block/note-block.tsx @@ -1,6 +1,7 @@ import { memo, useCallback, useMemo } from 'react' import ReactMarkdown from 'react-markdown' import type { NodeProps } from 'reactflow' +import remarkBreaks from 'remark-breaks' import remarkGfm from 'remark-gfm' import { cn } from '@/lib/core/utils/cn' import { BLOCK_DIMENSIONS } from '@/lib/workflows/blocks/block-dimensions' @@ -305,7 +306,7 @@ function getEmbedInfo(url: string): EmbedInfo | null { const NoteMarkdown = memo(function NoteMarkdown({ content }: { content: string }) { return ( (

diff --git a/apps/sim/package.json b/apps/sim/package.json index 122dc84d021..39681cef0ca 100644 --- a/apps/sim/package.json +++ b/apps/sim/package.json @@ -148,6 +148,7 @@ "redis": "5.10.0", "rehype-autolink-headings": "^7.1.0", "rehype-slug": "^6.0.0", + "remark-breaks": "4.0.0", "remark-gfm": "4.0.1", "resend": "^4.1.2", "rss-parser": "3.13.0", diff --git a/bun.lock b/bun.lock index 372d3e8298e..b90bffd658d 100644 --- a/bun.lock +++ b/bun.lock @@ -179,6 +179,7 @@ "redis": "5.10.0", "rehype-autolink-headings": "^7.1.0", "rehype-slug": "^6.0.0", + "remark-breaks": "4.0.0", "remark-gfm": "4.0.1", "resend": "^4.1.2", "rss-parser": "3.13.0", @@ -2615,6 +2616,8 @@ "mdast-util-mdxjs-esm": ["mdast-util-mdxjs-esm@2.0.1", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg=="], + "mdast-util-newline-to-break": ["mdast-util-newline-to-break@2.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-find-and-replace": "^3.0.0" } }, "sha512-MbgeFca0hLYIEx/2zGsszCSEJJ1JSCdiY5xQxRcLDDGa8EPvlLPupJ4DSajbMPAnC0je8jfb9TiUATnxxrHUog=="], + "mdast-util-phrasing": ["mdast-util-phrasing@4.1.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "unist-util-is": "^6.0.0" } }, "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w=="], "mdast-util-to-hast": ["mdast-util-to-hast@13.2.1", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "@ungap/structured-clone": "^1.0.0", "devlop": "^1.0.0", "micromark-util-sanitize-uri": "^2.0.0", "trim-lines": "^3.0.0", "unist-util-position": "^5.0.0", "unist-util-visit": "^5.0.0", "vfile": "^6.0.0" } }, "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA=="], @@ -3111,6 +3114,8 @@ "remark": ["remark@15.0.1", "", { "dependencies": { "@types/mdast": "^4.0.0", "remark-parse": "^11.0.0", "remark-stringify": "^11.0.0", "unified": "^11.0.0" } }, "sha512-Eht5w30ruCXgFmxVUSlNWQ9iiimq07URKeFS3hNc8cUWy1llX4KDWfyEDZRycMc+znsN9Ux5/tJ/BFdgdOwA3A=="], + "remark-breaks": ["remark-breaks@4.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-newline-to-break": "^2.0.0", "unified": "^11.0.0" } }, "sha512-IjEjJOkH4FuJvHZVIW0QCDWxcG96kCq7An/KVH2NfJe6rKZU2AsHeB3OEjPNRxi4QC34Xdx7I2KGYn6IpT7gxQ=="], + "remark-gfm": ["remark-gfm@4.0.1", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-gfm": "^3.0.0", "micromark-extension-gfm": "^3.0.0", "remark-parse": "^11.0.0", "remark-stringify": "^11.0.0", "unified": "^11.0.0" } }, "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg=="], "remark-mdx": ["remark-mdx@3.1.1", "", { "dependencies": { "mdast-util-mdx": "^3.0.0", "micromark-extension-mdxjs": "^3.0.0" } }, "sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg=="], From 7898f0381474a2b3f2fb473b1a1c4f1ff70638a9 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Wed, 4 Feb 2026 03:56:35 +0000 Subject: [PATCH 2/5] Revert "feat(note-block): add single newline support in preview" This reverts commit 049b42502ad92b5dc19635a8272987d6dcfbdb2f. --- .../w/[workflowId]/components/note-block/note-block.tsx | 3 +-- apps/sim/package.json | 1 - bun.lock | 5 ----- 3 files changed, 1 insertion(+), 8 deletions(-) diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/note-block/note-block.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/note-block/note-block.tsx index 4bfa5776e25..c5dd3070e1a 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/note-block/note-block.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/note-block/note-block.tsx @@ -1,7 +1,6 @@ import { memo, useCallback, useMemo } from 'react' import ReactMarkdown from 'react-markdown' import type { NodeProps } from 'reactflow' -import remarkBreaks from 'remark-breaks' import remarkGfm from 'remark-gfm' import { cn } from '@/lib/core/utils/cn' import { BLOCK_DIMENSIONS } from '@/lib/workflows/blocks/block-dimensions' @@ -306,7 +305,7 @@ function getEmbedInfo(url: string): EmbedInfo | null { const NoteMarkdown = memo(function NoteMarkdown({ content }: { content: string }) { return ( (

diff --git a/apps/sim/package.json b/apps/sim/package.json index 39681cef0ca..122dc84d021 100644 --- a/apps/sim/package.json +++ b/apps/sim/package.json @@ -148,7 +148,6 @@ "redis": "5.10.0", "rehype-autolink-headings": "^7.1.0", "rehype-slug": "^6.0.0", - "remark-breaks": "4.0.0", "remark-gfm": "4.0.1", "resend": "^4.1.2", "rss-parser": "3.13.0", diff --git a/bun.lock b/bun.lock index b90bffd658d..372d3e8298e 100644 --- a/bun.lock +++ b/bun.lock @@ -179,7 +179,6 @@ "redis": "5.10.0", "rehype-autolink-headings": "^7.1.0", "rehype-slug": "^6.0.0", - "remark-breaks": "4.0.0", "remark-gfm": "4.0.1", "resend": "^4.1.2", "rss-parser": "3.13.0", @@ -2616,8 +2615,6 @@ "mdast-util-mdxjs-esm": ["mdast-util-mdxjs-esm@2.0.1", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg=="], - "mdast-util-newline-to-break": ["mdast-util-newline-to-break@2.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-find-and-replace": "^3.0.0" } }, "sha512-MbgeFca0hLYIEx/2zGsszCSEJJ1JSCdiY5xQxRcLDDGa8EPvlLPupJ4DSajbMPAnC0je8jfb9TiUATnxxrHUog=="], - "mdast-util-phrasing": ["mdast-util-phrasing@4.1.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "unist-util-is": "^6.0.0" } }, "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w=="], "mdast-util-to-hast": ["mdast-util-to-hast@13.2.1", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "@ungap/structured-clone": "^1.0.0", "devlop": "^1.0.0", "micromark-util-sanitize-uri": "^2.0.0", "trim-lines": "^3.0.0", "unist-util-position": "^5.0.0", "unist-util-visit": "^5.0.0", "vfile": "^6.0.0" } }, "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA=="], @@ -3114,8 +3111,6 @@ "remark": ["remark@15.0.1", "", { "dependencies": { "@types/mdast": "^4.0.0", "remark-parse": "^11.0.0", "remark-stringify": "^11.0.0", "unified": "^11.0.0" } }, "sha512-Eht5w30ruCXgFmxVUSlNWQ9iiimq07URKeFS3hNc8cUWy1llX4KDWfyEDZRycMc+znsN9Ux5/tJ/BFdgdOwA3A=="], - "remark-breaks": ["remark-breaks@4.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-newline-to-break": "^2.0.0", "unified": "^11.0.0" } }, "sha512-IjEjJOkH4FuJvHZVIW0QCDWxcG96kCq7An/KVH2NfJe6rKZU2AsHeB3OEjPNRxi4QC34Xdx7I2KGYn6IpT7gxQ=="], - "remark-gfm": ["remark-gfm@4.0.1", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-gfm": "^3.0.0", "micromark-extension-gfm": "^3.0.0", "remark-parse": "^11.0.0", "remark-stringify": "^11.0.0", "unified": "^11.0.0" } }, "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg=="], "remark-mdx": ["remark-mdx@3.1.1", "", { "dependencies": { "mdast-util-mdx": "^3.0.0", "micromark-extension-mdxjs": "^3.0.0" } }, "sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg=="], From 03dd2985fe38661595e6c736da4f947a4d05b9ee Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Wed, 4 Feb 2026 03:58:08 +0000 Subject: [PATCH 3/5] feat(note-block): add single newline support in preview Add a preprocessor function that converts single newlines to markdown hard breaks (two trailing spaces + newline) before rendering. This ensures that when users press Enter in the note block editor, the line break shows up in the preview. The function preserves: - Double newlines (paragraph breaks) - Code block formatting (fenced and inline) Co-authored-by: Emir Karabeg --- .../components/note-block/note-block.tsx | 35 ++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/note-block/note-block.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/note-block/note-block.tsx index c5dd3070e1a..4394ccc9f4e 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/note-block/note-block.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/note-block/note-block.tsx @@ -299,10 +299,43 @@ function getEmbedInfo(url: string): EmbedInfo | null { return null } +/** + * Converts single newlines to markdown hard breaks (two trailing spaces + newline). + * This ensures that pressing Enter in the editor creates a visible line break in the preview. + * Preserves double newlines (paragraph breaks) and code block formatting. + */ +function convertNewlinesToBreaks(text: string): string { + // Split by code blocks to preserve their formatting + const parts = text.split(/(```[\s\S]*?```|`[^`\n]+`)/g) + + return parts + .map((part, index) => { + // Odd indices are code blocks - don't modify them + if (index % 2 === 1) return part + + // For regular text, convert single newlines to hard breaks + // First, temporarily replace double newlines with a placeholder + const placeholder = '\u0000DOUBLE_NEWLINE\u0000' + let processed = part.replace(/\n\n/g, placeholder) + + // Add two spaces before single newlines (markdown hard break syntax) + // But only if there aren't already two spaces before the newline + processed = processed.replace(/([^\s\n])(\n)(?!\n)/g, '$1 $2') + + // Restore double newlines + processed = processed.replace(new RegExp(placeholder, 'g'), '\n\n') + + return processed + }) + .join('') +} + /** * Compact markdown renderer for note blocks with tight spacing */ const NoteMarkdown = memo(function NoteMarkdown({ content }: { content: string }) { + const processedContent = convertNewlinesToBreaks(content) + return ( - {content} + {processedContent} ) }) From 30dcd984672f569158334a0916e6ccc25c080f03 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Wed, 4 Feb 2026 03:59:34 +0000 Subject: [PATCH 4/5] refactor(note-block): simplify comments Co-authored-by: Emir Karabeg --- .../components/note-block/note-block.tsx | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/note-block/note-block.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/note-block/note-block.tsx index 4394ccc9f4e..614b4848f2e 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/note-block/note-block.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/note-block/note-block.tsx @@ -300,29 +300,18 @@ function getEmbedInfo(url: string): EmbedInfo | null { } /** - * Converts single newlines to markdown hard breaks (two trailing spaces + newline). - * This ensures that pressing Enter in the editor creates a visible line break in the preview. - * Preserves double newlines (paragraph breaks) and code block formatting. + * Convert single newlines to markdown hard breaks, preserving code blocks */ function convertNewlinesToBreaks(text: string): string { - // Split by code blocks to preserve their formatting const parts = text.split(/(```[\s\S]*?```|`[^`\n]+`)/g) return parts .map((part, index) => { - // Odd indices are code blocks - don't modify them if (index % 2 === 1) return part - // For regular text, convert single newlines to hard breaks - // First, temporarily replace double newlines with a placeholder const placeholder = '\u0000DOUBLE_NEWLINE\u0000' let processed = part.replace(/\n\n/g, placeholder) - - // Add two spaces before single newlines (markdown hard break syntax) - // But only if there aren't already two spaces before the newline processed = processed.replace(/([^\s\n])(\n)(?!\n)/g, '$1 $2') - - // Restore double newlines processed = processed.replace(new RegExp(placeholder, 'g'), '\n\n') return processed From f312947f5a7e626023f88d16f262e8940e7ac9b8 Mon Sep 17 00:00:00 2001 From: waleed Date: Tue, 3 Feb 2026 20:25:54 -0800 Subject: [PATCH 5/5] added remark-breaks to allow single new line --- .../components/note-block/note-block.tsx | 27 +++---------------- apps/sim/package.json | 1 + bun.lock | 5 ++++ 3 files changed, 9 insertions(+), 24 deletions(-) diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/note-block/note-block.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/note-block/note-block.tsx index 614b4848f2e..4bfa5776e25 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/note-block/note-block.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/note-block/note-block.tsx @@ -1,6 +1,7 @@ import { memo, useCallback, useMemo } from 'react' import ReactMarkdown from 'react-markdown' import type { NodeProps } from 'reactflow' +import remarkBreaks from 'remark-breaks' import remarkGfm from 'remark-gfm' import { cn } from '@/lib/core/utils/cn' import { BLOCK_DIMENSIONS } from '@/lib/workflows/blocks/block-dimensions' @@ -299,35 +300,13 @@ function getEmbedInfo(url: string): EmbedInfo | null { return null } -/** - * Convert single newlines to markdown hard breaks, preserving code blocks - */ -function convertNewlinesToBreaks(text: string): string { - const parts = text.split(/(```[\s\S]*?```|`[^`\n]+`)/g) - - return parts - .map((part, index) => { - if (index % 2 === 1) return part - - const placeholder = '\u0000DOUBLE_NEWLINE\u0000' - let processed = part.replace(/\n\n/g, placeholder) - processed = processed.replace(/([^\s\n])(\n)(?!\n)/g, '$1 $2') - processed = processed.replace(new RegExp(placeholder, 'g'), '\n\n') - - return processed - }) - .join('') -} - /** * Compact markdown renderer for note blocks with tight spacing */ const NoteMarkdown = memo(function NoteMarkdown({ content }: { content: string }) { - const processedContent = convertNewlinesToBreaks(content) - return ( (

@@ -490,7 +469,7 @@ const NoteMarkdown = memo(function NoteMarkdown({ content }: { content: string } ), }} > - {processedContent} + {content} ) }) diff --git a/apps/sim/package.json b/apps/sim/package.json index 122dc84d021..6dcc559804a 100644 --- a/apps/sim/package.json +++ b/apps/sim/package.json @@ -148,6 +148,7 @@ "redis": "5.10.0", "rehype-autolink-headings": "^7.1.0", "rehype-slug": "^6.0.0", + "remark-breaks": "^4.0.0", "remark-gfm": "4.0.1", "resend": "^4.1.2", "rss-parser": "3.13.0", diff --git a/bun.lock b/bun.lock index 372d3e8298e..a4678369bbb 100644 --- a/bun.lock +++ b/bun.lock @@ -179,6 +179,7 @@ "redis": "5.10.0", "rehype-autolink-headings": "^7.1.0", "rehype-slug": "^6.0.0", + "remark-breaks": "^4.0.0", "remark-gfm": "4.0.1", "resend": "^4.1.2", "rss-parser": "3.13.0", @@ -2615,6 +2616,8 @@ "mdast-util-mdxjs-esm": ["mdast-util-mdxjs-esm@2.0.1", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg=="], + "mdast-util-newline-to-break": ["mdast-util-newline-to-break@2.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-find-and-replace": "^3.0.0" } }, "sha512-MbgeFca0hLYIEx/2zGsszCSEJJ1JSCdiY5xQxRcLDDGa8EPvlLPupJ4DSajbMPAnC0je8jfb9TiUATnxxrHUog=="], + "mdast-util-phrasing": ["mdast-util-phrasing@4.1.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "unist-util-is": "^6.0.0" } }, "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w=="], "mdast-util-to-hast": ["mdast-util-to-hast@13.2.1", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "@ungap/structured-clone": "^1.0.0", "devlop": "^1.0.0", "micromark-util-sanitize-uri": "^2.0.0", "trim-lines": "^3.0.0", "unist-util-position": "^5.0.0", "unist-util-visit": "^5.0.0", "vfile": "^6.0.0" } }, "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA=="], @@ -3111,6 +3114,8 @@ "remark": ["remark@15.0.1", "", { "dependencies": { "@types/mdast": "^4.0.0", "remark-parse": "^11.0.0", "remark-stringify": "^11.0.0", "unified": "^11.0.0" } }, "sha512-Eht5w30ruCXgFmxVUSlNWQ9iiimq07URKeFS3hNc8cUWy1llX4KDWfyEDZRycMc+znsN9Ux5/tJ/BFdgdOwA3A=="], + "remark-breaks": ["remark-breaks@4.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-newline-to-break": "^2.0.0", "unified": "^11.0.0" } }, "sha512-IjEjJOkH4FuJvHZVIW0QCDWxcG96kCq7An/KVH2NfJe6rKZU2AsHeB3OEjPNRxi4QC34Xdx7I2KGYn6IpT7gxQ=="], + "remark-gfm": ["remark-gfm@4.0.1", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-gfm": "^3.0.0", "micromark-extension-gfm": "^3.0.0", "remark-parse": "^11.0.0", "remark-stringify": "^11.0.0", "unified": "^11.0.0" } }, "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg=="], "remark-mdx": ["remark-mdx@3.1.1", "", { "dependencies": { "mdast-util-mdx": "^3.0.0", "micromark-extension-mdxjs": "^3.0.0" } }, "sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg=="],