@tiptap/extension-table 2.6.2 → 3.0.0-next.1

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