@atlaskit/editor-plugin-table 0.0.10 → 0.1.1

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 (368) hide show
  1. package/.eslintrc.js +35 -0
  2. package/CHANGELOG.md +31 -0
  3. package/commands/package.json +14 -0
  4. package/dist/cjs/plugins/table/commands/hover.js +4 -4
  5. package/dist/cjs/plugins/table/commands-with-analytics.js +59 -58
  6. package/dist/cjs/plugins/table/event-handlers.js +0 -1
  7. package/dist/cjs/plugins/table/index.js +54 -37
  8. package/dist/cjs/plugins/table/pm-plugins/table-resizing/index.js +9 -1
  9. package/dist/cjs/plugins/table/toolbar.js +150 -22
  10. package/dist/cjs/plugins/table/transforms/fix-tables.js +7 -7
  11. package/dist/cjs/plugins/table/ui/FloatingContextualButton/index.js +1 -2
  12. package/dist/cjs/plugins/table/ui/FloatingContextualMenu/ContextualMenu.js +4 -6
  13. package/dist/cjs/plugins/table/ui/FloatingDeleteButton/index.js +2 -1
  14. package/dist/cjs/plugins/table/ui/LayoutButton/index.js +3 -5
  15. package/dist/cjs/plugins/table/ui/TableFloatingControls/CornerControls/index.js +2 -1
  16. package/dist/cjs/plugins/table/utils/column-controls.js +0 -1
  17. package/dist/cjs/plugins/table/utils/decoration.js +53 -4
  18. package/dist/cjs/plugins/table/utils/dom.js +0 -2
  19. package/dist/cjs/plugins/table/utils/paste.js +0 -1
  20. package/dist/cjs/version.json +1 -1
  21. package/dist/es2019/plugins/table/commands/hover.js +4 -4
  22. package/dist/es2019/plugins/table/commands-with-analytics.js +6 -9
  23. package/dist/es2019/plugins/table/event-handlers.js +1 -2
  24. package/dist/es2019/plugins/table/handlers.js +1 -2
  25. package/dist/es2019/plugins/table/index.js +23 -5
  26. package/dist/es2019/plugins/table/pm-plugins/keymap.js +1 -1
  27. package/dist/es2019/plugins/table/pm-plugins/table-local-id.js +1 -3
  28. package/dist/es2019/plugins/table/pm-plugins/table-resizing/index.js +2 -1
  29. package/dist/es2019/plugins/table/toolbar.js +133 -16
  30. package/dist/es2019/plugins/table/transforms/fix-tables.js +2 -4
  31. package/dist/es2019/plugins/table/ui/FloatingContextualButton/index.js +1 -2
  32. package/dist/es2019/plugins/table/ui/FloatingContextualMenu/ContextualMenu.js +4 -6
  33. package/dist/es2019/plugins/table/ui/FloatingDeleteButton/index.js +3 -3
  34. package/dist/es2019/plugins/table/ui/FloatingInsertButton/index.js +1 -2
  35. package/dist/es2019/plugins/table/ui/LayoutButton/index.js +3 -5
  36. package/dist/es2019/plugins/table/ui/TableFloatingControls/CornerControls/index.js +2 -1
  37. package/dist/es2019/plugins/table/utils/column-controls.js +0 -1
  38. package/dist/es2019/plugins/table/utils/decoration.js +60 -25
  39. package/dist/es2019/plugins/table/utils/dom.js +0 -2
  40. package/dist/es2019/plugins/table/utils/paste.js +1 -2
  41. package/dist/es2019/plugins/table/utils/row-controls.js +1 -2
  42. package/dist/es2019/version.json +1 -1
  43. package/dist/esm/plugins/table/commands/hover.js +4 -4
  44. package/dist/esm/plugins/table/commands-with-analytics.js +56 -55
  45. package/dist/esm/plugins/table/event-handlers.js +1 -2
  46. package/dist/esm/plugins/table/handlers.js +1 -2
  47. package/dist/esm/plugins/table/index.js +55 -38
  48. package/dist/esm/plugins/table/pm-plugins/keymap.js +1 -1
  49. package/dist/esm/plugins/table/pm-plugins/table-local-id.js +1 -3
  50. package/dist/esm/plugins/table/pm-plugins/table-resizing/index.js +2 -1
  51. package/dist/esm/plugins/table/toolbar.js +139 -17
  52. package/dist/esm/plugins/table/transforms/fix-tables.js +2 -4
  53. package/dist/esm/plugins/table/ui/FloatingContextualButton/index.js +1 -2
  54. package/dist/esm/plugins/table/ui/FloatingContextualMenu/ContextualMenu.js +4 -6
  55. package/dist/esm/plugins/table/ui/FloatingDeleteButton/index.js +3 -3
  56. package/dist/esm/plugins/table/ui/FloatingInsertButton/index.js +1 -2
  57. package/dist/esm/plugins/table/ui/LayoutButton/index.js +3 -5
  58. package/dist/esm/plugins/table/ui/TableFloatingControls/CornerControls/index.js +2 -1
  59. package/dist/esm/plugins/table/utils/column-controls.js +0 -1
  60. package/dist/esm/plugins/table/utils/decoration.js +50 -4
  61. package/dist/esm/plugins/table/utils/dom.js +0 -2
  62. package/dist/esm/plugins/table/utils/paste.js +1 -2
  63. package/dist/esm/plugins/table/utils/row-controls.js +1 -2
  64. package/dist/esm/version.json +1 -1
  65. package/dist/types/plugins/table/commands-with-analytics.d.ts +5 -5
  66. package/dist/types/plugins/table/pm-plugins/table-resizing/index.d.ts +1 -0
  67. package/dist/types/plugins/table/toolbar.d.ts +2 -2
  68. package/dist/types/plugins/table/transforms/fix-tables.d.ts +1 -1
  69. package/dist/types/plugins/table/utils/decoration.d.ts +1 -1
  70. package/examples/99-testing.tsx +35 -30
  71. package/examples/config.jsonc +14 -0
  72. package/package.json +14 -19
  73. package/plugin-key/package.json +14 -0
  74. package/report.api.md +1 -1
  75. package/src/{plugins/table/__tests__ → __tests__}/integration/__fixtures__/auto-size-documents.ts +5 -10
  76. package/src/{plugins/table/__tests__ → __tests__}/integration/__fixtures__/basic-table.ts +0 -0
  77. package/src/{plugins/table/__tests__ → __tests__}/integration/__fixtures__/empty-paragraph-underneath-table.ts +0 -0
  78. package/src/{plugins/table/__tests__ → __tests__}/integration/__fixtures__/even-columns.ts +0 -0
  79. package/src/{plugins/table/__tests__ → __tests__}/integration/__fixtures__/layout-documents.ts +1 -2
  80. package/src/{plugins/table/__tests__ → __tests__}/integration/__fixtures__/merged-rows-and-cols-document.ts +0 -0
  81. package/src/{plugins/table/__tests__ → __tests__}/integration/__fixtures__/nested-in-extension.ts +0 -0
  82. package/src/{plugins/table/__tests__ → __tests__}/integration/__fixtures__/paragraph-and-table-adf.json +0 -0
  83. package/src/{plugins/table/__tests__ → __tests__}/integration/__fixtures__/resize-documents.ts +5 -10
  84. package/src/{plugins/table/__tests__ → __tests__}/integration/__fixtures__/scale.ts +0 -0
  85. package/src/{plugins/table/__tests__ → __tests__}/integration/__fixtures__/table-inside-layout.ts +0 -0
  86. package/src/{plugins/table/__tests__ → __tests__}/integration/__fixtures__/table-with-min-width-columns-document.ts +0 -0
  87. package/src/{plugins/table/__tests__ → __tests__}/integration/__fixtures__/table-with-multiline-date.adf.json +0 -0
  88. package/src/{plugins/table/__tests__ → __tests__}/integration/__fixtures__/table-with-text-and-empty-row.ts +0 -0
  89. package/src/{plugins/table/__tests__ → __tests__}/integration/__snapshots__/auto-size.ts.snap +0 -0
  90. package/src/{plugins/table/__tests__ → __tests__}/integration/__snapshots__/change-date-inside-table.ts.snap +0 -0
  91. package/src/{plugins/table/__tests__ → __tests__}/integration/__snapshots__/copy-button.ts.snap +0 -0
  92. package/src/{plugins/table/__tests__ → __tests__}/integration/__snapshots__/delete-columns.ts.snap +0 -0
  93. package/src/{plugins/table/__tests__ → __tests__}/integration/__snapshots__/delete-last-column-in-full-width.ts.snap +0 -0
  94. package/src/{plugins/table/__tests__ → __tests__}/integration/__snapshots__/delete-last-column-with-empty-action.ts.snap +0 -0
  95. package/src/{plugins/table/__tests__ → __tests__}/integration/__snapshots__/delete-last-row-with-empty-action.ts.snap +0 -0
  96. package/src/{plugins/table/__tests__ → __tests__}/integration/__snapshots__/delete-rows.ts.snap +0 -0
  97. package/src/{plugins/table/__tests__ → __tests__}/integration/__snapshots__/delete-table-when-selected.ts.snap +0 -0
  98. package/src/{plugins/table/__tests__ → __tests__}/integration/__snapshots__/deleting-empty-paragraph-under-table.ts.snap +0 -0
  99. package/src/{plugins/table/__tests__ → __tests__}/integration/__snapshots__/even-columns.ts.snap +0 -0
  100. package/src/{plugins/table/__tests__ → __tests__}/integration/__snapshots__/insert-cell-header-with-strong-mark.ts.snap +0 -0
  101. package/src/{plugins/table/__tests__ → __tests__}/integration/__snapshots__/insert-row-inside-layout.ts.snap +0 -0
  102. package/src/{plugins/table/__tests__ → __tests__}/integration/__snapshots__/layout.ts.snap +0 -0
  103. package/src/{plugins/table/__tests__ → __tests__}/integration/__snapshots__/resize.ts.snap +0 -0
  104. package/src/{plugins/table/__tests__ → __tests__}/integration/__snapshots__/scale.ts.snap +0 -0
  105. package/src/{plugins/table/__tests__ → __tests__}/integration/arrow-down-into-table.ts +0 -0
  106. package/src/{plugins/table/__tests__ → __tests__}/integration/auto-size.ts +0 -0
  107. package/src/{plugins/table/__tests__ → __tests__}/integration/block-node-selection.ts +1 -0
  108. package/src/{plugins/table/__tests__ → __tests__}/integration/cell-selection.ts +0 -0
  109. package/src/{plugins/table/__tests__ → __tests__}/integration/change-date-inside-table.ts +0 -0
  110. package/src/{plugins/table/__tests__ → __tests__}/integration/copy-button.ts +1 -1
  111. package/src/{plugins/table/__tests__ → __tests__}/integration/delete-columns.ts +2 -2
  112. package/src/{plugins/table/__tests__ → __tests__}/integration/delete-last-column-in-full-width.ts +1 -1
  113. package/src/{plugins/table/__tests__ → __tests__}/integration/delete-last-column-with-empty-action.ts +1 -1
  114. package/src/{plugins/table/__tests__ → __tests__}/integration/delete-last-row-with-empty-action.ts +1 -1
  115. package/src/{plugins/table/__tests__ → __tests__}/integration/delete-rows.ts +2 -2
  116. package/src/{plugins/table/__tests__ → __tests__}/integration/delete-table-when-selected.ts +0 -0
  117. package/src/{plugins/table/__tests__ → __tests__}/integration/deleting-empty-paragraph-under-table.ts +0 -0
  118. package/src/{plugins/table/__tests__ → __tests__}/integration/even-columns.ts +0 -0
  119. package/src/{plugins/table/__tests__ → __tests__}/integration/insert-cell-header-with-strong-mark.ts +0 -0
  120. package/src/{plugins/table/__tests__ → __tests__}/integration/insert-long-smart-link.ts +1 -0
  121. package/src/{plugins/table/__tests__ → __tests__}/integration/insert-row-inside-layout.ts +0 -0
  122. package/src/{plugins/table/__tests__ → __tests__}/integration/layout.ts +0 -0
  123. package/src/{plugins/table/__tests__ → __tests__}/integration/resize-handler.ts +0 -0
  124. package/src/{plugins/table/__tests__ → __tests__}/integration/resize.ts +2 -3
  125. package/src/{plugins/table/__tests__ → __tests__}/integration/scale.ts +0 -0
  126. package/src/__tests__/integration/table-controls-selection.ts +71 -0
  127. package/src/__tests__/unit/analytics.ts +41 -41
  128. package/src/__tests__/unit/collab.ts +12 -9
  129. package/src/{plugins/table/__tests__ → __tests__}/unit/commands/go-to-next-cell.ts +4 -4
  130. package/src/{plugins/table/__tests__ → __tests__}/unit/commands/insert.ts +4 -4
  131. package/src/{plugins/table/__tests__ → __tests__}/unit/commands/misc.ts +12 -6
  132. package/src/__tests__/unit/commands/sort.ts +28 -28
  133. package/src/{plugins/table/__tests__ → __tests__}/unit/commands.ts +7 -7
  134. package/src/__tests__/unit/copy-button.ts +22 -0
  135. package/src/__tests__/unit/copy-paste.ts +6 -8
  136. package/src/__tests__/unit/event-handlers.ts +127 -11
  137. package/src/__tests__/unit/fix-tables.ts +17 -23
  138. package/src/{plugins/table/__tests__ → __tests__}/unit/get-toolbar-config.ts +8 -8
  139. package/src/__tests__/unit/hover-selection.ts +1 -66
  140. package/src/__tests__/unit/index-with-fake-timers.ts +1 -1
  141. package/src/__tests__/unit/index.ts +5 -5
  142. package/src/{plugins/table/__tests__ → __tests__}/unit/nodeviews/OverflowShadowsObserver.ts +2 -2
  143. package/src/__tests__/unit/nodeviews/TableComponent.tsx +181 -0
  144. package/src/__tests__/unit/nodeviews/cell.ts +12 -10
  145. package/src/{plugins/table/__tests__ → __tests__}/unit/nodeviews/table.ts +29 -30
  146. package/src/{plugins/table/__tests__ → __tests__}/unit/pm-plugins/decorations/column-controls.ts +2 -2
  147. package/src/{plugins/table/__tests__ → __tests__}/unit/pm-plugins/decorations/column-resizing.ts +9 -6
  148. package/src/{plugins/table/__tests__ → __tests__}/unit/pm-plugins/decorations/plugin.ts +5 -5
  149. package/src/{plugins/table/__tests__ → __tests__}/unit/pm-plugins/main-with-allow-collapse.ts +4 -4
  150. package/src/{plugins/table/__tests__ → __tests__}/unit/pm-plugins/main.ts +6 -6
  151. package/src/{plugins/table/__tests__ → __tests__}/unit/pm-plugins/safari-delete-composition-text-issue-workaround.ts +12 -9
  152. package/src/{plugins/table/__tests__ → __tests__}/unit/pm-plugins/sticky-headers/tableRow.tsx +27 -25
  153. package/src/{plugins/table/__tests__ → __tests__}/unit/pm-plugins/table-local-id.ts +3 -6
  154. package/src/{plugins/table/__tests__ → __tests__}/unit/pm-plugins/table-resizing/colgroup.ts +1 -1
  155. package/src/{plugins/table/__tests__ → __tests__}/unit/pm-plugins/table-resizing/event-handlers.ts +3 -3
  156. package/src/{plugins/table/__tests__ → __tests__}/unit/pm-plugins/table-selection-keymap.ts +3 -3
  157. package/src/{plugins/table/__tests__ → __tests__}/unit/toolbar.ts +23 -14
  158. package/src/__tests__/unit/ui/ContextualMenu.tsx +55 -0
  159. package/src/__tests__/unit/ui/CornerControls.tsx +7 -7
  160. package/src/__tests__/unit/ui/FloatingContextualButton.tsx +45 -49
  161. package/src/__tests__/unit/ui/FloatingContextualMenu.tsx +49 -0
  162. package/src/__tests__/unit/ui/FloatingDeleteButton.tsx +30 -2
  163. package/src/__tests__/unit/ui/FloatingInsertButton.tsx +143 -111
  164. package/src/__tests__/unit/ui/RowControls.tsx +112 -141
  165. package/src/__tests__/unit/ui/TableFloatingControls.tsx +18 -15
  166. package/src/__tests__/unit/undo-redo.ts +10 -9
  167. package/src/{plugins/table/__tests__ → __tests__}/unit/utils/collapse.ts +2 -2
  168. package/src/{plugins/table/__tests__ → __tests__}/unit/utils/column-controls.ts +1 -1
  169. package/src/__tests__/unit/utils/nodes.ts +8 -4
  170. package/src/__tests__/unit/utils/row-controls.ts +8 -4
  171. package/src/{plugins/table/__tests__ → __tests__}/visual-regression/__fixtures__/table-with-100-numbered-list-items.json +0 -0
  172. package/src/{plugins/table/__tests__ → __tests__}/visual-regression/__image_snapshots__/cell-options-menu-ts-table-cell-options-menu-delete-column-menu-item-should-remove-the-table-column-on-click-1-snap.png +0 -0
  173. package/src/{plugins/table/__tests__ → __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 +0 -0
  174. package/src/{plugins/table/__tests__ → __tests__}/visual-regression/__image_snapshots__/cell-options-menu-ts-table-cell-options-menu-delete-row-menu-item-should-remove-the-table-row-on-click-1-snap.png +0 -0
  175. package/src/{plugins/table/__tests__ → __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 +0 -0
  176. package/src/{plugins/table/__tests__ → __tests__}/visual-regression/__image_snapshots__/copy-button-ts-floating-toolbar-copy-button-table-target-node-displays-blue-border-when-copy-button-is-hovered-1-snap.png +0 -0
  177. package/src/{plugins/table/__tests__ → __tests__}/visual-regression/__image_snapshots__/index-ts-snapshot-test-table-numbered-list-should-not-overflow-table-cell-when-there-are-more-than-100-ordered-list-items-1-snap.png +0 -0
  178. package/src/{plugins/table/__tests__ → __tests__}/visual-regression/__image_snapshots__/index-ts-snapshot-test-table-numbered-list-should-not-overflow-table-cell-when-there-are-more-than-100-ordered-list-items-2-snap.png +0 -0
  179. package/src/{plugins/table/__tests__ → __tests__}/visual-regression/__image_snapshots__/index-ts-snapshot-test-table-numbered-list-should-not-overflow-table-cell-when-there-are-more-than-100-ordered-list-items-3-snap.png +0 -0
  180. package/src/{plugins/table/__tests__ → __tests__}/visual-regression/cell-options-menu.ts +2 -0
  181. package/src/__tests__/visual-regression/copy-button.ts +181 -0
  182. package/src/{plugins/table/__tests__ → __tests__}/visual-regression/index.ts +3 -1
  183. package/src/plugins/table/commands/clear.ts +30 -29
  184. package/src/plugins/table/commands/go-to-next-cell.ts +41 -38
  185. package/src/plugins/table/commands/hover.ts +4 -1
  186. package/src/plugins/table/commands/insert.ts +91 -91
  187. package/src/plugins/table/commands/misc.ts +123 -125
  188. package/src/plugins/table/commands/selection.ts +329 -319
  189. package/src/plugins/table/commands-with-analytics.ts +299 -290
  190. package/src/plugins/table/event-handlers.ts +111 -112
  191. package/src/plugins/table/handlers.ts +95 -95
  192. package/src/plugins/table/index.tsx +28 -2
  193. package/src/plugins/table/nodeviews/OverflowShadowsObserver.ts +4 -3
  194. package/src/plugins/table/nodeviews/TableComponent.tsx +6 -9
  195. package/src/plugins/table/nodeviews/update-overflow-shadows.ts +39 -39
  196. package/src/plugins/table/pm-plugins/decorations/utils/column-controls.ts +7 -9
  197. package/src/plugins/table/pm-plugins/decorations/utils/column-resizing.ts +30 -30
  198. package/src/plugins/table/pm-plugins/decorations/utils/compose-decorations.ts +7 -7
  199. package/src/plugins/table/pm-plugins/keymap.ts +1 -1
  200. package/src/plugins/table/pm-plugins/plugin-factory.ts +33 -33
  201. package/src/plugins/table/pm-plugins/safari-delete-composition-text-issue-workaround.ts +6 -9
  202. package/src/plugins/table/pm-plugins/sticky-headers/nodeviews/tableRow.ts +3 -2
  203. package/src/plugins/table/pm-plugins/table-local-id.ts +0 -2
  204. package/src/plugins/table/pm-plugins/table-resizing/commands.ts +98 -90
  205. package/src/plugins/table/pm-plugins/table-resizing/index.ts +1 -0
  206. package/src/plugins/table/pm-plugins/table-resizing/utils/dom.ts +46 -47
  207. package/src/plugins/table/{toolbar.ts → toolbar.tsx} +276 -101
  208. package/src/plugins/table/transforms/column-width.ts +143 -146
  209. package/src/plugins/table/transforms/delete-columns.ts +144 -142
  210. package/src/plugins/table/transforms/delete-rows.ts +110 -111
  211. package/src/plugins/table/transforms/fix-tables.ts +2 -3
  212. package/src/plugins/table/transforms/metadata.ts +9 -9
  213. package/src/plugins/table/ui/FloatingContextualButton/index.tsx +0 -1
  214. package/src/plugins/table/ui/FloatingContextualMenu/ContextualMenu.tsx +20 -16
  215. package/src/plugins/table/ui/FloatingDeleteButton/index.tsx +3 -3
  216. package/src/plugins/table/ui/FloatingInsertButton/index.tsx +2 -6
  217. package/src/plugins/table/ui/LayoutButton/index.tsx +4 -10
  218. package/src/plugins/table/ui/TableFloatingControls/CornerControls/index.tsx +1 -0
  219. package/src/plugins/table/ui/common-styles.ts +1 -3
  220. package/src/plugins/table/utils/analytics.ts +24 -25
  221. package/src/plugins/table/utils/column-controls.ts +0 -1
  222. package/src/plugins/table/utils/decoration.ts +44 -5
  223. package/src/plugins/table/utils/dom.ts +3 -5
  224. package/src/plugins/table/utils/paste.ts +0 -1
  225. package/src/plugins/table/utils/row-controls.ts +92 -94
  226. package/types/package.json +5 -5
  227. package/ui/common-styles/package.json +14 -0
  228. package/ui/consts/package.json +14 -0
  229. package/dist/cjs/plugins/plugin-key.js +0 -17
  230. package/dist/cjs/plugins/table/todo-stubs.js +0 -10
  231. package/dist/cjs/types.js +0 -5
  232. package/dist/es2019/plugins/plugin-key.js +0 -3
  233. package/dist/es2019/plugins/table/todo-stubs.js +0 -1
  234. package/dist/es2019/types.js +0 -1
  235. package/dist/esm/plugins/plugin-key.js +0 -5
  236. package/dist/esm/plugins/table/todo-stubs.js +0 -1
  237. package/dist/esm/types.js +0 -1
  238. package/dist/types/plugins/plugin-key.d.ts +0 -4
  239. package/dist/types/plugins/table/todo-stubs.d.ts +0 -1
  240. package/dist/types/types.d.ts +0 -3
  241. package/dist/types-ts4.0/index.d.ts +0 -1
  242. package/dist/types-ts4.0/plugins/plugin-key.d.ts +0 -4
  243. package/dist/types-ts4.0/plugins/table/commands/clear.d.ts +0 -3
  244. package/dist/types-ts4.0/plugins/table/commands/collapse.d.ts +0 -2
  245. package/dist/types-ts4.0/plugins/table/commands/go-to-next-cell.d.ts +0 -4
  246. package/dist/types-ts4.0/plugins/table/commands/hover.d.ts +0 -8
  247. package/dist/types-ts4.0/plugins/table/commands/index.d.ts +0 -7
  248. package/dist/types-ts4.0/plugins/table/commands/insert.d.ts +0 -10
  249. package/dist/types-ts4.0/plugins/table/commands/misc.d.ts +0 -27
  250. package/dist/types-ts4.0/plugins/table/commands/selection.d.ts +0 -8
  251. package/dist/types-ts4.0/plugins/table/commands/sort.d.ts +0 -3
  252. package/dist/types-ts4.0/plugins/table/commands/split-cell.d.ts +0 -6
  253. package/dist/types-ts4.0/plugins/table/commands/toggle.d.ts +0 -12
  254. package/dist/types-ts4.0/plugins/table/commands-with-analytics.d.ts +0 -26
  255. package/dist/types-ts4.0/plugins/table/create-plugin-config.d.ts +0 -2
  256. package/dist/types-ts4.0/plugins/table/event-handlers.d.ts +0 -16
  257. package/dist/types-ts4.0/plugins/table/handlers.d.ts +0 -3
  258. package/dist/types-ts4.0/plugins/table/index.d.ts +0 -17
  259. package/dist/types-ts4.0/plugins/table/nodeviews/OverflowShadowsObserver.d.ts +0 -26
  260. package/dist/types-ts4.0/plugins/table/nodeviews/TableComponent.d.ts +0 -72
  261. package/dist/types-ts4.0/plugins/table/nodeviews/__mocks__/OverflowShadowsObserver.d.ts +0 -9
  262. package/dist/types-ts4.0/plugins/table/nodeviews/__mocks__/OverridableMock.d.ts +0 -9
  263. package/dist/types-ts4.0/plugins/table/nodeviews/table.d.ts +0 -31
  264. package/dist/types-ts4.0/plugins/table/nodeviews/tableCell.d.ts +0 -19
  265. package/dist/types-ts4.0/plugins/table/nodeviews/types.d.ts +0 -24
  266. package/dist/types-ts4.0/plugins/table/nodeviews/update-overflow-shadows.d.ts +0 -8
  267. package/dist/types-ts4.0/plugins/table/pm-plugins/decorations/plugin.d.ts +0 -7
  268. package/dist/types-ts4.0/plugins/table/pm-plugins/decorations/utils/column-controls.d.ts +0 -3
  269. package/dist/types-ts4.0/plugins/table/pm-plugins/decorations/utils/column-resizing.d.ts +0 -2
  270. package/dist/types-ts4.0/plugins/table/pm-plugins/decorations/utils/compose-decorations.d.ts +0 -2
  271. package/dist/types-ts4.0/plugins/table/pm-plugins/decorations/utils/index.d.ts +0 -3
  272. package/dist/types-ts4.0/plugins/table/pm-plugins/decorations/utils/types.d.ts +0 -6
  273. package/dist/types-ts4.0/plugins/table/pm-plugins/default-table-selection.d.ts +0 -5
  274. package/dist/types-ts4.0/plugins/table/pm-plugins/keymap.d.ts +0 -5
  275. package/dist/types-ts4.0/plugins/table/pm-plugins/main.d.ts +0 -8
  276. package/dist/types-ts4.0/plugins/table/pm-plugins/plugin-factory.d.ts +0 -1
  277. package/dist/types-ts4.0/plugins/table/pm-plugins/plugin-key.d.ts +0 -3
  278. package/dist/types-ts4.0/plugins/table/pm-plugins/safari-delayed-dom-selection-syncing-workaround.d.ts +0 -4
  279. package/dist/types-ts4.0/plugins/table/pm-plugins/safari-delete-composition-text-issue-workaround.d.ts +0 -15
  280. package/dist/types-ts4.0/plugins/table/pm-plugins/sticky-headers/commands.d.ts +0 -3
  281. package/dist/types-ts4.0/plugins/table/pm-plugins/sticky-headers/index.d.ts +0 -6
  282. package/dist/types-ts4.0/plugins/table/pm-plugins/sticky-headers/nodeviews/dom.d.ts +0 -6
  283. package/dist/types-ts4.0/plugins/table/pm-plugins/sticky-headers/nodeviews/tableRow.d.ts +0 -65
  284. package/dist/types-ts4.0/plugins/table/pm-plugins/sticky-headers/plugin-key.d.ts +0 -3
  285. package/dist/types-ts4.0/plugins/table/pm-plugins/sticky-headers/plugin-state.d.ts +0 -3
  286. package/dist/types-ts4.0/plugins/table/pm-plugins/sticky-headers/plugin.d.ts +0 -4
  287. package/dist/types-ts4.0/plugins/table/pm-plugins/sticky-headers/types.d.ts +0 -16
  288. package/dist/types-ts4.0/plugins/table/pm-plugins/sticky-headers/util.d.ts +0 -2
  289. package/dist/types-ts4.0/plugins/table/pm-plugins/table-local-id.d.ts +0 -22
  290. package/dist/types-ts4.0/plugins/table/pm-plugins/table-resizing/commands.d.ts +0 -25
  291. package/dist/types-ts4.0/plugins/table/pm-plugins/table-resizing/event-handlers.d.ts +0 -4
  292. package/dist/types-ts4.0/plugins/table/pm-plugins/table-resizing/index.d.ts +0 -3
  293. package/dist/types-ts4.0/plugins/table/pm-plugins/table-resizing/plugin-factory.d.ts +0 -4
  294. package/dist/types-ts4.0/plugins/table/pm-plugins/table-resizing/plugin-key.d.ts +0 -3
  295. package/dist/types-ts4.0/plugins/table/pm-plugins/table-resizing/plugin.d.ts +0 -6
  296. package/dist/types-ts4.0/plugins/table/pm-plugins/table-resizing/reducer.d.ts +0 -3
  297. package/dist/types-ts4.0/plugins/table/pm-plugins/table-resizing/utils/colgroup.d.ts +0 -8
  298. package/dist/types-ts4.0/plugins/table/pm-plugins/table-resizing/utils/column-state.d.ts +0 -14
  299. package/dist/types-ts4.0/plugins/table/pm-plugins/table-resizing/utils/content-width.d.ts +0 -4
  300. package/dist/types-ts4.0/plugins/table/pm-plugins/table-resizing/utils/dom.d.ts +0 -13
  301. package/dist/types-ts4.0/plugins/table/pm-plugins/table-resizing/utils/index.d.ts +0 -12
  302. package/dist/types-ts4.0/plugins/table/pm-plugins/table-resizing/utils/misc.d.ts +0 -22
  303. package/dist/types-ts4.0/plugins/table/pm-plugins/table-resizing/utils/resize-column.d.ts +0 -2
  304. package/dist/types-ts4.0/plugins/table/pm-plugins/table-resizing/utils/resize-logic.d.ts +0 -4
  305. package/dist/types-ts4.0/plugins/table/pm-plugins/table-resizing/utils/resize-state.d.ts +0 -29
  306. package/dist/types-ts4.0/plugins/table/pm-plugins/table-resizing/utils/scale-table.d.ts +0 -17
  307. package/dist/types-ts4.0/plugins/table/pm-plugins/table-resizing/utils/types.d.ts +0 -22
  308. package/dist/types-ts4.0/plugins/table/pm-plugins/table-resizing/utils/unit-to-number.d.ts +0 -1
  309. package/dist/types-ts4.0/plugins/table/pm-plugins/table-selection-keymap.d.ts +0 -4
  310. package/dist/types-ts4.0/plugins/table/reducer.d.ts +0 -3
  311. package/dist/types-ts4.0/plugins/table/todo-stubs.d.ts +0 -1
  312. package/dist/types-ts4.0/plugins/table/toolbar.d.ts +0 -36
  313. package/dist/types-ts4.0/plugins/table/transforms/column-width.d.ts +0 -18
  314. package/dist/types-ts4.0/plugins/table/transforms/delete-columns.d.ts +0 -3
  315. package/dist/types-ts4.0/plugins/table/transforms/delete-rows.d.ts +0 -3
  316. package/dist/types-ts4.0/plugins/table/transforms/fix-tables.d.ts +0 -10
  317. package/dist/types-ts4.0/plugins/table/transforms/index.d.ts +0 -7
  318. package/dist/types-ts4.0/plugins/table/transforms/merge.d.ts +0 -5
  319. package/dist/types-ts4.0/plugins/table/transforms/metadata.d.ts +0 -21
  320. package/dist/types-ts4.0/plugins/table/transforms/replace-table.d.ts +0 -5
  321. package/dist/types-ts4.0/plugins/table/transforms/split.d.ts +0 -9
  322. package/dist/types-ts4.0/plugins/table/types.d.ts +0 -328
  323. package/dist/types-ts4.0/plugins/table/ui/FloatingContextualButton/index.d.ts +0 -29
  324. package/dist/types-ts4.0/plugins/table/ui/FloatingContextualButton/styles.d.ts +0 -1
  325. package/dist/types-ts4.0/plugins/table/ui/FloatingContextualMenu/ContextualMenu.d.ts +0 -87
  326. package/dist/types-ts4.0/plugins/table/ui/FloatingContextualMenu/index.d.ts +0 -22
  327. package/dist/types-ts4.0/plugins/table/ui/FloatingContextualMenu/styles.d.ts +0 -2
  328. package/dist/types-ts4.0/plugins/table/ui/FloatingDeleteButton/DeleteButton.d.ts +0 -14
  329. package/dist/types-ts4.0/plugins/table/ui/FloatingDeleteButton/getPopUpOptions.d.ts +0 -10
  330. package/dist/types-ts4.0/plugins/table/ui/FloatingDeleteButton/index.d.ts +0 -54
  331. package/dist/types-ts4.0/plugins/table/ui/FloatingDeleteButton/types.d.ts +0 -1
  332. package/dist/types-ts4.0/plugins/table/ui/FloatingInsertButton/InsertButton.d.ts +0 -12
  333. package/dist/types-ts4.0/plugins/table/ui/FloatingInsertButton/getPopupOptions.d.ts +0 -3
  334. package/dist/types-ts4.0/plugins/table/ui/FloatingInsertButton/index.d.ts +0 -35
  335. package/dist/types-ts4.0/plugins/table/ui/LayoutButton/index.d.ts +0 -21
  336. package/dist/types-ts4.0/plugins/table/ui/TableFloatingControls/CornerControls/index.d.ts +0 -16
  337. package/dist/types-ts4.0/plugins/table/ui/TableFloatingControls/NumberColumn/index.d.ts +0 -21
  338. package/dist/types-ts4.0/plugins/table/ui/TableFloatingControls/RowControls/index.d.ts +0 -17
  339. package/dist/types-ts4.0/plugins/table/ui/TableFloatingControls/index.d.ts +0 -40
  340. package/dist/types-ts4.0/plugins/table/ui/common-styles.d.ts +0 -4
  341. package/dist/types-ts4.0/plugins/table/ui/consts.d.ts +0 -39
  342. package/dist/types-ts4.0/plugins/table/ui/messages.d.ts +0 -38
  343. package/dist/types-ts4.0/plugins/table/ui/ui-styles.d.ts +0 -15
  344. package/dist/types-ts4.0/plugins/table/utils/analytics.d.ts +0 -18
  345. package/dist/types-ts4.0/plugins/table/utils/collapse.d.ts +0 -29
  346. package/dist/types-ts4.0/plugins/table/utils/column-controls.d.ts +0 -10
  347. package/dist/types-ts4.0/plugins/table/utils/decoration.d.ts +0 -16
  348. package/dist/types-ts4.0/plugins/table/utils/dom.d.ts +0 -20
  349. package/dist/types-ts4.0/plugins/table/utils/get-allow-add-column-custom-step.d.ts +0 -2
  350. package/dist/types-ts4.0/plugins/table/utils/index.d.ts +0 -11
  351. package/dist/types-ts4.0/plugins/table/utils/nodes.d.ts +0 -12
  352. package/dist/types-ts4.0/plugins/table/utils/paste.d.ts +0 -14
  353. package/dist/types-ts4.0/plugins/table/utils/referentiality.d.ts +0 -2
  354. package/dist/types-ts4.0/plugins/table/utils/row-controls.d.ts +0 -16
  355. package/dist/types-ts4.0/plugins/table/utils/selection.d.ts +0 -6
  356. package/dist/types-ts4.0/plugins/table/utils/table.d.ts +0 -4
  357. package/dist/types-ts4.0/plugins/table/utils/update-plugin-state-decorations.d.ts +0 -4
  358. package/dist/types-ts4.0/plugins/table-plugin.d.ts +0 -2
  359. package/dist/types-ts4.0/types.d.ts +0 -3
  360. package/src/plugins/plugin-key.ts +0 -7
  361. package/src/plugins/table/__tests__/integration/table-controls-selection.ts +0 -70
  362. package/src/plugins/table/__tests__/unit/event-handlers.ts +0 -130
  363. package/src/plugins/table/__tests__/unit/nodeviews/TableComponent.tsx +0 -388
  364. package/src/plugins/table/todo-stubs.ts +0 -1
  365. package/src/plugins/table/ui/FloatingContextualMenu/__tests__/ContextualMenu.tsx +0 -55
  366. package/src/plugins/table/ui/FloatingContextualMenu/__tests__/FloatingContextualMenu.tsx +0 -49
  367. package/src/types.ts +0 -3
  368. package/tmp/api-report-tmp.d.ts +0 -91
@@ -20,61 +20,60 @@ import { getRowHeights } from '../../../utils/row-controls';
20
20
  import { colWidthsForRow } from '../../../utils/column-controls';
21
21
  import { getPluginState as getMainPluginState } from '../../plugin-factory';
22
22
 
23
- export const updateControls = (
24
- getEditorFeatureFlags: GetEditorFeatureFlags,
25
- ) => (state: EditorState) => {
26
- const { tableRef } = getMainPluginState(state);
27
- if (!tableRef) {
28
- return;
29
- }
30
- const tr = tableRef.querySelector('tr');
31
- if (!tr) {
32
- return;
33
- }
34
- const wrapper = tableRef.parentElement;
35
- if (!(wrapper && wrapper.parentElement)) {
36
- return;
37
- }
23
+ export const updateControls =
24
+ (getEditorFeatureFlags: GetEditorFeatureFlags) => (state: EditorState) => {
25
+ const { tableRef } = getMainPluginState(state);
26
+ if (!tableRef) {
27
+ return;
28
+ }
29
+ const tr = tableRef.querySelector('tr');
30
+ if (!tr) {
31
+ return;
32
+ }
33
+ const wrapper = tableRef.parentElement;
34
+ if (!(wrapper && wrapper.parentElement)) {
35
+ return;
36
+ }
38
37
 
39
- const rowControls = wrapper.parentElement.querySelectorAll<HTMLElement>(
40
- `.${ClassName.ROW_CONTROLS_BUTTON_WRAP}`,
41
- );
42
- const numberedRows = wrapper.parentElement.querySelectorAll<HTMLElement>(
43
- ClassName.NUMBERED_COLUMN_BUTTON,
44
- );
38
+ const rowControls = wrapper.parentElement.querySelectorAll<HTMLElement>(
39
+ `.${ClassName.ROW_CONTROLS_BUTTON_WRAP}`,
40
+ );
41
+ const numberedRows = wrapper.parentElement.querySelectorAll<HTMLElement>(
42
+ ClassName.NUMBERED_COLUMN_BUTTON,
43
+ );
45
44
 
46
- syncStickyRowToTable(tableRef);
45
+ syncStickyRowToTable(tableRef);
47
46
 
48
- const rowHeights = getRowHeights(tableRef);
47
+ const rowHeights = getRowHeights(tableRef);
49
48
 
50
- // update rows controls height on resize
51
- for (let i = 0, count = rowControls.length; i < count; i++) {
52
- const height = rowHeights[i];
53
- if (height) {
54
- rowControls[i].style.height = `${height}px`;
49
+ // update rows controls height on resize
50
+ for (let i = 0, count = rowControls.length; i < count; i++) {
51
+ const height = rowHeights[i];
52
+ if (height) {
53
+ rowControls[i].style.height = `${height}px`;
55
54
 
56
- if (numberedRows.length) {
57
- numberedRows[i].style.height = `${height}px`;
55
+ if (numberedRows.length) {
56
+ numberedRows[i].style.height = `${height}px`;
57
+ }
58
58
  }
59
59
  }
60
- }
61
60
 
62
- const rightShadows = wrapper.parentElement.querySelectorAll<HTMLElement>(
63
- `.${ClassName.TABLE_RIGHT_SHADOW}`,
64
- );
65
-
66
- const leftShadows = wrapper.parentElement.querySelectorAll<HTMLElement>(
67
- `.${ClassName.TABLE_LEFT_SHADOW}`,
68
- );
69
-
70
- updateOverflowShadows(getEditorFeatureFlags)(
71
- state,
72
- wrapper,
73
- tableRef,
74
- rightShadows,
75
- leftShadows,
76
- );
77
- };
61
+ const rightShadows = wrapper.parentElement.querySelectorAll<HTMLElement>(
62
+ `.${ClassName.TABLE_RIGHT_SHADOW}`,
63
+ );
64
+
65
+ const leftShadows = wrapper.parentElement.querySelectorAll<HTMLElement>(
66
+ `.${ClassName.TABLE_LEFT_SHADOW}`,
67
+ );
68
+
69
+ updateOverflowShadows(getEditorFeatureFlags)(
70
+ state,
71
+ wrapper,
72
+ tableRef,
73
+ rightShadows,
74
+ leftShadows,
75
+ );
76
+ };
78
77
 
79
78
  export const isClickNear = (
80
79
  event: MouseEvent,
@@ -1,3 +1,5 @@
1
+ /** @jsx jsx */
2
+ import { jsx } from '@emotion/react';
1
3
  import { defineMessages } from 'react-intl-next';
2
4
 
3
5
  import RemoveIcon from '@atlaskit/icon/glyph/editor/remove';
@@ -8,6 +10,7 @@ import type {
8
10
  FloatingToolbarDropdown,
9
11
  FloatingToolbarHandler,
10
12
  FloatingToolbarItem,
13
+ GetEditorFeatureFlags,
11
14
  } from '@atlaskit/editor-common/types';
12
15
 
13
16
  import type { EditorAnalyticsAPI } from '@atlaskit/editor-common/analytics';
@@ -26,6 +29,9 @@ import {
26
29
  emptyMultipleCellsWithAnalytics,
27
30
  insertColumnWithAnalytics,
28
31
  wrapTableInExpandWithAnalytics,
32
+ sortColumnWithAnalytics,
33
+ setColorWithAnalytics,
34
+ distributeColumnsWidthsWithAnalytics,
29
35
  } from './commands-with-analytics';
30
36
  import { getPluginState } from './pm-plugins/plugin-factory';
31
37
  import { pluginKey as tableResizingPluginKey } from './pm-plugins/table-resizing';
@@ -37,6 +43,7 @@ import {
37
43
  PluginConfig,
38
44
  TableCssClassName,
39
45
  } from './types';
46
+ import { getMergedCellsPositions } from './utils';
40
47
  import { isReferencedSource } from './utils/referentiality';
41
48
  import { INPUT_METHOD } from '@atlaskit/editor-common/analytics';
42
49
  import {
@@ -56,6 +63,19 @@ import { Rect } from '@atlaskit/editor-tables/table-map';
56
63
  import { findParentDomRefOfType } from 'prosemirror-utils';
57
64
  import { EditorView } from 'prosemirror-view';
58
65
  import { closestElement } from '@atlaskit/editor-common/utils';
66
+ import {
67
+ addColumnAfter,
68
+ addRowAfter,
69
+ tooltip,
70
+ backspace,
71
+ } from '@atlaskit/editor-common/keymaps';
72
+ import { getNewResizeStateFromSelectedColumns } from './pm-plugins/table-resizing/utils/resize-state';
73
+ import { TableSortOrder as SortOrder } from '@atlaskit/adf-schema/steps';
74
+ import { shortcutStyle } from '@atlaskit/editor-shared-styles/shortcut';
75
+ import {
76
+ cellBackgroundColorPalette,
77
+ DEFAULT_BORDER_COLOR,
78
+ } from '@atlaskit/editor-common/ui-color';
59
79
 
60
80
  export const messages = defineMessages({
61
81
  tableOptions: {
@@ -145,6 +165,7 @@ export const getToolbarCellOptionsConfig = (
145
165
  const { top, bottom, right, left } = initialSelectionRect;
146
166
  const numberOfColumns = right - left;
147
167
  const numberOfRows = bottom - top;
168
+ const pluginState = getPluginState(editorState);
148
169
 
149
170
  const options = [
150
171
  {
@@ -167,6 +188,7 @@ export const getToolbarCellOptionsConfig = (
167
188
  },
168
189
  selected: false,
169
190
  disabled: false,
191
+ elemAfter: <div css={shortcutStyle}>{tooltip(addColumnAfter)}</div>,
170
192
  },
171
193
  {
172
194
  id: 'editor.table.insertRow',
@@ -184,6 +206,7 @@ export const getToolbarCellOptionsConfig = (
184
206
  },
185
207
  selected: false,
186
208
  disabled: false,
209
+ elemAfter: <div css={shortcutStyle}>{tooltip(addRowAfter)}</div>,
187
210
  },
188
211
  {
189
212
  id: 'editor.table.removeColumns',
@@ -229,41 +252,114 @@ export const getToolbarCellOptionsConfig = (
229
252
  {
230
253
  id: 'editor.table.mergeCells',
231
254
  title: formatMessage(ContextualMenuMessages.mergeCells),
232
- onClick: mergeCellsWithAnalytics(editorAnalyticsAPI),
255
+ onClick: mergeCellsWithAnalytics(editorAnalyticsAPI)(
256
+ INPUT_METHOD.FLOATING_TB,
257
+ ),
233
258
  selected: false,
234
259
  disabled: !canMergeCells(editorState.tr),
235
260
  },
236
261
  {
237
262
  id: 'editor.table.splitCell',
238
263
  title: formatMessage(ContextualMenuMessages.splitCell),
239
- onClick: splitCellWithAnalytics(editorAnalyticsAPI),
264
+ onClick: splitCellWithAnalytics(editorAnalyticsAPI)(
265
+ INPUT_METHOD.FLOATING_TB,
266
+ ),
240
267
  selected: false,
241
268
  disabled: !splitCell(editorState),
242
269
  },
243
- {
244
- id: 'editor.table.clearCells',
245
- title: formatMessage(ContextualMenuMessages.clearCells, {
246
- 0: Math.max(numberOfColumns, numberOfRows),
247
- }),
270
+ ];
271
+
272
+ if (pluginState?.pluginConfig?.allowDistributeColumns) {
273
+ const distributeColumnWidths: Command = (state, dispatch, view) => {
274
+ const newResizeStateWithAnalytics = view
275
+ ? getNewResizeStateFromSelectedColumns(
276
+ initialSelectionRect,
277
+ editorState,
278
+ view.domAtPos.bind(view),
279
+ getEditorContainerWidth,
280
+ )
281
+ : undefined;
282
+
283
+ if (newResizeStateWithAnalytics) {
284
+ distributeColumnsWidthsWithAnalytics(editorAnalyticsAPI)(
285
+ INPUT_METHOD.FLOATING_TB,
286
+ newResizeStateWithAnalytics,
287
+ )(state, dispatch);
288
+ return true;
289
+ }
290
+ return false;
291
+ };
292
+
293
+ options.push({
294
+ id: 'editor.table.distributeColumns',
295
+ title: formatMessage(ContextualMenuMessages.distributeColumns),
296
+ onClick: distributeColumnWidths,
297
+ selected: false,
298
+ disabled: numberOfColumns <= 1,
299
+ });
300
+ }
301
+
302
+ if (pluginState?.pluginConfig?.allowColumnSorting) {
303
+ const hasMergedCellsInTable =
304
+ getMergedCellsPositions(editorState.tr).length > 0;
305
+
306
+ options.push({
307
+ id: 'editor.table.sortColumnAsc',
308
+ title: formatMessage(ContextualMenuMessages.sortColumnASC),
248
309
  onClick: (state: EditorState, dispatch?: CommandDispatch) => {
249
- const { targetCellPosition } = getPluginState(state);
250
- emptyMultipleCellsWithAnalytics(editorAnalyticsAPI)(
310
+ sortColumnWithAnalytics(editorAnalyticsAPI)(
251
311
  INPUT_METHOD.FLOATING_TB,
252
- targetCellPosition,
312
+ initialSelectionRect.left,
313
+ SortOrder.ASC,
253
314
  )(state, dispatch);
254
315
  return true;
255
316
  },
256
317
  selected: false,
257
- disabled: false,
318
+ disabled: hasMergedCellsInTable,
319
+ });
320
+
321
+ options.push({
322
+ id: 'editor.table.sortColumnDesc',
323
+ title: formatMessage(ContextualMenuMessages.sortColumnDESC),
324
+ onClick: (state: EditorState, dispatch?: CommandDispatch) => {
325
+ sortColumnWithAnalytics(editorAnalyticsAPI)(
326
+ INPUT_METHOD.FLOATING_TB,
327
+ initialSelectionRect.left,
328
+ SortOrder.DESC,
329
+ )(state, dispatch);
330
+ return true;
331
+ },
332
+ selected: false,
333
+ disabled: hasMergedCellsInTable,
334
+ });
335
+ }
336
+
337
+ options.push({
338
+ id: 'editor.table.clearCells',
339
+ title: formatMessage(ContextualMenuMessages.clearCells, {
340
+ 0: Math.max(numberOfColumns, numberOfRows),
341
+ }),
342
+ onClick: (state: EditorState, dispatch?: CommandDispatch) => {
343
+ const { targetCellPosition } = getPluginState(state);
344
+ emptyMultipleCellsWithAnalytics(editorAnalyticsAPI)(
345
+ INPUT_METHOD.FLOATING_TB,
346
+ targetCellPosition,
347
+ )(state, dispatch);
348
+ return true;
258
349
  },
259
- ];
350
+ selected: false,
351
+ disabled: false,
352
+ elemAfter: <div css={shortcutStyle}>{tooltip(backspace)}</div>,
353
+ });
260
354
 
261
355
  return {
262
356
  id: 'editor.table.cellOptions',
263
357
  type: 'dropdown',
264
358
  title: formatMessage(tableMessages.cellOptions),
265
- hidden: true,
266
359
  options,
360
+ // Increased dropdown item width to prevent labels from being truncated
361
+ dropdownWidth: 230,
362
+ showSelected: false,
267
363
  };
268
364
  };
269
365
 
@@ -274,100 +370,129 @@ const getClosestSelectionRect = (state: EditorState): Rect | undefined => {
274
370
  : findCellRectClosestToPos(selection.$from);
275
371
  };
276
372
 
277
- export const getToolbarConfig = (
278
- getEditorContainerWidth: GetEditorContainerWidth,
279
- editorAnalyticsAPI: EditorAnalyticsAPI | undefined | null,
280
- ) => (config: PluginConfig): FloatingToolbarHandler => (state, intl) => {
281
- const tableObject = findTable(state.selection);
282
- const pluginState = getPluginState(state);
283
- const resizeState:
284
- | ColumnResizingPluginState
285
- | undefined = tableResizingPluginKey.getState(state);
286
- if (tableObject && pluginState.editorHasFocus) {
287
- const nodeType = state.schema.nodes.table;
288
- const menu = getToolbarMenuConfig(
289
- config,
290
- pluginState,
291
- intl,
292
- editorAnalyticsAPI,
293
- );
373
+ export const getToolbarConfig =
374
+ (
375
+ getEditorContainerWidth: GetEditorContainerWidth,
376
+ editorAnalyticsAPI: EditorAnalyticsAPI | undefined | null,
377
+ getEditorFeatureFlags: GetEditorFeatureFlags,
378
+ ) =>
379
+ (config: PluginConfig): FloatingToolbarHandler =>
380
+ (state, intl) => {
381
+ const tableObject = findTable(state.selection);
382
+ const pluginState = getPluginState(state);
383
+ const resizeState: ColumnResizingPluginState | undefined =
384
+ tableResizingPluginKey.getState(state);
385
+ if (tableObject && pluginState.editorHasFocus) {
386
+ const nodeType = state.schema.nodes.table;
387
+ const menu = getToolbarMenuConfig(
388
+ config,
389
+ pluginState,
390
+ intl,
391
+ editorAnalyticsAPI,
392
+ );
294
393
 
295
- const cellItems = getCellItems(
296
- config,
297
- state,
298
- intl,
299
- getEditorContainerWidth,
300
- editorAnalyticsAPI,
301
- );
394
+ const { tableCellOptionsInFloatingToolbar } =
395
+ getEditorFeatureFlags() || {};
396
+ const cellItems = getCellItems(
397
+ config,
398
+ state,
399
+ intl,
400
+ getEditorContainerWidth,
401
+ editorAnalyticsAPI,
402
+ tableCellOptionsInFloatingToolbar,
403
+ );
404
+ const colorPicker = getColorPicker(
405
+ state,
406
+ menu,
407
+ intl,
408
+ getEditorContainerWidth,
409
+ editorAnalyticsAPI,
410
+ tableCellOptionsInFloatingToolbar,
411
+ );
302
412
 
303
- // Check if we need to show confirm dialog for delete button
304
- let confirmDialog;
305
- const localId: string | undefined = tableObject.node.attrs.localId;
413
+ // Check if we need to show confirm dialog for delete button
414
+ let confirmDialog;
415
+ const localId: string | undefined = tableObject.node.attrs.localId;
306
416
 
307
- if (localId && isReferencedSource(state, localId)) {
308
- confirmDialog = {
309
- okButtonLabel: intl.formatMessage(
310
- tableMessages.confirmDeleteLinkedModalOKButton,
311
- ),
312
- message: intl.formatMessage(
313
- tableMessages.confirmDeleteLinkedModalMessage,
314
- ),
315
- };
316
- }
417
+ if (localId && isReferencedSource(state, localId)) {
418
+ confirmDialog = {
419
+ okButtonLabel: intl.formatMessage(
420
+ tableMessages.confirmDeleteLinkedModalOKButton,
421
+ ),
422
+ message: intl.formatMessage(
423
+ tableMessages.confirmDeleteLinkedModalMessage,
424
+ ),
425
+ };
426
+ }
317
427
 
318
- const getDomRef = (editorView: EditorView) => {
319
- let element: HTMLElement | undefined;
320
- const domAtPos = editorView.domAtPos.bind(editorView);
321
- const parent = findParentDomRefOfType(
322
- nodeType,
323
- domAtPos,
324
- )(state.selection);
325
- if (parent) {
326
- const tableRef =
327
- (parent as HTMLElement).querySelector<HTMLTableElement>('table') ||
328
- undefined;
329
- if (tableRef) {
330
- element =
331
- closestElement(
332
- tableRef,
333
- `.${TableCssClassName.TABLE_NODE_WRAPPER}`,
334
- ) || undefined;
428
+ const getDomRef = (editorView: EditorView) => {
429
+ let element: HTMLElement | undefined;
430
+ const domAtPos = editorView.domAtPos.bind(editorView);
431
+ const parent = findParentDomRefOfType(
432
+ nodeType,
433
+ domAtPos,
434
+ )(state.selection);
435
+ if (parent) {
436
+ const tableRef =
437
+ (parent as HTMLElement).querySelector<HTMLTableElement>('table') ||
438
+ undefined;
439
+ if (tableRef) {
440
+ element =
441
+ closestElement(
442
+ tableRef,
443
+ `.${TableCssClassName.TABLE_NODE_WRAPPER}`,
444
+ ) || undefined;
445
+ }
335
446
  }
336
- }
337
447
 
338
- return element;
339
- };
448
+ return element;
449
+ };
340
450
 
341
- return {
342
- title: 'Table floating controls',
343
- getDomRef,
344
- nodeType,
345
- offset: [0, 3],
346
- items: [
347
- menu,
348
- separator(menu.hidden),
349
- ...cellItems,
350
- {
351
- type: 'extensions-placeholder',
352
- separator: 'end',
353
- },
354
- {
355
- id: 'editor.table.delete',
356
- type: 'button',
357
- appearance: 'danger',
358
- icon: RemoveIcon,
359
- onClick: deleteTableWithAnalytics(editorAnalyticsAPI),
360
- disabled: !!resizeState && !!resizeState.dragging,
361
- onMouseEnter: hoverTable(true),
362
- onMouseLeave: clearHoverSelection(),
363
- title: intl.formatMessage(commonMessages.remove),
364
- confirmDialog,
365
- },
366
- ],
367
- };
368
- }
369
- return;
370
- };
451
+ return {
452
+ title: 'Table floating controls',
453
+ getDomRef,
454
+ nodeType,
455
+ offset: [0, 3],
456
+ items: [
457
+ menu,
458
+ separator(menu.hidden),
459
+ ...cellItems,
460
+ ...colorPicker,
461
+ {
462
+ type: 'extensions-placeholder',
463
+ separator: 'end',
464
+ },
465
+ {
466
+ type: 'copy-button',
467
+ items: [
468
+ {
469
+ state,
470
+ formatMessage: intl.formatMessage,
471
+ nodeType,
472
+ onMouseEnter: hoverTable(false, true),
473
+ onMouseLeave: clearHoverSelection(),
474
+ },
475
+ { type: 'separator' },
476
+ ],
477
+ },
478
+ {
479
+ id: 'editor.table.delete',
480
+ type: 'button',
481
+ appearance: 'danger',
482
+ icon: RemoveIcon,
483
+ onClick: deleteTableWithAnalytics(editorAnalyticsAPI),
484
+ disabled: !!resizeState && !!resizeState.dragging,
485
+ onMouseEnter: hoverTable(true),
486
+ onMouseLeave: clearHoverSelection(),
487
+ title: intl.formatMessage(commonMessages.remove),
488
+ confirmDialog,
489
+ },
490
+ ],
491
+ scrollable: true,
492
+ };
493
+ }
494
+ return;
495
+ };
371
496
 
372
497
  const separator = (hidden?: boolean): FloatingToolbarItem<Command> => {
373
498
  return {
@@ -382,8 +507,12 @@ const getCellItems = (
382
507
  { formatMessage }: ToolbarMenuContext,
383
508
  getEditorContainerWidth: GetEditorContainerWidth,
384
509
  editorAnalyticsAPI: EditorAnalyticsAPI | undefined | null,
510
+ tableCellOptionsInFloatingToolbar?: boolean,
385
511
  ): Array<FloatingToolbarItem<Command>> => {
386
- if (pluginConfig.allowCellOptionsInFloatingToolbar) {
512
+ if (
513
+ pluginConfig.allowCellOptionsInFloatingToolbar ||
514
+ tableCellOptionsInFloatingToolbar
515
+ ) {
387
516
  const initialSelectionRect = getClosestSelectionRect(state);
388
517
  if (initialSelectionRect) {
389
518
  const cellOptions = getToolbarCellOptionsConfig(
@@ -398,3 +527,49 @@ const getCellItems = (
398
527
  }
399
528
  return [];
400
529
  };
530
+
531
+ const getColorPicker = (
532
+ state: EditorState,
533
+ menu: FloatingToolbarItem<Command>,
534
+ { formatMessage }: ToolbarMenuContext,
535
+ getEditorContainerWidth: GetEditorContainerWidth,
536
+ editorAnalyticsAPI: EditorAnalyticsAPI | null | undefined,
537
+ tableCellOptionsInFloatingToolbar?: boolean,
538
+ ): Array<FloatingToolbarItem<Command>> => {
539
+ const { targetCellPosition, pluginConfig } = getPluginState(state);
540
+ if (
541
+ !pluginConfig.allowBackgroundColor ||
542
+ !tableCellOptionsInFloatingToolbar
543
+ ) {
544
+ return [];
545
+ }
546
+ const node = targetCellPosition
547
+ ? state.doc.nodeAt(targetCellPosition)
548
+ : undefined;
549
+ const currentBackground = node?.attrs?.background || '#ffffff';
550
+ const defaultPalette = cellBackgroundColorPalette.find(
551
+ (item) => item.value === currentBackground,
552
+ ) || {
553
+ label: 'Custom',
554
+ value: currentBackground,
555
+ border: DEFAULT_BORDER_COLOR,
556
+ };
557
+
558
+ return [
559
+ {
560
+ id: 'editor.panel.colorPicker',
561
+ title: formatMessage(ContextualMenuMessages.cellBackground),
562
+ type: 'select',
563
+ selectType: 'color',
564
+ defaultValue: defaultPalette,
565
+ options: cellBackgroundColorPalette,
566
+ onChange: (option: any) =>
567
+ setColorWithAnalytics(editorAnalyticsAPI)(
568
+ INPUT_METHOD.FLOATING_TB,
569
+ option.value,
570
+ targetCellPosition,
571
+ ),
572
+ },
573
+ separator(menu.hidden),
574
+ ];
575
+ };