@tiptap/core
Version:
headless rich text editor
26 lines (22 loc) • 954 B
text/typescript
import type { Extensions } from '../types.js'
import { findDuplicates } from '../utilities/findDuplicates.js'
import { flattenExtensions } from './flattenExtensions.js'
import { sortExtensions } from './sortExtensions.js'
/**
* Returns a flattened and sorted extension list while
* also checking for duplicated extensions and warns the user.
* @param extensions An array of Tiptap extensions
* @returns An flattened and sorted array of Tiptap extensions
*/
export function resolveExtensions(extensions: Extensions): Extensions {
const resolvedExtensions = sortExtensions(flattenExtensions(extensions))
const duplicatedNames = findDuplicates(resolvedExtensions.map(extension => extension.name))
if (duplicatedNames.length) {
console.warn(
`[tiptap warn]: Duplicate extension names found: [${duplicatedNames
.map(item => `'${item}'`)
.join(', ')}]. This can lead to issues.`,
)
}
return resolvedExtensions
}