- {
+ {hasCustomContent ? (
+
+ {customContent}
+
+ ) : (
/* Skip rendering the toolbar during dragging to improve the performance of rendering the drag preview image in Safari */
- selected ? null : (
-
- )
- }
+ !selected &&
+ )}
{showMathPreview && (
void
+ insertMarkdown: (markdown: string, options?: InsertMarkdownOptions) => void
/**
* Returns the current Markdown and selection.
diff --git a/packages/react/src/extensions/code-block-view.ts b/packages/react/src/extensions/code-block-view.ts
index 412d6f21..40c45dbc 100644
--- a/packages/react/src/extensions/code-block-view.ts
+++ b/packages/react/src/extensions/code-block-view.ts
@@ -1,15 +1,27 @@
import { defineCodeBlockPreviewPlugin } from '@meowdown/core'
import { union, type Extension } from '@prosekit/core'
import { defineReactNodeView, type ReactNodeViewComponent } from '@prosekit/react'
+import { createElement } from 'react'
-import { CodeBlockView } from '../components/code-block-view.tsx'
+import {
+ CodeBlockView,
+ type CodeBlockRenderer,
+ type CodeBlockViewProps,
+} from '../components/code-block-view.tsx'
+
+export function defineCodeBlockView(renderCodeBlock?: CodeBlockRenderer): Extension {
+ const component: ReactNodeViewComponent = (props) => {
+ return createElement(CodeBlockView, {
+ ...props,
+ renderCodeBlock,
+ } satisfies CodeBlockViewProps)
+ }
-export function defineCodeBlockView(): Extension {
return union(
defineReactNodeView({
name: 'codeBlock',
contentAs: 'code',
- component: CodeBlockView satisfies ReactNodeViewComponent,
+ component,
}),
// Decorates the code block under the caret; `CodeBlockView` reads it to
// decide whether the preview shows alone or below the source.
diff --git a/packages/react/src/index.ts b/packages/react/src/index.ts
index d187d059..4efce28d 100644
--- a/packages/react/src/index.ts
+++ b/packages/react/src/index.ts
@@ -1,4 +1,5 @@
export { MeowdownEditor, type EditorMode, type EditorProps } from './components/editor.tsx'
+export type { CodeBlockRenderer, CodeBlockRenderOptions } from './components/code-block-view.tsx'
export {
MarkdownView,
type MarkdownViewProps,