Some checks failed
Verify / Install node dependencies (push) Failing after 2s
Verify / Build packages (push) Has been skipped
Verify / Check linting & formatting (push) Has been skipped
Verify / Run unit tests (push) Has been skipped
Verify / Run e2e tests (shard 1/4) (push) Has been skipped
Verify / Run e2e tests (shard 2/4) (push) Has been skipped
Verify / Run e2e tests (shard 3/4) (push) Has been skipped
Verify / Run e2e tests (shard 4/4) (push) Has been skipped
Publish / Resolve publish config (push) Failing after 2s
Publish / Send notification to Slack (push) Has been skipped
Publish / Send failure notification to Slack (push) Failing after 8s
Verify / Merge e2e reports (push) Has been skipped
Publish / Build (push) Has been skipped
Publish / Bump Versions OR Release to Registry (push) Has been skipped
73 lines
1.3 KiB
TypeScript
73 lines
1.3 KiB
TypeScript
import { createBlockMarkdownSpec, Node } from '@tiptap/core'
|
|
|
|
export const name = 'Nested Nodes'
|
|
|
|
export const expectedInput = `
|
|
:::custom-block
|
|
|
|
This is a node with **bold text**.
|
|
|
|
:::custom-block
|
|
|
|
And this is a nested block.
|
|
|
|
:::
|
|
|
|
:::`.trim()
|
|
|
|
export const expectedOutput = {
|
|
type: 'doc',
|
|
content: [
|
|
{
|
|
type: 'customBlock',
|
|
content: [
|
|
{
|
|
type: 'paragraph',
|
|
content: [
|
|
{ type: 'text', text: 'This is a node with ' },
|
|
{ type: 'text', marks: [{ type: 'bold' }], text: 'bold text' },
|
|
{ type: 'text', text: '.' },
|
|
],
|
|
},
|
|
{
|
|
type: 'customBlock',
|
|
content: [
|
|
{
|
|
type: 'paragraph',
|
|
content: [{ type: 'text', text: 'And this is a nested block.' }],
|
|
},
|
|
],
|
|
},
|
|
],
|
|
},
|
|
],
|
|
}
|
|
|
|
export const extensions = [
|
|
Node.create({
|
|
name: 'customBlock',
|
|
|
|
group: 'block',
|
|
|
|
content: 'block+',
|
|
|
|
...createBlockMarkdownSpec({
|
|
nodeName: 'customBlock',
|
|
name: 'custom-block',
|
|
content: 'block',
|
|
}),
|
|
|
|
parseHTML() {
|
|
return [
|
|
{
|
|
tag: 'div[data-type="custom-block"]',
|
|
},
|
|
]
|
|
},
|
|
|
|
renderHTML({ HTMLAttributes }) {
|
|
return ['div', { 'data-type': 'custom-block', ...HTMLAttributes }, 0]
|
|
},
|
|
}),
|
|
]
|