Files
tiptap/packages/core/src/utilities/mergeAttributes.ts
2020-11-30 09:42:53 +01:00

29 lines
758 B
TypeScript

import { AnyObject } from '../types'
export default function mergeAttributes(...objects: AnyObject[]) {
return objects
.filter(item => !!item)
.reduce((items, item) => {
const mergedAttributes = { ...items }
Object.entries(item).forEach(([key, value]) => {
const exists = mergedAttributes[key]
if (!exists) {
mergedAttributes[key] = value
return
}
if (key === 'class') {
mergedAttributes[key] = [mergedAttributes[key], value].join(' ')
} else if (key === 'style') {
mergedAttributes[key] = [mergedAttributes[key], value].join('; ')
} else {
mergedAttributes[key] = value
}
})
return mergedAttributes
}, {})
}