@atlaskit/editor-tables 3.1.14 → 3.2.0

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 (647) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/cell-bookmark/package.json +4 -4
  3. package/cell-selection/package.json +4 -4
  4. package/dist/cjs/add-to-cache.js +10 -0
  5. package/dist/cjs/cell-bookmark.js +2 -2
  6. package/dist/cjs/cell-selection.js +6 -6
  7. package/dist/cjs/compute-map.js +133 -0
  8. package/dist/cjs/find-bad-col-widths.js +51 -0
  9. package/dist/cjs/find-width.js +41 -0
  10. package/dist/cjs/index.js +4 -3
  11. package/dist/cjs/pm-plugins/handle-mouse-down.js +154 -0
  12. package/dist/cjs/pm-plugins/handle-triple-click.js +20 -0
  13. package/dist/cjs/pm-plugins/input.js +3 -156
  14. package/dist/cjs/pm-plugins/table-editing.js +4 -2
  15. package/dist/cjs/read-from-cache.js +10 -0
  16. package/dist/cjs/rect.js +18 -0
  17. package/dist/cjs/table-map-cache.js +49 -0
  18. package/dist/cjs/table-map.js +42 -253
  19. package/dist/cjs/utils/add-col-span.js +26 -0
  20. package/dist/cjs/utils/add-column-after.js +21 -0
  21. package/dist/cjs/utils/add-column-at.js +2 -2
  22. package/dist/cjs/utils/add-column-before.js +21 -0
  23. package/dist/cjs/utils/add-column.js +13 -15
  24. package/dist/cjs/utils/add-row-after.js +21 -0
  25. package/dist/cjs/utils/add-row-at.js +5 -83
  26. package/dist/cjs/utils/add-row-before.js +21 -0
  27. package/dist/cjs/utils/analytics-helpers.js +12 -45
  28. package/dist/cjs/utils/array-of-rows.js +5 -0
  29. package/dist/cjs/utils/assert-colspan.js +14 -0
  30. package/dist/cjs/utils/cell-around.js +14 -0
  31. package/dist/cjs/utils/cell-near.js +21 -0
  32. package/dist/cjs/utils/cell-wrapping.js +16 -0
  33. package/dist/cjs/utils/cells.js +25 -36
  34. package/dist/cjs/utils/changed-descendants.js +33 -0
  35. package/dist/cjs/utils/clip-cells.js +80 -0
  36. package/dist/cjs/utils/clone-column.js +4 -4
  37. package/dist/cjs/utils/clone-row-at.js +86 -0
  38. package/dist/cjs/utils/clone-row.js +4 -4
  39. package/dist/cjs/utils/colspan.js +18 -47
  40. package/dist/cjs/utils/column-is-header.js +17 -0
  41. package/dist/cjs/utils/convert-array-of-rows-to-table-node.js +57 -0
  42. package/dist/cjs/utils/convert-table-node-to-array-of-rows.js +54 -0
  43. package/dist/cjs/utils/find-cell-closest-to-pos.js +18 -0
  44. package/dist/cjs/utils/find-cell-rect-closest-to-pos.js +21 -0
  45. package/dist/cjs/utils/find-table-closest-to-pos.js +14 -0
  46. package/dist/cjs/utils/find-table.js +13 -0
  47. package/dist/cjs/utils/find.js +27 -41
  48. package/dist/cjs/utils/fit-slice.js +27 -0
  49. package/dist/cjs/utils/fix-table.js +112 -0
  50. package/dist/cjs/utils/fix-tables.js +4 -138
  51. package/dist/cjs/utils/for-each-cell-in-column.js +27 -0
  52. package/dist/cjs/utils/for-each-cell-in-row.js +25 -0
  53. package/dist/cjs/utils/for-each-cell.js +14 -41
  54. package/dist/cjs/utils/get-cell-type-callback.js +5 -0
  55. package/dist/cjs/utils/get-cells-in-column.js +2 -2
  56. package/dist/cjs/utils/get-cells-in-row.js +2 -2
  57. package/dist/cjs/utils/get-cells-in-table.js +2 -2
  58. package/dist/cjs/utils/get-selected-cell-info.js +33 -0
  59. package/dist/cjs/utils/get-selected-table-info.js +25 -0
  60. package/dist/cjs/utils/get-table-selection-closes-to-pos.js +23 -0
  61. package/dist/cjs/utils/go-to-next-cell.js +2 -2
  62. package/dist/cjs/utils/handle-paste.js +11 -8
  63. package/dist/cjs/utils/in-same-table.js +9 -0
  64. package/dist/cjs/utils/{copy-paste.js → insert-cells.js} +13 -194
  65. package/dist/cjs/utils/is-column-selected.js +24 -0
  66. package/dist/cjs/utils/is-header-enabled-by-type.js +22 -0
  67. package/dist/cjs/utils/is-in-table.js +15 -0
  68. package/dist/cjs/utils/is-rect-selected.js +26 -0
  69. package/dist/cjs/utils/is-row-selected.js +24 -0
  70. package/dist/cjs/utils/is-selected.js +27 -66
  71. package/dist/cjs/utils/is-table-selected.js +22 -0
  72. package/dist/cjs/utils/is-valid-reorder.js +20 -0
  73. package/dist/cjs/utils/move-column.js +4 -4
  74. package/dist/cjs/utils/move-row-in-array-of-rows.js +23 -0
  75. package/dist/cjs/utils/move-row.js +4 -4
  76. package/dist/cjs/utils/move-table-column.js +16 -0
  77. package/dist/cjs/utils/move-table-row.js +14 -0
  78. package/dist/cjs/utils/next-cell.js +13 -0
  79. package/dist/cjs/utils/pasted-cells.js +129 -0
  80. package/dist/cjs/utils/points-at-cell.js +9 -0
  81. package/dist/cjs/utils/remove-col-span.js +29 -0
  82. package/dist/cjs/utils/remove-column-at.js +31 -0
  83. package/dist/cjs/utils/remove-column-closest-to-pos.js +19 -0
  84. package/dist/cjs/utils/remove-column.js +31 -80
  85. package/dist/cjs/utils/remove-row-at.js +31 -0
  86. package/dist/cjs/utils/remove-row-closest-to-pos.js +19 -0
  87. package/dist/cjs/utils/remove-row.js +26 -75
  88. package/dist/cjs/utils/remove-selected-columns.js +49 -0
  89. package/dist/cjs/utils/remove-selected-rows.js +49 -0
  90. package/dist/cjs/utils/reorder-utils.js +45 -178
  91. package/dist/cjs/utils/replace-table.js +4 -4
  92. package/dist/cjs/utils/select-nodes.js +43 -60
  93. package/dist/cjs/utils/select-table-closest-to-pos.js +36 -0
  94. package/dist/cjs/utils/select-table.js +26 -0
  95. package/dist/cjs/utils/selection-cell.js +3 -2
  96. package/dist/cjs/utils/split-cell-with-type.js +11 -15
  97. package/dist/cjs/utils/tables.js +13 -13
  98. package/dist/cjs/utils/toggle-header.js +7 -24
  99. package/dist/cjs/utils/transpose.js +39 -0
  100. package/dist/cjs/utils.js +66 -43
  101. package/dist/es2019/add-to-cache.js +4 -0
  102. package/dist/es2019/cell-bookmark.js +1 -1
  103. package/dist/es2019/cell-selection.js +3 -3
  104. package/dist/es2019/compute-map.js +128 -0
  105. package/dist/es2019/find-bad-col-widths.js +46 -0
  106. package/dist/es2019/find-width.js +35 -0
  107. package/dist/es2019/index.js +3 -2
  108. package/dist/es2019/pm-plugins/handle-mouse-down.js +148 -0
  109. package/dist/es2019/pm-plugins/handle-triple-click.js +16 -0
  110. package/dist/es2019/pm-plugins/input.js +2 -155
  111. package/dist/es2019/pm-plugins/table-editing.js +3 -1
  112. package/dist/es2019/pm-plugins.js +9 -1
  113. package/dist/es2019/read-from-cache.js +4 -0
  114. package/dist/es2019/rect.js +11 -0
  115. package/dist/es2019/table-map-cache.js +36 -0
  116. package/dist/es2019/table-map.js +17 -245
  117. package/dist/es2019/utils/add-col-span.js +17 -0
  118. package/dist/es2019/utils/add-column-after.js +16 -0
  119. package/dist/es2019/utils/add-column-at.js +1 -1
  120. package/dist/es2019/utils/add-column-before.js +16 -0
  121. package/dist/es2019/utils/add-column.js +6 -11
  122. package/dist/es2019/utils/add-row-after.js +16 -0
  123. package/dist/es2019/utils/add-row-at.js +2 -70
  124. package/dist/es2019/utils/add-row-before.js +16 -0
  125. package/dist/es2019/utils/analytics-helpers.js +12 -46
  126. package/dist/es2019/utils/array-of-rows.js +1 -0
  127. package/dist/es2019/utils/assert-colspan.js +8 -0
  128. package/dist/es2019/utils/cell-around.js +8 -0
  129. package/dist/es2019/utils/cell-near.js +19 -0
  130. package/dist/es2019/utils/cell-wrapping.js +10 -0
  131. package/dist/es2019/utils/cells.js +21 -38
  132. package/dist/es2019/utils/changed-descendants.js +27 -0
  133. package/dist/es2019/utils/clip-cells.js +75 -0
  134. package/dist/es2019/utils/clone-column.js +2 -2
  135. package/dist/es2019/utils/clone-row-at.js +71 -0
  136. package/dist/es2019/utils/clone-row.js +2 -2
  137. package/dist/es2019/utils/colspan.js +16 -40
  138. package/dist/es2019/utils/column-is-header.js +11 -0
  139. package/dist/es2019/utils/convert-array-of-rows-to-table-node.js +51 -0
  140. package/dist/es2019/utils/convert-table-node-to-array-of-rows.js +48 -0
  141. package/dist/es2019/utils/find-cell-closest-to-pos.js +10 -0
  142. package/dist/es2019/utils/find-cell-rect-closest-to-pos.js +16 -0
  143. package/dist/es2019/utils/find-table-closest-to-pos.js +6 -0
  144. package/dist/es2019/utils/find-table.js +3 -0
  145. package/dist/es2019/utils/find.js +21 -32
  146. package/dist/es2019/utils/fit-slice.js +21 -0
  147. package/dist/es2019/utils/fix-table.js +105 -0
  148. package/dist/es2019/utils/fix-tables.js +2 -133
  149. package/dist/es2019/utils/for-each-cell-in-column.js +20 -0
  150. package/dist/es2019/utils/for-each-cell-in-row.js +18 -0
  151. package/dist/es2019/utils/for-each-cell.js +11 -36
  152. package/dist/es2019/utils/get-cell-type-callback.js +1 -0
  153. package/dist/es2019/utils/get-cells-in-column.js +1 -1
  154. package/dist/es2019/utils/get-cells-in-row.js +1 -1
  155. package/dist/es2019/utils/get-cells-in-table.js +1 -1
  156. package/dist/es2019/utils/get-selected-cell-info.js +28 -0
  157. package/dist/es2019/utils/get-selected-table-info.js +19 -0
  158. package/dist/es2019/utils/get-table-selection-closes-to-pos.js +18 -0
  159. package/dist/es2019/utils/go-to-next-cell.js +1 -1
  160. package/dist/es2019/utils/handle-paste.js +5 -2
  161. package/dist/es2019/utils/in-same-table.js +3 -0
  162. package/dist/es2019/utils/{copy-paste.js → insert-cells.js} +2 -185
  163. package/dist/es2019/utils/is-column-selected.js +17 -0
  164. package/dist/es2019/utils/is-header-enabled-by-type.js +16 -0
  165. package/dist/es2019/utils/is-in-table.js +11 -0
  166. package/dist/es2019/utils/is-rect-selected.js +19 -0
  167. package/dist/es2019/utils/is-row-selected.js +17 -0
  168. package/dist/es2019/utils/is-selected.js +21 -60
  169. package/dist/es2019/utils/is-table-selected.js +17 -0
  170. package/dist/es2019/utils/is-valid-reorder.js +14 -0
  171. package/dist/es2019/utils/move-column.js +2 -2
  172. package/dist/es2019/utils/move-row-in-array-of-rows.js +17 -0
  173. package/dist/es2019/utils/move-row.js +2 -2
  174. package/dist/es2019/utils/move-table-column.js +10 -0
  175. package/dist/es2019/utils/move-table-row.js +8 -0
  176. package/dist/es2019/utils/next-cell.js +7 -0
  177. package/dist/es2019/utils/pasted-cells.js +127 -0
  178. package/dist/es2019/utils/points-at-cell.js +3 -0
  179. package/dist/es2019/utils/remove-col-span.js +17 -0
  180. package/dist/es2019/utils/remove-column-at.js +24 -0
  181. package/dist/es2019/utils/remove-column-closest-to-pos.js +12 -0
  182. package/dist/es2019/utils/remove-column.js +10 -74
  183. package/dist/es2019/utils/remove-row-at.js +24 -0
  184. package/dist/es2019/utils/remove-row-closest-to-pos.js +12 -0
  185. package/dist/es2019/utils/remove-row.js +8 -73
  186. package/dist/es2019/utils/remove-selected-columns.js +43 -0
  187. package/dist/es2019/utils/remove-selected-rows.js +43 -0
  188. package/dist/es2019/utils/reorder-utils.js +40 -178
  189. package/dist/es2019/utils/replace-table.js +2 -2
  190. package/dist/es2019/utils/select-nodes.js +19 -59
  191. package/dist/es2019/utils/select-table-closest-to-pos.js +31 -0
  192. package/dist/es2019/utils/select-table.js +22 -0
  193. package/dist/es2019/utils/selection-cell.js +2 -1
  194. package/dist/es2019/utils/split-cell-with-type.js +5 -11
  195. package/dist/es2019/utils/tables.js +12 -14
  196. package/dist/es2019/utils/toggle-header.js +3 -19
  197. package/dist/es2019/utils/transpose.js +31 -0
  198. package/dist/es2019/utils.js +272 -14
  199. package/dist/esm/add-to-cache.js +4 -0
  200. package/dist/esm/cell-bookmark.js +1 -1
  201. package/dist/esm/cell-selection.js +3 -3
  202. package/dist/esm/compute-map.js +127 -0
  203. package/dist/esm/find-bad-col-widths.js +46 -0
  204. package/dist/esm/find-width.js +35 -0
  205. package/dist/esm/index.js +3 -2
  206. package/dist/esm/pm-plugins/handle-mouse-down.js +148 -0
  207. package/dist/esm/pm-plugins/handle-triple-click.js +14 -0
  208. package/dist/esm/pm-plugins/input.js +2 -153
  209. package/dist/esm/pm-plugins/table-editing.js +3 -1
  210. package/dist/esm/pm-plugins.js +9 -1
  211. package/dist/esm/read-from-cache.js +4 -0
  212. package/dist/esm/rect.js +12 -0
  213. package/dist/esm/table-map-cache.js +42 -0
  214. package/dist/esm/table-map.js +19 -247
  215. package/dist/esm/utils/add-col-span.js +20 -0
  216. package/dist/esm/utils/add-column-after.js +16 -0
  217. package/dist/esm/utils/add-column-at.js +1 -1
  218. package/dist/esm/utils/add-column-before.js +16 -0
  219. package/dist/esm/utils/add-column.js +6 -11
  220. package/dist/esm/utils/add-row-after.js +16 -0
  221. package/dist/esm/utils/add-row-at.js +2 -78
  222. package/dist/esm/utils/add-row-before.js +16 -0
  223. package/dist/esm/utils/analytics-helpers.js +12 -45
  224. package/dist/esm/utils/array-of-rows.js +1 -0
  225. package/dist/esm/utils/assert-colspan.js +8 -0
  226. package/dist/esm/utils/cell-around.js +8 -0
  227. package/dist/esm/utils/cell-near.js +15 -0
  228. package/dist/esm/utils/cell-wrapping.js +10 -0
  229. package/dist/esm/utils/cells.js +21 -34
  230. package/dist/esm/utils/changed-descendants.js +27 -0
  231. package/dist/esm/utils/clip-cells.js +76 -0
  232. package/dist/esm/utils/clone-column.js +2 -2
  233. package/dist/esm/utils/clone-row-at.js +79 -0
  234. package/dist/esm/utils/clone-row.js +2 -2
  235. package/dist/esm/utils/colspan.js +16 -45
  236. package/dist/esm/utils/column-is-header.js +11 -0
  237. package/dist/esm/utils/convert-array-of-rows-to-table-node.js +51 -0
  238. package/dist/esm/utils/convert-table-node-to-array-of-rows.js +48 -0
  239. package/dist/esm/utils/find-cell-closest-to-pos.js +12 -0
  240. package/dist/esm/utils/find-cell-rect-closest-to-pos.js +16 -0
  241. package/dist/esm/utils/find-table-closest-to-pos.js +8 -0
  242. package/dist/esm/utils/find-table.js +7 -0
  243. package/dist/esm/utils/find.js +21 -40
  244. package/dist/esm/utils/fit-slice.js +21 -0
  245. package/dist/esm/utils/fix-table.js +106 -0
  246. package/dist/esm/utils/fix-tables.js +2 -134
  247. package/dist/esm/utils/for-each-cell-in-column.js +22 -0
  248. package/dist/esm/utils/for-each-cell-in-row.js +20 -0
  249. package/dist/esm/utils/for-each-cell.js +11 -40
  250. package/dist/esm/utils/get-cell-type-callback.js +1 -0
  251. package/dist/esm/utils/get-cells-in-column.js +1 -1
  252. package/dist/esm/utils/get-cells-in-row.js +1 -1
  253. package/dist/esm/utils/get-cells-in-table.js +1 -1
  254. package/dist/esm/utils/get-selected-cell-info.js +27 -0
  255. package/dist/esm/utils/get-selected-table-info.js +19 -0
  256. package/dist/esm/utils/get-table-selection-closes-to-pos.js +17 -0
  257. package/dist/esm/utils/go-to-next-cell.js +1 -1
  258. package/dist/esm/utils/handle-paste.js +5 -2
  259. package/dist/esm/utils/in-same-table.js +3 -0
  260. package/dist/esm/utils/{copy-paste.js → insert-cells.js} +9 -187
  261. package/dist/esm/utils/is-column-selected.js +19 -0
  262. package/dist/esm/utils/is-header-enabled-by-type.js +16 -0
  263. package/dist/esm/utils/is-in-table.js +9 -0
  264. package/dist/esm/utils/is-rect-selected.js +21 -0
  265. package/dist/esm/utils/is-row-selected.js +19 -0
  266. package/dist/esm/utils/is-selected.js +21 -66
  267. package/dist/esm/utils/is-table-selected.js +17 -0
  268. package/dist/esm/utils/is-valid-reorder.js +14 -0
  269. package/dist/esm/utils/move-column.js +2 -2
  270. package/dist/esm/utils/move-row-in-array-of-rows.js +17 -0
  271. package/dist/esm/utils/move-row.js +2 -2
  272. package/dist/esm/utils/move-table-column.js +10 -0
  273. package/dist/esm/utils/move-table-row.js +8 -0
  274. package/dist/esm/utils/next-cell.js +7 -0
  275. package/dist/esm/utils/pasted-cells.js +124 -0
  276. package/dist/esm/utils/points-at-cell.js +3 -0
  277. package/dist/esm/utils/remove-col-span.js +22 -0
  278. package/dist/esm/utils/remove-column-at.js +26 -0
  279. package/dist/esm/utils/remove-column-closest-to-pos.js +14 -0
  280. package/dist/esm/utils/remove-column.js +10 -78
  281. package/dist/esm/utils/remove-row-at.js +26 -0
  282. package/dist/esm/utils/remove-row-closest-to-pos.js +14 -0
  283. package/dist/esm/utils/remove-row.js +8 -74
  284. package/dist/esm/utils/remove-selected-columns.js +43 -0
  285. package/dist/esm/utils/remove-selected-rows.js +43 -0
  286. package/dist/esm/utils/reorder-utils.js +40 -180
  287. package/dist/esm/utils/replace-table.js +2 -2
  288. package/dist/esm/utils/select-nodes.js +19 -56
  289. package/dist/esm/utils/select-table-closest-to-pos.js +30 -0
  290. package/dist/esm/utils/select-table.js +21 -0
  291. package/dist/esm/utils/selection-cell.js +2 -1
  292. package/dist/esm/utils/split-cell-with-type.js +5 -11
  293. package/dist/esm/utils/tables.js +12 -12
  294. package/dist/esm/utils/toggle-header.js +3 -19
  295. package/dist/esm/utils/transpose.js +33 -0
  296. package/dist/esm/utils.js +272 -14
  297. package/dist/types/add-to-cache.d.ts +3 -0
  298. package/dist/types/compute-map.d.ts +3 -0
  299. package/dist/types/find-bad-col-widths.d.ts +3 -0
  300. package/dist/types/find-width.d.ts +2 -0
  301. package/dist/types/index.d.ts +3 -2
  302. package/dist/types/pm-plugins/handle-mouse-down.d.ts +2 -0
  303. package/dist/types/pm-plugins/handle-triple-click.d.ts +2 -0
  304. package/dist/types/pm-plugins/input.d.ts +0 -2
  305. package/dist/types/pm-plugins.d.ts +6 -0
  306. package/dist/types/read-from-cache.d.ts +3 -0
  307. package/dist/types/rect.d.ts +7 -0
  308. package/dist/types/table-map-cache.d.ts +6 -0
  309. package/dist/types/table-map.d.ts +13 -7
  310. package/dist/types/utils/add-col-span.d.ts +2 -0
  311. package/dist/types/utils/add-column-after.d.ts +2 -0
  312. package/dist/types/utils/add-column-before.d.ts +2 -0
  313. package/dist/types/utils/add-column.d.ts +2 -3
  314. package/dist/types/utils/add-row-after.d.ts +2 -0
  315. package/dist/types/utils/add-row-at.d.ts +0 -1
  316. package/dist/types/utils/add-row-before.d.ts +2 -0
  317. package/dist/types/utils/analytics-helpers.d.ts +8 -16
  318. package/dist/types/utils/array-of-rows.d.ts +2 -0
  319. package/dist/types/utils/assert-colspan.d.ts +2 -0
  320. package/dist/types/utils/cell-around.d.ts +2 -0
  321. package/dist/types/utils/cell-near.d.ts +2 -0
  322. package/dist/types/utils/cell-wrapping.d.ts +2 -0
  323. package/dist/types/utils/cells.d.ts +16 -7
  324. package/dist/types/utils/changed-descendants.d.ts +2 -0
  325. package/dist/types/utils/clip-cells.d.ts +2 -0
  326. package/dist/types/utils/clone-row-at.d.ts +2 -0
  327. package/dist/types/utils/colspan.d.ts +12 -4
  328. package/dist/types/utils/column-is-header.d.ts +3 -0
  329. package/dist/types/utils/convert-array-of-rows-to-table-node.d.ts +3 -0
  330. package/dist/types/utils/convert-table-node-to-array-of-rows.d.ts +3 -0
  331. package/dist/types/utils/find-cell-closest-to-pos.d.ts +3 -0
  332. package/dist/types/utils/find-cell-rect-closest-to-pos.d.ts +3 -0
  333. package/dist/types/utils/find-table-closest-to-pos.d.ts +3 -0
  334. package/dist/types/utils/find-table.d.ts +3 -0
  335. package/dist/types/utils/find.d.ts +16 -8
  336. package/dist/types/utils/fit-slice.d.ts +2 -0
  337. package/dist/types/utils/fix-table.d.ts +4 -0
  338. package/dist/types/utils/fix-tables.d.ts +0 -2
  339. package/dist/types/utils/for-each-cell-in-column.d.ts +3 -0
  340. package/dist/types/utils/for-each-cell-in-row.d.ts +3 -0
  341. package/dist/types/utils/for-each-cell.d.ts +8 -4
  342. package/dist/types/utils/get-cell-type-callback.d.ts +3 -0
  343. package/dist/types/utils/get-selected-cell-info.d.ts +8 -0
  344. package/dist/types/utils/get-selected-table-info.d.ts +9 -0
  345. package/dist/types/utils/get-selection-rect.d.ts +1 -1
  346. package/dist/types/utils/get-table-selection-closes-to-pos.d.ts +3 -0
  347. package/dist/types/utils/in-same-table.d.ts +2 -0
  348. package/dist/types/utils/insert-cells.d.ts +4 -0
  349. package/dist/types/utils/is-column-selected.d.ts +2 -0
  350. package/dist/types/utils/is-header-enabled-by-type.d.ts +4 -0
  351. package/dist/types/utils/is-in-table.d.ts +2 -0
  352. package/dist/types/utils/is-rect-selected.d.ts +3 -0
  353. package/dist/types/utils/is-row-selected.d.ts +2 -0
  354. package/dist/types/utils/is-selected.d.ts +16 -6
  355. package/dist/types/utils/is-table-selected.d.ts +2 -0
  356. package/dist/types/utils/is-valid-reorder.d.ts +1 -0
  357. package/dist/types/utils/move-row-in-array-of-rows.d.ts +2 -0
  358. package/dist/types/utils/move-table-column.d.ts +3 -0
  359. package/dist/types/utils/move-table-row.d.ts +3 -0
  360. package/dist/types/utils/next-cell.d.ts +3 -0
  361. package/dist/types/utils/pasted-cells.d.ts +3 -0
  362. package/dist/types/utils/points-at-cell.d.ts +2 -0
  363. package/dist/types/utils/remove-col-span.d.ts +2 -0
  364. package/dist/types/utils/remove-column-at.d.ts +2 -0
  365. package/dist/types/utils/remove-column-closest-to-pos.d.ts +3 -0
  366. package/dist/types/utils/remove-column.d.ts +5 -4
  367. package/dist/types/utils/remove-row-at.d.ts +2 -0
  368. package/dist/types/utils/remove-row-closest-to-pos.d.ts +3 -0
  369. package/dist/types/utils/remove-row.d.ts +5 -4
  370. package/dist/types/utils/remove-selected-columns.d.ts +2 -0
  371. package/dist/types/utils/remove-selected-rows.d.ts +2 -0
  372. package/dist/types/utils/reorder-utils.d.ts +32 -10
  373. package/dist/types/utils/select-nodes.d.ts +12 -5
  374. package/dist/types/utils/select-table-closest-to-pos.d.ts +3 -0
  375. package/dist/types/utils/select-table.d.ts +2 -0
  376. package/dist/types/utils/selection-rect.d.ts +2 -1
  377. package/dist/types/utils/split-cell-with-type.d.ts +3 -5
  378. package/dist/types/utils/tables.d.ts +8 -4
  379. package/dist/types/utils/toggle-header.d.ts +0 -3
  380. package/dist/types/utils/transpose.d.ts +1 -0
  381. package/dist/types/utils.d.ts +201 -13
  382. package/find-bad-col-widths/package.json +8 -0
  383. package/find-width/package.json +8 -0
  384. package/get-table-selection-closes-to-pos/package.json +8 -0
  385. package/package.json +3 -3
  386. package/pm-plugins/plugin-key/package.json +4 -4
  387. package/pm-plugins/table-editing/package.json +4 -4
  388. package/rect/package.json +8 -0
  389. package/select-table/package.json +8 -0
  390. package/select-table-closest-to-pos/package.json +8 -0
  391. package/table-map/package.json +4 -4
  392. package/types/package.json +4 -4
  393. package/utils/add-column/package.json +4 -4
  394. package/utils/add-column-at/package.json +4 -4
  395. package/utils/add-row/package.json +4 -4
  396. package/utils/add-row-at/package.json +4 -4
  397. package/utils/analytics-helpers/package.json +4 -4
  398. package/utils/cells/package.json +4 -4
  399. package/utils/clone-column/package.json +4 -4
  400. package/utils/clone-row/package.json +4 -4
  401. package/utils/clone-tr/package.json +4 -4
  402. package/utils/colspan/package.json +4 -4
  403. package/utils/create-table/package.json +4 -4
  404. package/utils/draw-cell-selection/package.json +4 -4
  405. package/utils/empty-cells/package.json +4 -4
  406. package/utils/find/package.json +4 -4
  407. package/utils/fix-tables/package.json +4 -4
  408. package/utils/for-each-cell/package.json +4 -4
  409. package/utils/get-cell-selection-ranges/package.json +4 -4
  410. package/utils/get-cells-in-column/package.json +4 -4
  411. package/utils/get-cells-in-row/package.json +4 -4
  412. package/utils/get-cells-in-table/package.json +4 -4
  413. package/utils/get-selection-range-in-column/package.json +4 -4
  414. package/utils/get-selection-range-in-row/package.json +4 -4
  415. package/utils/get-selection-rect/package.json +4 -4
  416. package/utils/go-to-next-cell/package.json +4 -4
  417. package/utils/handle-paste/package.json +4 -4
  418. package/utils/is-selected/package.json +4 -4
  419. package/utils/is-selection-type/package.json +4 -4
  420. package/utils/move-column/package.json +4 -4
  421. package/utils/move-row/package.json +4 -4
  422. package/utils/normalize-selection/package.json +4 -4
  423. package/utils/remove-column/package.json +4 -4
  424. package/utils/remove-row/package.json +4 -4
  425. package/utils/remove-table/package.json +4 -4
  426. package/utils/reorder-utils/package.json +4 -4
  427. package/utils/replace-table/package.json +4 -4
  428. package/utils/select-nodes/package.json +4 -4
  429. package/utils/selection-cell/package.json +4 -4
  430. package/utils/selection-rect/package.json +4 -4
  431. package/utils/set-cell-attrs/package.json +4 -4
  432. package/utils/split-cell/package.json +4 -4
  433. package/utils/split-cell-with-type/package.json +4 -4
  434. package/utils/table-node-types/package.json +4 -4
  435. package/utils/tables/package.json +4 -4
  436. package/utils/toggle-header/package.json +4 -4
  437. package/utils/uuid/package.json +4 -4
  438. package/afm-cc/tsconfig.json +0 -35
  439. package/dist/cjs/entry-points/cell-bookmark.js +0 -12
  440. package/dist/cjs/entry-points/cell-selection.js +0 -12
  441. package/dist/cjs/entry-points/pm-plugins-plugin-key.js +0 -12
  442. package/dist/cjs/entry-points/pm-plugins-table-editing.js +0 -12
  443. package/dist/cjs/entry-points/table-map.js +0 -30
  444. package/dist/cjs/entry-points/types.js +0 -1
  445. package/dist/cjs/entry-points/utils-add-column-at.js +0 -12
  446. package/dist/cjs/entry-points/utils-add-column.js +0 -18
  447. package/dist/cjs/entry-points/utils-add-row-at.js +0 -12
  448. package/dist/cjs/entry-points/utils-add-row.js +0 -12
  449. package/dist/cjs/entry-points/utils-analytics-helpers.js +0 -18
  450. package/dist/cjs/entry-points/utils-cells.js +0 -30
  451. package/dist/cjs/entry-points/utils-clone-column.js +0 -12
  452. package/dist/cjs/entry-points/utils-clone-row.js +0 -12
  453. package/dist/cjs/entry-points/utils-clone-tr.js +0 -12
  454. package/dist/cjs/entry-points/utils-colspan.js +0 -18
  455. package/dist/cjs/entry-points/utils-create-table.js +0 -12
  456. package/dist/cjs/entry-points/utils-draw-cell-selection.js +0 -12
  457. package/dist/cjs/entry-points/utils-empty-cells.js +0 -12
  458. package/dist/cjs/entry-points/utils-find.js +0 -30
  459. package/dist/cjs/entry-points/utils-fix-tables.js +0 -12
  460. package/dist/cjs/entry-points/utils-for-each-cell.js +0 -18
  461. package/dist/cjs/entry-points/utils-get-cell-selection-ranges.js +0 -12
  462. package/dist/cjs/entry-points/utils-get-cells-in-column.js +0 -12
  463. package/dist/cjs/entry-points/utils-get-cells-in-row.js +0 -12
  464. package/dist/cjs/entry-points/utils-get-cells-in-table.js +0 -12
  465. package/dist/cjs/entry-points/utils-get-selection-range-in-column.js +0 -12
  466. package/dist/cjs/entry-points/utils-get-selection-range-in-row.js +0 -12
  467. package/dist/cjs/entry-points/utils-get-selection-rect.js +0 -12
  468. package/dist/cjs/entry-points/utils-go-to-next-cell.js +0 -12
  469. package/dist/cjs/entry-points/utils-handle-paste.js +0 -12
  470. package/dist/cjs/entry-points/utils-is-selected.js +0 -30
  471. package/dist/cjs/entry-points/utils-is-selection-type.js +0 -12
  472. package/dist/cjs/entry-points/utils-move-column.js +0 -12
  473. package/dist/cjs/entry-points/utils-move-row.js +0 -12
  474. package/dist/cjs/entry-points/utils-normalize-selection.js +0 -12
  475. package/dist/cjs/entry-points/utils-remove-column.js +0 -24
  476. package/dist/cjs/entry-points/utils-remove-row.js +0 -24
  477. package/dist/cjs/entry-points/utils-remove-table.js +0 -12
  478. package/dist/cjs/entry-points/utils-reorder-utils.js +0 -18
  479. package/dist/cjs/entry-points/utils-replace-table.js +0 -12
  480. package/dist/cjs/entry-points/utils-select-nodes.js +0 -48
  481. package/dist/cjs/entry-points/utils-selection-cell.js +0 -12
  482. package/dist/cjs/entry-points/utils-selection-rect.js +0 -12
  483. package/dist/cjs/entry-points/utils-set-cell-attrs.js +0 -12
  484. package/dist/cjs/entry-points/utils-split-cell-with-type.js +0 -18
  485. package/dist/cjs/entry-points/utils-split-cell.js +0 -12
  486. package/dist/cjs/entry-points/utils-table-node-types.js +0 -12
  487. package/dist/cjs/entry-points/utils-tables.js +0 -18
  488. package/dist/cjs/entry-points/utils-toggle-header.js +0 -12
  489. package/dist/cjs/entry-points/utils-uuid.js +0 -12
  490. package/dist/cjs/utils/test-utils.js +0 -61
  491. package/dist/es2019/entry-points/cell-bookmark.js +0 -2
  492. package/dist/es2019/entry-points/cell-selection.js +0 -2
  493. package/dist/es2019/entry-points/pm-plugins-plugin-key.js +0 -2
  494. package/dist/es2019/entry-points/pm-plugins-table-editing.js +0 -2
  495. package/dist/es2019/entry-points/table-map.js +0 -2
  496. package/dist/es2019/entry-points/types.js +0 -0
  497. package/dist/es2019/entry-points/utils-add-column-at.js +0 -2
  498. package/dist/es2019/entry-points/utils-add-column.js +0 -2
  499. package/dist/es2019/entry-points/utils-add-row-at.js +0 -2
  500. package/dist/es2019/entry-points/utils-add-row.js +0 -2
  501. package/dist/es2019/entry-points/utils-analytics-helpers.js +0 -2
  502. package/dist/es2019/entry-points/utils-cells.js +0 -2
  503. package/dist/es2019/entry-points/utils-clone-column.js +0 -2
  504. package/dist/es2019/entry-points/utils-clone-row.js +0 -2
  505. package/dist/es2019/entry-points/utils-clone-tr.js +0 -2
  506. package/dist/es2019/entry-points/utils-colspan.js +0 -2
  507. package/dist/es2019/entry-points/utils-create-table.js +0 -2
  508. package/dist/es2019/entry-points/utils-draw-cell-selection.js +0 -2
  509. package/dist/es2019/entry-points/utils-empty-cells.js +0 -2
  510. package/dist/es2019/entry-points/utils-find.js +0 -2
  511. package/dist/es2019/entry-points/utils-fix-tables.js +0 -2
  512. package/dist/es2019/entry-points/utils-for-each-cell.js +0 -2
  513. package/dist/es2019/entry-points/utils-get-cell-selection-ranges.js +0 -2
  514. package/dist/es2019/entry-points/utils-get-cells-in-column.js +0 -2
  515. package/dist/es2019/entry-points/utils-get-cells-in-row.js +0 -2
  516. package/dist/es2019/entry-points/utils-get-cells-in-table.js +0 -2
  517. package/dist/es2019/entry-points/utils-get-selection-range-in-column.js +0 -2
  518. package/dist/es2019/entry-points/utils-get-selection-range-in-row.js +0 -2
  519. package/dist/es2019/entry-points/utils-get-selection-rect.js +0 -2
  520. package/dist/es2019/entry-points/utils-go-to-next-cell.js +0 -2
  521. package/dist/es2019/entry-points/utils-handle-paste.js +0 -2
  522. package/dist/es2019/entry-points/utils-is-selected.js +0 -2
  523. package/dist/es2019/entry-points/utils-is-selection-type.js +0 -2
  524. package/dist/es2019/entry-points/utils-move-column.js +0 -2
  525. package/dist/es2019/entry-points/utils-move-row.js +0 -2
  526. package/dist/es2019/entry-points/utils-normalize-selection.js +0 -2
  527. package/dist/es2019/entry-points/utils-remove-column.js +0 -2
  528. package/dist/es2019/entry-points/utils-remove-row.js +0 -2
  529. package/dist/es2019/entry-points/utils-remove-table.js +0 -2
  530. package/dist/es2019/entry-points/utils-reorder-utils.js +0 -2
  531. package/dist/es2019/entry-points/utils-replace-table.js +0 -2
  532. package/dist/es2019/entry-points/utils-select-nodes.js +0 -2
  533. package/dist/es2019/entry-points/utils-selection-cell.js +0 -2
  534. package/dist/es2019/entry-points/utils-selection-rect.js +0 -2
  535. package/dist/es2019/entry-points/utils-set-cell-attrs.js +0 -2
  536. package/dist/es2019/entry-points/utils-split-cell-with-type.js +0 -2
  537. package/dist/es2019/entry-points/utils-split-cell.js +0 -2
  538. package/dist/es2019/entry-points/utils-table-node-types.js +0 -2
  539. package/dist/es2019/entry-points/utils-tables.js +0 -2
  540. package/dist/es2019/entry-points/utils-toggle-header.js +0 -2
  541. package/dist/es2019/entry-points/utils-uuid.js +0 -2
  542. package/dist/es2019/utils/test-utils.js +0 -56
  543. package/dist/esm/entry-points/cell-bookmark.js +0 -2
  544. package/dist/esm/entry-points/cell-selection.js +0 -2
  545. package/dist/esm/entry-points/pm-plugins-plugin-key.js +0 -2
  546. package/dist/esm/entry-points/pm-plugins-table-editing.js +0 -2
  547. package/dist/esm/entry-points/table-map.js +0 -2
  548. package/dist/esm/entry-points/types.js +0 -0
  549. package/dist/esm/entry-points/utils-add-column-at.js +0 -2
  550. package/dist/esm/entry-points/utils-add-column.js +0 -2
  551. package/dist/esm/entry-points/utils-add-row-at.js +0 -2
  552. package/dist/esm/entry-points/utils-add-row.js +0 -2
  553. package/dist/esm/entry-points/utils-analytics-helpers.js +0 -2
  554. package/dist/esm/entry-points/utils-cells.js +0 -2
  555. package/dist/esm/entry-points/utils-clone-column.js +0 -2
  556. package/dist/esm/entry-points/utils-clone-row.js +0 -2
  557. package/dist/esm/entry-points/utils-clone-tr.js +0 -2
  558. package/dist/esm/entry-points/utils-colspan.js +0 -2
  559. package/dist/esm/entry-points/utils-create-table.js +0 -2
  560. package/dist/esm/entry-points/utils-draw-cell-selection.js +0 -2
  561. package/dist/esm/entry-points/utils-empty-cells.js +0 -2
  562. package/dist/esm/entry-points/utils-find.js +0 -2
  563. package/dist/esm/entry-points/utils-fix-tables.js +0 -2
  564. package/dist/esm/entry-points/utils-for-each-cell.js +0 -2
  565. package/dist/esm/entry-points/utils-get-cell-selection-ranges.js +0 -2
  566. package/dist/esm/entry-points/utils-get-cells-in-column.js +0 -2
  567. package/dist/esm/entry-points/utils-get-cells-in-row.js +0 -2
  568. package/dist/esm/entry-points/utils-get-cells-in-table.js +0 -2
  569. package/dist/esm/entry-points/utils-get-selection-range-in-column.js +0 -2
  570. package/dist/esm/entry-points/utils-get-selection-range-in-row.js +0 -2
  571. package/dist/esm/entry-points/utils-get-selection-rect.js +0 -2
  572. package/dist/esm/entry-points/utils-go-to-next-cell.js +0 -2
  573. package/dist/esm/entry-points/utils-handle-paste.js +0 -2
  574. package/dist/esm/entry-points/utils-is-selected.js +0 -2
  575. package/dist/esm/entry-points/utils-is-selection-type.js +0 -2
  576. package/dist/esm/entry-points/utils-move-column.js +0 -2
  577. package/dist/esm/entry-points/utils-move-row.js +0 -2
  578. package/dist/esm/entry-points/utils-normalize-selection.js +0 -2
  579. package/dist/esm/entry-points/utils-remove-column.js +0 -2
  580. package/dist/esm/entry-points/utils-remove-row.js +0 -2
  581. package/dist/esm/entry-points/utils-remove-table.js +0 -2
  582. package/dist/esm/entry-points/utils-reorder-utils.js +0 -2
  583. package/dist/esm/entry-points/utils-replace-table.js +0 -2
  584. package/dist/esm/entry-points/utils-select-nodes.js +0 -2
  585. package/dist/esm/entry-points/utils-selection-cell.js +0 -2
  586. package/dist/esm/entry-points/utils-selection-rect.js +0 -2
  587. package/dist/esm/entry-points/utils-set-cell-attrs.js +0 -2
  588. package/dist/esm/entry-points/utils-split-cell-with-type.js +0 -2
  589. package/dist/esm/entry-points/utils-split-cell.js +0 -2
  590. package/dist/esm/entry-points/utils-table-node-types.js +0 -2
  591. package/dist/esm/entry-points/utils-tables.js +0 -2
  592. package/dist/esm/entry-points/utils-toggle-header.js +0 -2
  593. package/dist/esm/entry-points/utils-uuid.js +0 -2
  594. package/dist/esm/utils/test-utils.js +0 -56
  595. package/dist/types/entry-points/cell-bookmark.d.ts +0 -1
  596. package/dist/types/entry-points/cell-selection.d.ts +0 -1
  597. package/dist/types/entry-points/pm-plugins-plugin-key.d.ts +0 -1
  598. package/dist/types/entry-points/pm-plugins-table-editing.d.ts +0 -1
  599. package/dist/types/entry-points/table-map.d.ts +0 -2
  600. package/dist/types/entry-points/types.d.ts +0 -1
  601. package/dist/types/entry-points/utils-add-column-at.d.ts +0 -1
  602. package/dist/types/entry-points/utils-add-column.d.ts +0 -1
  603. package/dist/types/entry-points/utils-add-row-at.d.ts +0 -1
  604. package/dist/types/entry-points/utils-add-row.d.ts +0 -1
  605. package/dist/types/entry-points/utils-analytics-helpers.d.ts +0 -1
  606. package/dist/types/entry-points/utils-cells.d.ts +0 -1
  607. package/dist/types/entry-points/utils-clone-column.d.ts +0 -1
  608. package/dist/types/entry-points/utils-clone-row.d.ts +0 -1
  609. package/dist/types/entry-points/utils-clone-tr.d.ts +0 -1
  610. package/dist/types/entry-points/utils-colspan.d.ts +0 -1
  611. package/dist/types/entry-points/utils-create-table.d.ts +0 -1
  612. package/dist/types/entry-points/utils-draw-cell-selection.d.ts +0 -1
  613. package/dist/types/entry-points/utils-empty-cells.d.ts +0 -1
  614. package/dist/types/entry-points/utils-find.d.ts +0 -1
  615. package/dist/types/entry-points/utils-fix-tables.d.ts +0 -1
  616. package/dist/types/entry-points/utils-for-each-cell.d.ts +0 -1
  617. package/dist/types/entry-points/utils-get-cell-selection-ranges.d.ts +0 -1
  618. package/dist/types/entry-points/utils-get-cells-in-column.d.ts +0 -1
  619. package/dist/types/entry-points/utils-get-cells-in-row.d.ts +0 -1
  620. package/dist/types/entry-points/utils-get-cells-in-table.d.ts +0 -1
  621. package/dist/types/entry-points/utils-get-selection-range-in-column.d.ts +0 -1
  622. package/dist/types/entry-points/utils-get-selection-range-in-row.d.ts +0 -1
  623. package/dist/types/entry-points/utils-get-selection-rect.d.ts +0 -1
  624. package/dist/types/entry-points/utils-go-to-next-cell.d.ts +0 -1
  625. package/dist/types/entry-points/utils-handle-paste.d.ts +0 -1
  626. package/dist/types/entry-points/utils-is-selected.d.ts +0 -1
  627. package/dist/types/entry-points/utils-is-selection-type.d.ts +0 -1
  628. package/dist/types/entry-points/utils-move-column.d.ts +0 -1
  629. package/dist/types/entry-points/utils-move-row.d.ts +0 -1
  630. package/dist/types/entry-points/utils-normalize-selection.d.ts +0 -1
  631. package/dist/types/entry-points/utils-remove-column.d.ts +0 -1
  632. package/dist/types/entry-points/utils-remove-row.d.ts +0 -1
  633. package/dist/types/entry-points/utils-remove-table.d.ts +0 -1
  634. package/dist/types/entry-points/utils-reorder-utils.d.ts +0 -1
  635. package/dist/types/entry-points/utils-replace-table.d.ts +0 -1
  636. package/dist/types/entry-points/utils-select-nodes.d.ts +0 -1
  637. package/dist/types/entry-points/utils-selection-cell.d.ts +0 -1
  638. package/dist/types/entry-points/utils-selection-rect.d.ts +0 -2
  639. package/dist/types/entry-points/utils-set-cell-attrs.d.ts +0 -1
  640. package/dist/types/entry-points/utils-split-cell-with-type.d.ts +0 -1
  641. package/dist/types/entry-points/utils-split-cell.d.ts +0 -1
  642. package/dist/types/entry-points/utils-table-node-types.d.ts +0 -1
  643. package/dist/types/entry-points/utils-tables.d.ts +0 -1
  644. package/dist/types/entry-points/utils-toggle-header.d.ts +0 -1
  645. package/dist/types/entry-points/utils-uuid.d.ts +0 -1
  646. package/dist/types/utils/copy-paste.d.ts +0 -9
  647. package/dist/types/utils/test-utils.d.ts +0 -5
@@ -1,38 +1,5 @@
1
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
- import { fixTablesKey } from '../pm-plugins/plugin-key';
5
- import { TableMap, TableProblemTypes } from '../table-map';
6
- import { removeColSpan } from './colspan';
7
- import { tableNodeTypes } from './table-node-types';
8
- // Helper for iterating through the nodes in a document that changed
9
- // compared to the given previous document. Useful for avoiding
10
- // duplicate work on each transaction.
11
- function changedDescendants(old, cur, offsetStart, f) {
12
- var offset = offsetStart;
13
- var oldSize = old.childCount;
14
- var curSize = cur.childCount;
15
- // eslint-disable-next-line no-labels
16
- outer: for (var i = 0, j = 0; i < curSize; i++) {
17
- var child = cur.child(i);
18
- for (var scan = j, e = Math.min(oldSize, i + 3); scan < e; scan++) {
19
- if (old.child(scan) === child) {
20
- j = scan + 1;
21
- offset += child.nodeSize;
22
- // eslint-disable-next-line no-continue, no-labels
23
- continue outer;
24
- }
25
- }
26
- f(child, offset);
27
- if (j < oldSize && old.child(j).sameMarkup(child)) {
28
- changedDescendants(old.child(j), child, offset + 1, f);
29
- } else {
30
- child.nodesBetween(0, child.content.size, f, offset + 1);
31
- }
32
- offset += child.nodeSize;
33
- }
34
- }
35
-
1
+ import { changedDescendants } from './changed-descendants';
2
+ import { fixTable } from './fix-table';
36
3
  // :: (EditorState, ?EditorState) → ?Transaction
37
4
  // Inspect all tables in the given state's document and return a
38
5
  // transaction that fixes them, if necessary. If `oldState` was
@@ -52,103 +19,4 @@ export function fixTables(state, oldState, reportFixedTable) {
52
19
  changedDescendants(oldState.doc, state.doc, 0, check);
53
20
  }
54
21
  return tr;
55
- }
56
-
57
- // : (EditorState, Node, number, ?Transaction) → ?Transaction
58
- // Fix the given table, if necessary. Will append to the transaction
59
- // it was given, if non-null, or create a new one if necessary.
60
- export function fixTable(state, table, tablePos, transaction, reportFixedTable) {
61
- var tr = transaction;
62
- var map = TableMap.get(table);
63
- if (!map.problems) {
64
- return tr;
65
- }
66
- if (!tr) {
67
- tr = state.tr;
68
- }
69
-
70
- // Track which rows we must add cells to, so that we can adjust that
71
- // when fixing collisions.
72
- var mustAdd = [];
73
- for (var i = 0; i < map.height; i++) {
74
- mustAdd.push(0);
75
- }
76
- for (var _i = 0; _i < map.problems.length; _i++) {
77
- var prob = map.problems[_i];
78
- if (reportFixedTable) {
79
- reportFixedTable({
80
- state: state,
81
- tr: tr,
82
- reason: prob.type || 'unknown'
83
- });
84
- }
85
- if (prob.type === TableProblemTypes.COLLISION) {
86
- var collision = prob;
87
- var cell = table.nodeAt(prob.pos);
88
- if (!cell) {
89
- throw new Error("fixTable: unable to find cell at pos ".concat(prob.pos));
90
- }
91
- for (var j = 0; j < cell.attrs.rowspan; j++) {
92
- mustAdd[collision.row + j] += collision.n;
93
- }
94
- tr.setNodeMarkup(tr.mapping.map(tablePos + 1 + prob.pos), undefined, removeColSpan(cell.attrs, cell.attrs.colspan - collision.n, collision.n));
95
- } else if (prob.type === TableProblemTypes.MISSING) {
96
- var missing = prob;
97
- mustAdd[missing.row] += missing.n;
98
- } else if (prob.type === TableProblemTypes.OVERLONG_ROWSPAN) {
99
- var overlong = prob;
100
- var _cell = table.nodeAt(overlong.pos);
101
- if (!_cell) {
102
- throw new Error("fixTable: unable to find cell at pos ".concat(prob.pos));
103
- }
104
- tr.setNodeMarkup(tr.mapping.map(tablePos + 1 + overlong.pos), undefined, _objectSpread(_objectSpread({}, _cell.attrs), {}, {
105
- rowspan: _cell.attrs.rowspan - overlong.n
106
- }));
107
- } else if (prob.type === TableProblemTypes.COLWIDTH_MISMATCH) {
108
- var _cell2 = table.nodeAt(prob.pos);
109
- if (!_cell2) {
110
- throw new Error("fixTable: unable to find cell at pos ".concat(prob.pos));
111
- }
112
- tr.setNodeMarkup(tr.mapping.map(tablePos + 1 + prob.pos), undefined, _objectSpread(_objectSpread({}, _cell2.attrs), {}, {
113
- colwidth: prob.colwidth
114
- }));
115
- }
116
- }
117
- var first;
118
- var last;
119
- for (var _i2 = 0; _i2 < mustAdd.length; _i2++) {
120
- if (mustAdd[_i2]) {
121
- if (first == null) {
122
- first = _i2;
123
- }
124
- last = _i2;
125
- }
126
- }
127
- // Add the necessary cells, using a heuristic for whether to add the
128
- // cells at the start or end of the rows (if it looks like a 'bite'
129
- // was taken out of the table, add cells at the start of the row
130
- // after the bite. Otherwise add them at the end).
131
- for (var _i3 = 0, pos = tablePos + 1; _i3 < map.height; _i3++) {
132
- var row = table.child(_i3);
133
- var end = pos + row.nodeSize;
134
- var add = mustAdd[_i3];
135
- if (add > 0) {
136
- var tableNodeType = 'cell';
137
- if (row.firstChild) {
138
- tableNodeType = row.firstChild.type.spec.tableRole;
139
- }
140
- var nodes = [];
141
- for (var _j = 0; _j < add; _j++) {
142
- // Ignored via go/ees005
143
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
144
- nodes.push(tableNodeTypes(state.schema)[tableNodeType].createAndFill());
145
- }
146
- var side = (_i3 === 0 || first === _i3 - 1) && last === _i3 ? pos + 1 : end - 1;
147
- tr.insert(tr.mapping.map(side), nodes);
148
- }
149
- pos = end;
150
- }
151
- return tr.setMeta(fixTablesKey, {
152
- fixTables: true
153
- });
154
22
  }
@@ -0,0 +1,22 @@
1
+ import { Selection } from '@atlaskit/editor-prosemirror/state';
2
+ import { cloneTr } from './clone-tr';
3
+ import { getCellsInColumn } from './get-cells-in-column';
4
+
5
+ // Returns a new transaction that maps a given `cellTransform` function to each cell in a column at a given `columnIndex`.
6
+ // It will set the selection into the last cell of the column if `setCursorToLastCell` param is set to `true`.
7
+ export var forEachCellInColumn = function forEachCellInColumn(columnIndex, cellTransform, setCursorToLastCell) {
8
+ return function (tr) {
9
+ var cells = getCellsInColumn(columnIndex)(tr.selection);
10
+ if (cells) {
11
+ for (var i = cells.length - 1; i >= 0; i--) {
12
+ tr = cellTransform(cells[i], tr);
13
+ }
14
+ if (setCursorToLastCell) {
15
+ var $pos = tr.doc.resolve(tr.mapping.map(cells[cells.length - 1].pos));
16
+ tr.setSelection(Selection.near($pos));
17
+ }
18
+ return cloneTr(tr);
19
+ }
20
+ return tr;
21
+ };
22
+ };
@@ -0,0 +1,20 @@
1
+ import { Selection } from '@atlaskit/editor-prosemirror/state';
2
+ import { getCellsInRow } from './get-cells-in-row';
3
+
4
+ // Returns a new transaction that maps a given `cellTransform` function to each cell in a row at a given `rowIndex`.
5
+ // It will set the selection into the last cell of the row if `setCursorToLastCell` param is set to `true`.
6
+ export var forEachCellInRow = function forEachCellInRow(rowIndex, cellTransform, setCursorToLastCell) {
7
+ return function (tr) {
8
+ var cells = getCellsInRow(rowIndex)(tr.selection);
9
+ if (cells) {
10
+ for (var i = cells.length - 1; i >= 0; i--) {
11
+ tr = cellTransform(cells[i], tr);
12
+ }
13
+ if (setCursorToLastCell) {
14
+ var $pos = tr.doc.resolve(tr.mapping.map(cells[cells.length - 1].pos));
15
+ tr.setSelection(Selection.near($pos));
16
+ }
17
+ }
18
+ return tr;
19
+ };
20
+ };
@@ -1,41 +1,12 @@
1
- import { Selection } from '@atlaskit/editor-prosemirror/state';
2
- import { cloneTr } from './clone-tr';
3
- import { getCellsInColumn } from './get-cells-in-column';
4
- import { getCellsInRow } from './get-cells-in-row';
1
+ /* eslint-disable @repo/internal/deprecations/deprecation-ticket-required -- VOLTC-139 tracks removal of these deprecated re-export shims. */
5
2
 
6
- // Returns a new transaction that maps a given `cellTransform` function to each cell in a column at a given `columnIndex`.
7
- // It will set the selection into the last cell of the column if `setCursorToLastCell` param is set to `true`.
8
- export var forEachCellInColumn = function forEachCellInColumn(columnIndex, cellTransform, setCursorToLastCell) {
9
- return function (tr) {
10
- var cells = getCellsInColumn(columnIndex)(tr.selection);
11
- if (cells) {
12
- for (var i = cells.length - 1; i >= 0; i--) {
13
- tr = cellTransform(cells[i], tr);
14
- }
15
- if (setCursorToLastCell) {
16
- var $pos = tr.doc.resolve(tr.mapping.map(cells[cells.length - 1].pos));
17
- tr.setSelection(Selection.near($pos));
18
- }
19
- return cloneTr(tr);
20
- }
21
- return tr;
22
- };
23
- };
24
-
25
- // Returns a new transaction that maps a given `cellTransform` function to each cell in a row at a given `rowIndex`.
26
- // It will set the selection into the last cell of the row if `setCursorToLastCell` param is set to `true`.
27
- export var forEachCellInRow = function forEachCellInRow(rowIndex, cellTransform, setCursorToLastCell) {
28
- return function (tr) {
29
- var cells = getCellsInRow(rowIndex)(tr.selection);
30
- if (cells) {
31
- for (var i = cells.length - 1; i >= 0; i--) {
32
- tr = cellTransform(cells[i], tr);
33
- }
34
- if (setCursorToLastCell) {
35
- var $pos = tr.doc.resolve(tr.mapping.map(cells[cells.length - 1].pos));
36
- tr.setSelection(Selection.near($pos));
37
- }
38
- }
39
- return tr;
40
- };
41
- };
3
+ /**
4
+ * @deprecated Use `import { forEachCellInColumn } from '@atlaskit/editor-tables/utils'` instead.
5
+ */
6
+ // eslint-disable-next-line @atlaskit/editor/no-re-export -- Compatibility shim for deprecated API
7
+ export { forEachCellInColumn } from './for-each-cell-in-column';
8
+ /**
9
+ * @deprecated Use `import { forEachCellInRow } from '@atlaskit/editor-tables/utils'` instead.
10
+ */
11
+ // eslint-disable-next-line @atlaskit/editor/no-re-export -- Compatibility shim for deprecated API
12
+ export { forEachCellInRow } from './for-each-cell-in-row';
@@ -0,0 +1 @@
1
+ export {};
@@ -1,5 +1,5 @@
1
1
  import { TableMap } from '../table-map';
2
- import { findTable } from './find';
2
+ import { findTable } from './find-table';
3
3
 
4
4
  // Returns an array of cells in a column(s), where `columnIndex` could be a column index or an array of column indexes.
5
5
  export var getCellsInColumn = function getCellsInColumn(columnIndexes) {
@@ -1,5 +1,5 @@
1
1
  import { TableMap } from '../table-map';
2
- import { findTable } from './find';
2
+ import { findTable } from './find-table';
3
3
 
4
4
  // Returns an array of cells in a row(s), where `rowIndex` could be a row index or an array of row indexes.
5
5
  export var getCellsInRow = function getCellsInRow(rowIndex) {
@@ -1,5 +1,5 @@
1
1
  import { TableMap } from '../table-map';
2
- import { findTable } from './find';
2
+ import { findTable } from './find-table';
3
3
 
4
4
  // Returns an array of all cells in a table.
5
5
  export var getCellsInTable = function getCellsInTable(selection) {
@@ -0,0 +1,27 @@
1
+ import { getSelectedTableInfo } from './get-selected-table-info';
2
+ import { getSelectionRect } from './get-selection-rect';
3
+ export function getSelectedCellInfo(selection) {
4
+ var horizontalCells = 1;
5
+ var verticalCells = 1;
6
+ var totalCells = 1;
7
+ var _getSelectedTableInfo = getSelectedTableInfo(selection),
8
+ table = _getSelectedTableInfo.table,
9
+ map = _getSelectedTableInfo.map,
10
+ totalRowCount = _getSelectedTableInfo.totalRowCount,
11
+ totalColumnCount = _getSelectedTableInfo.totalColumnCount;
12
+ if (table && map) {
13
+ var rect = getSelectionRect(selection);
14
+ if (rect) {
15
+ totalCells = map.cellsInRect(rect).length;
16
+ horizontalCells = rect.right - rect.left;
17
+ verticalCells = rect.bottom - rect.top;
18
+ }
19
+ }
20
+ return {
21
+ totalRowCount: totalRowCount,
22
+ totalColumnCount: totalColumnCount,
23
+ horizontalCells: horizontalCells,
24
+ verticalCells: verticalCells,
25
+ totalCells: totalCells
26
+ };
27
+ }
@@ -0,0 +1,19 @@
1
+ import { TableMap } from '../table-map';
2
+ import { findTable } from './find-table';
3
+ export function getSelectedTableInfo(selection) {
4
+ var map;
5
+ var totalRowCount = 0;
6
+ var totalColumnCount = 0;
7
+ var table = findTable(selection);
8
+ if (table) {
9
+ map = TableMap.get(table.node);
10
+ totalRowCount = map.height;
11
+ totalColumnCount = map.width;
12
+ }
13
+ return {
14
+ table: table,
15
+ map: map,
16
+ totalRowCount: totalRowCount,
17
+ totalColumnCount: totalColumnCount
18
+ };
19
+ }
@@ -0,0 +1,17 @@
1
+ import { CellSelection } from '../cell-selection';
2
+ import { TableMap } from '../table-map';
3
+ import { findTableClosestToPos } from './find-table-closest-to-pos';
4
+ export var getTableSelectionClosesToPos = function getTableSelectionClosesToPos($pos) {
5
+ var table = findTableClosestToPos($pos);
6
+ if (table) {
7
+ var _TableMap$get = TableMap.get(table.node),
8
+ map = _TableMap$get.map;
9
+ if (map && map.length) {
10
+ var head = table.start + map[0];
11
+ var anchor = table.start + map[map.length - 1];
12
+ var $head = $pos.doc.resolve(head);
13
+ var $anchor = $pos.doc.resolve(anchor);
14
+ return new CellSelection($anchor, $head);
15
+ }
16
+ }
17
+ };
@@ -1,6 +1,6 @@
1
1
  import { TextSelection } from '@atlaskit/editor-prosemirror/state';
2
+ import { isInTable } from './is-in-table';
2
3
  import { selectionCell } from './selection-cell';
3
- import { isInTable } from './tables';
4
4
  function moveCellForward($pos) {
5
5
  var nextNodeSize = $pos.nodeAfter ? $pos.nodeAfter.nodeSize : 0;
6
6
  return $pos.node(0).resolve($pos.pos + nextNodeSize);
@@ -8,8 +8,11 @@ import { CellSelection } from '../cell-selection';
8
8
  import { TableMap } from '../table-map';
9
9
  import { selectionCell } from '../utils/selection-cell';
10
10
  import { tableNodeTypes } from '../utils/table-node-types';
11
- import { isInTable } from '../utils/tables';
12
- import { clipCells, fitSlice, insertCells, pastedCells } from './copy-paste';
11
+ import { clipCells } from './clip-cells';
12
+ import { fitSlice } from './fit-slice';
13
+ import { insertCells } from './insert-cells';
14
+ import { isInTable } from './is-in-table';
15
+ import { pastedCells } from './pasted-cells';
13
16
  var SKIP_NESTED_TABLE_PASTE_SOURCES = ['microsoft-excel', 'google-spreadsheets'];
14
17
  export function handlePaste(view, _event, slice, options) {
15
18
  var _slice$content$firstC;
@@ -0,0 +1,3 @@
1
+ export function inSameTable($a, $b) {
2
+ return $a.depth === $b.depth && $a.pos >= $b.start(-1) && $a.pos <= $b.end(-1);
3
+ }
@@ -14,190 +14,12 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
14
14
  // pasted cells when they are smaller than the selection.
15
15
 
16
16
  import { Fragment, Slice } from '@atlaskit/editor-prosemirror/model';
17
- import { Transform } from '@atlaskit/editor-prosemirror/transform';
18
17
  import { CellSelection } from '../cell-selection';
19
18
  import { TableMap } from '../table-map';
20
- import { removeColSpan } from './colspan';
19
+ import { isHeaderEnabledByType } from './is-header-enabled-by-type';
20
+ import { removeColSpan } from './remove-col-span';
21
21
  import { selectedRect } from './selection-rect';
22
22
  import { tableNodeTypes } from './table-node-types';
23
- import { isHeaderEnabledByType } from './toggle-header';
24
-
25
- // Utilities to help with copying and pasting table cells
26
-
27
- /**
28
- * Replace any header cells with table cells.
29
- *
30
- * @param schema
31
- * @param cells
32
- * @returns Fragment with header cells converted to table cells
33
- */
34
- function stripHeaderType(schema, cells) {
35
- var newCells = [];
36
- cells.forEach(function (cell) {
37
- var _cellNodeType$createA;
38
- // Convert to cell type if not already
39
- var cellNodeType = tableNodeTypes(schema).cell;
40
- var tableCell = cell.type === cellNodeType ? cell : (_cellNodeType$createA = cellNodeType.createAndFill(cell.attrs, cell.content, cell.marks)) !== null && _cellNodeType$createA !== void 0 ? _cellNodeType$createA : cell;
41
- newCells.push(tableCell);
42
- });
43
- return Fragment.from(newCells);
44
- }
45
-
46
- // : (Slice) → ?{width: number, height: number, rows: [Fragment]}
47
- // Get a rectangular area of cells from a slice, or null if the outer
48
- // nodes of the slice aren't table cells or rows.
49
- export function pastedCells(slice) {
50
- if (!slice.size) {
51
- return null;
52
- }
53
- var content = slice.content,
54
- openStart = slice.openStart,
55
- openEnd = slice.openEnd;
56
- if (!content.firstChild) {
57
- throw new Error('pastedCells: no firstChild defined for content');
58
- }
59
- while (content.childCount === 1 && (openStart > 0 && openEnd > 0 || content.firstChild.type.spec.tableRole === 'table')) {
60
- openStart--;
61
- openEnd--;
62
- content = content.firstChild.content;
63
- if (!content.firstChild) {
64
- throw new Error('pastedCells: no firstChild defined for content');
65
- }
66
- }
67
- var first = content.firstChild;
68
- var role = first.type.spec.tableRole;
69
- var schema = first.type.schema;
70
- var rows = [];
71
- if (role === 'row') {
72
- for (var i = 0; i < content.childCount; i++) {
73
- var cells = content.child(i).content;
74
- var left = i ? 0 : Math.max(0, openStart - 1);
75
- var right = i < content.childCount - 1 ? 0 : Math.max(0, openEnd - 1);
76
- if (left || right) {
77
- cells = fitSlice(tableNodeTypes(schema).row, new Slice(cells, left, right)).content;
78
- }
79
- rows.push(cells);
80
- }
81
- } else if (role === 'cell' || role === 'header_cell') {
82
- rows.push(openStart || openEnd ? fitSlice(tableNodeTypes(schema).row, new Slice(content, openStart, openEnd)).content : content);
83
- } else {
84
- return null;
85
- }
86
- var rowsWithoutHeaders = rows.map(function (row) {
87
- return stripHeaderType(schema, row);
88
- });
89
- return ensureRectangular(schema, rowsWithoutHeaders);
90
- }
91
-
92
- // : (Schema, [Fragment]) → {width: number, height: number, rows: [Fragment]}
93
- // Compute the width and height of a set of cells, and make sure each
94
- // row has the same number of cells.
95
- function ensureRectangular(schema, rowsFragment) {
96
- var rows = rowsFragment;
97
- var widths = [];
98
- for (var i = 0; i < rows.length; i++) {
99
- var row = rows[i];
100
- for (var j = row.childCount - 1; j >= 0; j--) {
101
- var _row$child$attrs = row.child(j).attrs,
102
- rowspan = _row$child$attrs.rowspan,
103
- colspan = _row$child$attrs.colspan;
104
- for (var r = i; r < i + rowspan; r++) {
105
- widths[r] = (widths[r] || 0) + colspan;
106
- }
107
- }
108
- }
109
- var width = 0;
110
- for (var _r = 0; _r < widths.length; _r++) {
111
- width = Math.max(width, widths[_r]);
112
- }
113
- for (var _r2 = 0; _r2 < widths.length; _r2++) {
114
- if (_r2 >= rows.length) {
115
- rows.push(Fragment.empty);
116
- }
117
- if (widths[_r2] < width) {
118
- // Ignored via go/ees005
119
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
120
- var empty = tableNodeTypes(schema).cell.createAndFill();
121
- var cells = [];
122
- for (var _i = widths[_r2]; _i < width; _i++) {
123
- cells.push(empty);
124
- }
125
- rows[_r2] = rows[_r2].append(Fragment.from(cells));
126
- }
127
- }
128
- return {
129
- height: rows.length,
130
- width: width,
131
- rows: rows
132
- };
133
- }
134
- export function fitSlice(nodeType, slice) {
135
- var node = nodeType.createAndFill();
136
- if (!node) {
137
- throw new Error("fitSlice: unable to create node");
138
- }
139
- var tr = new Transform(node).replace(0, node.content.size, slice);
140
- return tr.doc;
141
- }
142
-
143
- // : ({width: number, height: number, rows: [Fragment]}, number, number) → {width: number, height: number, rows: [Fragment]}
144
- // Clip or extend (repeat) the given set of cells to cover the given
145
- // width and height. Will clip rowspan/colspan cells at the edges when
146
- // they stick out.
147
- export function clipCells(_ref, newWidth, newHeight) {
148
- var currentWidth = _ref.width,
149
- currentHeight = _ref.height,
150
- currentRows = _ref.rows;
151
- var rows = currentRows;
152
- var width = currentWidth;
153
- var height = currentHeight;
154
- if (width !== newWidth) {
155
- var added = [];
156
- var newRows = [];
157
- for (var row = 0; row < rows.length; row++) {
158
- var frag = rows[row];
159
- var cells = [];
160
- for (var col = added[row] || 0, i = 0; col < newWidth; i++) {
161
- var cell = frag.child(i % frag.childCount);
162
- if (col + cell.attrs.colspan > newWidth) {
163
- cell = cell.type.create(removeColSpan(cell.attrs, cell.attrs.colspan, col + cell.attrs.colspan - newWidth), cell.content);
164
- }
165
- cells.push(cell);
166
- col += cell.attrs.colspan;
167
- for (var j = 1; j < cell.attrs.rowspan; j++) {
168
- added[row + j] = (added[row + j] || 0) + cell.attrs.colspan;
169
- }
170
- }
171
- newRows.push(Fragment.from(cells));
172
- }
173
- rows = newRows;
174
- width = newWidth;
175
- }
176
- if (height !== newHeight) {
177
- var _newRows = [];
178
- for (var _row = 0, _i2 = 0; _row < newHeight; _row++, _i2++) {
179
- var _cells = [];
180
- var source = rows[_i2 % height];
181
- for (var _j = 0; _j < source.childCount; _j++) {
182
- var _cell = source.child(_j);
183
- if (_row + _cell.attrs.rowspan > newHeight) {
184
- _cell = _cell.type.create(_objectSpread(_objectSpread({}, _cell.attrs), {}, {
185
- rowspan: Math.max(1, newHeight - _cell.attrs.rowspan)
186
- }), _cell.content);
187
- }
188
- _cells.push(_cell);
189
- }
190
- _newRows.push(Fragment.from(_cells));
191
- }
192
- rows = _newRows;
193
- height = newHeight;
194
- }
195
- return {
196
- width: width,
197
- height: height,
198
- rows: rows
199
- };
200
- }
201
23
 
202
24
  // Make sure a table has at least the given width and height. Return
203
25
  // true if something was changed.
@@ -228,20 +50,20 @@ function growTable(tr, map, table, start, width, height, mapFrom) {
228
50
  }
229
51
  }
230
52
  if (height > map.height) {
231
- var _cells2 = [];
232
- for (var _i3 = 0, k = (map.height - 1) * map.width; _i3 < Math.max(map.width, width); _i3++) {
53
+ var _cells = [];
54
+ for (var _i = 0, k = (map.height - 1) * map.width; _i < Math.max(map.width, width); _i++) {
233
55
  var header = void 0;
234
- if (_i3 >= map.width) {
56
+ if (_i >= map.width) {
235
57
  header = false;
236
58
  } else {
237
- var mappedPos = map.map[k + _i3];
59
+ var mappedPos = map.map[k + _i];
238
60
  var node = table.nodeAt(mappedPos);
239
61
  if (!node) {
240
62
  throw new Error("growTable: no node found at pos ".concat(mappedPos));
241
63
  }
242
64
  header = node.type === types.header_cell;
243
65
  }
244
- _cells2.push(header ?
66
+ _cells.push(header ?
245
67
  // Ignored via go/ees005
246
68
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
247
69
  emptyHead || (emptyHead = types.header_cell.createAndFill()) :
@@ -249,9 +71,9 @@ function growTable(tr, map, table, start, width, height, mapFrom) {
249
71
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
250
72
  empty || (empty = types.cell.createAndFill()));
251
73
  }
252
- var emptyRow = types.row.create(null, Fragment.from(_cells2));
74
+ var emptyRow = types.row.create(null, Fragment.from(_cells));
253
75
  var rows = [];
254
- for (var _i4 = map.height; _i4 < height; _i4++) {
76
+ for (var _i2 = map.height; _i2 < height; _i2++) {
255
77
  rows.push(emptyRow);
256
78
  }
257
79
  tr.insert(tr.mapping.slice(mapFrom).map(start + table.nodeSize - 2), rows);
@@ -0,0 +1,19 @@
1
+ import { TableMap } from '../table-map';
2
+ import { isRectSelected } from './is-rect-selected';
3
+ import { isSelectionType } from './is-selection-type';
4
+
5
+ // Checks if entire column at index `columnIndex` is selected.
6
+ export var isColumnSelected = function isColumnSelected(columnIndex) {
7
+ return function (selection) {
8
+ if (isSelectionType(selection, 'cell')) {
9
+ var map = TableMap.get(selection.$anchorCell.node(-1));
10
+ return isRectSelected({
11
+ left: columnIndex,
12
+ right: columnIndex + 1,
13
+ top: 0,
14
+ bottom: map.height
15
+ })(selection);
16
+ }
17
+ return false;
18
+ };
19
+ };
@@ -0,0 +1,16 @@
1
+ export function isHeaderEnabledByType(type, rect, types) {
2
+ // Get cell positions for first row or first column
3
+ var cellPositions = rect.map.cellsInRect({
4
+ left: 0,
5
+ top: 0,
6
+ right: type === 'row' ? rect.map.width : 1,
7
+ bottom: type === 'column' ? rect.map.height : 1
8
+ });
9
+ for (var i = 0; i < cellPositions.length; i++) {
10
+ var cell = rect.table.nodeAt(cellPositions[i]);
11
+ if (cell && cell.type !== types.header_cell) {
12
+ return false;
13
+ }
14
+ }
15
+ return true;
16
+ }
@@ -0,0 +1,9 @@
1
+ export function isInTable(state) {
2
+ var $head = state.selection.$head;
3
+ for (var d = $head.depth; d > 0; d--) {
4
+ if ($head.node(d).type.spec.tableRole === 'row') {
5
+ return true;
6
+ }
7
+ }
8
+ return false;
9
+ }
@@ -0,0 +1,21 @@
1
+ import { TableMap } from '../table-map';
2
+ import { isSelectionType } from './is-selection-type';
3
+
4
+ // Checks if a given CellSelection rect is selected
5
+ export var isRectSelected = function isRectSelected(rect) {
6
+ return function (selection) {
7
+ if (!isSelectionType(selection, 'cell')) {
8
+ return false;
9
+ }
10
+ var map = TableMap.get(selection.$anchorCell.node(-1));
11
+ var start = selection.$anchorCell.start(-1);
12
+ var cells = map.cellsInRect(rect);
13
+ var selectedCells = map.cellsInRect(map.rectBetween(selection.$anchorCell.pos - start, selection.$headCell.pos - start));
14
+ for (var i = 0, count = cells.length; i < count; i++) {
15
+ if (selectedCells.indexOf(cells[i]) === -1) {
16
+ return false;
17
+ }
18
+ }
19
+ return true;
20
+ };
21
+ };