feat: Allow array of extensions for enableInputRules and enablePasteRules options (#2119)
This commit is contained in:
@@ -13,6 +13,7 @@ import getNodeType from './helpers/getNodeType'
|
||||
import splitExtensions from './helpers/splitExtensions'
|
||||
import getAttributesFromExtensions from './helpers/getAttributesFromExtensions'
|
||||
import getRenderedAttributes from './helpers/getRenderedAttributes'
|
||||
import isExtensionRulesEnabled from './helpers/isExtensionRulesEnabled'
|
||||
import callOrReturn from './utilities/callOrReturn'
|
||||
import findDuplicates from './utilities/findDuplicates'
|
||||
import { NodeConfig } from '.'
|
||||
@@ -270,7 +271,7 @@ export default class ExtensionManager {
|
||||
context,
|
||||
)
|
||||
|
||||
if (editor.options.enableInputRules && addInputRules) {
|
||||
if (isExtensionRulesEnabled(extension, editor.options.enableInputRules) && addInputRules) {
|
||||
inputRules.push(...addInputRules())
|
||||
}
|
||||
|
||||
@@ -280,7 +281,7 @@ export default class ExtensionManager {
|
||||
context,
|
||||
)
|
||||
|
||||
if (editor.options.enablePasteRules && addPasteRules) {
|
||||
if (isExtensionRulesEnabled(extension, editor.options.enablePasteRules) && addPasteRules) {
|
||||
pasteRules.push(...addPasteRules())
|
||||
}
|
||||
|
||||
|
||||
15
packages/core/src/helpers/isExtensionRulesEnabled.ts
Normal file
15
packages/core/src/helpers/isExtensionRulesEnabled.ts
Normal file
@@ -0,0 +1,15 @@
|
||||
import { AnyExtension, EnableRules } from '@tiptap/core'
|
||||
|
||||
export default function isExtensionRulesEnabled(extension: AnyExtension, enabled: EnableRules): boolean {
|
||||
if (Array.isArray(enabled)) {
|
||||
return enabled.some(enabledExtension => {
|
||||
const name = typeof enabledExtension === 'string'
|
||||
? enabledExtension
|
||||
: enabledExtension.name
|
||||
|
||||
return name === extension.name
|
||||
})
|
||||
}
|
||||
|
||||
return enabled
|
||||
}
|
||||
@@ -63,6 +63,8 @@ export interface EditorEvents {
|
||||
destroy: void,
|
||||
}
|
||||
|
||||
export type EnableRules = (AnyExtension | string)[] | boolean
|
||||
|
||||
export interface EditorOptions {
|
||||
element: Element,
|
||||
content: Content,
|
||||
@@ -72,8 +74,8 @@ export interface EditorOptions {
|
||||
editable: boolean,
|
||||
editorProps: EditorProps,
|
||||
parseOptions: ParseOptions,
|
||||
enableInputRules: boolean,
|
||||
enablePasteRules: boolean,
|
||||
enableInputRules: EnableRules,
|
||||
enablePasteRules: EnableRules,
|
||||
enableCoreExtensions: boolean,
|
||||
onBeforeCreate: (props: EditorEvents['beforeCreate']) => void,
|
||||
onCreate: (props: EditorEvents['create']) => void,
|
||||
|
||||
Reference in New Issue
Block a user