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 splitExtensions from './helpers/splitExtensions'
|
||||||
import getAttributesFromExtensions from './helpers/getAttributesFromExtensions'
|
import getAttributesFromExtensions from './helpers/getAttributesFromExtensions'
|
||||||
import getRenderedAttributes from './helpers/getRenderedAttributes'
|
import getRenderedAttributes from './helpers/getRenderedAttributes'
|
||||||
|
import isExtensionRulesEnabled from './helpers/isExtensionRulesEnabled'
|
||||||
import callOrReturn from './utilities/callOrReturn'
|
import callOrReturn from './utilities/callOrReturn'
|
||||||
import findDuplicates from './utilities/findDuplicates'
|
import findDuplicates from './utilities/findDuplicates'
|
||||||
import { NodeConfig } from '.'
|
import { NodeConfig } from '.'
|
||||||
@@ -270,7 +271,7 @@ export default class ExtensionManager {
|
|||||||
context,
|
context,
|
||||||
)
|
)
|
||||||
|
|
||||||
if (editor.options.enableInputRules && addInputRules) {
|
if (isExtensionRulesEnabled(extension, editor.options.enableInputRules) && addInputRules) {
|
||||||
inputRules.push(...addInputRules())
|
inputRules.push(...addInputRules())
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -280,7 +281,7 @@ export default class ExtensionManager {
|
|||||||
context,
|
context,
|
||||||
)
|
)
|
||||||
|
|
||||||
if (editor.options.enablePasteRules && addPasteRules) {
|
if (isExtensionRulesEnabled(extension, editor.options.enablePasteRules) && addPasteRules) {
|
||||||
pasteRules.push(...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,
|
destroy: void,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export type EnableRules = (AnyExtension | string)[] | boolean
|
||||||
|
|
||||||
export interface EditorOptions {
|
export interface EditorOptions {
|
||||||
element: Element,
|
element: Element,
|
||||||
content: Content,
|
content: Content,
|
||||||
@@ -72,8 +74,8 @@ export interface EditorOptions {
|
|||||||
editable: boolean,
|
editable: boolean,
|
||||||
editorProps: EditorProps,
|
editorProps: EditorProps,
|
||||||
parseOptions: ParseOptions,
|
parseOptions: ParseOptions,
|
||||||
enableInputRules: boolean,
|
enableInputRules: EnableRules,
|
||||||
enablePasteRules: boolean,
|
enablePasteRules: EnableRules,
|
||||||
enableCoreExtensions: boolean,
|
enableCoreExtensions: boolean,
|
||||||
onBeforeCreate: (props: EditorEvents['beforeCreate']) => void,
|
onBeforeCreate: (props: EditorEvents['beforeCreate']) => void,
|
||||||
onCreate: (props: EditorEvents['create']) => void,
|
onCreate: (props: EditorEvents['create']) => void,
|
||||||
|
|||||||
Reference in New Issue
Block a user