feat: Add extension storage (#2069)
This commit is contained in:
@@ -14,6 +14,7 @@ import splitExtensions from './helpers/splitExtensions'
|
||||
import getAttributesFromExtensions from './helpers/getAttributesFromExtensions'
|
||||
import getRenderedAttributes from './helpers/getRenderedAttributes'
|
||||
import callOrReturn from './utilities/callOrReturn'
|
||||
import findDuplicates from './utilities/findDuplicates'
|
||||
import { NodeConfig } from '.'
|
||||
|
||||
export default class ExtensionManager {
|
||||
@@ -32,9 +33,13 @@ export default class ExtensionManager {
|
||||
this.schema = getSchemaByResolvedExtensions(this.extensions)
|
||||
|
||||
this.extensions.forEach(extension => {
|
||||
// store extension storage in editor
|
||||
this.editor.extensionStorage[extension.name] = extension.storage
|
||||
|
||||
const context = {
|
||||
name: extension.name,
|
||||
options: extension.options,
|
||||
storage: extension.storage,
|
||||
editor: this.editor,
|
||||
type: getSchemaTypeByName(extension.name, this.schema),
|
||||
}
|
||||
@@ -130,7 +135,14 @@ export default class ExtensionManager {
|
||||
}
|
||||
|
||||
static resolve(extensions: Extensions): Extensions {
|
||||
return ExtensionManager.sort(ExtensionManager.flatten(extensions))
|
||||
const resolvedExtensions = ExtensionManager.sort(ExtensionManager.flatten(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
|
||||
}
|
||||
|
||||
static flatten(extensions: Extensions): Extensions {
|
||||
@@ -139,6 +151,7 @@ export default class ExtensionManager {
|
||||
const context = {
|
||||
name: extension.name,
|
||||
options: extension.options,
|
||||
storage: extension.storage,
|
||||
}
|
||||
|
||||
const addExtensions = getExtensionField<AnyConfig['addExtensions']>(
|
||||
@@ -184,6 +197,7 @@ export default class ExtensionManager {
|
||||
const context = {
|
||||
name: extension.name,
|
||||
options: extension.options,
|
||||
storage: extension.storage,
|
||||
editor: this.editor,
|
||||
type: getSchemaTypeByName(extension.name, this.schema),
|
||||
}
|
||||
@@ -223,6 +237,7 @@ export default class ExtensionManager {
|
||||
const context = {
|
||||
name: extension.name,
|
||||
options: extension.options,
|
||||
storage: extension.storage,
|
||||
editor,
|
||||
type: getSchemaTypeByName(extension.name, this.schema),
|
||||
}
|
||||
@@ -313,6 +328,7 @@ export default class ExtensionManager {
|
||||
const context = {
|
||||
name: extension.name,
|
||||
options: extension.options,
|
||||
storage: extension.storage,
|
||||
editor,
|
||||
type: getNodeType(extension.name, this.schema),
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user