@tiptap/extension-table 2.5.0-beta.2 → 2.5.0-beta.3
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 +328 -328
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +327 -327
- package/dist/index.js.map +1 -1
- package/dist/index.umd.js +328 -328
- package/dist/index.umd.js.map +1 -1
- package/dist/packages/core/src/CommandManager.d.ts +20 -0
- package/dist/packages/core/src/Editor.d.ts +161 -0
- package/dist/packages/core/src/EventEmitter.d.ts +11 -0
- package/dist/packages/core/src/Extension.d.ts +343 -0
- package/dist/packages/core/src/ExtensionManager.d.ts +55 -0
- package/dist/packages/core/src/InputRule.d.ts +42 -0
- package/dist/packages/core/src/Mark.d.ts +451 -0
- package/dist/packages/core/src/Node.d.ts +611 -0
- package/dist/packages/core/src/NodePos.d.ts +44 -0
- package/dist/packages/core/src/NodeView.d.ts +31 -0
- package/dist/packages/core/src/PasteRule.d.ts +50 -0
- package/dist/packages/core/src/Tracker.d.ts +11 -0
- package/dist/packages/core/src/commands/blur.d.ts +13 -0
- package/dist/packages/core/src/commands/clearContent.d.ts +14 -0
- package/dist/packages/core/src/commands/clearNodes.d.ts +13 -0
- package/dist/packages/core/src/commands/command.d.ts +18 -0
- package/dist/packages/core/src/commands/createParagraphNear.d.ts +13 -0
- package/dist/packages/core/src/commands/cut.d.ts +20 -0
- package/dist/packages/core/src/commands/deleteCurrentNode.d.ts +13 -0
- package/dist/packages/core/src/commands/deleteNode.d.ts +15 -0
- package/dist/packages/core/src/commands/deleteRange.d.ts +14 -0
- package/dist/packages/core/src/commands/deleteSelection.d.ts +13 -0
- package/dist/packages/core/src/commands/enter.d.ts +13 -0
- package/dist/packages/core/src/commands/exitCode.d.ts +13 -0
- package/dist/packages/core/src/commands/extendMarkRange.d.ts +25 -0
- package/dist/packages/core/src/commands/first.d.ts +14 -0
- package/dist/packages/core/src/commands/focus.d.ts +27 -0
- package/dist/packages/core/src/commands/forEach.d.ts +14 -0
- package/dist/packages/core/src/commands/index.d.ts +55 -0
- package/dist/packages/core/src/commands/insertContent.d.ts +34 -0
- package/dist/packages/core/src/commands/insertContentAt.d.ts +47 -0
- package/dist/packages/core/src/commands/join.d.ts +41 -0
- package/dist/packages/core/src/commands/joinItemBackward.d.ts +13 -0
- package/dist/packages/core/src/commands/joinItemForward.d.ts +13 -0
- package/dist/packages/core/src/commands/joinTextblockBackward.d.ts +12 -0
- package/dist/packages/core/src/commands/joinTextblockForward.d.ts +12 -0
- package/dist/packages/core/src/commands/keyboardShortcut.d.ts +14 -0
- package/dist/packages/core/src/commands/lift.d.ts +17 -0
- package/dist/packages/core/src/commands/liftEmptyBlock.d.ts +13 -0
- package/dist/packages/core/src/commands/liftListItem.d.ts +15 -0
- package/dist/packages/core/src/commands/newlineInCode.d.ts +13 -0
- package/dist/packages/core/src/commands/resetAttributes.d.ts +16 -0
- package/dist/packages/core/src/commands/scrollIntoView.d.ts +13 -0
- package/dist/packages/core/src/commands/selectAll.d.ts +13 -0
- package/dist/packages/core/src/commands/selectNodeBackward.d.ts +13 -0
- package/dist/packages/core/src/commands/selectNodeForward.d.ts +13 -0
- package/dist/packages/core/src/commands/selectParentNode.d.ts +13 -0
- package/dist/packages/core/src/commands/selectTextblockEnd.d.ts +13 -0
- package/dist/packages/core/src/commands/selectTextblockStart.d.ts +13 -0
- package/dist/packages/core/src/commands/setContent.d.ts +40 -0
- package/dist/packages/core/src/commands/setMark.d.ts +15 -0
- package/dist/packages/core/src/commands/setMeta.d.ts +15 -0
- package/dist/packages/core/src/commands/setNode.d.ts +16 -0
- package/dist/packages/core/src/commands/setNodeSelection.d.ts +14 -0
- package/dist/packages/core/src/commands/setTextSelection.d.ts +14 -0
- package/dist/packages/core/src/commands/sinkListItem.d.ts +15 -0
- package/dist/packages/core/src/commands/splitBlock.d.ts +17 -0
- package/dist/packages/core/src/commands/splitListItem.d.ts +15 -0
- package/dist/packages/core/src/commands/toggleList.d.ts +18 -0
- package/dist/packages/core/src/commands/toggleMark.d.ts +30 -0
- package/dist/packages/core/src/commands/toggleNode.d.ts +17 -0
- package/dist/packages/core/src/commands/toggleWrap.d.ts +16 -0
- package/dist/packages/core/src/commands/undoInputRule.d.ts +13 -0
- package/dist/packages/core/src/commands/unsetAllMarks.d.ts +13 -0
- package/dist/packages/core/src/commands/unsetMark.d.ts +25 -0
- package/dist/packages/core/src/commands/updateAttributes.d.ts +24 -0
- package/dist/packages/core/src/commands/wrapIn.d.ts +16 -0
- package/dist/packages/core/src/commands/wrapInList.d.ts +16 -0
- package/dist/packages/core/src/extensions/clipboardTextSerializer.d.ts +5 -0
- package/dist/packages/core/src/extensions/commands.d.ts +3 -0
- package/dist/packages/core/src/extensions/editable.d.ts +2 -0
- package/dist/packages/core/src/extensions/focusEvents.d.ts +2 -0
- package/dist/packages/core/src/extensions/index.d.ts +6 -0
- package/dist/packages/core/src/extensions/keymap.d.ts +2 -0
- package/dist/packages/core/src/extensions/tabindex.d.ts +2 -0
- package/dist/packages/core/src/helpers/combineTransactionSteps.d.ts +10 -0
- package/dist/packages/core/src/helpers/createChainableState.d.ts +10 -0
- package/dist/packages/core/src/helpers/createDocument.d.ts +12 -0
- package/dist/packages/core/src/helpers/createNodeFromContent.d.ts +15 -0
- package/dist/packages/core/src/helpers/defaultBlockAt.d.ts +7 -0
- package/dist/packages/core/src/helpers/findChildren.d.ts +9 -0
- package/dist/packages/core/src/helpers/findChildrenInRange.d.ts +10 -0
- package/dist/packages/core/src/helpers/findParentNode.d.ts +16 -0
- package/dist/packages/core/src/helpers/findParentNodeClosestToPos.d.ts +17 -0
- package/dist/packages/core/src/helpers/generateHTML.d.ts +8 -0
- package/dist/packages/core/src/helpers/generateJSON.d.ts +8 -0
- package/dist/packages/core/src/helpers/generateText.d.ts +12 -0
- package/dist/packages/core/src/helpers/getAttributes.d.ts +9 -0
- package/dist/packages/core/src/helpers/getAttributesFromExtensions.d.ts +6 -0
- package/dist/packages/core/src/helpers/getChangedRanges.d.ts +11 -0
- package/dist/packages/core/src/helpers/getDebugJSON.d.ts +8 -0
- package/dist/packages/core/src/helpers/getExtensionField.d.ts +9 -0
- package/dist/packages/core/src/helpers/getHTMLFromFragment.d.ts +2 -0
- package/dist/packages/core/src/helpers/getMarkAttributes.d.ts +3 -0
- package/dist/packages/core/src/helpers/getMarkRange.d.ts +3 -0
- package/dist/packages/core/src/helpers/getMarkType.d.ts +2 -0
- package/dist/packages/core/src/helpers/getMarksBetween.d.ts +3 -0
- package/dist/packages/core/src/helpers/getNodeAtPosition.d.ts +11 -0
- package/dist/packages/core/src/helpers/getNodeAttributes.d.ts +3 -0
- package/dist/packages/core/src/helpers/getNodeType.d.ts +2 -0
- package/dist/packages/core/src/helpers/getRenderedAttributes.d.ts +3 -0
- package/dist/packages/core/src/helpers/getSchema.d.ts +4 -0
- package/dist/packages/core/src/helpers/getSchemaByResolvedExtensions.d.ts +10 -0
- package/dist/packages/core/src/helpers/getSchemaTypeByName.d.ts +8 -0
- package/dist/packages/core/src/helpers/getSchemaTypeNameByName.d.ts +8 -0
- package/dist/packages/core/src/helpers/getSplittedAttributes.d.ts +9 -0
- package/dist/packages/core/src/helpers/getText.d.ts +15 -0
- package/dist/packages/core/src/helpers/getTextBetween.d.ts +14 -0
- package/dist/packages/core/src/helpers/getTextContentFromNodes.d.ts +8 -0
- package/dist/packages/core/src/helpers/getTextSerializersFromSchema.d.ts +8 -0
- package/dist/packages/core/src/helpers/index.d.ts +50 -0
- package/dist/packages/core/src/helpers/injectExtensionAttributesToParseRule.d.ts +9 -0
- package/dist/packages/core/src/helpers/isActive.d.ts +2 -0
- 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 +2 -0
- package/dist/packages/core/src/helpers/isList.d.ts +2 -0
- package/dist/packages/core/src/helpers/isMarkActive.d.ts +3 -0
- package/dist/packages/core/src/helpers/isNodeActive.d.ts +3 -0
- package/dist/packages/core/src/helpers/isNodeEmpty.d.ts +2 -0
- package/dist/packages/core/src/helpers/isNodeSelection.d.ts +2 -0
- package/dist/packages/core/src/helpers/isTextSelection.d.ts +2 -0
- package/dist/packages/core/src/helpers/posToDOMRect.d.ts +2 -0
- package/dist/packages/core/src/helpers/resolveFocusPosition.d.ts +4 -0
- package/dist/packages/core/src/helpers/selectionToInsertionEnd.d.ts +2 -0
- package/dist/packages/core/src/helpers/splitExtensions.d.ts +9 -0
- package/dist/packages/core/src/index.d.ts +24 -0
- package/dist/packages/core/src/inputRules/index.d.ts +5 -0
- package/dist/packages/core/src/inputRules/markInputRule.d.ts +13 -0
- package/dist/packages/core/src/inputRules/nodeInputRule.d.ts +23 -0
- package/dist/packages/core/src/inputRules/textInputRule.d.ts +10 -0
- package/dist/packages/core/src/inputRules/textblockTypeInputRule.d.ts +15 -0
- package/dist/packages/core/src/inputRules/wrappingInputRule.d.ts +28 -0
- package/dist/packages/core/src/pasteRules/index.d.ts +3 -0
- package/dist/packages/core/src/pasteRules/markPasteRule.d.ts +13 -0
- package/dist/packages/core/src/pasteRules/nodePasteRule.d.ts +13 -0
- package/dist/packages/core/src/pasteRules/textPasteRule.d.ts +10 -0
- package/dist/packages/core/src/style.d.ts +1 -0
- package/dist/packages/core/src/types.d.ts +250 -0
- package/dist/packages/core/src/utilities/callOrReturn.d.ts +9 -0
- package/dist/packages/core/src/utilities/createStyleTag.d.ts +1 -0
- package/dist/packages/core/src/utilities/deleteProps.d.ts +6 -0
- package/dist/packages/core/src/utilities/elementFromString.d.ts +1 -0
- package/dist/packages/core/src/utilities/escapeForRegEx.d.ts +1 -0
- package/dist/packages/core/src/utilities/findDuplicates.d.ts +1 -0
- package/dist/packages/core/src/utilities/fromString.d.ts +1 -0
- package/dist/packages/core/src/utilities/index.d.ts +20 -0
- package/dist/packages/core/src/utilities/isAndroid.d.ts +1 -0
- package/dist/packages/core/src/utilities/isEmptyObject.d.ts +1 -0
- package/dist/packages/core/src/utilities/isFunction.d.ts +1 -0
- package/dist/packages/core/src/utilities/isMacOS.d.ts +1 -0
- package/dist/packages/core/src/utilities/isNumber.d.ts +1 -0
- package/dist/packages/core/src/utilities/isPlainObject.d.ts +1 -0
- package/dist/packages/core/src/utilities/isRegExp.d.ts +1 -0
- package/dist/packages/core/src/utilities/isString.d.ts +1 -0
- package/dist/packages/core/src/utilities/isiOS.d.ts +1 -0
- package/dist/packages/core/src/utilities/mergeAttributes.d.ts +1 -0
- package/dist/packages/core/src/utilities/mergeDeep.d.ts +1 -0
- package/dist/packages/core/src/utilities/minMax.d.ts +1 -0
- package/dist/packages/core/src/utilities/objectIncludes.d.ts +8 -0
- package/dist/packages/core/src/utilities/removeDuplicates.d.ts +8 -0
- package/dist/packages/extension-table/src/TableView.d.ts +17 -17
- package/dist/packages/extension-table/src/index.d.ts +5 -5
- package/dist/packages/extension-table/src/table.d.ts +194 -194
- package/dist/packages/extension-table/src/utilities/createCell.d.ts +2 -2
- package/dist/packages/extension-table/src/utilities/createColGroup.d.ts +19 -19
- package/dist/packages/extension-table/src/utilities/createTable.d.ts +2 -2
- package/dist/packages/extension-table/src/utilities/deleteTableWhenAllCellsSelected.d.ts +2 -2
- package/dist/packages/extension-table/src/utilities/getTableNodeTypes.d.ts +4 -4
- package/dist/packages/extension-table/src/utilities/isCellSelection.d.ts +2 -2
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -2,347 +2,347 @@ import { findParentNodeClosestToPos, Node, mergeAttributes, callOrReturn, getExt
|
|
|
2
2
|
import { TextSelection } from '@tiptap/pm/state';
|
|
3
3
|
import { CellSelection, addColumnBefore, addColumnAfter, deleteColumn, addRowBefore, addRowAfter, deleteRow, deleteTable, mergeCells, splitCell, toggleHeader, toggleHeaderCell, setCellAttr, goToNextCell, fixTables, columnResizing, tableEditing } from '@tiptap/pm/tables';
|
|
4
4
|
|
|
5
|
-
function updateColumns(node, colgroup, table, cellMinWidth, overrideCol, overrideValue) {
|
|
6
|
-
let totalWidth = 0;
|
|
7
|
-
let fixedWidth = true;
|
|
8
|
-
let nextDOM = colgroup.firstChild;
|
|
9
|
-
const row = node.firstChild;
|
|
10
|
-
for (let i = 0, col = 0; i < row.childCount; i += 1) {
|
|
11
|
-
const { colspan, colwidth } = row.child(i).attrs;
|
|
12
|
-
for (let j = 0; j < colspan; j += 1, col += 1) {
|
|
13
|
-
const hasWidth = overrideCol === col ? overrideValue : colwidth && colwidth[j];
|
|
14
|
-
const cssWidth = hasWidth ? `${hasWidth}px` : '';
|
|
15
|
-
totalWidth += hasWidth || cellMinWidth;
|
|
16
|
-
if (!hasWidth) {
|
|
17
|
-
fixedWidth = false;
|
|
18
|
-
}
|
|
19
|
-
if (!nextDOM) {
|
|
20
|
-
colgroup.appendChild(document.createElement('col')).style.width = cssWidth;
|
|
21
|
-
}
|
|
22
|
-
else {
|
|
23
|
-
if (nextDOM.style.width !== cssWidth) {
|
|
24
|
-
nextDOM.style.width = cssWidth;
|
|
25
|
-
}
|
|
26
|
-
nextDOM = nextDOM.nextSibling;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
while (nextDOM) {
|
|
31
|
-
const after = nextDOM.nextSibling;
|
|
32
|
-
nextDOM.parentNode.removeChild(nextDOM);
|
|
33
|
-
nextDOM = after;
|
|
34
|
-
}
|
|
35
|
-
if (fixedWidth) {
|
|
36
|
-
table.style.width = `${totalWidth}px`;
|
|
37
|
-
table.style.minWidth = '';
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
table.style.width = '';
|
|
41
|
-
table.style.minWidth = `${totalWidth}px`;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
class TableView {
|
|
45
|
-
constructor(node, cellMinWidth) {
|
|
46
|
-
this.node = node;
|
|
47
|
-
this.cellMinWidth = cellMinWidth;
|
|
48
|
-
this.dom = document.createElement('div');
|
|
49
|
-
this.dom.className = 'tableWrapper';
|
|
50
|
-
this.table = this.dom.appendChild(document.createElement('table'));
|
|
51
|
-
this.colgroup = this.table.appendChild(document.createElement('colgroup'));
|
|
52
|
-
updateColumns(node, this.colgroup, this.table, cellMinWidth);
|
|
53
|
-
this.contentDOM = this.table.appendChild(document.createElement('tbody'));
|
|
54
|
-
}
|
|
55
|
-
update(node) {
|
|
56
|
-
if (node.type !== this.node.type) {
|
|
57
|
-
return false;
|
|
58
|
-
}
|
|
59
|
-
this.node = node;
|
|
60
|
-
updateColumns(node, this.colgroup, this.table, this.cellMinWidth);
|
|
61
|
-
return true;
|
|
62
|
-
}
|
|
63
|
-
ignoreMutation(mutation) {
|
|
64
|
-
return (mutation.type === 'attributes'
|
|
65
|
-
&& (mutation.target === this.table || this.colgroup.contains(mutation.target)));
|
|
66
|
-
}
|
|
5
|
+
function updateColumns(node, colgroup, table, cellMinWidth, overrideCol, overrideValue) {
|
|
6
|
+
let totalWidth = 0;
|
|
7
|
+
let fixedWidth = true;
|
|
8
|
+
let nextDOM = colgroup.firstChild;
|
|
9
|
+
const row = node.firstChild;
|
|
10
|
+
for (let i = 0, col = 0; i < row.childCount; i += 1) {
|
|
11
|
+
const { colspan, colwidth } = row.child(i).attrs;
|
|
12
|
+
for (let j = 0; j < colspan; j += 1, col += 1) {
|
|
13
|
+
const hasWidth = overrideCol === col ? overrideValue : colwidth && colwidth[j];
|
|
14
|
+
const cssWidth = hasWidth ? `${hasWidth}px` : '';
|
|
15
|
+
totalWidth += hasWidth || cellMinWidth;
|
|
16
|
+
if (!hasWidth) {
|
|
17
|
+
fixedWidth = false;
|
|
18
|
+
}
|
|
19
|
+
if (!nextDOM) {
|
|
20
|
+
colgroup.appendChild(document.createElement('col')).style.width = cssWidth;
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
if (nextDOM.style.width !== cssWidth) {
|
|
24
|
+
nextDOM.style.width = cssWidth;
|
|
25
|
+
}
|
|
26
|
+
nextDOM = nextDOM.nextSibling;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
while (nextDOM) {
|
|
31
|
+
const after = nextDOM.nextSibling;
|
|
32
|
+
nextDOM.parentNode.removeChild(nextDOM);
|
|
33
|
+
nextDOM = after;
|
|
34
|
+
}
|
|
35
|
+
if (fixedWidth) {
|
|
36
|
+
table.style.width = `${totalWidth}px`;
|
|
37
|
+
table.style.minWidth = '';
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
table.style.width = '';
|
|
41
|
+
table.style.minWidth = `${totalWidth}px`;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
class TableView {
|
|
45
|
+
constructor(node, cellMinWidth) {
|
|
46
|
+
this.node = node;
|
|
47
|
+
this.cellMinWidth = cellMinWidth;
|
|
48
|
+
this.dom = document.createElement('div');
|
|
49
|
+
this.dom.className = 'tableWrapper';
|
|
50
|
+
this.table = this.dom.appendChild(document.createElement('table'));
|
|
51
|
+
this.colgroup = this.table.appendChild(document.createElement('colgroup'));
|
|
52
|
+
updateColumns(node, this.colgroup, this.table, cellMinWidth);
|
|
53
|
+
this.contentDOM = this.table.appendChild(document.createElement('tbody'));
|
|
54
|
+
}
|
|
55
|
+
update(node) {
|
|
56
|
+
if (node.type !== this.node.type) {
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
this.node = node;
|
|
60
|
+
updateColumns(node, this.colgroup, this.table, this.cellMinWidth);
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
63
|
+
ignoreMutation(mutation) {
|
|
64
|
+
return (mutation.type === 'attributes'
|
|
65
|
+
&& (mutation.target === this.table || this.colgroup.contains(mutation.target)));
|
|
66
|
+
}
|
|
67
67
|
}
|
|
68
68
|
|
|
69
|
-
/**
|
|
70
|
-
* Creates a colgroup element for a table node in ProseMirror.
|
|
71
|
-
*
|
|
72
|
-
* @param node - The ProseMirror node representing the table.
|
|
73
|
-
* @param cellMinWidth - The minimum width of a cell in the table.
|
|
74
|
-
* @param overrideCol - (Optional) The index of the column to override the width of.
|
|
75
|
-
* @param overrideValue - (Optional) The width value to use for the overridden column.
|
|
76
|
-
* @returns An object containing the colgroup element, the total width of the table, and the minimum width of the table.
|
|
77
|
-
*/
|
|
78
|
-
function createColGroup(node, cellMinWidth, overrideCol, overrideValue) {
|
|
79
|
-
let totalWidth = 0;
|
|
80
|
-
let fixedWidth = true;
|
|
81
|
-
const cols = [];
|
|
82
|
-
const row = node.firstChild;
|
|
83
|
-
if (!row) {
|
|
84
|
-
return {};
|
|
85
|
-
}
|
|
86
|
-
for (let i = 0, col = 0; i < row.childCount; i += 1) {
|
|
87
|
-
const { colspan, colwidth } = row.child(i).attrs;
|
|
88
|
-
for (let j = 0; j < colspan; j += 1, col += 1) {
|
|
89
|
-
const hasWidth = overrideCol === col ? overrideValue : colwidth && colwidth[j];
|
|
90
|
-
const cssWidth = hasWidth ? `${hasWidth}px` : '';
|
|
91
|
-
totalWidth += hasWidth || cellMinWidth;
|
|
92
|
-
if (!hasWidth) {
|
|
93
|
-
fixedWidth = false;
|
|
94
|
-
}
|
|
95
|
-
cols.push(['col', cssWidth ? { style: `width: ${cssWidth}` } : {}]);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
const tableWidth = fixedWidth ? `${totalWidth}px` : '';
|
|
99
|
-
const tableMinWidth = fixedWidth ? '' : `${totalWidth}px`;
|
|
100
|
-
const colgroup = ['colgroup', {}, ...cols];
|
|
101
|
-
return { colgroup, tableWidth, tableMinWidth };
|
|
69
|
+
/**
|
|
70
|
+
* Creates a colgroup element for a table node in ProseMirror.
|
|
71
|
+
*
|
|
72
|
+
* @param node - The ProseMirror node representing the table.
|
|
73
|
+
* @param cellMinWidth - The minimum width of a cell in the table.
|
|
74
|
+
* @param overrideCol - (Optional) The index of the column to override the width of.
|
|
75
|
+
* @param overrideValue - (Optional) The width value to use for the overridden column.
|
|
76
|
+
* @returns An object containing the colgroup element, the total width of the table, and the minimum width of the table.
|
|
77
|
+
*/
|
|
78
|
+
function createColGroup(node, cellMinWidth, overrideCol, overrideValue) {
|
|
79
|
+
let totalWidth = 0;
|
|
80
|
+
let fixedWidth = true;
|
|
81
|
+
const cols = [];
|
|
82
|
+
const row = node.firstChild;
|
|
83
|
+
if (!row) {
|
|
84
|
+
return {};
|
|
85
|
+
}
|
|
86
|
+
for (let i = 0, col = 0; i < row.childCount; i += 1) {
|
|
87
|
+
const { colspan, colwidth } = row.child(i).attrs;
|
|
88
|
+
for (let j = 0; j < colspan; j += 1, col += 1) {
|
|
89
|
+
const hasWidth = overrideCol === col ? overrideValue : colwidth && colwidth[j];
|
|
90
|
+
const cssWidth = hasWidth ? `${hasWidth}px` : '';
|
|
91
|
+
totalWidth += hasWidth || cellMinWidth;
|
|
92
|
+
if (!hasWidth) {
|
|
93
|
+
fixedWidth = false;
|
|
94
|
+
}
|
|
95
|
+
cols.push(['col', cssWidth ? { style: `width: ${cssWidth}` } : {}]);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
const tableWidth = fixedWidth ? `${totalWidth}px` : '';
|
|
99
|
+
const tableMinWidth = fixedWidth ? '' : `${totalWidth}px`;
|
|
100
|
+
const colgroup = ['colgroup', {}, ...cols];
|
|
101
|
+
return { colgroup, tableWidth, tableMinWidth };
|
|
102
102
|
}
|
|
103
103
|
|
|
104
|
-
function createCell(cellType, cellContent) {
|
|
105
|
-
if (cellContent) {
|
|
106
|
-
return cellType.createChecked(null, cellContent);
|
|
107
|
-
}
|
|
108
|
-
return cellType.createAndFill();
|
|
104
|
+
function createCell(cellType, cellContent) {
|
|
105
|
+
if (cellContent) {
|
|
106
|
+
return cellType.createChecked(null, cellContent);
|
|
107
|
+
}
|
|
108
|
+
return cellType.createAndFill();
|
|
109
109
|
}
|
|
110
110
|
|
|
111
|
-
function getTableNodeTypes(schema) {
|
|
112
|
-
if (schema.cached.tableNodeTypes) {
|
|
113
|
-
return schema.cached.tableNodeTypes;
|
|
114
|
-
}
|
|
115
|
-
const roles = {};
|
|
116
|
-
Object.keys(schema.nodes).forEach(type => {
|
|
117
|
-
const nodeType = schema.nodes[type];
|
|
118
|
-
if (nodeType.spec.tableRole) {
|
|
119
|
-
roles[nodeType.spec.tableRole] = nodeType;
|
|
120
|
-
}
|
|
121
|
-
});
|
|
122
|
-
schema.cached.tableNodeTypes = roles;
|
|
123
|
-
return roles;
|
|
111
|
+
function getTableNodeTypes(schema) {
|
|
112
|
+
if (schema.cached.tableNodeTypes) {
|
|
113
|
+
return schema.cached.tableNodeTypes;
|
|
114
|
+
}
|
|
115
|
+
const roles = {};
|
|
116
|
+
Object.keys(schema.nodes).forEach(type => {
|
|
117
|
+
const nodeType = schema.nodes[type];
|
|
118
|
+
if (nodeType.spec.tableRole) {
|
|
119
|
+
roles[nodeType.spec.tableRole] = nodeType;
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
schema.cached.tableNodeTypes = roles;
|
|
123
|
+
return roles;
|
|
124
124
|
}
|
|
125
125
|
|
|
126
|
-
function createTable(schema, rowsCount, colsCount, withHeaderRow, cellContent) {
|
|
127
|
-
const types = getTableNodeTypes(schema);
|
|
128
|
-
const headerCells = [];
|
|
129
|
-
const cells = [];
|
|
130
|
-
for (let index = 0; index < colsCount; index += 1) {
|
|
131
|
-
const cell = createCell(types.cell, cellContent);
|
|
132
|
-
if (cell) {
|
|
133
|
-
cells.push(cell);
|
|
134
|
-
}
|
|
135
|
-
if (withHeaderRow) {
|
|
136
|
-
const headerCell = createCell(types.header_cell, cellContent);
|
|
137
|
-
if (headerCell) {
|
|
138
|
-
headerCells.push(headerCell);
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
const rows = [];
|
|
143
|
-
for (let index = 0; index < rowsCount; index += 1) {
|
|
144
|
-
rows.push(types.row.createChecked(null, withHeaderRow && index === 0 ? headerCells : cells));
|
|
145
|
-
}
|
|
146
|
-
return types.table.createChecked(null, rows);
|
|
126
|
+
function createTable(schema, rowsCount, colsCount, withHeaderRow, cellContent) {
|
|
127
|
+
const types = getTableNodeTypes(schema);
|
|
128
|
+
const headerCells = [];
|
|
129
|
+
const cells = [];
|
|
130
|
+
for (let index = 0; index < colsCount; index += 1) {
|
|
131
|
+
const cell = createCell(types.cell, cellContent);
|
|
132
|
+
if (cell) {
|
|
133
|
+
cells.push(cell);
|
|
134
|
+
}
|
|
135
|
+
if (withHeaderRow) {
|
|
136
|
+
const headerCell = createCell(types.header_cell, cellContent);
|
|
137
|
+
if (headerCell) {
|
|
138
|
+
headerCells.push(headerCell);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
const rows = [];
|
|
143
|
+
for (let index = 0; index < rowsCount; index += 1) {
|
|
144
|
+
rows.push(types.row.createChecked(null, withHeaderRow && index === 0 ? headerCells : cells));
|
|
145
|
+
}
|
|
146
|
+
return types.table.createChecked(null, rows);
|
|
147
147
|
}
|
|
148
148
|
|
|
149
|
-
function isCellSelection(value) {
|
|
150
|
-
return value instanceof CellSelection;
|
|
149
|
+
function isCellSelection(value) {
|
|
150
|
+
return value instanceof CellSelection;
|
|
151
151
|
}
|
|
152
152
|
|
|
153
|
-
const deleteTableWhenAllCellsSelected = ({ editor }) => {
|
|
154
|
-
const { selection } = editor.state;
|
|
155
|
-
if (!isCellSelection(selection)) {
|
|
156
|
-
return false;
|
|
157
|
-
}
|
|
158
|
-
let cellCount = 0;
|
|
159
|
-
const table = findParentNodeClosestToPos(selection.ranges[0].$from, node => {
|
|
160
|
-
return node.type.name === 'table';
|
|
161
|
-
});
|
|
162
|
-
table === null || table === void 0 ? void 0 : table.node.descendants(node => {
|
|
163
|
-
if (node.type.name === 'table') {
|
|
164
|
-
return false;
|
|
165
|
-
}
|
|
166
|
-
if (['tableCell', 'tableHeader'].includes(node.type.name)) {
|
|
167
|
-
cellCount += 1;
|
|
168
|
-
}
|
|
169
|
-
});
|
|
170
|
-
const allCellsSelected = cellCount === selection.ranges.length;
|
|
171
|
-
if (!allCellsSelected) {
|
|
172
|
-
return false;
|
|
173
|
-
}
|
|
174
|
-
editor.commands.deleteTable();
|
|
175
|
-
return true;
|
|
153
|
+
const deleteTableWhenAllCellsSelected = ({ editor }) => {
|
|
154
|
+
const { selection } = editor.state;
|
|
155
|
+
if (!isCellSelection(selection)) {
|
|
156
|
+
return false;
|
|
157
|
+
}
|
|
158
|
+
let cellCount = 0;
|
|
159
|
+
const table = findParentNodeClosestToPos(selection.ranges[0].$from, node => {
|
|
160
|
+
return node.type.name === 'table';
|
|
161
|
+
});
|
|
162
|
+
table === null || table === void 0 ? void 0 : table.node.descendants(node => {
|
|
163
|
+
if (node.type.name === 'table') {
|
|
164
|
+
return false;
|
|
165
|
+
}
|
|
166
|
+
if (['tableCell', 'tableHeader'].includes(node.type.name)) {
|
|
167
|
+
cellCount += 1;
|
|
168
|
+
}
|
|
169
|
+
});
|
|
170
|
+
const allCellsSelected = cellCount === selection.ranges.length;
|
|
171
|
+
if (!allCellsSelected) {
|
|
172
|
+
return false;
|
|
173
|
+
}
|
|
174
|
+
editor.commands.deleteTable();
|
|
175
|
+
return true;
|
|
176
176
|
};
|
|
177
177
|
|
|
178
|
-
/**
|
|
179
|
-
* This extension allows you to create tables.
|
|
180
|
-
* @see https://www.tiptap.dev/api/nodes/table
|
|
181
|
-
*/
|
|
182
|
-
const Table = Node.create({
|
|
183
|
-
name: 'table',
|
|
184
|
-
// @ts-ignore
|
|
185
|
-
addOptions() {
|
|
186
|
-
return {
|
|
187
|
-
HTMLAttributes: {},
|
|
188
|
-
resizable: false,
|
|
189
|
-
handleWidth: 5,
|
|
190
|
-
cellMinWidth: 25,
|
|
191
|
-
// TODO: fix
|
|
192
|
-
View: TableView,
|
|
193
|
-
lastColumnResizable: true,
|
|
194
|
-
allowTableNodeSelection: false,
|
|
195
|
-
};
|
|
196
|
-
},
|
|
197
|
-
content: 'tableRow+',
|
|
198
|
-
tableRole: 'table',
|
|
199
|
-
isolating: true,
|
|
200
|
-
group: 'block',
|
|
201
|
-
parseHTML() {
|
|
202
|
-
return [{ tag: 'table' }];
|
|
203
|
-
},
|
|
204
|
-
renderHTML({ node, HTMLAttributes }) {
|
|
205
|
-
const { colgroup, tableWidth, tableMinWidth } = createColGroup(node, this.options.cellMinWidth);
|
|
206
|
-
const table = [
|
|
207
|
-
'table',
|
|
208
|
-
mergeAttributes(this.options.HTMLAttributes, HTMLAttributes, {
|
|
209
|
-
style: tableWidth
|
|
210
|
-
? `width: ${tableWidth}`
|
|
211
|
-
: `minWidth: ${tableMinWidth}`,
|
|
212
|
-
}),
|
|
213
|
-
colgroup,
|
|
214
|
-
['tbody', 0],
|
|
215
|
-
];
|
|
216
|
-
return table;
|
|
217
|
-
},
|
|
218
|
-
addCommands() {
|
|
219
|
-
return {
|
|
220
|
-
insertTable: ({ rows = 3, cols = 3, withHeaderRow = true } = {}) => ({ tr, dispatch, editor }) => {
|
|
221
|
-
const node = createTable(editor.schema, rows, cols, withHeaderRow);
|
|
222
|
-
if (dispatch) {
|
|
223
|
-
const offset = tr.selection.from + 1;
|
|
224
|
-
tr.replaceSelectionWith(node)
|
|
225
|
-
.scrollIntoView()
|
|
226
|
-
.setSelection(TextSelection.near(tr.doc.resolve(offset)));
|
|
227
|
-
}
|
|
228
|
-
return true;
|
|
229
|
-
},
|
|
230
|
-
addColumnBefore: () => ({ state, dispatch }) => {
|
|
231
|
-
return addColumnBefore(state, dispatch);
|
|
232
|
-
},
|
|
233
|
-
addColumnAfter: () => ({ state, dispatch }) => {
|
|
234
|
-
return addColumnAfter(state, dispatch);
|
|
235
|
-
},
|
|
236
|
-
deleteColumn: () => ({ state, dispatch }) => {
|
|
237
|
-
return deleteColumn(state, dispatch);
|
|
238
|
-
},
|
|
239
|
-
addRowBefore: () => ({ state, dispatch }) => {
|
|
240
|
-
return addRowBefore(state, dispatch);
|
|
241
|
-
},
|
|
242
|
-
addRowAfter: () => ({ state, dispatch }) => {
|
|
243
|
-
return addRowAfter(state, dispatch);
|
|
244
|
-
},
|
|
245
|
-
deleteRow: () => ({ state, dispatch }) => {
|
|
246
|
-
return deleteRow(state, dispatch);
|
|
247
|
-
},
|
|
248
|
-
deleteTable: () => ({ state, dispatch }) => {
|
|
249
|
-
return deleteTable(state, dispatch);
|
|
250
|
-
},
|
|
251
|
-
mergeCells: () => ({ state, dispatch }) => {
|
|
252
|
-
return mergeCells(state, dispatch);
|
|
253
|
-
},
|
|
254
|
-
splitCell: () => ({ state, dispatch }) => {
|
|
255
|
-
return splitCell(state, dispatch);
|
|
256
|
-
},
|
|
257
|
-
toggleHeaderColumn: () => ({ state, dispatch }) => {
|
|
258
|
-
return toggleHeader('column')(state, dispatch);
|
|
259
|
-
},
|
|
260
|
-
toggleHeaderRow: () => ({ state, dispatch }) => {
|
|
261
|
-
return toggleHeader('row')(state, dispatch);
|
|
262
|
-
},
|
|
263
|
-
toggleHeaderCell: () => ({ state, dispatch }) => {
|
|
264
|
-
return toggleHeaderCell(state, dispatch);
|
|
265
|
-
},
|
|
266
|
-
mergeOrSplit: () => ({ state, dispatch }) => {
|
|
267
|
-
if (mergeCells(state, dispatch)) {
|
|
268
|
-
return true;
|
|
269
|
-
}
|
|
270
|
-
return splitCell(state, dispatch);
|
|
271
|
-
},
|
|
272
|
-
setCellAttribute: (name, value) => ({ state, dispatch }) => {
|
|
273
|
-
return setCellAttr(name, value)(state, dispatch);
|
|
274
|
-
},
|
|
275
|
-
goToNextCell: () => ({ state, dispatch }) => {
|
|
276
|
-
return goToNextCell(1)(state, dispatch);
|
|
277
|
-
},
|
|
278
|
-
goToPreviousCell: () => ({ state, dispatch }) => {
|
|
279
|
-
return goToNextCell(-1)(state, dispatch);
|
|
280
|
-
},
|
|
281
|
-
fixTables: () => ({ state, dispatch }) => {
|
|
282
|
-
if (dispatch) {
|
|
283
|
-
fixTables(state);
|
|
284
|
-
}
|
|
285
|
-
return true;
|
|
286
|
-
},
|
|
287
|
-
setCellSelection: position => ({ tr, dispatch }) => {
|
|
288
|
-
if (dispatch) {
|
|
289
|
-
const selection = CellSelection.create(tr.doc, position.anchorCell, position.headCell);
|
|
290
|
-
// @ts-ignore
|
|
291
|
-
tr.setSelection(selection);
|
|
292
|
-
}
|
|
293
|
-
return true;
|
|
294
|
-
},
|
|
295
|
-
};
|
|
296
|
-
},
|
|
297
|
-
addKeyboardShortcuts() {
|
|
298
|
-
return {
|
|
299
|
-
Tab: () => {
|
|
300
|
-
if (this.editor.commands.goToNextCell()) {
|
|
301
|
-
return true;
|
|
302
|
-
}
|
|
303
|
-
if (!this.editor.can().addRowAfter()) {
|
|
304
|
-
return false;
|
|
305
|
-
}
|
|
306
|
-
return this.editor.chain().addRowAfter().goToNextCell().run();
|
|
307
|
-
},
|
|
308
|
-
'Shift-Tab': () => this.editor.commands.goToPreviousCell(),
|
|
309
|
-
Backspace: deleteTableWhenAllCellsSelected,
|
|
310
|
-
'Mod-Backspace': deleteTableWhenAllCellsSelected,
|
|
311
|
-
Delete: deleteTableWhenAllCellsSelected,
|
|
312
|
-
'Mod-Delete': deleteTableWhenAllCellsSelected,
|
|
313
|
-
};
|
|
314
|
-
},
|
|
315
|
-
addProseMirrorPlugins() {
|
|
316
|
-
const isResizable = this.options.resizable && this.editor.isEditable;
|
|
317
|
-
return [
|
|
318
|
-
...(isResizable
|
|
319
|
-
? [
|
|
320
|
-
columnResizing({
|
|
321
|
-
handleWidth: this.options.handleWidth,
|
|
322
|
-
cellMinWidth: this.options.cellMinWidth,
|
|
323
|
-
// @ts-ignore (incorrect type)
|
|
324
|
-
View: this.options.View,
|
|
325
|
-
// TODO: PR for @types/prosemirror-tables
|
|
326
|
-
// @ts-ignore (incorrect type)
|
|
327
|
-
lastColumnResizable: this.options.lastColumnResizable,
|
|
328
|
-
}),
|
|
329
|
-
]
|
|
330
|
-
: []),
|
|
331
|
-
tableEditing({
|
|
332
|
-
allowTableNodeSelection: this.options.allowTableNodeSelection,
|
|
333
|
-
}),
|
|
334
|
-
];
|
|
335
|
-
},
|
|
336
|
-
extendNodeSchema(extension) {
|
|
337
|
-
const context = {
|
|
338
|
-
name: extension.name,
|
|
339
|
-
options: extension.options,
|
|
340
|
-
storage: extension.storage,
|
|
341
|
-
};
|
|
342
|
-
return {
|
|
343
|
-
tableRole: callOrReturn(getExtensionField(extension, 'tableRole', context)),
|
|
344
|
-
};
|
|
345
|
-
},
|
|
178
|
+
/**
|
|
179
|
+
* This extension allows you to create tables.
|
|
180
|
+
* @see https://www.tiptap.dev/api/nodes/table
|
|
181
|
+
*/
|
|
182
|
+
const Table = Node.create({
|
|
183
|
+
name: 'table',
|
|
184
|
+
// @ts-ignore
|
|
185
|
+
addOptions() {
|
|
186
|
+
return {
|
|
187
|
+
HTMLAttributes: {},
|
|
188
|
+
resizable: false,
|
|
189
|
+
handleWidth: 5,
|
|
190
|
+
cellMinWidth: 25,
|
|
191
|
+
// TODO: fix
|
|
192
|
+
View: TableView,
|
|
193
|
+
lastColumnResizable: true,
|
|
194
|
+
allowTableNodeSelection: false,
|
|
195
|
+
};
|
|
196
|
+
},
|
|
197
|
+
content: 'tableRow+',
|
|
198
|
+
tableRole: 'table',
|
|
199
|
+
isolating: true,
|
|
200
|
+
group: 'block',
|
|
201
|
+
parseHTML() {
|
|
202
|
+
return [{ tag: 'table' }];
|
|
203
|
+
},
|
|
204
|
+
renderHTML({ node, HTMLAttributes }) {
|
|
205
|
+
const { colgroup, tableWidth, tableMinWidth } = createColGroup(node, this.options.cellMinWidth);
|
|
206
|
+
const table = [
|
|
207
|
+
'table',
|
|
208
|
+
mergeAttributes(this.options.HTMLAttributes, HTMLAttributes, {
|
|
209
|
+
style: tableWidth
|
|
210
|
+
? `width: ${tableWidth}`
|
|
211
|
+
: `minWidth: ${tableMinWidth}`,
|
|
212
|
+
}),
|
|
213
|
+
colgroup,
|
|
214
|
+
['tbody', 0],
|
|
215
|
+
];
|
|
216
|
+
return table;
|
|
217
|
+
},
|
|
218
|
+
addCommands() {
|
|
219
|
+
return {
|
|
220
|
+
insertTable: ({ rows = 3, cols = 3, withHeaderRow = true } = {}) => ({ tr, dispatch, editor }) => {
|
|
221
|
+
const node = createTable(editor.schema, rows, cols, withHeaderRow);
|
|
222
|
+
if (dispatch) {
|
|
223
|
+
const offset = tr.selection.from + 1;
|
|
224
|
+
tr.replaceSelectionWith(node)
|
|
225
|
+
.scrollIntoView()
|
|
226
|
+
.setSelection(TextSelection.near(tr.doc.resolve(offset)));
|
|
227
|
+
}
|
|
228
|
+
return true;
|
|
229
|
+
},
|
|
230
|
+
addColumnBefore: () => ({ state, dispatch }) => {
|
|
231
|
+
return addColumnBefore(state, dispatch);
|
|
232
|
+
},
|
|
233
|
+
addColumnAfter: () => ({ state, dispatch }) => {
|
|
234
|
+
return addColumnAfter(state, dispatch);
|
|
235
|
+
},
|
|
236
|
+
deleteColumn: () => ({ state, dispatch }) => {
|
|
237
|
+
return deleteColumn(state, dispatch);
|
|
238
|
+
},
|
|
239
|
+
addRowBefore: () => ({ state, dispatch }) => {
|
|
240
|
+
return addRowBefore(state, dispatch);
|
|
241
|
+
},
|
|
242
|
+
addRowAfter: () => ({ state, dispatch }) => {
|
|
243
|
+
return addRowAfter(state, dispatch);
|
|
244
|
+
},
|
|
245
|
+
deleteRow: () => ({ state, dispatch }) => {
|
|
246
|
+
return deleteRow(state, dispatch);
|
|
247
|
+
},
|
|
248
|
+
deleteTable: () => ({ state, dispatch }) => {
|
|
249
|
+
return deleteTable(state, dispatch);
|
|
250
|
+
},
|
|
251
|
+
mergeCells: () => ({ state, dispatch }) => {
|
|
252
|
+
return mergeCells(state, dispatch);
|
|
253
|
+
},
|
|
254
|
+
splitCell: () => ({ state, dispatch }) => {
|
|
255
|
+
return splitCell(state, dispatch);
|
|
256
|
+
},
|
|
257
|
+
toggleHeaderColumn: () => ({ state, dispatch }) => {
|
|
258
|
+
return toggleHeader('column')(state, dispatch);
|
|
259
|
+
},
|
|
260
|
+
toggleHeaderRow: () => ({ state, dispatch }) => {
|
|
261
|
+
return toggleHeader('row')(state, dispatch);
|
|
262
|
+
},
|
|
263
|
+
toggleHeaderCell: () => ({ state, dispatch }) => {
|
|
264
|
+
return toggleHeaderCell(state, dispatch);
|
|
265
|
+
},
|
|
266
|
+
mergeOrSplit: () => ({ state, dispatch }) => {
|
|
267
|
+
if (mergeCells(state, dispatch)) {
|
|
268
|
+
return true;
|
|
269
|
+
}
|
|
270
|
+
return splitCell(state, dispatch);
|
|
271
|
+
},
|
|
272
|
+
setCellAttribute: (name, value) => ({ state, dispatch }) => {
|
|
273
|
+
return setCellAttr(name, value)(state, dispatch);
|
|
274
|
+
},
|
|
275
|
+
goToNextCell: () => ({ state, dispatch }) => {
|
|
276
|
+
return goToNextCell(1)(state, dispatch);
|
|
277
|
+
},
|
|
278
|
+
goToPreviousCell: () => ({ state, dispatch }) => {
|
|
279
|
+
return goToNextCell(-1)(state, dispatch);
|
|
280
|
+
},
|
|
281
|
+
fixTables: () => ({ state, dispatch }) => {
|
|
282
|
+
if (dispatch) {
|
|
283
|
+
fixTables(state);
|
|
284
|
+
}
|
|
285
|
+
return true;
|
|
286
|
+
},
|
|
287
|
+
setCellSelection: position => ({ tr, dispatch }) => {
|
|
288
|
+
if (dispatch) {
|
|
289
|
+
const selection = CellSelection.create(tr.doc, position.anchorCell, position.headCell);
|
|
290
|
+
// @ts-ignore
|
|
291
|
+
tr.setSelection(selection);
|
|
292
|
+
}
|
|
293
|
+
return true;
|
|
294
|
+
},
|
|
295
|
+
};
|
|
296
|
+
},
|
|
297
|
+
addKeyboardShortcuts() {
|
|
298
|
+
return {
|
|
299
|
+
Tab: () => {
|
|
300
|
+
if (this.editor.commands.goToNextCell()) {
|
|
301
|
+
return true;
|
|
302
|
+
}
|
|
303
|
+
if (!this.editor.can().addRowAfter()) {
|
|
304
|
+
return false;
|
|
305
|
+
}
|
|
306
|
+
return this.editor.chain().addRowAfter().goToNextCell().run();
|
|
307
|
+
},
|
|
308
|
+
'Shift-Tab': () => this.editor.commands.goToPreviousCell(),
|
|
309
|
+
Backspace: deleteTableWhenAllCellsSelected,
|
|
310
|
+
'Mod-Backspace': deleteTableWhenAllCellsSelected,
|
|
311
|
+
Delete: deleteTableWhenAllCellsSelected,
|
|
312
|
+
'Mod-Delete': deleteTableWhenAllCellsSelected,
|
|
313
|
+
};
|
|
314
|
+
},
|
|
315
|
+
addProseMirrorPlugins() {
|
|
316
|
+
const isResizable = this.options.resizable && this.editor.isEditable;
|
|
317
|
+
return [
|
|
318
|
+
...(isResizable
|
|
319
|
+
? [
|
|
320
|
+
columnResizing({
|
|
321
|
+
handleWidth: this.options.handleWidth,
|
|
322
|
+
cellMinWidth: this.options.cellMinWidth,
|
|
323
|
+
// @ts-ignore (incorrect type)
|
|
324
|
+
View: this.options.View,
|
|
325
|
+
// TODO: PR for @types/prosemirror-tables
|
|
326
|
+
// @ts-ignore (incorrect type)
|
|
327
|
+
lastColumnResizable: this.options.lastColumnResizable,
|
|
328
|
+
}),
|
|
329
|
+
]
|
|
330
|
+
: []),
|
|
331
|
+
tableEditing({
|
|
332
|
+
allowTableNodeSelection: this.options.allowTableNodeSelection,
|
|
333
|
+
}),
|
|
334
|
+
];
|
|
335
|
+
},
|
|
336
|
+
extendNodeSchema(extension) {
|
|
337
|
+
const context = {
|
|
338
|
+
name: extension.name,
|
|
339
|
+
options: extension.options,
|
|
340
|
+
storage: extension.storage,
|
|
341
|
+
};
|
|
342
|
+
return {
|
|
343
|
+
tableRole: callOrReturn(getExtensionField(extension, 'tableRole', context)),
|
|
344
|
+
};
|
|
345
|
+
},
|
|
346
346
|
});
|
|
347
347
|
|
|
348
348
|
export { Table, createColGroup, createTable, Table as default };
|