@tiptap/extension-table 3.0.0 → 3.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (230) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +5 -1
  3. package/dist/cell/index.cjs +68 -0
  4. package/dist/cell/index.cjs.map +1 -0
  5. package/dist/cell/index.d.cts +33 -0
  6. package/dist/cell/index.d.ts +33 -0
  7. package/dist/cell/index.js +41 -0
  8. package/dist/cell/index.js.map +1 -0
  9. package/dist/header/index.cjs +68 -0
  10. package/dist/header/index.cjs.map +1 -0
  11. package/dist/header/index.d.cts +33 -0
  12. package/dist/header/index.d.ts +33 -0
  13. package/dist/header/index.js +41 -0
  14. package/dist/header/index.js.map +1 -0
  15. package/dist/index.cjs +480 -321
  16. package/dist/index.cjs.map +1 -1
  17. package/dist/index.d.cts +305 -0
  18. package/dist/index.d.ts +305 -0
  19. package/dist/index.js +465 -316
  20. package/dist/index.js.map +1 -1
  21. package/dist/kit/index.cjs +497 -0
  22. package/dist/kit/index.cjs.map +1 -0
  23. package/dist/kit/index.d.cts +252 -0
  24. package/dist/kit/index.d.ts +252 -0
  25. package/dist/kit/index.js +490 -0
  26. package/dist/kit/index.js.map +1 -0
  27. package/dist/row/index.cjs +49 -0
  28. package/dist/row/index.cjs.map +1 -0
  29. package/dist/row/index.d.cts +33 -0
  30. package/dist/row/index.d.ts +33 -0
  31. package/dist/row/index.js +22 -0
  32. package/dist/row/index.js.map +1 -0
  33. package/dist/table/index.cjs +384 -0
  34. package/dist/table/index.cjs.map +1 -0
  35. package/dist/{packages/extension-table/src/table.d.ts → table/index.d.cts} +45 -19
  36. package/dist/table/index.d.ts +220 -0
  37. package/dist/table/index.js +373 -0
  38. package/dist/table/index.js.map +1 -0
  39. package/package.json +53 -11
  40. package/src/cell/index.ts +1 -0
  41. package/src/cell/table-cell.ts +60 -0
  42. package/src/header/index.ts +1 -0
  43. package/src/header/table-header.ts +60 -0
  44. package/src/index.ts +6 -7
  45. package/src/kit/index.ts +64 -0
  46. package/src/row/index.ts +1 -0
  47. package/src/row/table-row.ts +38 -0
  48. package/src/table/TableView.ts +108 -0
  49. package/src/table/index.ts +3 -0
  50. package/src/{table.ts → table/table.ts} +56 -64
  51. package/src/table/utilities/colStyle.ts +9 -0
  52. package/src/{utilities → table/utilities}/createCell.ts +1 -1
  53. package/src/{utilities → table/utilities}/createColGroup.ts +24 -6
  54. package/src/{utilities → table/utilities}/createTable.ts +1 -1
  55. package/src/{utilities → table/utilities}/deleteTableWhenAllCellsSelected.ts +2 -1
  56. package/src/{utilities → table/utilities}/getTableNodeTypes.ts +1 -1
  57. package/src/types.ts +19 -0
  58. package/dist/index.umd.js +0 -358
  59. package/dist/index.umd.js.map +0 -1
  60. package/dist/packages/core/src/CommandManager.d.ts +0 -20
  61. package/dist/packages/core/src/Editor.d.ts +0 -161
  62. package/dist/packages/core/src/EventEmitter.d.ts +0 -11
  63. package/dist/packages/core/src/Extension.d.ts +0 -343
  64. package/dist/packages/core/src/ExtensionManager.d.ts +0 -55
  65. package/dist/packages/core/src/InputRule.d.ts +0 -42
  66. package/dist/packages/core/src/Mark.d.ts +0 -451
  67. package/dist/packages/core/src/Node.d.ts +0 -611
  68. package/dist/packages/core/src/NodePos.d.ts +0 -44
  69. package/dist/packages/core/src/NodeView.d.ts +0 -31
  70. package/dist/packages/core/src/PasteRule.d.ts +0 -50
  71. package/dist/packages/core/src/Tracker.d.ts +0 -11
  72. package/dist/packages/core/src/commands/blur.d.ts +0 -13
  73. package/dist/packages/core/src/commands/clearContent.d.ts +0 -14
  74. package/dist/packages/core/src/commands/clearNodes.d.ts +0 -13
  75. package/dist/packages/core/src/commands/command.d.ts +0 -18
  76. package/dist/packages/core/src/commands/createParagraphNear.d.ts +0 -13
  77. package/dist/packages/core/src/commands/cut.d.ts +0 -20
  78. package/dist/packages/core/src/commands/deleteCurrentNode.d.ts +0 -13
  79. package/dist/packages/core/src/commands/deleteNode.d.ts +0 -15
  80. package/dist/packages/core/src/commands/deleteRange.d.ts +0 -14
  81. package/dist/packages/core/src/commands/deleteSelection.d.ts +0 -13
  82. package/dist/packages/core/src/commands/enter.d.ts +0 -13
  83. package/dist/packages/core/src/commands/exitCode.d.ts +0 -13
  84. package/dist/packages/core/src/commands/extendMarkRange.d.ts +0 -25
  85. package/dist/packages/core/src/commands/first.d.ts +0 -14
  86. package/dist/packages/core/src/commands/focus.d.ts +0 -27
  87. package/dist/packages/core/src/commands/forEach.d.ts +0 -14
  88. package/dist/packages/core/src/commands/index.d.ts +0 -55
  89. package/dist/packages/core/src/commands/insertContent.d.ts +0 -34
  90. package/dist/packages/core/src/commands/insertContentAt.d.ts +0 -47
  91. package/dist/packages/core/src/commands/join.d.ts +0 -41
  92. package/dist/packages/core/src/commands/joinItemBackward.d.ts +0 -13
  93. package/dist/packages/core/src/commands/joinItemForward.d.ts +0 -13
  94. package/dist/packages/core/src/commands/joinTextblockBackward.d.ts +0 -12
  95. package/dist/packages/core/src/commands/joinTextblockForward.d.ts +0 -12
  96. package/dist/packages/core/src/commands/keyboardShortcut.d.ts +0 -14
  97. package/dist/packages/core/src/commands/lift.d.ts +0 -17
  98. package/dist/packages/core/src/commands/liftEmptyBlock.d.ts +0 -13
  99. package/dist/packages/core/src/commands/liftListItem.d.ts +0 -15
  100. package/dist/packages/core/src/commands/newlineInCode.d.ts +0 -13
  101. package/dist/packages/core/src/commands/resetAttributes.d.ts +0 -16
  102. package/dist/packages/core/src/commands/scrollIntoView.d.ts +0 -13
  103. package/dist/packages/core/src/commands/selectAll.d.ts +0 -13
  104. package/dist/packages/core/src/commands/selectNodeBackward.d.ts +0 -13
  105. package/dist/packages/core/src/commands/selectNodeForward.d.ts +0 -13
  106. package/dist/packages/core/src/commands/selectParentNode.d.ts +0 -13
  107. package/dist/packages/core/src/commands/selectTextblockEnd.d.ts +0 -13
  108. package/dist/packages/core/src/commands/selectTextblockStart.d.ts +0 -13
  109. package/dist/packages/core/src/commands/setContent.d.ts +0 -40
  110. package/dist/packages/core/src/commands/setMark.d.ts +0 -15
  111. package/dist/packages/core/src/commands/setMeta.d.ts +0 -15
  112. package/dist/packages/core/src/commands/setNode.d.ts +0 -16
  113. package/dist/packages/core/src/commands/setNodeSelection.d.ts +0 -14
  114. package/dist/packages/core/src/commands/setTextSelection.d.ts +0 -14
  115. package/dist/packages/core/src/commands/sinkListItem.d.ts +0 -15
  116. package/dist/packages/core/src/commands/splitBlock.d.ts +0 -17
  117. package/dist/packages/core/src/commands/splitListItem.d.ts +0 -15
  118. package/dist/packages/core/src/commands/toggleList.d.ts +0 -18
  119. package/dist/packages/core/src/commands/toggleMark.d.ts +0 -30
  120. package/dist/packages/core/src/commands/toggleNode.d.ts +0 -17
  121. package/dist/packages/core/src/commands/toggleWrap.d.ts +0 -16
  122. package/dist/packages/core/src/commands/undoInputRule.d.ts +0 -13
  123. package/dist/packages/core/src/commands/unsetAllMarks.d.ts +0 -13
  124. package/dist/packages/core/src/commands/unsetMark.d.ts +0 -25
  125. package/dist/packages/core/src/commands/updateAttributes.d.ts +0 -24
  126. package/dist/packages/core/src/commands/wrapIn.d.ts +0 -16
  127. package/dist/packages/core/src/commands/wrapInList.d.ts +0 -16
  128. package/dist/packages/core/src/extensions/clipboardTextSerializer.d.ts +0 -5
  129. package/dist/packages/core/src/extensions/commands.d.ts +0 -3
  130. package/dist/packages/core/src/extensions/editable.d.ts +0 -2
  131. package/dist/packages/core/src/extensions/focusEvents.d.ts +0 -2
  132. package/dist/packages/core/src/extensions/index.d.ts +0 -6
  133. package/dist/packages/core/src/extensions/keymap.d.ts +0 -2
  134. package/dist/packages/core/src/extensions/tabindex.d.ts +0 -2
  135. package/dist/packages/core/src/helpers/combineTransactionSteps.d.ts +0 -10
  136. package/dist/packages/core/src/helpers/createChainableState.d.ts +0 -10
  137. package/dist/packages/core/src/helpers/createDocument.d.ts +0 -12
  138. package/dist/packages/core/src/helpers/createNodeFromContent.d.ts +0 -15
  139. package/dist/packages/core/src/helpers/defaultBlockAt.d.ts +0 -7
  140. package/dist/packages/core/src/helpers/findChildren.d.ts +0 -9
  141. package/dist/packages/core/src/helpers/findChildrenInRange.d.ts +0 -10
  142. package/dist/packages/core/src/helpers/findParentNode.d.ts +0 -16
  143. package/dist/packages/core/src/helpers/findParentNodeClosestToPos.d.ts +0 -17
  144. package/dist/packages/core/src/helpers/generateHTML.d.ts +0 -8
  145. package/dist/packages/core/src/helpers/generateJSON.d.ts +0 -8
  146. package/dist/packages/core/src/helpers/generateText.d.ts +0 -12
  147. package/dist/packages/core/src/helpers/getAttributes.d.ts +0 -9
  148. package/dist/packages/core/src/helpers/getAttributesFromExtensions.d.ts +0 -6
  149. package/dist/packages/core/src/helpers/getChangedRanges.d.ts +0 -11
  150. package/dist/packages/core/src/helpers/getDebugJSON.d.ts +0 -8
  151. package/dist/packages/core/src/helpers/getExtensionField.d.ts +0 -9
  152. package/dist/packages/core/src/helpers/getHTMLFromFragment.d.ts +0 -2
  153. package/dist/packages/core/src/helpers/getMarkAttributes.d.ts +0 -3
  154. package/dist/packages/core/src/helpers/getMarkRange.d.ts +0 -3
  155. package/dist/packages/core/src/helpers/getMarkType.d.ts +0 -2
  156. package/dist/packages/core/src/helpers/getMarksBetween.d.ts +0 -3
  157. package/dist/packages/core/src/helpers/getNodeAtPosition.d.ts +0 -11
  158. package/dist/packages/core/src/helpers/getNodeAttributes.d.ts +0 -3
  159. package/dist/packages/core/src/helpers/getNodeType.d.ts +0 -2
  160. package/dist/packages/core/src/helpers/getRenderedAttributes.d.ts +0 -3
  161. package/dist/packages/core/src/helpers/getSchema.d.ts +0 -4
  162. package/dist/packages/core/src/helpers/getSchemaByResolvedExtensions.d.ts +0 -10
  163. package/dist/packages/core/src/helpers/getSchemaTypeByName.d.ts +0 -8
  164. package/dist/packages/core/src/helpers/getSchemaTypeNameByName.d.ts +0 -8
  165. package/dist/packages/core/src/helpers/getSplittedAttributes.d.ts +0 -9
  166. package/dist/packages/core/src/helpers/getText.d.ts +0 -15
  167. package/dist/packages/core/src/helpers/getTextBetween.d.ts +0 -14
  168. package/dist/packages/core/src/helpers/getTextContentFromNodes.d.ts +0 -8
  169. package/dist/packages/core/src/helpers/getTextSerializersFromSchema.d.ts +0 -8
  170. package/dist/packages/core/src/helpers/index.d.ts +0 -50
  171. package/dist/packages/core/src/helpers/injectExtensionAttributesToParseRule.d.ts +0 -9
  172. package/dist/packages/core/src/helpers/isActive.d.ts +0 -2
  173. package/dist/packages/core/src/helpers/isAtEndOfNode.d.ts +0 -2
  174. package/dist/packages/core/src/helpers/isAtStartOfNode.d.ts +0 -2
  175. package/dist/packages/core/src/helpers/isExtensionRulesEnabled.d.ts +0 -2
  176. package/dist/packages/core/src/helpers/isList.d.ts +0 -2
  177. package/dist/packages/core/src/helpers/isMarkActive.d.ts +0 -3
  178. package/dist/packages/core/src/helpers/isNodeActive.d.ts +0 -3
  179. package/dist/packages/core/src/helpers/isNodeEmpty.d.ts +0 -2
  180. package/dist/packages/core/src/helpers/isNodeSelection.d.ts +0 -2
  181. package/dist/packages/core/src/helpers/isTextSelection.d.ts +0 -2
  182. package/dist/packages/core/src/helpers/posToDOMRect.d.ts +0 -2
  183. package/dist/packages/core/src/helpers/resolveFocusPosition.d.ts +0 -4
  184. package/dist/packages/core/src/helpers/selectionToInsertionEnd.d.ts +0 -2
  185. package/dist/packages/core/src/helpers/splitExtensions.d.ts +0 -9
  186. package/dist/packages/core/src/index.d.ts +0 -24
  187. package/dist/packages/core/src/inputRules/index.d.ts +0 -5
  188. package/dist/packages/core/src/inputRules/markInputRule.d.ts +0 -13
  189. package/dist/packages/core/src/inputRules/nodeInputRule.d.ts +0 -23
  190. package/dist/packages/core/src/inputRules/textInputRule.d.ts +0 -10
  191. package/dist/packages/core/src/inputRules/textblockTypeInputRule.d.ts +0 -15
  192. package/dist/packages/core/src/inputRules/wrappingInputRule.d.ts +0 -28
  193. package/dist/packages/core/src/pasteRules/index.d.ts +0 -3
  194. package/dist/packages/core/src/pasteRules/markPasteRule.d.ts +0 -13
  195. package/dist/packages/core/src/pasteRules/nodePasteRule.d.ts +0 -13
  196. package/dist/packages/core/src/pasteRules/textPasteRule.d.ts +0 -10
  197. package/dist/packages/core/src/style.d.ts +0 -1
  198. package/dist/packages/core/src/types.d.ts +0 -255
  199. package/dist/packages/core/src/utilities/callOrReturn.d.ts +0 -9
  200. package/dist/packages/core/src/utilities/createStyleTag.d.ts +0 -1
  201. package/dist/packages/core/src/utilities/deleteProps.d.ts +0 -6
  202. package/dist/packages/core/src/utilities/elementFromString.d.ts +0 -1
  203. package/dist/packages/core/src/utilities/escapeForRegEx.d.ts +0 -1
  204. package/dist/packages/core/src/utilities/findDuplicates.d.ts +0 -1
  205. package/dist/packages/core/src/utilities/fromString.d.ts +0 -1
  206. package/dist/packages/core/src/utilities/index.d.ts +0 -20
  207. package/dist/packages/core/src/utilities/isAndroid.d.ts +0 -1
  208. package/dist/packages/core/src/utilities/isEmptyObject.d.ts +0 -1
  209. package/dist/packages/core/src/utilities/isFunction.d.ts +0 -1
  210. package/dist/packages/core/src/utilities/isMacOS.d.ts +0 -1
  211. package/dist/packages/core/src/utilities/isNumber.d.ts +0 -1
  212. package/dist/packages/core/src/utilities/isPlainObject.d.ts +0 -1
  213. package/dist/packages/core/src/utilities/isRegExp.d.ts +0 -1
  214. package/dist/packages/core/src/utilities/isString.d.ts +0 -1
  215. package/dist/packages/core/src/utilities/isiOS.d.ts +0 -1
  216. package/dist/packages/core/src/utilities/mergeAttributes.d.ts +0 -1
  217. package/dist/packages/core/src/utilities/mergeDeep.d.ts +0 -1
  218. package/dist/packages/core/src/utilities/minMax.d.ts +0 -1
  219. package/dist/packages/core/src/utilities/objectIncludes.d.ts +0 -8
  220. package/dist/packages/core/src/utilities/removeDuplicates.d.ts +0 -8
  221. package/dist/packages/extension-table/src/TableView.d.ts +0 -17
  222. package/dist/packages/extension-table/src/index.d.ts +0 -5
  223. package/dist/packages/extension-table/src/utilities/createCell.d.ts +0 -2
  224. package/dist/packages/extension-table/src/utilities/createColGroup.d.ts +0 -19
  225. package/dist/packages/extension-table/src/utilities/createTable.d.ts +0 -2
  226. package/dist/packages/extension-table/src/utilities/deleteTableWhenAllCellsSelected.d.ts +0 -2
  227. package/dist/packages/extension-table/src/utilities/getTableNodeTypes.d.ts +0 -4
  228. package/dist/packages/extension-table/src/utilities/isCellSelection.d.ts +0 -2
  229. package/src/TableView.ts +0 -100
  230. /package/src/{utilities → table/utilities}/isCellSelection.ts +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/kit/index.ts","../../src/cell/table-cell.ts","../../src/header/table-header.ts","../../src/row/table-row.ts","../../src/table/table.ts","../../src/table/utilities/colStyle.ts","../../src/table/TableView.ts","../../src/table/utilities/createColGroup.ts","../../src/table/utilities/createCell.ts","../../src/table/utilities/getTableNodeTypes.ts","../../src/table/utilities/createTable.ts","../../src/table/utilities/deleteTableWhenAllCellsSelected.ts","../../src/table/utilities/isCellSelection.ts"],"sourcesContent":["import { Extension } from '@tiptap/core'\n\nimport type { TableCellOptions } from '../cell/index.js'\nimport { TableCell } from '../cell/index.js'\nimport type { TableHeaderOptions } from '../header/index.js'\nimport { TableHeader } from '../header/index.js'\nimport type { TableRowOptions } from '../row/index.js'\nimport { TableRow } from '../row/index.js'\nimport type { TableOptions } from '../table/index.js'\nimport { Table } from '../table/index.js'\n\nexport interface TableKitOptions {\n /**\n * If set to false, the table extension will not be registered\n * @example table: false\n */\n table: Partial<TableOptions> | false\n /**\n * If set to false, the table extension will not be registered\n * @example tableCell: false\n */\n tableCell: Partial<TableCellOptions> | false\n /**\n * If set to false, the table extension will not be registered\n * @example tableHeader: false\n */\n tableHeader: Partial<TableHeaderOptions> | false\n /**\n * If set to false, the table extension will not be registered\n * @example tableRow: false\n */\n tableRow: Partial<TableRowOptions> | false\n}\n\n/**\n * The table kit is a collection of table editor extensions.\n *\n * It’s a good starting point for building your own table in Tiptap.\n */\nexport const TableKit = Extension.create<TableKitOptions>({\n name: 'tableKit',\n\n addExtensions() {\n const extensions = []\n\n if (this.options.table !== false) {\n extensions.push(Table.configure(this.options.table))\n }\n\n if (this.options.tableCell !== false) {\n extensions.push(TableCell.configure(this.options.tableCell))\n }\n\n if (this.options.tableHeader !== false) {\n extensions.push(TableHeader.configure(this.options.tableHeader))\n }\n\n if (this.options.tableRow !== false) {\n extensions.push(TableRow.configure(this.options.tableRow))\n }\n\n return extensions\n },\n})\n","import '../types.js'\n\nimport { mergeAttributes, Node } from '@tiptap/core'\n\nexport interface TableCellOptions {\n /**\n * The HTML attributes for a table cell node.\n * @default {}\n * @example { class: 'foo' }\n */\n HTMLAttributes: Record<string, any>\n}\n\n/**\n * This extension allows you to create table cells.\n * @see https://www.tiptap.dev/api/nodes/table-cell\n */\nexport const TableCell = Node.create<TableCellOptions>({\n name: 'tableCell',\n\n addOptions() {\n return {\n HTMLAttributes: {},\n }\n },\n\n content: 'block+',\n\n addAttributes() {\n return {\n colspan: {\n default: 1,\n },\n rowspan: {\n default: 1,\n },\n colwidth: {\n default: null,\n parseHTML: element => {\n const colwidth = element.getAttribute('colwidth')\n const value = colwidth ? colwidth.split(',').map(width => parseInt(width, 10)) : null\n\n return value\n },\n },\n }\n },\n\n tableRole: 'cell',\n\n isolating: true,\n\n parseHTML() {\n return [{ tag: 'td' }]\n },\n\n renderHTML({ HTMLAttributes }) {\n return ['td', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0]\n },\n})\n","import '../types.js'\n\nimport { mergeAttributes, Node } from '@tiptap/core'\n\nexport interface TableHeaderOptions {\n /**\n * The HTML attributes for a table header node.\n * @default {}\n * @example { class: 'foo' }\n */\n HTMLAttributes: Record<string, any>\n}\n\n/**\n * This extension allows you to create table headers.\n * @see https://www.tiptap.dev/api/nodes/table-header\n */\nexport const TableHeader = Node.create<TableHeaderOptions>({\n name: 'tableHeader',\n\n addOptions() {\n return {\n HTMLAttributes: {},\n }\n },\n\n content: 'block+',\n\n addAttributes() {\n return {\n colspan: {\n default: 1,\n },\n rowspan: {\n default: 1,\n },\n colwidth: {\n default: null,\n parseHTML: element => {\n const colwidth = element.getAttribute('colwidth')\n const value = colwidth ? colwidth.split(',').map(width => parseInt(width, 10)) : null\n\n return value\n },\n },\n }\n },\n\n tableRole: 'header_cell',\n\n isolating: true,\n\n parseHTML() {\n return [{ tag: 'th' }]\n },\n\n renderHTML({ HTMLAttributes }) {\n return ['th', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0]\n },\n})\n","import '../types.js'\n\nimport { mergeAttributes, Node } from '@tiptap/core'\n\nexport interface TableRowOptions {\n /**\n * The HTML attributes for a table row node.\n * @default {}\n * @example { class: 'foo' }\n */\n HTMLAttributes: Record<string, any>\n}\n\n/**\n * This extension allows you to create table rows.\n * @see https://www.tiptap.dev/api/nodes/table-row\n */\nexport const TableRow = Node.create<TableRowOptions>({\n name: 'tableRow',\n\n addOptions() {\n return {\n HTMLAttributes: {},\n }\n },\n\n content: '(tableCell | tableHeader)*',\n\n tableRole: 'row',\n\n parseHTML() {\n return [{ tag: 'tr' }]\n },\n\n renderHTML({ HTMLAttributes }) {\n return ['tr', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0]\n },\n})\n","import '../types.js'\n\nimport { callOrReturn, getExtensionField, mergeAttributes, Node } from '@tiptap/core'\nimport type { DOMOutputSpec, Node as ProseMirrorNode } from '@tiptap/pm/model'\nimport { TextSelection } from '@tiptap/pm/state'\nimport {\n addColumnAfter,\n addColumnBefore,\n addRowAfter,\n addRowBefore,\n CellSelection,\n columnResizing,\n deleteColumn,\n deleteRow,\n deleteTable,\n fixTables,\n goToNextCell,\n mergeCells,\n setCellAttr,\n splitCell,\n tableEditing,\n toggleHeader,\n toggleHeaderCell,\n} from '@tiptap/pm/tables'\nimport type { EditorView, NodeView } from '@tiptap/pm/view'\n\nimport { TableView } from './TableView.js'\nimport { createColGroup } from './utilities/createColGroup.js'\nimport { createTable } from './utilities/createTable.js'\nimport { deleteTableWhenAllCellsSelected } from './utilities/deleteTableWhenAllCellsSelected.js'\n\nexport interface TableOptions {\n /**\n * HTML attributes for the table element.\n * @default {}\n * @example { class: 'foo' }\n */\n HTMLAttributes: Record<string, any>\n\n /**\n * Enables the resizing of tables.\n * @default false\n * @example true\n */\n resizable: boolean\n\n /**\n * The width of the resize handle.\n * @default 5\n * @example 10\n */\n handleWidth: number\n\n /**\n * The minimum width of a cell.\n * @default 25\n * @example 50\n */\n cellMinWidth: number\n\n /**\n * The node view to render the table.\n * @default TableView\n */\n View: (new (node: ProseMirrorNode, cellMinWidth: number, view: EditorView) => NodeView) | null\n\n /**\n * Enables the resizing of the last column.\n * @default true\n * @example false\n */\n lastColumnResizable: boolean\n\n /**\n * Allow table node selection.\n * @default false\n * @example true\n */\n allowTableNodeSelection: boolean\n}\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n table: {\n /**\n * Insert a table\n * @param options The table attributes\n * @returns True if the command was successful, otherwise false\n * @example editor.commands.insertTable({ rows: 3, cols: 3, withHeaderRow: true })\n */\n insertTable: (options?: { rows?: number; cols?: number; withHeaderRow?: boolean }) => ReturnType\n\n /**\n * Add a column before the current column\n * @returns True if the command was successful, otherwise false\n * @example editor.commands.addColumnBefore()\n */\n addColumnBefore: () => ReturnType\n\n /**\n * Add a column after the current column\n * @returns True if the command was successful, otherwise false\n * @example editor.commands.addColumnAfter()\n */\n addColumnAfter: () => ReturnType\n\n /**\n * Delete the current column\n * @returns True if the command was successful, otherwise false\n * @example editor.commands.deleteColumn()\n */\n deleteColumn: () => ReturnType\n\n /**\n * Add a row before the current row\n * @returns True if the command was successful, otherwise false\n * @example editor.commands.addRowBefore()\n */\n addRowBefore: () => ReturnType\n\n /**\n * Add a row after the current row\n * @returns True if the command was successful, otherwise false\n * @example editor.commands.addRowAfter()\n */\n addRowAfter: () => ReturnType\n\n /**\n * Delete the current row\n * @returns True if the command was successful, otherwise false\n * @example editor.commands.deleteRow()\n */\n deleteRow: () => ReturnType\n\n /**\n * Delete the current table\n * @returns True if the command was successful, otherwise false\n * @example editor.commands.deleteTable()\n */\n deleteTable: () => ReturnType\n\n /**\n * Merge the currently selected cells\n * @returns True if the command was successful, otherwise false\n * @example editor.commands.mergeCells()\n */\n mergeCells: () => ReturnType\n\n /**\n * Split the currently selected cell\n * @returns True if the command was successful, otherwise false\n * @example editor.commands.splitCell()\n */\n splitCell: () => ReturnType\n\n /**\n * Toggle the header column\n * @returns True if the command was successful, otherwise false\n * @example editor.commands.toggleHeaderColumn()\n */\n toggleHeaderColumn: () => ReturnType\n\n /**\n * Toggle the header row\n * @returns True if the command was successful, otherwise false\n * @example editor.commands.toggleHeaderRow()\n */\n toggleHeaderRow: () => ReturnType\n\n /**\n * Toggle the header cell\n * @returns True if the command was successful, otherwise false\n * @example editor.commands.toggleHeaderCell()\n */\n toggleHeaderCell: () => ReturnType\n\n /**\n * Merge or split the currently selected cells\n * @returns True if the command was successful, otherwise false\n * @example editor.commands.mergeOrSplit()\n */\n mergeOrSplit: () => ReturnType\n\n /**\n * Set a cell attribute\n * @param name The attribute name\n * @param value The attribute value\n * @returns True if the command was successful, otherwise false\n * @example editor.commands.setCellAttribute('align', 'right')\n */\n setCellAttribute: (name: string, value: any) => ReturnType\n\n /**\n * Moves the selection to the next cell\n * @returns True if the command was successful, otherwise false\n * @example editor.commands.goToNextCell()\n */\n goToNextCell: () => ReturnType\n\n /**\n * Moves the selection to the previous cell\n * @returns True if the command was successful, otherwise false\n * @example editor.commands.goToPreviousCell()\n */\n goToPreviousCell: () => ReturnType\n\n /**\n * Try to fix the table structure if necessary\n * @returns True if the command was successful, otherwise false\n * @example editor.commands.fixTables()\n */\n fixTables: () => ReturnType\n\n /**\n * Set a cell selection inside the current table\n * @param position The cell position\n * @returns True if the command was successful, otherwise false\n * @example editor.commands.setCellSelection({ anchorCell: 1, headCell: 2 })\n */\n setCellSelection: (position: { anchorCell: number; headCell?: number }) => ReturnType\n }\n }\n}\n\n/**\n * This extension allows you to create tables.\n * @see https://www.tiptap.dev/api/nodes/table\n */\nexport const Table = Node.create<TableOptions>({\n name: 'table',\n\n // @ts-ignore\n addOptions() {\n return {\n HTMLAttributes: {},\n resizable: false,\n handleWidth: 5,\n cellMinWidth: 25,\n // TODO: fix\n View: TableView,\n lastColumnResizable: true,\n allowTableNodeSelection: false,\n }\n },\n\n content: 'tableRow+',\n\n tableRole: 'table',\n\n isolating: true,\n\n group: 'block',\n\n parseHTML() {\n return [{ tag: 'table' }]\n },\n\n renderHTML({ node, HTMLAttributes }) {\n const { colgroup, tableWidth, tableMinWidth } = createColGroup(node, this.options.cellMinWidth)\n\n const table: DOMOutputSpec = [\n 'table',\n mergeAttributes(this.options.HTMLAttributes, HTMLAttributes, {\n style: tableWidth ? `width: ${tableWidth}` : `min-width: ${tableMinWidth}`,\n }),\n colgroup,\n ['tbody', 0],\n ]\n\n return table\n },\n\n addCommands() {\n return {\n insertTable:\n ({ rows = 3, cols = 3, withHeaderRow = true } = {}) =>\n ({ tr, dispatch, editor }) => {\n const node = createTable(editor.schema, rows, cols, withHeaderRow)\n\n if (dispatch) {\n const offset = tr.selection.from + 1\n\n tr.replaceSelectionWith(node)\n .scrollIntoView()\n .setSelection(TextSelection.near(tr.doc.resolve(offset)))\n }\n\n return true\n },\n addColumnBefore:\n () =>\n ({ state, dispatch }) => {\n return addColumnBefore(state, dispatch)\n },\n addColumnAfter:\n () =>\n ({ state, dispatch }) => {\n return addColumnAfter(state, dispatch)\n },\n deleteColumn:\n () =>\n ({ state, dispatch }) => {\n return deleteColumn(state, dispatch)\n },\n addRowBefore:\n () =>\n ({ state, dispatch }) => {\n return addRowBefore(state, dispatch)\n },\n addRowAfter:\n () =>\n ({ state, dispatch }) => {\n return addRowAfter(state, dispatch)\n },\n deleteRow:\n () =>\n ({ state, dispatch }) => {\n return deleteRow(state, dispatch)\n },\n deleteTable:\n () =>\n ({ state, dispatch }) => {\n return deleteTable(state, dispatch)\n },\n mergeCells:\n () =>\n ({ state, dispatch }) => {\n return mergeCells(state, dispatch)\n },\n splitCell:\n () =>\n ({ state, dispatch }) => {\n return splitCell(state, dispatch)\n },\n toggleHeaderColumn:\n () =>\n ({ state, dispatch }) => {\n return toggleHeader('column')(state, dispatch)\n },\n toggleHeaderRow:\n () =>\n ({ state, dispatch }) => {\n return toggleHeader('row')(state, dispatch)\n },\n toggleHeaderCell:\n () =>\n ({ state, dispatch }) => {\n return toggleHeaderCell(state, dispatch)\n },\n mergeOrSplit:\n () =>\n ({ state, dispatch }) => {\n if (mergeCells(state, dispatch)) {\n return true\n }\n\n return splitCell(state, dispatch)\n },\n setCellAttribute:\n (name, value) =>\n ({ state, dispatch }) => {\n return setCellAttr(name, value)(state, dispatch)\n },\n goToNextCell:\n () =>\n ({ state, dispatch }) => {\n return goToNextCell(1)(state, dispatch)\n },\n goToPreviousCell:\n () =>\n ({ state, dispatch }) => {\n return goToNextCell(-1)(state, dispatch)\n },\n fixTables:\n () =>\n ({ state, dispatch }) => {\n if (dispatch) {\n fixTables(state)\n }\n\n return true\n },\n setCellSelection:\n position =>\n ({ tr, dispatch }) => {\n if (dispatch) {\n const selection = CellSelection.create(tr.doc, position.anchorCell, position.headCell)\n\n // @ts-ignore\n tr.setSelection(selection)\n }\n\n return true\n },\n }\n },\n\n addKeyboardShortcuts() {\n return {\n Tab: () => {\n if (this.editor.commands.goToNextCell()) {\n return true\n }\n\n if (!this.editor.can().addRowAfter()) {\n return false\n }\n\n return this.editor.chain().addRowAfter().goToNextCell().run()\n },\n 'Shift-Tab': () => this.editor.commands.goToPreviousCell(),\n Backspace: deleteTableWhenAllCellsSelected,\n 'Mod-Backspace': deleteTableWhenAllCellsSelected,\n Delete: deleteTableWhenAllCellsSelected,\n 'Mod-Delete': deleteTableWhenAllCellsSelected,\n }\n },\n\n addProseMirrorPlugins() {\n const isResizable = this.options.resizable && this.editor.isEditable\n\n return [\n ...(isResizable\n ? [\n columnResizing({\n handleWidth: this.options.handleWidth,\n cellMinWidth: this.options.cellMinWidth,\n defaultCellMinWidth: this.options.cellMinWidth,\n View: this.options.View,\n lastColumnResizable: this.options.lastColumnResizable,\n }),\n ]\n : []),\n tableEditing({\n allowTableNodeSelection: this.options.allowTableNodeSelection,\n }),\n ]\n },\n\n extendNodeSchema(extension) {\n const context = {\n name: extension.name,\n options: extension.options,\n storage: extension.storage,\n }\n\n return {\n tableRole: callOrReturn(getExtensionField(extension, 'tableRole', context)),\n }\n },\n})\n","export function getColStyleDeclaration(minWidth: number, width: number | undefined): [string, string] {\n if (width) {\n // apply the stored width unless it is below the configured minimum cell width\n return ['width', `${Math.max(width, minWidth)}px`]\n }\n\n // set the minimum with on the column if it has no stored width\n return ['min-width', `${minWidth}px`]\n}\n","import type { Node as ProseMirrorNode } from '@tiptap/pm/model'\nimport type { NodeView, ViewMutationRecord } from '@tiptap/pm/view'\n\nimport { getColStyleDeclaration } from './utilities/colStyle.js'\n\nexport function updateColumns(\n node: ProseMirrorNode,\n colgroup: HTMLTableColElement, // <colgroup> has the same prototype as <col>\n table: HTMLTableElement,\n cellMinWidth: number,\n overrideCol?: number,\n overrideValue?: number,\n) {\n let totalWidth = 0\n let fixedWidth = true\n let nextDOM = colgroup.firstChild\n const row = node.firstChild\n\n if (row !== null) {\n for (let i = 0, col = 0; i < row.childCount; i += 1) {\n const { colspan, colwidth } = row.child(i).attrs\n\n for (let j = 0; j < colspan; j += 1, col += 1) {\n const hasWidth = overrideCol === col ? overrideValue : ((colwidth && colwidth[j]) as number | undefined)\n const cssWidth = hasWidth ? `${hasWidth}px` : ''\n\n totalWidth += hasWidth || cellMinWidth\n\n if (!hasWidth) {\n fixedWidth = false\n }\n\n if (!nextDOM) {\n const colElement = document.createElement('col')\n\n const [propertyKey, propertyValue] = getColStyleDeclaration(cellMinWidth, hasWidth)\n\n colElement.style.setProperty(propertyKey, propertyValue)\n\n colgroup.appendChild(colElement)\n } else {\n if ((nextDOM as HTMLTableColElement).style.width !== cssWidth) {\n const [propertyKey, propertyValue] = getColStyleDeclaration(cellMinWidth, hasWidth)\n\n ;(nextDOM as HTMLTableColElement).style.setProperty(propertyKey, propertyValue)\n }\n\n nextDOM = nextDOM.nextSibling\n }\n }\n }\n }\n\n while (nextDOM) {\n const after = nextDOM.nextSibling\n\n nextDOM.parentNode?.removeChild(nextDOM)\n nextDOM = after\n }\n\n if (fixedWidth) {\n table.style.width = `${totalWidth}px`\n table.style.minWidth = ''\n } else {\n table.style.width = ''\n table.style.minWidth = `${totalWidth}px`\n }\n}\n\nexport class TableView implements NodeView {\n node: ProseMirrorNode\n\n cellMinWidth: number\n\n dom: HTMLDivElement\n\n table: HTMLTableElement\n\n colgroup: HTMLTableColElement\n\n contentDOM: HTMLTableSectionElement\n\n constructor(node: ProseMirrorNode, cellMinWidth: number) {\n this.node = node\n this.cellMinWidth = cellMinWidth\n this.dom = document.createElement('div')\n this.dom.className = 'tableWrapper'\n this.table = this.dom.appendChild(document.createElement('table'))\n this.colgroup = this.table.appendChild(document.createElement('colgroup'))\n updateColumns(node, this.colgroup, this.table, cellMinWidth)\n this.contentDOM = this.table.appendChild(document.createElement('tbody'))\n }\n\n update(node: ProseMirrorNode) {\n if (node.type !== this.node.type) {\n return false\n }\n\n this.node = node\n updateColumns(node, this.colgroup, this.table, this.cellMinWidth)\n\n return true\n }\n\n ignoreMutation(mutation: ViewMutationRecord) {\n return mutation.type === 'attributes' && (mutation.target === this.table || this.colgroup.contains(mutation.target))\n }\n}\n","import type { DOMOutputSpec, Node as ProseMirrorNode } from '@tiptap/pm/model'\n\nimport { getColStyleDeclaration } from './colStyle.js'\n\nexport type ColGroup =\n | {\n colgroup: DOMOutputSpec\n tableWidth: string\n tableMinWidth: string\n }\n | Record<string, never>\n\n/**\n * Creates a colgroup element for a table node in ProseMirror.\n *\n * @param node - The ProseMirror node representing the table.\n * @param cellMinWidth - The minimum width of a cell in the table.\n * @param overrideCol - (Optional) The index of the column to override the width of.\n * @param overrideValue - (Optional) The width value to use for the overridden column.\n * @returns An object containing the colgroup element, the total width of the table, and the minimum width of the table.\n */\nexport function createColGroup(node: ProseMirrorNode, cellMinWidth: number): ColGroup\nexport function createColGroup(\n node: ProseMirrorNode,\n cellMinWidth: number,\n overrideCol: number,\n overrideValue: number,\n): ColGroup\nexport function createColGroup(\n node: ProseMirrorNode,\n cellMinWidth: number,\n overrideCol?: number,\n overrideValue?: number,\n): ColGroup {\n let totalWidth = 0\n let fixedWidth = true\n const cols: DOMOutputSpec[] = []\n const row = node.firstChild\n\n if (!row) {\n return {}\n }\n\n for (let i = 0, col = 0; i < row.childCount; i += 1) {\n const { colspan, colwidth } = row.child(i).attrs\n\n for (let j = 0; j < colspan; j += 1, col += 1) {\n const hasWidth = overrideCol === col ? overrideValue : colwidth && (colwidth[j] as number | undefined)\n\n totalWidth += hasWidth || cellMinWidth\n\n if (!hasWidth) {\n fixedWidth = false\n }\n\n const [property, value] = getColStyleDeclaration(cellMinWidth, hasWidth)\n\n cols.push(['col', { style: `${property}: ${value}` }])\n }\n }\n\n const tableWidth = fixedWidth ? `${totalWidth}px` : ''\n const tableMinWidth = fixedWidth ? '' : `${totalWidth}px`\n\n const colgroup: DOMOutputSpec = ['colgroup', {}, ...cols]\n\n return { colgroup, tableWidth, tableMinWidth }\n}\n","import type { Fragment, Node as ProsemirrorNode, NodeType } from '@tiptap/pm/model'\n\nexport function createCell(\n cellType: NodeType,\n cellContent?: Fragment | ProsemirrorNode | Array<ProsemirrorNode>,\n): ProsemirrorNode | null | undefined {\n if (cellContent) {\n return cellType.createChecked(null, cellContent)\n }\n\n return cellType.createAndFill()\n}\n","import type { NodeType, Schema } from '@tiptap/pm/model'\n\nexport function getTableNodeTypes(schema: Schema): { [key: string]: NodeType } {\n if (schema.cached.tableNodeTypes) {\n return schema.cached.tableNodeTypes\n }\n\n const roles: { [key: string]: NodeType } = {}\n\n Object.keys(schema.nodes).forEach(type => {\n const nodeType = schema.nodes[type]\n\n if (nodeType.spec.tableRole) {\n roles[nodeType.spec.tableRole] = nodeType\n }\n })\n\n schema.cached.tableNodeTypes = roles\n\n return roles\n}\n","import type { Fragment, Node as ProsemirrorNode, Schema } from '@tiptap/pm/model'\n\nimport { createCell } from './createCell.js'\nimport { getTableNodeTypes } from './getTableNodeTypes.js'\n\nexport function createTable(\n schema: Schema,\n rowsCount: number,\n colsCount: number,\n withHeaderRow: boolean,\n cellContent?: Fragment | ProsemirrorNode | Array<ProsemirrorNode>,\n): ProsemirrorNode {\n const types = getTableNodeTypes(schema)\n const headerCells: ProsemirrorNode[] = []\n const cells: ProsemirrorNode[] = []\n\n for (let index = 0; index < colsCount; index += 1) {\n const cell = createCell(types.cell, cellContent)\n\n if (cell) {\n cells.push(cell)\n }\n\n if (withHeaderRow) {\n const headerCell = createCell(types.header_cell, cellContent)\n\n if (headerCell) {\n headerCells.push(headerCell)\n }\n }\n }\n\n const rows: ProsemirrorNode[] = []\n\n for (let index = 0; index < rowsCount; index += 1) {\n rows.push(types.row.createChecked(null, withHeaderRow && index === 0 ? headerCells : cells))\n }\n\n return types.table.createChecked(null, rows)\n}\n","import type { KeyboardShortcutCommand } from '@tiptap/core'\nimport { findParentNodeClosestToPos } from '@tiptap/core'\n\nimport { isCellSelection } from './isCellSelection.js'\n\nexport const deleteTableWhenAllCellsSelected: KeyboardShortcutCommand = ({ editor }) => {\n const { selection } = editor.state\n\n if (!isCellSelection(selection)) {\n return false\n }\n\n let cellCount = 0\n const table = findParentNodeClosestToPos(selection.ranges[0].$from, node => {\n return node.type.name === 'table'\n })\n\n table?.node.descendants(node => {\n if (node.type.name === 'table') {\n return false\n }\n\n if (['tableCell', 'tableHeader'].includes(node.type.name)) {\n cellCount += 1\n }\n })\n\n const allCellsSelected = cellCount === selection.ranges.length\n\n if (!allCellsSelected) {\n return false\n }\n\n editor.commands.deleteTable()\n\n return true\n}\n","import { CellSelection } from '@tiptap/pm/tables'\n\nexport function isCellSelection(value: unknown): value is CellSelection {\n return value instanceof CellSelection\n}\n"],"mappings":"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","names":["import_core","import_core","import_core","import_core","import_tables","import_core"]}
@@ -0,0 +1,252 @@
1
+ import { ParentConfig, Extension } from '@tiptap/core';
2
+ import { Node } from '@tiptap/pm/model';
3
+ import { EditorView, NodeView } from '@tiptap/pm/view';
4
+
5
+ declare module '@tiptap/core' {
6
+ interface NodeConfig<Options, Storage> {
7
+ /**
8
+ * A string or function to determine the role of the table.
9
+ * @default 'table'
10
+ * @example () => 'table'
11
+ */
12
+ tableRole?: string | ((this: {
13
+ name: string;
14
+ options: Options;
15
+ storage: Storage;
16
+ parent: ParentConfig<NodeConfig<Options>>['tableRole'];
17
+ }) => string);
18
+ }
19
+ }
20
+
21
+ interface TableCellOptions {
22
+ /**
23
+ * The HTML attributes for a table cell node.
24
+ * @default {}
25
+ * @example { class: 'foo' }
26
+ */
27
+ HTMLAttributes: Record<string, any>;
28
+ }
29
+
30
+ interface TableHeaderOptions {
31
+ /**
32
+ * The HTML attributes for a table header node.
33
+ * @default {}
34
+ * @example { class: 'foo' }
35
+ */
36
+ HTMLAttributes: Record<string, any>;
37
+ }
38
+
39
+ interface TableRowOptions {
40
+ /**
41
+ * The HTML attributes for a table row node.
42
+ * @default {}
43
+ * @example { class: 'foo' }
44
+ */
45
+ HTMLAttributes: Record<string, any>;
46
+ }
47
+
48
+ interface TableOptions {
49
+ /**
50
+ * HTML attributes for the table element.
51
+ * @default {}
52
+ * @example { class: 'foo' }
53
+ */
54
+ HTMLAttributes: Record<string, any>;
55
+ /**
56
+ * Enables the resizing of tables.
57
+ * @default false
58
+ * @example true
59
+ */
60
+ resizable: boolean;
61
+ /**
62
+ * The width of the resize handle.
63
+ * @default 5
64
+ * @example 10
65
+ */
66
+ handleWidth: number;
67
+ /**
68
+ * The minimum width of a cell.
69
+ * @default 25
70
+ * @example 50
71
+ */
72
+ cellMinWidth: number;
73
+ /**
74
+ * The node view to render the table.
75
+ * @default TableView
76
+ */
77
+ View: (new (node: Node, cellMinWidth: number, view: EditorView) => NodeView) | null;
78
+ /**
79
+ * Enables the resizing of the last column.
80
+ * @default true
81
+ * @example false
82
+ */
83
+ lastColumnResizable: boolean;
84
+ /**
85
+ * Allow table node selection.
86
+ * @default false
87
+ * @example true
88
+ */
89
+ allowTableNodeSelection: boolean;
90
+ }
91
+ declare module '@tiptap/core' {
92
+ interface Commands<ReturnType> {
93
+ table: {
94
+ /**
95
+ * Insert a table
96
+ * @param options The table attributes
97
+ * @returns True if the command was successful, otherwise false
98
+ * @example editor.commands.insertTable({ rows: 3, cols: 3, withHeaderRow: true })
99
+ */
100
+ insertTable: (options?: {
101
+ rows?: number;
102
+ cols?: number;
103
+ withHeaderRow?: boolean;
104
+ }) => ReturnType;
105
+ /**
106
+ * Add a column before the current column
107
+ * @returns True if the command was successful, otherwise false
108
+ * @example editor.commands.addColumnBefore()
109
+ */
110
+ addColumnBefore: () => ReturnType;
111
+ /**
112
+ * Add a column after the current column
113
+ * @returns True if the command was successful, otherwise false
114
+ * @example editor.commands.addColumnAfter()
115
+ */
116
+ addColumnAfter: () => ReturnType;
117
+ /**
118
+ * Delete the current column
119
+ * @returns True if the command was successful, otherwise false
120
+ * @example editor.commands.deleteColumn()
121
+ */
122
+ deleteColumn: () => ReturnType;
123
+ /**
124
+ * Add a row before the current row
125
+ * @returns True if the command was successful, otherwise false
126
+ * @example editor.commands.addRowBefore()
127
+ */
128
+ addRowBefore: () => ReturnType;
129
+ /**
130
+ * Add a row after the current row
131
+ * @returns True if the command was successful, otherwise false
132
+ * @example editor.commands.addRowAfter()
133
+ */
134
+ addRowAfter: () => ReturnType;
135
+ /**
136
+ * Delete the current row
137
+ * @returns True if the command was successful, otherwise false
138
+ * @example editor.commands.deleteRow()
139
+ */
140
+ deleteRow: () => ReturnType;
141
+ /**
142
+ * Delete the current table
143
+ * @returns True if the command was successful, otherwise false
144
+ * @example editor.commands.deleteTable()
145
+ */
146
+ deleteTable: () => ReturnType;
147
+ /**
148
+ * Merge the currently selected cells
149
+ * @returns True if the command was successful, otherwise false
150
+ * @example editor.commands.mergeCells()
151
+ */
152
+ mergeCells: () => ReturnType;
153
+ /**
154
+ * Split the currently selected cell
155
+ * @returns True if the command was successful, otherwise false
156
+ * @example editor.commands.splitCell()
157
+ */
158
+ splitCell: () => ReturnType;
159
+ /**
160
+ * Toggle the header column
161
+ * @returns True if the command was successful, otherwise false
162
+ * @example editor.commands.toggleHeaderColumn()
163
+ */
164
+ toggleHeaderColumn: () => ReturnType;
165
+ /**
166
+ * Toggle the header row
167
+ * @returns True if the command was successful, otherwise false
168
+ * @example editor.commands.toggleHeaderRow()
169
+ */
170
+ toggleHeaderRow: () => ReturnType;
171
+ /**
172
+ * Toggle the header cell
173
+ * @returns True if the command was successful, otherwise false
174
+ * @example editor.commands.toggleHeaderCell()
175
+ */
176
+ toggleHeaderCell: () => ReturnType;
177
+ /**
178
+ * Merge or split the currently selected cells
179
+ * @returns True if the command was successful, otherwise false
180
+ * @example editor.commands.mergeOrSplit()
181
+ */
182
+ mergeOrSplit: () => ReturnType;
183
+ /**
184
+ * Set a cell attribute
185
+ * @param name The attribute name
186
+ * @param value The attribute value
187
+ * @returns True if the command was successful, otherwise false
188
+ * @example editor.commands.setCellAttribute('align', 'right')
189
+ */
190
+ setCellAttribute: (name: string, value: any) => ReturnType;
191
+ /**
192
+ * Moves the selection to the next cell
193
+ * @returns True if the command was successful, otherwise false
194
+ * @example editor.commands.goToNextCell()
195
+ */
196
+ goToNextCell: () => ReturnType;
197
+ /**
198
+ * Moves the selection to the previous cell
199
+ * @returns True if the command was successful, otherwise false
200
+ * @example editor.commands.goToPreviousCell()
201
+ */
202
+ goToPreviousCell: () => ReturnType;
203
+ /**
204
+ * Try to fix the table structure if necessary
205
+ * @returns True if the command was successful, otherwise false
206
+ * @example editor.commands.fixTables()
207
+ */
208
+ fixTables: () => ReturnType;
209
+ /**
210
+ * Set a cell selection inside the current table
211
+ * @param position The cell position
212
+ * @returns True if the command was successful, otherwise false
213
+ * @example editor.commands.setCellSelection({ anchorCell: 1, headCell: 2 })
214
+ */
215
+ setCellSelection: (position: {
216
+ anchorCell: number;
217
+ headCell?: number;
218
+ }) => ReturnType;
219
+ };
220
+ }
221
+ }
222
+
223
+ interface TableKitOptions {
224
+ /**
225
+ * If set to false, the table extension will not be registered
226
+ * @example table: false
227
+ */
228
+ table: Partial<TableOptions> | false;
229
+ /**
230
+ * If set to false, the table extension will not be registered
231
+ * @example tableCell: false
232
+ */
233
+ tableCell: Partial<TableCellOptions> | false;
234
+ /**
235
+ * If set to false, the table extension will not be registered
236
+ * @example tableHeader: false
237
+ */
238
+ tableHeader: Partial<TableHeaderOptions> | false;
239
+ /**
240
+ * If set to false, the table extension will not be registered
241
+ * @example tableRow: false
242
+ */
243
+ tableRow: Partial<TableRowOptions> | false;
244
+ }
245
+ /**
246
+ * The table kit is a collection of table editor extensions.
247
+ *
248
+ * It’s a good starting point for building your own table in Tiptap.
249
+ */
250
+ declare const TableKit: Extension<TableKitOptions, any>;
251
+
252
+ export { TableKit, type TableKitOptions };
@@ -0,0 +1,252 @@
1
+ import { ParentConfig, Extension } from '@tiptap/core';
2
+ import { Node } from '@tiptap/pm/model';
3
+ import { EditorView, NodeView } from '@tiptap/pm/view';
4
+
5
+ declare module '@tiptap/core' {
6
+ interface NodeConfig<Options, Storage> {
7
+ /**
8
+ * A string or function to determine the role of the table.
9
+ * @default 'table'
10
+ * @example () => 'table'
11
+ */
12
+ tableRole?: string | ((this: {
13
+ name: string;
14
+ options: Options;
15
+ storage: Storage;
16
+ parent: ParentConfig<NodeConfig<Options>>['tableRole'];
17
+ }) => string);
18
+ }
19
+ }
20
+
21
+ interface TableCellOptions {
22
+ /**
23
+ * The HTML attributes for a table cell node.
24
+ * @default {}
25
+ * @example { class: 'foo' }
26
+ */
27
+ HTMLAttributes: Record<string, any>;
28
+ }
29
+
30
+ interface TableHeaderOptions {
31
+ /**
32
+ * The HTML attributes for a table header node.
33
+ * @default {}
34
+ * @example { class: 'foo' }
35
+ */
36
+ HTMLAttributes: Record<string, any>;
37
+ }
38
+
39
+ interface TableRowOptions {
40
+ /**
41
+ * The HTML attributes for a table row node.
42
+ * @default {}
43
+ * @example { class: 'foo' }
44
+ */
45
+ HTMLAttributes: Record<string, any>;
46
+ }
47
+
48
+ interface TableOptions {
49
+ /**
50
+ * HTML attributes for the table element.
51
+ * @default {}
52
+ * @example { class: 'foo' }
53
+ */
54
+ HTMLAttributes: Record<string, any>;
55
+ /**
56
+ * Enables the resizing of tables.
57
+ * @default false
58
+ * @example true
59
+ */
60
+ resizable: boolean;
61
+ /**
62
+ * The width of the resize handle.
63
+ * @default 5
64
+ * @example 10
65
+ */
66
+ handleWidth: number;
67
+ /**
68
+ * The minimum width of a cell.
69
+ * @default 25
70
+ * @example 50
71
+ */
72
+ cellMinWidth: number;
73
+ /**
74
+ * The node view to render the table.
75
+ * @default TableView
76
+ */
77
+ View: (new (node: Node, cellMinWidth: number, view: EditorView) => NodeView) | null;
78
+ /**
79
+ * Enables the resizing of the last column.
80
+ * @default true
81
+ * @example false
82
+ */
83
+ lastColumnResizable: boolean;
84
+ /**
85
+ * Allow table node selection.
86
+ * @default false
87
+ * @example true
88
+ */
89
+ allowTableNodeSelection: boolean;
90
+ }
91
+ declare module '@tiptap/core' {
92
+ interface Commands<ReturnType> {
93
+ table: {
94
+ /**
95
+ * Insert a table
96
+ * @param options The table attributes
97
+ * @returns True if the command was successful, otherwise false
98
+ * @example editor.commands.insertTable({ rows: 3, cols: 3, withHeaderRow: true })
99
+ */
100
+ insertTable: (options?: {
101
+ rows?: number;
102
+ cols?: number;
103
+ withHeaderRow?: boolean;
104
+ }) => ReturnType;
105
+ /**
106
+ * Add a column before the current column
107
+ * @returns True if the command was successful, otherwise false
108
+ * @example editor.commands.addColumnBefore()
109
+ */
110
+ addColumnBefore: () => ReturnType;
111
+ /**
112
+ * Add a column after the current column
113
+ * @returns True if the command was successful, otherwise false
114
+ * @example editor.commands.addColumnAfter()
115
+ */
116
+ addColumnAfter: () => ReturnType;
117
+ /**
118
+ * Delete the current column
119
+ * @returns True if the command was successful, otherwise false
120
+ * @example editor.commands.deleteColumn()
121
+ */
122
+ deleteColumn: () => ReturnType;
123
+ /**
124
+ * Add a row before the current row
125
+ * @returns True if the command was successful, otherwise false
126
+ * @example editor.commands.addRowBefore()
127
+ */
128
+ addRowBefore: () => ReturnType;
129
+ /**
130
+ * Add a row after the current row
131
+ * @returns True if the command was successful, otherwise false
132
+ * @example editor.commands.addRowAfter()
133
+ */
134
+ addRowAfter: () => ReturnType;
135
+ /**
136
+ * Delete the current row
137
+ * @returns True if the command was successful, otherwise false
138
+ * @example editor.commands.deleteRow()
139
+ */
140
+ deleteRow: () => ReturnType;
141
+ /**
142
+ * Delete the current table
143
+ * @returns True if the command was successful, otherwise false
144
+ * @example editor.commands.deleteTable()
145
+ */
146
+ deleteTable: () => ReturnType;
147
+ /**
148
+ * Merge the currently selected cells
149
+ * @returns True if the command was successful, otherwise false
150
+ * @example editor.commands.mergeCells()
151
+ */
152
+ mergeCells: () => ReturnType;
153
+ /**
154
+ * Split the currently selected cell
155
+ * @returns True if the command was successful, otherwise false
156
+ * @example editor.commands.splitCell()
157
+ */
158
+ splitCell: () => ReturnType;
159
+ /**
160
+ * Toggle the header column
161
+ * @returns True if the command was successful, otherwise false
162
+ * @example editor.commands.toggleHeaderColumn()
163
+ */
164
+ toggleHeaderColumn: () => ReturnType;
165
+ /**
166
+ * Toggle the header row
167
+ * @returns True if the command was successful, otherwise false
168
+ * @example editor.commands.toggleHeaderRow()
169
+ */
170
+ toggleHeaderRow: () => ReturnType;
171
+ /**
172
+ * Toggle the header cell
173
+ * @returns True if the command was successful, otherwise false
174
+ * @example editor.commands.toggleHeaderCell()
175
+ */
176
+ toggleHeaderCell: () => ReturnType;
177
+ /**
178
+ * Merge or split the currently selected cells
179
+ * @returns True if the command was successful, otherwise false
180
+ * @example editor.commands.mergeOrSplit()
181
+ */
182
+ mergeOrSplit: () => ReturnType;
183
+ /**
184
+ * Set a cell attribute
185
+ * @param name The attribute name
186
+ * @param value The attribute value
187
+ * @returns True if the command was successful, otherwise false
188
+ * @example editor.commands.setCellAttribute('align', 'right')
189
+ */
190
+ setCellAttribute: (name: string, value: any) => ReturnType;
191
+ /**
192
+ * Moves the selection to the next cell
193
+ * @returns True if the command was successful, otherwise false
194
+ * @example editor.commands.goToNextCell()
195
+ */
196
+ goToNextCell: () => ReturnType;
197
+ /**
198
+ * Moves the selection to the previous cell
199
+ * @returns True if the command was successful, otherwise false
200
+ * @example editor.commands.goToPreviousCell()
201
+ */
202
+ goToPreviousCell: () => ReturnType;
203
+ /**
204
+ * Try to fix the table structure if necessary
205
+ * @returns True if the command was successful, otherwise false
206
+ * @example editor.commands.fixTables()
207
+ */
208
+ fixTables: () => ReturnType;
209
+ /**
210
+ * Set a cell selection inside the current table
211
+ * @param position The cell position
212
+ * @returns True if the command was successful, otherwise false
213
+ * @example editor.commands.setCellSelection({ anchorCell: 1, headCell: 2 })
214
+ */
215
+ setCellSelection: (position: {
216
+ anchorCell: number;
217
+ headCell?: number;
218
+ }) => ReturnType;
219
+ };
220
+ }
221
+ }
222
+
223
+ interface TableKitOptions {
224
+ /**
225
+ * If set to false, the table extension will not be registered
226
+ * @example table: false
227
+ */
228
+ table: Partial<TableOptions> | false;
229
+ /**
230
+ * If set to false, the table extension will not be registered
231
+ * @example tableCell: false
232
+ */
233
+ tableCell: Partial<TableCellOptions> | false;
234
+ /**
235
+ * If set to false, the table extension will not be registered
236
+ * @example tableHeader: false
237
+ */
238
+ tableHeader: Partial<TableHeaderOptions> | false;
239
+ /**
240
+ * If set to false, the table extension will not be registered
241
+ * @example tableRow: false
242
+ */
243
+ tableRow: Partial<TableRowOptions> | false;
244
+ }
245
+ /**
246
+ * The table kit is a collection of table editor extensions.
247
+ *
248
+ * It’s a good starting point for building your own table in Tiptap.
249
+ */
250
+ declare const TableKit: Extension<TableKitOptions, any>;
251
+
252
+ export { TableKit, type TableKitOptions };