@atlaskit/editor-plugin-table 1.1.1 → 1.1.3

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 (305) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/cjs/index.js +0 -2
  3. package/dist/cjs/plugins/table/commands/clear.js +4 -16
  4. package/dist/cjs/plugins/table/commands/collapse.js +0 -6
  5. package/dist/cjs/plugins/table/commands/go-to-next-cell.js +7 -18
  6. package/dist/cjs/plugins/table/commands/hover.js +7 -37
  7. package/dist/cjs/plugins/table/commands/index.js +0 -8
  8. package/dist/cjs/plugins/table/commands/insert.js +17 -56
  9. package/dist/cjs/plugins/table/commands/misc.js +36 -132
  10. package/dist/cjs/plugins/table/commands/referentiality.js +0 -4
  11. package/dist/cjs/plugins/table/commands/selection.js +21 -87
  12. package/dist/cjs/plugins/table/commands/sort.js +2 -23
  13. package/dist/cjs/plugins/table/commands/split-cell.js +3 -11
  14. package/dist/cjs/plugins/table/commands/toggle.js +8 -34
  15. package/dist/cjs/plugins/table/commands-with-analytics.js +50 -139
  16. package/dist/cjs/plugins/table/create-plugin-config.js +0 -6
  17. package/dist/cjs/plugins/table/event-handlers.js +58 -160
  18. package/dist/cjs/plugins/table/handlers.js +10 -39
  19. package/dist/cjs/plugins/table/index.js +47 -91
  20. package/dist/cjs/plugins/table/nodeviews/OverflowShadowsObserver.js +8 -41
  21. package/dist/cjs/plugins/table/nodeviews/TableComponent.js +95 -191
  22. package/dist/cjs/plugins/table/nodeviews/table.js +12 -70
  23. package/dist/cjs/plugins/table/nodeviews/tableCell.js +15 -39
  24. package/dist/cjs/plugins/table/nodeviews/update-overflow-shadows.js +3 -15
  25. package/dist/cjs/plugins/table/pm-plugins/decorations/plugin.js +0 -18
  26. package/dist/cjs/plugins/table/pm-plugins/decorations/utils/column-controls.js +8 -27
  27. package/dist/cjs/plugins/table/pm-plugins/decorations/utils/column-resizing.js +8 -20
  28. package/dist/cjs/plugins/table/pm-plugins/decorations/utils/compose-decorations.js +1 -3
  29. package/dist/cjs/plugins/table/pm-plugins/decorations/utils/index.js +0 -3
  30. package/dist/cjs/plugins/table/pm-plugins/keymap.js +2 -15
  31. package/dist/cjs/plugins/table/pm-plugins/main.js +20 -72
  32. package/dist/cjs/plugins/table/pm-plugins/plugin-factory.js +25 -42
  33. package/dist/cjs/plugins/table/pm-plugins/plugin-key.js +0 -2
  34. package/dist/cjs/plugins/table/pm-plugins/safari-delayed-dom-selection-syncing-workaround.js +8 -8
  35. package/dist/cjs/plugins/table/pm-plugins/safari-delete-composition-text-issue-workaround.js +4 -23
  36. package/dist/cjs/plugins/table/pm-plugins/sticky-headers/commands.js +0 -5
  37. package/dist/cjs/plugins/table/pm-plugins/sticky-headers/index.js +0 -5
  38. package/dist/cjs/plugins/table/pm-plugins/sticky-headers/nodeviews/dom.js +4 -13
  39. package/dist/cjs/plugins/table/pm-plugins/sticky-headers/nodeviews/tableRow.js +56 -138
  40. package/dist/cjs/plugins/table/pm-plugins/sticky-headers/plugin-key.js +0 -2
  41. package/dist/cjs/plugins/table/pm-plugins/sticky-headers/plugin-state.js +15 -30
  42. package/dist/cjs/plugins/table/pm-plugins/sticky-headers/plugin.js +0 -6
  43. package/dist/cjs/plugins/table/pm-plugins/sticky-headers/util.js +0 -5
  44. package/dist/cjs/plugins/table/pm-plugins/table-local-id.js +13 -44
  45. package/dist/cjs/plugins/table/pm-plugins/table-resizing/commands.js +18 -43
  46. package/dist/cjs/plugins/table/pm-plugins/table-resizing/event-handlers.js +20 -52
  47. package/dist/cjs/plugins/table/pm-plugins/table-resizing/index.js +0 -4
  48. package/dist/cjs/plugins/table/pm-plugins/table-resizing/plugin-factory.js +0 -10
  49. package/dist/cjs/plugins/table/pm-plugins/table-resizing/plugin-key.js +0 -2
  50. package/dist/cjs/plugins/table/pm-plugins/table-resizing/plugin.js +5 -19
  51. package/dist/cjs/plugins/table/pm-plugins/table-resizing/reducer.js +0 -10
  52. package/dist/cjs/plugins/table/pm-plugins/table-resizing/utils/colgroup.js +16 -15
  53. package/dist/cjs/plugins/table/pm-plugins/table-resizing/utils/column-state.js +8 -28
  54. package/dist/cjs/plugins/table/pm-plugins/table-resizing/utils/content-width.js +3 -23
  55. package/dist/cjs/plugins/table/pm-plugins/table-resizing/utils/dom.js +4 -46
  56. package/dist/cjs/plugins/table/pm-plugins/table-resizing/utils/index.js +0 -9
  57. package/dist/cjs/plugins/table/pm-plugins/table-resizing/utils/misc.js +51 -40
  58. package/dist/cjs/plugins/table/pm-plugins/table-resizing/utils/resize-column.js +1 -4
  59. package/dist/cjs/plugins/table/pm-plugins/table-resizing/utils/resize-logic.js +17 -73
  60. package/dist/cjs/plugins/table/pm-plugins/table-resizing/utils/resize-state.js +34 -82
  61. package/dist/cjs/plugins/table/pm-plugins/table-resizing/utils/scale-table.js +12 -36
  62. package/dist/cjs/plugins/table/pm-plugins/table-resizing/utils/unit-to-number.js +0 -2
  63. package/dist/cjs/plugins/table/pm-plugins/table-selection-keymap.js +0 -5
  64. package/dist/cjs/plugins/table/reducer.js +0 -24
  65. package/dist/cjs/plugins/table/toolbar.js +14 -94
  66. package/dist/cjs/plugins/table/transforms/column-width.js +58 -49
  67. package/dist/cjs/plugins/table/transforms/delete-columns.js +11 -76
  68. package/dist/cjs/plugins/table/transforms/delete-rows.js +4 -42
  69. package/dist/cjs/plugins/table/transforms/fix-tables.js +24 -61
  70. package/dist/cjs/plugins/table/transforms/index.js +0 -7
  71. package/dist/cjs/plugins/table/transforms/merge.js +14 -90
  72. package/dist/cjs/plugins/table/transforms/metadata.js +0 -5
  73. package/dist/cjs/plugins/table/transforms/replace-table.js +2 -13
  74. package/dist/cjs/plugins/table/transforms/split.js +18 -32
  75. package/dist/cjs/plugins/table/types.js +0 -11
  76. package/dist/cjs/plugins/table/ui/FloatingContextualButton/index.js +10 -51
  77. package/dist/cjs/plugins/table/ui/FloatingContextualButton/styles.js +0 -12
  78. package/dist/cjs/plugins/table/ui/FloatingContextualMenu/ContextualMenu.js +46 -145
  79. package/dist/cjs/plugins/table/ui/FloatingContextualMenu/index.js +12 -35
  80. package/dist/cjs/plugins/table/ui/FloatingContextualMenu/styles.js +0 -11
  81. package/dist/cjs/plugins/table/ui/FloatingDeleteButton/DeleteButton.js +5 -12
  82. package/dist/cjs/plugins/table/ui/FloatingDeleteButton/getPopUpOptions.js +3 -16
  83. package/dist/cjs/plugins/table/ui/FloatingDeleteButton/index.js +19 -89
  84. package/dist/cjs/plugins/table/ui/FloatingInsertButton/InsertButton.js +6 -31
  85. package/dist/cjs/plugins/table/ui/FloatingInsertButton/getPopupOptions.js +5 -22
  86. package/dist/cjs/plugins/table/ui/FloatingInsertButton/index.js +25 -80
  87. package/dist/cjs/plugins/table/ui/LayoutButton/index.js +16 -64
  88. package/dist/cjs/plugins/table/ui/TableFloatingControls/CornerControls/index.js +14 -47
  89. package/dist/cjs/plugins/table/ui/TableFloatingControls/NumberColumn/index.js +20 -48
  90. package/dist/cjs/plugins/table/ui/TableFloatingControls/RowControls/index.js +10 -43
  91. package/dist/cjs/plugins/table/ui/TableFloatingControls/index.js +33 -74
  92. package/dist/cjs/plugins/table/ui/common-styles.js +10 -22
  93. package/dist/cjs/plugins/table/ui/consts.js +3 -8
  94. package/dist/cjs/plugins/table/ui/messages.js +0 -3
  95. package/dist/cjs/plugins/table/ui/ui-styles.js +0 -32
  96. package/dist/cjs/plugins/table/utils/analytics.js +4 -19
  97. package/dist/cjs/plugins/table/utils/collapse.js +4 -21
  98. package/dist/cjs/plugins/table/utils/column-controls.js +25 -61
  99. package/dist/cjs/plugins/table/utils/decoration.js +46 -114
  100. package/dist/cjs/plugins/table/utils/dom.js +4 -51
  101. package/dist/cjs/plugins/table/utils/get-allow-add-column-custom-step.js +0 -2
  102. package/dist/cjs/plugins/table/utils/index.js +0 -10
  103. package/dist/cjs/plugins/table/utils/nodes.js +5 -48
  104. package/dist/cjs/plugins/table/utils/paste.js +22 -47
  105. package/dist/cjs/plugins/table/utils/row-controls.js +6 -67
  106. package/dist/cjs/plugins/table/utils/selection.js +3 -36
  107. package/dist/cjs/plugins/table/utils/table.js +0 -11
  108. package/dist/cjs/plugins/table/utils/update-plugin-state-decorations.js +0 -4
  109. package/dist/cjs/plugins/table-plugin.js +0 -3
  110. package/dist/cjs/version.json +1 -1
  111. package/dist/es2019/plugins/table/commands/clear.js +3 -8
  112. package/dist/es2019/plugins/table/commands/collapse.js +0 -3
  113. package/dist/es2019/plugins/table/commands/go-to-next-cell.js +4 -7
  114. package/dist/es2019/plugins/table/commands/hover.js +7 -17
  115. package/dist/es2019/plugins/table/commands/insert.js +16 -36
  116. package/dist/es2019/plugins/table/commands/misc.js +37 -67
  117. package/dist/es2019/plugins/table/commands/selection.js +7 -62
  118. package/dist/es2019/plugins/table/commands/sort.js +0 -12
  119. package/dist/es2019/plugins/table/commands/split-cell.js +0 -4
  120. package/dist/es2019/plugins/table/commands/toggle.js +13 -15
  121. package/dist/es2019/plugins/table/commands-with-analytics.js +4 -14
  122. package/dist/es2019/plugins/table/event-handlers.js +14 -62
  123. package/dist/es2019/plugins/table/handlers.js +16 -26
  124. package/dist/es2019/plugins/table/index.js +12 -25
  125. package/dist/es2019/plugins/table/nodeviews/OverflowShadowsObserver.js +8 -40
  126. package/dist/es2019/plugins/table/nodeviews/TableComponent.js +40 -103
  127. package/dist/es2019/plugins/table/nodeviews/table.js +3 -33
  128. package/dist/es2019/plugins/table/nodeviews/tableCell.js +7 -16
  129. package/dist/es2019/plugins/table/nodeviews/update-overflow-shadows.js +3 -10
  130. package/dist/es2019/plugins/table/pm-plugins/decorations/plugin.js +0 -5
  131. package/dist/es2019/plugins/table/pm-plugins/decorations/utils/column-controls.js +4 -13
  132. package/dist/es2019/plugins/table/pm-plugins/decorations/utils/column-resizing.js +0 -3
  133. package/dist/es2019/plugins/table/pm-plugins/keymap.js +2 -3
  134. package/dist/es2019/plugins/table/pm-plugins/main.js +19 -43
  135. package/dist/es2019/plugins/table/pm-plugins/plugin-factory.js +2 -6
  136. package/dist/es2019/plugins/table/pm-plugins/safari-delayed-dom-selection-syncing-workaround.js +8 -3
  137. package/dist/es2019/plugins/table/pm-plugins/safari-delete-composition-text-issue-workaround.js +0 -12
  138. package/dist/es2019/plugins/table/pm-plugins/sticky-headers/nodeviews/dom.js +4 -9
  139. package/dist/es2019/plugins/table/pm-plugins/sticky-headers/nodeviews/tableRow.js +55 -130
  140. package/dist/es2019/plugins/table/pm-plugins/sticky-headers/plugin-state.js +2 -9
  141. package/dist/es2019/plugins/table/pm-plugins/sticky-headers/util.js +0 -3
  142. package/dist/es2019/plugins/table/pm-plugins/table-local-id.js +20 -39
  143. package/dist/es2019/plugins/table/pm-plugins/table-resizing/commands.js +14 -17
  144. package/dist/es2019/plugins/table/pm-plugins/table-resizing/event-handlers.js +13 -27
  145. package/dist/es2019/plugins/table/pm-plugins/table-resizing/plugin-factory.js +2 -4
  146. package/dist/es2019/plugins/table/pm-plugins/table-resizing/plugin.js +2 -5
  147. package/dist/es2019/plugins/table/pm-plugins/table-resizing/reducer.js +8 -8
  148. package/dist/es2019/plugins/table/pm-plugins/table-resizing/utils/colgroup.js +14 -3
  149. package/dist/es2019/plugins/table/pm-plugins/table-resizing/utils/column-state.js +8 -11
  150. package/dist/es2019/plugins/table/pm-plugins/table-resizing/utils/content-width.js +4 -21
  151. package/dist/es2019/plugins/table/pm-plugins/table-resizing/utils/dom.js +3 -22
  152. package/dist/es2019/plugins/table/pm-plugins/table-resizing/utils/misc.js +46 -21
  153. package/dist/es2019/plugins/table/pm-plugins/table-resizing/utils/resize-logic.js +31 -61
  154. package/dist/es2019/plugins/table/pm-plugins/table-resizing/utils/resize-state.js +54 -51
  155. package/dist/es2019/plugins/table/pm-plugins/table-resizing/utils/scale-table.js +9 -14
  156. package/dist/es2019/plugins/table/reducer.js +26 -30
  157. package/dist/es2019/plugins/table/toolbar.js +5 -48
  158. package/dist/es2019/plugins/table/transforms/column-width.js +60 -32
  159. package/dist/es2019/plugins/table/transforms/delete-columns.js +17 -58
  160. package/dist/es2019/plugins/table/transforms/delete-rows.js +8 -25
  161. package/dist/es2019/plugins/table/transforms/fix-tables.js +25 -42
  162. package/dist/es2019/plugins/table/transforms/merge.js +22 -70
  163. package/dist/es2019/plugins/table/transforms/metadata.js +3 -2
  164. package/dist/es2019/plugins/table/transforms/replace-table.js +0 -2
  165. package/dist/es2019/plugins/table/transforms/split.js +16 -19
  166. package/dist/es2019/plugins/table/types.js +2 -4
  167. package/dist/es2019/plugins/table/ui/FloatingContextualButton/index.js +2 -16
  168. package/dist/es2019/plugins/table/ui/FloatingContextualMenu/ContextualMenu.js +8 -54
  169. package/dist/es2019/plugins/table/ui/FloatingContextualMenu/index.js +4 -13
  170. package/dist/es2019/plugins/table/ui/FloatingDeleteButton/DeleteButton.js +0 -2
  171. package/dist/es2019/plugins/table/ui/FloatingDeleteButton/getPopUpOptions.js +2 -11
  172. package/dist/es2019/plugins/table/ui/FloatingDeleteButton/index.js +13 -49
  173. package/dist/es2019/plugins/table/ui/FloatingInsertButton/InsertButton.js +0 -8
  174. package/dist/es2019/plugins/table/ui/FloatingInsertButton/getPopupOptions.js +16 -24
  175. package/dist/es2019/plugins/table/ui/FloatingInsertButton/index.js +3 -31
  176. package/dist/es2019/plugins/table/ui/LayoutButton/index.js +2 -29
  177. package/dist/es2019/plugins/table/ui/TableFloatingControls/CornerControls/index.js +0 -12
  178. package/dist/es2019/plugins/table/ui/TableFloatingControls/NumberColumn/index.js +6 -12
  179. package/dist/es2019/plugins/table/ui/TableFloatingControls/RowControls/index.js +0 -9
  180. package/dist/es2019/plugins/table/ui/TableFloatingControls/index.js +4 -19
  181. package/dist/es2019/plugins/table/ui/common-styles.js +11 -7
  182. package/dist/es2019/plugins/table/ui/consts.js +4 -3
  183. package/dist/es2019/plugins/table/ui/ui-styles.js +0 -10
  184. package/dist/es2019/plugins/table/utils/analytics.js +0 -8
  185. package/dist/es2019/plugins/table/utils/collapse.js +3 -14
  186. package/dist/es2019/plugins/table/utils/column-controls.js +22 -37
  187. package/dist/es2019/plugins/table/utils/decoration.js +13 -51
  188. package/dist/es2019/plugins/table/utils/dom.js +3 -19
  189. package/dist/es2019/plugins/table/utils/nodes.js +2 -15
  190. package/dist/es2019/plugins/table/utils/paste.js +17 -22
  191. package/dist/es2019/plugins/table/utils/row-controls.js +12 -45
  192. package/dist/es2019/plugins/table/utils/selection.js +0 -21
  193. package/dist/es2019/plugins/table/utils/table.js +0 -2
  194. package/dist/es2019/version.json +1 -1
  195. package/dist/esm/plugins/table/commands/clear.js +3 -8
  196. package/dist/esm/plugins/table/commands/collapse.js +0 -3
  197. package/dist/esm/plugins/table/commands/go-to-next-cell.js +6 -9
  198. package/dist/esm/plugins/table/commands/hover.js +8 -18
  199. package/dist/esm/plugins/table/commands/insert.js +16 -36
  200. package/dist/esm/plugins/table/commands/misc.js +39 -78
  201. package/dist/esm/plugins/table/commands/selection.js +21 -78
  202. package/dist/esm/plugins/table/commands/sort.js +2 -14
  203. package/dist/esm/plugins/table/commands/split-cell.js +3 -8
  204. package/dist/esm/plugins/table/commands/toggle.js +11 -20
  205. package/dist/esm/plugins/table/commands-with-analytics.js +50 -85
  206. package/dist/esm/plugins/table/create-plugin-config.js +0 -3
  207. package/dist/esm/plugins/table/event-handlers.js +58 -123
  208. package/dist/esm/plugins/table/handlers.js +11 -29
  209. package/dist/esm/plugins/table/index.js +47 -60
  210. package/dist/esm/plugins/table/nodeviews/OverflowShadowsObserver.js +8 -44
  211. package/dist/esm/plugins/table/nodeviews/TableComponent.js +95 -184
  212. package/dist/esm/plugins/table/nodeviews/table.js +12 -52
  213. package/dist/esm/plugins/table/nodeviews/tableCell.js +15 -33
  214. package/dist/esm/plugins/table/nodeviews/update-overflow-shadows.js +3 -10
  215. package/dist/esm/plugins/table/pm-plugins/decorations/plugin.js +0 -5
  216. package/dist/esm/plugins/table/pm-plugins/decorations/utils/column-controls.js +8 -19
  217. package/dist/esm/plugins/table/pm-plugins/decorations/utils/column-resizing.js +8 -13
  218. package/dist/esm/plugins/table/pm-plugins/decorations/utils/compose-decorations.js +1 -1
  219. package/dist/esm/plugins/table/pm-plugins/keymap.js +2 -3
  220. package/dist/esm/plugins/table/pm-plugins/main.js +20 -47
  221. package/dist/esm/plugins/table/pm-plugins/plugin-factory.js +25 -37
  222. package/dist/esm/plugins/table/pm-plugins/safari-delayed-dom-selection-syncing-workaround.js +8 -3
  223. package/dist/esm/plugins/table/pm-plugins/safari-delete-composition-text-issue-workaround.js +3 -15
  224. package/dist/esm/plugins/table/pm-plugins/sticky-headers/nodeviews/dom.js +4 -9
  225. package/dist/esm/plugins/table/pm-plugins/sticky-headers/nodeviews/tableRow.js +58 -147
  226. package/dist/esm/plugins/table/pm-plugins/sticky-headers/plugin-state.js +15 -27
  227. package/dist/esm/plugins/table/pm-plugins/sticky-headers/util.js +0 -3
  228. package/dist/esm/plugins/table/pm-plugins/table-local-id.js +14 -37
  229. package/dist/esm/plugins/table/pm-plugins/table-resizing/commands.js +18 -25
  230. package/dist/esm/plugins/table/pm-plugins/table-resizing/event-handlers.js +20 -36
  231. package/dist/esm/plugins/table/pm-plugins/table-resizing/plugin-factory.js +0 -6
  232. package/dist/esm/plugins/table/pm-plugins/table-resizing/plugin.js +5 -8
  233. package/dist/esm/plugins/table/pm-plugins/table-resizing/reducer.js +0 -7
  234. package/dist/esm/plugins/table/pm-plugins/table-resizing/utils/colgroup.js +14 -3
  235. package/dist/esm/plugins/table/pm-plugins/table-resizing/utils/column-state.js +8 -12
  236. package/dist/esm/plugins/table/pm-plugins/table-resizing/utils/content-width.js +5 -22
  237. package/dist/esm/plugins/table/pm-plugins/table-resizing/utils/dom.js +4 -23
  238. package/dist/esm/plugins/table/pm-plugins/table-resizing/utils/misc.js +49 -26
  239. package/dist/esm/plugins/table/pm-plugins/table-resizing/utils/resize-logic.js +17 -62
  240. package/dist/esm/plugins/table/pm-plugins/table-resizing/utils/resize-state.js +34 -55
  241. package/dist/esm/plugins/table/pm-plugins/table-resizing/utils/scale-table.js +12 -24
  242. package/dist/esm/plugins/table/reducer.js +0 -20
  243. package/dist/esm/plugins/table/toolbar.js +13 -63
  244. package/dist/esm/plugins/table/transforms/column-width.js +58 -36
  245. package/dist/esm/plugins/table/transforms/delete-columns.js +11 -62
  246. package/dist/esm/plugins/table/transforms/delete-rows.js +4 -30
  247. package/dist/esm/plugins/table/transforms/fix-tables.js +24 -49
  248. package/dist/esm/plugins/table/transforms/merge.js +16 -75
  249. package/dist/esm/plugins/table/transforms/metadata.js +3 -2
  250. package/dist/esm/plugins/table/transforms/replace-table.js +2 -6
  251. package/dist/esm/plugins/table/transforms/split.js +18 -29
  252. package/dist/esm/plugins/table/types.js +0 -6
  253. package/dist/esm/plugins/table/ui/FloatingContextualButton/index.js +10 -31
  254. package/dist/esm/plugins/table/ui/FloatingContextualButton/styles.js +0 -2
  255. package/dist/esm/plugins/table/ui/FloatingContextualMenu/ContextualMenu.js +46 -126
  256. package/dist/esm/plugins/table/ui/FloatingContextualMenu/index.js +13 -24
  257. package/dist/esm/plugins/table/ui/FloatingContextualMenu/styles.js +0 -2
  258. package/dist/esm/plugins/table/ui/FloatingDeleteButton/DeleteButton.js +5 -7
  259. package/dist/esm/plugins/table/ui/FloatingDeleteButton/getPopUpOptions.js +3 -13
  260. package/dist/esm/plugins/table/ui/FloatingDeleteButton/index.js +19 -68
  261. package/dist/esm/plugins/table/ui/FloatingInsertButton/InsertButton.js +6 -14
  262. package/dist/esm/plugins/table/ui/FloatingInsertButton/getPopupOptions.js +5 -18
  263. package/dist/esm/plugins/table/ui/FloatingInsertButton/index.js +25 -57
  264. package/dist/esm/plugins/table/ui/LayoutButton/index.js +16 -47
  265. package/dist/esm/plugins/table/ui/TableFloatingControls/CornerControls/index.js +14 -35
  266. package/dist/esm/plugins/table/ui/TableFloatingControls/NumberColumn/index.js +20 -38
  267. package/dist/esm/plugins/table/ui/TableFloatingControls/RowControls/index.js +10 -29
  268. package/dist/esm/plugins/table/ui/TableFloatingControls/index.js +33 -62
  269. package/dist/esm/plugins/table/ui/common-styles.js +9 -10
  270. package/dist/esm/plugins/table/ui/consts.js +4 -3
  271. package/dist/esm/plugins/table/ui/ui-styles.js +0 -12
  272. package/dist/esm/plugins/table/utils/analytics.js +4 -13
  273. package/dist/esm/plugins/table/utils/collapse.js +4 -15
  274. package/dist/esm/plugins/table/utils/column-controls.js +25 -41
  275. package/dist/esm/plugins/table/utils/decoration.js +46 -88
  276. package/dist/esm/plugins/table/utils/dom.js +4 -20
  277. package/dist/esm/plugins/table/utils/nodes.js +5 -18
  278. package/dist/esm/plugins/table/utils/paste.js +24 -29
  279. package/dist/esm/plugins/table/utils/row-controls.js +6 -46
  280. package/dist/esm/plugins/table/utils/selection.js +3 -26
  281. package/dist/esm/plugins/table/utils/table.js +0 -2
  282. package/dist/esm/version.json +1 -1
  283. package/dist/types/plugins/table/pm-plugins/table-resizing/utils/colgroup.d.ts +7 -0
  284. package/dist/types/plugins/table/pm-plugins/table-resizing/utils/misc.d.ts +2 -1
  285. package/dist/types/plugins/table/ui/common-styles.d.ts +1 -0
  286. package/package.json +8 -6
  287. package/src/__tests__/integration/__fixtures__/empty-layout.ts +35 -0
  288. package/src/__tests__/integration/__fixtures__/nested-in-expand.ts +129 -0
  289. package/src/__tests__/integration/horizontal-scroll.ts +489 -0
  290. package/src/__tests__/unit/commands/insert.ts +3 -3
  291. package/src/__tests__/unit/keymap.ts +3 -1
  292. package/src/__tests__/unit/pm-plugins/table-resizing/colgroup.ts +38 -0
  293. package/src/__tests__/unit/pm-plugins/table-resizing/event-handlers.ts +5 -2
  294. package/src/__tests__/visual-regression/__image_snapshots__/cell-options-menu-ts-table-cell-options-menu-delete-column-menu-item-visual-hints-should-be-added-to-the-table-column-on-hover-1-snap.png +2 -2
  295. package/src/__tests__/visual-regression/__image_snapshots__/cell-options-menu-ts-table-cell-options-menu-delete-row-menu-item-visual-hints-should-be-added-to-the-table-row-on-hover-1-snap.png +2 -2
  296. package/src/__tests__/visual-regression/__image_snapshots__/sticky-header-ts-snapshot-test-table-sticky-header-should-align-with-table-cell-when-active-2-snap.png +2 -2
  297. package/src/__tests__/visual-regression/sticky-header.ts +2 -1
  298. package/src/plugins/table/nodeviews/TableComponent.tsx +16 -3
  299. package/src/plugins/table/pm-plugins/table-resizing/commands.ts +6 -2
  300. package/src/plugins/table/pm-plugins/table-resizing/event-handlers.ts +9 -1
  301. package/src/plugins/table/pm-plugins/table-resizing/utils/colgroup.ts +19 -1
  302. package/src/plugins/table/pm-plugins/table-resizing/utils/misc.ts +57 -5
  303. package/src/plugins/table/pm-plugins/table-resizing/utils/resize-logic.ts +2 -2
  304. package/src/plugins/table/transforms/column-width.ts +60 -6
  305. package/src/plugins/table/ui/common-styles.ts +5 -2
@@ -26,7 +26,10 @@ import { EditorView } from 'prosemirror-view';
26
26
  import panelPlugin from '@atlaskit/editor-core/src/plugins/panel';
27
27
  import widthPlugin from '@atlaskit/editor-core/src/plugins/width';
28
28
  import type { EditorAnalyticsAPI } from '@atlaskit/editor-common/analytics';
29
- import { akEditorFullPageMaxWidth } from '@atlaskit/editor-shared-styles/consts';
29
+ import {
30
+ akEditorFullPageMaxWidth,
31
+ akEditorDefaultLayoutWidth,
32
+ } from '@atlaskit/editor-shared-styles/consts';
30
33
 
31
34
  describe('table-resizing/event-handlers', () => {
32
35
  const editorAnalyticsAPIFake: EditorAnalyticsAPI = {
@@ -92,7 +95,7 @@ describe('table-resizing/event-handlers', () => {
92
95
 
93
96
  // No matter how large we try to resize the result should equal the width (within 1 pt)
94
97
  expect(getTotalTableWidth(view.state as EditorState)).toBeLessThanOrEqual(
95
- akEditorFullPageMaxWidth,
98
+ akEditorDefaultLayoutWidth,
96
99
  );
97
100
  expect(
98
101
  getTotalTableWidth(view.state as EditorState),
@@ -1,3 +1,3 @@
1
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:b2d4c34ad034fd6a8ffe63e9470ef849f5025413a0d1f9f97e5621ee7c689333
3
- size 29845
2
+ oid sha256:73e26bdfa1009884d8657a69ff2a721ecf9f0a0763629cae053550cf9b640425
3
+ size 29791
@@ -1,3 +1,3 @@
1
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:337ae7625db1ff78ea3fad3a65bda0821c41c0917ba728eaa6cc059dc5432a8a
3
- size 29876
2
+ oid sha256:4c6f837604b1df78aef416e043bfd090906490e7604121f6f0c683d43dd7c9da
3
+ size 29783
@@ -1,3 +1,3 @@
1
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:f1a5a555cab8c01960d1dd4009d44eb51abf0fbd27674404e0bc8ddc9152c345
3
- size 19785
2
+ oid sha256:19e5db9586d2f5b635464786308235a3da2adda2bea5ab7dcde7a50d901cd869
3
+ size 19731
@@ -38,7 +38,8 @@ describe('Snapshot Test: Table', () => {
38
38
  });
39
39
 
40
40
  describe('sticky header', () => {
41
- it('should align with table cell when active', async () => {
41
+ // FIXME: This test was automatically skipped due to failure on 14/02/2023: https://product-fabric.atlassian.net/browse/ED-16900
42
+ it.skip('should align with table cell when active', async () => {
42
43
  await initEditor(page, stickyHeaderWithHorizontalScroll);
43
44
 
44
45
  await clickFirstCell(page, true);
@@ -55,6 +55,7 @@ import type { EventDispatcher } from '@atlaskit/editor-common/event-dispatcher';
55
55
 
56
56
  import memoizeOne from 'memoize-one';
57
57
  import { OverflowShadowsObserver } from './OverflowShadowsObserver';
58
+ import { getParentWidthWithoutPadding } from '../pm-plugins/table-resizing/utils/misc';
58
59
 
59
60
  const isIE11 = browser.ie_version === 11;
60
61
  const NOOP = () => undefined;
@@ -620,14 +621,23 @@ class TableComponent extends React.Component<ComponentProps, TableState> {
620
621
 
621
622
  private handleWindowResize = () => {
622
623
  const { getNode, containerWidth } = this.props;
623
- const layoutSize = this.tableNodeLayoutSize(getNode());
624
+ const node = getNode();
625
+ const prevNode = this.node;
626
+ const layoutSize = this.tableNodeLayoutSize(node);
627
+ const prevAttrs = prevNode?.attrs;
628
+ const layoutChanged =
629
+ prevAttrs?.layout !== node?.attrs?.layout &&
630
+ prevAttrs?.__autoSize === node?.attrs?.__autoSize;
624
631
 
625
632
  if (containerWidth.width > layoutSize) {
626
633
  return;
627
634
  }
628
635
 
629
636
  const parentWidth = this.getParentNodeWidth();
630
- this.scaleTableDebounced(parentWidth);
637
+ this.scaleTableDebounced({
638
+ layoutChanged: layoutChanged,
639
+ parentWidth: parentWidth,
640
+ });
631
641
  };
632
642
 
633
643
  private updateTableContainerWidth = () => {
@@ -671,12 +681,15 @@ class TableComponent extends React.Component<ComponentProps, TableState> {
671
681
  if (!isValidPosition(pos, state)) {
672
682
  return;
673
683
  }
674
- return getParentNodeWidth(
684
+
685
+ const parentNodeWith = getParentNodeWidth(
675
686
  pos,
676
687
  state,
677
688
  containerWidth,
678
689
  options && options.isFullWidthModeEnabled,
679
690
  );
691
+
692
+ return getParentWidthWithoutPadding(parentNodeWith, pos, state);
680
693
  };
681
694
 
682
695
  private updateParentWidth = (width?: number) => {
@@ -33,7 +33,7 @@ export const scaleTable =
33
33
  return false;
34
34
  }
35
35
 
36
- const { node, start, parentWidth } = options;
36
+ const { node, start, parentWidth, layoutChanged } = options;
37
37
 
38
38
  // If a table has not been resized yet, columns should be auto.
39
39
  if (hasTableBeenResized(node) === false) {
@@ -65,7 +65,11 @@ export const scaleTable =
65
65
  // TODO: ED-8995
66
66
  // We need to do this check to reduce the number of race conditions when working with tables.
67
67
  // This metadata is been used in the sendTransaction function in the Collab plugin
68
- tr.setMeta('scaleTable', true);
68
+ /* Added !layoutChanged check here to solve unnecessary scroll bar after publish when click on breakout button multiple times and publish
69
+ scaleTable is only called once every time a breakout button is clicked, so it is safe not to add the meta 'scaleTable' to the tr.
70
+ Leaving the tr.setMeta('scaleTable', true) here for race conditions that we aren't aware of.
71
+ */
72
+ !layoutChanged && tr.setMeta('scaleTable', true);
69
73
  dispatch(tr);
70
74
  return true;
71
75
  }
@@ -31,6 +31,7 @@ import type {
31
31
  GetEditorContainerWidth,
32
32
  GetEditorFeatureFlags,
33
33
  } from '@atlaskit/editor-common/types';
34
+ import { getParentWidthWithoutPadding } from './utils/misc';
34
35
 
35
36
  export const handleMouseDown = (
36
37
  view: EditorView,
@@ -67,8 +68,15 @@ export const handleMouseDown = (
67
68
  const containerWidth = getEditorContainerWidth();
68
69
  const parentWidth = getParentNodeWidth(start, state, containerWidth);
69
70
 
71
+ // TODO - refactor this logic into getParentNodeWidth() in editor-common [ED-16718]
72
+ const parentActualWidth = getParentWidthWithoutPadding(
73
+ parentWidth,
74
+ start,
75
+ state,
76
+ );
77
+
70
78
  let maxSize =
71
- parentWidth ||
79
+ parentActualWidth ||
72
80
  getLayoutSize(
73
81
  dom.getAttribute('data-layout') as TableLayout,
74
82
  containerWidth.width,
@@ -1,6 +1,6 @@
1
1
  import { DOMSerializer, Node as PmNode } from 'prosemirror-model';
2
-
3
2
  import { getFragmentBackingArray } from '@atlaskit/editor-common/utils';
3
+ import { tableCellMinWidth } from '@atlaskit/editor-common/styles';
4
4
 
5
5
  type Col = Array<string | { [name: string]: string }>;
6
6
 
@@ -47,6 +47,24 @@ export const hasTableBeenResized = (table: PmNode) => {
47
47
  );
48
48
  };
49
49
 
50
+ /**
51
+ * Check if a table has all the column width set to tableCellMinWidth(48px) or null
52
+ *
53
+ * @param table
54
+ * @returns true if all column width is equal to tableCellMinWidth or null, false otherwise
55
+ */
56
+ export const isMinCellWidthTable = (table: PmNode) => {
57
+ const cellArray = getFragmentBackingArray(table.content.firstChild!.content);
58
+ const isTableMinCellWidth = cellArray.every((cell) => {
59
+ return (
60
+ (cell.attrs.colwidth && cell.attrs.colwidth[0] === tableCellMinWidth) ||
61
+ cell.attrs.colwidth === null
62
+ );
63
+ });
64
+
65
+ return isTableMinCellWidth;
66
+ };
67
+
50
68
  function renderColgroupFromNode(table: PmNode): HTMLElement {
51
69
  const rendered = DOMSerializer.renderSpec(document, [
52
70
  'colgroup',
@@ -21,6 +21,8 @@ import { Node as PMNode } from 'prosemirror-model';
21
21
  import { EditorState } from 'prosemirror-state';
22
22
  import type { GetEditorContainerWidth } from '@atlaskit/editor-common/types';
23
23
  import { getParentNodeWidth } from '@atlaskit/editor-common/node-width';
24
+ import { gridSize } from '@atlaskit/theme/constants';
25
+ import { findParentNodeOfTypeClosestToPos } from 'prosemirror-utils';
24
26
 
25
27
  export const tableLayoutToSize: Record<string, number> = {
26
28
  default: akEditorDefaultLayoutWidth,
@@ -54,10 +56,6 @@ export function getLayoutSize(
54
56
  return parseInt(calculatedTableWidth, 10);
55
57
  }
56
58
 
57
- if (tableLayout === 'default') {
58
- return getDefaultLayoutMaxWidth(containerWidth);
59
- }
60
-
61
59
  return tableLayoutToSize[tableLayout] || containerWidth;
62
60
  }
63
61
 
@@ -126,7 +124,15 @@ export const getTableMaxWidth = ({
126
124
  const containerWidth = getEditorContainerWidth();
127
125
  const parentWidth = getParentNodeWidth(tableStart, state, containerWidth);
128
126
 
129
- let maxWidth = parentWidth || getLayoutSize(layout, containerWidth.width, {});
127
+ // TODO - refactor this logic into getParentNodeWidth() in editor-common [ED-16718]
128
+ const parentActualWidth = getParentWidthWithoutPadding(
129
+ parentWidth,
130
+ tableStart,
131
+ state,
132
+ );
133
+
134
+ let maxWidth =
135
+ parentActualWidth || getLayoutSize(layout, containerWidth.width, {});
130
136
 
131
137
  if (table.attrs.isNumberColumnEnabled) {
132
138
  maxWidth -= akEditorTableNumberColumnWidth;
@@ -134,3 +140,49 @@ export const getTableMaxWidth = ({
134
140
 
135
141
  return maxWidth;
136
142
  };
143
+
144
+ export const getParentWidthWithoutPadding = (
145
+ parentWidth: number,
146
+ tableStartPos: number,
147
+ state: EditorState,
148
+ ) => {
149
+ const node = getNestedParentNode(tableStartPos, state);
150
+ if (!node) {
151
+ return;
152
+ }
153
+
154
+ const { schema } = state;
155
+
156
+ if (node.type === schema.nodes.expand) {
157
+ // padding
158
+ parentWidth -= gridSize() * 2;
159
+ // gutter offset
160
+ parentWidth += gridSize() * 1.5 * 2;
161
+ // padding right
162
+ parentWidth -= gridSize();
163
+ // padding left
164
+ parentWidth -= gridSize() * 4 - gridSize() / 2;
165
+ }
166
+
167
+ return parentWidth;
168
+ };
169
+
170
+ // copy of getNestedParentNode() from packages/editor/editor-common/src/node-width/index.ts
171
+ // to be removed later when we will move getParentWidthWithoutPadding() logic to editor-common
172
+ const getNestedParentNode = (
173
+ tablePos: number,
174
+ state: EditorState,
175
+ ): PMNode | null => {
176
+ if (tablePos === undefined) {
177
+ return null;
178
+ }
179
+
180
+ const $pos = state.doc.resolve(tablePos);
181
+ const parent = findParentNodeOfTypeClosestToPos($pos, [
182
+ state.schema.nodes.bodiedExtension,
183
+ state.schema.nodes.layoutSection,
184
+ state.schema.nodes.expand,
185
+ ]);
186
+
187
+ return parent ? parent.node : null;
188
+ };
@@ -19,7 +19,7 @@ export const growColumn = (
19
19
  if (remaining > 0) {
20
20
  newState = stackSpace(newState, colIndex, remaining).state;
21
21
  }
22
- if (selectedColumns) {
22
+ if (selectedColumns && selectedColumns.length > 1) {
23
23
  return bulkColumnsResize(newState, selectedColumns, colIndex);
24
24
  }
25
25
 
@@ -51,7 +51,7 @@ export const shrinkColumn = (
51
51
  if (remaining < 0) {
52
52
  newState = stackSpace(newState, colIndex + 1, remaining).state;
53
53
  }
54
- if (selectedColumns) {
54
+ if (selectedColumns && selectedColumns.length > 1) {
55
55
  return bulkColumnsResize(newState, selectedColumns, colIndex);
56
56
  }
57
57
 
@@ -2,6 +2,7 @@ import { Node as PMNode } from 'prosemirror-model';
2
2
  import { Transaction } from 'prosemirror-state';
3
3
  import { TableMap } from '@atlaskit/editor-tables/table-map';
4
4
  import { tableNewColumnMinWidth } from '@atlaskit/editor-common/styles';
5
+ import { akEditorDefaultLayoutWidth } from '@atlaskit/editor-shared-styles';
5
6
 
6
7
  import { CellAttributes } from '@atlaskit/adf-schema';
7
8
 
@@ -21,6 +22,8 @@ import { getTableMaxWidth } from '../pm-plugins/table-resizing/utils/misc';
21
22
  import { tableCellMinWidth } from '@atlaskit/editor-common/styles';
22
23
  import { scaleTableTo } from '../pm-plugins/table-resizing/utils/scale-table';
23
24
  import type { GetEditorContainerWidth } from '@atlaskit/editor-common/types';
25
+ import { isMinCellWidthTable } from '../pm-plugins/table-resizing/utils/colgroup';
26
+ import { insertColumnButtonOffset } from '../ui/common-styles';
24
27
 
25
28
  export const updateColumnWidths =
26
29
  (resizeState: ResizeState, table: PMNode, start: number) =>
@@ -138,19 +141,18 @@ export const rescaleColumns =
138
141
  (getEditorContainerWidth: GetEditorContainerWidth) =>
139
142
  (table: ContentNodeWithPos, view: EditorView | undefined) =>
140
143
  (tr: Transaction): Transaction => {
141
- // If the table has been not been resized we skip updating the size
142
- // of columns here.
143
- if (!view || !hasTableBeenResized(table.node)) {
144
+ if (!view) {
144
145
  return tr;
145
146
  }
146
147
 
148
+ const pos = table.pos;
149
+ const newTable = tr.doc.nodeAt(pos);
147
150
  const { state } = view;
148
151
  const domAtPos = view.domAtPos.bind(view);
149
-
150
152
  const maybeTable = domAtPos(table.start).node as HTMLElement;
151
153
  const tableRef = maybeTable.closest('table');
152
154
 
153
- if (!tableRef) {
155
+ if (!tableRef || !newTable) {
154
156
  return tr;
155
157
  }
156
158
 
@@ -163,6 +165,57 @@ export const rescaleColumns =
163
165
  layout,
164
166
  getEditorContainerWidth,
165
167
  });
168
+
169
+ const tableWidth = tableRef.clientWidth || akEditorDefaultLayoutWidth;
170
+ let tableMaxWidth = tableRef?.parentElement?.clientWidth || 0;
171
+ tableMaxWidth -= insertColumnButtonOffset;
172
+ const newTableMap = TableMap.get(newTable);
173
+ const noOfColumns = newTableMap.width;
174
+ if (!noOfColumns || noOfColumns <= 0) {
175
+ return tr;
176
+ }
177
+ const columnWidthUnresized = tableWidth / noOfColumns;
178
+
179
+ // If the table has not been resized, and the column width is bigger than the minimum column width
180
+ // we skip updating the size of columns here.
181
+ if (
182
+ !hasTableBeenResized(table.node) &&
183
+ columnWidthUnresized > tableCellMinWidth
184
+ ) {
185
+ return tr;
186
+ }
187
+
188
+ // If the table has not been resized, and the column width is smaller than the minimum column width
189
+ // Or if the table has been resized, but each column width is either 48px or null
190
+ // we update the table to have 48px for each column
191
+ if (
192
+ (!hasTableBeenResized(table.node) &&
193
+ columnWidthUnresized <= tableCellMinWidth) ||
194
+ (hasTableBeenResized(table.node) && isMinCellWidthTable(table.node))
195
+ ) {
196
+ const widths: Array<number> = new Array(noOfColumns).fill(
197
+ tableCellMinWidth,
198
+ );
199
+ const cols = widths.map((width, index) => ({
200
+ width: tableCellMinWidth,
201
+ minWidth: tableCellMinWidth,
202
+ index,
203
+ }));
204
+ const overflow = tableWidth > maxSize;
205
+ const minWidthResizeState = {
206
+ cols,
207
+ widths,
208
+ maxSize,
209
+ tableWidth,
210
+ overflow,
211
+ };
212
+ return updateColumnWidths(
213
+ minWidthResizeState,
214
+ table.node,
215
+ table.start,
216
+ )(tr);
217
+ }
218
+
166
219
  let resizeState = getResizeState({
167
220
  minWidth: tableCellMinWidth,
168
221
  table: table.node,
@@ -172,7 +225,8 @@ export const rescaleColumns =
172
225
  maxSize,
173
226
  });
174
227
  const previousTableWidth = resizeState.tableWidth - tableNewColumnMinWidth;
175
- const tableDidntPreviouslyOverflow = previousTableWidth <= maxSize;
228
+ const tableDidntPreviouslyOverflow =
229
+ previousTableWidth <= Math.max(maxSize, tableMaxWidth);
176
230
 
177
231
  // If the new table width will result in the table going into an overflow state
178
232
  // we resize the cells to avoid the overflow occuring
@@ -73,7 +73,7 @@ const cornerControlHeight = tableToolbarSize + 1;
73
73
  that is aligned to the right edge initially on hover of the top right column control when table overflown,
74
74
  its center should be aligned with the edge
75
75
  */
76
- const insertColumnButtonOffset = tableInsertColumnButtonSize / 2;
76
+ export const insertColumnButtonOffset = tableInsertColumnButtonSize / 2;
77
77
 
78
78
  const rangeSelectionStyles = `
79
79
  .${ClassName.NODEVIEW_WRAPPER}.${akEditorSelectedNodeClassName} table tbody tr {
@@ -615,6 +615,8 @@ export const tableStyles = (
615
615
  table-layout: fixed;
616
616
  white-space: normal;
617
617
  border-top: none;
618
+ // 1px border width offset added here to prevent unwanted overflow and scolling - ED-16212
619
+ margin-right: -1px;
618
620
 
619
621
  > tbody > tr {
620
622
  white-space: pre-wrap;
@@ -737,7 +739,8 @@ export const tableStyles = (
737
739
  export const tableFullPageEditorStyles = css`
738
740
  .ProseMirror .${ClassName.TABLE_NODE_WRAPPER} > table {
739
741
  margin-left: 0;
740
- margin-right: 0;
742
+ // 1px border width offset added here to prevent unwanted overflow and scolling - ED-16212
743
+ margin-right: -1px;
741
744
  width: 100%;
742
745
  }
743
746
  `;