@tiptap/core 2.1.0-rc.1 → 2.1.0-rc.11
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/dist/index.cjs +96 -31
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +94 -32
- package/dist/index.js.map +1 -1
- package/dist/index.umd.js +96 -31
- package/dist/index.umd.js.map +1 -1
- package/dist/packages/core/src/CommandManager.d.ts +2 -2
- package/dist/packages/core/src/Editor.d.ts +8 -4
- package/dist/packages/core/src/Extension.d.ts +7 -7
- package/dist/packages/core/src/ExtensionManager.d.ts +2 -2
- package/dist/packages/core/src/InputRule.d.ts +2 -2
- package/dist/packages/core/src/Mark.d.ts +6 -6
- package/dist/packages/core/src/Node.d.ts +5 -5
- package/dist/packages/core/src/NodeView.d.ts +3 -3
- package/dist/packages/core/src/PasteRule.d.ts +2 -2
- package/dist/packages/core/src/commands/blur.d.ts +1 -1
- package/dist/packages/core/src/commands/clearContent.d.ts +1 -1
- package/dist/packages/core/src/commands/clearNodes.d.ts +1 -1
- package/dist/packages/core/src/commands/command.d.ts +1 -1
- package/dist/packages/core/src/commands/createParagraphNear.d.ts +1 -1
- package/dist/packages/core/src/commands/cut.d.ts +15 -0
- package/dist/packages/core/src/commands/deleteCurrentNode.d.ts +1 -1
- package/dist/packages/core/src/commands/deleteNode.d.ts +1 -1
- package/dist/packages/core/src/commands/deleteRange.d.ts +1 -1
- package/dist/packages/core/src/commands/deleteSelection.d.ts +1 -1
- package/dist/packages/core/src/commands/enter.d.ts +1 -1
- package/dist/packages/core/src/commands/exitCode.d.ts +1 -1
- package/dist/packages/core/src/commands/extendMarkRange.d.ts +1 -1
- package/dist/packages/core/src/commands/first.d.ts +1 -1
- package/dist/packages/core/src/commands/focus.d.ts +1 -1
- package/dist/packages/core/src/commands/forEach.d.ts +1 -1
- package/dist/packages/core/src/commands/index.d.ts +51 -50
- package/dist/packages/core/src/commands/insertContent.d.ts +1 -1
- package/dist/packages/core/src/commands/insertContentAt.d.ts +1 -1
- package/dist/packages/core/src/commands/join.d.ts +1 -1
- package/dist/packages/core/src/commands/keyboardShortcut.d.ts +1 -1
- package/dist/packages/core/src/commands/lift.d.ts +1 -1
- package/dist/packages/core/src/commands/liftEmptyBlock.d.ts +1 -1
- package/dist/packages/core/src/commands/liftListItem.d.ts +1 -1
- package/dist/packages/core/src/commands/newlineInCode.d.ts +1 -1
- package/dist/packages/core/src/commands/resetAttributes.d.ts +1 -1
- package/dist/packages/core/src/commands/scrollIntoView.d.ts +1 -1
- package/dist/packages/core/src/commands/selectAll.d.ts +1 -1
- package/dist/packages/core/src/commands/selectNodeBackward.d.ts +1 -1
- package/dist/packages/core/src/commands/selectNodeForward.d.ts +1 -1
- package/dist/packages/core/src/commands/selectParentNode.d.ts +1 -1
- package/dist/packages/core/src/commands/selectTextblockEnd.d.ts +1 -1
- package/dist/packages/core/src/commands/selectTextblockStart.d.ts +1 -1
- package/dist/packages/core/src/commands/setContent.d.ts +1 -1
- package/dist/packages/core/src/commands/setMark.d.ts +1 -1
- package/dist/packages/core/src/commands/setMeta.d.ts +1 -1
- package/dist/packages/core/src/commands/setNode.d.ts +1 -1
- package/dist/packages/core/src/commands/setNodeSelection.d.ts +1 -1
- package/dist/packages/core/src/commands/setTextSelection.d.ts +1 -1
- package/dist/packages/core/src/commands/sinkListItem.d.ts +1 -1
- package/dist/packages/core/src/commands/splitBlock.d.ts +1 -1
- package/dist/packages/core/src/commands/splitListItem.d.ts +1 -1
- package/dist/packages/core/src/commands/toggleList.d.ts +1 -1
- package/dist/packages/core/src/commands/toggleMark.d.ts +1 -1
- package/dist/packages/core/src/commands/toggleNode.d.ts +1 -1
- package/dist/packages/core/src/commands/toggleWrap.d.ts +1 -1
- package/dist/packages/core/src/commands/undoInputRule.d.ts +1 -1
- package/dist/packages/core/src/commands/unsetAllMarks.d.ts +1 -1
- package/dist/packages/core/src/commands/unsetMark.d.ts +1 -1
- package/dist/packages/core/src/commands/updateAttributes.d.ts +1 -1
- package/dist/packages/core/src/commands/wrapIn.d.ts +1 -1
- package/dist/packages/core/src/commands/wrapInList.d.ts +1 -1
- package/dist/packages/core/src/extensions/clipboardTextSerializer.d.ts +1 -1
- package/dist/packages/core/src/extensions/commands.d.ts +2 -2
- package/dist/packages/core/src/extensions/editable.d.ts +1 -1
- package/dist/packages/core/src/extensions/focusEvents.d.ts +1 -1
- package/dist/packages/core/src/extensions/index.d.ts +6 -6
- package/dist/packages/core/src/extensions/keymap.d.ts +1 -1
- package/dist/packages/core/src/extensions/tabindex.d.ts +1 -1
- package/dist/packages/core/src/helpers/createDocument.d.ts +1 -1
- package/dist/packages/core/src/helpers/createNodeFromContent.d.ts +1 -1
- package/dist/packages/core/src/helpers/findChildren.d.ts +1 -1
- package/dist/packages/core/src/helpers/findChildrenInRange.d.ts +1 -1
- package/dist/packages/core/src/helpers/findParentNode.d.ts +1 -1
- package/dist/packages/core/src/helpers/findParentNodeClosestToPos.d.ts +1 -1
- package/dist/packages/core/src/helpers/generateHTML.d.ts +1 -1
- package/dist/packages/core/src/helpers/generateJSON.d.ts +1 -1
- package/dist/packages/core/src/helpers/generateText.d.ts +1 -1
- package/dist/packages/core/src/helpers/getAttributesFromExtensions.d.ts +1 -1
- package/dist/packages/core/src/helpers/getChangedRanges.d.ts +1 -1
- package/dist/packages/core/src/helpers/getDebugJSON.d.ts +1 -1
- package/dist/packages/core/src/helpers/getExtensionField.d.ts +1 -1
- package/dist/packages/core/src/helpers/getMarkRange.d.ts +1 -1
- package/dist/packages/core/src/helpers/getMarksBetween.d.ts +1 -1
- package/dist/packages/core/src/helpers/getNodeAtPosition.d.ts +11 -0
- package/dist/packages/core/src/helpers/getRenderedAttributes.d.ts +1 -1
- package/dist/packages/core/src/helpers/getSchema.d.ts +2 -2
- package/dist/packages/core/src/helpers/getSchemaByResolvedExtensions.d.ts +2 -2
- package/dist/packages/core/src/helpers/getSplittedAttributes.d.ts +1 -1
- package/dist/packages/core/src/helpers/getText.d.ts +1 -1
- package/dist/packages/core/src/helpers/getTextBetween.d.ts +1 -1
- package/dist/packages/core/src/helpers/getTextSerializersFromSchema.d.ts +1 -1
- package/dist/packages/core/src/helpers/index.d.ts +50 -47
- package/dist/packages/core/src/helpers/injectExtensionAttributesToParseRule.d.ts +1 -1
- package/dist/packages/core/src/helpers/isAtEndOfNode.d.ts +2 -0
- package/dist/packages/core/src/helpers/isAtStartOfNode.d.ts +2 -0
- package/dist/packages/core/src/helpers/isExtensionRulesEnabled.d.ts +1 -1
- package/dist/packages/core/src/helpers/isList.d.ts +1 -1
- package/dist/packages/core/src/helpers/resolveFocusPosition.d.ts +1 -1
- package/dist/packages/core/src/helpers/splitExtensions.d.ts +4 -4
- package/dist/packages/core/src/index.d.ts +15 -15
- package/dist/packages/core/src/inputRules/index.d.ts +5 -5
- package/dist/packages/core/src/inputRules/markInputRule.d.ts +2 -2
- package/dist/packages/core/src/inputRules/nodeInputRule.d.ts +2 -2
- package/dist/packages/core/src/inputRules/textInputRule.d.ts +1 -1
- package/dist/packages/core/src/inputRules/textblockTypeInputRule.d.ts +2 -2
- package/dist/packages/core/src/inputRules/wrappingInputRule.d.ts +3 -3
- package/dist/packages/core/src/pasteRules/index.d.ts +3 -3
- package/dist/packages/core/src/pasteRules/markPasteRule.d.ts +2 -2
- package/dist/packages/core/src/pasteRules/nodePasteRule.d.ts +2 -2
- package/dist/packages/core/src/pasteRules/textPasteRule.d.ts +1 -1
- package/dist/packages/core/src/types.d.ts +5 -5
- package/dist/packages/core/src/utilities/callOrReturn.d.ts +1 -1
- package/dist/packages/core/src/utilities/index.d.ts +20 -20
- package/dist/packages/core/src/utilities/isAndroid.d.ts +1 -0
- package/package.json +2 -2
- package/src/CommandManager.ts +4 -8
- package/src/Editor.ts +24 -16
- package/src/Extension.ts +10 -10
- package/src/ExtensionManager.ts +15 -15
- package/src/InputRule.ts +6 -6
- package/src/Mark.ts +9 -9
- package/src/Node.ts +8 -8
- package/src/NodeView.ts +8 -6
- package/src/PasteRule.ts +6 -6
- package/src/commands/blur.ts +1 -1
- package/src/commands/clearContent.ts +1 -1
- package/src/commands/clearNodes.ts +1 -1
- package/src/commands/command.ts +1 -1
- package/src/commands/createParagraphNear.ts +1 -1
- package/src/commands/cut.ts +27 -0
- package/src/commands/deleteCurrentNode.ts +1 -1
- package/src/commands/deleteNode.ts +2 -2
- package/src/commands/deleteRange.ts +1 -1
- package/src/commands/deleteSelection.ts +1 -1
- package/src/commands/enter.ts +1 -1
- package/src/commands/exitCode.ts +1 -1
- package/src/commands/extendMarkRange.ts +3 -3
- package/src/commands/first.ts +1 -1
- package/src/commands/focus.ts +4 -4
- package/src/commands/forEach.ts +1 -1
- package/src/commands/index.ts +51 -50
- package/src/commands/insertContent.ts +1 -1
- package/src/commands/insertContentAt.ts +4 -4
- package/src/commands/join.ts +1 -1
- package/src/commands/keyboardShortcut.ts +3 -3
- package/src/commands/lift.ts +3 -3
- package/src/commands/liftEmptyBlock.ts +1 -1
- package/src/commands/liftListItem.ts +2 -2
- package/src/commands/newlineInCode.ts +1 -1
- package/src/commands/resetAttributes.ts +5 -5
- package/src/commands/scrollIntoView.ts +1 -1
- package/src/commands/selectAll.ts +1 -1
- package/src/commands/selectNodeBackward.ts +1 -1
- package/src/commands/selectNodeForward.ts +1 -1
- package/src/commands/selectParentNode.ts +1 -1
- package/src/commands/selectTextblockEnd.ts +1 -1
- package/src/commands/selectTextblockStart.ts +1 -1
- package/src/commands/setContent.ts +2 -2
- package/src/commands/setMark.ts +4 -4
- package/src/commands/setMeta.ts +1 -1
- package/src/commands/setNode.ts +2 -2
- package/src/commands/setNodeSelection.ts +2 -2
- package/src/commands/setTextSelection.ts +2 -2
- package/src/commands/sinkListItem.ts +2 -2
- package/src/commands/splitBlock.ts +3 -3
- package/src/commands/splitListItem.ts +3 -3
- package/src/commands/toggleList.ts +4 -4
- package/src/commands/toggleMark.ts +3 -3
- package/src/commands/toggleNode.ts +3 -3
- package/src/commands/toggleWrap.ts +3 -3
- package/src/commands/undoInputRule.ts +1 -1
- package/src/commands/unsetAllMarks.ts +1 -1
- package/src/commands/unsetMark.ts +3 -3
- package/src/commands/updateAttributes.ts +4 -4
- package/src/commands/wrapIn.ts +2 -2
- package/src/commands/wrapInList.ts +2 -2
- package/src/extensions/clipboardTextSerializer.ts +3 -3
- package/src/extensions/commands.ts +3 -3
- package/src/extensions/editable.ts +1 -1
- package/src/extensions/focusEvents.ts +1 -1
- package/src/extensions/index.ts +6 -6
- package/src/extensions/keymap.ts +5 -5
- package/src/extensions/tabindex.ts +1 -1
- package/src/helpers/createDocument.ts +2 -2
- package/src/helpers/createNodeFromContent.ts +2 -2
- package/src/helpers/findChildren.ts +1 -1
- package/src/helpers/findChildrenInRange.ts +1 -1
- package/src/helpers/findParentNode.ts +2 -2
- package/src/helpers/findParentNodeClosestToPos.ts +1 -1
- package/src/helpers/generateHTML.ts +3 -3
- package/src/helpers/generateJSON.ts +3 -3
- package/src/helpers/generateText.ts +4 -4
- package/src/helpers/getAttributes.ts +3 -3
- package/src/helpers/getAttributesFromExtensions.ts +4 -4
- package/src/helpers/getChangedRanges.ts +2 -2
- package/src/helpers/getDebugJSON.ts +1 -1
- package/src/helpers/getExtensionField.ts +1 -1
- package/src/helpers/getMarkAttributes.ts +1 -1
- package/src/helpers/getMarkRange.ts +2 -2
- package/src/helpers/getMarksBetween.ts +2 -2
- package/src/helpers/getNodeAtPosition.ts +29 -0
- package/src/helpers/getNodeAttributes.ts +1 -1
- package/src/helpers/getRenderedAttributes.ts +2 -2
- package/src/helpers/getSchema.ts +4 -4
- package/src/helpers/getSchemaByResolvedExtensions.ts +9 -9
- package/src/helpers/getSplittedAttributes.ts +1 -1
- package/src/helpers/getText.ts +2 -2
- package/src/helpers/getTextBetween.ts +1 -1
- package/src/helpers/getTextSerializersFromSchema.ts +1 -1
- package/src/helpers/index.ts +50 -47
- package/src/helpers/injectExtensionAttributesToParseRule.ts +2 -2
- package/src/helpers/isActive.ts +3 -3
- package/src/helpers/isAtEndOfNode.ts +11 -0
- package/src/helpers/isAtStartOfNode.ts +11 -0
- package/src/helpers/isExtensionRulesEnabled.ts +1 -1
- package/src/helpers/isList.ts +5 -5
- package/src/helpers/isMarkActive.ts +3 -3
- package/src/helpers/isNodeActive.ts +3 -3
- package/src/helpers/posToDOMRect.ts +1 -1
- package/src/helpers/resolveFocusPosition.ts +2 -2
- package/src/helpers/splitExtensions.ts +4 -4
- package/src/index.ts +15 -15
- package/src/inputRules/index.ts +5 -5
- package/src/inputRules/markInputRule.ts +5 -6
- package/src/inputRules/nodeInputRule.ts +3 -3
- package/src/inputRules/textInputRule.ts +1 -1
- package/src/inputRules/textblockTypeInputRule.ts +3 -3
- package/src/inputRules/wrappingInputRule.ts +4 -4
- package/src/pasteRules/index.ts +3 -3
- package/src/pasteRules/markPasteRule.ts +4 -4
- package/src/pasteRules/nodePasteRule.ts +3 -3
- package/src/pasteRules/textPasteRule.ts +1 -1
- package/src/types.ts +5 -5
- package/src/utilities/callOrReturn.ts +2 -2
- package/src/utilities/index.ts +20 -20
- package/src/utilities/isAndroid.ts +3 -0
- package/src/utilities/mergeDeep.ts +1 -1
- package/src/utilities/objectIncludes.ts +1 -1
package/dist/index.cjs
CHANGED
|
@@ -121,9 +121,6 @@ class CommandManager {
|
|
|
121
121
|
buildProps(tr, shouldDispatch = true) {
|
|
122
122
|
const { rawCommands, editor, state } = this;
|
|
123
123
|
const { view } = editor;
|
|
124
|
-
if (state.storedMarks) {
|
|
125
|
-
tr.setStoredMarks(state.storedMarks);
|
|
126
|
-
}
|
|
127
124
|
const props = {
|
|
128
125
|
tr,
|
|
129
126
|
editor,
|
|
@@ -133,7 +130,7 @@ class CommandManager {
|
|
|
133
130
|
transaction: tr,
|
|
134
131
|
}),
|
|
135
132
|
dispatch: shouldDispatch ? () => undefined : undefined,
|
|
136
|
-
chain: () => this.createChain(tr),
|
|
133
|
+
chain: () => this.createChain(tr, shouldDispatch),
|
|
137
134
|
can: () => this.createCan(tr),
|
|
138
135
|
get commands() {
|
|
139
136
|
return Object.fromEntries(Object.entries(rawCommands).map(([name, command]) => {
|
|
@@ -1312,6 +1309,19 @@ const createParagraphNear = () => ({ state, dispatch }) => {
|
|
|
1312
1309
|
return commands$1.createParagraphNear(state, dispatch);
|
|
1313
1310
|
};
|
|
1314
1311
|
|
|
1312
|
+
const cut = (originRange, targetPos) => ({ editor }) => {
|
|
1313
|
+
const { state } = editor;
|
|
1314
|
+
const contentSlice = state.doc.slice(originRange.from, originRange.to);
|
|
1315
|
+
return editor
|
|
1316
|
+
.chain()
|
|
1317
|
+
.deleteRange(originRange)
|
|
1318
|
+
.command(({ commands, tr }) => {
|
|
1319
|
+
return commands.insertContentAt(tr.mapping.map(targetPos), contentSlice.content.toJSON());
|
|
1320
|
+
})
|
|
1321
|
+
.focus()
|
|
1322
|
+
.run();
|
|
1323
|
+
};
|
|
1324
|
+
|
|
1315
1325
|
const deleteCurrentNode = () => ({ tr, dispatch }) => {
|
|
1316
1326
|
const { selection } = tr;
|
|
1317
1327
|
const currentNode = selection.$anchor.node();
|
|
@@ -1641,7 +1651,7 @@ const insertContentAt = (position, value, options) => ({ tr, dispatch, editor })
|
|
|
1641
1651
|
if (content.toString() === '<>') {
|
|
1642
1652
|
return true;
|
|
1643
1653
|
}
|
|
1644
|
-
let { from, to } = typeof position === 'number' ? { from: position, to: position } : position;
|
|
1654
|
+
let { from, to } = typeof position === 'number' ? { from: position, to: position } : { from: position.from, to: position.to };
|
|
1645
1655
|
let isOnlyTextContent = true;
|
|
1646
1656
|
let isOnlyBlockContent = true;
|
|
1647
1657
|
const nodes = isFragment(content) ? content : [content];
|
|
@@ -1949,6 +1959,28 @@ const setContent = (content, emitUpdate = false, parseOptions = {}) => ({ tr, ed
|
|
|
1949
1959
|
return true;
|
|
1950
1960
|
};
|
|
1951
1961
|
|
|
1962
|
+
function getMarkAttributes(state, typeOrName) {
|
|
1963
|
+
const type = getMarkType(typeOrName, state.schema);
|
|
1964
|
+
const { from, to, empty } = state.selection;
|
|
1965
|
+
const marks = [];
|
|
1966
|
+
if (empty) {
|
|
1967
|
+
if (state.storedMarks) {
|
|
1968
|
+
marks.push(...state.storedMarks);
|
|
1969
|
+
}
|
|
1970
|
+
marks.push(...state.selection.$head.marks());
|
|
1971
|
+
}
|
|
1972
|
+
else {
|
|
1973
|
+
state.doc.nodesBetween(from, to, node => {
|
|
1974
|
+
marks.push(...node.marks);
|
|
1975
|
+
});
|
|
1976
|
+
}
|
|
1977
|
+
const mark = marks.find(markItem => markItem.type.name === type.name);
|
|
1978
|
+
if (!mark) {
|
|
1979
|
+
return {};
|
|
1980
|
+
}
|
|
1981
|
+
return { ...mark.attrs };
|
|
1982
|
+
}
|
|
1983
|
+
|
|
1952
1984
|
/**
|
|
1953
1985
|
* Returns a new `Transform` based on all steps of the passed transactions.
|
|
1954
1986
|
*/
|
|
@@ -2074,28 +2106,6 @@ function generateText(doc, extensions, options) {
|
|
|
2074
2106
|
});
|
|
2075
2107
|
}
|
|
2076
2108
|
|
|
2077
|
-
function getMarkAttributes(state, typeOrName) {
|
|
2078
|
-
const type = getMarkType(typeOrName, state.schema);
|
|
2079
|
-
const { from, to, empty } = state.selection;
|
|
2080
|
-
const marks = [];
|
|
2081
|
-
if (empty) {
|
|
2082
|
-
if (state.storedMarks) {
|
|
2083
|
-
marks.push(...state.storedMarks);
|
|
2084
|
-
}
|
|
2085
|
-
marks.push(...state.selection.$head.marks());
|
|
2086
|
-
}
|
|
2087
|
-
else {
|
|
2088
|
-
state.doc.nodesBetween(from, to, node => {
|
|
2089
|
-
marks.push(...node.marks);
|
|
2090
|
-
});
|
|
2091
|
-
}
|
|
2092
|
-
const mark = marks.find(markItem => markItem.type.name === type.name);
|
|
2093
|
-
if (!mark) {
|
|
2094
|
-
return {};
|
|
2095
|
-
}
|
|
2096
|
-
return { ...mark.attrs };
|
|
2097
|
-
}
|
|
2098
|
-
|
|
2099
2109
|
function getNodeAttributes(state, typeOrName) {
|
|
2100
2110
|
const type = getNodeType(typeOrName, state.schema);
|
|
2101
2111
|
const { from, to } = state.selection;
|
|
@@ -2267,6 +2277,30 @@ function getMarksBetween(from, to, doc) {
|
|
|
2267
2277
|
return marks;
|
|
2268
2278
|
}
|
|
2269
2279
|
|
|
2280
|
+
/**
|
|
2281
|
+
* Finds the first node of a given type or name in the current selection.
|
|
2282
|
+
* @param state The editor state.
|
|
2283
|
+
* @param typeOrName The node type or name.
|
|
2284
|
+
* @param pos The position to start searching from.
|
|
2285
|
+
* @param maxDepth The maximum depth to search.
|
|
2286
|
+
* @returns The node and the depth as an array.
|
|
2287
|
+
*/
|
|
2288
|
+
const getNodeAtPosition = (state, typeOrName, pos, maxDepth = 20) => {
|
|
2289
|
+
const $pos = state.doc.resolve(pos);
|
|
2290
|
+
let currentDepth = maxDepth;
|
|
2291
|
+
let node = null;
|
|
2292
|
+
while (currentDepth > 0 && node === null) {
|
|
2293
|
+
const currentNode = $pos.node(currentDepth);
|
|
2294
|
+
if ((currentNode === null || currentNode === void 0 ? void 0 : currentNode.type.name) === typeOrName) {
|
|
2295
|
+
node = currentNode;
|
|
2296
|
+
}
|
|
2297
|
+
else {
|
|
2298
|
+
currentDepth -= 1;
|
|
2299
|
+
}
|
|
2300
|
+
}
|
|
2301
|
+
return [node, currentDepth];
|
|
2302
|
+
};
|
|
2303
|
+
|
|
2270
2304
|
function getSplittedAttributes(extensionAttributes, typeName, attributes) {
|
|
2271
2305
|
return Object.fromEntries(Object
|
|
2272
2306
|
.entries(attributes)
|
|
@@ -2357,6 +2391,22 @@ function isActive(state, name, attributes = {}) {
|
|
|
2357
2391
|
return false;
|
|
2358
2392
|
}
|
|
2359
2393
|
|
|
2394
|
+
const istAtEndOfNode = (state) => {
|
|
2395
|
+
const { $from, $to } = state.selection;
|
|
2396
|
+
if ($to.parentOffset < $to.parent.nodeSize - 2 || $from.pos !== $to.pos) {
|
|
2397
|
+
return false;
|
|
2398
|
+
}
|
|
2399
|
+
return true;
|
|
2400
|
+
};
|
|
2401
|
+
|
|
2402
|
+
const isAtStartOfNode = (state) => {
|
|
2403
|
+
const { $from, $to } = state.selection;
|
|
2404
|
+
if ($from.parentOffset > 0 || $from.pos !== $to.pos) {
|
|
2405
|
+
return false;
|
|
2406
|
+
}
|
|
2407
|
+
return true;
|
|
2408
|
+
};
|
|
2409
|
+
|
|
2360
2410
|
function isList(name, extensions) {
|
|
2361
2411
|
const { nodeExtensions } = splitExtensions(extensions);
|
|
2362
2412
|
const extension = nodeExtensions.find(item => item.name === name);
|
|
@@ -2964,6 +3014,7 @@ var commands = /*#__PURE__*/Object.freeze({
|
|
|
2964
3014
|
clearNodes: clearNodes,
|
|
2965
3015
|
command: command,
|
|
2966
3016
|
createParagraphNear: createParagraphNear,
|
|
3017
|
+
cut: cut,
|
|
2967
3018
|
deleteCurrentNode: deleteCurrentNode,
|
|
2968
3019
|
deleteNode: deleteNode,
|
|
2969
3020
|
deleteRange: deleteRange,
|
|
@@ -3497,6 +3548,7 @@ class Editor extends EventEmitter {
|
|
|
3497
3548
|
});
|
|
3498
3549
|
this.view.updateState(newState);
|
|
3499
3550
|
this.createNodeViews();
|
|
3551
|
+
this.prependClass();
|
|
3500
3552
|
// Let’s store the editor instance in the DOM element.
|
|
3501
3553
|
// So we’ll have access to it for tests.
|
|
3502
3554
|
const dom = this.view.dom;
|
|
@@ -3510,6 +3562,12 @@ class Editor extends EventEmitter {
|
|
|
3510
3562
|
nodeViews: this.extensionManager.nodeViews,
|
|
3511
3563
|
});
|
|
3512
3564
|
}
|
|
3565
|
+
/**
|
|
3566
|
+
* Prepend class name to element.
|
|
3567
|
+
*/
|
|
3568
|
+
prependClass() {
|
|
3569
|
+
this.view.dom.className = `tiptap ${this.view.dom.className}`;
|
|
3570
|
+
}
|
|
3513
3571
|
captureTransaction(fn) {
|
|
3514
3572
|
this.isCapturingTransaction = true;
|
|
3515
3573
|
fn();
|
|
@@ -3660,7 +3718,6 @@ function markInputRule(config) {
|
|
|
3660
3718
|
const { tr } = state;
|
|
3661
3719
|
const captureGroup = match[match.length - 1];
|
|
3662
3720
|
const fullMatch = match[0];
|
|
3663
|
-
let markEnd = range.to;
|
|
3664
3721
|
if (captureGroup) {
|
|
3665
3722
|
const startSpaces = fullMatch.search(/\S/);
|
|
3666
3723
|
const textStart = range.from + fullMatch.indexOf(captureGroup);
|
|
@@ -3681,7 +3738,7 @@ function markInputRule(config) {
|
|
|
3681
3738
|
if (textStart > range.from) {
|
|
3682
3739
|
tr.delete(range.from + startSpaces, textStart);
|
|
3683
3740
|
}
|
|
3684
|
-
markEnd = range.from + startSpaces + captureGroup.length;
|
|
3741
|
+
const markEnd = range.from + startSpaces + captureGroup.length;
|
|
3685
3742
|
tr.addMark(range.from + startSpaces, markEnd, config.type.create(attributes || {}));
|
|
3686
3743
|
tr.removeStoredMark(config.type);
|
|
3687
3744
|
}
|
|
@@ -3969,6 +4026,10 @@ class Node {
|
|
|
3969
4026
|
}
|
|
3970
4027
|
}
|
|
3971
4028
|
|
|
4029
|
+
function isAndroid() {
|
|
4030
|
+
return navigator.platform === 'Android' || /android/i.test(navigator.userAgent);
|
|
4031
|
+
}
|
|
4032
|
+
|
|
3972
4033
|
class NodeView {
|
|
3973
4034
|
constructor(component, props, options) {
|
|
3974
4035
|
this.isDragging = false;
|
|
@@ -4109,13 +4170,14 @@ class NodeView {
|
|
|
4109
4170
|
if (mutation.type === 'selection') {
|
|
4110
4171
|
return false;
|
|
4111
4172
|
}
|
|
4112
|
-
// try to prevent a bug on iOS that will break node views on enter
|
|
4173
|
+
// try to prevent a bug on iOS and Android that will break node views on enter
|
|
4113
4174
|
// this is because ProseMirror can’t preventDispatch on enter
|
|
4114
4175
|
// this will lead to a re-render of the node view on enter
|
|
4115
4176
|
// see: https://github.com/ueberdosis/tiptap/issues/1214
|
|
4177
|
+
// see: https://github.com/ueberdosis/tiptap/issues/2534
|
|
4116
4178
|
if (this.dom.contains(mutation.target)
|
|
4117
4179
|
&& mutation.type === 'childList'
|
|
4118
|
-
&& isiOS()
|
|
4180
|
+
&& (isiOS() || isAndroid())
|
|
4119
4181
|
&& this.editor.isFocused) {
|
|
4120
4182
|
const changedNodes = [
|
|
4121
4183
|
...Array.from(mutation.addedNodes),
|
|
@@ -4318,6 +4380,7 @@ exports.getMarkAttributes = getMarkAttributes;
|
|
|
4318
4380
|
exports.getMarkRange = getMarkRange;
|
|
4319
4381
|
exports.getMarkType = getMarkType;
|
|
4320
4382
|
exports.getMarksBetween = getMarksBetween;
|
|
4383
|
+
exports.getNodeAtPosition = getNodeAtPosition;
|
|
4321
4384
|
exports.getNodeAttributes = getNodeAttributes;
|
|
4322
4385
|
exports.getNodeType = getNodeType;
|
|
4323
4386
|
exports.getRenderedAttributes = getRenderedAttributes;
|
|
@@ -4333,6 +4396,7 @@ exports.getTextSerializersFromSchema = getTextSerializersFromSchema;
|
|
|
4333
4396
|
exports.injectExtensionAttributesToParseRule = injectExtensionAttributesToParseRule;
|
|
4334
4397
|
exports.inputRulesPlugin = inputRulesPlugin;
|
|
4335
4398
|
exports.isActive = isActive;
|
|
4399
|
+
exports.isAtStartOfNode = isAtStartOfNode;
|
|
4336
4400
|
exports.isEmptyObject = isEmptyObject;
|
|
4337
4401
|
exports.isExtensionRulesEnabled = isExtensionRulesEnabled;
|
|
4338
4402
|
exports.isFunction = isFunction;
|
|
@@ -4348,6 +4412,7 @@ exports.isRegExp = isRegExp;
|
|
|
4348
4412
|
exports.isString = isString;
|
|
4349
4413
|
exports.isTextSelection = isTextSelection;
|
|
4350
4414
|
exports.isiOS = isiOS;
|
|
4415
|
+
exports.istAtEndOfNode = istAtEndOfNode;
|
|
4351
4416
|
exports.markInputRule = markInputRule;
|
|
4352
4417
|
exports.markPasteRule = markPasteRule;
|
|
4353
4418
|
exports.mergeAttributes = mergeAttributes;
|