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