From 77f67bceaea29c192f987e2bc303c10e60e27736 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Ku=CC=88hn?= Date: Tue, 27 Oct 2020 14:53:08 +0100 Subject: [PATCH] improve attribute handling --- packages/core/src/types.ts | 4 ++-- packages/core/src/utils/getRenderedAttributes.ts | 2 +- .../core/src/utils/injectExtensionAttributesToParseRule.ts | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/core/src/types.ts b/packages/core/src/types.ts index cfeccacc..5533a4fd 100644 --- a/packages/core/src/types.ts +++ b/packages/core/src/types.ts @@ -7,8 +7,8 @@ export type Extensions = (Extension | NodeExtension | MarkExtension)[] export type Attribute = { default: any, rendered?: boolean, - renderHTML?: ((attributes: { [key: string]: any }) => any) | null, - parseHTML?: ((element: HTMLElement) => { [key: string]: any }) | null, + renderHTML?: ((attributes: { [key: string]: any }) => { [key: string]: any } | null) | null, + parseHTML?: ((element: HTMLElement) => { [key: string]: any } | null) | null, } export type Attributes = { diff --git a/packages/core/src/utils/getRenderedAttributes.ts b/packages/core/src/utils/getRenderedAttributes.ts index a98138c5..da92012d 100644 --- a/packages/core/src/utils/getRenderedAttributes.ts +++ b/packages/core/src/utils/getRenderedAttributes.ts @@ -12,7 +12,7 @@ export default function getRenderedAttributes(nodeOrMark: Node | Mark, extension } } - return item.attribute.renderHTML(nodeOrMark.attrs) + return item.attribute.renderHTML(nodeOrMark.attrs) || {} }) .reduce((attributes, attribute) => { return mergeAttributes(attributes, attribute) diff --git a/packages/core/src/utils/injectExtensionAttributesToParseRule.ts b/packages/core/src/utils/injectExtensionAttributesToParseRule.ts index 14c7595d..0cd42dd6 100644 --- a/packages/core/src/utils/injectExtensionAttributesToParseRule.ts +++ b/packages/core/src/utils/injectExtensionAttributesToParseRule.ts @@ -27,7 +27,7 @@ export default function injectExtensionAttributesToParseRule(parseRule: ParseRul .filter(item => item.attribute.rendered) .reduce((items, item) => { const attributes = item.attribute.parseHTML - ? item.attribute.parseHTML(node as HTMLElement) + ? item.attribute.parseHTML(node as HTMLElement) || {} : { [item.name]: (node as HTMLElement).getAttribute(item.name), }