Files
tiptap/packages/core/src/utils/resolveExtensionConfig.ts
Philipp Kühn dca42879e4 refactoring
2020-09-09 21:06:57 +02:00

35 lines
779 B
TypeScript

import deepmerge from 'deepmerge'
import Extension from '../Extension'
import Node from '../Node'
import Mark from '../Mark'
export default function resolveExtensionConfig(
extension: Extension | Node | Mark,
name: string,
props = {},
): void {
if (!extension.configs[name]) {
return
}
extension.config[name] = extension.configs[name]
.reduce((accumulator, { stategy, value: rawValue }) => {
const value = typeof rawValue === 'function'
? rawValue(props)
: rawValue
if (accumulator === undefined) {
return value
}
if (stategy === 'overwrite') {
return value
}
if (stategy === 'extend') {
return deepmerge(accumulator, value)
}
return accumulator
}, undefined)
}