@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.
Files changed (158) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/cjs/cell-bookmark.js +0 -10
  3. package/dist/cjs/cell-selection.js +37 -102
  4. package/dist/cjs/index.js +0 -4
  5. package/dist/cjs/pm-plugins/input.js +17 -83
  6. package/dist/cjs/pm-plugins/plugin-key.js +0 -2
  7. package/dist/cjs/pm-plugins/table-editing.js +17 -18
  8. package/dist/cjs/pm-plugins.js +0 -2
  9. package/dist/cjs/table-map.js +67 -138
  10. package/dist/cjs/utils/add-column-at.js +0 -9
  11. package/dist/cjs/utils/add-column.js +8 -24
  12. package/dist/cjs/utils/add-row-at.js +8 -37
  13. package/dist/cjs/utils/add-row.js +2 -23
  14. package/dist/cjs/utils/analytics-helpers.js +4 -15
  15. package/dist/cjs/utils/cells.js +0 -12
  16. package/dist/cjs/utils/clone-tr.js +0 -2
  17. package/dist/cjs/utils/colspan.js +2 -18
  18. package/dist/cjs/utils/copy-paste.js +51 -139
  19. package/dist/cjs/utils/create-table.js +14 -28
  20. package/dist/cjs/utils/draw-cell-selection.js +0 -4
  21. package/dist/cjs/utils/empty-cells.js +0 -6
  22. package/dist/cjs/utils/find.js +6 -18
  23. package/dist/cjs/utils/fix-tables.js +13 -56
  24. package/dist/cjs/utils/for-each-cell.js +3 -17
  25. package/dist/cjs/utils/get-cell-selection-ranges.js +2 -9
  26. package/dist/cjs/utils/get-cells-in-column.js +0 -7
  27. package/dist/cjs/utils/get-cells-in-row.js +0 -7
  28. package/dist/cjs/utils/get-cells-in-table.js +0 -8
  29. package/dist/cjs/utils/get-selection-range-in-column.js +6 -27
  30. package/dist/cjs/utils/get-selection-range-in-row.js +6 -27
  31. package/dist/cjs/utils/get-selection-rect.js +0 -7
  32. package/dist/cjs/utils/go-to-next-cell.js +3 -22
  33. package/dist/cjs/utils/handle-paste.js +5 -34
  34. package/dist/cjs/utils/is-selected.js +6 -23
  35. package/dist/cjs/utils/is-selection-type.js +0 -2
  36. package/dist/cjs/utils/move-column.js +0 -12
  37. package/dist/cjs/utils/move-row.js +0 -11
  38. package/dist/cjs/utils/normalize-selection.js +3 -27
  39. package/dist/cjs/utils/remove-column.js +10 -46
  40. package/dist/cjs/utils/remove-row.js +8 -49
  41. package/dist/cjs/utils/remove-table.js +0 -6
  42. package/dist/cjs/utils/reorder-utils.js +13 -37
  43. package/dist/cjs/utils/replace-table.js +0 -8
  44. package/dist/cjs/utils/select-nodes.js +11 -31
  45. package/dist/cjs/utils/selection-cell.js +0 -5
  46. package/dist/cjs/utils/selection-rect.js +0 -10
  47. package/dist/cjs/utils/set-cell-attrs.js +0 -4
  48. package/dist/cjs/utils/split-cell-with-type.js +2 -35
  49. package/dist/cjs/utils/split-cell.js +0 -4
  50. package/dist/cjs/utils/table-node-types.js +4 -8
  51. package/dist/cjs/utils/tables.js +0 -4
  52. package/dist/cjs/utils/test-utils.js +9 -26
  53. package/dist/cjs/utils/toggle-header.js +3 -16
  54. package/dist/cjs/utils/uuid.js +0 -3
  55. package/dist/cjs/utils.js +0 -42
  56. package/dist/cjs/version.json +1 -1
  57. package/dist/es2019/cell-bookmark.js +0 -5
  58. package/dist/es2019/cell-selection.js +37 -81
  59. package/dist/es2019/index.js +1 -0
  60. package/dist/es2019/pm-plugins/input.js +15 -67
  61. package/dist/es2019/pm-plugins/table-editing.js +3 -12
  62. package/dist/es2019/table-map.js +57 -127
  63. package/dist/es2019/utils/add-column-at.js +2 -4
  64. package/dist/es2019/utils/add-column.js +6 -16
  65. package/dist/es2019/utils/add-row-at.js +8 -22
  66. package/dist/es2019/utils/add-row.js +2 -17
  67. package/dist/es2019/utils/analytics-helpers.js +0 -5
  68. package/dist/es2019/utils/cells.js +4 -9
  69. package/dist/es2019/utils/colspan.js +6 -11
  70. package/dist/es2019/utils/copy-paste.js +41 -115
  71. package/dist/es2019/utils/create-table.js +3 -12
  72. package/dist/es2019/utils/draw-cell-selection.js +0 -1
  73. package/dist/es2019/utils/empty-cells.js +2 -3
  74. package/dist/es2019/utils/find.js +8 -8
  75. package/dist/es2019/utils/fix-tables.js +17 -47
  76. package/dist/es2019/utils/for-each-cell.js +6 -11
  77. package/dist/es2019/utils/get-cell-selection-ranges.js +2 -4
  78. package/dist/es2019/utils/get-cells-in-column.js +2 -3
  79. package/dist/es2019/utils/get-cells-in-row.js +2 -3
  80. package/dist/es2019/utils/get-cells-in-table.js +2 -4
  81. package/dist/es2019/utils/get-selection-range-in-column.js +8 -22
  82. package/dist/es2019/utils/get-selection-range-in-row.js +8 -22
  83. package/dist/es2019/utils/get-selection-rect.js +2 -2
  84. package/dist/es2019/utils/go-to-next-cell.js +3 -19
  85. package/dist/es2019/utils/handle-paste.js +3 -14
  86. package/dist/es2019/utils/is-selected.js +8 -10
  87. package/dist/es2019/utils/is-selection-type.js +0 -1
  88. package/dist/es2019/utils/move-column.js +3 -8
  89. package/dist/es2019/utils/move-row.js +3 -7
  90. package/dist/es2019/utils/normalize-selection.js +0 -16
  91. package/dist/es2019/utils/remove-column.js +10 -27
  92. package/dist/es2019/utils/remove-row.js +12 -32
  93. package/dist/es2019/utils/remove-table.js +2 -4
  94. package/dist/es2019/utils/reorder-utils.js +11 -26
  95. package/dist/es2019/utils/replace-table.js +0 -2
  96. package/dist/es2019/utils/select-nodes.js +9 -20
  97. package/dist/es2019/utils/selection-cell.js +0 -2
  98. package/dist/es2019/utils/selection-rect.js +0 -4
  99. package/dist/es2019/utils/set-cell-attrs.js +2 -2
  100. package/dist/es2019/utils/split-cell-with-type.js +8 -28
  101. package/dist/es2019/utils/split-cell.js +3 -2
  102. package/dist/es2019/utils/table-node-types.js +4 -7
  103. package/dist/es2019/utils/tables.js +0 -2
  104. package/dist/es2019/utils/test-utils.js +12 -16
  105. package/dist/es2019/utils/toggle-header.js +3 -10
  106. package/dist/es2019/utils/uuid.js +0 -2
  107. package/dist/es2019/version.json +1 -1
  108. package/dist/esm/cell-bookmark.js +0 -5
  109. package/dist/esm/cell-selection.js +37 -79
  110. package/dist/esm/index.js +1 -0
  111. package/dist/esm/pm-plugins/input.js +17 -71
  112. package/dist/esm/pm-plugins/table-editing.js +8 -13
  113. package/dist/esm/table-map.js +68 -133
  114. package/dist/esm/utils/add-column-at.js +2 -4
  115. package/dist/esm/utils/add-column.js +8 -20
  116. package/dist/esm/utils/add-row-at.js +8 -23
  117. package/dist/esm/utils/add-row.js +2 -21
  118. package/dist/esm/utils/analytics-helpers.js +4 -10
  119. package/dist/esm/utils/cells.js +0 -5
  120. package/dist/esm/utils/colspan.js +2 -14
  121. package/dist/esm/utils/copy-paste.js +44 -125
  122. package/dist/esm/utils/create-table.js +14 -25
  123. package/dist/esm/utils/draw-cell-selection.js +0 -1
  124. package/dist/esm/utils/empty-cells.js +2 -3
  125. package/dist/esm/utils/find.js +8 -8
  126. package/dist/esm/utils/fix-tables.js +13 -49
  127. package/dist/esm/utils/for-each-cell.js +6 -11
  128. package/dist/esm/utils/get-cell-selection-ranges.js +2 -4
  129. package/dist/esm/utils/get-cells-in-column.js +2 -3
  130. package/dist/esm/utils/get-cells-in-row.js +2 -3
  131. package/dist/esm/utils/get-cells-in-table.js +2 -4
  132. package/dist/esm/utils/get-selection-range-in-column.js +8 -24
  133. package/dist/esm/utils/get-selection-range-in-row.js +8 -24
  134. package/dist/esm/utils/get-selection-rect.js +2 -2
  135. package/dist/esm/utils/go-to-next-cell.js +3 -19
  136. package/dist/esm/utils/handle-paste.js +5 -23
  137. package/dist/esm/utils/is-selected.js +8 -10
  138. package/dist/esm/utils/is-selection-type.js +0 -1
  139. package/dist/esm/utils/move-column.js +3 -8
  140. package/dist/esm/utils/move-row.js +3 -7
  141. package/dist/esm/utils/normalize-selection.js +3 -22
  142. package/dist/esm/utils/remove-column.js +10 -31
  143. package/dist/esm/utils/remove-row.js +8 -35
  144. package/dist/esm/utils/remove-table.js +2 -4
  145. package/dist/esm/utils/reorder-utils.js +11 -26
  146. package/dist/esm/utils/replace-table.js +0 -2
  147. package/dist/esm/utils/select-nodes.js +11 -22
  148. package/dist/esm/utils/selection-cell.js +0 -2
  149. package/dist/esm/utils/selection-rect.js +0 -4
  150. package/dist/esm/utils/set-cell-attrs.js +2 -2
  151. package/dist/esm/utils/split-cell-with-type.js +2 -28
  152. package/dist/esm/utils/split-cell.js +3 -2
  153. package/dist/esm/utils/table-node-types.js +4 -7
  154. package/dist/esm/utils/tables.js +0 -2
  155. package/dist/esm/utils/test-utils.js +12 -16
  156. package/dist/esm/utils/toggle-header.js +3 -10
  157. package/dist/esm/version.json +1 -1
  158. 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
- table = _ref.table,
35
- tableStart = _ref.tableStart;
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
- } // If this is part of a col-spanning cell
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
- } // Returns a new transaction that removes a column at index `columnIndex`. If there is only one column left, it will remove the entire table.
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
- }; // Returns a new transaction that removes selected columns.
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
- }; // Returns a new transaction that removes a column closest to a given `$pos`.
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
- table = _ref.table,
33
- tableStart = _ref.tableStart;
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
- } // Returns a new transaction that removes a row at index `rowIndex`. If there is only one row left, it will remove the entire table.
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
- }; // Returns a new transaction that removes selected rows.
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
- }; // Returns a new transaction that removes a row closest to a given `$pos`.
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
- }; // :: (tableNode: Node, tableArray: Array<Node>) -> Node
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
- } // @ts-ignore no idea what this line does
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
- }; // :: (tableNode: Node) -> Array<Node>
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); // Check if the index is valid
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
- }; // Returns a new transaction that selects a column at index `columnIndex`.
74
- // Use the optional `expand` param to extend from current selection.
75
-
61
+ };
76
62
 
77
- var selectColumn = select('column'); // Returns a new transaction that selects a row at index `rowIndex`.
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'); // Returns a new transaction that selects a table.
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
- map = _TableMap$get.map;
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
- map = _TableMap$get2.map;
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
  }