add basic implementation for attributes

This commit is contained in:
Philipp Kühn
2020-10-21 23:32:28 +02:00
parent 7fffe97532
commit 6752d52541
6 changed files with 114 additions and 12 deletions

View File

@@ -0,0 +1,38 @@
import {
Extensions, Attributes, Attribute, ExtensionAttribute,
} from '../types'
import splitExtensions from './splitExtensions'
export default function getAttributesFromExtensions(extensions: Extensions) {
const allAttributes: ExtensionAttribute[] = []
const { nodeExtensions } = splitExtensions(extensions)
const defaultAttribute: Required<Attribute> = {
default: null,
rendered: true,
renderHTML: () => ({}),
parseHTML: () => null,
}
nodeExtensions.forEach(extension => {
const context = {
options: extension.options,
}
const attributes = extension.createAttributes.bind(context)() as Attributes
Object.entries(attributes).forEach(([name, attribute]) => {
allAttributes.push({
type: extension.name,
name,
attribute: {
...defaultAttribute,
...attribute,
},
})
})
})
return allAttributes
}