@tiptap/core 3.0.0 → 3.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +21 -0
- package/README.md +5 -1
- package/dist/index.cjs +5169 -4654
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3356 -0
- package/dist/index.d.ts +3356 -0
- package/dist/index.js +5051 -4561
- package/dist/index.js.map +1 -1
- package/dist/jsx-runtime/jsx-runtime.cjs +56 -0
- package/dist/jsx-runtime/jsx-runtime.cjs.map +1 -0
- package/dist/jsx-runtime/jsx-runtime.d.cts +22 -0
- package/dist/jsx-runtime/jsx-runtime.d.ts +22 -0
- package/dist/jsx-runtime/jsx-runtime.js +26 -0
- package/dist/jsx-runtime/jsx-runtime.js.map +1 -0
- package/jsx-dev-runtime/index.cjs +1 -0
- package/jsx-dev-runtime/index.d.cts +1 -0
- package/jsx-dev-runtime/index.d.ts +1 -0
- package/jsx-dev-runtime/index.js +1 -0
- package/jsx-runtime/index.cjs +1 -0
- package/jsx-runtime/index.d.cts +1 -0
- package/jsx-runtime/index.d.ts +1 -0
- package/jsx-runtime/index.js +1 -0
- package/package.json +30 -10
- package/src/CommandManager.ts +4 -11
- package/src/Editor.ts +273 -100
- package/src/EventEmitter.ts +16 -10
- package/src/Extendable.ts +484 -0
- package/src/Extension.ts +29 -493
- package/src/ExtensionManager.ts +100 -143
- package/src/InputRule.ts +28 -24
- package/src/Mark.ts +157 -624
- package/src/MarkView.ts +122 -0
- package/src/Node.ts +343 -807
- package/src/NodePos.ts +18 -9
- package/src/NodeView.ts +58 -35
- package/src/PasteRule.ts +68 -24
- package/src/Tracker.ts +8 -10
- package/src/commands/blur.ts +15 -13
- package/src/commands/clearContent.ts +13 -6
- package/src/commands/clearNodes.ts +33 -31
- package/src/commands/command.ts +2 -2
- package/src/commands/createParagraphNear.ts +6 -4
- package/src/commands/cut.ts +13 -11
- package/src/commands/deleteCurrentNode.ts +24 -22
- package/src/commands/deleteNode.ts +20 -18
- package/src/commands/deleteRange.ts +11 -9
- package/src/commands/deleteSelection.ts +6 -4
- package/src/commands/enter.ts +7 -5
- package/src/commands/exitCode.ts +6 -4
- package/src/commands/extendMarkRange.ts +16 -14
- package/src/commands/first.ts +3 -5
- package/src/commands/focus.ts +51 -53
- package/src/commands/forEach.ts +3 -3
- package/src/commands/insertContent.ts +8 -10
- package/src/commands/insertContentAt.ts +131 -76
- package/src/commands/join.ts +21 -13
- package/src/commands/joinItemBackward.ts +17 -19
- package/src/commands/joinItemForward.ts +17 -19
- package/src/commands/joinTextblockBackward.ts +6 -4
- package/src/commands/joinTextblockForward.ts +6 -4
- package/src/commands/keyboardShortcut.ts +30 -35
- package/src/commands/lift.ts +12 -10
- package/src/commands/liftEmptyBlock.ts +7 -5
- package/src/commands/liftListItem.ts +8 -6
- package/src/commands/newlineInCode.ts +6 -4
- package/src/commands/resetAttributes.ts +38 -43
- package/src/commands/scrollIntoView.ts +10 -8
- package/src/commands/selectAll.ts +15 -8
- package/src/commands/selectNodeBackward.ts +6 -4
- package/src/commands/selectNodeForward.ts +6 -4
- package/src/commands/selectParentNode.ts +6 -4
- package/src/commands/selectTextblockEnd.ts +6 -4
- package/src/commands/selectTextblockStart.ts +6 -4
- package/src/commands/setContent.ts +37 -40
- package/src/commands/setMark.ts +58 -60
- package/src/commands/setMeta.ts +10 -6
- package/src/commands/setNode.ts +36 -27
- package/src/commands/setNodeSelection.ts +12 -10
- package/src/commands/setTextSelection.ts +16 -14
- package/src/commands/sinkListItem.ts +8 -6
- package/src/commands/splitBlock.ts +60 -68
- package/src/commands/splitListItem.ts +99 -101
- package/src/commands/toggleList.ts +76 -74
- package/src/commands/toggleMark.ts +13 -11
- package/src/commands/toggleNode.ts +22 -11
- package/src/commands/toggleWrap.ts +12 -10
- package/src/commands/undoInputRule.ts +32 -30
- package/src/commands/unsetAllMarks.ts +17 -15
- package/src/commands/unsetMark.ts +29 -27
- package/src/commands/updateAttributes.ts +97 -45
- package/src/commands/wrapIn.ts +8 -6
- package/src/commands/wrapInList.ts +8 -6
- package/src/extensions/clipboardTextSerializer.ts +2 -4
- package/src/extensions/delete.ts +89 -0
- package/src/extensions/drop.ts +26 -0
- package/src/extensions/focusEvents.ts +5 -7
- package/src/extensions/index.ts +4 -1
- package/src/extensions/keymap.ts +63 -52
- package/src/extensions/paste.ts +25 -0
- package/src/extensions/tabindex.ts +1 -1
- package/src/helpers/combineTransactionSteps.ts +3 -6
- package/src/helpers/createChainableState.ts +2 -5
- package/src/helpers/createDocument.ts +3 -3
- package/src/helpers/createNodeFromContent.ts +37 -25
- package/src/helpers/defaultBlockAt.ts +1 -1
- package/src/helpers/findChildren.ts +2 -2
- package/src/helpers/findChildrenInRange.ts +3 -7
- package/src/helpers/findParentNode.ts +5 -3
- package/src/helpers/findParentNodeClosestToPos.ts +2 -2
- package/src/helpers/flattenExtensions.ts +30 -0
- package/src/helpers/generateHTML.ts +1 -1
- package/src/helpers/generateJSON.ts +1 -1
- package/src/helpers/generateText.ts +1 -1
- package/src/helpers/getAttributes.ts +3 -6
- package/src/helpers/getAttributesFromExtensions.ts +29 -38
- package/src/helpers/getChangedRanges.ts +15 -13
- package/src/helpers/getDebugJSON.ts +2 -2
- package/src/helpers/getExtensionField.ts +12 -12
- package/src/helpers/getHTMLFromFragment.ts +2 -1
- package/src/helpers/getMarkAttributes.ts +3 -6
- package/src/helpers/getMarkRange.ts +36 -19
- package/src/helpers/getMarkType.ts +2 -4
- package/src/helpers/getMarksBetween.ts +3 -3
- package/src/helpers/getNodeAtPosition.ts +2 -2
- package/src/helpers/getNodeAttributes.ts +3 -6
- package/src/helpers/getNodeType.ts +2 -4
- package/src/helpers/getRenderedAttributes.ts +3 -2
- package/src/helpers/getSchema.ts +5 -5
- package/src/helpers/getSchemaByResolvedExtensions.ts +49 -79
- package/src/helpers/getSchemaTypeByName.ts +1 -1
- package/src/helpers/getSchemaTypeNameByName.ts +1 -1
- package/src/helpers/getSplittedAttributes.ts +5 -5
- package/src/helpers/getText.ts +2 -2
- package/src/helpers/getTextBetween.ts +2 -2
- package/src/helpers/getTextContentFromNodes.ts +9 -12
- package/src/helpers/getTextSerializersFromSchema.ts +2 -2
- package/src/helpers/index.ts +4 -0
- package/src/helpers/injectExtensionAttributesToParseRule.ts +3 -3
- package/src/helpers/isActive.ts +2 -6
- package/src/helpers/isAtEndOfNode.ts +1 -1
- package/src/helpers/isAtStartOfNode.ts +1 -1
- package/src/helpers/isExtensionRulesEnabled.ts +2 -4
- package/src/helpers/isList.ts +2 -2
- package/src/helpers/isMarkActive.ts +3 -3
- package/src/helpers/isNodeActive.ts +3 -3
- package/src/helpers/isNodeEmpty.ts +56 -5
- package/src/helpers/posToDOMRect.ts +1 -1
- package/src/helpers/resolveExtensions.ts +25 -0
- package/src/helpers/resolveFocusPosition.ts +5 -16
- package/src/helpers/rewriteUnknownContent.ts +149 -0
- package/src/helpers/selectionToInsertionEnd.ts +2 -1
- package/src/helpers/sortExtensions.ts +26 -0
- package/src/helpers/splitExtensions.ts +4 -4
- package/src/index.ts +3 -7
- package/src/inputRules/markInputRule.ts +6 -9
- package/src/inputRules/nodeInputRule.ts +7 -13
- package/src/inputRules/textInputRule.ts +4 -6
- package/src/inputRules/textblockTypeInputRule.ts +7 -12
- package/src/inputRules/wrappingInputRule.ts +19 -24
- package/src/jsx-runtime.ts +64 -0
- package/src/pasteRules/markPasteRule.ts +6 -7
- package/src/pasteRules/nodePasteRule.ts +15 -11
- package/src/pasteRules/textPasteRule.ts +4 -6
- package/src/style.ts +2 -6
- package/src/types.ts +513 -58
- package/src/utilities/callOrReturn.ts +1 -1
- package/src/utilities/canInsertNode.ts +30 -0
- package/src/utilities/createStyleTag.ts +3 -1
- package/src/utilities/deleteProps.ts +7 -11
- package/src/utilities/elementFromString.ts +3 -0
- package/src/utilities/findDuplicates.ts +5 -2
- package/src/utilities/index.ts +2 -0
- package/src/utilities/isFunction.ts +1 -0
- package/src/utilities/isMacOS.ts +1 -3
- package/src/utilities/isiOS.ts +5 -10
- package/src/utilities/mergeAttributes.ts +32 -5
- package/src/utilities/removeDuplicates.ts +1 -3
- package/dist/index.umd.js +0 -5098
- package/dist/index.umd.js.map +0 -1
- package/dist/packages/core/src/CommandManager.d.ts +0 -20
- package/dist/packages/core/src/Editor.d.ts +0 -161
- package/dist/packages/core/src/EventEmitter.d.ts +0 -11
- package/dist/packages/core/src/Extension.d.ts +0 -343
- package/dist/packages/core/src/ExtensionManager.d.ts +0 -55
- package/dist/packages/core/src/InputRule.d.ts +0 -42
- package/dist/packages/core/src/Mark.d.ts +0 -451
- package/dist/packages/core/src/Node.d.ts +0 -611
- package/dist/packages/core/src/NodePos.d.ts +0 -44
- package/dist/packages/core/src/NodeView.d.ts +0 -31
- package/dist/packages/core/src/PasteRule.d.ts +0 -50
- package/dist/packages/core/src/Tracker.d.ts +0 -11
- package/dist/packages/core/src/commands/blur.d.ts +0 -13
- package/dist/packages/core/src/commands/clearContent.d.ts +0 -14
- package/dist/packages/core/src/commands/clearNodes.d.ts +0 -13
- package/dist/packages/core/src/commands/command.d.ts +0 -18
- package/dist/packages/core/src/commands/createParagraphNear.d.ts +0 -13
- package/dist/packages/core/src/commands/cut.d.ts +0 -20
- package/dist/packages/core/src/commands/deleteCurrentNode.d.ts +0 -13
- package/dist/packages/core/src/commands/deleteNode.d.ts +0 -15
- package/dist/packages/core/src/commands/deleteRange.d.ts +0 -14
- package/dist/packages/core/src/commands/deleteSelection.d.ts +0 -13
- package/dist/packages/core/src/commands/enter.d.ts +0 -13
- package/dist/packages/core/src/commands/exitCode.d.ts +0 -13
- package/dist/packages/core/src/commands/extendMarkRange.d.ts +0 -25
- package/dist/packages/core/src/commands/first.d.ts +0 -14
- package/dist/packages/core/src/commands/focus.d.ts +0 -27
- package/dist/packages/core/src/commands/forEach.d.ts +0 -14
- package/dist/packages/core/src/commands/index.d.ts +0 -55
- package/dist/packages/core/src/commands/insertContent.d.ts +0 -34
- package/dist/packages/core/src/commands/insertContentAt.d.ts +0 -47
- package/dist/packages/core/src/commands/join.d.ts +0 -41
- package/dist/packages/core/src/commands/joinItemBackward.d.ts +0 -13
- package/dist/packages/core/src/commands/joinItemForward.d.ts +0 -13
- package/dist/packages/core/src/commands/joinTextblockBackward.d.ts +0 -12
- package/dist/packages/core/src/commands/joinTextblockForward.d.ts +0 -12
- package/dist/packages/core/src/commands/keyboardShortcut.d.ts +0 -14
- package/dist/packages/core/src/commands/lift.d.ts +0 -17
- package/dist/packages/core/src/commands/liftEmptyBlock.d.ts +0 -13
- package/dist/packages/core/src/commands/liftListItem.d.ts +0 -15
- package/dist/packages/core/src/commands/newlineInCode.d.ts +0 -13
- package/dist/packages/core/src/commands/resetAttributes.d.ts +0 -16
- package/dist/packages/core/src/commands/scrollIntoView.d.ts +0 -13
- package/dist/packages/core/src/commands/selectAll.d.ts +0 -13
- package/dist/packages/core/src/commands/selectNodeBackward.d.ts +0 -13
- package/dist/packages/core/src/commands/selectNodeForward.d.ts +0 -13
- package/dist/packages/core/src/commands/selectParentNode.d.ts +0 -13
- package/dist/packages/core/src/commands/selectTextblockEnd.d.ts +0 -13
- package/dist/packages/core/src/commands/selectTextblockStart.d.ts +0 -13
- package/dist/packages/core/src/commands/setContent.d.ts +0 -40
- package/dist/packages/core/src/commands/setMark.d.ts +0 -15
- package/dist/packages/core/src/commands/setMeta.d.ts +0 -15
- package/dist/packages/core/src/commands/setNode.d.ts +0 -16
- package/dist/packages/core/src/commands/setNodeSelection.d.ts +0 -14
- package/dist/packages/core/src/commands/setTextSelection.d.ts +0 -14
- package/dist/packages/core/src/commands/sinkListItem.d.ts +0 -15
- package/dist/packages/core/src/commands/splitBlock.d.ts +0 -17
- package/dist/packages/core/src/commands/splitListItem.d.ts +0 -15
- package/dist/packages/core/src/commands/toggleList.d.ts +0 -18
- package/dist/packages/core/src/commands/toggleMark.d.ts +0 -30
- package/dist/packages/core/src/commands/toggleNode.d.ts +0 -17
- package/dist/packages/core/src/commands/toggleWrap.d.ts +0 -16
- package/dist/packages/core/src/commands/undoInputRule.d.ts +0 -13
- package/dist/packages/core/src/commands/unsetAllMarks.d.ts +0 -13
- package/dist/packages/core/src/commands/unsetMark.d.ts +0 -25
- package/dist/packages/core/src/commands/updateAttributes.d.ts +0 -24
- package/dist/packages/core/src/commands/wrapIn.d.ts +0 -16
- package/dist/packages/core/src/commands/wrapInList.d.ts +0 -16
- package/dist/packages/core/src/extensions/clipboardTextSerializer.d.ts +0 -5
- package/dist/packages/core/src/extensions/commands.d.ts +0 -3
- package/dist/packages/core/src/extensions/editable.d.ts +0 -2
- package/dist/packages/core/src/extensions/focusEvents.d.ts +0 -2
- package/dist/packages/core/src/extensions/index.d.ts +0 -6
- package/dist/packages/core/src/extensions/keymap.d.ts +0 -2
- package/dist/packages/core/src/extensions/tabindex.d.ts +0 -2
- package/dist/packages/core/src/helpers/combineTransactionSteps.d.ts +0 -10
- package/dist/packages/core/src/helpers/createChainableState.d.ts +0 -10
- package/dist/packages/core/src/helpers/createDocument.d.ts +0 -12
- package/dist/packages/core/src/helpers/createNodeFromContent.d.ts +0 -15
- package/dist/packages/core/src/helpers/defaultBlockAt.d.ts +0 -7
- package/dist/packages/core/src/helpers/findChildren.d.ts +0 -9
- package/dist/packages/core/src/helpers/findChildrenInRange.d.ts +0 -10
- package/dist/packages/core/src/helpers/findParentNode.d.ts +0 -16
- package/dist/packages/core/src/helpers/findParentNodeClosestToPos.d.ts +0 -17
- package/dist/packages/core/src/helpers/generateHTML.d.ts +0 -8
- package/dist/packages/core/src/helpers/generateJSON.d.ts +0 -8
- package/dist/packages/core/src/helpers/generateText.d.ts +0 -12
- package/dist/packages/core/src/helpers/getAttributes.d.ts +0 -9
- package/dist/packages/core/src/helpers/getAttributesFromExtensions.d.ts +0 -6
- package/dist/packages/core/src/helpers/getChangedRanges.d.ts +0 -11
- package/dist/packages/core/src/helpers/getDebugJSON.d.ts +0 -8
- package/dist/packages/core/src/helpers/getExtensionField.d.ts +0 -9
- package/dist/packages/core/src/helpers/getHTMLFromFragment.d.ts +0 -2
- package/dist/packages/core/src/helpers/getMarkAttributes.d.ts +0 -3
- package/dist/packages/core/src/helpers/getMarkRange.d.ts +0 -3
- package/dist/packages/core/src/helpers/getMarkType.d.ts +0 -2
- package/dist/packages/core/src/helpers/getMarksBetween.d.ts +0 -3
- package/dist/packages/core/src/helpers/getNodeAtPosition.d.ts +0 -11
- package/dist/packages/core/src/helpers/getNodeAttributes.d.ts +0 -3
- package/dist/packages/core/src/helpers/getNodeType.d.ts +0 -2
- package/dist/packages/core/src/helpers/getRenderedAttributes.d.ts +0 -3
- package/dist/packages/core/src/helpers/getSchema.d.ts +0 -4
- package/dist/packages/core/src/helpers/getSchemaByResolvedExtensions.d.ts +0 -10
- package/dist/packages/core/src/helpers/getSchemaTypeByName.d.ts +0 -8
- package/dist/packages/core/src/helpers/getSchemaTypeNameByName.d.ts +0 -8
- package/dist/packages/core/src/helpers/getSplittedAttributes.d.ts +0 -9
- package/dist/packages/core/src/helpers/getText.d.ts +0 -15
- package/dist/packages/core/src/helpers/getTextBetween.d.ts +0 -14
- package/dist/packages/core/src/helpers/getTextContentFromNodes.d.ts +0 -8
- package/dist/packages/core/src/helpers/getTextSerializersFromSchema.d.ts +0 -8
- package/dist/packages/core/src/helpers/index.d.ts +0 -50
- package/dist/packages/core/src/helpers/injectExtensionAttributesToParseRule.d.ts +0 -9
- package/dist/packages/core/src/helpers/isActive.d.ts +0 -2
- package/dist/packages/core/src/helpers/isAtEndOfNode.d.ts +0 -2
- package/dist/packages/core/src/helpers/isAtStartOfNode.d.ts +0 -2
- package/dist/packages/core/src/helpers/isExtensionRulesEnabled.d.ts +0 -2
- package/dist/packages/core/src/helpers/isList.d.ts +0 -2
- package/dist/packages/core/src/helpers/isMarkActive.d.ts +0 -3
- package/dist/packages/core/src/helpers/isNodeActive.d.ts +0 -3
- package/dist/packages/core/src/helpers/isNodeEmpty.d.ts +0 -2
- package/dist/packages/core/src/helpers/isNodeSelection.d.ts +0 -2
- package/dist/packages/core/src/helpers/isTextSelection.d.ts +0 -2
- package/dist/packages/core/src/helpers/posToDOMRect.d.ts +0 -2
- package/dist/packages/core/src/helpers/resolveFocusPosition.d.ts +0 -4
- package/dist/packages/core/src/helpers/selectionToInsertionEnd.d.ts +0 -2
- package/dist/packages/core/src/helpers/splitExtensions.d.ts +0 -9
- package/dist/packages/core/src/index.d.ts +0 -24
- package/dist/packages/core/src/inputRules/index.d.ts +0 -5
- package/dist/packages/core/src/inputRules/markInputRule.d.ts +0 -13
- package/dist/packages/core/src/inputRules/nodeInputRule.d.ts +0 -23
- package/dist/packages/core/src/inputRules/textInputRule.d.ts +0 -10
- package/dist/packages/core/src/inputRules/textblockTypeInputRule.d.ts +0 -15
- package/dist/packages/core/src/inputRules/wrappingInputRule.d.ts +0 -28
- package/dist/packages/core/src/pasteRules/index.d.ts +0 -3
- package/dist/packages/core/src/pasteRules/markPasteRule.d.ts +0 -13
- package/dist/packages/core/src/pasteRules/nodePasteRule.d.ts +0 -13
- package/dist/packages/core/src/pasteRules/textPasteRule.d.ts +0 -10
- package/dist/packages/core/src/style.d.ts +0 -1
- package/dist/packages/core/src/types.d.ts +0 -255
- package/dist/packages/core/src/utilities/callOrReturn.d.ts +0 -9
- package/dist/packages/core/src/utilities/createStyleTag.d.ts +0 -1
- package/dist/packages/core/src/utilities/deleteProps.d.ts +0 -6
- package/dist/packages/core/src/utilities/elementFromString.d.ts +0 -1
- package/dist/packages/core/src/utilities/escapeForRegEx.d.ts +0 -1
- package/dist/packages/core/src/utilities/findDuplicates.d.ts +0 -1
- package/dist/packages/core/src/utilities/fromString.d.ts +0 -1
- package/dist/packages/core/src/utilities/index.d.ts +0 -20
- package/dist/packages/core/src/utilities/isAndroid.d.ts +0 -1
- package/dist/packages/core/src/utilities/isEmptyObject.d.ts +0 -1
- package/dist/packages/core/src/utilities/isFunction.d.ts +0 -1
- package/dist/packages/core/src/utilities/isMacOS.d.ts +0 -1
- package/dist/packages/core/src/utilities/isNumber.d.ts +0 -1
- package/dist/packages/core/src/utilities/isPlainObject.d.ts +0 -1
- package/dist/packages/core/src/utilities/isRegExp.d.ts +0 -1
- package/dist/packages/core/src/utilities/isString.d.ts +0 -1
- package/dist/packages/core/src/utilities/isiOS.d.ts +0 -1
- package/dist/packages/core/src/utilities/mergeAttributes.d.ts +0 -1
- package/dist/packages/core/src/utilities/mergeDeep.d.ts +0 -1
- package/dist/packages/core/src/utilities/minMax.d.ts +0 -1
- package/dist/packages/core/src/utilities/objectIncludes.d.ts +0 -8
- package/dist/packages/core/src/utilities/removeDuplicates.d.ts +0 -8
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { AnyConfig, Extensions } from '../types.js'
|
|
2
|
+
import { getExtensionField } from './getExtensionField.js'
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Create a flattened array of extensions by traversing the `addExtensions` field.
|
|
6
|
+
* @param extensions An array of Tiptap extensions
|
|
7
|
+
* @returns A flattened array of Tiptap extensions
|
|
8
|
+
*/
|
|
9
|
+
export function flattenExtensions(extensions: Extensions): Extensions {
|
|
10
|
+
return (
|
|
11
|
+
extensions
|
|
12
|
+
.map(extension => {
|
|
13
|
+
const context = {
|
|
14
|
+
name: extension.name,
|
|
15
|
+
options: extension.options,
|
|
16
|
+
storage: extension.storage,
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
const addExtensions = getExtensionField<AnyConfig['addExtensions']>(extension, 'addExtensions', context)
|
|
20
|
+
|
|
21
|
+
if (addExtensions) {
|
|
22
|
+
return [extension, ...flattenExtensions(addExtensions())]
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
return extension
|
|
26
|
+
})
|
|
27
|
+
// `Infinity` will break TypeScript so we set a number that is probably high enough
|
|
28
|
+
.flat(10)
|
|
29
|
+
)
|
|
30
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Node } from '@tiptap/pm/model'
|
|
2
2
|
|
|
3
|
-
import { Extensions, JSONContent } from '../types.js'
|
|
3
|
+
import type { Extensions, JSONContent } from '../types.js'
|
|
4
4
|
import { getHTMLFromFragment } from './getHTMLFromFragment.js'
|
|
5
5
|
import { getSchema } from './getSchema.js'
|
|
6
6
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Node } from '@tiptap/pm/model'
|
|
2
2
|
|
|
3
|
-
import { Extensions, JSONContent, TextSerializer } from '../types.js'
|
|
3
|
+
import type { Extensions, JSONContent, TextSerializer } from '../types.js'
|
|
4
4
|
import { getSchema } from './getSchema.js'
|
|
5
5
|
import { getText } from './getText.js'
|
|
6
6
|
import { getTextSerializersFromSchema } from './getTextSerializersFromSchema.js'
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { MarkType, NodeType } from '@tiptap/pm/model'
|
|
2
|
-
import { EditorState } from '@tiptap/pm/state'
|
|
1
|
+
import type { MarkType, NodeType } from '@tiptap/pm/model'
|
|
2
|
+
import type { EditorState } from '@tiptap/pm/state'
|
|
3
3
|
|
|
4
4
|
import { getMarkAttributes } from './getMarkAttributes.js'
|
|
5
5
|
import { getNodeAttributes } from './getNodeAttributes.js'
|
|
@@ -11,10 +11,7 @@ import { getSchemaTypeNameByName } from './getSchemaTypeNameByName.js'
|
|
|
11
11
|
* @param typeOrName The node or mark type or name
|
|
12
12
|
* @returns The attributes of the node or mark or an empty object
|
|
13
13
|
*/
|
|
14
|
-
export function getAttributes(
|
|
15
|
-
state: EditorState,
|
|
16
|
-
typeOrName: string | NodeType | MarkType,
|
|
17
|
-
): Record<string, any> {
|
|
14
|
+
export function getAttributes(state: EditorState, typeOrName: string | NodeType | MarkType): Record<string, any> {
|
|
18
15
|
const schemaType = getSchemaTypeNameByName(
|
|
19
16
|
typeof typeOrName === 'string' ? typeOrName : typeOrName.name,
|
|
20
17
|
state.schema,
|
|
@@ -1,11 +1,5 @@
|
|
|
1
|
-
import { MarkConfig, NodeConfig } from '../index.js'
|
|
2
|
-
import {
|
|
3
|
-
AnyConfig,
|
|
4
|
-
Attribute,
|
|
5
|
-
Attributes,
|
|
6
|
-
ExtensionAttribute,
|
|
7
|
-
Extensions,
|
|
8
|
-
} from '../types.js'
|
|
1
|
+
import type { MarkConfig, NodeConfig } from '../index.js'
|
|
2
|
+
import type { AnyConfig, Attribute, Attributes, ExtensionAttribute, Extensions } from '../types.js'
|
|
9
3
|
import { getExtensionField } from './getExtensionField.js'
|
|
10
4
|
import { splitExtensions } from './splitExtensions.js'
|
|
11
5
|
|
|
@@ -17,8 +11,9 @@ export function getAttributesFromExtensions(extensions: Extensions): ExtensionAt
|
|
|
17
11
|
const extensionAttributes: ExtensionAttribute[] = []
|
|
18
12
|
const { nodeExtensions, markExtensions } = splitExtensions(extensions)
|
|
19
13
|
const nodeAndMarkExtensions = [...nodeExtensions, ...markExtensions]
|
|
20
|
-
const defaultAttribute: Required<Attribute> = {
|
|
14
|
+
const defaultAttribute: Required<Omit<Attribute, 'validate'>> & Pick<Attribute, 'validate'> = {
|
|
21
15
|
default: null,
|
|
16
|
+
validate: undefined,
|
|
22
17
|
rendered: true,
|
|
23
18
|
renderHTML: null,
|
|
24
19
|
parseHTML: null,
|
|
@@ -48,18 +43,16 @@ export function getAttributesFromExtensions(extensions: Extensions): ExtensionAt
|
|
|
48
43
|
|
|
49
44
|
globalAttributes.forEach(globalAttribute => {
|
|
50
45
|
globalAttribute.types.forEach(type => {
|
|
51
|
-
Object
|
|
52
|
-
.
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
attribute
|
|
58
|
-
|
|
59
|
-
...attribute,
|
|
60
|
-
},
|
|
61
|
-
})
|
|
46
|
+
Object.entries(globalAttribute.attributes).forEach(([name, attribute]) => {
|
|
47
|
+
extensionAttributes.push({
|
|
48
|
+
type,
|
|
49
|
+
name,
|
|
50
|
+
attribute: {
|
|
51
|
+
...defaultAttribute,
|
|
52
|
+
...attribute,
|
|
53
|
+
},
|
|
62
54
|
})
|
|
55
|
+
})
|
|
63
56
|
})
|
|
64
57
|
})
|
|
65
58
|
})
|
|
@@ -84,28 +77,26 @@ export function getAttributesFromExtensions(extensions: Extensions): ExtensionAt
|
|
|
84
77
|
// TODO: remove `as Attributes`
|
|
85
78
|
const attributes = addAttributes() as Attributes
|
|
86
79
|
|
|
87
|
-
Object
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
...attribute,
|
|
93
|
-
}
|
|
80
|
+
Object.entries(attributes).forEach(([name, attribute]) => {
|
|
81
|
+
const mergedAttr = {
|
|
82
|
+
...defaultAttribute,
|
|
83
|
+
...attribute,
|
|
84
|
+
}
|
|
94
85
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
86
|
+
if (typeof mergedAttr?.default === 'function') {
|
|
87
|
+
mergedAttr.default = mergedAttr.default()
|
|
88
|
+
}
|
|
98
89
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
90
|
+
if (mergedAttr?.isRequired && mergedAttr?.default === undefined) {
|
|
91
|
+
delete mergedAttr.default
|
|
92
|
+
}
|
|
102
93
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
})
|
|
94
|
+
extensionAttributes.push({
|
|
95
|
+
type: extension.name,
|
|
96
|
+
name,
|
|
97
|
+
attribute: mergedAttr,
|
|
108
98
|
})
|
|
99
|
+
})
|
|
109
100
|
})
|
|
110
101
|
|
|
111
102
|
return extensionAttributes
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { Step, Transform } from '@tiptap/pm/transform'
|
|
1
|
+
import type { Step, Transform } from '@tiptap/pm/transform'
|
|
2
2
|
|
|
3
|
-
import { Range } from '../types.js'
|
|
3
|
+
import type { Range } from '../types.js'
|
|
4
4
|
import { removeDuplicates } from '../utilities/removeDuplicates.js'
|
|
5
5
|
|
|
6
6
|
export type ChangedRange = {
|
|
7
|
-
oldRange: Range
|
|
8
|
-
newRange: Range
|
|
7
|
+
oldRange: Range
|
|
8
|
+
newRange: Range
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
/**
|
|
@@ -18,15 +18,17 @@ function simplifyChangedRanges(changes: ChangedRange[]): ChangedRange[] {
|
|
|
18
18
|
return uniqueChanges.length === 1
|
|
19
19
|
? uniqueChanges
|
|
20
20
|
: uniqueChanges.filter((change, index) => {
|
|
21
|
-
|
|
21
|
+
const rest = uniqueChanges.filter((_, i) => i !== index)
|
|
22
22
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
23
|
+
return !rest.some(otherChange => {
|
|
24
|
+
return (
|
|
25
|
+
change.oldRange.from >= otherChange.oldRange.from &&
|
|
26
|
+
change.oldRange.to <= otherChange.oldRange.to &&
|
|
27
|
+
change.newRange.from >= otherChange.newRange.from &&
|
|
28
|
+
change.newRange.to <= otherChange.newRange.to
|
|
29
|
+
)
|
|
30
|
+
})
|
|
28
31
|
})
|
|
29
|
-
})
|
|
30
32
|
}
|
|
31
33
|
|
|
32
34
|
/**
|
|
@@ -45,8 +47,8 @@ export function getChangedRanges(transform: Transform): ChangedRange[] {
|
|
|
45
47
|
// @ts-ignore
|
|
46
48
|
if (!stepMap.ranges.length) {
|
|
47
49
|
const { from, to } = steps[index] as Step & {
|
|
48
|
-
from?: number
|
|
49
|
-
to?: number
|
|
50
|
+
from?: number
|
|
51
|
+
to?: number
|
|
50
52
|
}
|
|
51
53
|
|
|
52
54
|
if (from === undefined || to === undefined) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Node as ProseMirrorNode } from '@tiptap/pm/model'
|
|
1
|
+
import type { Node as ProseMirrorNode } from '@tiptap/pm/model'
|
|
2
2
|
|
|
3
|
-
import { JSONContent } from '../types.js'
|
|
3
|
+
import type { JSONContent } from '../types.js'
|
|
4
4
|
|
|
5
5
|
interface DebugJSONContent extends JSONContent {
|
|
6
6
|
from: number
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { ExtensionConfig } from '../Extension.js'
|
|
2
|
+
import type { MarkConfig } from '../Mark.js'
|
|
3
|
+
import type { NodeConfig } from '../Node.js'
|
|
4
|
+
import type { AnyExtension, MaybeThisParameterType, RemoveThis } from '../types.js'
|
|
2
5
|
|
|
3
6
|
/**
|
|
4
7
|
* Returns a field from an extension
|
|
@@ -7,26 +10,23 @@ import { AnyExtension, MaybeThisParameterType, RemoveThis } from '../types.js'
|
|
|
7
10
|
* @param context The context object that should be passed as `this` into the function
|
|
8
11
|
* @returns The field value
|
|
9
12
|
*/
|
|
10
|
-
export function getExtensionField<T = any>(
|
|
11
|
-
extension:
|
|
12
|
-
field:
|
|
13
|
+
export function getExtensionField<T = any, E extends AnyExtension = any>(
|
|
14
|
+
extension: E,
|
|
15
|
+
field: keyof ExtensionConfig | keyof MarkConfig | keyof NodeConfig,
|
|
13
16
|
context?: Omit<MaybeThisParameterType<T>, 'parent'>,
|
|
14
17
|
): RemoveThis<T> {
|
|
15
|
-
|
|
16
|
-
if (extension.config[field] === undefined && extension.parent) {
|
|
18
|
+
if (extension.config[field as keyof typeof extension.config] === undefined && extension.parent) {
|
|
17
19
|
return getExtensionField(extension.parent, field, context)
|
|
18
20
|
}
|
|
19
21
|
|
|
20
|
-
if (typeof extension.config[field] === 'function') {
|
|
21
|
-
const value = extension.config[field].bind({
|
|
22
|
+
if (typeof extension.config[field as keyof typeof extension.config] === 'function') {
|
|
23
|
+
const value = (extension.config[field as keyof typeof extension.config] as any).bind({
|
|
22
24
|
...context,
|
|
23
|
-
parent: extension.parent
|
|
24
|
-
? getExtensionField(extension.parent, field, context)
|
|
25
|
-
: null,
|
|
25
|
+
parent: extension.parent ? getExtensionField(extension.parent, field, context) : null,
|
|
26
26
|
})
|
|
27
27
|
|
|
28
28
|
return value
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
return extension.config[field]
|
|
31
|
+
return extension.config[field as keyof typeof extension.config] as RemoveThis<T>
|
|
32
32
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { Fragment, Schema } from '@tiptap/pm/model'
|
|
2
|
+
import { DOMSerializer } from '@tiptap/pm/model'
|
|
2
3
|
|
|
3
4
|
export function getHTMLFromFragment(fragment: Fragment, schema: Schema): string {
|
|
4
5
|
const documentFragment = DOMSerializer.fromSchema(schema).serializeFragment(fragment)
|
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
import { Mark, MarkType } from '@tiptap/pm/model'
|
|
2
|
-
import { EditorState } from '@tiptap/pm/state'
|
|
1
|
+
import type { Mark, MarkType } from '@tiptap/pm/model'
|
|
2
|
+
import type { EditorState } from '@tiptap/pm/state'
|
|
3
3
|
|
|
4
4
|
import { getMarkType } from './getMarkType.js'
|
|
5
5
|
|
|
6
|
-
export function getMarkAttributes(
|
|
7
|
-
state: EditorState,
|
|
8
|
-
typeOrName: string | MarkType,
|
|
9
|
-
): Record<string, any> {
|
|
6
|
+
export function getMarkAttributes(state: EditorState, typeOrName: string | MarkType): Record<string, any> {
|
|
10
7
|
const type = getMarkType(typeOrName, state.schema)
|
|
11
8
|
const { from, to, empty } = state.selection
|
|
12
9
|
const marks: Mark[] = []
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Mark as ProseMirrorMark, MarkType, ResolvedPos } from '@tiptap/pm/model'
|
|
1
|
+
import type { Mark as ProseMirrorMark, MarkType, ResolvedPos } from '@tiptap/pm/model'
|
|
2
2
|
|
|
3
|
-
import { Range } from '../types.js'
|
|
3
|
+
import type { Range } from '../types.js'
|
|
4
4
|
import { objectIncludes } from '../utilities/objectIncludes.js'
|
|
5
5
|
|
|
6
6
|
function findMarkInSet(
|
|
@@ -9,37 +9,59 @@ function findMarkInSet(
|
|
|
9
9
|
attributes: Record<string, any> = {},
|
|
10
10
|
): ProseMirrorMark | undefined {
|
|
11
11
|
return marks.find(item => {
|
|
12
|
-
return
|
|
12
|
+
return (
|
|
13
|
+
item.type === type &&
|
|
14
|
+
objectIncludes(
|
|
15
|
+
// Only check equality for the attributes that are provided
|
|
16
|
+
Object.fromEntries(Object.keys(attributes).map(k => [k, item.attrs[k]])),
|
|
17
|
+
attributes,
|
|
18
|
+
)
|
|
19
|
+
)
|
|
13
20
|
})
|
|
14
21
|
}
|
|
15
22
|
|
|
16
|
-
function isMarkInSet(
|
|
17
|
-
marks: ProseMirrorMark[],
|
|
18
|
-
type: MarkType,
|
|
19
|
-
attributes: Record<string, any> = {},
|
|
20
|
-
): boolean {
|
|
23
|
+
function isMarkInSet(marks: ProseMirrorMark[], type: MarkType, attributes: Record<string, any> = {}): boolean {
|
|
21
24
|
return !!findMarkInSet(marks, type, attributes)
|
|
22
25
|
}
|
|
23
26
|
|
|
27
|
+
/**
|
|
28
|
+
* Get the range of a mark at a resolved position.
|
|
29
|
+
*/
|
|
24
30
|
export function getMarkRange(
|
|
31
|
+
/**
|
|
32
|
+
* The position to get the mark range for.
|
|
33
|
+
*/
|
|
25
34
|
$pos: ResolvedPos,
|
|
35
|
+
/**
|
|
36
|
+
* The mark type to get the range for.
|
|
37
|
+
*/
|
|
26
38
|
type: MarkType,
|
|
27
|
-
|
|
39
|
+
/**
|
|
40
|
+
* The attributes to match against.
|
|
41
|
+
* If not provided, only the first mark at the position will be matched.
|
|
42
|
+
*/
|
|
43
|
+
attributes?: Record<string, any>,
|
|
28
44
|
): Range | void {
|
|
29
45
|
if (!$pos || !type) {
|
|
30
46
|
return
|
|
31
47
|
}
|
|
32
|
-
|
|
33
48
|
let start = $pos.parent.childAfter($pos.parentOffset)
|
|
34
49
|
|
|
35
|
-
|
|
50
|
+
// If the cursor is at the start of a text node that does not have the mark, look backward
|
|
51
|
+
if (!start.node || !start.node.marks.some(mark => mark.type === type)) {
|
|
36
52
|
start = $pos.parent.childBefore($pos.parentOffset)
|
|
37
53
|
}
|
|
38
54
|
|
|
39
|
-
|
|
55
|
+
// If there is no text node with the mark even backward, return undefined
|
|
56
|
+
if (!start.node || !start.node.marks.some(mark => mark.type === type)) {
|
|
40
57
|
return
|
|
41
58
|
}
|
|
42
59
|
|
|
60
|
+
// Default to only matching against the first mark's attributes
|
|
61
|
+
attributes = attributes || start.node.marks[0]?.attrs
|
|
62
|
+
|
|
63
|
+
// We now know that the cursor is either at the start, middle or end of a text node with the specified mark
|
|
64
|
+
// so we can look it up on the targeted mark
|
|
43
65
|
const mark = findMarkInSet([...start.node.marks], type, attributes)
|
|
44
66
|
|
|
45
67
|
if (!mark) {
|
|
@@ -51,17 +73,12 @@ export function getMarkRange(
|
|
|
51
73
|
let endIndex = startIndex + 1
|
|
52
74
|
let endPos = startPos + start.node.nodeSize
|
|
53
75
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
while (startIndex > 0 && mark.isInSet($pos.parent.child(startIndex - 1).marks)) {
|
|
76
|
+
while (startIndex > 0 && isMarkInSet([...$pos.parent.child(startIndex - 1).marks], type, attributes)) {
|
|
57
77
|
startIndex -= 1
|
|
58
78
|
startPos -= $pos.parent.child(startIndex).nodeSize
|
|
59
79
|
}
|
|
60
80
|
|
|
61
|
-
while (
|
|
62
|
-
endIndex < $pos.parent.childCount
|
|
63
|
-
&& isMarkInSet([...$pos.parent.child(endIndex).marks], type, attributes)
|
|
64
|
-
) {
|
|
81
|
+
while (endIndex < $pos.parent.childCount && isMarkInSet([...$pos.parent.child(endIndex).marks], type, attributes)) {
|
|
65
82
|
endPos += $pos.parent.child(endIndex).nodeSize
|
|
66
83
|
endIndex += 1
|
|
67
84
|
}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
import { MarkType, Schema } from '@tiptap/pm/model'
|
|
1
|
+
import type { MarkType, Schema } from '@tiptap/pm/model'
|
|
2
2
|
|
|
3
3
|
export function getMarkType(nameOrType: string | MarkType, schema: Schema): MarkType {
|
|
4
4
|
if (typeof nameOrType === 'string') {
|
|
5
5
|
if (!schema.marks[nameOrType]) {
|
|
6
|
-
throw Error(
|
|
7
|
-
`There is no mark type named '${nameOrType}'. Maybe you forgot to add the extension?`,
|
|
8
|
-
)
|
|
6
|
+
throw Error(`There is no mark type named '${nameOrType}'. Maybe you forgot to add the extension?`)
|
|
9
7
|
}
|
|
10
8
|
|
|
11
9
|
return schema.marks[nameOrType]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Node as ProseMirrorNode } from '@tiptap/pm/model'
|
|
1
|
+
import type { Node as ProseMirrorNode } from '@tiptap/pm/model'
|
|
2
2
|
|
|
3
|
-
import { MarkRange } from '../types.js'
|
|
3
|
+
import type { MarkRange } from '../types.js'
|
|
4
4
|
import { getMarkRange } from './getMarkRange.js'
|
|
5
5
|
|
|
6
6
|
export function getMarksBetween(from: number, to: number, doc: ProseMirrorNode): MarkRange[] {
|
|
@@ -12,7 +12,7 @@ export function getMarksBetween(from: number, to: number, doc: ProseMirrorNode):
|
|
|
12
12
|
.resolve(from)
|
|
13
13
|
.marks()
|
|
14
14
|
.forEach(mark => {
|
|
15
|
-
const $pos = doc.resolve(from
|
|
15
|
+
const $pos = doc.resolve(from)
|
|
16
16
|
const range = getMarkRange($pos, mark.type)
|
|
17
17
|
|
|
18
18
|
if (!range) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Node, NodeType } from '@tiptap/pm/model'
|
|
2
|
-
import { EditorState } from '@tiptap/pm/state'
|
|
1
|
+
import type { Node, NodeType } from '@tiptap/pm/model'
|
|
2
|
+
import type { EditorState } from '@tiptap/pm/state'
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Finds the first node of a given type or name in the current selection.
|
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
import { Node, NodeType } from '@tiptap/pm/model'
|
|
2
|
-
import { EditorState } from '@tiptap/pm/state'
|
|
1
|
+
import type { Node, NodeType } from '@tiptap/pm/model'
|
|
2
|
+
import type { EditorState } from '@tiptap/pm/state'
|
|
3
3
|
|
|
4
4
|
import { getNodeType } from './getNodeType.js'
|
|
5
5
|
|
|
6
|
-
export function getNodeAttributes(
|
|
7
|
-
state: EditorState,
|
|
8
|
-
typeOrName: string | NodeType,
|
|
9
|
-
): Record<string, any> {
|
|
6
|
+
export function getNodeAttributes(state: EditorState, typeOrName: string | NodeType): Record<string, any> {
|
|
10
7
|
const type = getNodeType(typeOrName, state.schema)
|
|
11
8
|
const { from, to } = state.selection
|
|
12
9
|
const nodes: Node[] = []
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
import { NodeType, Schema } from '@tiptap/pm/model'
|
|
1
|
+
import type { NodeType, Schema } from '@tiptap/pm/model'
|
|
2
2
|
|
|
3
3
|
export function getNodeType(nameOrType: string | NodeType, schema: Schema): NodeType {
|
|
4
4
|
if (typeof nameOrType === 'string') {
|
|
5
5
|
if (!schema.nodes[nameOrType]) {
|
|
6
|
-
throw Error(
|
|
7
|
-
`There is no node type named '${nameOrType}'. Maybe you forgot to add the extension?`,
|
|
8
|
-
)
|
|
6
|
+
throw Error(`There is no node type named '${nameOrType}'. Maybe you forgot to add the extension?`)
|
|
9
7
|
}
|
|
10
8
|
|
|
11
9
|
return schema.nodes[nameOrType]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Mark, Node } from '@tiptap/pm/model'
|
|
1
|
+
import type { Mark, Node } from '@tiptap/pm/model'
|
|
2
2
|
|
|
3
|
-
import { ExtensionAttribute } from '../types.js'
|
|
3
|
+
import type { ExtensionAttribute } from '../types.js'
|
|
4
4
|
import { mergeAttributes } from '../utilities/mergeAttributes.js'
|
|
5
5
|
|
|
6
6
|
export function getRenderedAttributes(
|
|
@@ -8,6 +8,7 @@ export function getRenderedAttributes(
|
|
|
8
8
|
extensionAttributes: ExtensionAttribute[],
|
|
9
9
|
): Record<string, any> {
|
|
10
10
|
return extensionAttributes
|
|
11
|
+
.filter(attribute => attribute.type === nodeOrMark.type.name)
|
|
11
12
|
.filter(item => item.attribute.rendered)
|
|
12
13
|
.map(item => {
|
|
13
14
|
if (!item.attribute.renderHTML) {
|
package/src/helpers/getSchema.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { Schema } from '@tiptap/pm/model'
|
|
1
|
+
import type { Schema } from '@tiptap/pm/model'
|
|
2
2
|
|
|
3
|
-
import { Editor } from '../Editor.js'
|
|
4
|
-
import {
|
|
5
|
-
import { Extensions } from '../types.js'
|
|
3
|
+
import type { Editor } from '../Editor.js'
|
|
4
|
+
import type { Extensions } from '../types.js'
|
|
6
5
|
import { getSchemaByResolvedExtensions } from './getSchemaByResolvedExtensions.js'
|
|
6
|
+
import { resolveExtensions } from './resolveExtensions.js'
|
|
7
7
|
|
|
8
8
|
export function getSchema(extensions: Extensions, editor?: Editor): Schema {
|
|
9
|
-
const resolvedExtensions =
|
|
9
|
+
const resolvedExtensions = resolveExtensions(extensions)
|
|
10
10
|
|
|
11
11
|
return getSchemaByResolvedExtensions(resolvedExtensions, editor)
|
|
12
12
|
}
|