add fallback renderer for attributes
This commit is contained in:
@@ -1,13 +1,21 @@
|
|||||||
import { Node, Mark } from 'prosemirror-model'
|
import { Node, Mark } from 'prosemirror-model'
|
||||||
import { ExtensionAttribute } from '../types'
|
import { ExtensionAttribute } from '../types'
|
||||||
import mergeAttributes from './mergeAttributes'
|
import mergeAttributes from './mergeAttributes'
|
||||||
|
import isEmptyObject from './isEmptyObject'
|
||||||
|
|
||||||
export default function getRenderedAttributes(nodeOrMark: Node | Mark, extensionAttributes: ExtensionAttribute[]): { [key: string]: any } {
|
export default function getRenderedAttributes(nodeOrMark: Node | Mark, extensionAttributes: ExtensionAttribute[]): { [key: string]: any } {
|
||||||
return extensionAttributes
|
return extensionAttributes
|
||||||
.filter(item => item.attribute.rendered)
|
.filter(item => item.attribute.rendered)
|
||||||
.map(item => {
|
.map(item => {
|
||||||
// TODO: fallback if renderHTML doesn’t exist
|
const renderedAttributes = item.attribute.renderHTML(nodeOrMark.attrs)
|
||||||
return item.attribute.renderHTML(nodeOrMark.attrs)
|
|
||||||
|
if (isEmptyObject(renderedAttributes)) {
|
||||||
|
return {
|
||||||
|
[`data-${item.name}`]: nodeOrMark.attrs[item.name],
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return renderedAttributes
|
||||||
})
|
})
|
||||||
.reduce((attributes, attribute) => {
|
.reduce((attributes, attribute) => {
|
||||||
return mergeAttributes(attributes, attribute)
|
return mergeAttributes(attributes, attribute)
|
||||||
|
|||||||
Reference in New Issue
Block a user