@atlaskit/editor-plugin-table 7.16.11 → 7.16.13

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 (254) hide show
  1. package/.eslintrc.js +3 -3
  2. package/CHANGELOG.md +16 -0
  3. package/dist/cjs/commands/misc.js +3 -3
  4. package/dist/cjs/nodeviews/TableCell.js +10 -10
  5. package/dist/cjs/nodeviews/TableContainer.js +83 -27
  6. package/dist/cjs/nodeviews/TableResizer.js +40 -19
  7. package/dist/cjs/nodeviews/TableRow.js +23 -23
  8. package/dist/cjs/pm-plugins/table-resizing/plugin.js +3 -3
  9. package/dist/cjs/pm-plugins/table-resizing/utils/resize-state.js +4 -4
  10. package/dist/cjs/pm-plugins/table-resizing/utils/scale-table.js +3 -3
  11. package/dist/cjs/ui/FloatingContextualMenu/styles.js +1 -1
  12. package/dist/cjs/ui/FloatingDragMenu/styles.js +1 -1
  13. package/dist/cjs/ui/common-styles.js +13 -13
  14. package/dist/cjs/ui/ui-styles.js +25 -25
  15. package/dist/cjs/utils/guidelines.js +7 -4
  16. package/dist/cjs/utils/merged-cells.js +3 -3
  17. package/dist/cjs/utils/snapping.js +7 -8
  18. package/dist/es2019/commands/misc.js +3 -3
  19. package/dist/es2019/nodeviews/TableContainer.js +70 -9
  20. package/dist/es2019/nodeviews/TableResizer.js +42 -21
  21. package/dist/es2019/nodeviews/TableRow.js +21 -21
  22. package/dist/es2019/pm-plugins/table-resizing/plugin.js +3 -3
  23. package/dist/es2019/pm-plugins/table-resizing/utils/resize-state.js +4 -4
  24. package/dist/es2019/pm-plugins/table-resizing/utils/scale-table.js +3 -3
  25. package/dist/es2019/ui/FloatingContextualMenu/styles.js +47 -47
  26. package/dist/es2019/ui/FloatingDragMenu/styles.js +30 -30
  27. package/dist/es2019/ui/common-styles.js +802 -816
  28. package/dist/es2019/ui/ui-styles.js +665 -678
  29. package/dist/es2019/utils/guidelines.js +5 -2
  30. package/dist/es2019/utils/merged-cells.js +3 -3
  31. package/dist/es2019/utils/snapping.js +5 -6
  32. package/dist/esm/commands/misc.js +3 -3
  33. package/dist/esm/nodeviews/TableCell.js +10 -10
  34. package/dist/esm/nodeviews/TableContainer.js +85 -29
  35. package/dist/esm/nodeviews/TableResizer.js +42 -21
  36. package/dist/esm/nodeviews/TableRow.js +23 -23
  37. package/dist/esm/pm-plugins/table-resizing/plugin.js +3 -3
  38. package/dist/esm/pm-plugins/table-resizing/utils/resize-state.js +4 -4
  39. package/dist/esm/pm-plugins/table-resizing/utils/scale-table.js +3 -3
  40. package/dist/esm/ui/FloatingContextualMenu/styles.js +1 -1
  41. package/dist/esm/ui/FloatingDragMenu/styles.js +1 -1
  42. package/dist/esm/ui/common-styles.js +13 -13
  43. package/dist/esm/ui/ui-styles.js +25 -25
  44. package/dist/esm/utils/guidelines.js +6 -3
  45. package/dist/esm/utils/merged-cells.js +3 -3
  46. package/dist/esm/utils/snapping.js +6 -7
  47. package/dist/types/nodeviews/TableResizer.d.ts +2 -1
  48. package/dist/types/pm-plugins/decorations/utils/index.d.ts +1 -1
  49. package/dist/types/pm-plugins/drag-and-drop/utils/autoscrollers.d.ts +1 -1
  50. package/dist/types/pm-plugins/drag-and-drop/utils/getDragBehaviour.d.ts +1 -1
  51. package/dist/types/pm-plugins/table-resizing/utils/index.d.ts +1 -1
  52. package/dist/types/ui/ColumnResizeWidget/index.d.ts +1 -1
  53. package/dist/types/ui/FloatingAlignmentButtons/FloatingAlignmentButtons.d.ts +1 -1
  54. package/dist/types/ui/FloatingToolbarLabel/FloatingToolbarLabel.d.ts +1 -1
  55. package/dist/types/ui/TableFloatingColumnControls/ColumnDropTargets/ColumnDropTarget.d.ts +1 -1
  56. package/dist/types/ui/TableFloatingControls/CornerControls/index.d.ts +1 -1
  57. package/dist/types/ui/icons/DragHandleDisabledIcon.d.ts +1 -1
  58. package/dist/types/utils/guidelines.d.ts +2 -1
  59. package/dist/types/utils/snapping.d.ts +3 -2
  60. package/dist/types-ts4.5/nodeviews/TableResizer.d.ts +2 -1
  61. package/dist/types-ts4.5/pm-plugins/decorations/utils/index.d.ts +1 -1
  62. package/dist/types-ts4.5/pm-plugins/drag-and-drop/utils/autoscrollers.d.ts +1 -1
  63. package/dist/types-ts4.5/pm-plugins/drag-and-drop/utils/getDragBehaviour.d.ts +1 -1
  64. package/dist/types-ts4.5/pm-plugins/table-resizing/utils/index.d.ts +1 -1
  65. package/dist/types-ts4.5/ui/ColumnResizeWidget/index.d.ts +1 -1
  66. package/dist/types-ts4.5/ui/FloatingAlignmentButtons/FloatingAlignmentButtons.d.ts +1 -1
  67. package/dist/types-ts4.5/ui/FloatingToolbarLabel/FloatingToolbarLabel.d.ts +1 -1
  68. package/dist/types-ts4.5/ui/TableFloatingColumnControls/ColumnDropTargets/ColumnDropTarget.d.ts +1 -1
  69. package/dist/types-ts4.5/ui/TableFloatingControls/CornerControls/index.d.ts +1 -1
  70. package/dist/types-ts4.5/ui/icons/DragHandleDisabledIcon.d.ts +1 -1
  71. package/dist/types-ts4.5/utils/guidelines.d.ts +2 -1
  72. package/dist/types-ts4.5/utils/snapping.d.ts +3 -2
  73. package/docs/0-intro.tsx +9 -7
  74. package/package.json +3 -3
  75. package/report.api.md +67 -66
  76. package/src/commands/clear.ts +36 -44
  77. package/src/commands/collapse.ts +8 -8
  78. package/src/commands/column-resize.ts +412 -452
  79. package/src/commands/delete.ts +14 -14
  80. package/src/commands/display-mode.ts +10 -11
  81. package/src/commands/go-to-next-cell.ts +48 -54
  82. package/src/commands/hover.ts +210 -227
  83. package/src/commands/index.ts +35 -35
  84. package/src/commands/insert.ts +208 -235
  85. package/src/commands/misc.ts +655 -748
  86. package/src/commands/referentiality.ts +9 -9
  87. package/src/commands/selection.ts +433 -563
  88. package/src/commands/sort.ts +68 -86
  89. package/src/commands/split-cell.ts +14 -14
  90. package/src/commands/toggle.ts +69 -67
  91. package/src/commands-with-analytics.ts +570 -639
  92. package/src/create-plugin-config.ts +13 -13
  93. package/src/event-handlers.ts +513 -612
  94. package/src/handlers.ts +120 -133
  95. package/src/nodeviews/ExternalDropTargets.tsx +68 -73
  96. package/src/nodeviews/OverflowShadowsObserver.ts +148 -157
  97. package/src/nodeviews/TableCell.ts +47 -54
  98. package/src/nodeviews/TableComponent.tsx +1018 -1112
  99. package/src/nodeviews/TableComponentWithSharedState.tsx +91 -94
  100. package/src/nodeviews/TableContainer.tsx +384 -340
  101. package/src/nodeviews/TableNodeViewBase.ts +19 -24
  102. package/src/nodeviews/TableResizer.tsx +642 -653
  103. package/src/nodeviews/TableRow.ts +580 -629
  104. package/src/nodeviews/TableStickyScrollbar.ts +173 -190
  105. package/src/nodeviews/__mocks__/OverflowShadowsObserver.ts +8 -8
  106. package/src/nodeviews/__mocks__/OverridableMock.ts +14 -15
  107. package/src/nodeviews/table.tsx +345 -375
  108. package/src/nodeviews/types.ts +21 -24
  109. package/src/nodeviews/update-overflow-shadows.ts +8 -14
  110. package/src/plugin.tsx +578 -603
  111. package/src/pm-plugins/analytics/actions.ts +10 -12
  112. package/src/pm-plugins/analytics/commands.ts +31 -37
  113. package/src/pm-plugins/analytics/plugin-factory.ts +4 -2
  114. package/src/pm-plugins/analytics/plugin-key.ts +1 -3
  115. package/src/pm-plugins/analytics/plugin.ts +60 -70
  116. package/src/pm-plugins/analytics/reducer.ts +19 -19
  117. package/src/pm-plugins/analytics/types.ts +10 -10
  118. package/src/pm-plugins/analytics/utils/moved-event.ts +38 -38
  119. package/src/pm-plugins/decorations/plugin.ts +58 -77
  120. package/src/pm-plugins/decorations/utils/column-controls.ts +59 -71
  121. package/src/pm-plugins/decorations/utils/column-resizing.ts +50 -57
  122. package/src/pm-plugins/decorations/utils/compose-decorations.ts +6 -6
  123. package/src/pm-plugins/decorations/utils/index.ts +3 -6
  124. package/src/pm-plugins/decorations/utils/types.ts +7 -12
  125. package/src/pm-plugins/default-table-selection.ts +3 -3
  126. package/src/pm-plugins/drag-and-drop/actions.ts +25 -25
  127. package/src/pm-plugins/drag-and-drop/commands-with-analytics.ts +158 -190
  128. package/src/pm-plugins/drag-and-drop/commands.ts +154 -170
  129. package/src/pm-plugins/drag-and-drop/consts.ts +4 -5
  130. package/src/pm-plugins/drag-and-drop/plugin-factory.ts +23 -20
  131. package/src/pm-plugins/drag-and-drop/plugin-key.ts +1 -3
  132. package/src/pm-plugins/drag-and-drop/plugin.ts +329 -383
  133. package/src/pm-plugins/drag-and-drop/reducer.ts +30 -30
  134. package/src/pm-plugins/drag-and-drop/types.ts +8 -8
  135. package/src/pm-plugins/drag-and-drop/utils/autoscrollers.ts +38 -41
  136. package/src/pm-plugins/drag-and-drop/utils/getDragBehaviour.ts +3 -6
  137. package/src/pm-plugins/drag-and-drop/utils/monitor.ts +57 -70
  138. package/src/pm-plugins/keymap.ts +208 -220
  139. package/src/pm-plugins/main.ts +348 -400
  140. package/src/pm-plugins/plugin-factory.ts +32 -34
  141. package/src/pm-plugins/safari-delete-composition-text-issue-workaround.ts +83 -97
  142. package/src/pm-plugins/sticky-headers/commands.ts +2 -6
  143. package/src/pm-plugins/sticky-headers/plugin-key.ts +1 -3
  144. package/src/pm-plugins/sticky-headers/plugin-state.ts +41 -44
  145. package/src/pm-plugins/sticky-headers/plugin.ts +4 -4
  146. package/src/pm-plugins/sticky-headers/types.ts +8 -8
  147. package/src/pm-plugins/sticky-headers/util.ts +10 -10
  148. package/src/pm-plugins/table-analytics.ts +70 -72
  149. package/src/pm-plugins/table-local-id.ts +180 -184
  150. package/src/pm-plugins/table-resizing/commands.ts +72 -85
  151. package/src/pm-plugins/table-resizing/event-handlers.ts +298 -317
  152. package/src/pm-plugins/table-resizing/plugin-factory.ts +10 -10
  153. package/src/pm-plugins/table-resizing/plugin-key.ts +1 -3
  154. package/src/pm-plugins/table-resizing/plugin.ts +61 -68
  155. package/src/pm-plugins/table-resizing/reducer.ts +30 -33
  156. package/src/pm-plugins/table-resizing/utils/colgroup.ts +84 -84
  157. package/src/pm-plugins/table-resizing/utils/column-state.ts +78 -81
  158. package/src/pm-plugins/table-resizing/utils/content-width.ts +94 -114
  159. package/src/pm-plugins/table-resizing/utils/dom.ts +93 -110
  160. package/src/pm-plugins/table-resizing/utils/index.ts +29 -34
  161. package/src/pm-plugins/table-resizing/utils/misc.ts +94 -119
  162. package/src/pm-plugins/table-resizing/utils/resize-column.ts +93 -106
  163. package/src/pm-plugins/table-resizing/utils/resize-logic.ts +240 -257
  164. package/src/pm-plugins/table-resizing/utils/resize-state.ts +343 -372
  165. package/src/pm-plugins/table-resizing/utils/scale-table.ts +202 -207
  166. package/src/pm-plugins/table-resizing/utils/types.ts +17 -17
  167. package/src/pm-plugins/table-resizing/utils/unit-to-number.ts +1 -2
  168. package/src/pm-plugins/table-selection-keymap.ts +25 -51
  169. package/src/pm-plugins/table-width.ts +191 -204
  170. package/src/pm-plugins/view-mode-sort/index.ts +223 -227
  171. package/src/pm-plugins/view-mode-sort/plugin-key.ts +3 -2
  172. package/src/pm-plugins/view-mode-sort/types.ts +12 -12
  173. package/src/pm-plugins/view-mode-sort/utils.ts +108 -117
  174. package/src/reducer.ts +139 -155
  175. package/src/toolbar.tsx +815 -905
  176. package/src/transforms/column-width.ts +186 -213
  177. package/src/transforms/delete-columns.ts +208 -222
  178. package/src/transforms/delete-rows.ts +117 -121
  179. package/src/transforms/fix-tables.ts +190 -215
  180. package/src/transforms/merge.ts +263 -269
  181. package/src/transforms/replace-table.ts +27 -43
  182. package/src/transforms/split.ts +65 -75
  183. package/src/types.ts +421 -427
  184. package/src/ui/ColumnResizeWidget/index.tsx +40 -47
  185. package/src/ui/DragHandle/HandleIconComponent.tsx +9 -13
  186. package/src/ui/DragHandle/index.tsx +221 -250
  187. package/src/ui/DragPreview/index.tsx +35 -35
  188. package/src/ui/FloatingAlignmentButtons/FloatingAlignmentButtons.tsx +33 -41
  189. package/src/ui/FloatingContextualButton/FixedButton.tsx +154 -157
  190. package/src/ui/FloatingContextualButton/index.tsx +109 -115
  191. package/src/ui/FloatingContextualButton/styles.ts +43 -46
  192. package/src/ui/FloatingContextualMenu/ContextualMenu.tsx +634 -694
  193. package/src/ui/FloatingContextualMenu/index.tsx +83 -101
  194. package/src/ui/FloatingContextualMenu/styles.ts +57 -65
  195. package/src/ui/FloatingDeleteButton/DeleteButton.tsx +37 -37
  196. package/src/ui/FloatingDeleteButton/getPopUpOptions.ts +47 -57
  197. package/src/ui/FloatingDeleteButton/index.tsx +319 -350
  198. package/src/ui/FloatingDragMenu/DragMenu.tsx +555 -596
  199. package/src/ui/FloatingDragMenu/DropdownMenu.tsx +152 -162
  200. package/src/ui/FloatingDragMenu/index.tsx +88 -102
  201. package/src/ui/FloatingDragMenu/styles.ts +51 -54
  202. package/src/ui/FloatingInsertButton/InsertButton.tsx +204 -217
  203. package/src/ui/FloatingInsertButton/getPopupOptions.ts +100 -115
  204. package/src/ui/FloatingInsertButton/index.tsx +248 -292
  205. package/src/ui/FloatingToolbarLabel/FloatingToolbarLabel.tsx +24 -29
  206. package/src/ui/TableFloatingColumnControls/ColumnControls/index.tsx +308 -329
  207. package/src/ui/TableFloatingColumnControls/ColumnDropTargets/ColumnDropTarget.tsx +85 -94
  208. package/src/ui/TableFloatingColumnControls/ColumnDropTargets/index.tsx +46 -46
  209. package/src/ui/TableFloatingColumnControls/index.tsx +116 -136
  210. package/src/ui/TableFloatingControls/CornerControls/ClassicCornerControls.tsx +79 -91
  211. package/src/ui/TableFloatingControls/CornerControls/DragCornerControls.tsx +95 -102
  212. package/src/ui/TableFloatingControls/CornerControls/index.tsx +1 -4
  213. package/src/ui/TableFloatingControls/CornerControls/types.ts +8 -8
  214. package/src/ui/TableFloatingControls/FloatingControlsWithSelection.tsx +50 -50
  215. package/src/ui/TableFloatingControls/NumberColumn/index.tsx +111 -124
  216. package/src/ui/TableFloatingControls/RowControls/ClassicControls.tsx +86 -105
  217. package/src/ui/TableFloatingControls/RowControls/DragControls.tsx +305 -341
  218. package/src/ui/TableFloatingControls/RowDropTarget/index.tsx +72 -75
  219. package/src/ui/TableFloatingControls/index.tsx +191 -193
  220. package/src/ui/TableFullWidthLabel/index.tsx +20 -20
  221. package/src/ui/common-styles.ts +880 -912
  222. package/src/ui/consts.ts +29 -74
  223. package/src/ui/icons/AddColLeftIcon.tsx +33 -39
  224. package/src/ui/icons/AddColRightIcon.tsx +33 -39
  225. package/src/ui/icons/AddRowAboveIcon.tsx +16 -22
  226. package/src/ui/icons/AddRowBelowIcon.tsx +33 -39
  227. package/src/ui/icons/DisplayModeIcon.tsx +31 -31
  228. package/src/ui/icons/DragHandleDisabledIcon.tsx +19 -21
  229. package/src/ui/icons/DragHandleIcon.tsx +12 -12
  230. package/src/ui/icons/DragInMotionIcon.tsx +45 -52
  231. package/src/ui/icons/MergeCellsIcon.tsx +22 -28
  232. package/src/ui/icons/MinimisedHandle.tsx +9 -9
  233. package/src/ui/icons/SplitCellIcon.tsx +30 -36
  234. package/src/ui/ui-styles.ts +769 -798
  235. package/src/utils/alignment.ts +1 -1
  236. package/src/utils/analytics.ts +192 -208
  237. package/src/utils/collapse.ts +55 -64
  238. package/src/utils/column-controls.ts +237 -254
  239. package/src/utils/create.ts +30 -30
  240. package/src/utils/decoration.ts +482 -502
  241. package/src/utils/dom.ts +127 -134
  242. package/src/utils/drag-menu.ts +322 -373
  243. package/src/utils/get-allow-add-column-custom-step.ts +4 -5
  244. package/src/utils/guidelines.ts +16 -21
  245. package/src/utils/index.ts +68 -68
  246. package/src/utils/merged-cells.ts +245 -254
  247. package/src/utils/nodes.ts +91 -106
  248. package/src/utils/paste.ts +119 -135
  249. package/src/utils/row-controls.ts +199 -213
  250. package/src/utils/selection.ts +77 -87
  251. package/src/utils/snapping.ts +87 -100
  252. package/src/utils/table.ts +44 -44
  253. package/src/utils/transforms.ts +5 -5
  254. package/src/utils/update-plugin-state-decorations.ts +5 -9
@@ -4,10 +4,13 @@ import { calculateDefaultSnappings, calculateDefaultTablePreserveSnappings } fro
4
4
  // NOTE: We have to take 1 pixel off every length due to the fact that the tbody is 1px smaller then the table container.
5
5
  // If we don't do this then the guidelines will not align correctly to the edge of the table
6
6
  export const defaultGuidelines = createFixedGuidelinesFromLengths([0, ...calculateDefaultSnappings(-1)]);
7
- export const defaultGuidelinesForPreserveTable = (editorContainerWidth, exclude = {
7
+ export const PRESERVE_TABLE_GUIDELINES_LENGTH_OFFSET = -1;
8
+ export const defaultGuidelinesForPreserveTable = (lengthOffset, editorContainerWidth, exclude = {
8
9
  innerGuidelines: false,
9
10
  breakoutPoints: false
10
11
  }) => {
11
- const lengths = calculateDefaultTablePreserveSnappings(-1, editorContainerWidth, exclude);
12
+ const lengths = calculateDefaultTablePreserveSnappings(lengthOffset,
13
+ // was hardcoded to -1 here, created PRESERVE_TABLE_GUIDELINES_LENGTH_OFFSET instead.
14
+ editorContainerWidth, exclude);
12
15
  return createFixedGuidelinesFromLengths(lengths, undefined, true);
13
16
  };
@@ -213,9 +213,9 @@ export const checkEdgeHasMergedCells = (indexes, tableMap, direction) => {
213
213
  let isBottomSideHaveMergedCells = false;
214
214
 
215
215
  /**
216
- * this is to check if the cell position from last focused table is overflow. since if you selection from a cell in 6th row and 7th column cell in a 7x8 table to 3x3 table, the cell position will be overflow because new table dont have this cell at all.
217
- TODO: ED-22335 this should better called only when hover over the drag handle.
218
- */
216
+ * this is to check if the cell position from last focused table is overflow. since if you selection from a cell in 6th row and 7th column cell in a 7x8 table to 3x3 table, the cell position will be overflow because new table dont have this cell at all.
217
+ TODO: ED-22335 this should better called only when hover over the drag handle.
218
+ */
219
219
  let isOldMinIndex = !map[minIndex - 1] || !map[minIndex];
220
220
  let isOldMaxIndex = !map[maxIndex + 1] || !map[maxIndex];
221
221
  if (minIndex > 0 && !isOldMinIndex) {
@@ -1,6 +1,5 @@
1
1
  import { isVerticalPosition } from '@atlaskit/editor-common/guideline';
2
2
  import { akEditorCalculatedWideLayoutWidth, akEditorDefaultLayoutWidth, akEditorFullWidthLayoutWidth, akEditorGutterPadding } from '@atlaskit/editor-shared-styles';
3
- import { tableResizerWidth } from '../ui/consts';
4
3
  const numberOfLanesInDefaultLayoutWidth = 12;
5
4
  const calculateSubSnappingWidths = (totalLanes, totalWidth) => new Array(Math.round(totalLanes / 2) - 1).fill(totalWidth / totalLanes).map((v, i) => v * (i + 1) * 2);
6
5
  export const calculateDefaultSnappings = (lengthOffset = 0) => [...calculateSubSnappingWidths(numberOfLanesInDefaultLayoutWidth, akEditorDefaultLayoutWidth + lengthOffset), akEditorDefaultLayoutWidth + lengthOffset, akEditorCalculatedWideLayoutWidth + lengthOffset, akEditorFullWidthLayoutWidth + lengthOffset];
@@ -9,7 +8,7 @@ export const calculateDefaultTablePreserveSnappings = (lengthOffset = 0, editorC
9
8
  innerGuidelines: false,
10
9
  breakoutPoints: false
11
10
  }) => {
12
- const dynamicFullWidthLine = editorContainerWith - akEditorGutterPadding * 2 >= akEditorFullWidthLayoutWidth ? akEditorFullWidthLayoutWidth : editorContainerWith - akEditorGutterPadding * 2 - tableResizerWidth;
11
+ const dynamicFullWidthLine = editorContainerWith - akEditorGutterPadding * 2 >= akEditorFullWidthLayoutWidth ? akEditorFullWidthLayoutWidth : editorContainerWith - akEditorGutterPadding * 2;
13
12
  const guides = [dynamicFullWidthLine - lengthOffset];
14
13
  if (!exclude.breakoutPoints) {
15
14
  guides.unshift(akEditorDefaultLayoutWidth + lengthOffset, akEditorCalculatedWideLayoutWidth + lengthOffset);
@@ -20,17 +19,17 @@ export const calculateDefaultTablePreserveSnappings = (lengthOffset = 0, editorC
20
19
  return guides;
21
20
  };
22
21
  export const defaultSnappingWidths = calculateDefaultSnappings();
23
-
22
+ export const PRESERVE_TABLE_SNAPPING_LENGTH_OFFSET = 0;
24
23
  // FF TablePreserve for defaultSnappingWidths
25
- export const defaultTablePreserveSnappingWidths = (editorContainerWidth, exclude = {
24
+ export const defaultTablePreserveSnappingWidths = (lengthOffset, editorContainerWidth, exclude = {
26
25
  innerGuidelines: false,
27
26
  breakoutPoints: false
28
27
  }) => {
29
- return editorContainerWidth - akEditorGutterPadding * 2 > akEditorFullWidthLayoutWidth ? calculateDefaultSnappings() : calculateDefaultTablePreserveSnappings(0, editorContainerWidth, exclude);
28
+ return editorContainerWidth - akEditorGutterPadding * 2 > akEditorFullWidthLayoutWidth ? calculateDefaultSnappings() : calculateDefaultTablePreserveSnappings(lengthOffset, editorContainerWidth, exclude); // lengthOffset was hardcoded 0 here, created PRESERVE_TABLE_SNAPPING_LENGTH_OFFSET instead.
30
29
  };
31
30
 
32
31
  /**
33
- * Returns keys of guidelines that are closest to the table and withthin the snapGap
32
+ * Returns keys of guidelines that are closest to the table and within the snapGap
34
33
  */
35
34
  export const findClosestSnap = (currentWidth, snapWidths, guidelines, snapGap = 0, tolerance = 0) => {
36
35
  const closestGapIndex = snapWidths.reduce((prev, curr, index) => Math.abs(curr - currentWidth) < Math.abs(snapWidths[prev] - currentWidth) ? index : prev, 0);
@@ -268,9 +268,9 @@ export var moveCursorBackward = function moveCursorBackward(state, dispatch) {
268
268
  }
269
269
 
270
270
  /*
271
- ensure we're just at a top level paragraph
272
- otherwise, perform regular backspace behaviour
273
- */
271
+ ensure we're just at a top level paragraph
272
+ otherwise, perform regular backspace behaviour
273
+ */
274
274
  var grandparent = $cursor.node($cursor.depth - 1);
275
275
  if ($cursor.parent.type !== state.schema.nodes.paragraph || grandparent && grandparent.type !== state.schema.nodes.doc) {
276
276
  return false;
@@ -10,8 +10,8 @@ import { getCellAttrs, getCellDomAttrs } from '@atlaskit/adf-schema';
10
10
  import TableNodeView from './TableNodeViewBase';
11
11
  var DEFAULT_COL_SPAN = 1;
12
12
  var DEFAULT_ROW_SPAN = 1;
13
- var TableCell = /*#__PURE__*/function (_ref) {
14
- _inherits(TableCell, _ref);
13
+ var TableCell = /*#__PURE__*/function (_TableNodeView) {
14
+ _inherits(TableCell, _TableNodeView);
15
15
  var _super = _createSuper(TableCell);
16
16
  function TableCell(node, view, getPos, eventDispatcher) {
17
17
  _classCallCheck(this, TableCell);
@@ -46,20 +46,20 @@ var TableCell = /*#__PURE__*/function (_ref) {
46
46
  }
47
47
 
48
48
  // added + changed attributes
49
- var addedAttrs = Object.entries(nextAttrs).filter(function (_ref2) {
50
- var _ref3 = _slicedToArray(_ref2, 2),
51
- key = _ref3[0],
52
- value = _ref3[1];
49
+ var addedAttrs = Object.entries(nextAttrs).filter(function (_ref) {
50
+ var _ref2 = _slicedToArray(_ref, 2),
51
+ key = _ref2[0],
52
+ value = _ref2[1];
53
53
  return attrs[key] !== value;
54
54
  });
55
55
  var removedAttrs = Object.keys(attrs).filter(function (key) {
56
56
  return !nextAttrs.hasOwnProperty(key);
57
57
  });
58
58
  if (addedAttrs.length || removedAttrs.length) {
59
- addedAttrs.forEach(function (_ref4) {
60
- var _ref5 = _slicedToArray(_ref4, 2),
61
- key = _ref5[0],
62
- value = _ref5[1];
59
+ addedAttrs.forEach(function (_ref3) {
60
+ var _ref4 = _slicedToArray(_ref3, 2),
61
+ key = _ref4[0],
62
+ value = _ref4[1];
63
63
  return _this.dom.setAttribute(key, value || '');
64
64
  });
65
65
  removedAttrs.forEach(function (key) {
@@ -1,9 +1,10 @@
1
1
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
- import React, { forwardRef, useCallback, useMemo, useRef, useState } from 'react';
2
+ import React, { forwardRef, useCallback, useEffect, useMemo, useRef, useState } from 'react';
3
3
  import classNames from 'classnames';
4
4
  import { useSharedPluginState } from '@atlaskit/editor-common/hooks';
5
5
  import { getTableContainerWidth } from '@atlaskit/editor-common/node-width';
6
- import { akEditorDefaultLayoutWidth, akEditorGutterPadding, akEditorMediaResizeHandlerPaddingWide, akEditorMobileBreakoutPoint } from '@atlaskit/editor-shared-styles';
6
+ import { akEditorDefaultLayoutWidth, akEditorGutterPadding, akEditorMobileBreakoutPoint } from '@atlaskit/editor-shared-styles';
7
+ import { setTableAlignmentWithTableContentWithPos } from '../commands/misc';
7
8
  import { TABLE_MAX_WIDTH } from '../pm-plugins/table-resizing/utils';
8
9
  import { TableCssClassName as ClassName } from '../types';
9
10
  import { TableResizer } from './TableResizer';
@@ -35,8 +36,33 @@ var leftAlignStyle = {
35
36
  };
36
37
  var AlignmentTableContainer = function AlignmentTableContainer(_ref2) {
37
38
  var node = _ref2.node,
38
- children = _ref2.children;
39
+ children = _ref2.children,
40
+ pluginInjectionApi = _ref2.pluginInjectionApi,
41
+ getPos = _ref2.getPos,
42
+ editorView = _ref2.editorView;
39
43
  var alignment = node.attrs.layout;
44
+ var _useSharedPluginState = useSharedPluginState(pluginInjectionApi, ['table']),
45
+ tableState = _useSharedPluginState.tableState;
46
+ useEffect(function () {
47
+ if (tableState && editorView && getPos) {
48
+ var wasFullWidthModeEnabled = tableState.wasFullWidthModeEnabled,
49
+ isFullWidthModeEnabled = tableState.isFullWidthModeEnabled;
50
+ if (wasFullWidthModeEnabled && !isFullWidthModeEnabled && node.attrs.width > akEditorDefaultLayoutWidth) {
51
+ var pos = getPos && getPos();
52
+ if (typeof pos !== 'number') {
53
+ return;
54
+ }
55
+ var tr = setTableAlignmentWithTableContentWithPos('center', {
56
+ pos: pos,
57
+ node: node
58
+ })(editorView.state);
59
+ if (tr) {
60
+ editorView.dispatch(tr);
61
+ }
62
+ }
63
+ }
64
+ // eslint-disable-next-line react-hooks/exhaustive-deps
65
+ }, [editorView, tableState, node]);
40
66
  var style = useMemo(function () {
41
67
  return alignment === 'align-start' ? leftAlignStyle : centerAlignStyle;
42
68
  }, [alignment]);
@@ -52,7 +78,10 @@ var AlignmentTableContainer = function AlignmentTableContainer(_ref2) {
52
78
  var AlignmentTableContainerWrapper = function AlignmentTableContainerWrapper(_ref3) {
53
79
  var isTableAlignmentEnabled = _ref3.isTableAlignmentEnabled,
54
80
  node = _ref3.node,
55
- children = _ref3.children;
81
+ children = _ref3.children,
82
+ pluginInjectionApi = _ref3.pluginInjectionApi,
83
+ getPos = _ref3.getPos,
84
+ editorView = _ref3.editorView;
56
85
  if (!isTableAlignmentEnabled) {
57
86
  return /*#__PURE__*/React.createElement("div", {
58
87
  "data-testid": "table-alignment-container",
@@ -65,7 +94,10 @@ var AlignmentTableContainerWrapper = function AlignmentTableContainerWrapper(_re
65
94
  }, children);
66
95
  }
67
96
  return /*#__PURE__*/React.createElement(AlignmentTableContainer, {
68
- node: node
97
+ node: node,
98
+ pluginInjectionApi: pluginInjectionApi,
99
+ getPos: getPos,
100
+ editorView: editorView
69
101
  }, children);
70
102
  };
71
103
  export var ResizableTableContainer = /*#__PURE__*/React.memo(function (_ref4) {
@@ -89,6 +121,10 @@ export var ResizableTableContainer = /*#__PURE__*/React.memo(function (_ref4) {
89
121
  _useState2 = _slicedToArray(_useState, 2),
90
122
  resizing = _useState2[0],
91
123
  setIsResizing = _useState2[1];
124
+ var _useSharedPluginState2 = useSharedPluginState(pluginInjectionApi, ['table']),
125
+ tableState = _useSharedPluginState2.tableState;
126
+ var _ref5 = tableState,
127
+ isFullWidthModeEnabled = _ref5.isFullWidthModeEnabled;
92
128
  var updateContainerHeight = useCallback(function (height) {
93
129
  var _containerRef$current;
94
130
  // current StickyHeader State is not stable to be fetch.
@@ -142,11 +178,27 @@ export var ResizableTableContainer = /*#__PURE__*/React.memo(function (_ref4) {
142
178
  return (_pluginInjectionApi$c = pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$c2 = pluginInjectionApi.core) === null || _pluginInjectionApi$c2 === void 0 ? void 0 : _pluginInjectionApi$c2.actions.execute(pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$s = pluginInjectionApi.selection) === null || _pluginInjectionApi$s === void 0 ? void 0 : _pluginInjectionApi$s.commands.displayGapCursor(toggle))) !== null && _pluginInjectionApi$c !== void 0 ? _pluginInjectionApi$c : false;
143
179
  }, [pluginInjectionApi]);
144
180
  var tableWidth = getTableContainerWidth(node);
145
- var _useSharedPluginState = useSharedPluginState(pluginInjectionApi, ['editorViewMode']),
146
- editorViewModeState = _useSharedPluginState.editorViewModeState;
147
-
148
- // 76 is currently an accepted padding value considering the spacing for resizer handle
149
- var responsiveContainerWidth = isTableScalingEnabled ? containerWidth - akEditorGutterPadding * 2 - akEditorMediaResizeHandlerPaddingWide / 2 : containerWidth - akEditorGutterPadding * 2 - akEditorMediaResizeHandlerPaddingWide;
181
+ var _useSharedPluginState3 = useSharedPluginState(pluginInjectionApi, ['editorViewMode']),
182
+ editorViewModeState = _useSharedPluginState3.editorViewModeState;
183
+ var responsiveContainerWidth = 0;
184
+ var resizeHandleSpacing = 12;
185
+ // When Full width editor enabled, a Mac OS user can change "ak-editor-content-area" width by
186
+ // updating Settings -> Appearance -> Show scroll bars from "When scrolling" to "Always". It causes
187
+ // issues when viwport width is less than full width Editor's width. To detect avoid them
188
+ // we need to use lineLength to defined responsiveWidth instead of containerWidth
189
+ // (which does not get updated when Mac setting changes) in Full-width editor.
190
+ if (isFullWidthModeEnabled) {
191
+ // When: Show scroll bars -> containerWidth = akEditorGutterPadding * 2 + lineLength;
192
+ // When: Always -> containerWidth = akEditorGutterPadding * 2 + lineLength + scrollbarWidth;
193
+ // scrollbarWidth can vary. Values can be 14, 15, 16 and up to 20px;
194
+ responsiveContainerWidth = isTableScalingEnabled ? lineLength : containerWidth - akEditorGutterPadding * 2 - resizeHandleSpacing;
195
+ } else {
196
+ // 76 is currently an accepted padding value considering the spacing for resizer handle
197
+ // containerWidth = width of a DIV with test id="ak-editor-fp-content-area". It is a parent of
198
+ // a DIV with className="ak-editor-content-area". This DIV has padding left and padding right.
199
+ // padding left = padding right = akEditorGutterPadding = 32
200
+ responsiveContainerWidth = isTableScalingEnabled ? containerWidth - akEditorGutterPadding * 2 : containerWidth - akEditorGutterPadding * 2 - resizeHandleSpacing;
201
+ }
150
202
  var width = Math.min(tableWidth, responsiveContainerWidth);
151
203
  if (!isResizing) {
152
204
  tableWidthRef.current = width;
@@ -166,6 +218,7 @@ export var ResizableTableContainer = /*#__PURE__*/React.memo(function (_ref4) {
166
218
  attachAnalyticsEvent: attachAnalyticsEvent,
167
219
  displayGapCursor: displayGapCursor,
168
220
  isTableAlignmentEnabled: isTableAlignmentEnabled,
221
+ isFullWidthModeEnabled: isFullWidthModeEnabled,
169
222
  isTableScalingEnabled: isTableScalingEnabled,
170
223
  isWholeTableInDanger: isWholeTableInDanger,
171
224
  pluginInjectionApi: pluginInjectionApi,
@@ -175,7 +228,10 @@ export var ResizableTableContainer = /*#__PURE__*/React.memo(function (_ref4) {
175
228
  var isLivePageViewMode = (editorViewModeState === null || editorViewModeState === void 0 ? void 0 : editorViewModeState.mode) === 'view';
176
229
  return /*#__PURE__*/React.createElement(AlignmentTableContainerWrapper, {
177
230
  isTableAlignmentEnabled: isTableAlignmentEnabled,
178
- node: node
231
+ node: node,
232
+ pluginInjectionApi: pluginInjectionApi,
233
+ getPos: getPos,
234
+ editorView: editorView
179
235
  }, /*#__PURE__*/React.createElement("div", {
180
236
  style: {
181
237
  width: tableWidthRef.current,
@@ -201,24 +257,24 @@ export var ResizableTableContainer = /*#__PURE__*/React.memo(function (_ref4) {
201
257
  node: node
202
258
  }, children))));
203
259
  });
204
- export var TableContainer = function TableContainer(_ref5) {
205
- var children = _ref5.children,
206
- node = _ref5.node,
207
- className = _ref5.className,
208
- _ref5$containerWidth = _ref5.containerWidth,
209
- editorWidth = _ref5$containerWidth.width,
210
- lineLength = _ref5$containerWidth.lineLength,
211
- editorView = _ref5.editorView,
212
- getPos = _ref5.getPos,
213
- tableRef = _ref5.tableRef,
214
- isNested = _ref5.isNested,
215
- tableWrapperHeight = _ref5.tableWrapperHeight,
216
- isResizing = _ref5.isResizing,
217
- pluginInjectionApi = _ref5.pluginInjectionApi,
218
- isWholeTableInDanger = _ref5.isWholeTableInDanger,
219
- isTableResizingEnabled = _ref5.isTableResizingEnabled,
220
- isTableScalingEnabled = _ref5.isTableScalingEnabled,
221
- isTableAlignmentEnabled = _ref5.isTableAlignmentEnabled;
260
+ export var TableContainer = function TableContainer(_ref6) {
261
+ var children = _ref6.children,
262
+ node = _ref6.node,
263
+ className = _ref6.className,
264
+ _ref6$containerWidth = _ref6.containerWidth,
265
+ editorWidth = _ref6$containerWidth.width,
266
+ lineLength = _ref6$containerWidth.lineLength,
267
+ editorView = _ref6.editorView,
268
+ getPos = _ref6.getPos,
269
+ tableRef = _ref6.tableRef,
270
+ isNested = _ref6.isNested,
271
+ tableWrapperHeight = _ref6.tableWrapperHeight,
272
+ isResizing = _ref6.isResizing,
273
+ pluginInjectionApi = _ref6.pluginInjectionApi,
274
+ isWholeTableInDanger = _ref6.isWholeTableInDanger,
275
+ isTableResizingEnabled = _ref6.isTableResizingEnabled,
276
+ isTableScalingEnabled = _ref6.isTableScalingEnabled,
277
+ isTableAlignmentEnabled = _ref6.isTableAlignmentEnabled;
222
278
  if (isTableResizingEnabled && !isNested) {
223
279
  return /*#__PURE__*/React.createElement(ResizableTableContainer
224
280
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766
@@ -13,6 +13,7 @@ import { tableMessages as messages } from '@atlaskit/editor-common/messages';
13
13
  import { ResizerNext } from '@atlaskit/editor-common/resizer';
14
14
  import { browser } from '@atlaskit/editor-common/utils';
15
15
  import { chainCommands } from '@atlaskit/editor-prosemirror/commands';
16
+ import { akEditorGutterPadding } from '@atlaskit/editor-shared-styles';
16
17
  import { findTable } from '@atlaskit/editor-tables/utils';
17
18
  import { getBooleanFF } from '@atlaskit/platform-feature-flags';
18
19
  import { setTableAlignmentWithTableContentWithPos, updateWidthToWidest } from '../commands/misc';
@@ -22,8 +23,8 @@ import { pluginKey as tableWidthPluginKey } from '../pm-plugins/table-width';
22
23
  import { TABLE_GUIDELINE_VISIBLE_ADJUSTMENT, TABLE_HIGHLIGHT_GAP, TABLE_HIGHLIGHT_TOLERANCE, TABLE_SNAP_GAP } from '../ui/consts';
23
24
  import { ALIGN_CENTER, ALIGN_START, normaliseAlignment } from '../utils/alignment';
24
25
  import { generateResizedPayload, generateResizeFrameRatePayloads, useMeasureFramerate } from '../utils/analytics';
25
- import { defaultGuidelines, defaultGuidelinesForPreserveTable } from '../utils/guidelines';
26
- import { defaultSnappingWidths, defaultTablePreserveSnappingWidths, findClosestSnap } from '../utils/snapping';
26
+ import { defaultGuidelines, defaultGuidelinesForPreserveTable, PRESERVE_TABLE_GUIDELINES_LENGTH_OFFSET } from '../utils/guidelines';
27
+ import { defaultSnappingWidths, defaultTablePreserveSnappingWidths, findClosestSnap, PRESERVE_TABLE_SNAPPING_LENGTH_OFFSET } from '../utils/snapping';
27
28
  var RESIZE_STEP_VALUE = 10;
28
29
  var FULL_WIDTH_EDITOR_CONTENT_WIDTH = 1800;
29
30
  var handles = {
@@ -40,13 +41,13 @@ var getResizerHandleHeight = function getResizerHandleHeight(tableRef) {
40
41
  var _tableRef$clientHeigh;
41
42
  var tableHeight = (_tableRef$clientHeigh = tableRef === null || tableRef === void 0 ? void 0 : tableRef.clientHeight) !== null && _tableRef$clientHeigh !== void 0 ? _tableRef$clientHeigh : 0;
42
43
  /*
43
- - One row table height (minimum possible table height) ~ 45px
44
- - Two row table height ~ 90px
45
- - Three row table height ~ 134px
46
- In the if below we need to use:
47
- - > 46 because the height of the table can be a float number like 45.44.
48
- - < 96 is the height of large resize handle.
49
- */
44
+ - One row table height (minimum possible table height) ~ 45px
45
+ - Two row table height ~ 90px
46
+ - Three row table height ~ 134px
47
+ In the if below we need to use:
48
+ - > 46 because the height of the table can be a float number like 45.44.
49
+ - < 96 is the height of large resize handle.
50
+ */
50
51
  if (tableHeight >= 96) {
51
52
  return 'large';
52
53
  }
@@ -68,10 +69,26 @@ var getResizerMinWidth = function getResizerMinWidth(node) {
68
69
  * So the guideline container won't make the fabric-editor-popup-scroll-parent overflow
69
70
  * @param guidelines
70
71
  * @param containerWidth editorWidth
72
+ * @param lineLength
73
+ * @param isTableScalingEnabled
74
+ * @param isFullWidthModeEnabled
71
75
  */
72
- var getVisibleGuidelines = function getVisibleGuidelines(guidelines, containerWidth) {
76
+ var getVisibleGuidelines = function getVisibleGuidelines(guidelines, containerWidth, lineLength, isTableScalingEnabled, isFullWidthModeEnabled) {
77
+ var guidelineVisibleAdjustment = TABLE_GUIDELINE_VISIBLE_ADJUSTMENT;
78
+ if (isTableScalingEnabled) {
79
+ // Notes:
80
+ // Example: containerWidth = 1244, lineLength = 1180 (used for when editor full width mode is enabled)
81
+ // Full width/dynamic x coordinate can be float number.
82
+ // Ex: guideline.position.x can be 590.5. So 590.5 * 2 = 1181 (not 1180).
83
+ // For PTW we need to ensure that dynamic guideline never gets excluded: 1181 should be > width + guidelineVisibleAdjustment
84
+ // guidelineVisibleAdjustment is set as a negative value, so we making it positive and adding + 1
85
+ var preserve_table_widths_adjustment = -1 * PRESERVE_TABLE_GUIDELINES_LENGTH_OFFSET + 1;
86
+ guidelineVisibleAdjustment = isFullWidthModeEnabled ? preserve_table_widths_adjustment // guidelineVisibleAdjustment = -2, if lineLength = 1180, 1181 < 1180 + 2 is true.
87
+ : -2 * akEditorGutterPadding + preserve_table_widths_adjustment; // guidelineVisibleAdjustment = -62, if containerWidth is 1244, 1181 < 1244 - 62 = 1182 is true.
88
+ }
89
+ var width = isTableScalingEnabled && isFullWidthModeEnabled ? lineLength : containerWidth;
73
90
  return guidelines.filter(function (guideline) {
74
- return guideline.position && guideline.position.x !== undefined && typeof guideline.position.x === 'number' && Math.abs(guideline.position.x * 2) < containerWidth + TABLE_GUIDELINE_VISIBLE_ADJUSTMENT;
91
+ return guideline.position && guideline.position.x !== undefined && typeof guideline.position.x === 'number' && Math.abs(guideline.position.x * 2) < width + guidelineVisibleAdjustment;
75
92
  });
76
93
  };
77
94
  export var TableResizer = function TableResizer(_ref) {
@@ -94,7 +111,8 @@ export var TableResizer = function TableResizer(_ref) {
94
111
  isTableScalingEnabled = _ref.isTableScalingEnabled,
95
112
  isTableAlignmentEnabled = _ref.isTableAlignmentEnabled,
96
113
  isWholeTableInDanger = _ref.isWholeTableInDanger,
97
- pluginInjectionApi = _ref.pluginInjectionApi;
114
+ pluginInjectionApi = _ref.pluginInjectionApi,
115
+ isFullWidthModeEnabled = _ref.isFullWidthModeEnabled;
98
116
  var currentGap = useRef(0);
99
117
  // track resizing state - use ref over state to avoid re-render
100
118
  var isResizing = useRef(false);
@@ -131,15 +149,17 @@ export var TableResizer = function TableResizer(_ref) {
131
149
  keys = _ref3.keys;
132
150
  if (gap !== currentGap.current) {
133
151
  currentGap.current = gap;
134
- var visibleGuidelines = getVisibleGuidelines(isTableScalingEnabled ? defaultGuidelinesForPreserveTable(containerWidth, excludeGuidelineConfig) : defaultGuidelines, containerWidth);
152
+ var visibleGuidelines = getVisibleGuidelines(isTableScalingEnabled ? defaultGuidelinesForPreserveTable(PRESERVE_TABLE_GUIDELINES_LENGTH_OFFSET, isFullWidthModeEnabled ? lineLength + 2 * akEditorGutterPadding : containerWidth, excludeGuidelineConfig) : defaultGuidelines, containerWidth, lineLength, Boolean(isTableScalingEnabled), Boolean(isFullWidthModeEnabled));
135
153
  displayGuideline(getGuidelinesWithHighlights(gap, TABLE_SNAP_GAP, keys, visibleGuidelines));
136
154
  }
137
- }, [isTableScalingEnabled, excludeGuidelineConfig, containerWidth, displayGuideline]);
155
+ }, [isTableScalingEnabled, excludeGuidelineConfig, containerWidth, displayGuideline, lineLength, isFullWidthModeEnabled]);
138
156
  var guidelineSnaps = useMemo(function () {
139
157
  return snappingEnabled ? {
140
- x: isTableScalingEnabled ? defaultTablePreserveSnappingWidths(containerWidth, excludeGuidelineConfig) : defaultSnappingWidths
158
+ x: isTableScalingEnabled ? defaultTablePreserveSnappingWidths(PRESERVE_TABLE_SNAPPING_LENGTH_OFFSET,
159
+ // was hardcoded to 0, using PRESERVE_TABLE_SNAPPING_LENGTH_OFFSET instead.
160
+ isFullWidthModeEnabled ? lineLength + 2 * akEditorGutterPadding : containerWidth, excludeGuidelineConfig) : defaultSnappingWidths
141
161
  } : undefined;
142
- }, [snappingEnabled, isTableScalingEnabled, excludeGuidelineConfig, containerWidth]);
162
+ }, [snappingEnabled, isTableScalingEnabled, excludeGuidelineConfig, containerWidth, lineLength, isFullWidthModeEnabled]);
143
163
  var switchToCenterAlignment = useCallback(function (pos, node, newWidth, state, dispatch) {
144
164
  if (isTableAlignmentEnabled && node && node.attrs.layout === ALIGN_START && newWidth > lineLength && lineLength < FULL_WIDTH_EDITOR_CONTENT_WIDTH &&
145
165
  // We don't want to switch alignment in Full-width editor
@@ -189,12 +209,12 @@ export var TableResizer = function TableResizer(_ref) {
189
209
  name: TABLE_OVERFLOW_CHANGE_TRIGGER.RESIZED
190
210
  });
191
211
  dispatch(tr);
192
- var visibleGuidelines = getVisibleGuidelines(isTableScalingEnabled ? defaultGuidelinesForPreserveTable(containerWidth, excludeGuidelineConfig) : defaultGuidelines, containerWidth);
212
+ var visibleGuidelines = getVisibleGuidelines(isTableScalingEnabled ? defaultGuidelinesForPreserveTable(PRESERVE_TABLE_GUIDELINES_LENGTH_OFFSET, isFullWidthModeEnabled ? lineLength + 2 * akEditorGutterPadding : containerWidth, excludeGuidelineConfig) : defaultGuidelines, containerWidth, lineLength, Boolean(isTableScalingEnabled), Boolean(isFullWidthModeEnabled));
193
213
  setSnappingEnabled(displayGuideline(visibleGuidelines));
194
214
  if (onResizeStart) {
195
215
  onResizeStart();
196
216
  }
197
- }, [startMeasure, editorView, displayGapCursor, node.attrs.localId, tableRef, isTableScalingEnabled, excludeGuidelineConfig, containerWidth, displayGuideline, onResizeStart]);
217
+ }, [startMeasure, editorView, displayGapCursor, node.attrs.localId, tableRef, isTableScalingEnabled, excludeGuidelineConfig, containerWidth, lineLength, displayGuideline, onResizeStart, isFullWidthModeEnabled]);
198
218
  var handleResize = useCallback(function (originalState, delta) {
199
219
  var _node$attrs$localId, _node$attrs;
200
220
  countFrames();
@@ -214,14 +234,15 @@ export var TableResizer = function TableResizer(_ref) {
214
234
  start: pos + 1,
215
235
  parentWidth: newWidth
216
236
  }, editorView.domAtPos.bind(editorView), isTableScalingEnabled);
217
- var closestSnap = findClosestSnap(newWidth, isTableScalingEnabled ? defaultTablePreserveSnappingWidths(containerWidth, excludeGuidelineConfig) : defaultSnappingWidths, isTableScalingEnabled ? defaultGuidelinesForPreserveTable(containerWidth, excludeGuidelineConfig) : defaultGuidelines, TABLE_HIGHLIGHT_GAP, TABLE_HIGHLIGHT_TOLERANCE);
237
+ var editorContainerWidth = isFullWidthModeEnabled ? lineLength + 2 * akEditorGutterPadding : containerWidth;
238
+ var closestSnap = findClosestSnap(newWidth, isTableScalingEnabled ? defaultTablePreserveSnappingWidths(PRESERVE_TABLE_SNAPPING_LENGTH_OFFSET, editorContainerWidth, excludeGuidelineConfig) : defaultSnappingWidths, isTableScalingEnabled ? defaultGuidelinesForPreserveTable(PRESERVE_TABLE_GUIDELINES_LENGTH_OFFSET, editorContainerWidth, excludeGuidelineConfig) : defaultGuidelines, TABLE_HIGHLIGHT_GAP, TABLE_HIGHLIGHT_TOLERANCE);
218
239
  updateActiveGuidelines(closestSnap);
219
240
 
220
241
  // When snapping to the full width guideline, resize the table to be 1800px
221
242
  var state = editorView.state,
222
243
  dispatch = editorView.dispatch;
223
244
  var currentTableNodeLocalId = (_node$attrs$localId = node === null || node === void 0 || (_node$attrs = node.attrs) === null || _node$attrs === void 0 ? void 0 : _node$attrs.localId) !== null && _node$attrs$localId !== void 0 ? _node$attrs$localId : '';
224
- var fullWidthGuideline = defaultGuidelinesForPreserveTable(containerWidth, excludeGuidelineConfig).filter(function (guideline) {
245
+ var fullWidthGuideline = defaultGuidelinesForPreserveTable(PRESERVE_TABLE_GUIDELINES_LENGTH_OFFSET, editorContainerWidth, excludeGuidelineConfig).filter(function (guideline) {
225
246
  return guideline.isFullWidth;
226
247
  })[0];
227
248
  var isFullWidthGuidelineActive = closestSnap.keys.includes(fullWidthGuideline.key);
@@ -231,7 +252,7 @@ export var TableResizer = function TableResizer(_ref) {
231
252
  }, updateWidthToWidest(_defineProperty({}, currentTableNodeLocalId, shouldUpdateWidthToWidest)))(state, dispatch);
232
253
  updateWidth(shouldUpdateWidthToWidest ? TABLE_MAX_WIDTH : newWidth);
233
254
  return newWidth;
234
- }, [countFrames, isTableScalingEnabled, excludeGuidelineConfig, tableRef, node, editorView, updateActiveGuidelines, containerWidth, updateWidth, getPos, switchToCenterAlignment]);
255
+ }, [countFrames, isTableScalingEnabled, isFullWidthModeEnabled, excludeGuidelineConfig, tableRef, node, editorView, updateActiveGuidelines, containerWidth, lineLength, updateWidth, getPos, switchToCenterAlignment]);
235
256
  var scheduleResize = useMemo(function () {
236
257
  return rafSchd(handleResize);
237
258
  }, [handleResize]);
@@ -25,8 +25,8 @@ var HEADER_ROW_SCROLL_THROTTLE_TIMEOUT = 200;
25
25
  // timeout for resetting the scroll class - if it’s too long then users won’t be able to click on the header cells,
26
26
  // if too short it would trigger too many dom updates.
27
27
  var HEADER_ROW_SCROLL_RESET_DEBOUNCE_TIMEOUT = 400;
28
- var TableRow = /*#__PURE__*/function (_ref) {
29
- _inherits(TableRow, _ref);
28
+ var TableRow = /*#__PURE__*/function (_TableNodeView) {
29
+ _inherits(TableRow, _TableNodeView);
30
30
  var _super = _createSuper(TableRow);
31
31
  function TableRow(node, view, getPos, eventDispatcher) {
32
32
  var _this;
@@ -323,27 +323,27 @@ var TableRow = /*#__PURE__*/function (_ref) {
323
323
  value: function isHeaderSticky() {
324
324
  var _sentinelTop$rootBoun;
325
325
  /*
326
- # Overview
327
- I'm going to list all the view states associated with the sentinels and when they should trigger sticky headers.
328
- The format of the states are; {top|bottom}:{in|above|below}
329
- ie sentinel:view-position -- both "above" and "below" are equal to out of the viewport
330
- For example; "top:in" means top sentinel is within the viewport. "bottom:above" means the bottom sentinel is
331
- above and out of the viewport
332
- This will hopefully simplify things and make it easier to determine when sticky should/shouldn't be triggered.
333
- # States
334
- top:in / bottom:in - NOT sticky
335
- top:in / bottom:above - NOT sticky - NOTE: This is an inversion clause
336
- top:in / bottom:below - NOT sticky
337
- top:above / bottom:in - STICKY
338
- top:above / bottom:above - NOT sticky
339
- top:above / bottom:below - STICKY
340
- top:below / bottom:in - NOT sticky - NOTE: This is an inversion clause
341
- top:below / bottom:above - NOT sticky - NOTE: This is an inversion clause
342
- top:below / bottom:below - NOT sticky
343
- # Summary
344
- The only time the header should be sticky is when the top sentinel is above the view and the bottom sentinel
345
- is in or below it.
346
- */
326
+ # Overview
327
+ I'm going to list all the view states associated with the sentinels and when they should trigger sticky headers.
328
+ The format of the states are; {top|bottom}:{in|above|below}
329
+ ie sentinel:view-position -- both "above" and "below" are equal to out of the viewport
330
+ For example; "top:in" means top sentinel is within the viewport. "bottom:above" means the bottom sentinel is
331
+ above and out of the viewport
332
+ This will hopefully simplify things and make it easier to determine when sticky should/shouldn't be triggered.
333
+ # States
334
+ top:in / bottom:in - NOT sticky
335
+ top:in / bottom:above - NOT sticky - NOTE: This is an inversion clause
336
+ top:in / bottom:below - NOT sticky
337
+ top:above / bottom:in - STICKY
338
+ top:above / bottom:above - NOT sticky
339
+ top:above / bottom:below - STICKY
340
+ top:below / bottom:in - NOT sticky - NOTE: This is an inversion clause
341
+ top:below / bottom:above - NOT sticky - NOTE: This is an inversion clause
342
+ top:below / bottom:below - NOT sticky
343
+ # Summary
344
+ The only time the header should be sticky is when the top sentinel is above the view and the bottom sentinel
345
+ is in or below it.
346
+ */
347
347
 
348
348
  var _this$sentinelData = this.sentinelData,
349
349
  sentinelTop = _this$sentinelData.top,
@@ -39,9 +39,9 @@ export function createPlugin(dispatch, _ref, getEditorContainerWidth, getEditorF
39
39
  var isColumnKeyboardResizeStarted = false;
40
40
  if (getBooleanFF('platform.editor.a11y-column-resizing_emcvz')) {
41
41
  /*
42
- We need to start listening mouse events if column resize started from keyboard.
43
- This will allow continue resizing via mouse
44
- */
42
+ We need to start listening mouse events if column resize started from keyboard.
43
+ This will allow continue resizing via mouse
44
+ */
45
45
  var _getTablePluginState = getTablePluginState(state),
46
46
  isKeyboardResize = _getTablePluginState.isKeyboardResize;
47
47
  if (isKeyboardResize) {
@@ -89,10 +89,10 @@ export var updateColgroup = function updateColgroup(state, tableRef, tableNode,
89
89
  var cols = tableRef === null || tableRef === void 0 ? void 0 : tableRef.querySelectorAll('col');
90
90
  var columnsCount = cols === null || cols === void 0 ? void 0 : cols.length;
91
91
  /**
92
- updateColgroup will update whole table scale when click the column resize handle, this behavior will affect when table overflowed, when now resize handle been dragged and extend to make table overflowed, table will show overflow. This need to be confirmed because it conflict with how isTableScalingEnabled work.
93
- We don't want to scale the table when resizing columns, only when viewpoint shrinks the table.
94
- We need to remove !isColumnResizing if we handled auto scale table when mouseUp event.
95
- * */
92
+ updateColgroup will update whole table scale when click the column resize handle, this behavior will affect when table overflowed, when now resize handle been dragged and extend to make table overflowed, table will show overflow. This need to be confirmed because it conflict with how isTableScalingEnabled work.
93
+ We don't want to scale the table when resizing columns, only when viewpoint shrinks the table.
94
+ We need to remove !isColumnResizing if we handled auto scale table when mouseUp event.
95
+ * */
96
96
  if (isTableScalingEnabled && tableNode) {
97
97
  var scalePercent = getTableScalingPercent(tableNode, tableRef);
98
98
  state.cols.filter(function (column) {
@@ -160,9 +160,9 @@ export var scaleTable = function scaleTable(tableRef, options, domAtPos) {
160
160
  // We need to do this check to reduce the number of race conditions when working with tables.
161
161
  // This metadata is been used in the sendTransaction function in the Collab plugin
162
162
  /* Added !layoutChanged check here to solve unnecessary scroll bar after publish when click on breakout button multiple times and publish
163
- 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.
164
- Leaving the tr.setMeta('scaleTable', true) here for race conditions that we aren't aware of.
165
- */
163
+ 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.
164
+ Leaving the tr.setMeta('scaleTable', true) here for race conditions that we aren't aware of.
165
+ */
166
166
  !layoutChanged && tr.setMeta('scaleTable', true);
167
167
  return tr;
168
168
  }
@@ -22,5 +22,5 @@ export var elementBeforeIconStyles = css({
22
22
  export var tablePopupStyles = function tablePopupStyles(isDragAndDropEnabled
23
23
  // eslint-disable-next-line @atlaskit/design-system/no-css-tagged-template-expression -- needs manual remediation
24
24
  ) {
25
- return css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n .", " {\n border-radius: ", ";\n background: ", ";\n box-shadow: ", ";\n display: block;\n position: absolute;\n top: 0;\n left: ", "px;\n padding: ", ";\n\n > div {\n padding: 0;\n }\n }\n\n .", " {\n display: flex;\n\n &::before {\n content: '';\n display: block;\n border: 1px solid ", ";\n border-radius: ", ";\n width: 20px;\n height: 20px;\n }\n\n &::after {\n content: '\u203A';\n margin-left: ", ";\n line-height: 20px;\n color: ", ";\n }\n }\n\n .", " {\n display: flex;\n\n &::before {\n content: '';\n display: block;\n border: 1px solid ", ";\n border-radius: ", ";\n width: 14px;\n height: 14px;\n }\n\n &::after {\n content: '\u203A';\n margin-left: ", ";\n line-height: 14px;\n color: ", ";\n }\n }\n"])), ClassName.CONTEXTUAL_SUBMENU, "var(--ds-border-radius, 3px)", "var(--ds-surface-overlay, white)", "var(--ds-shadow-overlay, ".concat("0 4px 8px -2px ".concat(N60A, ", 0 0 1px ").concat(N60A), ")"), isDragAndDropEnabled ? contextualMenuDropdownWidthDnD : contextualMenuDropdownWidth, "var(--ds-space-100, 8px)", ClassName.CONTEXTUAL_MENU_ICON, tableBackgroundBorderColor, "var(--ds-border-radius, 3px)", "var(--ds-space-050, 4px)", "var(--ds-icon, ".concat(N90, ")"), ClassName.CONTEXTUAL_MENU_ICON_SMALL, tableBackgroundBorderColor, "var(--ds-border-radius, 3px)", "var(--ds-space-050, 4px)", "var(--ds-icon, ".concat(N90, ")"));
25
+ return css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n\t.", " {\n\t\tborder-radius: ", ";\n\t\tbackground: ", ";\n\t\tbox-shadow: ", ";\n\t\tdisplay: block;\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tleft: ", "px;\n\t\tpadding: ", ";\n\n\t\t> div {\n\t\t\tpadding: 0;\n\t\t}\n\t}\n\n\t.", " {\n\t\tdisplay: flex;\n\n\t\t&::before {\n\t\t\tcontent: '';\n\t\t\tdisplay: block;\n\t\t\tborder: 1px solid ", ";\n\t\t\tborder-radius: ", ";\n\t\t\twidth: 20px;\n\t\t\theight: 20px;\n\t\t}\n\n\t\t&::after {\n\t\t\tcontent: '\u203A';\n\t\t\tmargin-left: ", ";\n\t\t\tline-height: 20px;\n\t\t\tcolor: ", ";\n\t\t}\n\t}\n\n\t.", " {\n\t\tdisplay: flex;\n\n\t\t&::before {\n\t\t\tcontent: '';\n\t\t\tdisplay: block;\n\t\t\tborder: 1px solid ", ";\n\t\t\tborder-radius: ", ";\n\t\t\twidth: 14px;\n\t\t\theight: 14px;\n\t\t}\n\n\t\t&::after {\n\t\t\tcontent: '\u203A';\n\t\t\tmargin-left: ", ";\n\t\t\tline-height: 14px;\n\t\t\tcolor: ", ";\n\t\t}\n\t}\n"])), ClassName.CONTEXTUAL_SUBMENU, "var(--ds-border-radius, 3px)", "var(--ds-surface-overlay, white)", "var(--ds-shadow-overlay, ".concat("0 4px 8px -2px ".concat(N60A, ", 0 0 1px ").concat(N60A), ")"), isDragAndDropEnabled ? contextualMenuDropdownWidthDnD : contextualMenuDropdownWidth, "var(--ds-space-100, 8px)", ClassName.CONTEXTUAL_MENU_ICON, tableBackgroundBorderColor, "var(--ds-border-radius, 3px)", "var(--ds-space-050, 4px)", "var(--ds-icon, ".concat(N90, ")"), ClassName.CONTEXTUAL_MENU_ICON_SMALL, tableBackgroundBorderColor, "var(--ds-border-radius, 3px)", "var(--ds-space-050, 4px)", "var(--ds-icon, ".concat(N90, ")"));
26
26
  };
@@ -18,7 +18,7 @@ export var elementBeforeIconStyles = css({
18
18
  });
19
19
 
20
20
  // eslint-disable-next-line @atlaskit/design-system/no-css-tagged-template-expression -- needs manual remediation
21
- export var dragMenuBackgroundColorStyles = css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n .", " {\n border-radius: ", ";\n background: ", ";\n box-shadow: ", ";\n display: block;\n position: absolute;\n top: 0;\n left: ", "px;\n padding: ", ";\n\n > div {\n padding: 0;\n }\n }\n\n .", " {\n display: flex;\n\n &::before {\n content: '';\n display: block;\n border: 1px solid ", ";\n border-radius: ", ";\n width: 14px;\n height: 14px;\n }\n\n &::after {\n content: '\u203A';\n margin-left: ", ";\n line-height: 14px;\n color: ", ";\n }\n }\n"])), ClassName.DRAG_SUBMENU, "var(--ds-border-radius, 3px)", "var(--ds-surface-overlay, white)", "var(--ds-shadow-overlay, ".concat("0 4px 8px -2px ".concat(N60A, ", 0 0 1px ").concat(N60A), ")"), dragMenuDropdownWidth, "var(--ds-space-100, 8px)", ClassName.DRAG_SUBMENU_ICON, tableBackgroundBorderColor, "var(--ds-border-radius, 3px)", "var(--ds-space-050, 4px)", "var(--ds-icon, ".concat(N90, ")"));
21
+ export var dragMenuBackgroundColorStyles = css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n\t.", " {\n\t\tborder-radius: ", ";\n\t\tbackground: ", ";\n\t\tbox-shadow: ", ";\n\t\tdisplay: block;\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tleft: ", "px;\n\t\tpadding: ", ";\n\n\t\t> div {\n\t\t\tpadding: 0;\n\t\t}\n\t}\n\n\t.", " {\n\t\tdisplay: flex;\n\n\t\t&::before {\n\t\t\tcontent: '';\n\t\t\tdisplay: block;\n\t\t\tborder: 1px solid ", ";\n\t\t\tborder-radius: ", ";\n\t\t\twidth: 14px;\n\t\t\theight: 14px;\n\t\t}\n\n\t\t&::after {\n\t\t\tcontent: '\u203A';\n\t\t\tmargin-left: ", ";\n\t\t\tline-height: 14px;\n\t\t\tcolor: ", ";\n\t\t}\n\t}\n"])), ClassName.DRAG_SUBMENU, "var(--ds-border-radius, 3px)", "var(--ds-surface-overlay, white)", "var(--ds-shadow-overlay, ".concat("0 4px 8px -2px ".concat(N60A, ", 0 0 1px ").concat(N60A), ")"), dragMenuDropdownWidth, "var(--ds-space-100, 8px)", ClassName.DRAG_SUBMENU_ICON, tableBackgroundBorderColor, "var(--ds-border-radius, 3px)", "var(--ds-space-050, 4px)", "var(--ds-icon, ".concat(N90, ")"));
22
22
  export var toggleStyles = css({
23
23
  display: 'flex',
24
24
  "input[type='checkbox']": {