2024-01-08 08:40:25 +01:00
|
|
|
import { TElement } from '@udecode/plate-common'
|
2024-01-31 08:03:13 +01:00
|
|
|
import serialize from './serializer/serialize'
|
|
|
|
import { defaultNodeTypes } from './serializer/ast-types'
|
2024-01-08 08:40:25 +01:00
|
|
|
|
|
|
|
export const convertRichTextToMarkdown = (
|
|
|
|
richText: TElement[],
|
|
|
|
options?: { flavour?: 'common' | 'whatsapp' }
|
|
|
|
) => {
|
|
|
|
const test = richText
|
|
|
|
.reduce<string[]>((acc, node) => {
|
2024-01-11 00:14:55 +01:00
|
|
|
if (node.type === 'variable') {
|
2024-01-08 08:40:25 +01:00
|
|
|
return [
|
|
|
|
...acc,
|
2024-01-31 08:03:13 +01:00
|
|
|
...node.children.reduce<string[]>((acc, node) => {
|
|
|
|
const serializedElement = serialize(node, {
|
|
|
|
nodeTypes: defaultNodeTypes,
|
|
|
|
flavour: options?.flavour,
|
|
|
|
}) as string
|
|
|
|
if (!serializedElement || serializedElement === '<br>\n\n')
|
|
|
|
return [...acc, '\n']
|
|
|
|
return [...acc, serializedElement]
|
|
|
|
}, []),
|
2024-01-08 08:40:25 +01:00
|
|
|
]
|
|
|
|
}
|
|
|
|
const serializedElement = serialize(node, {
|
|
|
|
nodeTypes: defaultNodeTypes,
|
|
|
|
flavour: options?.flavour,
|
|
|
|
})
|
2024-01-31 08:03:13 +01:00
|
|
|
if (!serializedElement || serializedElement === '<br>\n\n')
|
|
|
|
return [...acc, '\n']
|
2024-01-08 08:40:25 +01:00
|
|
|
return [...acc, serializedElement]
|
|
|
|
}, [])
|
2024-01-31 08:03:13 +01:00
|
|
|
.join('')
|
2024-01-08 08:40:25 +01:00
|
|
|
|
2024-01-11 15:09:13 +01:00
|
|
|
return test.endsWith('\n') ? test.slice(0, -1) : test
|
2024-01-08 08:40:25 +01:00
|
|
|
}
|