@atlaskit/editor-plugin-table 2.1.7 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/cjs/plugins/table/handlers.js +1 -0
  3. package/dist/cjs/plugins/table/index.js +1 -1
  4. package/dist/cjs/plugins/table/nodeviews/TableComponent.js +4 -2
  5. package/dist/cjs/plugins/table/nodeviews/TableContainer.js +50 -47
  6. package/dist/cjs/plugins/table/nodeviews/TableResizer.js +64 -28
  7. package/dist/cjs/plugins/table/nodeviews/table.js +5 -3
  8. package/dist/cjs/plugins/table/pm-plugins/decorations/utils/column-controls.js +2 -0
  9. package/dist/cjs/plugins/table/pm-plugins/main.js +2 -2
  10. package/dist/cjs/plugins/table/pm-plugins/table-resizing/plugin-factory.js +1 -1
  11. package/dist/cjs/plugins/table/ui/consts.js +6 -2
  12. package/dist/cjs/plugins/table/utils/collapse.js +2 -0
  13. package/dist/cjs/plugins/table/utils/decoration.js +2 -0
  14. package/dist/cjs/plugins/table/utils/guidelines.js +12 -0
  15. package/dist/cjs/plugins/table/utils/snapping.js +37 -0
  16. package/dist/cjs/version.json +1 -1
  17. package/dist/es2019/plugins/table/handlers.js +1 -0
  18. package/dist/es2019/plugins/table/index.js +1 -1
  19. package/dist/es2019/plugins/table/nodeviews/TableComponent.js +4 -2
  20. package/dist/es2019/plugins/table/nodeviews/TableContainer.js +25 -23
  21. package/dist/es2019/plugins/table/nodeviews/TableResizer.js +59 -29
  22. package/dist/es2019/plugins/table/nodeviews/table.js +5 -3
  23. package/dist/es2019/plugins/table/pm-plugins/decorations/plugin.js +4 -1
  24. package/dist/es2019/plugins/table/pm-plugins/decorations/utils/column-controls.js +2 -0
  25. package/dist/es2019/plugins/table/pm-plugins/main.js +2 -2
  26. package/dist/es2019/plugins/table/pm-plugins/table-resizing/plugin-factory.js +2 -0
  27. package/dist/es2019/plugins/table/ui/consts.js +3 -1
  28. package/dist/es2019/plugins/table/utils/collapse.js +2 -0
  29. package/dist/es2019/plugins/table/utils/decoration.js +2 -0
  30. package/dist/es2019/plugins/table/utils/guidelines.js +4 -0
  31. package/dist/es2019/plugins/table/utils/snapping.js +27 -0
  32. package/dist/es2019/version.json +1 -1
  33. package/dist/esm/plugins/table/handlers.js +1 -0
  34. package/dist/esm/plugins/table/index.js +1 -1
  35. package/dist/esm/plugins/table/nodeviews/TableComponent.js +4 -2
  36. package/dist/esm/plugins/table/nodeviews/TableContainer.js +50 -47
  37. package/dist/esm/plugins/table/nodeviews/TableResizer.js +61 -28
  38. package/dist/esm/plugins/table/nodeviews/table.js +5 -3
  39. package/dist/esm/plugins/table/pm-plugins/decorations/plugin.js +4 -1
  40. package/dist/esm/plugins/table/pm-plugins/decorations/utils/column-controls.js +2 -0
  41. package/dist/esm/plugins/table/pm-plugins/main.js +2 -2
  42. package/dist/esm/plugins/table/pm-plugins/table-resizing/plugin-factory.js +2 -0
  43. package/dist/esm/plugins/table/ui/consts.js +3 -1
  44. package/dist/esm/plugins/table/utils/collapse.js +2 -0
  45. package/dist/esm/plugins/table/utils/decoration.js +2 -0
  46. package/dist/esm/plugins/table/utils/guidelines.js +4 -0
  47. package/dist/esm/plugins/table/utils/snapping.js +30 -0
  48. package/dist/esm/version.json +1 -1
  49. package/dist/types/plugins/table/index.d.ts +3 -1
  50. package/dist/types/plugins/table/nodeviews/TableComponent.d.ts +2 -1
  51. package/dist/types/plugins/table/nodeviews/TableContainer.d.ts +5 -2
  52. package/dist/types/plugins/table/nodeviews/TableResizer.d.ts +3 -1
  53. package/dist/types/plugins/table/nodeviews/table.d.ts +2 -1
  54. package/dist/types/plugins/table/nodeviews/types.d.ts +2 -0
  55. package/dist/types/plugins/table/pm-plugins/main.d.ts +2 -1
  56. package/dist/types/plugins/table/types.d.ts +3 -0
  57. package/dist/types/plugins/table/ui/consts.d.ts +2 -0
  58. package/dist/types/plugins/table/utils/guidelines.d.ts +3 -0
  59. package/dist/types/plugins/table/utils/snapping.d.ts +8 -0
  60. package/dist/types-ts4.5/plugins/table/index.d.ts +3 -1
  61. package/dist/types-ts4.5/plugins/table/nodeviews/TableComponent.d.ts +2 -1
  62. package/dist/types-ts4.5/plugins/table/nodeviews/TableContainer.d.ts +5 -2
  63. package/dist/types-ts4.5/plugins/table/nodeviews/TableResizer.d.ts +3 -1
  64. package/dist/types-ts4.5/plugins/table/nodeviews/table.d.ts +2 -1
  65. package/dist/types-ts4.5/plugins/table/nodeviews/types.d.ts +2 -0
  66. package/dist/types-ts4.5/plugins/table/pm-plugins/main.d.ts +2 -1
  67. package/dist/types-ts4.5/plugins/table/types.d.ts +3 -0
  68. package/dist/types-ts4.5/plugins/table/ui/consts.d.ts +2 -0
  69. package/dist/types-ts4.5/plugins/table/utils/guidelines.d.ts +3 -0
  70. package/dist/types-ts4.5/plugins/table/utils/snapping.d.ts +8 -0
  71. package/package.json +3 -2
  72. package/report.api.md +2 -0
  73. package/src/__tests__/unit/analytics.ts +2 -0
  74. package/src/__tests__/unit/collab.ts +2 -0
  75. package/src/__tests__/unit/commands/go-to-next-cell.ts +2 -0
  76. package/src/__tests__/unit/commands/insert.ts +2 -0
  77. package/src/__tests__/unit/commands/misc.ts +2 -0
  78. package/src/__tests__/unit/commands/sort.ts +4 -0
  79. package/src/__tests__/unit/commands.ts +2 -0
  80. package/src/__tests__/unit/copy-paste.ts +2 -0
  81. package/src/__tests__/unit/event-handlers/index.ts +3 -0
  82. package/src/__tests__/unit/event-handlers.ts +3 -0
  83. package/src/__tests__/unit/fix-tables.ts +2 -0
  84. package/src/__tests__/unit/get-toolbar-config.ts +2 -0
  85. package/src/__tests__/unit/handlers.ts +2 -0
  86. package/src/__tests__/unit/hover-selection.ts +2 -0
  87. package/src/__tests__/unit/index.ts +2 -0
  88. package/src/__tests__/unit/layout.ts +2 -0
  89. package/src/__tests__/unit/nodeviews/cell.ts +2 -0
  90. package/src/__tests__/unit/nodeviews/table.ts +2 -0
  91. package/src/__tests__/unit/pm-plugins/decorations/column-resizing.ts +2 -0
  92. package/src/__tests__/unit/pm-plugins/decorations/plugin.ts +2 -0
  93. package/src/__tests__/unit/pm-plugins/main.ts +2 -0
  94. package/src/__tests__/unit/pm-plugins/safari-delete-composition-text-issue-workaround.ts +2 -0
  95. package/src/__tests__/unit/pm-plugins/sticky-headers/tableRow.tsx +3 -0
  96. package/src/__tests__/unit/pm-plugins/table-resizing/event-handlers.ts +2 -0
  97. package/src/__tests__/unit/sort-column.ts +2 -0
  98. package/src/__tests__/unit/toolbar.ts +2 -0
  99. package/src/__tests__/unit/transforms/delete-columns.ts +2 -0
  100. package/src/__tests__/unit/transforms/delete-rows.ts +2 -0
  101. package/src/__tests__/unit/transforms/merging.ts +2 -0
  102. package/src/__tests__/unit/ui/ContextualMenu.tsx +2 -0
  103. package/src/__tests__/unit/ui/CornerControls.tsx +2 -0
  104. package/src/__tests__/unit/ui/FloatingContextualButton.tsx +2 -0
  105. package/src/__tests__/unit/ui/FloatingContextualMenu.tsx +2 -0
  106. package/src/__tests__/unit/ui/RowControls.tsx +2 -0
  107. package/src/__tests__/unit/ui/TableFloatingControls.tsx +2 -0
  108. package/src/__tests__/unit/undo-redo.ts +2 -0
  109. package/src/__tests__/unit/utils/collapse.ts +2 -0
  110. package/src/__tests__/unit/utils/nodes.ts +2 -0
  111. package/src/__tests__/unit/utils/row-controls.ts +2 -0
  112. package/src/__tests__/unit/utils.ts +2 -0
  113. package/src/plugins/table/handlers.ts +1 -0
  114. package/src/plugins/table/index.tsx +3 -1
  115. package/src/plugins/table/nodeviews/TableComponent.tsx +4 -0
  116. package/src/plugins/table/nodeviews/TableContainer.tsx +31 -22
  117. package/src/plugins/table/nodeviews/TableResizer.tsx +100 -34
  118. package/src/plugins/table/nodeviews/table.tsx +4 -0
  119. package/src/plugins/table/nodeviews/types.ts +2 -0
  120. package/src/plugins/table/pm-plugins/decorations/plugin.ts +1 -0
  121. package/src/plugins/table/pm-plugins/decorations/utils/column-controls.ts +1 -0
  122. package/src/plugins/table/pm-plugins/decorations/utils/types.ts +1 -0
  123. package/src/plugins/table/pm-plugins/main.ts +3 -0
  124. package/src/plugins/table/pm-plugins/table-resizing/plugin-factory.ts +1 -0
  125. package/src/plugins/table/pm-plugins/table-resizing/utils/dom.ts +1 -0
  126. package/src/plugins/table/types.ts +4 -0
  127. package/src/plugins/table/ui/consts.ts +3 -0
  128. package/src/plugins/table/utils/collapse.ts +1 -0
  129. package/src/plugins/table/utils/decoration.ts +1 -0
  130. package/src/plugins/table/utils/guidelines.ts +17 -0
  131. package/src/plugins/table/utils/snapping.ts +38 -0
  132. package/tmp/api-report-tmp.d.ts +3 -1
@@ -0,0 +1,38 @@
1
+ import type { GuidelineConfig } from '@atlaskit/editor-plugin-guideline';
2
+
3
+ /**
4
+ * Returns keys of guidelines that are closest to the table and withthin the snapGap
5
+ */
6
+ export const findClosestSnap = (
7
+ currentWidth: number,
8
+ snapWidths: number[],
9
+ guidelines: GuidelineConfig[],
10
+ snapGap: number = 0,
11
+ ) => {
12
+ const closestGapIndex = snapWidths.reduce(
13
+ (prev, curr, index) =>
14
+ Math.abs(curr - currentWidth) < Math.abs(snapWidths[prev] - currentWidth)
15
+ ? index
16
+ : prev,
17
+ 0,
18
+ );
19
+ const gap = Math.abs(snapWidths[closestGapIndex] - currentWidth);
20
+ if (gap < snapGap) {
21
+ const snappingWidth = Math.round(snapWidths[closestGapIndex]);
22
+ const guidelineKeys = guidelines.reduce<string[]>((acc, guideline) => {
23
+ // NOTE: The snap points are based on the guidelines, however their formatted as a length value whereas the guidelines
24
+ // are point based. The point base x coords are calculated by halving the lengths. This means we can convert the
25
+ // point base position to length by simply multiplying by 2.
26
+ if (Math.round(Math.abs(guideline.position.x) * 2) === snappingWidth) {
27
+ acc.push(guideline.key);
28
+ }
29
+ return acc;
30
+ }, []);
31
+
32
+ return {
33
+ gap,
34
+ keys: guidelineKeys,
35
+ };
36
+ }
37
+ return { gap, keys: [] };
38
+ };
@@ -10,6 +10,7 @@ import type { Command } from '@atlaskit/editor-common/types';
10
10
  import type { contentInsertionPlugin } from '@atlaskit/editor-plugin-content-insertion';
11
11
  import type { EditorSelectionAPI } from '@atlaskit/editor-common/selection';
12
12
  import type { GetEditorFeatureFlags } from '@atlaskit/editor-common/types';
13
+ import type { guidelinePlugin } from '@atlaskit/editor-plugin-guideline';
13
14
  import type { NextEditorPlugin } from '@atlaskit/editor-common/types';
14
15
  import { TableLayout } from '@atlaskit/adf-schema';
15
16
  import type { widthPlugin } from '@atlaskit/editor-plugin-width';
@@ -95,7 +96,8 @@ export const tablesPlugin: NextEditorPlugin<'table', {
95
96
  dependencies: [
96
97
  typeof analyticsPlugin,
97
98
  typeof contentInsertionPlugin,
98
- typeof widthPlugin
99
+ typeof widthPlugin,
100
+ typeof guidelinePlugin
99
101
  ];
100
102
  }>;
101
103