@tiptap/extension-table 2.0.0-beta.49 → 2.0.0-beta.53
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/packages/extension-table/src/TableView.d.ts +1 -1
- package/dist/packages/extension-table/src/utilities/createCell.d.ts +2 -2
- package/dist/packages/extension-table/src/utilities/createTable.d.ts +2 -2
- package/dist/packages/extension-table/src/utilities/getTableNodeTypes.d.ts +1 -1
- package/dist/packages/extension-table/src/utilities/isCellSelection.d.ts +1 -1
- package/dist/tiptap-extension-table.cjs.js +86 -86
- package/dist/tiptap-extension-table.cjs.js.map +1 -1
- package/dist/tiptap-extension-table.esm.js +64 -64
- package/dist/tiptap-extension-table.esm.js.map +1 -1
- package/dist/tiptap-extension-table.umd.js +89 -89
- package/dist/tiptap-extension-table.umd.js.map +1 -1
- package/package.json +6 -8
- package/src/TableView.ts +1 -1
- package/src/table.ts +16 -15
- package/src/utilities/createCell.ts +2 -6
- package/src/utilities/createTable.ts +3 -2
- package/src/utilities/deleteTableWhenAllCellsSelected.ts +2 -1
- package/src/utilities/getTableNodeTypes.ts +1 -1
- package/src/utilities/isCellSelection.ts +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { NodeView } from 'prosemirror-view';
|
|
2
1
|
import { Node as ProseMirrorNode } from 'prosemirror-model';
|
|
2
|
+
import { NodeView } from 'prosemirror-view';
|
|
3
3
|
export declare function updateColumns(node: ProseMirrorNode, colgroup: Element, table: Element, cellMinWidth: number, overrideCol?: number, overrideValue?: any): void;
|
|
4
4
|
export declare class TableView implements NodeView {
|
|
5
5
|
node: ProseMirrorNode;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare function createCell(cellType: NodeType, cellContent?: Fragment
|
|
1
|
+
import { Fragment, Node as ProsemirrorNode, NodeType } from 'prosemirror-model';
|
|
2
|
+
export declare function createCell(cellType: NodeType, cellContent?: Fragment | ProsemirrorNode | Array<ProsemirrorNode>): ProsemirrorNode | null | undefined;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare function createTable(schema: Schema, rowsCount: number, colsCount: number, withHeaderRow: boolean, cellContent?: Fragment
|
|
1
|
+
import { Fragment, Node as ProsemirrorNode, Schema } from 'prosemirror-model';
|
|
2
|
+
export declare function createTable(schema: Schema, rowsCount: number, colsCount: number, withHeaderRow: boolean, cellContent?: Fragment | ProsemirrorNode | Array<ProsemirrorNode>): ProsemirrorNode;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { CellSelection } from 'prosemirror-tables';
|
|
1
|
+
import { CellSelection } from 'prosemirror-tables-contently';
|
|
2
2
|
export declare function isCellSelection(value: unknown): value is CellSelection;
|
|
@@ -3,8 +3,71 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var core = require('@tiptap/core');
|
|
6
|
-
var prosemirrorTables = require('prosemirror-tables');
|
|
7
6
|
var prosemirrorState = require('prosemirror-state');
|
|
7
|
+
var prosemirrorTablesContently = require('prosemirror-tables-contently');
|
|
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' && (mutation.target === this.table || this.colgroup.contains(mutation.target));
|
|
69
|
+
}
|
|
70
|
+
}
|
|
8
71
|
|
|
9
72
|
function createCell(cellType, cellContent) {
|
|
10
73
|
if (cellContent) {
|
|
@@ -52,7 +115,7 @@ function createTable(schema, rowsCount, colsCount, withHeaderRow, cellContent) {
|
|
|
52
115
|
}
|
|
53
116
|
|
|
54
117
|
function isCellSelection(value) {
|
|
55
|
-
return value instanceof
|
|
118
|
+
return value instanceof prosemirrorTablesContently.CellSelection;
|
|
56
119
|
}
|
|
57
120
|
|
|
58
121
|
const deleteTableWhenAllCellsSelected = ({ editor }) => {
|
|
@@ -80,69 +143,6 @@ const deleteTableWhenAllCellsSelected = ({ editor }) => {
|
|
|
80
143
|
return true;
|
|
81
144
|
};
|
|
82
145
|
|
|
83
|
-
function updateColumns(node, colgroup, table, cellMinWidth, overrideCol, overrideValue) {
|
|
84
|
-
let totalWidth = 0;
|
|
85
|
-
let fixedWidth = true;
|
|
86
|
-
let nextDOM = colgroup.firstChild;
|
|
87
|
-
const row = node.firstChild;
|
|
88
|
-
for (let i = 0, col = 0; i < row.childCount; i += 1) {
|
|
89
|
-
const { colspan, colwidth } = row.child(i).attrs;
|
|
90
|
-
for (let j = 0; j < colspan; j += 1, col += 1) {
|
|
91
|
-
const hasWidth = overrideCol === col ? overrideValue : colwidth && colwidth[j];
|
|
92
|
-
const cssWidth = hasWidth ? `${hasWidth}px` : '';
|
|
93
|
-
totalWidth += hasWidth || cellMinWidth;
|
|
94
|
-
if (!hasWidth) {
|
|
95
|
-
fixedWidth = false;
|
|
96
|
-
}
|
|
97
|
-
if (!nextDOM) {
|
|
98
|
-
colgroup.appendChild(document.createElement('col')).style.width = cssWidth;
|
|
99
|
-
}
|
|
100
|
-
else {
|
|
101
|
-
if (nextDOM.style.width !== cssWidth) {
|
|
102
|
-
nextDOM.style.width = cssWidth;
|
|
103
|
-
}
|
|
104
|
-
nextDOM = nextDOM.nextSibling;
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
while (nextDOM) {
|
|
109
|
-
const after = nextDOM.nextSibling;
|
|
110
|
-
nextDOM.parentNode.removeChild(nextDOM);
|
|
111
|
-
nextDOM = after;
|
|
112
|
-
}
|
|
113
|
-
if (fixedWidth) {
|
|
114
|
-
table.style.width = `${totalWidth}px`;
|
|
115
|
-
table.style.minWidth = '';
|
|
116
|
-
}
|
|
117
|
-
else {
|
|
118
|
-
table.style.width = '';
|
|
119
|
-
table.style.minWidth = `${totalWidth}px`;
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
class TableView {
|
|
123
|
-
constructor(node, cellMinWidth) {
|
|
124
|
-
this.node = node;
|
|
125
|
-
this.cellMinWidth = cellMinWidth;
|
|
126
|
-
this.dom = document.createElement('div');
|
|
127
|
-
this.dom.className = 'tableWrapper';
|
|
128
|
-
this.table = this.dom.appendChild(document.createElement('table'));
|
|
129
|
-
this.colgroup = this.table.appendChild(document.createElement('colgroup'));
|
|
130
|
-
updateColumns(node, this.colgroup, this.table, cellMinWidth);
|
|
131
|
-
this.contentDOM = this.table.appendChild(document.createElement('tbody'));
|
|
132
|
-
}
|
|
133
|
-
update(node) {
|
|
134
|
-
if (node.type !== this.node.type) {
|
|
135
|
-
return false;
|
|
136
|
-
}
|
|
137
|
-
this.node = node;
|
|
138
|
-
updateColumns(node, this.colgroup, this.table, this.cellMinWidth);
|
|
139
|
-
return true;
|
|
140
|
-
}
|
|
141
|
-
ignoreMutation(mutation) {
|
|
142
|
-
return mutation.type === 'attributes' && (mutation.target === this.table || this.colgroup.contains(mutation.target));
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
|
|
146
146
|
const Table = core.Node.create({
|
|
147
147
|
name: 'table',
|
|
148
148
|
// @ts-ignore
|
|
@@ -183,65 +183,65 @@ const Table = core.Node.create({
|
|
|
183
183
|
return true;
|
|
184
184
|
},
|
|
185
185
|
addColumnBefore: () => ({ state, dispatch }) => {
|
|
186
|
-
return
|
|
186
|
+
return prosemirrorTablesContently.addColumnBefore(state, dispatch);
|
|
187
187
|
},
|
|
188
188
|
addColumnAfter: () => ({ state, dispatch }) => {
|
|
189
|
-
return
|
|
189
|
+
return prosemirrorTablesContently.addColumnAfter(state, dispatch);
|
|
190
190
|
},
|
|
191
191
|
deleteColumn: () => ({ state, dispatch }) => {
|
|
192
|
-
return
|
|
192
|
+
return prosemirrorTablesContently.deleteColumn(state, dispatch);
|
|
193
193
|
},
|
|
194
194
|
addRowBefore: () => ({ state, dispatch }) => {
|
|
195
|
-
return
|
|
195
|
+
return prosemirrorTablesContently.addRowBefore(state, dispatch);
|
|
196
196
|
},
|
|
197
197
|
addRowAfter: () => ({ state, dispatch }) => {
|
|
198
|
-
return
|
|
198
|
+
return prosemirrorTablesContently.addRowAfter(state, dispatch);
|
|
199
199
|
},
|
|
200
200
|
deleteRow: () => ({ state, dispatch }) => {
|
|
201
|
-
return
|
|
201
|
+
return prosemirrorTablesContently.deleteRow(state, dispatch);
|
|
202
202
|
},
|
|
203
203
|
deleteTable: () => ({ state, dispatch }) => {
|
|
204
|
-
return
|
|
204
|
+
return prosemirrorTablesContently.deleteTable(state, dispatch);
|
|
205
205
|
},
|
|
206
206
|
mergeCells: () => ({ state, dispatch }) => {
|
|
207
|
-
return
|
|
207
|
+
return prosemirrorTablesContently.mergeCells(state, dispatch);
|
|
208
208
|
},
|
|
209
209
|
splitCell: () => ({ state, dispatch }) => {
|
|
210
|
-
return
|
|
210
|
+
return prosemirrorTablesContently.splitCell(state, dispatch);
|
|
211
211
|
},
|
|
212
212
|
toggleHeaderColumn: () => ({ state, dispatch }) => {
|
|
213
|
-
return
|
|
213
|
+
return prosemirrorTablesContently.toggleHeader('column')(state, dispatch);
|
|
214
214
|
},
|
|
215
215
|
toggleHeaderRow: () => ({ state, dispatch }) => {
|
|
216
|
-
return
|
|
216
|
+
return prosemirrorTablesContently.toggleHeader('row')(state, dispatch);
|
|
217
217
|
},
|
|
218
218
|
toggleHeaderCell: () => ({ state, dispatch }) => {
|
|
219
|
-
return
|
|
219
|
+
return prosemirrorTablesContently.toggleHeaderCell(state, dispatch);
|
|
220
220
|
},
|
|
221
221
|
mergeOrSplit: () => ({ state, dispatch }) => {
|
|
222
|
-
if (
|
|
222
|
+
if (prosemirrorTablesContently.mergeCells(state, dispatch)) {
|
|
223
223
|
return true;
|
|
224
224
|
}
|
|
225
|
-
return
|
|
225
|
+
return prosemirrorTablesContently.splitCell(state, dispatch);
|
|
226
226
|
},
|
|
227
227
|
setCellAttribute: (name, value) => ({ state, dispatch }) => {
|
|
228
|
-
return
|
|
228
|
+
return prosemirrorTablesContently.setCellAttr(name, value)(state, dispatch);
|
|
229
229
|
},
|
|
230
230
|
goToNextCell: () => ({ state, dispatch }) => {
|
|
231
|
-
return
|
|
231
|
+
return prosemirrorTablesContently.goToNextCell(1)(state, dispatch);
|
|
232
232
|
},
|
|
233
233
|
goToPreviousCell: () => ({ state, dispatch }) => {
|
|
234
|
-
return
|
|
234
|
+
return prosemirrorTablesContently.goToNextCell(-1)(state, dispatch);
|
|
235
235
|
},
|
|
236
236
|
fixTables: () => ({ state, dispatch }) => {
|
|
237
237
|
if (dispatch) {
|
|
238
|
-
|
|
238
|
+
prosemirrorTablesContently.fixTables(state);
|
|
239
239
|
}
|
|
240
240
|
return true;
|
|
241
241
|
},
|
|
242
242
|
setCellSelection: position => ({ tr, dispatch }) => {
|
|
243
243
|
if (dispatch) {
|
|
244
|
-
const selection =
|
|
244
|
+
const selection = prosemirrorTablesContently.CellSelection.create(tr.doc, position.anchorCell, position.headCell);
|
|
245
245
|
// @ts-ignore
|
|
246
246
|
tr.setSelection(selection);
|
|
247
247
|
}
|
|
@@ -274,7 +274,7 @@ const Table = core.Node.create({
|
|
|
274
274
|
addProseMirrorPlugins() {
|
|
275
275
|
const isResizable = this.options.resizable && this.editor.isEditable;
|
|
276
276
|
return [
|
|
277
|
-
...(isResizable ? [
|
|
277
|
+
...(isResizable ? [prosemirrorTablesContently.columnResizing({
|
|
278
278
|
handleWidth: this.options.handleWidth,
|
|
279
279
|
cellMinWidth: this.options.cellMinWidth,
|
|
280
280
|
View: this.options.View,
|
|
@@ -282,7 +282,7 @@ const Table = core.Node.create({
|
|
|
282
282
|
// @ts-ignore (incorrect type)
|
|
283
283
|
lastColumnResizable: this.options.lastColumnResizable,
|
|
284
284
|
})] : []),
|
|
285
|
-
|
|
285
|
+
prosemirrorTablesContently.tableEditing({
|
|
286
286
|
allowTableNodeSelection: this.options.allowTableNodeSelection,
|
|
287
287
|
}),
|
|
288
288
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tiptap-extension-table.cjs.js","sources":["../src/utilities/createCell.ts","../src/utilities/getTableNodeTypes.ts","../src/utilities/createTable.ts","../src/utilities/isCellSelection.ts","../src/utilities/deleteTableWhenAllCellsSelected.ts","../src/TableView.ts","../src/table.ts"],"sourcesContent":["import {\n NodeType, Fragment,\n Node as ProsemirrorNode,\n Schema,\n} from 'prosemirror-model'\n\nexport function createCell(cellType: NodeType, cellContent?: Fragment<Schema> | ProsemirrorNode<Schema> | Array<ProsemirrorNode<Schema>>): ProsemirrorNode | null | undefined {\n if (cellContent) {\n return cellType.createChecked(null, cellContent)\n }\n\n return cellType.createAndFill()\n}\n","import { Schema, NodeType } from 'prosemirror-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 { Schema, Fragment, Node as ProsemirrorNode } from 'prosemirror-model'\nimport { createCell } from './createCell'\nimport { getTableNodeTypes } from './getTableNodeTypes'\n\nexport function createTable(schema: Schema, rowsCount: number, colsCount: number, withHeaderRow: boolean, cellContent?: Fragment<Schema> | ProsemirrorNode<Schema> | Array<ProsemirrorNode<Schema>>): ProsemirrorNode {\n const types = getTableNodeTypes(schema)\n const headerCells = []\n const cells = []\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 = []\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 { CellSelection } from 'prosemirror-tables'\n\nexport function isCellSelection(value: unknown): value is CellSelection {\n return value instanceof CellSelection\n}\n","import { KeyboardShortcutCommand, findParentNodeClosestToPos } from '@tiptap/core'\nimport { isCellSelection } from './isCellSelection'\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","// @ts-nocheck\nimport { NodeView } from 'prosemirror-view'\nimport { Node as ProseMirrorNode } from 'prosemirror-model'\n\nexport function updateColumns(node: ProseMirrorNode, colgroup: Element, table: Element, cellMinWidth: number, overrideCol?: number, overrideValue?: any) {\n let totalWidth = 0\n let fixedWidth = true\n let nextDOM = colgroup.firstChild\n const row = node.firstChild\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]\n const cssWidth = hasWidth ? `${hasWidth}px` : ''\n\n totalWidth += hasWidth || cellMinWidth\n\n if (!hasWidth) {\n fixedWidth = false\n }\n\n if (!nextDOM) {\n colgroup.appendChild(document.createElement('col')).style.width = cssWidth\n } else {\n if (nextDOM.style.width !== cssWidth) {\n nextDOM.style.width = cssWidth\n }\n\n nextDOM = nextDOM.nextSibling\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\n node: ProseMirrorNode\n\n cellMinWidth: number\n\n dom: Element\n\n table: Element\n\n colgroup: Element\n\n contentDOM: Element\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: MutationRecord | { type: 'selection'; target: Element }) {\n return mutation.type === 'attributes' && (mutation.target === this.table || this.colgroup.contains(mutation.target))\n }\n}\n","import {\n Node,\n ParentConfig,\n mergeAttributes,\n getExtensionField,\n callOrReturn,\n} from '@tiptap/core'\nimport {\n tableEditing,\n columnResizing,\n goToNextCell,\n addColumnBefore,\n addColumnAfter,\n deleteColumn,\n addRowBefore,\n addRowAfter,\n deleteRow,\n deleteTable,\n mergeCells,\n splitCell,\n toggleHeader,\n toggleHeaderCell,\n setCellAttr,\n fixTables,\n CellSelection,\n} from 'prosemirror-tables'\nimport { NodeView } from 'prosemirror-view'\nimport { TextSelection } from 'prosemirror-state'\nimport { createTable } from './utilities/createTable'\nimport { deleteTableWhenAllCellsSelected } from './utilities/deleteTableWhenAllCellsSelected'\nimport { TableView } from './TableView'\n\nexport interface TableOptions {\n HTMLAttributes: Record<string, any>,\n resizable: boolean,\n handleWidth: number,\n cellMinWidth: number,\n View: NodeView,\n lastColumnResizable: boolean,\n allowTableNodeSelection: boolean,\n}\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n table: {\n insertTable: (options?: { rows?: number, cols?: number, withHeaderRow?: boolean }) => ReturnType,\n addColumnBefore: () => ReturnType,\n addColumnAfter: () => ReturnType,\n deleteColumn: () => ReturnType,\n addRowBefore: () => ReturnType,\n addRowAfter: () => ReturnType,\n deleteRow: () => ReturnType,\n deleteTable: () => ReturnType,\n mergeCells: () => ReturnType,\n splitCell: () => ReturnType,\n toggleHeaderColumn: () => ReturnType,\n toggleHeaderRow: () => ReturnType,\n toggleHeaderCell: () => ReturnType,\n mergeOrSplit: () => ReturnType,\n setCellAttribute: (name: string, value: any) => ReturnType,\n goToNextCell: () => ReturnType,\n goToPreviousCell: () => ReturnType,\n fixTables: () => ReturnType,\n setCellSelection: (position: { anchorCell: number, headCell?: number }) => ReturnType,\n }\n }\n\n interface NodeConfig<Options, Storage> {\n /**\n * Table Role\n */\n tableRole?: string | ((this: {\n name: string,\n options: Options,\n storage: Storage,\n parent: ParentConfig<NodeConfig<Options>>['tableRole'],\n }) => string),\n }\n}\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 [\n { tag: 'table' },\n ]\n },\n\n renderHTML({ HTMLAttributes }) {\n return ['table', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), ['tbody', 0]]\n },\n\n addCommands() {\n return {\n insertTable: ({ rows = 3, cols = 3, withHeaderRow = true } = {}) => ({ tr, dispatch, editor }) => {\n const node = createTable(editor.schema, rows, cols, withHeaderRow)\n\n if (dispatch) {\n const offset = tr.selection.anchor + 1\n\n tr.replaceSelectionWith(node)\n .scrollIntoView()\n .setSelection(TextSelection.near(tr.doc.resolve(offset)))\n }\n\n return true\n },\n addColumnBefore: () => ({ state, dispatch }) => {\n return addColumnBefore(state, dispatch)\n },\n addColumnAfter: () => ({ state, dispatch }) => {\n return addColumnAfter(state, dispatch)\n },\n deleteColumn: () => ({ state, dispatch }) => {\n return deleteColumn(state, dispatch)\n },\n addRowBefore: () => ({ state, dispatch }) => {\n return addRowBefore(state, dispatch)\n },\n addRowAfter: () => ({ state, dispatch }) => {\n return addRowAfter(state, dispatch)\n },\n deleteRow: () => ({ state, dispatch }) => {\n return deleteRow(state, dispatch)\n },\n deleteTable: () => ({ state, dispatch }) => {\n return deleteTable(state, dispatch)\n },\n mergeCells: () => ({ state, dispatch }) => {\n return mergeCells(state, dispatch)\n },\n splitCell: () => ({ state, dispatch }) => {\n return splitCell(state, dispatch)\n },\n toggleHeaderColumn: () => ({ state, dispatch }) => {\n return toggleHeader('column')(state, dispatch)\n },\n toggleHeaderRow: () => ({ state, dispatch }) => {\n return toggleHeader('row')(state, dispatch)\n },\n toggleHeaderCell: () => ({ state, dispatch }) => {\n return toggleHeaderCell(state, dispatch)\n },\n mergeOrSplit: () => ({ state, dispatch }) => {\n if (mergeCells(state, dispatch)) {\n return true\n }\n\n return splitCell(state, dispatch)\n },\n setCellAttribute: (name, value) => ({ state, dispatch }) => {\n return setCellAttr(name, value)(state, dispatch)\n },\n goToNextCell: () => ({ state, dispatch }) => {\n return goToNextCell(1)(state, dispatch)\n },\n goToPreviousCell: () => ({ state, dispatch }) => {\n return goToNextCell(-1)(state, dispatch)\n },\n fixTables: () => ({ state, dispatch }) => {\n if (dispatch) {\n fixTables(state)\n }\n\n return true\n },\n setCellSelection: position => ({ 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\n .chain()\n .addRowAfter()\n .goToNextCell()\n .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 ? [columnResizing({\n handleWidth: this.options.handleWidth,\n cellMinWidth: this.options.cellMinWidth,\n View: this.options.View,\n // TODO: PR for @types/prosemirror-tables\n // @ts-ignore (incorrect type)\n lastColumnResizable: this.options.lastColumnResizable,\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"],"names":["CellSelection","findParentNodeClosestToPos","Node","mergeAttributes","TextSelection","addColumnBefore","addColumnAfter","deleteColumn","addRowBefore","addRowAfter","deleteRow","deleteTable","mergeCells","splitCell","toggleHeader","toggleHeaderCell","setCellAttr","goToNextCell","fixTables","columnResizing","tableEditing","callOrReturn","getExtensionField"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tiptap-extension-table.cjs.js","sources":["../src/TableView.ts","../src/utilities/createCell.ts","../src/utilities/getTableNodeTypes.ts","../src/utilities/createTable.ts","../src/utilities/isCellSelection.ts","../src/utilities/deleteTableWhenAllCellsSelected.ts","../src/table.ts"],"sourcesContent":["// @ts-nocheck\nimport { Node as ProseMirrorNode } from 'prosemirror-model'\nimport { NodeView } from 'prosemirror-view'\n\nexport function updateColumns(node: ProseMirrorNode, colgroup: Element, table: Element, cellMinWidth: number, overrideCol?: number, overrideValue?: any) {\n let totalWidth = 0\n let fixedWidth = true\n let nextDOM = colgroup.firstChild\n const row = node.firstChild\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]\n const cssWidth = hasWidth ? `${hasWidth}px` : ''\n\n totalWidth += hasWidth || cellMinWidth\n\n if (!hasWidth) {\n fixedWidth = false\n }\n\n if (!nextDOM) {\n colgroup.appendChild(document.createElement('col')).style.width = cssWidth\n } else {\n if (nextDOM.style.width !== cssWidth) {\n nextDOM.style.width = cssWidth\n }\n\n nextDOM = nextDOM.nextSibling\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\n node: ProseMirrorNode\n\n cellMinWidth: number\n\n dom: Element\n\n table: Element\n\n colgroup: Element\n\n contentDOM: Element\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: MutationRecord | { type: 'selection'; target: Element }) {\n return mutation.type === 'attributes' && (mutation.target === this.table || this.colgroup.contains(mutation.target))\n }\n}\n","import { Fragment, Node as ProsemirrorNode, NodeType } from 'prosemirror-model'\n\nexport function createCell(cellType: NodeType, cellContent?: Fragment | ProsemirrorNode | Array<ProsemirrorNode>): ProsemirrorNode | null | undefined {\n if (cellContent) {\n return cellType.createChecked(null, cellContent)\n }\n\n return cellType.createAndFill()\n}\n","import { NodeType, Schema } from 'prosemirror-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 { Fragment, Node as ProsemirrorNode, Schema } from 'prosemirror-model'\n\nimport { createCell } from './createCell'\nimport { getTableNodeTypes } from './getTableNodeTypes'\n\nexport function createTable(schema: Schema, rowsCount: number, colsCount: number, withHeaderRow: boolean, cellContent?: Fragment | ProsemirrorNode | Array<ProsemirrorNode>): ProsemirrorNode {\n const types = getTableNodeTypes(schema)\n const headerCells = []\n const cells = []\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 = []\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 { CellSelection } from 'prosemirror-tables-contently'\n\nexport function isCellSelection(value: unknown): value is CellSelection {\n return value instanceof CellSelection\n}\n","import { findParentNodeClosestToPos, KeyboardShortcutCommand } from '@tiptap/core'\n\nimport { isCellSelection } from './isCellSelection'\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 {\n callOrReturn,\n getExtensionField,\n mergeAttributes,\n Node,\n ParentConfig,\n} from '@tiptap/core'\nimport { TextSelection } from 'prosemirror-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 'prosemirror-tables-contently'\nimport { NodeView } from 'prosemirror-view'\n\nimport { TableView } from './TableView'\nimport { createTable } from './utilities/createTable'\nimport { deleteTableWhenAllCellsSelected } from './utilities/deleteTableWhenAllCellsSelected'\n\nexport interface TableOptions {\n HTMLAttributes: Record<string, any>,\n resizable: boolean,\n handleWidth: number,\n cellMinWidth: number,\n View: NodeView,\n lastColumnResizable: boolean,\n allowTableNodeSelection: boolean,\n}\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n table: {\n insertTable: (options?: { rows?: number, cols?: number, withHeaderRow?: boolean }) => ReturnType,\n addColumnBefore: () => ReturnType,\n addColumnAfter: () => ReturnType,\n deleteColumn: () => ReturnType,\n addRowBefore: () => ReturnType,\n addRowAfter: () => ReturnType,\n deleteRow: () => ReturnType,\n deleteTable: () => ReturnType,\n mergeCells: () => ReturnType,\n splitCell: () => ReturnType,\n toggleHeaderColumn: () => ReturnType,\n toggleHeaderRow: () => ReturnType,\n toggleHeaderCell: () => ReturnType,\n mergeOrSplit: () => ReturnType,\n setCellAttribute: (name: string, value: any) => ReturnType,\n goToNextCell: () => ReturnType,\n goToPreviousCell: () => ReturnType,\n fixTables: () => ReturnType,\n setCellSelection: (position: { anchorCell: number, headCell?: number }) => ReturnType,\n }\n }\n\n interface NodeConfig<Options, Storage> {\n /**\n * Table Role\n */\n tableRole?: string | ((this: {\n name: string,\n options: Options,\n storage: Storage,\n parent: ParentConfig<NodeConfig<Options>>['tableRole'],\n }) => string),\n }\n}\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 [\n { tag: 'table' },\n ]\n },\n\n renderHTML({ HTMLAttributes }) {\n return ['table', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), ['tbody', 0]]\n },\n\n addCommands() {\n return {\n insertTable: ({ rows = 3, cols = 3, withHeaderRow = true } = {}) => ({ tr, dispatch, editor }) => {\n const node = createTable(editor.schema, rows, cols, withHeaderRow)\n\n if (dispatch) {\n const offset = tr.selection.anchor + 1\n\n tr.replaceSelectionWith(node)\n .scrollIntoView()\n .setSelection(TextSelection.near(tr.doc.resolve(offset)))\n }\n\n return true\n },\n addColumnBefore: () => ({ state, dispatch }) => {\n return addColumnBefore(state, dispatch)\n },\n addColumnAfter: () => ({ state, dispatch }) => {\n return addColumnAfter(state, dispatch)\n },\n deleteColumn: () => ({ state, dispatch }) => {\n return deleteColumn(state, dispatch)\n },\n addRowBefore: () => ({ state, dispatch }) => {\n return addRowBefore(state, dispatch)\n },\n addRowAfter: () => ({ state, dispatch }) => {\n return addRowAfter(state, dispatch)\n },\n deleteRow: () => ({ state, dispatch }) => {\n return deleteRow(state, dispatch)\n },\n deleteTable: () => ({ state, dispatch }) => {\n return deleteTable(state, dispatch)\n },\n mergeCells: () => ({ state, dispatch }) => {\n return mergeCells(state, dispatch)\n },\n splitCell: () => ({ state, dispatch }) => {\n return splitCell(state, dispatch)\n },\n toggleHeaderColumn: () => ({ state, dispatch }) => {\n return toggleHeader('column')(state, dispatch)\n },\n toggleHeaderRow: () => ({ state, dispatch }) => {\n return toggleHeader('row')(state, dispatch)\n },\n toggleHeaderCell: () => ({ state, dispatch }) => {\n return toggleHeaderCell(state, dispatch)\n },\n mergeOrSplit: () => ({ state, dispatch }) => {\n if (mergeCells(state, dispatch)) {\n return true\n }\n\n return splitCell(state, dispatch)\n },\n setCellAttribute: (name, value) => ({ state, dispatch }) => {\n return setCellAttr(name, value)(state, dispatch)\n },\n goToNextCell: () => ({ state, dispatch }) => {\n return goToNextCell(1)(state, dispatch)\n },\n goToPreviousCell: () => ({ state, dispatch }) => {\n return goToNextCell(-1)(state, dispatch)\n },\n fixTables: () => ({ state, dispatch }) => {\n if (dispatch) {\n fixTables(state)\n }\n\n return true\n },\n setCellSelection: position => ({ 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\n .chain()\n .addRowAfter()\n .goToNextCell()\n .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 ? [columnResizing({\n handleWidth: this.options.handleWidth,\n cellMinWidth: this.options.cellMinWidth,\n View: this.options.View,\n // TODO: PR for @types/prosemirror-tables\n // @ts-ignore (incorrect type)\n lastColumnResizable: this.options.lastColumnResizable,\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"],"names":["CellSelection","findParentNodeClosestToPos","Node","mergeAttributes","TextSelection","addColumnBefore","addColumnAfter","deleteColumn","addRowBefore","addRowAfter","deleteRow","deleteTable","mergeCells","splitCell","toggleHeader","toggleHeaderCell","setCellAttr","goToNextCell","fixTables","columnResizing","tableEditing","callOrReturn","getExtensionField"],"mappings":"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"}
|
|
@@ -1,6 +1,69 @@
|
|
|
1
1
|
import { findParentNodeClosestToPos, Node, mergeAttributes, callOrReturn, getExtensionField } from '@tiptap/core';
|
|
2
|
-
import { CellSelection, addColumnBefore, addColumnAfter, deleteColumn, addRowBefore, addRowAfter, deleteRow, deleteTable, mergeCells, splitCell, toggleHeader, toggleHeaderCell, setCellAttr, goToNextCell, fixTables, columnResizing, tableEditing } from 'prosemirror-tables';
|
|
3
2
|
import { TextSelection } from 'prosemirror-state';
|
|
3
|
+
import { CellSelection, addColumnBefore, addColumnAfter, deleteColumn, addRowBefore, addRowAfter, deleteRow, deleteTable, mergeCells, splitCell, toggleHeader, toggleHeaderCell, setCellAttr, goToNextCell, fixTables, columnResizing, tableEditing } from 'prosemirror-tables-contently';
|
|
4
|
+
|
|
5
|
+
function updateColumns(node, colgroup, table, cellMinWidth, overrideCol, overrideValue) {
|
|
6
|
+
let totalWidth = 0;
|
|
7
|
+
let fixedWidth = true;
|
|
8
|
+
let nextDOM = colgroup.firstChild;
|
|
9
|
+
const row = node.firstChild;
|
|
10
|
+
for (let i = 0, col = 0; i < row.childCount; i += 1) {
|
|
11
|
+
const { colspan, colwidth } = row.child(i).attrs;
|
|
12
|
+
for (let j = 0; j < colspan; j += 1, col += 1) {
|
|
13
|
+
const hasWidth = overrideCol === col ? overrideValue : colwidth && colwidth[j];
|
|
14
|
+
const cssWidth = hasWidth ? `${hasWidth}px` : '';
|
|
15
|
+
totalWidth += hasWidth || cellMinWidth;
|
|
16
|
+
if (!hasWidth) {
|
|
17
|
+
fixedWidth = false;
|
|
18
|
+
}
|
|
19
|
+
if (!nextDOM) {
|
|
20
|
+
colgroup.appendChild(document.createElement('col')).style.width = cssWidth;
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
if (nextDOM.style.width !== cssWidth) {
|
|
24
|
+
nextDOM.style.width = cssWidth;
|
|
25
|
+
}
|
|
26
|
+
nextDOM = nextDOM.nextSibling;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
while (nextDOM) {
|
|
31
|
+
const after = nextDOM.nextSibling;
|
|
32
|
+
nextDOM.parentNode.removeChild(nextDOM);
|
|
33
|
+
nextDOM = after;
|
|
34
|
+
}
|
|
35
|
+
if (fixedWidth) {
|
|
36
|
+
table.style.width = `${totalWidth}px`;
|
|
37
|
+
table.style.minWidth = '';
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
table.style.width = '';
|
|
41
|
+
table.style.minWidth = `${totalWidth}px`;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
class TableView {
|
|
45
|
+
constructor(node, cellMinWidth) {
|
|
46
|
+
this.node = node;
|
|
47
|
+
this.cellMinWidth = cellMinWidth;
|
|
48
|
+
this.dom = document.createElement('div');
|
|
49
|
+
this.dom.className = 'tableWrapper';
|
|
50
|
+
this.table = this.dom.appendChild(document.createElement('table'));
|
|
51
|
+
this.colgroup = this.table.appendChild(document.createElement('colgroup'));
|
|
52
|
+
updateColumns(node, this.colgroup, this.table, cellMinWidth);
|
|
53
|
+
this.contentDOM = this.table.appendChild(document.createElement('tbody'));
|
|
54
|
+
}
|
|
55
|
+
update(node) {
|
|
56
|
+
if (node.type !== this.node.type) {
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
this.node = node;
|
|
60
|
+
updateColumns(node, this.colgroup, this.table, this.cellMinWidth);
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
63
|
+
ignoreMutation(mutation) {
|
|
64
|
+
return mutation.type === 'attributes' && (mutation.target === this.table || this.colgroup.contains(mutation.target));
|
|
65
|
+
}
|
|
66
|
+
}
|
|
4
67
|
|
|
5
68
|
function createCell(cellType, cellContent) {
|
|
6
69
|
if (cellContent) {
|
|
@@ -76,69 +139,6 @@ const deleteTableWhenAllCellsSelected = ({ editor }) => {
|
|
|
76
139
|
return true;
|
|
77
140
|
};
|
|
78
141
|
|
|
79
|
-
function updateColumns(node, colgroup, table, cellMinWidth, overrideCol, overrideValue) {
|
|
80
|
-
let totalWidth = 0;
|
|
81
|
-
let fixedWidth = true;
|
|
82
|
-
let nextDOM = colgroup.firstChild;
|
|
83
|
-
const row = node.firstChild;
|
|
84
|
-
for (let i = 0, col = 0; i < row.childCount; i += 1) {
|
|
85
|
-
const { colspan, colwidth } = row.child(i).attrs;
|
|
86
|
-
for (let j = 0; j < colspan; j += 1, col += 1) {
|
|
87
|
-
const hasWidth = overrideCol === col ? overrideValue : colwidth && colwidth[j];
|
|
88
|
-
const cssWidth = hasWidth ? `${hasWidth}px` : '';
|
|
89
|
-
totalWidth += hasWidth || cellMinWidth;
|
|
90
|
-
if (!hasWidth) {
|
|
91
|
-
fixedWidth = false;
|
|
92
|
-
}
|
|
93
|
-
if (!nextDOM) {
|
|
94
|
-
colgroup.appendChild(document.createElement('col')).style.width = cssWidth;
|
|
95
|
-
}
|
|
96
|
-
else {
|
|
97
|
-
if (nextDOM.style.width !== cssWidth) {
|
|
98
|
-
nextDOM.style.width = cssWidth;
|
|
99
|
-
}
|
|
100
|
-
nextDOM = nextDOM.nextSibling;
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
while (nextDOM) {
|
|
105
|
-
const after = nextDOM.nextSibling;
|
|
106
|
-
nextDOM.parentNode.removeChild(nextDOM);
|
|
107
|
-
nextDOM = after;
|
|
108
|
-
}
|
|
109
|
-
if (fixedWidth) {
|
|
110
|
-
table.style.width = `${totalWidth}px`;
|
|
111
|
-
table.style.minWidth = '';
|
|
112
|
-
}
|
|
113
|
-
else {
|
|
114
|
-
table.style.width = '';
|
|
115
|
-
table.style.minWidth = `${totalWidth}px`;
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
class TableView {
|
|
119
|
-
constructor(node, cellMinWidth) {
|
|
120
|
-
this.node = node;
|
|
121
|
-
this.cellMinWidth = cellMinWidth;
|
|
122
|
-
this.dom = document.createElement('div');
|
|
123
|
-
this.dom.className = 'tableWrapper';
|
|
124
|
-
this.table = this.dom.appendChild(document.createElement('table'));
|
|
125
|
-
this.colgroup = this.table.appendChild(document.createElement('colgroup'));
|
|
126
|
-
updateColumns(node, this.colgroup, this.table, cellMinWidth);
|
|
127
|
-
this.contentDOM = this.table.appendChild(document.createElement('tbody'));
|
|
128
|
-
}
|
|
129
|
-
update(node) {
|
|
130
|
-
if (node.type !== this.node.type) {
|
|
131
|
-
return false;
|
|
132
|
-
}
|
|
133
|
-
this.node = node;
|
|
134
|
-
updateColumns(node, this.colgroup, this.table, this.cellMinWidth);
|
|
135
|
-
return true;
|
|
136
|
-
}
|
|
137
|
-
ignoreMutation(mutation) {
|
|
138
|
-
return mutation.type === 'attributes' && (mutation.target === this.table || this.colgroup.contains(mutation.target));
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
|
|
142
142
|
const Table = Node.create({
|
|
143
143
|
name: 'table',
|
|
144
144
|
// @ts-ignore
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tiptap-extension-table.esm.js","sources":["../src/utilities/createCell.ts","../src/utilities/getTableNodeTypes.ts","../src/utilities/createTable.ts","../src/utilities/isCellSelection.ts","../src/utilities/deleteTableWhenAllCellsSelected.ts","../src/TableView.ts","../src/table.ts"],"sourcesContent":["import {\n NodeType, Fragment,\n Node as ProsemirrorNode,\n Schema,\n} from 'prosemirror-model'\n\nexport function createCell(cellType: NodeType, cellContent?: Fragment<Schema> | ProsemirrorNode<Schema> | Array<ProsemirrorNode<Schema>>): ProsemirrorNode | null | undefined {\n if (cellContent) {\n return cellType.createChecked(null, cellContent)\n }\n\n return cellType.createAndFill()\n}\n","import { Schema, NodeType } from 'prosemirror-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 { Schema, Fragment, Node as ProsemirrorNode } from 'prosemirror-model'\nimport { createCell } from './createCell'\nimport { getTableNodeTypes } from './getTableNodeTypes'\n\nexport function createTable(schema: Schema, rowsCount: number, colsCount: number, withHeaderRow: boolean, cellContent?: Fragment<Schema> | ProsemirrorNode<Schema> | Array<ProsemirrorNode<Schema>>): ProsemirrorNode {\n const types = getTableNodeTypes(schema)\n const headerCells = []\n const cells = []\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 = []\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 { CellSelection } from 'prosemirror-tables'\n\nexport function isCellSelection(value: unknown): value is CellSelection {\n return value instanceof CellSelection\n}\n","import { KeyboardShortcutCommand, findParentNodeClosestToPos } from '@tiptap/core'\nimport { isCellSelection } from './isCellSelection'\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","// @ts-nocheck\nimport { NodeView } from 'prosemirror-view'\nimport { Node as ProseMirrorNode } from 'prosemirror-model'\n\nexport function updateColumns(node: ProseMirrorNode, colgroup: Element, table: Element, cellMinWidth: number, overrideCol?: number, overrideValue?: any) {\n let totalWidth = 0\n let fixedWidth = true\n let nextDOM = colgroup.firstChild\n const row = node.firstChild\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]\n const cssWidth = hasWidth ? `${hasWidth}px` : ''\n\n totalWidth += hasWidth || cellMinWidth\n\n if (!hasWidth) {\n fixedWidth = false\n }\n\n if (!nextDOM) {\n colgroup.appendChild(document.createElement('col')).style.width = cssWidth\n } else {\n if (nextDOM.style.width !== cssWidth) {\n nextDOM.style.width = cssWidth\n }\n\n nextDOM = nextDOM.nextSibling\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\n node: ProseMirrorNode\n\n cellMinWidth: number\n\n dom: Element\n\n table: Element\n\n colgroup: Element\n\n contentDOM: Element\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: MutationRecord | { type: 'selection'; target: Element }) {\n return mutation.type === 'attributes' && (mutation.target === this.table || this.colgroup.contains(mutation.target))\n }\n}\n","import {\n Node,\n ParentConfig,\n mergeAttributes,\n getExtensionField,\n callOrReturn,\n} from '@tiptap/core'\nimport {\n tableEditing,\n columnResizing,\n goToNextCell,\n addColumnBefore,\n addColumnAfter,\n deleteColumn,\n addRowBefore,\n addRowAfter,\n deleteRow,\n deleteTable,\n mergeCells,\n splitCell,\n toggleHeader,\n toggleHeaderCell,\n setCellAttr,\n fixTables,\n CellSelection,\n} from 'prosemirror-tables'\nimport { NodeView } from 'prosemirror-view'\nimport { TextSelection } from 'prosemirror-state'\nimport { createTable } from './utilities/createTable'\nimport { deleteTableWhenAllCellsSelected } from './utilities/deleteTableWhenAllCellsSelected'\nimport { TableView } from './TableView'\n\nexport interface TableOptions {\n HTMLAttributes: Record<string, any>,\n resizable: boolean,\n handleWidth: number,\n cellMinWidth: number,\n View: NodeView,\n lastColumnResizable: boolean,\n allowTableNodeSelection: boolean,\n}\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n table: {\n insertTable: (options?: { rows?: number, cols?: number, withHeaderRow?: boolean }) => ReturnType,\n addColumnBefore: () => ReturnType,\n addColumnAfter: () => ReturnType,\n deleteColumn: () => ReturnType,\n addRowBefore: () => ReturnType,\n addRowAfter: () => ReturnType,\n deleteRow: () => ReturnType,\n deleteTable: () => ReturnType,\n mergeCells: () => ReturnType,\n splitCell: () => ReturnType,\n toggleHeaderColumn: () => ReturnType,\n toggleHeaderRow: () => ReturnType,\n toggleHeaderCell: () => ReturnType,\n mergeOrSplit: () => ReturnType,\n setCellAttribute: (name: string, value: any) => ReturnType,\n goToNextCell: () => ReturnType,\n goToPreviousCell: () => ReturnType,\n fixTables: () => ReturnType,\n setCellSelection: (position: { anchorCell: number, headCell?: number }) => ReturnType,\n }\n }\n\n interface NodeConfig<Options, Storage> {\n /**\n * Table Role\n */\n tableRole?: string | ((this: {\n name: string,\n options: Options,\n storage: Storage,\n parent: ParentConfig<NodeConfig<Options>>['tableRole'],\n }) => string),\n }\n}\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 [\n { tag: 'table' },\n ]\n },\n\n renderHTML({ HTMLAttributes }) {\n return ['table', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), ['tbody', 0]]\n },\n\n addCommands() {\n return {\n insertTable: ({ rows = 3, cols = 3, withHeaderRow = true } = {}) => ({ tr, dispatch, editor }) => {\n const node = createTable(editor.schema, rows, cols, withHeaderRow)\n\n if (dispatch) {\n const offset = tr.selection.anchor + 1\n\n tr.replaceSelectionWith(node)\n .scrollIntoView()\n .setSelection(TextSelection.near(tr.doc.resolve(offset)))\n }\n\n return true\n },\n addColumnBefore: () => ({ state, dispatch }) => {\n return addColumnBefore(state, dispatch)\n },\n addColumnAfter: () => ({ state, dispatch }) => {\n return addColumnAfter(state, dispatch)\n },\n deleteColumn: () => ({ state, dispatch }) => {\n return deleteColumn(state, dispatch)\n },\n addRowBefore: () => ({ state, dispatch }) => {\n return addRowBefore(state, dispatch)\n },\n addRowAfter: () => ({ state, dispatch }) => {\n return addRowAfter(state, dispatch)\n },\n deleteRow: () => ({ state, dispatch }) => {\n return deleteRow(state, dispatch)\n },\n deleteTable: () => ({ state, dispatch }) => {\n return deleteTable(state, dispatch)\n },\n mergeCells: () => ({ state, dispatch }) => {\n return mergeCells(state, dispatch)\n },\n splitCell: () => ({ state, dispatch }) => {\n return splitCell(state, dispatch)\n },\n toggleHeaderColumn: () => ({ state, dispatch }) => {\n return toggleHeader('column')(state, dispatch)\n },\n toggleHeaderRow: () => ({ state, dispatch }) => {\n return toggleHeader('row')(state, dispatch)\n },\n toggleHeaderCell: () => ({ state, dispatch }) => {\n return toggleHeaderCell(state, dispatch)\n },\n mergeOrSplit: () => ({ state, dispatch }) => {\n if (mergeCells(state, dispatch)) {\n return true\n }\n\n return splitCell(state, dispatch)\n },\n setCellAttribute: (name, value) => ({ state, dispatch }) => {\n return setCellAttr(name, value)(state, dispatch)\n },\n goToNextCell: () => ({ state, dispatch }) => {\n return goToNextCell(1)(state, dispatch)\n },\n goToPreviousCell: () => ({ state, dispatch }) => {\n return goToNextCell(-1)(state, dispatch)\n },\n fixTables: () => ({ state, dispatch }) => {\n if (dispatch) {\n fixTables(state)\n }\n\n return true\n },\n setCellSelection: position => ({ 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\n .chain()\n .addRowAfter()\n .goToNextCell()\n .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 ? [columnResizing({\n handleWidth: this.options.handleWidth,\n cellMinWidth: this.options.cellMinWidth,\n View: this.options.View,\n // TODO: PR for @types/prosemirror-tables\n // @ts-ignore (incorrect type)\n lastColumnResizable: this.options.lastColumnResizable,\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"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tiptap-extension-table.esm.js","sources":["../src/TableView.ts","../src/utilities/createCell.ts","../src/utilities/getTableNodeTypes.ts","../src/utilities/createTable.ts","../src/utilities/isCellSelection.ts","../src/utilities/deleteTableWhenAllCellsSelected.ts","../src/table.ts"],"sourcesContent":["// @ts-nocheck\nimport { Node as ProseMirrorNode } from 'prosemirror-model'\nimport { NodeView } from 'prosemirror-view'\n\nexport function updateColumns(node: ProseMirrorNode, colgroup: Element, table: Element, cellMinWidth: number, overrideCol?: number, overrideValue?: any) {\n let totalWidth = 0\n let fixedWidth = true\n let nextDOM = colgroup.firstChild\n const row = node.firstChild\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]\n const cssWidth = hasWidth ? `${hasWidth}px` : ''\n\n totalWidth += hasWidth || cellMinWidth\n\n if (!hasWidth) {\n fixedWidth = false\n }\n\n if (!nextDOM) {\n colgroup.appendChild(document.createElement('col')).style.width = cssWidth\n } else {\n if (nextDOM.style.width !== cssWidth) {\n nextDOM.style.width = cssWidth\n }\n\n nextDOM = nextDOM.nextSibling\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\n node: ProseMirrorNode\n\n cellMinWidth: number\n\n dom: Element\n\n table: Element\n\n colgroup: Element\n\n contentDOM: Element\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: MutationRecord | { type: 'selection'; target: Element }) {\n return mutation.type === 'attributes' && (mutation.target === this.table || this.colgroup.contains(mutation.target))\n }\n}\n","import { Fragment, Node as ProsemirrorNode, NodeType } from 'prosemirror-model'\n\nexport function createCell(cellType: NodeType, cellContent?: Fragment | ProsemirrorNode | Array<ProsemirrorNode>): ProsemirrorNode | null | undefined {\n if (cellContent) {\n return cellType.createChecked(null, cellContent)\n }\n\n return cellType.createAndFill()\n}\n","import { NodeType, Schema } from 'prosemirror-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 { Fragment, Node as ProsemirrorNode, Schema } from 'prosemirror-model'\n\nimport { createCell } from './createCell'\nimport { getTableNodeTypes } from './getTableNodeTypes'\n\nexport function createTable(schema: Schema, rowsCount: number, colsCount: number, withHeaderRow: boolean, cellContent?: Fragment | ProsemirrorNode | Array<ProsemirrorNode>): ProsemirrorNode {\n const types = getTableNodeTypes(schema)\n const headerCells = []\n const cells = []\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 = []\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 { CellSelection } from 'prosemirror-tables-contently'\n\nexport function isCellSelection(value: unknown): value is CellSelection {\n return value instanceof CellSelection\n}\n","import { findParentNodeClosestToPos, KeyboardShortcutCommand } from '@tiptap/core'\n\nimport { isCellSelection } from './isCellSelection'\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 {\n callOrReturn,\n getExtensionField,\n mergeAttributes,\n Node,\n ParentConfig,\n} from '@tiptap/core'\nimport { TextSelection } from 'prosemirror-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 'prosemirror-tables-contently'\nimport { NodeView } from 'prosemirror-view'\n\nimport { TableView } from './TableView'\nimport { createTable } from './utilities/createTable'\nimport { deleteTableWhenAllCellsSelected } from './utilities/deleteTableWhenAllCellsSelected'\n\nexport interface TableOptions {\n HTMLAttributes: Record<string, any>,\n resizable: boolean,\n handleWidth: number,\n cellMinWidth: number,\n View: NodeView,\n lastColumnResizable: boolean,\n allowTableNodeSelection: boolean,\n}\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n table: {\n insertTable: (options?: { rows?: number, cols?: number, withHeaderRow?: boolean }) => ReturnType,\n addColumnBefore: () => ReturnType,\n addColumnAfter: () => ReturnType,\n deleteColumn: () => ReturnType,\n addRowBefore: () => ReturnType,\n addRowAfter: () => ReturnType,\n deleteRow: () => ReturnType,\n deleteTable: () => ReturnType,\n mergeCells: () => ReturnType,\n splitCell: () => ReturnType,\n toggleHeaderColumn: () => ReturnType,\n toggleHeaderRow: () => ReturnType,\n toggleHeaderCell: () => ReturnType,\n mergeOrSplit: () => ReturnType,\n setCellAttribute: (name: string, value: any) => ReturnType,\n goToNextCell: () => ReturnType,\n goToPreviousCell: () => ReturnType,\n fixTables: () => ReturnType,\n setCellSelection: (position: { anchorCell: number, headCell?: number }) => ReturnType,\n }\n }\n\n interface NodeConfig<Options, Storage> {\n /**\n * Table Role\n */\n tableRole?: string | ((this: {\n name: string,\n options: Options,\n storage: Storage,\n parent: ParentConfig<NodeConfig<Options>>['tableRole'],\n }) => string),\n }\n}\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 [\n { tag: 'table' },\n ]\n },\n\n renderHTML({ HTMLAttributes }) {\n return ['table', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), ['tbody', 0]]\n },\n\n addCommands() {\n return {\n insertTable: ({ rows = 3, cols = 3, withHeaderRow = true } = {}) => ({ tr, dispatch, editor }) => {\n const node = createTable(editor.schema, rows, cols, withHeaderRow)\n\n if (dispatch) {\n const offset = tr.selection.anchor + 1\n\n tr.replaceSelectionWith(node)\n .scrollIntoView()\n .setSelection(TextSelection.near(tr.doc.resolve(offset)))\n }\n\n return true\n },\n addColumnBefore: () => ({ state, dispatch }) => {\n return addColumnBefore(state, dispatch)\n },\n addColumnAfter: () => ({ state, dispatch }) => {\n return addColumnAfter(state, dispatch)\n },\n deleteColumn: () => ({ state, dispatch }) => {\n return deleteColumn(state, dispatch)\n },\n addRowBefore: () => ({ state, dispatch }) => {\n return addRowBefore(state, dispatch)\n },\n addRowAfter: () => ({ state, dispatch }) => {\n return addRowAfter(state, dispatch)\n },\n deleteRow: () => ({ state, dispatch }) => {\n return deleteRow(state, dispatch)\n },\n deleteTable: () => ({ state, dispatch }) => {\n return deleteTable(state, dispatch)\n },\n mergeCells: () => ({ state, dispatch }) => {\n return mergeCells(state, dispatch)\n },\n splitCell: () => ({ state, dispatch }) => {\n return splitCell(state, dispatch)\n },\n toggleHeaderColumn: () => ({ state, dispatch }) => {\n return toggleHeader('column')(state, dispatch)\n },\n toggleHeaderRow: () => ({ state, dispatch }) => {\n return toggleHeader('row')(state, dispatch)\n },\n toggleHeaderCell: () => ({ state, dispatch }) => {\n return toggleHeaderCell(state, dispatch)\n },\n mergeOrSplit: () => ({ state, dispatch }) => {\n if (mergeCells(state, dispatch)) {\n return true\n }\n\n return splitCell(state, dispatch)\n },\n setCellAttribute: (name, value) => ({ state, dispatch }) => {\n return setCellAttr(name, value)(state, dispatch)\n },\n goToNextCell: () => ({ state, dispatch }) => {\n return goToNextCell(1)(state, dispatch)\n },\n goToPreviousCell: () => ({ state, dispatch }) => {\n return goToNextCell(-1)(state, dispatch)\n },\n fixTables: () => ({ state, dispatch }) => {\n if (dispatch) {\n fixTables(state)\n }\n\n return true\n },\n setCellSelection: position => ({ 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\n .chain()\n .addRowAfter()\n .goToNextCell()\n .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 ? [columnResizing({\n handleWidth: this.options.handleWidth,\n cellMinWidth: this.options.cellMinWidth,\n View: this.options.View,\n // TODO: PR for @types/prosemirror-tables\n // @ts-ignore (incorrect type)\n lastColumnResizable: this.options.lastColumnResizable,\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"],"names":[],"mappings":";;;;AAIgB,SAAA,aAAa,CAAC,IAAqB,EAAE,QAAiB,EAAE,KAAc,EAAE,YAAoB,EAAE,WAAoB,EAAE,aAAmB,EAAA;IACrJ,IAAI,UAAU,GAAG,CAAC,CAAA;IAClB,IAAI,UAAU,GAAG,IAAI,CAAA;AACrB,IAAA,IAAI,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAA;AACjC,IAAA,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAA;AAE3B,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,EAAE;AACnD,QAAA,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;AAEhD,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE;AAC7C,YAAA,MAAM,QAAQ,GAAG,WAAW,KAAK,GAAG,GAAG,aAAa,GAAG,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAA;AAC9E,YAAA,MAAM,QAAQ,GAAG,QAAQ,GAAG,CAAG,EAAA,QAAQ,CAAI,EAAA,CAAA,GAAG,EAAE,CAAA;AAEhD,YAAA,UAAU,IAAI,QAAQ,IAAI,YAAY,CAAA;YAEtC,IAAI,CAAC,QAAQ,EAAE;gBACb,UAAU,GAAG,KAAK,CAAA;AACnB,aAAA;YAED,IAAI,CAAC,OAAO,EAAE;AACZ,gBAAA,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAA;AAC3E,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE;AACpC,oBAAA,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAA;AAC/B,iBAAA;AAED,gBAAA,OAAO,GAAG,OAAO,CAAC,WAAW,CAAA;AAC9B,aAAA;AACF,SAAA;AACF,KAAA;AAED,IAAA,OAAO,OAAO,EAAE;AACd,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,CAAA;AAEjC,QAAA,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;QACvC,OAAO,GAAG,KAAK,CAAA;AAChB,KAAA;AAED,IAAA,IAAI,UAAU,EAAE;QACd,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAG,EAAA,UAAU,IAAI,CAAA;AACrC,QAAA,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAA;AAC1B,KAAA;AAAM,SAAA;AACL,QAAA,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAA;QACtB,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAG,EAAA,UAAU,IAAI,CAAA;AACzC,KAAA;AACH,CAAC;MAEY,SAAS,CAAA;IAcpB,WAAY,CAAA,IAAqB,EAAE,YAAoB,EAAA;AACrD,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;AAChB,QAAA,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;QAChC,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;AACxC,QAAA,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,cAAc,CAAA;AACnC,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAA;AAClE,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAA;AAC1E,QAAA,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,CAAA;AAC5D,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAA;KAC1E;AAED,IAAA,MAAM,CAAC,IAAqB,EAAA;QAC1B,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AAChC,YAAA,OAAO,KAAK,CAAA;AACb,SAAA;AAED,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;AAChB,QAAA,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,CAAA;AAEjE,QAAA,OAAO,IAAI,CAAA;KACZ;AAED,IAAA,cAAc,CAAC,QAAiE,EAAA;QAC9E,OAAO,QAAQ,CAAC,IAAI,KAAK,YAAY,KAAK,QAAQ,CAAC,MAAM,KAAK,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;KACrH;AACF;;ACxFe,SAAA,UAAU,CAAC,QAAkB,EAAE,WAAiE,EAAA;AAC9G,IAAA,IAAI,WAAW,EAAE;QACf,OAAO,QAAQ,CAAC,aAAa,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;AACjD,KAAA;AAED,IAAA,OAAO,QAAQ,CAAC,aAAa,EAAE,CAAA;AACjC;;ACNM,SAAU,iBAAiB,CAAC,MAAc,EAAA;AAC9C,IAAA,IAAI,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE;AAChC,QAAA,OAAO,MAAM,CAAC,MAAM,CAAC,cAAc,CAAA;AACpC,KAAA;IAED,MAAM,KAAK,GAAgC,EAAE,CAAA;AAE7C,IAAA,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,IAAG;QACvC,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;AAEnC,QAAA,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE;YAC3B,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAA;AAC1C,SAAA;AACH,KAAC,CAAC,CAAA;AAEF,IAAA,MAAM,CAAC,MAAM,CAAC,cAAc,GAAG,KAAK,CAAA;AAEpC,IAAA,OAAO,KAAK,CAAA;AACd;;ACfM,SAAU,WAAW,CAAC,MAAc,EAAE,SAAiB,EAAE,SAAiB,EAAE,aAAsB,EAAE,WAAiE,EAAA;AACzK,IAAA,MAAM,KAAK,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAA;IACvC,MAAM,WAAW,GAAG,EAAE,CAAA;IACtB,MAAM,KAAK,GAAG,EAAE,CAAA;AAEhB,IAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS,EAAE,KAAK,IAAI,CAAC,EAAE;QACjD,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;AAEhD,QAAA,IAAI,IAAI,EAAE;AACR,YAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACjB,SAAA;AAED,QAAA,IAAI,aAAa,EAAE;YACjB,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;AAE7D,YAAA,IAAI,UAAU,EAAE;AACd,gBAAA,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;AAC7B,aAAA;AACF,SAAA;AACF,KAAA;IAED,MAAM,IAAI,GAAG,EAAE,CAAA;AAEf,IAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS,EAAE,KAAK,IAAI,CAAC,EAAE;QACjD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,aAAa,IAAI,KAAK,KAAK,CAAC,GAAG,WAAW,GAAG,KAAK,CAAC,CAAC,CAAA;AAC7F,KAAA;IAED,OAAO,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;AAC9C;;AC/BM,SAAU,eAAe,CAAC,KAAc,EAAA;IAC5C,OAAO,KAAK,YAAY,aAAa,CAAA;AACvC;;ACAO,MAAM,+BAA+B,GAA4B,CAAC,EAAE,MAAM,EAAE,KAAI;AACrF,IAAA,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,KAAK,CAAA;AAElC,IAAA,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE;AAC/B,QAAA,OAAO,KAAK,CAAA;AACb,KAAA;IAED,IAAI,SAAS,GAAG,CAAC,CAAA;AACjB,IAAA,MAAM,KAAK,GAAG,0BAA0B,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,IAAG;AACzE,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAA;AACnC,KAAC,CAAC,CAAA;IAEF,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAL,KAAK,CAAE,IAAI,CAAC,WAAW,CAAC,IAAI,IAAG;AAC7B,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;AAC9B,YAAA,OAAO,KAAK,CAAA;AACb,SAAA;AAED,QAAA,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACzD,SAAS,IAAI,CAAC,CAAA;AACf,SAAA;AACH,KAAC,CAAC,CAAA;IAEF,MAAM,gBAAgB,GAAG,SAAS,KAAK,SAAS,CAAC,MAAM,CAAC,MAAM,CAAA;IAE9D,IAAI,CAAC,gBAAgB,EAAE;AACrB,QAAA,OAAO,KAAK,CAAA;AACb,KAAA;AAED,IAAA,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAA;AAE7B,IAAA,OAAO,IAAI,CAAA;AACb,CAAC;;AC8CY,MAAA,KAAK,GAAG,IAAI,CAAC,MAAM,CAAe;AAC7C,IAAA,IAAI,EAAE,OAAO;;IAGb,UAAU,GAAA;QACR,OAAO;AACL,YAAA,cAAc,EAAE,EAAE;AAClB,YAAA,SAAS,EAAE,KAAK;AAChB,YAAA,WAAW,EAAE,CAAC;AACd,YAAA,YAAY,EAAE,EAAE;;AAEhB,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,mBAAmB,EAAE,IAAI;AACzB,YAAA,uBAAuB,EAAE,KAAK;SAC/B,CAAA;KACF;AAED,IAAA,OAAO,EAAE,WAAW;AAEpB,IAAA,SAAS,EAAE,OAAO;AAElB,IAAA,SAAS,EAAE,IAAI;AAEf,IAAA,KAAK,EAAE,OAAO;IAEd,SAAS,GAAA;QACP,OAAO;YACL,EAAE,GAAG,EAAE,OAAO,EAAE;SACjB,CAAA;KACF;IAED,UAAU,CAAC,EAAE,cAAc,EAAE,EAAA;QAC3B,OAAO,CAAC,OAAO,EAAE,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAA;KAC7F;IAED,WAAW,GAAA;QACT,OAAO;AACL,YAAA,WAAW,EAAE,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,aAAa,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAI;AAC/F,gBAAA,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,CAAC,CAAA;AAElE,gBAAA,IAAI,QAAQ,EAAE;oBACZ,MAAM,MAAM,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAA;AAEtC,oBAAA,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC;AAC1B,yBAAA,cAAc,EAAE;AAChB,yBAAA,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;AAC5D,iBAAA;AAED,gBAAA,OAAO,IAAI,CAAA;aACZ;YACD,eAAe,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAI;AAC7C,gBAAA,OAAO,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;aACxC;YACD,cAAc,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAI;AAC5C,gBAAA,OAAO,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;aACvC;YACD,YAAY,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAI;AAC1C,gBAAA,OAAO,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;aACrC;YACD,YAAY,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAI;AAC1C,gBAAA,OAAO,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;aACrC;YACD,WAAW,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAI;AACzC,gBAAA,OAAO,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;aACpC;YACD,SAAS,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAI;AACvC,gBAAA,OAAO,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;aAClC;YACD,WAAW,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAI;AACzC,gBAAA,OAAO,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;aACpC;YACD,UAAU,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAI;AACxC,gBAAA,OAAO,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;aACnC;YACD,SAAS,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAI;AACvC,gBAAA,OAAO,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;aAClC;YACD,kBAAkB,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAI;gBAChD,OAAO,YAAY,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;aAC/C;YACD,eAAe,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAI;gBAC7C,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;aAC5C;YACD,gBAAgB,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAI;AAC9C,gBAAA,OAAO,gBAAgB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;aACzC;YACD,YAAY,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAI;AAC1C,gBAAA,IAAI,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE;AAC/B,oBAAA,OAAO,IAAI,CAAA;AACZ,iBAAA;AAED,gBAAA,OAAO,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;aAClC;AACD,YAAA,gBAAgB,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAI;gBACzD,OAAO,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;aACjD;YACD,YAAY,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAI;gBAC1C,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;aACxC;YACD,gBAAgB,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAI;gBAC9C,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;aACzC;YACD,SAAS,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAI;AACvC,gBAAA,IAAI,QAAQ,EAAE;oBACZ,SAAS,CAAC,KAAK,CAAC,CAAA;AACjB,iBAAA;AAED,gBAAA,OAAO,IAAI,CAAA;aACZ;AACD,YAAA,gBAAgB,EAAE,QAAQ,IAAI,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAI;AACjD,gBAAA,IAAI,QAAQ,EAAE;AACZ,oBAAA,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAA;;AAGtF,oBAAA,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAA;AAC3B,iBAAA;AAED,gBAAA,OAAO,IAAI,CAAA;aACZ;SACF,CAAA;KACF;IAED,oBAAoB,GAAA;QAClB,OAAO;YACL,GAAG,EAAE,MAAK;gBACR,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAE;AACvC,oBAAA,OAAO,IAAI,CAAA;AACZ,iBAAA;gBAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,EAAE;AACpC,oBAAA,OAAO,KAAK,CAAA;AACb,iBAAA;gBAED,OAAO,IAAI,CAAC,MAAM;AACf,qBAAA,KAAK,EAAE;AACP,qBAAA,WAAW,EAAE;AACb,qBAAA,YAAY,EAAE;AACd,qBAAA,GAAG,EAAE,CAAA;aACT;YACD,WAAW,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,EAAE;AAC1D,YAAA,SAAS,EAAE,+BAA+B;AAC1C,YAAA,eAAe,EAAE,+BAA+B;AAChD,YAAA,MAAM,EAAE,+BAA+B;AACvC,YAAA,YAAY,EAAE,+BAA+B;SAC9C,CAAA;KACF;IAED,qBAAqB,GAAA;AACnB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAA;QAEpE,OAAO;AACL,YAAA,IAAI,WAAW,GAAG,CAAC,cAAc,CAAC;AAChC,oBAAA,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW;AACrC,oBAAA,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY;AACvC,oBAAA,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;;;AAGvB,oBAAA,mBAAmB,EAAE,IAAI,CAAC,OAAO,CAAC,mBAAmB;AACtD,iBAAA,CAAC,CAAC,GAAG,EAAE,CAAC;AACT,YAAA,YAAY,CAAC;AACX,gBAAA,uBAAuB,EAAE,IAAI,CAAC,OAAO,CAAC,uBAAuB;aAC9D,CAAC;SACH,CAAA;KACF;AAED,IAAA,gBAAgB,CAAC,SAAS,EAAA;AACxB,QAAA,MAAM,OAAO,GAAG;YACd,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,OAAO,EAAE,SAAS,CAAC,OAAO;SAC3B,CAAA;QAED,OAAO;YACL,SAAS,EAAE,YAAY,CAAC,iBAAiB,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;SAC5E,CAAA;KACF;AACF,CAAA;;;;"}
|
|
@@ -1,8 +1,71 @@
|
|
|
1
1
|
(function (global, factory) {
|
|
2
|
-
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@tiptap/core'), require('prosemirror-
|
|
3
|
-
typeof define === 'function' && define.amd ? define(['exports', '@tiptap/core', 'prosemirror-
|
|
4
|
-
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global["@tiptap/extension-table"] = {}, global.core, global.
|
|
5
|
-
})(this, (function (exports, core,
|
|
2
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@tiptap/core'), require('prosemirror-state'), require('prosemirror-tables-contently')) :
|
|
3
|
+
typeof define === 'function' && define.amd ? define(['exports', '@tiptap/core', 'prosemirror-state', 'prosemirror-tables-contently'], factory) :
|
|
4
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global["@tiptap/extension-table"] = {}, global.core, global.prosemirrorState, global.prosemirrorTablesContently));
|
|
5
|
+
})(this, (function (exports, core, prosemirrorState, prosemirrorTablesContently) { 'use strict';
|
|
6
|
+
|
|
7
|
+
function updateColumns(node, colgroup, table, cellMinWidth, overrideCol, overrideValue) {
|
|
8
|
+
let totalWidth = 0;
|
|
9
|
+
let fixedWidth = true;
|
|
10
|
+
let nextDOM = colgroup.firstChild;
|
|
11
|
+
const row = node.firstChild;
|
|
12
|
+
for (let i = 0, col = 0; i < row.childCount; i += 1) {
|
|
13
|
+
const { colspan, colwidth } = row.child(i).attrs;
|
|
14
|
+
for (let j = 0; j < colspan; j += 1, col += 1) {
|
|
15
|
+
const hasWidth = overrideCol === col ? overrideValue : colwidth && colwidth[j];
|
|
16
|
+
const cssWidth = hasWidth ? `${hasWidth}px` : '';
|
|
17
|
+
totalWidth += hasWidth || cellMinWidth;
|
|
18
|
+
if (!hasWidth) {
|
|
19
|
+
fixedWidth = false;
|
|
20
|
+
}
|
|
21
|
+
if (!nextDOM) {
|
|
22
|
+
colgroup.appendChild(document.createElement('col')).style.width = cssWidth;
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
if (nextDOM.style.width !== cssWidth) {
|
|
26
|
+
nextDOM.style.width = cssWidth;
|
|
27
|
+
}
|
|
28
|
+
nextDOM = nextDOM.nextSibling;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
while (nextDOM) {
|
|
33
|
+
const after = nextDOM.nextSibling;
|
|
34
|
+
nextDOM.parentNode.removeChild(nextDOM);
|
|
35
|
+
nextDOM = after;
|
|
36
|
+
}
|
|
37
|
+
if (fixedWidth) {
|
|
38
|
+
table.style.width = `${totalWidth}px`;
|
|
39
|
+
table.style.minWidth = '';
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
table.style.width = '';
|
|
43
|
+
table.style.minWidth = `${totalWidth}px`;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
class TableView {
|
|
47
|
+
constructor(node, cellMinWidth) {
|
|
48
|
+
this.node = node;
|
|
49
|
+
this.cellMinWidth = cellMinWidth;
|
|
50
|
+
this.dom = document.createElement('div');
|
|
51
|
+
this.dom.className = 'tableWrapper';
|
|
52
|
+
this.table = this.dom.appendChild(document.createElement('table'));
|
|
53
|
+
this.colgroup = this.table.appendChild(document.createElement('colgroup'));
|
|
54
|
+
updateColumns(node, this.colgroup, this.table, cellMinWidth);
|
|
55
|
+
this.contentDOM = this.table.appendChild(document.createElement('tbody'));
|
|
56
|
+
}
|
|
57
|
+
update(node) {
|
|
58
|
+
if (node.type !== this.node.type) {
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
this.node = node;
|
|
62
|
+
updateColumns(node, this.colgroup, this.table, this.cellMinWidth);
|
|
63
|
+
return true;
|
|
64
|
+
}
|
|
65
|
+
ignoreMutation(mutation) {
|
|
66
|
+
return mutation.type === 'attributes' && (mutation.target === this.table || this.colgroup.contains(mutation.target));
|
|
67
|
+
}
|
|
68
|
+
}
|
|
6
69
|
|
|
7
70
|
function createCell(cellType, cellContent) {
|
|
8
71
|
if (cellContent) {
|
|
@@ -50,7 +113,7 @@
|
|
|
50
113
|
}
|
|
51
114
|
|
|
52
115
|
function isCellSelection(value) {
|
|
53
|
-
return value instanceof
|
|
116
|
+
return value instanceof prosemirrorTablesContently.CellSelection;
|
|
54
117
|
}
|
|
55
118
|
|
|
56
119
|
const deleteTableWhenAllCellsSelected = ({ editor }) => {
|
|
@@ -78,69 +141,6 @@
|
|
|
78
141
|
return true;
|
|
79
142
|
};
|
|
80
143
|
|
|
81
|
-
function updateColumns(node, colgroup, table, cellMinWidth, overrideCol, overrideValue) {
|
|
82
|
-
let totalWidth = 0;
|
|
83
|
-
let fixedWidth = true;
|
|
84
|
-
let nextDOM = colgroup.firstChild;
|
|
85
|
-
const row = node.firstChild;
|
|
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
|
-
if (!nextDOM) {
|
|
96
|
-
colgroup.appendChild(document.createElement('col')).style.width = cssWidth;
|
|
97
|
-
}
|
|
98
|
-
else {
|
|
99
|
-
if (nextDOM.style.width !== cssWidth) {
|
|
100
|
-
nextDOM.style.width = cssWidth;
|
|
101
|
-
}
|
|
102
|
-
nextDOM = nextDOM.nextSibling;
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
while (nextDOM) {
|
|
107
|
-
const after = nextDOM.nextSibling;
|
|
108
|
-
nextDOM.parentNode.removeChild(nextDOM);
|
|
109
|
-
nextDOM = after;
|
|
110
|
-
}
|
|
111
|
-
if (fixedWidth) {
|
|
112
|
-
table.style.width = `${totalWidth}px`;
|
|
113
|
-
table.style.minWidth = '';
|
|
114
|
-
}
|
|
115
|
-
else {
|
|
116
|
-
table.style.width = '';
|
|
117
|
-
table.style.minWidth = `${totalWidth}px`;
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
class TableView {
|
|
121
|
-
constructor(node, cellMinWidth) {
|
|
122
|
-
this.node = node;
|
|
123
|
-
this.cellMinWidth = cellMinWidth;
|
|
124
|
-
this.dom = document.createElement('div');
|
|
125
|
-
this.dom.className = 'tableWrapper';
|
|
126
|
-
this.table = this.dom.appendChild(document.createElement('table'));
|
|
127
|
-
this.colgroup = this.table.appendChild(document.createElement('colgroup'));
|
|
128
|
-
updateColumns(node, this.colgroup, this.table, cellMinWidth);
|
|
129
|
-
this.contentDOM = this.table.appendChild(document.createElement('tbody'));
|
|
130
|
-
}
|
|
131
|
-
update(node) {
|
|
132
|
-
if (node.type !== this.node.type) {
|
|
133
|
-
return false;
|
|
134
|
-
}
|
|
135
|
-
this.node = node;
|
|
136
|
-
updateColumns(node, this.colgroup, this.table, this.cellMinWidth);
|
|
137
|
-
return true;
|
|
138
|
-
}
|
|
139
|
-
ignoreMutation(mutation) {
|
|
140
|
-
return mutation.type === 'attributes' && (mutation.target === this.table || this.colgroup.contains(mutation.target));
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
|
|
144
144
|
const Table = core.Node.create({
|
|
145
145
|
name: 'table',
|
|
146
146
|
// @ts-ignore
|
|
@@ -181,65 +181,65 @@
|
|
|
181
181
|
return true;
|
|
182
182
|
},
|
|
183
183
|
addColumnBefore: () => ({ state, dispatch }) => {
|
|
184
|
-
return
|
|
184
|
+
return prosemirrorTablesContently.addColumnBefore(state, dispatch);
|
|
185
185
|
},
|
|
186
186
|
addColumnAfter: () => ({ state, dispatch }) => {
|
|
187
|
-
return
|
|
187
|
+
return prosemirrorTablesContently.addColumnAfter(state, dispatch);
|
|
188
188
|
},
|
|
189
189
|
deleteColumn: () => ({ state, dispatch }) => {
|
|
190
|
-
return
|
|
190
|
+
return prosemirrorTablesContently.deleteColumn(state, dispatch);
|
|
191
191
|
},
|
|
192
192
|
addRowBefore: () => ({ state, dispatch }) => {
|
|
193
|
-
return
|
|
193
|
+
return prosemirrorTablesContently.addRowBefore(state, dispatch);
|
|
194
194
|
},
|
|
195
195
|
addRowAfter: () => ({ state, dispatch }) => {
|
|
196
|
-
return
|
|
196
|
+
return prosemirrorTablesContently.addRowAfter(state, dispatch);
|
|
197
197
|
},
|
|
198
198
|
deleteRow: () => ({ state, dispatch }) => {
|
|
199
|
-
return
|
|
199
|
+
return prosemirrorTablesContently.deleteRow(state, dispatch);
|
|
200
200
|
},
|
|
201
201
|
deleteTable: () => ({ state, dispatch }) => {
|
|
202
|
-
return
|
|
202
|
+
return prosemirrorTablesContently.deleteTable(state, dispatch);
|
|
203
203
|
},
|
|
204
204
|
mergeCells: () => ({ state, dispatch }) => {
|
|
205
|
-
return
|
|
205
|
+
return prosemirrorTablesContently.mergeCells(state, dispatch);
|
|
206
206
|
},
|
|
207
207
|
splitCell: () => ({ state, dispatch }) => {
|
|
208
|
-
return
|
|
208
|
+
return prosemirrorTablesContently.splitCell(state, dispatch);
|
|
209
209
|
},
|
|
210
210
|
toggleHeaderColumn: () => ({ state, dispatch }) => {
|
|
211
|
-
return
|
|
211
|
+
return prosemirrorTablesContently.toggleHeader('column')(state, dispatch);
|
|
212
212
|
},
|
|
213
213
|
toggleHeaderRow: () => ({ state, dispatch }) => {
|
|
214
|
-
return
|
|
214
|
+
return prosemirrorTablesContently.toggleHeader('row')(state, dispatch);
|
|
215
215
|
},
|
|
216
216
|
toggleHeaderCell: () => ({ state, dispatch }) => {
|
|
217
|
-
return
|
|
217
|
+
return prosemirrorTablesContently.toggleHeaderCell(state, dispatch);
|
|
218
218
|
},
|
|
219
219
|
mergeOrSplit: () => ({ state, dispatch }) => {
|
|
220
|
-
if (
|
|
220
|
+
if (prosemirrorTablesContently.mergeCells(state, dispatch)) {
|
|
221
221
|
return true;
|
|
222
222
|
}
|
|
223
|
-
return
|
|
223
|
+
return prosemirrorTablesContently.splitCell(state, dispatch);
|
|
224
224
|
},
|
|
225
225
|
setCellAttribute: (name, value) => ({ state, dispatch }) => {
|
|
226
|
-
return
|
|
226
|
+
return prosemirrorTablesContently.setCellAttr(name, value)(state, dispatch);
|
|
227
227
|
},
|
|
228
228
|
goToNextCell: () => ({ state, dispatch }) => {
|
|
229
|
-
return
|
|
229
|
+
return prosemirrorTablesContently.goToNextCell(1)(state, dispatch);
|
|
230
230
|
},
|
|
231
231
|
goToPreviousCell: () => ({ state, dispatch }) => {
|
|
232
|
-
return
|
|
232
|
+
return prosemirrorTablesContently.goToNextCell(-1)(state, dispatch);
|
|
233
233
|
},
|
|
234
234
|
fixTables: () => ({ state, dispatch }) => {
|
|
235
235
|
if (dispatch) {
|
|
236
|
-
|
|
236
|
+
prosemirrorTablesContently.fixTables(state);
|
|
237
237
|
}
|
|
238
238
|
return true;
|
|
239
239
|
},
|
|
240
240
|
setCellSelection: position => ({ tr, dispatch }) => {
|
|
241
241
|
if (dispatch) {
|
|
242
|
-
const selection =
|
|
242
|
+
const selection = prosemirrorTablesContently.CellSelection.create(tr.doc, position.anchorCell, position.headCell);
|
|
243
243
|
// @ts-ignore
|
|
244
244
|
tr.setSelection(selection);
|
|
245
245
|
}
|
|
@@ -272,7 +272,7 @@
|
|
|
272
272
|
addProseMirrorPlugins() {
|
|
273
273
|
const isResizable = this.options.resizable && this.editor.isEditable;
|
|
274
274
|
return [
|
|
275
|
-
...(isResizable ? [
|
|
275
|
+
...(isResizable ? [prosemirrorTablesContently.columnResizing({
|
|
276
276
|
handleWidth: this.options.handleWidth,
|
|
277
277
|
cellMinWidth: this.options.cellMinWidth,
|
|
278
278
|
View: this.options.View,
|
|
@@ -280,7 +280,7 @@
|
|
|
280
280
|
// @ts-ignore (incorrect type)
|
|
281
281
|
lastColumnResizable: this.options.lastColumnResizable,
|
|
282
282
|
})] : []),
|
|
283
|
-
|
|
283
|
+
prosemirrorTablesContently.tableEditing({
|
|
284
284
|
allowTableNodeSelection: this.options.allowTableNodeSelection,
|
|
285
285
|
}),
|
|
286
286
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tiptap-extension-table.umd.js","sources":["../src/utilities/createCell.ts","../src/utilities/getTableNodeTypes.ts","../src/utilities/createTable.ts","../src/utilities/isCellSelection.ts","../src/utilities/deleteTableWhenAllCellsSelected.ts","../src/TableView.ts","../src/table.ts"],"sourcesContent":["import {\n NodeType, Fragment,\n Node as ProsemirrorNode,\n Schema,\n} from 'prosemirror-model'\n\nexport function createCell(cellType: NodeType, cellContent?: Fragment<Schema> | ProsemirrorNode<Schema> | Array<ProsemirrorNode<Schema>>): ProsemirrorNode | null | undefined {\n if (cellContent) {\n return cellType.createChecked(null, cellContent)\n }\n\n return cellType.createAndFill()\n}\n","import { Schema, NodeType } from 'prosemirror-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 { Schema, Fragment, Node as ProsemirrorNode } from 'prosemirror-model'\nimport { createCell } from './createCell'\nimport { getTableNodeTypes } from './getTableNodeTypes'\n\nexport function createTable(schema: Schema, rowsCount: number, colsCount: number, withHeaderRow: boolean, cellContent?: Fragment<Schema> | ProsemirrorNode<Schema> | Array<ProsemirrorNode<Schema>>): ProsemirrorNode {\n const types = getTableNodeTypes(schema)\n const headerCells = []\n const cells = []\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 = []\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 { CellSelection } from 'prosemirror-tables'\n\nexport function isCellSelection(value: unknown): value is CellSelection {\n return value instanceof CellSelection\n}\n","import { KeyboardShortcutCommand, findParentNodeClosestToPos } from '@tiptap/core'\nimport { isCellSelection } from './isCellSelection'\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","// @ts-nocheck\nimport { NodeView } from 'prosemirror-view'\nimport { Node as ProseMirrorNode } from 'prosemirror-model'\n\nexport function updateColumns(node: ProseMirrorNode, colgroup: Element, table: Element, cellMinWidth: number, overrideCol?: number, overrideValue?: any) {\n let totalWidth = 0\n let fixedWidth = true\n let nextDOM = colgroup.firstChild\n const row = node.firstChild\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]\n const cssWidth = hasWidth ? `${hasWidth}px` : ''\n\n totalWidth += hasWidth || cellMinWidth\n\n if (!hasWidth) {\n fixedWidth = false\n }\n\n if (!nextDOM) {\n colgroup.appendChild(document.createElement('col')).style.width = cssWidth\n } else {\n if (nextDOM.style.width !== cssWidth) {\n nextDOM.style.width = cssWidth\n }\n\n nextDOM = nextDOM.nextSibling\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\n node: ProseMirrorNode\n\n cellMinWidth: number\n\n dom: Element\n\n table: Element\n\n colgroup: Element\n\n contentDOM: Element\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: MutationRecord | { type: 'selection'; target: Element }) {\n return mutation.type === 'attributes' && (mutation.target === this.table || this.colgroup.contains(mutation.target))\n }\n}\n","import {\n Node,\n ParentConfig,\n mergeAttributes,\n getExtensionField,\n callOrReturn,\n} from '@tiptap/core'\nimport {\n tableEditing,\n columnResizing,\n goToNextCell,\n addColumnBefore,\n addColumnAfter,\n deleteColumn,\n addRowBefore,\n addRowAfter,\n deleteRow,\n deleteTable,\n mergeCells,\n splitCell,\n toggleHeader,\n toggleHeaderCell,\n setCellAttr,\n fixTables,\n CellSelection,\n} from 'prosemirror-tables'\nimport { NodeView } from 'prosemirror-view'\nimport { TextSelection } from 'prosemirror-state'\nimport { createTable } from './utilities/createTable'\nimport { deleteTableWhenAllCellsSelected } from './utilities/deleteTableWhenAllCellsSelected'\nimport { TableView } from './TableView'\n\nexport interface TableOptions {\n HTMLAttributes: Record<string, any>,\n resizable: boolean,\n handleWidth: number,\n cellMinWidth: number,\n View: NodeView,\n lastColumnResizable: boolean,\n allowTableNodeSelection: boolean,\n}\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n table: {\n insertTable: (options?: { rows?: number, cols?: number, withHeaderRow?: boolean }) => ReturnType,\n addColumnBefore: () => ReturnType,\n addColumnAfter: () => ReturnType,\n deleteColumn: () => ReturnType,\n addRowBefore: () => ReturnType,\n addRowAfter: () => ReturnType,\n deleteRow: () => ReturnType,\n deleteTable: () => ReturnType,\n mergeCells: () => ReturnType,\n splitCell: () => ReturnType,\n toggleHeaderColumn: () => ReturnType,\n toggleHeaderRow: () => ReturnType,\n toggleHeaderCell: () => ReturnType,\n mergeOrSplit: () => ReturnType,\n setCellAttribute: (name: string, value: any) => ReturnType,\n goToNextCell: () => ReturnType,\n goToPreviousCell: () => ReturnType,\n fixTables: () => ReturnType,\n setCellSelection: (position: { anchorCell: number, headCell?: number }) => ReturnType,\n }\n }\n\n interface NodeConfig<Options, Storage> {\n /**\n * Table Role\n */\n tableRole?: string | ((this: {\n name: string,\n options: Options,\n storage: Storage,\n parent: ParentConfig<NodeConfig<Options>>['tableRole'],\n }) => string),\n }\n}\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 [\n { tag: 'table' },\n ]\n },\n\n renderHTML({ HTMLAttributes }) {\n return ['table', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), ['tbody', 0]]\n },\n\n addCommands() {\n return {\n insertTable: ({ rows = 3, cols = 3, withHeaderRow = true } = {}) => ({ tr, dispatch, editor }) => {\n const node = createTable(editor.schema, rows, cols, withHeaderRow)\n\n if (dispatch) {\n const offset = tr.selection.anchor + 1\n\n tr.replaceSelectionWith(node)\n .scrollIntoView()\n .setSelection(TextSelection.near(tr.doc.resolve(offset)))\n }\n\n return true\n },\n addColumnBefore: () => ({ state, dispatch }) => {\n return addColumnBefore(state, dispatch)\n },\n addColumnAfter: () => ({ state, dispatch }) => {\n return addColumnAfter(state, dispatch)\n },\n deleteColumn: () => ({ state, dispatch }) => {\n return deleteColumn(state, dispatch)\n },\n addRowBefore: () => ({ state, dispatch }) => {\n return addRowBefore(state, dispatch)\n },\n addRowAfter: () => ({ state, dispatch }) => {\n return addRowAfter(state, dispatch)\n },\n deleteRow: () => ({ state, dispatch }) => {\n return deleteRow(state, dispatch)\n },\n deleteTable: () => ({ state, dispatch }) => {\n return deleteTable(state, dispatch)\n },\n mergeCells: () => ({ state, dispatch }) => {\n return mergeCells(state, dispatch)\n },\n splitCell: () => ({ state, dispatch }) => {\n return splitCell(state, dispatch)\n },\n toggleHeaderColumn: () => ({ state, dispatch }) => {\n return toggleHeader('column')(state, dispatch)\n },\n toggleHeaderRow: () => ({ state, dispatch }) => {\n return toggleHeader('row')(state, dispatch)\n },\n toggleHeaderCell: () => ({ state, dispatch }) => {\n return toggleHeaderCell(state, dispatch)\n },\n mergeOrSplit: () => ({ state, dispatch }) => {\n if (mergeCells(state, dispatch)) {\n return true\n }\n\n return splitCell(state, dispatch)\n },\n setCellAttribute: (name, value) => ({ state, dispatch }) => {\n return setCellAttr(name, value)(state, dispatch)\n },\n goToNextCell: () => ({ state, dispatch }) => {\n return goToNextCell(1)(state, dispatch)\n },\n goToPreviousCell: () => ({ state, dispatch }) => {\n return goToNextCell(-1)(state, dispatch)\n },\n fixTables: () => ({ state, dispatch }) => {\n if (dispatch) {\n fixTables(state)\n }\n\n return true\n },\n setCellSelection: position => ({ 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\n .chain()\n .addRowAfter()\n .goToNextCell()\n .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 ? [columnResizing({\n handleWidth: this.options.handleWidth,\n cellMinWidth: this.options.cellMinWidth,\n View: this.options.View,\n // TODO: PR for @types/prosemirror-tables\n // @ts-ignore (incorrect type)\n lastColumnResizable: this.options.lastColumnResizable,\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"],"names":["CellSelection","findParentNodeClosestToPos","Node","mergeAttributes","TextSelection","addColumnBefore","addColumnAfter","deleteColumn","addRowBefore","addRowAfter","deleteRow","deleteTable","mergeCells","splitCell","toggleHeader","toggleHeaderCell","setCellAttr","goToNextCell","fixTables","columnResizing","tableEditing","callOrReturn","getExtensionField"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tiptap-extension-table.umd.js","sources":["../src/TableView.ts","../src/utilities/createCell.ts","../src/utilities/getTableNodeTypes.ts","../src/utilities/createTable.ts","../src/utilities/isCellSelection.ts","../src/utilities/deleteTableWhenAllCellsSelected.ts","../src/table.ts"],"sourcesContent":["// @ts-nocheck\nimport { Node as ProseMirrorNode } from 'prosemirror-model'\nimport { NodeView } from 'prosemirror-view'\n\nexport function updateColumns(node: ProseMirrorNode, colgroup: Element, table: Element, cellMinWidth: number, overrideCol?: number, overrideValue?: any) {\n let totalWidth = 0\n let fixedWidth = true\n let nextDOM = colgroup.firstChild\n const row = node.firstChild\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]\n const cssWidth = hasWidth ? `${hasWidth}px` : ''\n\n totalWidth += hasWidth || cellMinWidth\n\n if (!hasWidth) {\n fixedWidth = false\n }\n\n if (!nextDOM) {\n colgroup.appendChild(document.createElement('col')).style.width = cssWidth\n } else {\n if (nextDOM.style.width !== cssWidth) {\n nextDOM.style.width = cssWidth\n }\n\n nextDOM = nextDOM.nextSibling\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\n node: ProseMirrorNode\n\n cellMinWidth: number\n\n dom: Element\n\n table: Element\n\n colgroup: Element\n\n contentDOM: Element\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: MutationRecord | { type: 'selection'; target: Element }) {\n return mutation.type === 'attributes' && (mutation.target === this.table || this.colgroup.contains(mutation.target))\n }\n}\n","import { Fragment, Node as ProsemirrorNode, NodeType } from 'prosemirror-model'\n\nexport function createCell(cellType: NodeType, cellContent?: Fragment | ProsemirrorNode | Array<ProsemirrorNode>): ProsemirrorNode | null | undefined {\n if (cellContent) {\n return cellType.createChecked(null, cellContent)\n }\n\n return cellType.createAndFill()\n}\n","import { NodeType, Schema } from 'prosemirror-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 { Fragment, Node as ProsemirrorNode, Schema } from 'prosemirror-model'\n\nimport { createCell } from './createCell'\nimport { getTableNodeTypes } from './getTableNodeTypes'\n\nexport function createTable(schema: Schema, rowsCount: number, colsCount: number, withHeaderRow: boolean, cellContent?: Fragment | ProsemirrorNode | Array<ProsemirrorNode>): ProsemirrorNode {\n const types = getTableNodeTypes(schema)\n const headerCells = []\n const cells = []\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 = []\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 { CellSelection } from 'prosemirror-tables-contently'\n\nexport function isCellSelection(value: unknown): value is CellSelection {\n return value instanceof CellSelection\n}\n","import { findParentNodeClosestToPos, KeyboardShortcutCommand } from '@tiptap/core'\n\nimport { isCellSelection } from './isCellSelection'\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 {\n callOrReturn,\n getExtensionField,\n mergeAttributes,\n Node,\n ParentConfig,\n} from '@tiptap/core'\nimport { TextSelection } from 'prosemirror-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 'prosemirror-tables-contently'\nimport { NodeView } from 'prosemirror-view'\n\nimport { TableView } from './TableView'\nimport { createTable } from './utilities/createTable'\nimport { deleteTableWhenAllCellsSelected } from './utilities/deleteTableWhenAllCellsSelected'\n\nexport interface TableOptions {\n HTMLAttributes: Record<string, any>,\n resizable: boolean,\n handleWidth: number,\n cellMinWidth: number,\n View: NodeView,\n lastColumnResizable: boolean,\n allowTableNodeSelection: boolean,\n}\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n table: {\n insertTable: (options?: { rows?: number, cols?: number, withHeaderRow?: boolean }) => ReturnType,\n addColumnBefore: () => ReturnType,\n addColumnAfter: () => ReturnType,\n deleteColumn: () => ReturnType,\n addRowBefore: () => ReturnType,\n addRowAfter: () => ReturnType,\n deleteRow: () => ReturnType,\n deleteTable: () => ReturnType,\n mergeCells: () => ReturnType,\n splitCell: () => ReturnType,\n toggleHeaderColumn: () => ReturnType,\n toggleHeaderRow: () => ReturnType,\n toggleHeaderCell: () => ReturnType,\n mergeOrSplit: () => ReturnType,\n setCellAttribute: (name: string, value: any) => ReturnType,\n goToNextCell: () => ReturnType,\n goToPreviousCell: () => ReturnType,\n fixTables: () => ReturnType,\n setCellSelection: (position: { anchorCell: number, headCell?: number }) => ReturnType,\n }\n }\n\n interface NodeConfig<Options, Storage> {\n /**\n * Table Role\n */\n tableRole?: string | ((this: {\n name: string,\n options: Options,\n storage: Storage,\n parent: ParentConfig<NodeConfig<Options>>['tableRole'],\n }) => string),\n }\n}\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 [\n { tag: 'table' },\n ]\n },\n\n renderHTML({ HTMLAttributes }) {\n return ['table', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), ['tbody', 0]]\n },\n\n addCommands() {\n return {\n insertTable: ({ rows = 3, cols = 3, withHeaderRow = true } = {}) => ({ tr, dispatch, editor }) => {\n const node = createTable(editor.schema, rows, cols, withHeaderRow)\n\n if (dispatch) {\n const offset = tr.selection.anchor + 1\n\n tr.replaceSelectionWith(node)\n .scrollIntoView()\n .setSelection(TextSelection.near(tr.doc.resolve(offset)))\n }\n\n return true\n },\n addColumnBefore: () => ({ state, dispatch }) => {\n return addColumnBefore(state, dispatch)\n },\n addColumnAfter: () => ({ state, dispatch }) => {\n return addColumnAfter(state, dispatch)\n },\n deleteColumn: () => ({ state, dispatch }) => {\n return deleteColumn(state, dispatch)\n },\n addRowBefore: () => ({ state, dispatch }) => {\n return addRowBefore(state, dispatch)\n },\n addRowAfter: () => ({ state, dispatch }) => {\n return addRowAfter(state, dispatch)\n },\n deleteRow: () => ({ state, dispatch }) => {\n return deleteRow(state, dispatch)\n },\n deleteTable: () => ({ state, dispatch }) => {\n return deleteTable(state, dispatch)\n },\n mergeCells: () => ({ state, dispatch }) => {\n return mergeCells(state, dispatch)\n },\n splitCell: () => ({ state, dispatch }) => {\n return splitCell(state, dispatch)\n },\n toggleHeaderColumn: () => ({ state, dispatch }) => {\n return toggleHeader('column')(state, dispatch)\n },\n toggleHeaderRow: () => ({ state, dispatch }) => {\n return toggleHeader('row')(state, dispatch)\n },\n toggleHeaderCell: () => ({ state, dispatch }) => {\n return toggleHeaderCell(state, dispatch)\n },\n mergeOrSplit: () => ({ state, dispatch }) => {\n if (mergeCells(state, dispatch)) {\n return true\n }\n\n return splitCell(state, dispatch)\n },\n setCellAttribute: (name, value) => ({ state, dispatch }) => {\n return setCellAttr(name, value)(state, dispatch)\n },\n goToNextCell: () => ({ state, dispatch }) => {\n return goToNextCell(1)(state, dispatch)\n },\n goToPreviousCell: () => ({ state, dispatch }) => {\n return goToNextCell(-1)(state, dispatch)\n },\n fixTables: () => ({ state, dispatch }) => {\n if (dispatch) {\n fixTables(state)\n }\n\n return true\n },\n setCellSelection: position => ({ 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\n .chain()\n .addRowAfter()\n .goToNextCell()\n .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 ? [columnResizing({\n handleWidth: this.options.handleWidth,\n cellMinWidth: this.options.cellMinWidth,\n View: this.options.View,\n // TODO: PR for @types/prosemirror-tables\n // @ts-ignore (incorrect type)\n lastColumnResizable: this.options.lastColumnResizable,\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"],"names":["CellSelection","findParentNodeClosestToPos","Node","mergeAttributes","TextSelection","addColumnBefore","addColumnAfter","deleteColumn","addRowBefore","addRowAfter","deleteRow","deleteTable","mergeCells","splitCell","toggleHeader","toggleHeaderCell","setCellAttr","goToNextCell","fixTables","columnResizing","tableEditing","callOrReturn","getExtensionField"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tiptap/extension-table",
|
|
3
3
|
"description": "table extension for tiptap",
|
|
4
|
-
"version": "2.0.0-beta.
|
|
4
|
+
"version": "2.0.0-beta.53",
|
|
5
5
|
"homepage": "https://tiptap.dev",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"tiptap",
|
|
@@ -24,17 +24,15 @@
|
|
|
24
24
|
"@tiptap/core": "^2.0.0-beta.1"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
"prosemirror-
|
|
30
|
-
"prosemirror-
|
|
31
|
-
"prosemirror-tables": "^1.1.1",
|
|
32
|
-
"prosemirror-view": "^1.23.6"
|
|
27
|
+
"prosemirror-model": "^1.17.0",
|
|
28
|
+
"prosemirror-state": "^1.4.0",
|
|
29
|
+
"prosemirror-tables-contently": "^1.1.2",
|
|
30
|
+
"prosemirror-view": "^1.25.0"
|
|
33
31
|
},
|
|
34
32
|
"repository": {
|
|
35
33
|
"type": "git",
|
|
36
34
|
"url": "https://github.com/ueberdosis/tiptap",
|
|
37
35
|
"directory": "packages/extension-table"
|
|
38
36
|
},
|
|
39
|
-
"gitHead": "
|
|
37
|
+
"gitHead": "a1e612bf897a14065b4f9ba6d48925c97d136811"
|
|
40
38
|
}
|
package/src/TableView.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// @ts-nocheck
|
|
2
|
-
import { NodeView } from 'prosemirror-view'
|
|
3
2
|
import { Node as ProseMirrorNode } from 'prosemirror-model'
|
|
3
|
+
import { NodeView } from 'prosemirror-view'
|
|
4
4
|
|
|
5
5
|
export function updateColumns(node: ProseMirrorNode, colgroup: Element, table: Element, cellMinWidth: number, overrideCol?: number, overrideValue?: any) {
|
|
6
6
|
let totalWidth = 0
|
package/src/table.ts
CHANGED
|
@@ -1,34 +1,35 @@
|
|
|
1
1
|
import {
|
|
2
|
+
callOrReturn,
|
|
3
|
+
getExtensionField,
|
|
4
|
+
mergeAttributes,
|
|
2
5
|
Node,
|
|
3
6
|
ParentConfig,
|
|
4
|
-
mergeAttributes,
|
|
5
|
-
getExtensionField,
|
|
6
|
-
callOrReturn,
|
|
7
7
|
} from '@tiptap/core'
|
|
8
|
+
import { TextSelection } from 'prosemirror-state'
|
|
8
9
|
import {
|
|
9
|
-
tableEditing,
|
|
10
|
-
columnResizing,
|
|
11
|
-
goToNextCell,
|
|
12
|
-
addColumnBefore,
|
|
13
10
|
addColumnAfter,
|
|
14
|
-
|
|
15
|
-
addRowBefore,
|
|
11
|
+
addColumnBefore,
|
|
16
12
|
addRowAfter,
|
|
13
|
+
addRowBefore,
|
|
14
|
+
CellSelection,
|
|
15
|
+
columnResizing,
|
|
16
|
+
deleteColumn,
|
|
17
17
|
deleteRow,
|
|
18
18
|
deleteTable,
|
|
19
|
+
fixTables,
|
|
20
|
+
goToNextCell,
|
|
19
21
|
mergeCells,
|
|
22
|
+
setCellAttr,
|
|
20
23
|
splitCell,
|
|
24
|
+
tableEditing,
|
|
21
25
|
toggleHeader,
|
|
22
26
|
toggleHeaderCell,
|
|
23
|
-
|
|
24
|
-
fixTables,
|
|
25
|
-
CellSelection,
|
|
26
|
-
} from 'prosemirror-tables'
|
|
27
|
+
} from 'prosemirror-tables-contently'
|
|
27
28
|
import { NodeView } from 'prosemirror-view'
|
|
28
|
-
|
|
29
|
+
|
|
30
|
+
import { TableView } from './TableView'
|
|
29
31
|
import { createTable } from './utilities/createTable'
|
|
30
32
|
import { deleteTableWhenAllCellsSelected } from './utilities/deleteTableWhenAllCellsSelected'
|
|
31
|
-
import { TableView } from './TableView'
|
|
32
33
|
|
|
33
34
|
export interface TableOptions {
|
|
34
35
|
HTMLAttributes: Record<string, any>,
|
|
@@ -1,10 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
NodeType, Fragment,
|
|
3
|
-
Node as ProsemirrorNode,
|
|
4
|
-
Schema,
|
|
5
|
-
} from 'prosemirror-model'
|
|
1
|
+
import { Fragment, Node as ProsemirrorNode, NodeType } from 'prosemirror-model'
|
|
6
2
|
|
|
7
|
-
export function createCell(cellType: NodeType, cellContent?: Fragment
|
|
3
|
+
export function createCell(cellType: NodeType, cellContent?: Fragment | ProsemirrorNode | Array<ProsemirrorNode>): ProsemirrorNode | null | undefined {
|
|
8
4
|
if (cellContent) {
|
|
9
5
|
return cellType.createChecked(null, cellContent)
|
|
10
6
|
}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Fragment, Node as ProsemirrorNode, Schema } from 'prosemirror-model'
|
|
2
|
+
|
|
2
3
|
import { createCell } from './createCell'
|
|
3
4
|
import { getTableNodeTypes } from './getTableNodeTypes'
|
|
4
5
|
|
|
5
|
-
export function createTable(schema: Schema, rowsCount: number, colsCount: number, withHeaderRow: boolean, cellContent?: Fragment
|
|
6
|
+
export function createTable(schema: Schema, rowsCount: number, colsCount: number, withHeaderRow: boolean, cellContent?: Fragment | ProsemirrorNode | Array<ProsemirrorNode>): ProsemirrorNode {
|
|
6
7
|
const types = getTableNodeTypes(schema)
|
|
7
8
|
const headerCells = []
|
|
8
9
|
const cells = []
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { findParentNodeClosestToPos, KeyboardShortcutCommand } from '@tiptap/core'
|
|
2
|
+
|
|
2
3
|
import { isCellSelection } from './isCellSelection'
|
|
3
4
|
|
|
4
5
|
export const deleteTableWhenAllCellsSelected: KeyboardShortcutCommand = ({ editor }) => {
|