Skip to content

createMarkdownBehaviors

createMarkdownBehaviors(config): Behavior<"focus" | "delete" | "select" | "serialize" | "copy" | "serialization.failure" | "serialization.success" | "deserialize" | "deserialization.failure" | "deserialization.success" | "annotation.add" | "annotation.remove" | "annotation.toggle" | "block.set" | "block.unset" | "blur" | "data transfer.set" | "decorator.add" | "decorator.remove" | "decorator.toggle" | "delete.backward" | "delete.block" | "delete.forward" | "delete.text" | "insert.blocks" | "insert.block object" | "insert.inline object" | "insert.break" | "insert.soft break" | "insert.block" | "insert.span" | "insert.text" | "insert.text block" | "list item.add" | "list item.remove" | "list item.toggle" | "move.block" | "move.block down" | "move.block up" | "select.previous block" | "select.next block" | "style.add" | "style.remove" | "style.toggle" | "text block.set" | "text block.unset" | "key.down" | "key.up" | "paste" | `custom.${string}`, true, PickFromUnion<BehaviorEvent, "type", "focus" | "delete" | "select" | "serialize" | "copy" | "serialization.failure" | "serialization.success" | "deserialize" | "deserialization.failure" | "deserialization.success" | "annotation.add" | "annotation.remove" | "annotation.toggle" | "block.set" | "block.unset" | "blur" | "data transfer.set" | "decorator.add" | "decorator.remove" | "decorator.toggle" | "delete.backward" | "delete.block" | "delete.forward" | "delete.text" | "insert.blocks" | "insert.block object" | "insert.inline object" | "insert.break" | "insert.soft break" | "insert.block" | "insert.span" | "insert.text" | "insert.text block" | "list item.add" | "list item.remove" | "list item.toggle" | "move.block" | "move.block down" | "move.block up" | "select.previous block" | "select.next block" | "style.add" | "style.remove" | "style.toggle" | "text block.set" | "text block.unset" | "key.down" | "key.up" | "paste" | `custom.${string}`>>[]

Defined in: behaviors/behavior.markdown.ts:71

Create markdown behaviors for common markdown actions such as converting ### to headings, --- to HRs, and more.

Parameters

config

MarkdownBehaviorsConfig

Returns

Behavior<"focus" | "delete" | "select" | "serialize" | "copy" | "serialization.failure" | "serialization.success" | "deserialize" | "deserialization.failure" | "deserialization.success" | "annotation.add" | "annotation.remove" | "annotation.toggle" | "block.set" | "block.unset" | "blur" | "data transfer.set" | "decorator.add" | "decorator.remove" | "decorator.toggle" | "delete.backward" | "delete.block" | "delete.forward" | "delete.text" | "insert.blocks" | "insert.block object" | "insert.inline object" | "insert.break" | "insert.soft break" | "insert.block" | "insert.span" | "insert.text" | "insert.text block" | "list item.add" | "list item.remove" | "list item.toggle" | "move.block" | "move.block down" | "move.block up" | "select.previous block" | "select.next block" | "style.add" | "style.remove" | "style.toggle" | "text block.set" | "text block.unset" | "key.down" | "key.up" | "paste" | `custom.${string}`, true, PickFromUnion<BehaviorEvent, "type", "focus" | "delete" | "select" | "serialize" | "copy" | "serialization.failure" | "serialization.success" | "deserialize" | "deserialization.failure" | "deserialization.success" | "annotation.add" | "annotation.remove" | "annotation.toggle" | "block.set" | "block.unset" | "blur" | "data transfer.set" | "decorator.add" | "decorator.remove" | "decorator.toggle" | "delete.backward" | "delete.block" | "delete.forward" | "delete.text" | "insert.blocks" | "insert.block object" | "insert.inline object" | "insert.break" | "insert.soft break" | "insert.block" | "insert.span" | "insert.text" | "insert.text block" | "list item.add" | "list item.remove" | "list item.toggle" | "move.block" | "move.block down" | "move.block up" | "select.previous block" | "select.next block" | "style.add" | "style.remove" | "style.toggle" | "text block.set" | "text block.unset" | "key.down" | "key.up" | "paste" | `custom.${string}`>>[]

Example

Configure the bundled markdown behaviors

import {EditorProvider} from '@portabletext/editor'
import {createMarkdownBehaviors, coreBehaviors} from '@portabletext/editor/behaviors'
function App() {
return (
<EditorProvider
initialConfig={{
behaviors: [
...coreBehaviors,
...createMarkdownBehaviors({
horizontalRuleObject: ({schema}) => {
const name = schema.blockObjects.find(
(object) => object.name === 'break',
)?.name
return name ? {name} : undefined
},
defaultStyle: ({schema}) => schema.styles[0].value,
headingStyle: ({schema, level}) =>
schema.styles.find((style) => style.value === `h${level}`)
?.value,
blockquoteStyle: ({schema}) =>
schema.styles.find((style) => style.value === 'blockquote')
?.value,
unorderedListStyle: ({schema}) =>
schema.lists.find((list) => list.value === 'bullet')?.value,
orderedListStyle: ({schema}) =>
schema.lists.find((list) => list.value === 'number')?.value,
}),
]
}}
>
{...}
</EditorProvider>
)
}