@atlaskit/editor-tables 2.2.4 → 2.2.6
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/CHANGELOG.md +12 -0
- package/dist/cjs/cell-bookmark.js +0 -10
- package/dist/cjs/cell-selection.js +37 -102
- package/dist/cjs/index.js +0 -4
- package/dist/cjs/pm-plugins/input.js +17 -83
- package/dist/cjs/pm-plugins/plugin-key.js +0 -2
- package/dist/cjs/pm-plugins/table-editing.js +17 -18
- package/dist/cjs/pm-plugins.js +0 -2
- package/dist/cjs/table-map.js +67 -138
- package/dist/cjs/utils/add-column-at.js +0 -9
- package/dist/cjs/utils/add-column.js +8 -24
- package/dist/cjs/utils/add-row-at.js +8 -37
- package/dist/cjs/utils/add-row.js +2 -23
- package/dist/cjs/utils/analytics-helpers.js +4 -15
- package/dist/cjs/utils/cells.js +0 -12
- package/dist/cjs/utils/clone-tr.js +0 -2
- package/dist/cjs/utils/colspan.js +2 -18
- package/dist/cjs/utils/copy-paste.js +51 -139
- package/dist/cjs/utils/create-table.js +14 -28
- package/dist/cjs/utils/draw-cell-selection.js +0 -4
- package/dist/cjs/utils/empty-cells.js +0 -6
- package/dist/cjs/utils/find.js +6 -18
- package/dist/cjs/utils/fix-tables.js +13 -56
- package/dist/cjs/utils/for-each-cell.js +3 -17
- package/dist/cjs/utils/get-cell-selection-ranges.js +2 -9
- package/dist/cjs/utils/get-cells-in-column.js +0 -7
- package/dist/cjs/utils/get-cells-in-row.js +0 -7
- package/dist/cjs/utils/get-cells-in-table.js +0 -8
- package/dist/cjs/utils/get-selection-range-in-column.js +6 -27
- package/dist/cjs/utils/get-selection-range-in-row.js +6 -27
- package/dist/cjs/utils/get-selection-rect.js +0 -7
- package/dist/cjs/utils/go-to-next-cell.js +3 -22
- package/dist/cjs/utils/handle-paste.js +5 -34
- package/dist/cjs/utils/is-selected.js +6 -23
- package/dist/cjs/utils/is-selection-type.js +0 -2
- package/dist/cjs/utils/move-column.js +0 -12
- package/dist/cjs/utils/move-row.js +0 -11
- package/dist/cjs/utils/normalize-selection.js +3 -27
- package/dist/cjs/utils/remove-column.js +10 -46
- package/dist/cjs/utils/remove-row.js +8 -49
- package/dist/cjs/utils/remove-table.js +0 -6
- package/dist/cjs/utils/reorder-utils.js +13 -37
- package/dist/cjs/utils/replace-table.js +0 -8
- package/dist/cjs/utils/select-nodes.js +11 -31
- package/dist/cjs/utils/selection-cell.js +0 -5
- package/dist/cjs/utils/selection-rect.js +0 -10
- package/dist/cjs/utils/set-cell-attrs.js +0 -4
- package/dist/cjs/utils/split-cell-with-type.js +2 -35
- package/dist/cjs/utils/split-cell.js +0 -4
- package/dist/cjs/utils/table-node-types.js +4 -8
- package/dist/cjs/utils/tables.js +0 -4
- package/dist/cjs/utils/test-utils.js +9 -26
- package/dist/cjs/utils/toggle-header.js +3 -16
- package/dist/cjs/utils/uuid.js +0 -3
- package/dist/cjs/utils.js +0 -42
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/cell-bookmark.js +0 -5
- package/dist/es2019/cell-selection.js +37 -81
- package/dist/es2019/index.js +1 -0
- package/dist/es2019/pm-plugins/input.js +15 -67
- package/dist/es2019/pm-plugins/table-editing.js +3 -12
- package/dist/es2019/table-map.js +57 -127
- package/dist/es2019/utils/add-column-at.js +2 -4
- package/dist/es2019/utils/add-column.js +6 -16
- package/dist/es2019/utils/add-row-at.js +8 -22
- package/dist/es2019/utils/add-row.js +2 -17
- package/dist/es2019/utils/analytics-helpers.js +0 -5
- package/dist/es2019/utils/cells.js +4 -9
- package/dist/es2019/utils/colspan.js +6 -11
- package/dist/es2019/utils/copy-paste.js +41 -115
- package/dist/es2019/utils/create-table.js +3 -12
- package/dist/es2019/utils/draw-cell-selection.js +0 -1
- package/dist/es2019/utils/empty-cells.js +2 -3
- package/dist/es2019/utils/find.js +8 -8
- package/dist/es2019/utils/fix-tables.js +17 -47
- package/dist/es2019/utils/for-each-cell.js +6 -11
- package/dist/es2019/utils/get-cell-selection-ranges.js +2 -4
- package/dist/es2019/utils/get-cells-in-column.js +2 -3
- package/dist/es2019/utils/get-cells-in-row.js +2 -3
- package/dist/es2019/utils/get-cells-in-table.js +2 -4
- package/dist/es2019/utils/get-selection-range-in-column.js +8 -22
- package/dist/es2019/utils/get-selection-range-in-row.js +8 -22
- package/dist/es2019/utils/get-selection-rect.js +2 -2
- package/dist/es2019/utils/go-to-next-cell.js +3 -19
- package/dist/es2019/utils/handle-paste.js +3 -14
- package/dist/es2019/utils/is-selected.js +8 -10
- package/dist/es2019/utils/is-selection-type.js +0 -1
- package/dist/es2019/utils/move-column.js +3 -8
- package/dist/es2019/utils/move-row.js +3 -7
- package/dist/es2019/utils/normalize-selection.js +0 -16
- package/dist/es2019/utils/remove-column.js +10 -27
- package/dist/es2019/utils/remove-row.js +12 -32
- package/dist/es2019/utils/remove-table.js +2 -4
- package/dist/es2019/utils/reorder-utils.js +11 -26
- package/dist/es2019/utils/replace-table.js +0 -2
- package/dist/es2019/utils/select-nodes.js +9 -20
- package/dist/es2019/utils/selection-cell.js +0 -2
- package/dist/es2019/utils/selection-rect.js +0 -4
- package/dist/es2019/utils/set-cell-attrs.js +2 -2
- package/dist/es2019/utils/split-cell-with-type.js +8 -28
- package/dist/es2019/utils/split-cell.js +3 -2
- package/dist/es2019/utils/table-node-types.js +4 -7
- package/dist/es2019/utils/tables.js +0 -2
- package/dist/es2019/utils/test-utils.js +12 -16
- package/dist/es2019/utils/toggle-header.js +3 -10
- package/dist/es2019/utils/uuid.js +0 -2
- package/dist/es2019/version.json +1 -1
- package/dist/esm/cell-bookmark.js +0 -5
- package/dist/esm/cell-selection.js +37 -79
- package/dist/esm/index.js +1 -0
- package/dist/esm/pm-plugins/input.js +17 -71
- package/dist/esm/pm-plugins/table-editing.js +8 -13
- package/dist/esm/table-map.js +68 -133
- package/dist/esm/utils/add-column-at.js +2 -4
- package/dist/esm/utils/add-column.js +8 -20
- package/dist/esm/utils/add-row-at.js +8 -23
- package/dist/esm/utils/add-row.js +2 -21
- package/dist/esm/utils/analytics-helpers.js +4 -10
- package/dist/esm/utils/cells.js +0 -5
- package/dist/esm/utils/colspan.js +2 -14
- package/dist/esm/utils/copy-paste.js +44 -125
- package/dist/esm/utils/create-table.js +14 -25
- package/dist/esm/utils/draw-cell-selection.js +0 -1
- package/dist/esm/utils/empty-cells.js +2 -3
- package/dist/esm/utils/find.js +8 -8
- package/dist/esm/utils/fix-tables.js +13 -49
- package/dist/esm/utils/for-each-cell.js +6 -11
- package/dist/esm/utils/get-cell-selection-ranges.js +2 -4
- package/dist/esm/utils/get-cells-in-column.js +2 -3
- package/dist/esm/utils/get-cells-in-row.js +2 -3
- package/dist/esm/utils/get-cells-in-table.js +2 -4
- package/dist/esm/utils/get-selection-range-in-column.js +8 -24
- package/dist/esm/utils/get-selection-range-in-row.js +8 -24
- package/dist/esm/utils/get-selection-rect.js +2 -2
- package/dist/esm/utils/go-to-next-cell.js +3 -19
- package/dist/esm/utils/handle-paste.js +5 -23
- package/dist/esm/utils/is-selected.js +8 -10
- package/dist/esm/utils/is-selection-type.js +0 -1
- package/dist/esm/utils/move-column.js +3 -8
- package/dist/esm/utils/move-row.js +3 -7
- package/dist/esm/utils/normalize-selection.js +3 -22
- package/dist/esm/utils/remove-column.js +10 -31
- package/dist/esm/utils/remove-row.js +8 -35
- package/dist/esm/utils/remove-table.js +2 -4
- package/dist/esm/utils/reorder-utils.js +11 -26
- package/dist/esm/utils/replace-table.js +0 -2
- package/dist/esm/utils/select-nodes.js +11 -22
- package/dist/esm/utils/selection-cell.js +0 -2
- package/dist/esm/utils/selection-rect.js +0 -4
- package/dist/esm/utils/set-cell-attrs.js +2 -2
- package/dist/esm/utils/split-cell-with-type.js +2 -28
- package/dist/esm/utils/split-cell.js +3 -2
- package/dist/esm/utils/table-node-types.js +4 -7
- package/dist/esm/utils/tables.js +0 -2
- package/dist/esm/utils/test-utils.js +12 -16
- package/dist/esm/utils/toggle-header.js +3 -10
- package/dist/esm/version.json +1 -1
- package/package.json +6 -4
|
@@ -1,71 +1,52 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.removeSelectedColumns = exports.removeColumnClosestToPos = exports.removeColumnAt = void 0;
|
|
9
|
-
|
|
10
8
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
|
-
|
|
12
9
|
var _prosemirrorUtils = require("prosemirror-utils");
|
|
13
|
-
|
|
14
10
|
var _tableMap = require("../table-map");
|
|
15
|
-
|
|
16
11
|
var _cloneTr = require("./clone-tr");
|
|
17
|
-
|
|
18
12
|
var _colspan = require("./colspan");
|
|
19
|
-
|
|
20
13
|
var _find = require("./find");
|
|
21
|
-
|
|
22
14
|
var _isSelected = require("./is-selected");
|
|
23
|
-
|
|
24
15
|
var _isSelectionType = require("./is-selection-type");
|
|
25
|
-
|
|
26
16
|
var _removeTable = require("./remove-table");
|
|
27
|
-
|
|
28
17
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
29
|
-
|
|
30
18
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
31
|
-
|
|
32
19
|
function removeColumn(tr, _ref, columnIndex) {
|
|
33
20
|
var map = _ref.map,
|
|
34
|
-
|
|
35
|
-
|
|
21
|
+
table = _ref.table,
|
|
22
|
+
tableStart = _ref.tableStart;
|
|
36
23
|
var mapStart = tr.mapping.maps.length;
|
|
37
|
-
|
|
38
24
|
for (var row = 0; row < map.height;) {
|
|
39
25
|
var index = row * map.width + columnIndex;
|
|
40
26
|
var pos = map.map[index];
|
|
41
27
|
var cell = table.nodeAt(pos);
|
|
42
|
-
|
|
43
28
|
if (!cell) {
|
|
44
29
|
continue;
|
|
45
|
-
}
|
|
46
|
-
|
|
30
|
+
}
|
|
47
31
|
|
|
32
|
+
// If this is part of a col-spanning cell
|
|
48
33
|
if (columnIndex > 0 && map.map[index - 1] === pos || columnIndex < map.width - 1 && map.map[index + 1] === pos) {
|
|
49
34
|
tr.setNodeMarkup(tr.mapping.slice(mapStart).map(tableStart + pos), undefined, (0, _colspan.removeColSpan)(cell.attrs, columnIndex - map.colCount(pos)));
|
|
50
35
|
} else {
|
|
51
36
|
var start = tr.mapping.slice(mapStart).map(tableStart + pos);
|
|
52
37
|
tr.delete(start, start + cell.nodeSize);
|
|
53
38
|
}
|
|
54
|
-
|
|
55
39
|
row += cell.attrs.rowspan;
|
|
56
40
|
}
|
|
57
|
-
|
|
58
41
|
return tr;
|
|
59
|
-
}
|
|
60
|
-
|
|
42
|
+
}
|
|
61
43
|
|
|
44
|
+
// Returns a new transaction that removes a column at index `columnIndex`. If there is only one column left, it will remove the entire table.
|
|
62
45
|
var removeColumnAt = function removeColumnAt(columnIndex) {
|
|
63
46
|
return function (tr) {
|
|
64
47
|
var table = (0, _find.findTable)(tr.selection);
|
|
65
|
-
|
|
66
48
|
if (table) {
|
|
67
49
|
var map = _tableMap.TableMap.get(table.node);
|
|
68
|
-
|
|
69
50
|
if (columnIndex === 0 && map.width === 1) {
|
|
70
51
|
return (0, _removeTable.removeTable)(tr);
|
|
71
52
|
} else if (columnIndex >= 0 && columnIndex <= map.width) {
|
|
@@ -77,70 +58,53 @@ var removeColumnAt = function removeColumnAt(columnIndex) {
|
|
|
77
58
|
return (0, _cloneTr.cloneTr)(tr);
|
|
78
59
|
}
|
|
79
60
|
}
|
|
80
|
-
|
|
81
61
|
return tr;
|
|
82
62
|
};
|
|
83
|
-
};
|
|
84
|
-
|
|
63
|
+
};
|
|
85
64
|
|
|
65
|
+
// Returns a new transaction that removes selected columns.
|
|
86
66
|
exports.removeColumnAt = removeColumnAt;
|
|
87
|
-
|
|
88
67
|
var removeSelectedColumns = function removeSelectedColumns(tr) {
|
|
89
68
|
var selection = tr.selection;
|
|
90
|
-
|
|
91
69
|
if ((0, _isSelected.isTableSelected)(selection)) {
|
|
92
70
|
return (0, _removeTable.removeTable)(tr);
|
|
93
71
|
}
|
|
94
|
-
|
|
95
72
|
if ((0, _isSelectionType.isSelectionType)(selection, 'cell')) {
|
|
96
73
|
var table = (0, _find.findTable)(selection);
|
|
97
|
-
|
|
98
74
|
if (table) {
|
|
99
75
|
var map = _tableMap.TableMap.get(table.node);
|
|
100
|
-
|
|
101
76
|
var rect = map.rectBetween(selection.$anchorCell.pos - table.start, selection.$headCell.pos - table.start);
|
|
102
|
-
|
|
103
77
|
if (rect.left === 0 && rect.right === map.width) {
|
|
104
78
|
return tr;
|
|
105
79
|
}
|
|
106
|
-
|
|
107
80
|
var pmTableRect = _objectSpread(_objectSpread({}, rect), {}, {
|
|
108
81
|
map: map,
|
|
109
82
|
table: table.node,
|
|
110
83
|
tableStart: table.start
|
|
111
84
|
});
|
|
112
|
-
|
|
113
85
|
for (var i = pmTableRect.right - 1;; i--) {
|
|
114
86
|
removeColumn(tr, pmTableRect, i);
|
|
115
|
-
|
|
116
87
|
if (i === pmTableRect.left) {
|
|
117
88
|
break;
|
|
118
89
|
}
|
|
119
|
-
|
|
120
90
|
pmTableRect.table = pmTableRect.tableStart ? tr.doc.nodeAt(pmTableRect.tableStart - 1) : tr.doc;
|
|
121
91
|
pmTableRect.map = _tableMap.TableMap.get(pmTableRect.table);
|
|
122
92
|
}
|
|
123
|
-
|
|
124
93
|
return (0, _cloneTr.cloneTr)(tr);
|
|
125
94
|
}
|
|
126
95
|
}
|
|
127
|
-
|
|
128
96
|
return tr;
|
|
129
|
-
};
|
|
130
|
-
|
|
97
|
+
};
|
|
131
98
|
|
|
99
|
+
// Returns a new transaction that removes a column closest to a given `$pos`.
|
|
132
100
|
exports.removeSelectedColumns = removeSelectedColumns;
|
|
133
|
-
|
|
134
101
|
var removeColumnClosestToPos = function removeColumnClosestToPos($pos) {
|
|
135
102
|
return function (tr) {
|
|
136
103
|
var rect = (0, _find.findCellRectClosestToPos)($pos);
|
|
137
|
-
|
|
138
104
|
if (rect) {
|
|
139
105
|
return removeColumnAt(rect.left)((0, _prosemirrorUtils.setTextSelection)($pos.pos)(tr));
|
|
140
106
|
}
|
|
141
|
-
|
|
142
107
|
return tr;
|
|
143
108
|
};
|
|
144
109
|
};
|
|
145
|
-
|
|
146
110
|
exports.removeColumnClosestToPos = removeColumnClosestToPos;
|
|
@@ -1,57 +1,39 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.removeSelectedRows = exports.removeRowClosestToPos = exports.removeRowAt = void 0;
|
|
9
|
-
|
|
10
8
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
|
-
|
|
12
9
|
var _prosemirrorUtils = require("prosemirror-utils");
|
|
13
|
-
|
|
14
10
|
var _tableMap = require("../table-map");
|
|
15
|
-
|
|
16
11
|
var _cloneTr = require("./clone-tr");
|
|
17
|
-
|
|
18
12
|
var _find = require("./find");
|
|
19
|
-
|
|
20
13
|
var _isSelected = require("./is-selected");
|
|
21
|
-
|
|
22
14
|
var _isSelectionType = require("./is-selection-type");
|
|
23
|
-
|
|
24
15
|
var _removeTable = require("./remove-table");
|
|
25
|
-
|
|
26
16
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
27
|
-
|
|
28
17
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
29
|
-
|
|
30
18
|
function removeRow(tr, _ref, rowIndex) {
|
|
31
19
|
var map = _ref.map,
|
|
32
|
-
|
|
33
|
-
|
|
20
|
+
table = _ref.table,
|
|
21
|
+
tableStart = _ref.tableStart;
|
|
34
22
|
var rowPos = 0;
|
|
35
|
-
|
|
36
23
|
for (var i = 0; i < rowIndex; i++) {
|
|
37
24
|
rowPos += table.child(i).nodeSize;
|
|
38
25
|
}
|
|
39
|
-
|
|
40
26
|
var nextRow = rowPos + table.child(rowIndex).nodeSize;
|
|
41
27
|
var mapFrom = tr.mapping.maps.length;
|
|
42
28
|
tr.delete(rowPos + tableStart, nextRow + tableStart);
|
|
43
|
-
|
|
44
29
|
for (var col = 0, index = rowIndex * map.width; col < map.width; col++, index++) {
|
|
45
30
|
var pos = map.map[index];
|
|
46
|
-
|
|
47
31
|
if (rowIndex > 0 && pos === map.map[index - map.width]) {
|
|
48
32
|
// If this cell starts in the row above, simply reduce its rowspan
|
|
49
33
|
var cell = table.nodeAt(pos);
|
|
50
|
-
|
|
51
34
|
if (!cell) {
|
|
52
35
|
continue;
|
|
53
36
|
}
|
|
54
|
-
|
|
55
37
|
var attrs = cell.attrs;
|
|
56
38
|
tr.setNodeMarkup(tr.mapping.slice(mapFrom).map(pos + tableStart), undefined, _objectSpread(_objectSpread({}, attrs), {}, {
|
|
57
39
|
rowspan: attrs.rowspan - 1
|
|
@@ -60,32 +42,26 @@ function removeRow(tr, _ref, rowIndex) {
|
|
|
60
42
|
} else if (rowIndex < map.width && pos === map.map[index + map.width]) {
|
|
61
43
|
// Else, if it continues in the row below, it has to be moved down
|
|
62
44
|
var _cell = table.nodeAt(pos);
|
|
63
|
-
|
|
64
45
|
if (!_cell) {
|
|
65
46
|
continue;
|
|
66
47
|
}
|
|
67
|
-
|
|
68
48
|
var copy = _cell.type.create(_objectSpread(_objectSpread({}, _cell.attrs), {}, {
|
|
69
49
|
rowspan: _cell.attrs.rowspan - 1
|
|
70
50
|
}), _cell.content);
|
|
71
|
-
|
|
72
51
|
var newPos = map.positionAt(rowIndex + 1, col, table);
|
|
73
52
|
tr.insert(tr.mapping.slice(mapFrom).map(tableStart + newPos), copy);
|
|
74
53
|
col += _cell.attrs.colspan - 1;
|
|
75
54
|
}
|
|
76
55
|
}
|
|
77
|
-
|
|
78
56
|
return tr;
|
|
79
|
-
}
|
|
80
|
-
|
|
57
|
+
}
|
|
81
58
|
|
|
59
|
+
// Returns a new transaction that removes a row at index `rowIndex`. If there is only one row left, it will remove the entire table.
|
|
82
60
|
var removeRowAt = function removeRowAt(rowIndex) {
|
|
83
61
|
return function (tr) {
|
|
84
62
|
var table = (0, _find.findTable)(tr.selection);
|
|
85
|
-
|
|
86
63
|
if (table) {
|
|
87
64
|
var map = _tableMap.TableMap.get(table.node);
|
|
88
|
-
|
|
89
65
|
if (rowIndex === 0 && map.height === 1) {
|
|
90
66
|
return (0, _removeTable.removeTable)(tr);
|
|
91
67
|
} else if (rowIndex >= 0 && rowIndex <= map.height) {
|
|
@@ -97,70 +73,53 @@ var removeRowAt = function removeRowAt(rowIndex) {
|
|
|
97
73
|
return (0, _cloneTr.cloneTr)(tr);
|
|
98
74
|
}
|
|
99
75
|
}
|
|
100
|
-
|
|
101
76
|
return tr;
|
|
102
77
|
};
|
|
103
|
-
};
|
|
104
|
-
|
|
78
|
+
};
|
|
105
79
|
|
|
80
|
+
// Returns a new transaction that removes selected rows.
|
|
106
81
|
exports.removeRowAt = removeRowAt;
|
|
107
|
-
|
|
108
82
|
var removeSelectedRows = function removeSelectedRows(tr) {
|
|
109
83
|
var selection = tr.selection;
|
|
110
|
-
|
|
111
84
|
if ((0, _isSelected.isTableSelected)(selection)) {
|
|
112
85
|
return (0, _removeTable.removeTable)(tr);
|
|
113
86
|
}
|
|
114
|
-
|
|
115
87
|
if ((0, _isSelectionType.isSelectionType)(selection, 'cell')) {
|
|
116
88
|
var table = (0, _find.findTable)(selection);
|
|
117
|
-
|
|
118
89
|
if (table) {
|
|
119
90
|
var map = _tableMap.TableMap.get(table.node);
|
|
120
|
-
|
|
121
91
|
var rect = map.rectBetween(selection.$anchorCell.pos - table.start, selection.$headCell.pos - table.start);
|
|
122
|
-
|
|
123
92
|
if (rect.top === 0 && rect.bottom === map.height) {
|
|
124
93
|
return tr;
|
|
125
94
|
}
|
|
126
|
-
|
|
127
95
|
var pmTableRect = _objectSpread(_objectSpread({}, rect), {}, {
|
|
128
96
|
map: map,
|
|
129
97
|
table: table.node,
|
|
130
98
|
tableStart: table.start
|
|
131
99
|
});
|
|
132
|
-
|
|
133
100
|
for (var i = pmTableRect.bottom - 1;; i--) {
|
|
134
101
|
removeRow(tr, pmTableRect, i);
|
|
135
|
-
|
|
136
102
|
if (i === pmTableRect.top) {
|
|
137
103
|
break;
|
|
138
104
|
}
|
|
139
|
-
|
|
140
105
|
pmTableRect.table = pmTableRect.tableStart ? tr.doc.nodeAt(pmTableRect.tableStart - 1) : tr.doc;
|
|
141
106
|
pmTableRect.map = _tableMap.TableMap.get(pmTableRect.table);
|
|
142
107
|
}
|
|
143
|
-
|
|
144
108
|
return (0, _cloneTr.cloneTr)(tr);
|
|
145
109
|
}
|
|
146
110
|
}
|
|
147
|
-
|
|
148
111
|
return tr;
|
|
149
|
-
};
|
|
150
|
-
|
|
112
|
+
};
|
|
151
113
|
|
|
114
|
+
// Returns a new transaction that removes a row closest to a given `$pos`.
|
|
152
115
|
exports.removeSelectedRows = removeSelectedRows;
|
|
153
|
-
|
|
154
116
|
var removeRowClosestToPos = function removeRowClosestToPos($pos) {
|
|
155
117
|
return function (tr) {
|
|
156
118
|
var rect = (0, _find.findCellRectClosestToPos)($pos);
|
|
157
|
-
|
|
158
119
|
if (rect) {
|
|
159
120
|
return removeRowAt(rect.top)((0, _prosemirrorUtils.setTextSelection)($pos.pos)(tr));
|
|
160
121
|
}
|
|
161
|
-
|
|
162
122
|
return tr;
|
|
163
123
|
};
|
|
164
124
|
};
|
|
165
|
-
|
|
166
125
|
exports.removeRowClosestToPos = removeRowClosestToPos;
|
|
@@ -4,22 +4,16 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.removeTable = void 0;
|
|
7
|
-
|
|
8
7
|
var _cloneTr = require("./clone-tr");
|
|
9
|
-
|
|
10
8
|
// Returns a new transaction that removes a table node if the cursor is inside of it.
|
|
11
9
|
var removeTable = function removeTable(tr) {
|
|
12
10
|
var $from = tr.selection.$from;
|
|
13
|
-
|
|
14
11
|
for (var depth = $from.depth; depth > 0; depth--) {
|
|
15
12
|
var node = $from.node(depth);
|
|
16
|
-
|
|
17
13
|
if (node.type.spec.tableRole === 'table') {
|
|
18
14
|
return (0, _cloneTr.cloneTr)(tr.delete($from.before(depth), $from.after(depth)));
|
|
19
15
|
}
|
|
20
16
|
}
|
|
21
|
-
|
|
22
17
|
return tr;
|
|
23
18
|
};
|
|
24
|
-
|
|
25
19
|
exports.removeTable = removeTable;
|
|
@@ -4,8 +4,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.transpose = exports.moveTableRow = exports.moveTableColumn = exports.isValidReorder = exports.convertTableNodeToArrayOfRows = exports.convertArrayOfRowsToTableNode = void 0;
|
|
7
|
-
|
|
8
7
|
var _tableMap = require("../table-map");
|
|
8
|
+
// array = [
|
|
9
|
+
// [A1, B1, C1, null],
|
|
10
|
+
// [A2, B2, null, D1],
|
|
11
|
+
// [A3. B3, C2, null],
|
|
12
|
+
// ]
|
|
9
13
|
|
|
10
14
|
// This function transposes an array of array flipping the columns for rows,
|
|
11
15
|
// transposition is a familiar algebra concept;
|
|
@@ -35,7 +39,9 @@ var transpose = function transpose(array) {
|
|
|
35
39
|
return column[i];
|
|
36
40
|
});
|
|
37
41
|
});
|
|
38
|
-
};
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
// :: (tableNode: Node, tableArray: Array<Node>) -> Node
|
|
39
45
|
// This function will transform a matrix of nodes
|
|
40
46
|
// into table node respecting merged cells and rows configurations,
|
|
41
47
|
// for example this array will be convert to the table below:
|
|
@@ -61,63 +67,51 @@ var transpose = function transpose(array) {
|
|
|
61
67
|
// |______|______|______|______|
|
|
62
68
|
// ```
|
|
63
69
|
//
|
|
64
|
-
|
|
65
|
-
|
|
66
70
|
exports.transpose = transpose;
|
|
67
|
-
|
|
68
71
|
var convertArrayOfRowsToTableNode = function convertArrayOfRowsToTableNode(tableNode, arrayOfNodes) {
|
|
69
72
|
var rowsPM = [];
|
|
70
|
-
|
|
71
73
|
var map = _tableMap.TableMap.get(tableNode);
|
|
72
|
-
|
|
73
74
|
for (var rowIndex = 0; rowIndex < map.height; rowIndex++) {
|
|
74
75
|
var row = tableNode.child(rowIndex);
|
|
75
76
|
var rowCells = [];
|
|
76
|
-
|
|
77
77
|
for (var colIndex = 0; colIndex < map.width; colIndex++) {
|
|
78
78
|
if (!arrayOfNodes[rowIndex][colIndex]) {
|
|
79
79
|
continue;
|
|
80
80
|
}
|
|
81
|
-
|
|
82
81
|
var cellPos = map.map[rowIndex * map.width + colIndex];
|
|
83
82
|
var cell = arrayOfNodes[rowIndex][colIndex];
|
|
84
83
|
var oldCell = tableNode.nodeAt(cellPos);
|
|
85
|
-
|
|
86
84
|
if (!cell || !oldCell) {
|
|
87
85
|
continue;
|
|
88
86
|
}
|
|
89
|
-
|
|
90
87
|
var newCell = oldCell.type.createChecked(Object.assign({}, cell.attrs), cell.content, cell.marks);
|
|
91
88
|
rowCells.push(newCell);
|
|
92
89
|
}
|
|
93
|
-
|
|
94
90
|
rowsPM.push(row.type.createChecked(row.attrs, rowCells, row.marks));
|
|
95
91
|
}
|
|
96
|
-
|
|
97
92
|
var newTable = tableNode.type.createChecked(tableNode.attrs, rowsPM, tableNode.marks);
|
|
98
93
|
return newTable;
|
|
99
94
|
};
|
|
100
|
-
|
|
101
95
|
exports.convertArrayOfRowsToTableNode = convertArrayOfRowsToTableNode;
|
|
102
|
-
|
|
103
96
|
var moveRowInArrayOfRows = function moveRowInArrayOfRows(arrayOfNodes, indexesOrigin, indexesTarget, directionOverride) {
|
|
104
97
|
var direction = indexesOrigin[0] > indexesTarget[0] ? -1 : 1;
|
|
105
98
|
var rowsExtracted = arrayOfNodes.splice(indexesOrigin[0], indexesOrigin.length);
|
|
106
99
|
var positionOffset = rowsExtracted.length % 2 === 0 ? 1 : 0;
|
|
107
100
|
var target;
|
|
108
|
-
|
|
109
101
|
if (directionOverride === -1 && direction === 1) {
|
|
110
102
|
target = indexesTarget[0] - 1;
|
|
111
103
|
} else if (directionOverride === 1 && direction === -1) {
|
|
112
104
|
target = indexesTarget[indexesTarget.length - 1] - positionOffset + 1;
|
|
113
105
|
} else {
|
|
114
106
|
target = direction === -1 ? indexesTarget[0] : indexesTarget[indexesTarget.length - 1] - positionOffset;
|
|
115
|
-
}
|
|
116
|
-
|
|
107
|
+
}
|
|
117
108
|
|
|
109
|
+
// @ts-ignore no idea what this line does
|
|
118
110
|
arrayOfNodes.splice.apply(arrayOfNodes, [target, 0].concat(rowsExtracted));
|
|
119
111
|
return arrayOfNodes;
|
|
120
|
-
};
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
// :: (tableNode: Node) -> Array<Node>
|
|
121
115
|
// This function will transform the table node
|
|
122
116
|
// into a matrix of rows and columns respecting merged cells,
|
|
123
117
|
// for example this table will be convert to the below:
|
|
@@ -143,60 +137,44 @@ var moveRowInArrayOfRows = function moveRowInArrayOfRows(arrayOfNodes, indexesOr
|
|
|
143
137
|
// [A3. B3, C2, null],
|
|
144
138
|
// ]
|
|
145
139
|
// ```
|
|
146
|
-
|
|
147
|
-
|
|
148
140
|
var convertTableNodeToArrayOfRows = function convertTableNodeToArrayOfRows(tableNode) {
|
|
149
141
|
var map = _tableMap.TableMap.get(tableNode);
|
|
150
|
-
|
|
151
142
|
var rows = [];
|
|
152
|
-
|
|
153
143
|
for (var rowIndex = 0; rowIndex < map.height; rowIndex++) {
|
|
154
144
|
var rowCells = [];
|
|
155
145
|
var seen = {};
|
|
156
|
-
|
|
157
146
|
for (var colIndex = 0; colIndex < map.width; colIndex++) {
|
|
158
147
|
var cellPos = map.map[rowIndex * map.width + colIndex];
|
|
159
148
|
var cell = tableNode.nodeAt(cellPos);
|
|
160
149
|
var rect = map.findCell(cellPos);
|
|
161
|
-
|
|
162
150
|
if (!cell || seen[cellPos] || rect.top !== rowIndex) {
|
|
163
151
|
rowCells.push(null);
|
|
164
152
|
continue;
|
|
165
153
|
}
|
|
166
|
-
|
|
167
154
|
seen[cellPos] = true;
|
|
168
155
|
rowCells.push(cell);
|
|
169
156
|
}
|
|
170
|
-
|
|
171
157
|
rows.push(rowCells);
|
|
172
158
|
}
|
|
173
|
-
|
|
174
159
|
return rows;
|
|
175
160
|
};
|
|
176
|
-
|
|
177
161
|
exports.convertTableNodeToArrayOfRows = convertTableNodeToArrayOfRows;
|
|
178
|
-
|
|
179
162
|
var moveTableRow = function moveTableRow(table, indexesOrigin, indexesTarget, direction) {
|
|
180
163
|
var rows = convertTableNodeToArrayOfRows(table.node);
|
|
181
164
|
rows = moveRowInArrayOfRows(rows, indexesOrigin, indexesTarget, direction);
|
|
182
165
|
return convertArrayOfRowsToTableNode(table.node, rows);
|
|
183
166
|
};
|
|
184
|
-
|
|
185
167
|
exports.moveTableRow = moveTableRow;
|
|
186
|
-
|
|
187
168
|
var moveTableColumn = function moveTableColumn(table, indexesOrigin, indexesTarget, direction) {
|
|
188
169
|
var rows = transpose(convertTableNodeToArrayOfRows(table.node));
|
|
189
170
|
rows = moveRowInArrayOfRows(rows, indexesOrigin, indexesTarget, direction);
|
|
190
171
|
rows = transpose(rows);
|
|
191
172
|
return convertArrayOfRowsToTableNode(table.node, rows);
|
|
192
173
|
};
|
|
193
|
-
|
|
194
174
|
exports.moveTableColumn = moveTableColumn;
|
|
195
|
-
|
|
196
175
|
var isValidReorder = function isValidReorder(originIndex, targetIndex, targets, type) {
|
|
197
176
|
var direction = originIndex > targetIndex ? -1 : 1;
|
|
198
177
|
var errorMessage = "Target position is invalid, you can't move the ".concat(type, " ").concat(originIndex, " to ").concat(targetIndex, ", the target can't be split. You could use tryToFit option.");
|
|
199
|
-
|
|
200
178
|
if (direction === 1) {
|
|
201
179
|
if (targets.slice(0, targets.length - 1).indexOf(targetIndex) !== -1) {
|
|
202
180
|
throw new Error(errorMessage);
|
|
@@ -206,8 +184,6 @@ var isValidReorder = function isValidReorder(originIndex, targetIndex, targets,
|
|
|
206
184
|
throw new Error(errorMessage);
|
|
207
185
|
}
|
|
208
186
|
}
|
|
209
|
-
|
|
210
187
|
return true;
|
|
211
188
|
};
|
|
212
|
-
|
|
213
189
|
exports.isValidReorder = isValidReorder;
|
|
@@ -4,19 +4,13 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.replaceSelectedTable = void 0;
|
|
7
|
-
|
|
8
7
|
var _prosemirrorModel = require("prosemirror-model");
|
|
9
|
-
|
|
10
8
|
var _prosemirrorState = require("prosemirror-state");
|
|
11
|
-
|
|
12
9
|
var _find = require("./find");
|
|
13
|
-
|
|
14
10
|
var _isSelected = require("./is-selected");
|
|
15
|
-
|
|
16
11
|
var replaceSelectedTable = function replaceSelectedTable(state, content) {
|
|
17
12
|
if ((0, _isSelected.isTableSelected)(state.selection)) {
|
|
18
13
|
var table = (0, _find.findTable)(state.selection);
|
|
19
|
-
|
|
20
14
|
if (table) {
|
|
21
15
|
var slice = typeof content === 'string' ? new _prosemirrorModel.Slice(_prosemirrorModel.Fragment.from(state.schema.text(content)), 0, 0) : content;
|
|
22
16
|
var tr = state.tr.replace(table.pos, table.pos + table.node.nodeSize, slice);
|
|
@@ -24,8 +18,6 @@ var replaceSelectedTable = function replaceSelectedTable(state, content) {
|
|
|
24
18
|
return tr;
|
|
25
19
|
}
|
|
26
20
|
}
|
|
27
|
-
|
|
28
21
|
return state.tr;
|
|
29
22
|
};
|
|
30
|
-
|
|
31
23
|
exports.replaceSelectedTable = replaceSelectedTable;
|
|
@@ -4,40 +4,30 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.selectTableClosestToPos = exports.selectTable = exports.selectRow = exports.selectColumn = void 0;
|
|
7
|
-
|
|
8
7
|
var _cellSelection = require("../cell-selection");
|
|
9
|
-
|
|
10
8
|
var _tableMap = require("../table-map");
|
|
11
|
-
|
|
12
9
|
var _cloneTr = require("./clone-tr");
|
|
13
|
-
|
|
14
10
|
var _find = require("./find");
|
|
15
|
-
|
|
16
11
|
var select = function select(type) {
|
|
17
12
|
return function (index, expand) {
|
|
18
13
|
return function (tr) {
|
|
19
14
|
var table = (0, _find.findTable)(tr.selection);
|
|
20
15
|
var isRowSelection = type === 'row';
|
|
21
|
-
|
|
22
16
|
if (table) {
|
|
23
|
-
var map = _tableMap.TableMap.get(table.node);
|
|
24
|
-
|
|
17
|
+
var map = _tableMap.TableMap.get(table.node);
|
|
25
18
|
|
|
19
|
+
// Check if the index is valid
|
|
26
20
|
if (index >= 0 && index < (isRowSelection ? map.height : map.width)) {
|
|
27
21
|
var left = isRowSelection ? 0 : index;
|
|
28
22
|
var top = isRowSelection ? index : 0;
|
|
29
23
|
var right = isRowSelection ? map.width : index + 1;
|
|
30
24
|
var bottom = isRowSelection ? index + 1 : map.height;
|
|
31
|
-
|
|
32
25
|
if (expand) {
|
|
33
26
|
var cell = (0, _find.findCellClosestToPos)(tr.selection.$from);
|
|
34
|
-
|
|
35
27
|
if (!cell) {
|
|
36
28
|
return tr;
|
|
37
29
|
}
|
|
38
|
-
|
|
39
30
|
var selRect = map.findCell(cell.pos - table.start);
|
|
40
|
-
|
|
41
31
|
if (isRowSelection) {
|
|
42
32
|
top = Math.min(top, selRect.top);
|
|
43
33
|
bottom = Math.max(bottom, selRect.bottom);
|
|
@@ -46,7 +36,6 @@ var select = function select(type) {
|
|
|
46
36
|
right = Math.max(right, selRect.right);
|
|
47
37
|
}
|
|
48
38
|
}
|
|
49
|
-
|
|
50
39
|
var cellsInFirstRow = map.cellsInRect({
|
|
51
40
|
left: left,
|
|
52
41
|
top: top,
|
|
@@ -66,29 +55,27 @@ var select = function select(type) {
|
|
|
66
55
|
return (0, _cloneTr.cloneTr)(tr.setSelection(new _cellSelection.CellSelection($anchor, $head)));
|
|
67
56
|
}
|
|
68
57
|
}
|
|
69
|
-
|
|
70
58
|
return tr;
|
|
71
59
|
};
|
|
72
60
|
};
|
|
73
|
-
};
|
|
74
|
-
// Use the optional `expand` param to extend from current selection.
|
|
75
|
-
|
|
61
|
+
};
|
|
76
62
|
|
|
77
|
-
|
|
63
|
+
// Returns a new transaction that selects a column at index `columnIndex`.
|
|
78
64
|
// Use the optional `expand` param to extend from current selection.
|
|
65
|
+
var selectColumn = select('column');
|
|
79
66
|
|
|
67
|
+
// Returns a new transaction that selects a row at index `rowIndex`.
|
|
68
|
+
// Use the optional `expand` param to extend from current selection.
|
|
80
69
|
exports.selectColumn = selectColumn;
|
|
81
|
-
var selectRow = select('row');
|
|
70
|
+
var selectRow = select('row');
|
|
82
71
|
|
|
72
|
+
// Returns a new transaction that selects a table.
|
|
83
73
|
exports.selectRow = selectRow;
|
|
84
|
-
|
|
85
74
|
var selectTable = function selectTable(tr) {
|
|
86
75
|
var table = (0, _find.findTable)(tr.selection);
|
|
87
|
-
|
|
88
76
|
if (table) {
|
|
89
77
|
var _TableMap$get = _tableMap.TableMap.get(table.node),
|
|
90
|
-
|
|
91
|
-
|
|
78
|
+
map = _TableMap$get.map;
|
|
92
79
|
if (map && map.length) {
|
|
93
80
|
var head = table.start + map[0];
|
|
94
81
|
var anchor = table.start + map[map.length - 1];
|
|
@@ -97,19 +84,14 @@ var selectTable = function selectTable(tr) {
|
|
|
97
84
|
return (0, _cloneTr.cloneTr)(tr.setSelection(new _cellSelection.CellSelection($anchor, $head)));
|
|
98
85
|
}
|
|
99
86
|
}
|
|
100
|
-
|
|
101
87
|
return tr;
|
|
102
88
|
};
|
|
103
|
-
|
|
104
89
|
exports.selectTable = selectTable;
|
|
105
|
-
|
|
106
90
|
var selectTableClosestToPos = function selectTableClosestToPos(tr, $pos) {
|
|
107
91
|
var table = (0, _find.findTableClosestToPos)($pos);
|
|
108
|
-
|
|
109
92
|
if (table) {
|
|
110
93
|
var _TableMap$get2 = _tableMap.TableMap.get(table.node),
|
|
111
|
-
|
|
112
|
-
|
|
94
|
+
map = _TableMap$get2.map;
|
|
113
95
|
if (map && map.length) {
|
|
114
96
|
var head = table.start + map[0];
|
|
115
97
|
var anchor = table.start + map[map.length - 1];
|
|
@@ -118,8 +100,6 @@ var selectTableClosestToPos = function selectTableClosestToPos(tr, $pos) {
|
|
|
118
100
|
return (0, _cloneTr.cloneTr)(tr.setSelection(new _cellSelection.CellSelection($anchor, $head)));
|
|
119
101
|
}
|
|
120
102
|
}
|
|
121
|
-
|
|
122
103
|
return tr;
|
|
123
104
|
};
|
|
124
|
-
|
|
125
105
|
exports.selectTableClosestToPos = selectTableClosestToPos;
|
|
@@ -4,19 +4,14 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.selectionCell = selectionCell;
|
|
7
|
-
|
|
8
7
|
var _cells = require("./cells");
|
|
9
|
-
|
|
10
8
|
var _isSelectionType = require("./is-selection-type");
|
|
11
|
-
|
|
12
9
|
function selectionCell(selection) {
|
|
13
10
|
if ((0, _isSelectionType.isSelectionType)(selection, 'cell')) {
|
|
14
11
|
return selection.$anchorCell.pos > selection.$headCell.pos ? selection.$anchorCell : selection.$headCell;
|
|
15
12
|
}
|
|
16
|
-
|
|
17
13
|
if ((0, _isSelectionType.isSelectionType)(selection, 'node') && selection.node.type.spec.tableRole === 'cell') {
|
|
18
14
|
return selection.$anchor;
|
|
19
15
|
}
|
|
20
|
-
|
|
21
16
|
return (0, _cells.cellAround)(selection.$head) || (0, _cells.cellNear)(selection.$head);
|
|
22
17
|
}
|