21 lines
567 B
TypeScript
21 lines
567 B
TypeScript
import type {PortableTextBlock} from '@portabletext/types'
|
|
|
|
const defaults = {nonTextBehavior: 'remove'}
|
|
|
|
export default function (blocks: PortableTextBlock[] = [], opts = {}) {
|
|
if (typeof blocks === 'string') {
|
|
return blocks
|
|
}
|
|
|
|
const options = Object.assign({}, defaults, opts)
|
|
return blocks
|
|
.map((block) => {
|
|
if (block._type !== 'block' || !block.children) {
|
|
return options.nonTextBehavior === 'remove' ? '' : `[${block._type} block]`
|
|
}
|
|
|
|
return block.children.map((child) => child.text).join('')
|
|
})
|
|
.join('\n\n')
|
|
}
|