From c85844ae11940a041d9c3cb1a91ccfcba43163b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Ku=CC=88hn?= Date: Sat, 24 Oct 2020 13:48:41 +0200 Subject: [PATCH] add fallback renderer for attributes --- packages/core/src/utils/getRenderedAttributes.ts | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/packages/core/src/utils/getRenderedAttributes.ts b/packages/core/src/utils/getRenderedAttributes.ts index 8f859a2c..8c2a8c5e 100644 --- a/packages/core/src/utils/getRenderedAttributes.ts +++ b/packages/core/src/utils/getRenderedAttributes.ts @@ -1,13 +1,21 @@ import { Node, Mark } from 'prosemirror-model' import { ExtensionAttribute } from '../types' import mergeAttributes from './mergeAttributes' +import isEmptyObject from './isEmptyObject' export default function getRenderedAttributes(nodeOrMark: Node | Mark, extensionAttributes: ExtensionAttribute[]): { [key: string]: any } { return extensionAttributes .filter(item => item.attribute.rendered) .map(item => { - // TODO: fallback if renderHTML doesn’t exist - return item.attribute.renderHTML(nodeOrMark.attrs) + const renderedAttributes = item.attribute.renderHTML(nodeOrMark.attrs) + + if (isEmptyObject(renderedAttributes)) { + return { + [`data-${item.name}`]: nodeOrMark.attrs[item.name], + } + } + + return renderedAttributes }) .reduce((attributes, attribute) => { return mergeAttributes(attributes, attribute)