diff --git a/packages/core/src/helpers/getAttributesFromExtensions.ts b/packages/core/src/helpers/getAttributesFromExtensions.ts index e1c8157c..5474a8be 100644 --- a/packages/core/src/helpers/getAttributesFromExtensions.ts +++ b/packages/core/src/helpers/getAttributesFromExtensions.ts @@ -24,6 +24,7 @@ export function getAttributesFromExtensions(extensions: Extensions): ExtensionAt renderHTML: null, parseHTML: null, keepOnSplit: true, + isRequired: false, } extensions.forEach(extension => { @@ -87,14 +88,20 @@ export function getAttributesFromExtensions(extensions: Extensions): ExtensionAt Object .entries(attributes) .forEach(([name, attribute]) => { + const mergedAttr = { + ...defaultAttribute, + ...attribute, + } + + if (attribute.isRequired && attribute.default === undefined) { + delete mergedAttr.default; + } + extensionAttributes.push({ type: extension.name, name, - attribute: { - ...defaultAttribute, - ...attribute, - }, - }) + attribute: mergedAttr, + }); }) }) diff --git a/packages/core/src/types.ts b/packages/core/src/types.ts index 224608ad..7320aaa5 100644 --- a/packages/core/src/types.ts +++ b/packages/core/src/types.ts @@ -128,6 +128,7 @@ export type Attribute = { renderHTML?: ((attributes: Record) => Record | null) | null, parseHTML?: ((element: HTMLElement) => any | null) | null, keepOnSplit: boolean, + isRequired?: boolean, } export type Attributes = {