@atlaskit/editor-plugin-table 7.16.11 → 7.16.12

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 (242) hide show
  1. package/.eslintrc.js +3 -3
  2. package/CHANGELOG.md +8 -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 +41 -6
  6. package/dist/cjs/nodeviews/TableResizer.js +7 -7
  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/merged-cells.js +3 -3
  16. package/dist/es2019/commands/misc.js +3 -3
  17. package/dist/es2019/nodeviews/TableContainer.js +43 -5
  18. package/dist/es2019/nodeviews/TableResizer.js +7 -7
  19. package/dist/es2019/nodeviews/TableRow.js +21 -21
  20. package/dist/es2019/pm-plugins/table-resizing/plugin.js +3 -3
  21. package/dist/es2019/pm-plugins/table-resizing/utils/resize-state.js +4 -4
  22. package/dist/es2019/pm-plugins/table-resizing/utils/scale-table.js +3 -3
  23. package/dist/es2019/ui/FloatingContextualMenu/styles.js +47 -47
  24. package/dist/es2019/ui/FloatingDragMenu/styles.js +30 -30
  25. package/dist/es2019/ui/common-styles.js +802 -816
  26. package/dist/es2019/ui/ui-styles.js +665 -678
  27. package/dist/es2019/utils/merged-cells.js +3 -3
  28. package/dist/esm/commands/misc.js +3 -3
  29. package/dist/esm/nodeviews/TableCell.js +10 -10
  30. package/dist/esm/nodeviews/TableContainer.js +42 -7
  31. package/dist/esm/nodeviews/TableResizer.js +7 -7
  32. package/dist/esm/nodeviews/TableRow.js +23 -23
  33. package/dist/esm/pm-plugins/table-resizing/plugin.js +3 -3
  34. package/dist/esm/pm-plugins/table-resizing/utils/resize-state.js +4 -4
  35. package/dist/esm/pm-plugins/table-resizing/utils/scale-table.js +3 -3
  36. package/dist/esm/ui/FloatingContextualMenu/styles.js +1 -1
  37. package/dist/esm/ui/FloatingDragMenu/styles.js +1 -1
  38. package/dist/esm/ui/common-styles.js +13 -13
  39. package/dist/esm/ui/ui-styles.js +25 -25
  40. package/dist/esm/utils/merged-cells.js +3 -3
  41. package/dist/types/pm-plugins/decorations/utils/index.d.ts +1 -1
  42. package/dist/types/pm-plugins/drag-and-drop/utils/autoscrollers.d.ts +1 -1
  43. package/dist/types/pm-plugins/drag-and-drop/utils/getDragBehaviour.d.ts +1 -1
  44. package/dist/types/pm-plugins/table-resizing/utils/index.d.ts +1 -1
  45. package/dist/types/ui/ColumnResizeWidget/index.d.ts +1 -1
  46. package/dist/types/ui/FloatingAlignmentButtons/FloatingAlignmentButtons.d.ts +1 -1
  47. package/dist/types/ui/FloatingToolbarLabel/FloatingToolbarLabel.d.ts +1 -1
  48. package/dist/types/ui/TableFloatingColumnControls/ColumnDropTargets/ColumnDropTarget.d.ts +1 -1
  49. package/dist/types/ui/TableFloatingControls/CornerControls/index.d.ts +1 -1
  50. package/dist/types/ui/icons/DragHandleDisabledIcon.d.ts +1 -1
  51. package/dist/types-ts4.5/pm-plugins/decorations/utils/index.d.ts +1 -1
  52. package/dist/types-ts4.5/pm-plugins/drag-and-drop/utils/autoscrollers.d.ts +1 -1
  53. package/dist/types-ts4.5/pm-plugins/drag-and-drop/utils/getDragBehaviour.d.ts +1 -1
  54. package/dist/types-ts4.5/pm-plugins/table-resizing/utils/index.d.ts +1 -1
  55. package/dist/types-ts4.5/ui/ColumnResizeWidget/index.d.ts +1 -1
  56. package/dist/types-ts4.5/ui/FloatingAlignmentButtons/FloatingAlignmentButtons.d.ts +1 -1
  57. package/dist/types-ts4.5/ui/FloatingToolbarLabel/FloatingToolbarLabel.d.ts +1 -1
  58. package/dist/types-ts4.5/ui/TableFloatingColumnControls/ColumnDropTargets/ColumnDropTarget.d.ts +1 -1
  59. package/dist/types-ts4.5/ui/TableFloatingControls/CornerControls/index.d.ts +1 -1
  60. package/dist/types-ts4.5/ui/icons/DragHandleDisabledIcon.d.ts +1 -1
  61. package/docs/0-intro.tsx +9 -7
  62. package/package.json +2 -2
  63. package/report.api.md +67 -66
  64. package/src/commands/clear.ts +36 -44
  65. package/src/commands/collapse.ts +8 -8
  66. package/src/commands/column-resize.ts +412 -452
  67. package/src/commands/delete.ts +14 -14
  68. package/src/commands/display-mode.ts +10 -11
  69. package/src/commands/go-to-next-cell.ts +48 -54
  70. package/src/commands/hover.ts +210 -227
  71. package/src/commands/index.ts +35 -35
  72. package/src/commands/insert.ts +208 -235
  73. package/src/commands/misc.ts +655 -748
  74. package/src/commands/referentiality.ts +9 -9
  75. package/src/commands/selection.ts +433 -563
  76. package/src/commands/sort.ts +68 -86
  77. package/src/commands/split-cell.ts +14 -14
  78. package/src/commands/toggle.ts +69 -67
  79. package/src/commands-with-analytics.ts +570 -639
  80. package/src/create-plugin-config.ts +13 -13
  81. package/src/event-handlers.ts +513 -612
  82. package/src/handlers.ts +120 -133
  83. package/src/nodeviews/ExternalDropTargets.tsx +68 -73
  84. package/src/nodeviews/OverflowShadowsObserver.ts +148 -157
  85. package/src/nodeviews/TableCell.ts +47 -54
  86. package/src/nodeviews/TableComponent.tsx +1018 -1112
  87. package/src/nodeviews/TableComponentWithSharedState.tsx +91 -94
  88. package/src/nodeviews/TableContainer.tsx +363 -339
  89. package/src/nodeviews/TableNodeViewBase.ts +19 -24
  90. package/src/nodeviews/TableResizer.tsx +565 -657
  91. package/src/nodeviews/TableRow.ts +580 -629
  92. package/src/nodeviews/TableStickyScrollbar.ts +173 -190
  93. package/src/nodeviews/__mocks__/OverflowShadowsObserver.ts +8 -8
  94. package/src/nodeviews/__mocks__/OverridableMock.ts +14 -15
  95. package/src/nodeviews/table.tsx +345 -375
  96. package/src/nodeviews/types.ts +21 -24
  97. package/src/nodeviews/update-overflow-shadows.ts +8 -14
  98. package/src/plugin.tsx +578 -603
  99. package/src/pm-plugins/analytics/actions.ts +10 -12
  100. package/src/pm-plugins/analytics/commands.ts +31 -37
  101. package/src/pm-plugins/analytics/plugin-factory.ts +4 -2
  102. package/src/pm-plugins/analytics/plugin-key.ts +1 -3
  103. package/src/pm-plugins/analytics/plugin.ts +60 -70
  104. package/src/pm-plugins/analytics/reducer.ts +19 -19
  105. package/src/pm-plugins/analytics/types.ts +10 -10
  106. package/src/pm-plugins/analytics/utils/moved-event.ts +38 -38
  107. package/src/pm-plugins/decorations/plugin.ts +58 -77
  108. package/src/pm-plugins/decorations/utils/column-controls.ts +59 -71
  109. package/src/pm-plugins/decorations/utils/column-resizing.ts +50 -57
  110. package/src/pm-plugins/decorations/utils/compose-decorations.ts +6 -6
  111. package/src/pm-plugins/decorations/utils/index.ts +3 -6
  112. package/src/pm-plugins/decorations/utils/types.ts +7 -12
  113. package/src/pm-plugins/default-table-selection.ts +3 -3
  114. package/src/pm-plugins/drag-and-drop/actions.ts +25 -25
  115. package/src/pm-plugins/drag-and-drop/commands-with-analytics.ts +158 -190
  116. package/src/pm-plugins/drag-and-drop/commands.ts +154 -170
  117. package/src/pm-plugins/drag-and-drop/consts.ts +4 -5
  118. package/src/pm-plugins/drag-and-drop/plugin-factory.ts +23 -20
  119. package/src/pm-plugins/drag-and-drop/plugin-key.ts +1 -3
  120. package/src/pm-plugins/drag-and-drop/plugin.ts +329 -383
  121. package/src/pm-plugins/drag-and-drop/reducer.ts +30 -30
  122. package/src/pm-plugins/drag-and-drop/types.ts +8 -8
  123. package/src/pm-plugins/drag-and-drop/utils/autoscrollers.ts +38 -41
  124. package/src/pm-plugins/drag-and-drop/utils/getDragBehaviour.ts +3 -6
  125. package/src/pm-plugins/drag-and-drop/utils/monitor.ts +57 -70
  126. package/src/pm-plugins/keymap.ts +208 -220
  127. package/src/pm-plugins/main.ts +348 -400
  128. package/src/pm-plugins/plugin-factory.ts +32 -34
  129. package/src/pm-plugins/safari-delete-composition-text-issue-workaround.ts +83 -97
  130. package/src/pm-plugins/sticky-headers/commands.ts +2 -6
  131. package/src/pm-plugins/sticky-headers/plugin-key.ts +1 -3
  132. package/src/pm-plugins/sticky-headers/plugin-state.ts +41 -44
  133. package/src/pm-plugins/sticky-headers/plugin.ts +4 -4
  134. package/src/pm-plugins/sticky-headers/types.ts +8 -8
  135. package/src/pm-plugins/sticky-headers/util.ts +10 -10
  136. package/src/pm-plugins/table-analytics.ts +70 -72
  137. package/src/pm-plugins/table-local-id.ts +180 -184
  138. package/src/pm-plugins/table-resizing/commands.ts +72 -85
  139. package/src/pm-plugins/table-resizing/event-handlers.ts +298 -317
  140. package/src/pm-plugins/table-resizing/plugin-factory.ts +10 -10
  141. package/src/pm-plugins/table-resizing/plugin-key.ts +1 -3
  142. package/src/pm-plugins/table-resizing/plugin.ts +61 -68
  143. package/src/pm-plugins/table-resizing/reducer.ts +30 -33
  144. package/src/pm-plugins/table-resizing/utils/colgroup.ts +84 -84
  145. package/src/pm-plugins/table-resizing/utils/column-state.ts +78 -81
  146. package/src/pm-plugins/table-resizing/utils/content-width.ts +94 -114
  147. package/src/pm-plugins/table-resizing/utils/dom.ts +93 -110
  148. package/src/pm-plugins/table-resizing/utils/index.ts +29 -34
  149. package/src/pm-plugins/table-resizing/utils/misc.ts +94 -119
  150. package/src/pm-plugins/table-resizing/utils/resize-column.ts +93 -106
  151. package/src/pm-plugins/table-resizing/utils/resize-logic.ts +240 -257
  152. package/src/pm-plugins/table-resizing/utils/resize-state.ts +343 -372
  153. package/src/pm-plugins/table-resizing/utils/scale-table.ts +202 -207
  154. package/src/pm-plugins/table-resizing/utils/types.ts +17 -17
  155. package/src/pm-plugins/table-resizing/utils/unit-to-number.ts +1 -2
  156. package/src/pm-plugins/table-selection-keymap.ts +25 -51
  157. package/src/pm-plugins/table-width.ts +191 -204
  158. package/src/pm-plugins/view-mode-sort/index.ts +223 -227
  159. package/src/pm-plugins/view-mode-sort/plugin-key.ts +3 -2
  160. package/src/pm-plugins/view-mode-sort/types.ts +12 -12
  161. package/src/pm-plugins/view-mode-sort/utils.ts +108 -117
  162. package/src/reducer.ts +139 -155
  163. package/src/toolbar.tsx +815 -905
  164. package/src/transforms/column-width.ts +186 -213
  165. package/src/transforms/delete-columns.ts +208 -222
  166. package/src/transforms/delete-rows.ts +117 -121
  167. package/src/transforms/fix-tables.ts +190 -215
  168. package/src/transforms/merge.ts +263 -269
  169. package/src/transforms/replace-table.ts +27 -43
  170. package/src/transforms/split.ts +65 -75
  171. package/src/types.ts +421 -427
  172. package/src/ui/ColumnResizeWidget/index.tsx +40 -47
  173. package/src/ui/DragHandle/HandleIconComponent.tsx +9 -13
  174. package/src/ui/DragHandle/index.tsx +221 -250
  175. package/src/ui/DragPreview/index.tsx +35 -35
  176. package/src/ui/FloatingAlignmentButtons/FloatingAlignmentButtons.tsx +33 -41
  177. package/src/ui/FloatingContextualButton/FixedButton.tsx +154 -157
  178. package/src/ui/FloatingContextualButton/index.tsx +109 -115
  179. package/src/ui/FloatingContextualButton/styles.ts +43 -46
  180. package/src/ui/FloatingContextualMenu/ContextualMenu.tsx +634 -694
  181. package/src/ui/FloatingContextualMenu/index.tsx +83 -101
  182. package/src/ui/FloatingContextualMenu/styles.ts +57 -65
  183. package/src/ui/FloatingDeleteButton/DeleteButton.tsx +37 -37
  184. package/src/ui/FloatingDeleteButton/getPopUpOptions.ts +47 -57
  185. package/src/ui/FloatingDeleteButton/index.tsx +319 -350
  186. package/src/ui/FloatingDragMenu/DragMenu.tsx +555 -596
  187. package/src/ui/FloatingDragMenu/DropdownMenu.tsx +152 -162
  188. package/src/ui/FloatingDragMenu/index.tsx +88 -102
  189. package/src/ui/FloatingDragMenu/styles.ts +51 -54
  190. package/src/ui/FloatingInsertButton/InsertButton.tsx +204 -217
  191. package/src/ui/FloatingInsertButton/getPopupOptions.ts +100 -115
  192. package/src/ui/FloatingInsertButton/index.tsx +248 -292
  193. package/src/ui/FloatingToolbarLabel/FloatingToolbarLabel.tsx +24 -29
  194. package/src/ui/TableFloatingColumnControls/ColumnControls/index.tsx +308 -329
  195. package/src/ui/TableFloatingColumnControls/ColumnDropTargets/ColumnDropTarget.tsx +85 -94
  196. package/src/ui/TableFloatingColumnControls/ColumnDropTargets/index.tsx +46 -46
  197. package/src/ui/TableFloatingColumnControls/index.tsx +116 -136
  198. package/src/ui/TableFloatingControls/CornerControls/ClassicCornerControls.tsx +79 -91
  199. package/src/ui/TableFloatingControls/CornerControls/DragCornerControls.tsx +95 -102
  200. package/src/ui/TableFloatingControls/CornerControls/index.tsx +1 -4
  201. package/src/ui/TableFloatingControls/CornerControls/types.ts +8 -8
  202. package/src/ui/TableFloatingControls/FloatingControlsWithSelection.tsx +50 -50
  203. package/src/ui/TableFloatingControls/NumberColumn/index.tsx +111 -124
  204. package/src/ui/TableFloatingControls/RowControls/ClassicControls.tsx +86 -105
  205. package/src/ui/TableFloatingControls/RowControls/DragControls.tsx +305 -341
  206. package/src/ui/TableFloatingControls/RowDropTarget/index.tsx +72 -75
  207. package/src/ui/TableFloatingControls/index.tsx +191 -193
  208. package/src/ui/TableFullWidthLabel/index.tsx +20 -20
  209. package/src/ui/common-styles.ts +880 -912
  210. package/src/ui/consts.ts +29 -74
  211. package/src/ui/icons/AddColLeftIcon.tsx +33 -39
  212. package/src/ui/icons/AddColRightIcon.tsx +33 -39
  213. package/src/ui/icons/AddRowAboveIcon.tsx +16 -22
  214. package/src/ui/icons/AddRowBelowIcon.tsx +33 -39
  215. package/src/ui/icons/DisplayModeIcon.tsx +31 -31
  216. package/src/ui/icons/DragHandleDisabledIcon.tsx +19 -21
  217. package/src/ui/icons/DragHandleIcon.tsx +12 -12
  218. package/src/ui/icons/DragInMotionIcon.tsx +45 -52
  219. package/src/ui/icons/MergeCellsIcon.tsx +22 -28
  220. package/src/ui/icons/MinimisedHandle.tsx +9 -9
  221. package/src/ui/icons/SplitCellIcon.tsx +30 -36
  222. package/src/ui/ui-styles.ts +769 -798
  223. package/src/utils/alignment.ts +1 -1
  224. package/src/utils/analytics.ts +192 -208
  225. package/src/utils/collapse.ts +55 -64
  226. package/src/utils/column-controls.ts +237 -254
  227. package/src/utils/create.ts +30 -30
  228. package/src/utils/decoration.ts +482 -502
  229. package/src/utils/dom.ts +127 -134
  230. package/src/utils/drag-menu.ts +322 -373
  231. package/src/utils/get-allow-add-column-custom-step.ts +4 -5
  232. package/src/utils/guidelines.ts +10 -21
  233. package/src/utils/index.ts +68 -68
  234. package/src/utils/merged-cells.ts +245 -254
  235. package/src/utils/nodes.ts +91 -106
  236. package/src/utils/paste.ts +119 -135
  237. package/src/utils/row-controls.ts +199 -213
  238. package/src/utils/selection.ts +77 -87
  239. package/src/utils/snapping.ts +84 -97
  240. package/src/utils/table.ts +44 -44
  241. package/src/utils/transforms.ts +5 -5
  242. package/src/utils/update-plugin-state-decorations.ts +5 -9
@@ -5,17 +5,17 @@ import { deleteColumns } from '../transforms/delete-columns';
5
5
  import { getAllowAddColumnCustomStep } from '../utils/get-allow-add-column-custom-step';
6
6
 
7
7
  export const deleteColumnsCommand =
8
- (rect: Rect, isTableScalingEnabled = false): Command =>
9
- (state, dispatch, view) => {
10
- const tr = deleteColumns(
11
- rect,
12
- getAllowAddColumnCustomStep(state),
13
- view,
14
- isTableScalingEnabled,
15
- )(state.tr);
16
- if (dispatch) {
17
- dispatch(tr);
18
- return true;
19
- }
20
- return false;
21
- };
8
+ (rect: Rect, isTableScalingEnabled = false): Command =>
9
+ (state, dispatch, view) => {
10
+ const tr = deleteColumns(
11
+ rect,
12
+ getAllowAddColumnCustomStep(state),
13
+ view,
14
+ isTableScalingEnabled,
15
+ )(state.tr);
16
+ if (dispatch) {
17
+ dispatch(tr);
18
+ return true;
19
+ }
20
+ return false;
21
+ };
@@ -2,18 +2,17 @@ import type { EditorCommand } from '@atlaskit/editor-common/types';
2
2
  import { findTable } from '@atlaskit/editor-tables/utils';
3
3
 
4
4
  export const setTableDisplayMode: EditorCommand = ({ tr }) => {
5
- const table = findTable(tr.selection);
6
- if (!table) {
7
- return null;
8
- }
5
+ const table = findTable(tr.selection);
6
+ if (!table) {
7
+ return null;
8
+ }
9
9
 
10
- const { displayMode } = table.node.attrs;
10
+ const { displayMode } = table.node.attrs;
11
11
 
12
- tr.setNodeMarkup(table.pos, tr.doc.type.schema.nodes.table, {
13
- ...table.node.attrs,
14
- displayMode:
15
- !displayMode || displayMode === 'default' ? 'fixed' : 'default',
16
- });
12
+ tr.setNodeMarkup(table.pos, tr.doc.type.schema.nodes.table, {
13
+ ...table.node.attrs,
14
+ displayMode: !displayMode || displayMode === 'default' ? 'fixed' : 'default',
15
+ });
17
16
 
18
- return tr.setMeta('scrollIntoView', false);
17
+ return tr.setMeta('scrollIntoView', false);
19
18
  };
@@ -7,10 +7,7 @@ import type { Command } from '@atlaskit/editor-common/types';
7
7
  import { findParentNodeOfType } from '@atlaskit/editor-prosemirror/utils';
8
8
  import { TableMap } from '@atlaskit/editor-tables/table-map';
9
9
  import type { Direction } from '@atlaskit/editor-tables/types';
10
- import {
11
- goToNextCell as baseGotoNextCell,
12
- findTable,
13
- } from '@atlaskit/editor-tables/utils';
10
+ import { goToNextCell as baseGotoNextCell, findTable } from '@atlaskit/editor-tables/utils';
14
11
  import { getBooleanFF } from '@atlaskit/platform-feature-flags';
15
12
 
16
13
  import { insertRowWithAnalytics } from '../commands-with-analytics';
@@ -22,59 +19,56 @@ const TAB_FORWARD_DIRECTION = 1;
22
19
  const TAB_BACKWARD_DIRECTION = -1;
23
20
 
24
21
  export const goToNextCell =
25
- (
26
- editorAnalyticsAPI: EditorAnalyticsAPI | undefined | null,
27
- ariaNotify?: (message: string) => void,
28
- getIntl?: () => IntlShape,
29
- ) =>
30
- (direction: Direction): Command =>
31
- (state, dispatch, view) => {
32
- const table = findTable(state.selection);
33
- if (!table) {
34
- return false;
35
- }
22
+ (
23
+ editorAnalyticsAPI: EditorAnalyticsAPI | undefined | null,
24
+ ariaNotify?: (message: string) => void,
25
+ getIntl?: () => IntlShape,
26
+ ) =>
27
+ (direction: Direction): Command =>
28
+ (state, dispatch, view) => {
29
+ const table = findTable(state.selection);
30
+ if (!table) {
31
+ return false;
32
+ }
36
33
 
37
- if (getBooleanFF('platform.editor.a11y-column-resizing_emcvz')) {
38
- const isColumnResizing = getPluginState(state)?.isKeyboardResize;
39
- if (isColumnResizing) {
40
- stopKeyboardColumnResizing({
41
- ariaNotify: ariaNotify,
42
- getIntl: getIntl,
43
- })(state, dispatch, view);
44
- return true;
45
- }
46
- }
34
+ if (getBooleanFF('platform.editor.a11y-column-resizing_emcvz')) {
35
+ const isColumnResizing = getPluginState(state)?.isKeyboardResize;
36
+ if (isColumnResizing) {
37
+ stopKeyboardColumnResizing({
38
+ ariaNotify: ariaNotify,
39
+ getIntl: getIntl,
40
+ })(state, dispatch, view);
41
+ return true;
42
+ }
43
+ }
47
44
 
48
- const map = TableMap.get(table.node);
49
- const { tableCell, tableHeader } = state.schema.nodes;
50
- const cell = findParentNodeOfType([tableCell, tableHeader])(
51
- state.selection,
52
- )!;
53
- const firstCellPos = map.positionAt(0, 0, table.node) + table.start;
54
- const lastCellPos =
55
- map.positionAt(map.height - 1, map.width - 1, table.node) + table.start;
45
+ const map = TableMap.get(table.node);
46
+ const { tableCell, tableHeader } = state.schema.nodes;
47
+ const cell = findParentNodeOfType([tableCell, tableHeader])(state.selection)!;
48
+ const firstCellPos = map.positionAt(0, 0, table.node) + table.start;
49
+ const lastCellPos = map.positionAt(map.height - 1, map.width - 1, table.node) + table.start;
56
50
 
57
- // when tabbing backwards at first cell (top left), insert row at the start of table
58
- if (firstCellPos === cell.pos && direction === TAB_BACKWARD_DIRECTION) {
59
- insertRowWithAnalytics(editorAnalyticsAPI)(INPUT_METHOD.KEYBOARD, {
60
- index: 0,
61
- moveCursorToInsertedRow: true,
62
- })(state, dispatch);
63
- return true;
64
- }
51
+ // when tabbing backwards at first cell (top left), insert row at the start of table
52
+ if (firstCellPos === cell.pos && direction === TAB_BACKWARD_DIRECTION) {
53
+ insertRowWithAnalytics(editorAnalyticsAPI)(INPUT_METHOD.KEYBOARD, {
54
+ index: 0,
55
+ moveCursorToInsertedRow: true,
56
+ })(state, dispatch);
57
+ return true;
58
+ }
65
59
 
66
- // when tabbing forwards at last cell (bottom right), insert row at the end of table
67
- if (lastCellPos === cell.pos && direction === TAB_FORWARD_DIRECTION) {
68
- insertRowWithAnalytics(editorAnalyticsAPI)(INPUT_METHOD.KEYBOARD, {
69
- index: map.height,
70
- moveCursorToInsertedRow: true,
71
- })(state, dispatch);
72
- return true;
73
- }
60
+ // when tabbing forwards at last cell (bottom right), insert row at the end of table
61
+ if (lastCellPos === cell.pos && direction === TAB_FORWARD_DIRECTION) {
62
+ insertRowWithAnalytics(editorAnalyticsAPI)(INPUT_METHOD.KEYBOARD, {
63
+ index: map.height,
64
+ moveCursorToInsertedRow: true,
65
+ })(state, dispatch);
66
+ return true;
67
+ }
74
68
 
75
- if (dispatch) {
76
- return baseGotoNextCell(direction)(state, dispatch);
77
- }
69
+ if (dispatch) {
70
+ return baseGotoNextCell(direction)(state, dispatch);
71
+ }
78
72
 
79
- return true;
80
- };
73
+ return true;
74
+ };
@@ -1,253 +1,236 @@
1
1
  // #region Imports
2
2
  import { TableMap } from '@atlaskit/editor-tables/table-map';
3
- import {
4
- findTable,
5
- getCellsInColumn,
6
- getCellsInRow,
7
- } from '@atlaskit/editor-tables/utils';
3
+ import { findTable, getCellsInColumn, getCellsInRow } from '@atlaskit/editor-tables/utils';
8
4
 
9
5
  import { createCommand, getPluginState } from '../pm-plugins/plugin-factory';
10
6
  import type { Cell, CellColumnPositioning } from '../types';
11
7
  import { TableDecorations } from '../types';
12
8
  import {
13
- createCellHoverDecoration,
14
- createColumnLineResize,
15
- createControlsHoverDecoration,
16
- getMergedCellsPositions,
17
- updatePluginStateDecorations,
9
+ createCellHoverDecoration,
10
+ createColumnLineResize,
11
+ createControlsHoverDecoration,
12
+ getMergedCellsPositions,
13
+ updatePluginStateDecorations,
18
14
  } from '../utils';
19
15
 
20
16
  const makeArray = (n: number) => Array.from(Array(n).keys());
21
17
 
22
18
  export const hoverMergedCells = () =>
23
- createCommand(
24
- (state) => {
25
- const mergedCellsPositions = getMergedCellsPositions(state.tr);
26
- if (!mergedCellsPositions.length) {
27
- return false;
28
- }
29
- const table = findTable(state.tr.selection);
30
- if (!table) {
31
- return false;
32
- }
33
-
34
- const mergedCells: Cell[] = mergedCellsPositions.map((pos) => ({
35
- pos: pos + table.start,
36
- start: pos + table.start + 1,
37
- node: table.node.nodeAt(pos)!,
38
- }));
39
-
40
- const decorations = createCellHoverDecoration(mergedCells);
41
-
42
- return {
43
- type: 'HOVER_MERGED_CELLS',
44
- data: {
45
- decorationSet: updatePluginStateDecorations(
46
- state,
47
- decorations,
48
- TableDecorations.CELL_CONTROLS_HOVER,
49
- ),
50
- },
51
- };
52
- },
53
- (tr) => tr.setMeta('addToHistory', false),
54
- );
19
+ createCommand(
20
+ (state) => {
21
+ const mergedCellsPositions = getMergedCellsPositions(state.tr);
22
+ if (!mergedCellsPositions.length) {
23
+ return false;
24
+ }
25
+ const table = findTable(state.tr.selection);
26
+ if (!table) {
27
+ return false;
28
+ }
29
+
30
+ const mergedCells: Cell[] = mergedCellsPositions.map((pos) => ({
31
+ pos: pos + table.start,
32
+ start: pos + table.start + 1,
33
+ node: table.node.nodeAt(pos)!,
34
+ }));
35
+
36
+ const decorations = createCellHoverDecoration(mergedCells);
37
+
38
+ return {
39
+ type: 'HOVER_MERGED_CELLS',
40
+ data: {
41
+ decorationSet: updatePluginStateDecorations(
42
+ state,
43
+ decorations,
44
+ TableDecorations.CELL_CONTROLS_HOVER,
45
+ ),
46
+ },
47
+ };
48
+ },
49
+ (tr) => tr.setMeta('addToHistory', false),
50
+ );
55
51
 
56
52
  export const hoverColumns = (hoveredColumns: number[], isInDanger?: boolean) =>
57
- createCommand(
58
- (state) => {
59
- const cells = getCellsInColumn(hoveredColumns)(state.tr.selection);
60
-
61
- const { isDragAndDropEnabled } = getPluginState(state);
62
- if (!cells) {
63
- return false;
64
- }
65
-
66
- const decorations = createControlsHoverDecoration(
67
- cells,
68
- 'column',
69
- state.tr,
70
- isDragAndDropEnabled,
71
- hoveredColumns,
72
- isInDanger,
73
- );
74
-
75
- return {
76
- type: 'HOVER_COLUMNS',
77
- data: {
78
- decorationSet: updatePluginStateDecorations(
79
- state,
80
- decorations,
81
- TableDecorations.COLUMN_CONTROLS_HOVER,
82
- ),
83
- hoveredColumns,
84
- isInDanger,
85
- },
86
- };
87
- },
88
- (tr) => tr.setMeta('addToHistory', false),
89
- );
53
+ createCommand(
54
+ (state) => {
55
+ const cells = getCellsInColumn(hoveredColumns)(state.tr.selection);
56
+
57
+ const { isDragAndDropEnabled } = getPluginState(state);
58
+ if (!cells) {
59
+ return false;
60
+ }
61
+
62
+ const decorations = createControlsHoverDecoration(
63
+ cells,
64
+ 'column',
65
+ state.tr,
66
+ isDragAndDropEnabled,
67
+ hoveredColumns,
68
+ isInDanger,
69
+ );
70
+
71
+ return {
72
+ type: 'HOVER_COLUMNS',
73
+ data: {
74
+ decorationSet: updatePluginStateDecorations(
75
+ state,
76
+ decorations,
77
+ TableDecorations.COLUMN_CONTROLS_HOVER,
78
+ ),
79
+ hoveredColumns,
80
+ isInDanger,
81
+ },
82
+ };
83
+ },
84
+ (tr) => tr.setMeta('addToHistory', false),
85
+ );
90
86
 
91
87
  export const hoverRows = (hoveredRows: number[], isInDanger?: boolean) =>
92
- createCommand(
93
- (state) => {
94
- const cells = getCellsInRow(hoveredRows)(state.selection);
95
- if (!cells) {
96
- return false;
97
- }
98
- const { isDragAndDropEnabled } = getPluginState(state);
99
- const decorations = createControlsHoverDecoration(
100
- cells,
101
- 'row',
102
- state.tr,
103
- isDragAndDropEnabled,
104
- hoveredRows,
105
- isInDanger,
106
- );
107
-
108
- return {
109
- type: 'HOVER_ROWS',
110
- data: {
111
- decorationSet: updatePluginStateDecorations(
112
- state,
113
- decorations,
114
- TableDecorations.ROW_CONTROLS_HOVER,
115
- ),
116
- hoveredRows,
117
- isInDanger,
118
- },
119
- };
120
- },
121
- (tr) => tr.setMeta('addToHistory', false),
122
- );
88
+ createCommand(
89
+ (state) => {
90
+ const cells = getCellsInRow(hoveredRows)(state.selection);
91
+ if (!cells) {
92
+ return false;
93
+ }
94
+ const { isDragAndDropEnabled } = getPluginState(state);
95
+ const decorations = createControlsHoverDecoration(
96
+ cells,
97
+ 'row',
98
+ state.tr,
99
+ isDragAndDropEnabled,
100
+ hoveredRows,
101
+ isInDanger,
102
+ );
103
+
104
+ return {
105
+ type: 'HOVER_ROWS',
106
+ data: {
107
+ decorationSet: updatePluginStateDecorations(
108
+ state,
109
+ decorations,
110
+ TableDecorations.ROW_CONTROLS_HOVER,
111
+ ),
112
+ hoveredRows,
113
+ isInDanger,
114
+ },
115
+ };
116
+ },
117
+ (tr) => tr.setMeta('addToHistory', false),
118
+ );
123
119
 
124
120
  export const hoverTable = (isInDanger?: boolean, isSelected?: boolean) =>
125
- createCommand(
126
- (state) => {
127
- const table = findTable(state.selection);
128
- if (!table) {
129
- return false;
130
- }
131
- const map = TableMap.get(table.node);
132
- const hoveredColumns = makeArray(map.width);
133
- const hoveredRows = makeArray(map.height);
134
- const cells = getCellsInRow(hoveredRows)(state.selection);
135
- if (!cells) {
136
- return false;
137
- }
138
- const { isDragAndDropEnabled } = getPluginState(state);
139
- const decorations = createControlsHoverDecoration(
140
- cells,
141
- 'table',
142
- state.tr,
143
- isDragAndDropEnabled,
144
- [],
145
- isInDanger,
146
- isSelected,
147
- );
148
-
149
- return {
150
- type: 'HOVER_TABLE',
151
- data: {
152
- decorationSet: updatePluginStateDecorations(
153
- state,
154
- decorations,
155
- TableDecorations.TABLE_CONTROLS_HOVER,
156
- ),
157
- hoveredColumns,
158
- hoveredRows,
159
- isInDanger,
160
- isWholeTableInDanger: isInDanger,
161
- },
162
- };
163
- },
164
- (tr) => tr.setMeta('addToHistory', false),
165
- );
121
+ createCommand(
122
+ (state) => {
123
+ const table = findTable(state.selection);
124
+ if (!table) {
125
+ return false;
126
+ }
127
+ const map = TableMap.get(table.node);
128
+ const hoveredColumns = makeArray(map.width);
129
+ const hoveredRows = makeArray(map.height);
130
+ const cells = getCellsInRow(hoveredRows)(state.selection);
131
+ if (!cells) {
132
+ return false;
133
+ }
134
+ const { isDragAndDropEnabled } = getPluginState(state);
135
+ const decorations = createControlsHoverDecoration(
136
+ cells,
137
+ 'table',
138
+ state.tr,
139
+ isDragAndDropEnabled,
140
+ [],
141
+ isInDanger,
142
+ isSelected,
143
+ );
144
+
145
+ return {
146
+ type: 'HOVER_TABLE',
147
+ data: {
148
+ decorationSet: updatePluginStateDecorations(
149
+ state,
150
+ decorations,
151
+ TableDecorations.TABLE_CONTROLS_HOVER,
152
+ ),
153
+ hoveredColumns,
154
+ hoveredRows,
155
+ isInDanger,
156
+ isWholeTableInDanger: isInDanger,
157
+ },
158
+ };
159
+ },
160
+ (tr) => tr.setMeta('addToHistory', false),
161
+ );
166
162
 
167
163
  export const clearHoverSelection = () =>
168
- createCommand((state) => ({
169
- type: 'CLEAR_HOVER_SELECTION',
170
- data: {
171
- decorationSet: updatePluginStateDecorations(
172
- state,
173
- [],
174
- TableDecorations.ALL_CONTROLS_HOVER,
175
- ),
176
- isInDanger: false,
177
- isWholeTableInDanger: false,
178
- },
179
- }));
180
-
181
- export const showResizeHandleLine = (
182
- cellColumnPositioning: CellColumnPositioning,
183
- ) =>
184
- createCommand((state) => ({
185
- type: 'SHOW_RESIZE_HANDLE_LINE',
186
- data: {
187
- decorationSet: updatePluginStateDecorations(
188
- state,
189
- createColumnLineResize(state.selection, cellColumnPositioning),
190
- TableDecorations.COLUMN_RESIZING_HANDLE_LINE,
191
- ),
192
- },
193
- }));
164
+ createCommand((state) => ({
165
+ type: 'CLEAR_HOVER_SELECTION',
166
+ data: {
167
+ decorationSet: updatePluginStateDecorations(state, [], TableDecorations.ALL_CONTROLS_HOVER),
168
+ isInDanger: false,
169
+ isWholeTableInDanger: false,
170
+ },
171
+ }));
172
+
173
+ export const showResizeHandleLine = (cellColumnPositioning: CellColumnPositioning) =>
174
+ createCommand((state) => ({
175
+ type: 'SHOW_RESIZE_HANDLE_LINE',
176
+ data: {
177
+ decorationSet: updatePluginStateDecorations(
178
+ state,
179
+ createColumnLineResize(state.selection, cellColumnPositioning),
180
+ TableDecorations.COLUMN_RESIZING_HANDLE_LINE,
181
+ ),
182
+ },
183
+ }));
194
184
 
195
185
  export const hideResizeHandleLine = () =>
196
- createCommand((state) => ({
197
- type: 'HIDE_RESIZE_HANDLE_LINE',
198
- data: {
199
- decorationSet: updatePluginStateDecorations(
200
- state,
201
- [],
202
- TableDecorations.COLUMN_RESIZING_HANDLE_LINE,
203
- ),
204
- },
205
- }));
186
+ createCommand((state) => ({
187
+ type: 'HIDE_RESIZE_HANDLE_LINE',
188
+ data: {
189
+ decorationSet: updatePluginStateDecorations(
190
+ state,
191
+ [],
192
+ TableDecorations.COLUMN_RESIZING_HANDLE_LINE,
193
+ ),
194
+ },
195
+ }));
206
196
 
207
197
  export const setTableHovered = (hovered: boolean) =>
208
- createCommand(
209
- () => {
210
- return {
211
- type: 'TABLE_HOVERED',
212
- data: {
213
- isTableHovered: hovered,
214
- },
215
- };
216
- },
217
- (tr) => tr.setMeta('addToHistory', false),
218
- );
198
+ createCommand(
199
+ () => {
200
+ return {
201
+ type: 'TABLE_HOVERED',
202
+ data: {
203
+ isTableHovered: hovered,
204
+ },
205
+ };
206
+ },
207
+ (tr) => tr.setMeta('addToHistory', false),
208
+ );
219
209
 
220
210
  export const hoverCell = (rowIndex?: number, colIndex?: number) =>
221
- createCommand(
222
- (state) => {
223
- const { hoveredCell: prevHoveredCell } = getPluginState(state);
224
-
225
- // If no arguments have been passed then the intention it to reset the hover cell data
226
- const clear = rowIndex === undefined && colIndex === undefined;
227
-
228
- const nextRowIndex = clear
229
- ? undefined
230
- : rowIndex ?? prevHoveredCell.rowIndex;
231
- const nextColIndex = clear
232
- ? undefined
233
- : colIndex ?? prevHoveredCell.colIndex;
234
-
235
- if (
236
- nextRowIndex === prevHoveredCell.rowIndex &&
237
- nextColIndex === prevHoveredCell.colIndex
238
- ) {
239
- return false;
240
- }
241
-
242
- return {
243
- type: 'HOVER_CELL',
244
- data: {
245
- hoveredCell: {
246
- rowIndex: nextRowIndex,
247
- colIndex: nextColIndex,
248
- },
249
- },
250
- };
251
- },
252
- (tr) => tr.setMeta('addToHistory', false),
253
- );
211
+ createCommand(
212
+ (state) => {
213
+ const { hoveredCell: prevHoveredCell } = getPluginState(state);
214
+
215
+ // If no arguments have been passed then the intention it to reset the hover cell data
216
+ const clear = rowIndex === undefined && colIndex === undefined;
217
+
218
+ const nextRowIndex = clear ? undefined : rowIndex ?? prevHoveredCell.rowIndex;
219
+ const nextColIndex = clear ? undefined : colIndex ?? prevHoveredCell.colIndex;
220
+
221
+ if (nextRowIndex === prevHoveredCell.rowIndex && nextColIndex === prevHoveredCell.colIndex) {
222
+ return false;
223
+ }
224
+
225
+ return {
226
+ type: 'HOVER_CELL',
227
+ data: {
228
+ hoveredCell: {
229
+ rowIndex: nextRowIndex,
230
+ colIndex: nextColIndex,
231
+ },
232
+ },
233
+ };
234
+ },
235
+ (tr) => tr.setMeta('addToHistory', false),
236
+ );