@progress/kendo-editor-common 1.9.3-dev.202209261114 → 1.9.3-dev.202210050740
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/cdn/js/kendo-editor-common.js +1 -1
- package/dist/cdn/main.js +1 -1
- package/dist/es/main.js +2 -2
- package/dist/es/plugins/table-resize/column-resize.js +23 -32
- package/dist/es/plugins/table-resize/row-resize.js +48 -47
- package/dist/es/plugins/table-resize/table-resize.js +1 -3
- package/dist/es/plugins/table-resize/utils.js +56 -5
- package/dist/es/table.js +72 -7
- package/dist/es2015/main.js +2 -2
- package/dist/es2015/plugins/table-resize/column-resize.js +23 -32
- package/dist/es2015/plugins/table-resize/row-resize.js +50 -49
- package/dist/es2015/plugins/table-resize/table-resize.js +1 -3
- package/dist/es2015/plugins/table-resize/utils.js +52 -6
- package/dist/es2015/table.js +69 -7
- package/dist/npm/main.d.ts +2 -2
- package/dist/npm/main.js +7 -4
- package/dist/npm/plugins/table-resize/column-resize.js +24 -33
- package/dist/npm/plugins/table-resize/row-resize.js +47 -46
- package/dist/npm/plugins/table-resize/table-resize.js +1 -3
- package/dist/npm/plugins/table-resize/utils.d.ts +6 -1
- package/dist/npm/plugins/table-resize/utils.js +58 -6
- package/dist/npm/table.d.ts +5 -2
- package/dist/npm/table.js +76 -5
- package/dist/systemjs/kendo-editor-common.js +1 -1
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Plugin } from 'prosemirror-state';
|
|
2
2
|
import { TableMap, tableNodeTypes } from 'prosemirror-tables';
|
|
3
3
|
import { Decoration, DecorationSet } from 'prosemirror-view';
|
|
4
|
-
import { domCellAround, otherResizeHandle, otherResizing,
|
|
4
|
+
import { cellIndexes, domCellAround, otherResizeHandle, otherResizing, parseStyle, setNodeStyle, tableRowResizeKey as key, edgeCell } from './utils';
|
|
5
5
|
class TableRowView {
|
|
6
6
|
ignoreMutation(record) {
|
|
7
7
|
return record.type === 'attributes' && record.attributeName === 'style' && record.target.nodeName === 'TR';
|
|
@@ -86,19 +86,20 @@ class ResizeState {
|
|
|
86
86
|
function handleMouseMove(view, event, handleWidth) {
|
|
87
87
|
let pluginState = key.getState(view.state);
|
|
88
88
|
if (!pluginState.dragging) {
|
|
89
|
-
let target = domCellAround(event.target),
|
|
89
|
+
let target = domCellAround(event.target), cell = -1;
|
|
90
90
|
if (target) {
|
|
91
|
-
const
|
|
92
|
-
let
|
|
93
|
-
if (Math.abs(event.clientY -
|
|
94
|
-
|
|
91
|
+
const indexes = cellIndexes(target);
|
|
92
|
+
let { top, bottom } = target.getBoundingClientRect();
|
|
93
|
+
if (Math.abs(event.clientY - top) <= handleWidth && indexes.rowIndex > 0) {
|
|
94
|
+
indexes.rowIndex -= target.rowSpan;
|
|
95
|
+
cell = edgeCell(view, event, indexes);
|
|
95
96
|
}
|
|
96
|
-
else if (
|
|
97
|
-
|
|
97
|
+
else if (bottom - event.clientY > 0 && bottom - event.clientY <= handleWidth) {
|
|
98
|
+
cell = edgeCell(view, event, indexes);
|
|
98
99
|
}
|
|
99
100
|
}
|
|
100
|
-
if (
|
|
101
|
-
updateHandle(view,
|
|
101
|
+
if (cell !== pluginState.activeHandle) {
|
|
102
|
+
updateHandle(view, cell);
|
|
102
103
|
}
|
|
103
104
|
}
|
|
104
105
|
}
|
|
@@ -114,9 +115,9 @@ function handleMouseDown(view, event) {
|
|
|
114
115
|
return false;
|
|
115
116
|
}
|
|
116
117
|
const doc = view.state.doc;
|
|
117
|
-
let $
|
|
118
|
-
let row =
|
|
119
|
-
let table = $
|
|
118
|
+
let $cell = doc.resolve(pluginState.activeHandle);
|
|
119
|
+
let row = $cell.parent;
|
|
120
|
+
let table = $cell.node(-1);
|
|
120
121
|
let rowHeightStr = parseStyle(row.attrs.style).height;
|
|
121
122
|
let tableHeight = parseStyle(table.attrs.style).height;
|
|
122
123
|
let rowHeight = rowHeightStr ? parseFloat(rowHeightStr) : 0;
|
|
@@ -154,24 +155,8 @@ function handleMouseDown(view, event) {
|
|
|
154
155
|
event.preventDefault();
|
|
155
156
|
return true;
|
|
156
157
|
}
|
|
157
|
-
function edgeRow(view, event, rowIndex) {
|
|
158
|
-
let found = view.posAtCoords({ left: event.clientX, top: event.clientY });
|
|
159
|
-
if (!found) {
|
|
160
|
-
return -1;
|
|
161
|
-
}
|
|
162
|
-
let $pos = view.state.doc.resolve(found.pos);
|
|
163
|
-
let parentTable = parentNode($pos, n => n.type.spec.tableRole === 'table');
|
|
164
|
-
if (parentTable === null) {
|
|
165
|
-
return -1;
|
|
166
|
-
}
|
|
167
|
-
let tablePos = $pos.start(parentTable.depth);
|
|
168
|
-
const tableNode = parentTable.node;
|
|
169
|
-
const map = TableMap.get(tableNode);
|
|
170
|
-
const row = tablePos + map.map[(map.width * rowIndex)] - 1;
|
|
171
|
-
return row;
|
|
172
|
-
}
|
|
173
158
|
function draggedHeight(dragging, event) {
|
|
174
|
-
|
|
159
|
+
const offset = event.clientY - dragging.startY;
|
|
175
160
|
return dragging.startHeight.rowHeight + offset;
|
|
176
161
|
}
|
|
177
162
|
function updateHandle(view, value) {
|
|
@@ -180,9 +165,11 @@ function updateHandle(view, value) {
|
|
|
180
165
|
tr.setMeta(key, { setHandle: value });
|
|
181
166
|
view.dispatch(tr);
|
|
182
167
|
}
|
|
183
|
-
function updateRowHeight(view, tr,
|
|
168
|
+
function updateRowHeight(view, tr, cellPos) {
|
|
184
169
|
const doc = view.state.doc;
|
|
185
|
-
|
|
170
|
+
const $cell = doc.resolve(cellPos);
|
|
171
|
+
const row = $cell.parent;
|
|
172
|
+
const rowPos = $cell.posAtIndex(0) - 1;
|
|
186
173
|
const dom = view.nodeDOM(rowPos);
|
|
187
174
|
const win = (dom.ownerDocument && dom.ownerDocument.defaultView) || window;
|
|
188
175
|
dom.style.height = win.getComputedStyle(dom).height;
|
|
@@ -195,13 +182,14 @@ function updateRowHeight(view, tr, rowPos) {
|
|
|
195
182
|
tr.setNodeMarkup(tablePos, null, setNodeStyle($pos.parent.attrs, 'height', tableHeight));
|
|
196
183
|
}
|
|
197
184
|
}
|
|
198
|
-
function displayRowHeight(view,
|
|
199
|
-
const
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
185
|
+
function displayRowHeight(view, cellPos, height, offset, tableHeight) {
|
|
186
|
+
const cell = view.nodeDOM(cellPos);
|
|
187
|
+
const row = cell && cell.parentNode;
|
|
188
|
+
if (row) {
|
|
189
|
+
row.style.height = height + 'px';
|
|
190
|
+
const win = (row.ownerDocument && row.ownerDocument.defaultView) || window;
|
|
191
|
+
row.style.height = win.getComputedStyle(row).height;
|
|
192
|
+
const table = row.closest('table');
|
|
205
193
|
const newHeight = (parseFloat(tableHeight) + offset) + 'px';
|
|
206
194
|
const current = table && table.style.height;
|
|
207
195
|
if (current && current !== newHeight) {
|
|
@@ -210,20 +198,33 @@ function displayRowHeight(view, rowPos, height, offset, tableHeight) {
|
|
|
210
198
|
}
|
|
211
199
|
}
|
|
212
200
|
}
|
|
213
|
-
function handleDecorations(state,
|
|
214
|
-
|
|
215
|
-
if (typeof
|
|
201
|
+
function handleDecorations(state, cell) {
|
|
202
|
+
const decorations = [];
|
|
203
|
+
if (typeof cell !== 'number') {
|
|
216
204
|
return DecorationSet.empty;
|
|
217
205
|
}
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
206
|
+
const $cell = state.doc.resolve(cell), table = $cell.node(-1), map = TableMap.get(table), start = $cell.start(-1);
|
|
207
|
+
const cellsPositions = [];
|
|
208
|
+
const cellPos = cell - start;
|
|
209
|
+
let rowIndex = -1;
|
|
210
|
+
for (let i = 0; i < map.height; i++) {
|
|
211
|
+
cellsPositions.push(map.map.slice(i * map.width, (i * map.width) + map.width));
|
|
212
|
+
if (cellsPositions[i].indexOf(cellPos) !== -1) {
|
|
213
|
+
rowIndex = i;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
const cells = [];
|
|
217
|
+
cellsPositions[rowIndex].forEach((c, i) => {
|
|
218
|
+
if (!cellsPositions[rowIndex + 1] || c !== cellsPositions[rowIndex + 1][i]) {
|
|
219
|
+
cells.push(c);
|
|
220
|
+
}
|
|
221
|
+
});
|
|
222
|
+
cells.forEach((cPos) => {
|
|
223
|
+
const cellNode = table.nodeAt(cPos);
|
|
224
|
+
let widgetPos = start + cPos + (cellNode ? cellNode.nodeSize : 0) - 1;
|
|
224
225
|
let dom = document.createElement('div');
|
|
225
226
|
dom.className = 'row-resize-handle';
|
|
226
227
|
decorations.push(Decoration.widget(widgetPos, dom));
|
|
227
|
-
}
|
|
228
|
+
});
|
|
228
229
|
return DecorationSet.create(state.doc, decorations);
|
|
229
230
|
}
|
|
@@ -197,9 +197,7 @@ export const tableResizing = (options = { node: 'table' }) => {
|
|
|
197
197
|
const parent = parentNode(selection.$from, (n) => n.type === nodeType);
|
|
198
198
|
const node = parent && parent.node;
|
|
199
199
|
if (node) {
|
|
200
|
-
|
|
201
|
-
.findIndex((_, i) => selection.$from.node(i).type.spec.tableRole === 'table');
|
|
202
|
-
const pos = selection.$from.start(tableDepth) - 1;
|
|
200
|
+
const pos = selection.$from.start(parent.depth) - 1;
|
|
203
201
|
return { node, pos };
|
|
204
202
|
}
|
|
205
203
|
return null;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { PluginKey } from 'prosemirror-state';
|
|
2
|
+
import { TableMap } from 'prosemirror-tables';
|
|
2
3
|
import { changeStylesString } from '../../utils';
|
|
3
4
|
export const reAnyValue = /^.+$/;
|
|
4
5
|
export const parseStyle = (styleText) => {
|
|
@@ -57,12 +58,41 @@ export function domCellAround(target) {
|
|
|
57
58
|
}
|
|
58
59
|
return target;
|
|
59
60
|
}
|
|
60
|
-
|
|
61
|
-
const
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
61
|
+
function tableSpansMap(table) {
|
|
62
|
+
const rows = Array.from((table && table.rows) || []);
|
|
63
|
+
const colsCount = Array.from((rows && rows[0] && rows[0].cells) || [])
|
|
64
|
+
.map(c => c.colSpan)
|
|
65
|
+
.reduce((prev, cur) => prev + cur, 0);
|
|
66
|
+
const map = rows.map(() => new Array(colsCount));
|
|
67
|
+
rows.forEach((row, r) => {
|
|
68
|
+
let curColSpan = 0;
|
|
69
|
+
Array.from(row.cells).forEach((c) => {
|
|
70
|
+
for (let colSp = 0; colSp < c.colSpan; colSp++) {
|
|
71
|
+
for (let rowSp = 0; rowSp < c.rowSpan; rowSp++) {
|
|
72
|
+
const ind = map[r + rowSp].findIndex((val, curInd) => curInd >= curColSpan && !val);
|
|
73
|
+
map[r + rowSp][ind] = c;
|
|
74
|
+
}
|
|
75
|
+
curColSpan++;
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
return map;
|
|
80
|
+
}
|
|
81
|
+
export function cellIndexes(dataCell) {
|
|
82
|
+
const map = tableSpansMap(dataCell.closest('table'));
|
|
83
|
+
let result = null;
|
|
84
|
+
for (let r = 0; r < map.length; r++) {
|
|
85
|
+
const row = map[r];
|
|
86
|
+
row.forEach((cell, c) => {
|
|
87
|
+
if (dataCell === cell) {
|
|
88
|
+
result = { rowIndex: r, cellIndex: c };
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
if (result) {
|
|
92
|
+
break;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return result || { rowIndex: -1, cellIndex: -1 };
|
|
66
96
|
}
|
|
67
97
|
export function parentNode(pos, predicate) {
|
|
68
98
|
for (let depth = pos.depth; depth > 0; depth--) {
|
|
@@ -73,3 +103,19 @@ export function parentNode(pos, predicate) {
|
|
|
73
103
|
}
|
|
74
104
|
return null;
|
|
75
105
|
}
|
|
106
|
+
export function edgeCell(view, event, indexes) {
|
|
107
|
+
const found = view.posAtCoords({ left: event.clientX, top: event.clientY });
|
|
108
|
+
if (!found) {
|
|
109
|
+
return -1;
|
|
110
|
+
}
|
|
111
|
+
const $pos = view.state.doc.resolve(found.pos);
|
|
112
|
+
const parentTable = parentNode($pos, n => n.type.spec.tableRole === 'table');
|
|
113
|
+
if (parentTable === null) {
|
|
114
|
+
return -1;
|
|
115
|
+
}
|
|
116
|
+
const tablePos = $pos.start(parentTable.depth);
|
|
117
|
+
const tableNode = parentTable.node;
|
|
118
|
+
const map = TableMap.get(tableNode);
|
|
119
|
+
const cell = tablePos + map.map[(map.width * indexes.rowIndex) + indexes.cellIndex];
|
|
120
|
+
return cell;
|
|
121
|
+
}
|
package/dist/es2015/table.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { addRowAfter as pmAddRowAfter, addRowBefore as pmAddRowBefore } from 'prosemirror-tables';
|
|
2
|
-
import { rowTypeAttr } from './config/constants';
|
|
1
|
+
import { addRowAfter as pmAddRowAfter, addRowBefore as pmAddRowBefore, addColumnBefore as pmAddColumnBefore, addColumnAfter as pmAddColumnAfter, deleteColumn as pmDeleteColumn, TableMap } from 'prosemirror-tables';
|
|
2
|
+
import { colgroupAttr, rowTypeAttr } from './config/constants';
|
|
3
|
+
import { parseStrColgroup } from './config/schema';
|
|
3
4
|
/**
|
|
4
5
|
* Creates a table.
|
|
5
6
|
* @returns Node
|
|
@@ -17,11 +18,14 @@ export const createTable = (nodes, rows, columns) => {
|
|
|
17
18
|
}
|
|
18
19
|
return table.createAndFill(undefined, tableRows);
|
|
19
20
|
};
|
|
21
|
+
const reTable = /^table$/;
|
|
22
|
+
const reRow = /^table_row$/;
|
|
23
|
+
const reCell = /^table_cell|table_header$/;
|
|
20
24
|
const closest = (selection, name) => {
|
|
21
25
|
const pos = selection.$head;
|
|
22
26
|
for (let i = pos.depth; i > 0; i--) {
|
|
23
27
|
const node = pos.node(i);
|
|
24
|
-
if (node.type.name
|
|
28
|
+
if (name.test(node.type.name)) {
|
|
25
29
|
return {
|
|
26
30
|
pos: pos.before(i),
|
|
27
31
|
node
|
|
@@ -32,8 +36,8 @@ const closest = (selection, name) => {
|
|
|
32
36
|
};
|
|
33
37
|
export const addRowBefore = (state, dispatch) => {
|
|
34
38
|
const cmdDispatch = dispatch && (tr => {
|
|
35
|
-
const row = closest(tr.selection,
|
|
36
|
-
const table = closest(tr.selection,
|
|
39
|
+
const row = closest(tr.selection, reRow);
|
|
40
|
+
const table = closest(tr.selection, reTable);
|
|
37
41
|
if (row && table && row.node.attrs[rowTypeAttr]) {
|
|
38
42
|
let index = 0;
|
|
39
43
|
for (let i = 0; i < table.node.nodeSize; i++) {
|
|
@@ -52,7 +56,7 @@ export const addRowBefore = (state, dispatch) => {
|
|
|
52
56
|
};
|
|
53
57
|
export const addRowAfter = (state, dispatch) => {
|
|
54
58
|
const cmdDispatch = dispatch && (tr => {
|
|
55
|
-
const row = closest(tr.selection,
|
|
59
|
+
const row = closest(tr.selection, reRow);
|
|
56
60
|
if (row && row.node.attrs[rowTypeAttr]) {
|
|
57
61
|
const from = row.pos + row.node.nodeSize;
|
|
58
62
|
tr.setNodeMarkup(from, undefined, { [rowTypeAttr]: row.node.attrs[rowTypeAttr] });
|
|
@@ -61,4 +65,62 @@ export const addRowAfter = (state, dispatch) => {
|
|
|
61
65
|
});
|
|
62
66
|
return pmAddRowAfter(state, cmdDispatch);
|
|
63
67
|
};
|
|
64
|
-
|
|
68
|
+
const columnIndex = (table, selection) => {
|
|
69
|
+
if (!table) {
|
|
70
|
+
return -1;
|
|
71
|
+
}
|
|
72
|
+
const map = TableMap.get(table.node);
|
|
73
|
+
const tableCell = closest(selection, reCell);
|
|
74
|
+
const idx = map.map.indexOf(tableCell.pos - table.pos - 1);
|
|
75
|
+
let colIndex = -1;
|
|
76
|
+
if (idx !== -1) {
|
|
77
|
+
colIndex = idx % map.width;
|
|
78
|
+
}
|
|
79
|
+
return colIndex;
|
|
80
|
+
};
|
|
81
|
+
const addCol = (tr, table, to) => {
|
|
82
|
+
const colIndex = columnIndex(table, tr.selection);
|
|
83
|
+
const colgroup = parseStrColgroup(table.node.attrs[colgroupAttr]);
|
|
84
|
+
colgroup.insertBefore(colgroup.ownerDocument.createElement('col'), colgroup.children[colIndex + to]);
|
|
85
|
+
tr.setNodeMarkup(table.pos, null, Object.assign(Object.assign({}, table.node.attrs), { [colgroupAttr]: colgroup.outerHTML }));
|
|
86
|
+
};
|
|
87
|
+
const deleteCol = (tr, table, colIndex) => {
|
|
88
|
+
const colgroup = parseStrColgroup(table.node.attrs[colgroupAttr]);
|
|
89
|
+
colgroup.removeChild(colgroup.children[colIndex]);
|
|
90
|
+
tr.setNodeMarkup(table.pos, null, Object.assign(Object.assign({}, table.node.attrs), { [colgroupAttr]: colgroup.outerHTML }));
|
|
91
|
+
};
|
|
92
|
+
export const addColumnBefore = (state, dispatch) => {
|
|
93
|
+
const cmdDispatch = dispatch && (tr => {
|
|
94
|
+
const table = closest(tr.selection, reTable);
|
|
95
|
+
if (!table.node.attrs[colgroupAttr]) {
|
|
96
|
+
return dispatch(tr);
|
|
97
|
+
}
|
|
98
|
+
addCol(tr, table, -1);
|
|
99
|
+
return dispatch(tr);
|
|
100
|
+
});
|
|
101
|
+
return pmAddColumnBefore(state, cmdDispatch);
|
|
102
|
+
};
|
|
103
|
+
export const addColumnAfter = (state, dispatch) => {
|
|
104
|
+
const cmdDispatch = dispatch && (tr => {
|
|
105
|
+
const table = closest(tr.selection, reTable);
|
|
106
|
+
if (!table.node.attrs[colgroupAttr]) {
|
|
107
|
+
return dispatch(tr);
|
|
108
|
+
}
|
|
109
|
+
addCol(tr, table, 1);
|
|
110
|
+
return dispatch(tr);
|
|
111
|
+
});
|
|
112
|
+
return pmAddColumnAfter(state, cmdDispatch);
|
|
113
|
+
};
|
|
114
|
+
export const deleteColumn = (state, dispatch) => {
|
|
115
|
+
const colIndex = columnIndex(closest(state.selection, reTable), state.selection);
|
|
116
|
+
const cmdDispatch = dispatch && (tr => {
|
|
117
|
+
const table = closest(tr.selection, reTable);
|
|
118
|
+
if (!table.node.attrs[colgroupAttr]) {
|
|
119
|
+
return dispatch(tr);
|
|
120
|
+
}
|
|
121
|
+
deleteCol(tr, table, colIndex);
|
|
122
|
+
return dispatch(tr);
|
|
123
|
+
});
|
|
124
|
+
return pmDeleteColumn(state, cmdDispatch);
|
|
125
|
+
};
|
|
126
|
+
export { pmAddRowBefore, pmAddRowAfter, pmAddColumnBefore, pmAddColumnAfter, pmDeleteColumn };
|
package/dist/npm/main.d.ts
CHANGED
|
@@ -36,7 +36,7 @@ export * from 'prosemirror-keymap';
|
|
|
36
36
|
export * from 'prosemirror-model';
|
|
37
37
|
export * from 'prosemirror-schema-list';
|
|
38
38
|
export * from 'prosemirror-state';
|
|
39
|
-
export { TableEditingOptions, TableMap, TableNodes, TableNodesOptions, TableRect, TableRoles, tableEditing, tableEditingKey, tableNodeTypes, tableNodes, fixTables, fixTablesKey, isInTable, deleteTable, inSameTable, getFromDOM, setDOMAttr, CellAttributes, CellSelectionJSON, CellSelection, Rect, selectedRect, selectionCell, setCellAttr, goToNextCell, toggleHeader, toggleHeaderCell, toggleHeaderColumn, toggleHeaderRow, splitCell, splitCellWithType, GetCellTypeOptions, mergeCells,
|
|
39
|
+
export { TableEditingOptions, TableMap, TableNodes, TableNodesOptions, TableRect, TableRoles, tableEditing, tableEditingKey, tableNodeTypes, tableNodes, fixTables, fixTablesKey, isInTable, deleteTable, inSameTable, getFromDOM, setDOMAttr, CellAttributes, CellSelectionJSON, CellSelection, Rect, selectedRect, selectionCell, setCellAttr, goToNextCell, toggleHeader, toggleHeaderCell, toggleHeaderColumn, toggleHeaderRow, splitCell, splitCellWithType, GetCellTypeOptions, mergeCells, deleteRow, rowIsHeader, addRow, addColSpan, addColumn, colCount, columnIsHeader, columnResizing, columnResizingPluginKey, updateColumnsOnResize, cellAround, findCell, removeColSpan, moveCellForward, nextCell } from 'prosemirror-tables';
|
|
40
40
|
export * from 'prosemirror-transform';
|
|
41
41
|
export * from 'prosemirror-view';
|
|
42
|
-
export { createTable, addRowAfter, addRowBefore, pmAddRowAfter, pmAddRowBefore } from './table';
|
|
42
|
+
export { createTable, addRowAfter, addRowBefore, addColumnBefore, addColumnAfter, deleteColumn, pmAddColumnBefore, pmAddColumnAfter, pmAddRowAfter, pmAddRowBefore, pmDeleteColumn } from './table';
|
package/dist/npm/main.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.expandToWordWrap = exports.expandSelection = exports.selectedLineTextOnly = exports.getNodeFromSelection = exports.getSelectionText = exports.hasSameMarkup = exports.liftBlockquote = exports.blockquote = exports.listStyle = exports.toggleList = exports.toggleUnorderedList = exports.toggleOrderedList = exports.indentBlocks = exports.canBeIndented = exports.isIndented = exports.canOutdentAsListItem = exports.outdent = exports.canIndentAsListItem = exports.indent = exports.selectionMarks = exports.cleanMarks = exports.removeAllMarks = exports.getActiveMarks = exports.getMark = exports.hasMark = exports.cleanTextBlockFormatting = exports.blockNodes = exports.changeTextBlock = exports.parentBlockFormat = exports.getBlockFormats = exports.formatBlockElements = exports.activeNode = exports.hasNode = exports.cleanFormatting = exports.isAligned = exports.alignBlocks = exports.insertImage = exports.insertText = exports.removeLink = exports.applyLink = exports.toggleInlineFormat = exports.getInlineStyles = exports.applyInlineStyle = exports.pmDocToFragment = exports.domToPmDoc = exports.htmlToFragment = exports.trimWhitespace = exports.parseContent = exports.setHtml = exports.getHtml = void 0;
|
|
4
4
|
exports.tableEditingKey = exports.tableEditing = exports.TableMap = exports.tableRowResizeKey = exports.tableColumnResizeKey = exports.tableResizeKey = exports.tableResizing = exports.caretColorKey = exports.caretColor = exports.imageResizeKey = exports.imageResizing = exports.textHighlightKey = exports.textHighlight = exports.spacesFix = exports.placeholder = exports.replaceAll = exports.replace = exports.findAll = exports.findAt = exports.find = exports.convertMsLists = exports.replaceImageSourcesFromRtf = exports.removeAttribute = exports.sanitizeStyleAttr = exports.sanitizeClassAttr = exports.pasteCleanup = exports.removeTag = exports.removeComments = exports.sanitize = exports.link = exports.superscript = exports.subscript = exports.strikethrough = exports.underline = exports.italic = exports.bold = exports.buildListKeymap = exports.buildKeymap = exports.marks = exports.nodes = exports.outdentRules = exports.indentRules = exports.alignRemoveRules = exports.alignJustifyRules = exports.alignRightRules = exports.alignCenterRules = exports.alignLeftRules = exports.indentHtml = exports.insertNode = exports.canInsert = void 0;
|
|
5
|
-
exports.pmAddRowBefore = exports.pmAddRowAfter = exports.addRowBefore = exports.addRowAfter = exports.createTable = exports.nextCell = exports.moveCellForward = exports.removeColSpan = exports.findCell = exports.cellAround = exports.updateColumnsOnResize = exports.columnResizingPluginKey = exports.columnResizing = exports.columnIsHeader = exports.colCount = exports.
|
|
5
|
+
exports.pmDeleteColumn = exports.pmAddRowBefore = exports.pmAddRowAfter = exports.pmAddColumnAfter = exports.pmAddColumnBefore = exports.deleteColumn = exports.addColumnAfter = exports.addColumnBefore = exports.addRowBefore = exports.addRowAfter = exports.createTable = exports.nextCell = exports.moveCellForward = exports.removeColSpan = exports.findCell = exports.cellAround = exports.updateColumnsOnResize = exports.columnResizingPluginKey = exports.columnResizing = exports.columnIsHeader = exports.colCount = exports.addColumn = exports.addColSpan = exports.addRow = exports.rowIsHeader = exports.deleteRow = exports.mergeCells = exports.splitCellWithType = exports.splitCell = exports.toggleHeaderRow = exports.toggleHeaderColumn = exports.toggleHeaderCell = exports.toggleHeader = exports.goToNextCell = exports.setCellAttr = exports.selectionCell = exports.selectedRect = exports.CellSelection = exports.inSameTable = exports.deleteTable = exports.isInTable = exports.fixTablesKey = exports.fixTables = exports.tableNodes = exports.tableNodeTypes = void 0;
|
|
6
6
|
var tslib_1 = require("tslib");
|
|
7
7
|
var source_1 = require("./source");
|
|
8
8
|
Object.defineProperty(exports, "getHtml", { enumerable: true, get: function () { return source_1.getHtml; } });
|
|
@@ -162,14 +162,11 @@ Object.defineProperty(exports, "toggleHeaderRow", { enumerable: true, get: funct
|
|
|
162
162
|
Object.defineProperty(exports, "splitCell", { enumerable: true, get: function () { return prosemirror_tables_1.splitCell; } });
|
|
163
163
|
Object.defineProperty(exports, "splitCellWithType", { enumerable: true, get: function () { return prosemirror_tables_1.splitCellWithType; } });
|
|
164
164
|
Object.defineProperty(exports, "mergeCells", { enumerable: true, get: function () { return prosemirror_tables_1.mergeCells; } });
|
|
165
|
-
Object.defineProperty(exports, "deleteColumn", { enumerable: true, get: function () { return prosemirror_tables_1.deleteColumn; } });
|
|
166
165
|
Object.defineProperty(exports, "deleteRow", { enumerable: true, get: function () { return prosemirror_tables_1.deleteRow; } });
|
|
167
166
|
Object.defineProperty(exports, "rowIsHeader", { enumerable: true, get: function () { return prosemirror_tables_1.rowIsHeader; } });
|
|
168
167
|
Object.defineProperty(exports, "addRow", { enumerable: true, get: function () { return prosemirror_tables_1.addRow; } });
|
|
169
168
|
Object.defineProperty(exports, "addColSpan", { enumerable: true, get: function () { return prosemirror_tables_1.addColSpan; } });
|
|
170
169
|
Object.defineProperty(exports, "addColumn", { enumerable: true, get: function () { return prosemirror_tables_1.addColumn; } });
|
|
171
|
-
Object.defineProperty(exports, "addColumnAfter", { enumerable: true, get: function () { return prosemirror_tables_1.addColumnAfter; } });
|
|
172
|
-
Object.defineProperty(exports, "addColumnBefore", { enumerable: true, get: function () { return prosemirror_tables_1.addColumnBefore; } });
|
|
173
170
|
Object.defineProperty(exports, "colCount", { enumerable: true, get: function () { return prosemirror_tables_1.colCount; } });
|
|
174
171
|
Object.defineProperty(exports, "columnIsHeader", { enumerable: true, get: function () { return prosemirror_tables_1.columnIsHeader; } });
|
|
175
172
|
Object.defineProperty(exports, "columnResizing", { enumerable: true, get: function () { return prosemirror_tables_1.columnResizing; } });
|
|
@@ -186,5 +183,11 @@ var table_1 = require("./table");
|
|
|
186
183
|
Object.defineProperty(exports, "createTable", { enumerable: true, get: function () { return table_1.createTable; } });
|
|
187
184
|
Object.defineProperty(exports, "addRowAfter", { enumerable: true, get: function () { return table_1.addRowAfter; } });
|
|
188
185
|
Object.defineProperty(exports, "addRowBefore", { enumerable: true, get: function () { return table_1.addRowBefore; } });
|
|
186
|
+
Object.defineProperty(exports, "addColumnBefore", { enumerable: true, get: function () { return table_1.addColumnBefore; } });
|
|
187
|
+
Object.defineProperty(exports, "addColumnAfter", { enumerable: true, get: function () { return table_1.addColumnAfter; } });
|
|
188
|
+
Object.defineProperty(exports, "deleteColumn", { enumerable: true, get: function () { return table_1.deleteColumn; } });
|
|
189
|
+
Object.defineProperty(exports, "pmAddColumnBefore", { enumerable: true, get: function () { return table_1.pmAddColumnBefore; } });
|
|
190
|
+
Object.defineProperty(exports, "pmAddColumnAfter", { enumerable: true, get: function () { return table_1.pmAddColumnAfter; } });
|
|
189
191
|
Object.defineProperty(exports, "pmAddRowAfter", { enumerable: true, get: function () { return table_1.pmAddRowAfter; } });
|
|
190
192
|
Object.defineProperty(exports, "pmAddRowBefore", { enumerable: true, get: function () { return table_1.pmAddRowBefore; } });
|
|
193
|
+
Object.defineProperty(exports, "pmDeleteColumn", { enumerable: true, get: function () { return table_1.pmDeleteColumn; } });
|
|
@@ -95,11 +95,11 @@ function handleMouseMove(view, event, handleWidth) {
|
|
|
95
95
|
var indexes = utils_1.cellIndexes(target);
|
|
96
96
|
var _a = target.getBoundingClientRect(), left = _a.left, right = _a.right;
|
|
97
97
|
if (Math.abs(event.clientX - left) <= handleWidth && indexes.cellIndex > 0) {
|
|
98
|
-
indexes.cellIndex
|
|
99
|
-
cell = edgeCell(view, event, indexes);
|
|
98
|
+
indexes.cellIndex -= target.colSpan;
|
|
99
|
+
cell = utils_1.edgeCell(view, event, indexes);
|
|
100
100
|
}
|
|
101
101
|
else if (right - event.clientX > 0 && right - event.clientX <= handleWidth) {
|
|
102
|
-
cell = edgeCell(view, event, indexes);
|
|
102
|
+
cell = utils_1.edgeCell(view, event, indexes);
|
|
103
103
|
}
|
|
104
104
|
}
|
|
105
105
|
if (cell !== pluginState.activeHandle) {
|
|
@@ -191,22 +191,6 @@ function handleMouseDown(view, event, cellMinWidth) {
|
|
|
191
191
|
event.preventDefault();
|
|
192
192
|
return true;
|
|
193
193
|
}
|
|
194
|
-
function edgeCell(view, event, indexes) {
|
|
195
|
-
var found = view.posAtCoords({ left: event.clientX, top: event.clientY });
|
|
196
|
-
if (!found) {
|
|
197
|
-
return -1;
|
|
198
|
-
}
|
|
199
|
-
var $pos = view.state.doc.resolve(found.pos);
|
|
200
|
-
var parentTable = utils_1.parentNode($pos, function (n) { return n.type.spec.tableRole === 'table'; });
|
|
201
|
-
if (parentTable === null) {
|
|
202
|
-
return -1;
|
|
203
|
-
}
|
|
204
|
-
var tablePos = $pos.start(parentTable.depth);
|
|
205
|
-
var tableNode = parentTable.node;
|
|
206
|
-
var map = prosemirror_tables_1.TableMap.get(tableNode);
|
|
207
|
-
var cell = tablePos + map.map[(map.width * indexes.rowIndex) + indexes.cellIndex];
|
|
208
|
-
return cell;
|
|
209
|
-
}
|
|
210
194
|
function draggedWidth(dragging, event, cellMinWidth) {
|
|
211
195
|
var offset = event.clientX - dragging.startX;
|
|
212
196
|
return Math.max(cellMinWidth, dragging.startWidth + offset);
|
|
@@ -231,8 +215,8 @@ function updateColumnWidth(view, tr, cell, _width) {
|
|
|
231
215
|
var tableDomWidth = tableDom.style.width;
|
|
232
216
|
if (tableDom && tableDomWidth && utils_1.parseStyle(attrs.style).width !== tableDomWidth) {
|
|
233
217
|
attrs = utils_1.setNodeStyle(attrs, 'width', tableDomWidth);
|
|
234
|
-
tr.setNodeMarkup(tablePos, null, attrs);
|
|
235
218
|
}
|
|
219
|
+
tr.setNodeMarkup(tablePos, null, attrs);
|
|
236
220
|
}
|
|
237
221
|
function displayColumnWidth(view, cell, width, _cellMinWidth) {
|
|
238
222
|
var $cell = view.state.doc.resolve(cell);
|
|
@@ -258,20 +242,27 @@ function handleDecorations(state, cell) {
|
|
|
258
242
|
var decorations = [];
|
|
259
243
|
var $cell = state.doc.resolve(cell);
|
|
260
244
|
var table = $cell.node(-1), map = prosemirror_tables_1.TableMap.get(table), start = $cell.start(-1);
|
|
261
|
-
var
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
(row === 0 || map.map[index - 1] !== map.map[index - 1 - map.width])) {
|
|
269
|
-
var cellPos = map.map[index];
|
|
270
|
-
var pos = start + cellPos + table.nodeAt(cellPos).nodeSize - 1;
|
|
271
|
-
var dom = document.createElement('div');
|
|
272
|
-
dom.className = 'column-resize-handle';
|
|
273
|
-
decorations.push(prosemirror_view_1.Decoration.widget(pos, dom));
|
|
245
|
+
var cellsPositions = [];
|
|
246
|
+
var cellPos = cell - start;
|
|
247
|
+
var column = -1;
|
|
248
|
+
for (var i = 0; i < map.height; i++) {
|
|
249
|
+
cellsPositions.push(map.map.slice(i * map.width, (i * map.width) + map.width));
|
|
250
|
+
if (column === -1) {
|
|
251
|
+
column = cellsPositions[i].lastIndexOf(cellPos);
|
|
274
252
|
}
|
|
275
253
|
}
|
|
254
|
+
var cells = [];
|
|
255
|
+
cellsPositions.forEach(function (row) {
|
|
256
|
+
var c = row[column];
|
|
257
|
+
if (row[column] !== row[column + 1]) {
|
|
258
|
+
cells.push(c);
|
|
259
|
+
}
|
|
260
|
+
});
|
|
261
|
+
cells.forEach((function (cPos) {
|
|
262
|
+
var pos = start + cPos + table.nodeAt(cPos).nodeSize - 1;
|
|
263
|
+
var dom = document.createElement('div');
|
|
264
|
+
dom.className = 'column-resize-handle';
|
|
265
|
+
decorations.push(prosemirror_view_1.Decoration.widget(pos, dom));
|
|
266
|
+
}));
|
|
276
267
|
return prosemirror_view_1.DecorationSet.create(state.doc, decorations);
|
|
277
268
|
}
|
|
@@ -94,19 +94,20 @@ var ResizeState = /** @class */ (function () {
|
|
|
94
94
|
function handleMouseMove(view, event, handleWidth) {
|
|
95
95
|
var pluginState = utils_1.tableRowResizeKey.getState(view.state);
|
|
96
96
|
if (!pluginState.dragging) {
|
|
97
|
-
var target = utils_1.domCellAround(event.target),
|
|
97
|
+
var target = utils_1.domCellAround(event.target), cell = -1;
|
|
98
98
|
if (target) {
|
|
99
|
-
var
|
|
100
|
-
var
|
|
101
|
-
if (Math.abs(event.clientY -
|
|
102
|
-
|
|
99
|
+
var indexes = utils_1.cellIndexes(target);
|
|
100
|
+
var _a = target.getBoundingClientRect(), top_1 = _a.top, bottom = _a.bottom;
|
|
101
|
+
if (Math.abs(event.clientY - top_1) <= handleWidth && indexes.rowIndex > 0) {
|
|
102
|
+
indexes.rowIndex -= target.rowSpan;
|
|
103
|
+
cell = utils_1.edgeCell(view, event, indexes);
|
|
103
104
|
}
|
|
104
|
-
else if (
|
|
105
|
-
|
|
105
|
+
else if (bottom - event.clientY > 0 && bottom - event.clientY <= handleWidth) {
|
|
106
|
+
cell = utils_1.edgeCell(view, event, indexes);
|
|
106
107
|
}
|
|
107
108
|
}
|
|
108
|
-
if (
|
|
109
|
-
updateHandle(view,
|
|
109
|
+
if (cell !== pluginState.activeHandle) {
|
|
110
|
+
updateHandle(view, cell);
|
|
110
111
|
}
|
|
111
112
|
}
|
|
112
113
|
}
|
|
@@ -122,9 +123,9 @@ function handleMouseDown(view, event) {
|
|
|
122
123
|
return false;
|
|
123
124
|
}
|
|
124
125
|
var doc = view.state.doc;
|
|
125
|
-
var $
|
|
126
|
-
var row =
|
|
127
|
-
var table = $
|
|
126
|
+
var $cell = doc.resolve(pluginState.activeHandle);
|
|
127
|
+
var row = $cell.parent;
|
|
128
|
+
var table = $cell.node(-1);
|
|
128
129
|
var rowHeightStr = utils_1.parseStyle(row.attrs.style).height;
|
|
129
130
|
var tableHeight = utils_1.parseStyle(table.attrs.style).height;
|
|
130
131
|
var rowHeight = rowHeightStr ? parseFloat(rowHeightStr) : 0;
|
|
@@ -162,22 +163,6 @@ function handleMouseDown(view, event) {
|
|
|
162
163
|
event.preventDefault();
|
|
163
164
|
return true;
|
|
164
165
|
}
|
|
165
|
-
function edgeRow(view, event, rowIndex) {
|
|
166
|
-
var found = view.posAtCoords({ left: event.clientX, top: event.clientY });
|
|
167
|
-
if (!found) {
|
|
168
|
-
return -1;
|
|
169
|
-
}
|
|
170
|
-
var $pos = view.state.doc.resolve(found.pos);
|
|
171
|
-
var parentTable = utils_1.parentNode($pos, function (n) { return n.type.spec.tableRole === 'table'; });
|
|
172
|
-
if (parentTable === null) {
|
|
173
|
-
return -1;
|
|
174
|
-
}
|
|
175
|
-
var tablePos = $pos.start(parentTable.depth);
|
|
176
|
-
var tableNode = parentTable.node;
|
|
177
|
-
var map = prosemirror_tables_1.TableMap.get(tableNode);
|
|
178
|
-
var row = tablePos + map.map[(map.width * rowIndex)] - 1;
|
|
179
|
-
return row;
|
|
180
|
-
}
|
|
181
166
|
function draggedHeight(dragging, event) {
|
|
182
167
|
var offset = event.clientY - dragging.startY;
|
|
183
168
|
return dragging.startHeight.rowHeight + offset;
|
|
@@ -188,9 +173,11 @@ function updateHandle(view, value) {
|
|
|
188
173
|
tr.setMeta(utils_1.tableRowResizeKey, { setHandle: value });
|
|
189
174
|
view.dispatch(tr);
|
|
190
175
|
}
|
|
191
|
-
function updateRowHeight(view, tr,
|
|
176
|
+
function updateRowHeight(view, tr, cellPos) {
|
|
192
177
|
var doc = view.state.doc;
|
|
193
|
-
var
|
|
178
|
+
var $cell = doc.resolve(cellPos);
|
|
179
|
+
var row = $cell.parent;
|
|
180
|
+
var rowPos = $cell.posAtIndex(0) - 1;
|
|
194
181
|
var dom = view.nodeDOM(rowPos);
|
|
195
182
|
var win = (dom.ownerDocument && dom.ownerDocument.defaultView) || window;
|
|
196
183
|
dom.style.height = win.getComputedStyle(dom).height;
|
|
@@ -203,13 +190,14 @@ function updateRowHeight(view, tr, rowPos) {
|
|
|
203
190
|
tr.setNodeMarkup(tablePos, null, utils_1.setNodeStyle($pos.parent.attrs, 'height', tableHeight));
|
|
204
191
|
}
|
|
205
192
|
}
|
|
206
|
-
function displayRowHeight(view,
|
|
207
|
-
var
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
193
|
+
function displayRowHeight(view, cellPos, height, offset, tableHeight) {
|
|
194
|
+
var cell = view.nodeDOM(cellPos);
|
|
195
|
+
var row = cell && cell.parentNode;
|
|
196
|
+
if (row) {
|
|
197
|
+
row.style.height = height + 'px';
|
|
198
|
+
var win = (row.ownerDocument && row.ownerDocument.defaultView) || window;
|
|
199
|
+
row.style.height = win.getComputedStyle(row).height;
|
|
200
|
+
var table = row.closest('table');
|
|
213
201
|
var newHeight = (parseFloat(tableHeight) + offset) + 'px';
|
|
214
202
|
var current = table && table.style.height;
|
|
215
203
|
if (current && current !== newHeight) {
|
|
@@ -218,20 +206,33 @@ function displayRowHeight(view, rowPos, height, offset, tableHeight) {
|
|
|
218
206
|
}
|
|
219
207
|
}
|
|
220
208
|
}
|
|
221
|
-
function handleDecorations(state,
|
|
209
|
+
function handleDecorations(state, cell) {
|
|
222
210
|
var decorations = [];
|
|
223
|
-
if (typeof
|
|
211
|
+
if (typeof cell !== 'number') {
|
|
224
212
|
return prosemirror_view_1.DecorationSet.empty;
|
|
225
213
|
}
|
|
226
|
-
var $
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
214
|
+
var $cell = state.doc.resolve(cell), table = $cell.node(-1), map = prosemirror_tables_1.TableMap.get(table), start = $cell.start(-1);
|
|
215
|
+
var cellsPositions = [];
|
|
216
|
+
var cellPos = cell - start;
|
|
217
|
+
var rowIndex = -1;
|
|
218
|
+
for (var i = 0; i < map.height; i++) {
|
|
219
|
+
cellsPositions.push(map.map.slice(i * map.width, (i * map.width) + map.width));
|
|
220
|
+
if (cellsPositions[i].indexOf(cellPos) !== -1) {
|
|
221
|
+
rowIndex = i;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
var cells = [];
|
|
225
|
+
cellsPositions[rowIndex].forEach(function (c, i) {
|
|
226
|
+
if (!cellsPositions[rowIndex + 1] || c !== cellsPositions[rowIndex + 1][i]) {
|
|
227
|
+
cells.push(c);
|
|
228
|
+
}
|
|
229
|
+
});
|
|
230
|
+
cells.forEach(function (cPos) {
|
|
231
|
+
var cellNode = table.nodeAt(cPos);
|
|
232
|
+
var widgetPos = start + cPos + (cellNode ? cellNode.nodeSize : 0) - 1;
|
|
232
233
|
var dom = document.createElement('div');
|
|
233
234
|
dom.className = 'row-resize-handle';
|
|
234
235
|
decorations.push(prosemirror_view_1.Decoration.widget(widgetPos, dom));
|
|
235
|
-
}
|
|
236
|
+
});
|
|
236
237
|
return prosemirror_view_1.DecorationSet.create(state.doc, decorations);
|
|
237
238
|
}
|