@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.
- package/.eslintrc.js +3 -3
- package/CHANGELOG.md +16 -0
- package/dist/cjs/commands/misc.js +3 -3
- package/dist/cjs/nodeviews/TableCell.js +10 -10
- package/dist/cjs/nodeviews/TableContainer.js +83 -27
- package/dist/cjs/nodeviews/TableResizer.js +40 -19
- package/dist/cjs/nodeviews/TableRow.js +23 -23
- package/dist/cjs/pm-plugins/table-resizing/plugin.js +3 -3
- package/dist/cjs/pm-plugins/table-resizing/utils/resize-state.js +4 -4
- package/dist/cjs/pm-plugins/table-resizing/utils/scale-table.js +3 -3
- package/dist/cjs/ui/FloatingContextualMenu/styles.js +1 -1
- package/dist/cjs/ui/FloatingDragMenu/styles.js +1 -1
- package/dist/cjs/ui/common-styles.js +13 -13
- package/dist/cjs/ui/ui-styles.js +25 -25
- package/dist/cjs/utils/guidelines.js +7 -4
- package/dist/cjs/utils/merged-cells.js +3 -3
- package/dist/cjs/utils/snapping.js +7 -8
- package/dist/es2019/commands/misc.js +3 -3
- package/dist/es2019/nodeviews/TableContainer.js +70 -9
- package/dist/es2019/nodeviews/TableResizer.js +42 -21
- package/dist/es2019/nodeviews/TableRow.js +21 -21
- package/dist/es2019/pm-plugins/table-resizing/plugin.js +3 -3
- package/dist/es2019/pm-plugins/table-resizing/utils/resize-state.js +4 -4
- package/dist/es2019/pm-plugins/table-resizing/utils/scale-table.js +3 -3
- package/dist/es2019/ui/FloatingContextualMenu/styles.js +47 -47
- package/dist/es2019/ui/FloatingDragMenu/styles.js +30 -30
- package/dist/es2019/ui/common-styles.js +802 -816
- package/dist/es2019/ui/ui-styles.js +665 -678
- package/dist/es2019/utils/guidelines.js +5 -2
- package/dist/es2019/utils/merged-cells.js +3 -3
- package/dist/es2019/utils/snapping.js +5 -6
- package/dist/esm/commands/misc.js +3 -3
- package/dist/esm/nodeviews/TableCell.js +10 -10
- package/dist/esm/nodeviews/TableContainer.js +85 -29
- package/dist/esm/nodeviews/TableResizer.js +42 -21
- package/dist/esm/nodeviews/TableRow.js +23 -23
- package/dist/esm/pm-plugins/table-resizing/plugin.js +3 -3
- package/dist/esm/pm-plugins/table-resizing/utils/resize-state.js +4 -4
- package/dist/esm/pm-plugins/table-resizing/utils/scale-table.js +3 -3
- package/dist/esm/ui/FloatingContextualMenu/styles.js +1 -1
- package/dist/esm/ui/FloatingDragMenu/styles.js +1 -1
- package/dist/esm/ui/common-styles.js +13 -13
- package/dist/esm/ui/ui-styles.js +25 -25
- package/dist/esm/utils/guidelines.js +6 -3
- package/dist/esm/utils/merged-cells.js +3 -3
- package/dist/esm/utils/snapping.js +6 -7
- package/dist/types/nodeviews/TableResizer.d.ts +2 -1
- package/dist/types/pm-plugins/decorations/utils/index.d.ts +1 -1
- package/dist/types/pm-plugins/drag-and-drop/utils/autoscrollers.d.ts +1 -1
- package/dist/types/pm-plugins/drag-and-drop/utils/getDragBehaviour.d.ts +1 -1
- package/dist/types/pm-plugins/table-resizing/utils/index.d.ts +1 -1
- package/dist/types/ui/ColumnResizeWidget/index.d.ts +1 -1
- package/dist/types/ui/FloatingAlignmentButtons/FloatingAlignmentButtons.d.ts +1 -1
- package/dist/types/ui/FloatingToolbarLabel/FloatingToolbarLabel.d.ts +1 -1
- package/dist/types/ui/TableFloatingColumnControls/ColumnDropTargets/ColumnDropTarget.d.ts +1 -1
- package/dist/types/ui/TableFloatingControls/CornerControls/index.d.ts +1 -1
- package/dist/types/ui/icons/DragHandleDisabledIcon.d.ts +1 -1
- package/dist/types/utils/guidelines.d.ts +2 -1
- package/dist/types/utils/snapping.d.ts +3 -2
- package/dist/types-ts4.5/nodeviews/TableResizer.d.ts +2 -1
- package/dist/types-ts4.5/pm-plugins/decorations/utils/index.d.ts +1 -1
- package/dist/types-ts4.5/pm-plugins/drag-and-drop/utils/autoscrollers.d.ts +1 -1
- package/dist/types-ts4.5/pm-plugins/drag-and-drop/utils/getDragBehaviour.d.ts +1 -1
- package/dist/types-ts4.5/pm-plugins/table-resizing/utils/index.d.ts +1 -1
- package/dist/types-ts4.5/ui/ColumnResizeWidget/index.d.ts +1 -1
- package/dist/types-ts4.5/ui/FloatingAlignmentButtons/FloatingAlignmentButtons.d.ts +1 -1
- package/dist/types-ts4.5/ui/FloatingToolbarLabel/FloatingToolbarLabel.d.ts +1 -1
- package/dist/types-ts4.5/ui/TableFloatingColumnControls/ColumnDropTargets/ColumnDropTarget.d.ts +1 -1
- package/dist/types-ts4.5/ui/TableFloatingControls/CornerControls/index.d.ts +1 -1
- package/dist/types-ts4.5/ui/icons/DragHandleDisabledIcon.d.ts +1 -1
- package/dist/types-ts4.5/utils/guidelines.d.ts +2 -1
- package/dist/types-ts4.5/utils/snapping.d.ts +3 -2
- package/docs/0-intro.tsx +9 -7
- package/package.json +3 -3
- package/report.api.md +67 -66
- package/src/commands/clear.ts +36 -44
- package/src/commands/collapse.ts +8 -8
- package/src/commands/column-resize.ts +412 -452
- package/src/commands/delete.ts +14 -14
- package/src/commands/display-mode.ts +10 -11
- package/src/commands/go-to-next-cell.ts +48 -54
- package/src/commands/hover.ts +210 -227
- package/src/commands/index.ts +35 -35
- package/src/commands/insert.ts +208 -235
- package/src/commands/misc.ts +655 -748
- package/src/commands/referentiality.ts +9 -9
- package/src/commands/selection.ts +433 -563
- package/src/commands/sort.ts +68 -86
- package/src/commands/split-cell.ts +14 -14
- package/src/commands/toggle.ts +69 -67
- package/src/commands-with-analytics.ts +570 -639
- package/src/create-plugin-config.ts +13 -13
- package/src/event-handlers.ts +513 -612
- package/src/handlers.ts +120 -133
- package/src/nodeviews/ExternalDropTargets.tsx +68 -73
- package/src/nodeviews/OverflowShadowsObserver.ts +148 -157
- package/src/nodeviews/TableCell.ts +47 -54
- package/src/nodeviews/TableComponent.tsx +1018 -1112
- package/src/nodeviews/TableComponentWithSharedState.tsx +91 -94
- package/src/nodeviews/TableContainer.tsx +384 -340
- package/src/nodeviews/TableNodeViewBase.ts +19 -24
- package/src/nodeviews/TableResizer.tsx +642 -653
- package/src/nodeviews/TableRow.ts +580 -629
- package/src/nodeviews/TableStickyScrollbar.ts +173 -190
- package/src/nodeviews/__mocks__/OverflowShadowsObserver.ts +8 -8
- package/src/nodeviews/__mocks__/OverridableMock.ts +14 -15
- package/src/nodeviews/table.tsx +345 -375
- package/src/nodeviews/types.ts +21 -24
- package/src/nodeviews/update-overflow-shadows.ts +8 -14
- package/src/plugin.tsx +578 -603
- package/src/pm-plugins/analytics/actions.ts +10 -12
- package/src/pm-plugins/analytics/commands.ts +31 -37
- package/src/pm-plugins/analytics/plugin-factory.ts +4 -2
- package/src/pm-plugins/analytics/plugin-key.ts +1 -3
- package/src/pm-plugins/analytics/plugin.ts +60 -70
- package/src/pm-plugins/analytics/reducer.ts +19 -19
- package/src/pm-plugins/analytics/types.ts +10 -10
- package/src/pm-plugins/analytics/utils/moved-event.ts +38 -38
- package/src/pm-plugins/decorations/plugin.ts +58 -77
- package/src/pm-plugins/decorations/utils/column-controls.ts +59 -71
- package/src/pm-plugins/decorations/utils/column-resizing.ts +50 -57
- package/src/pm-plugins/decorations/utils/compose-decorations.ts +6 -6
- package/src/pm-plugins/decorations/utils/index.ts +3 -6
- package/src/pm-plugins/decorations/utils/types.ts +7 -12
- package/src/pm-plugins/default-table-selection.ts +3 -3
- package/src/pm-plugins/drag-and-drop/actions.ts +25 -25
- package/src/pm-plugins/drag-and-drop/commands-with-analytics.ts +158 -190
- package/src/pm-plugins/drag-and-drop/commands.ts +154 -170
- package/src/pm-plugins/drag-and-drop/consts.ts +4 -5
- package/src/pm-plugins/drag-and-drop/plugin-factory.ts +23 -20
- package/src/pm-plugins/drag-and-drop/plugin-key.ts +1 -3
- package/src/pm-plugins/drag-and-drop/plugin.ts +329 -383
- package/src/pm-plugins/drag-and-drop/reducer.ts +30 -30
- package/src/pm-plugins/drag-and-drop/types.ts +8 -8
- package/src/pm-plugins/drag-and-drop/utils/autoscrollers.ts +38 -41
- package/src/pm-plugins/drag-and-drop/utils/getDragBehaviour.ts +3 -6
- package/src/pm-plugins/drag-and-drop/utils/monitor.ts +57 -70
- package/src/pm-plugins/keymap.ts +208 -220
- package/src/pm-plugins/main.ts +348 -400
- package/src/pm-plugins/plugin-factory.ts +32 -34
- package/src/pm-plugins/safari-delete-composition-text-issue-workaround.ts +83 -97
- package/src/pm-plugins/sticky-headers/commands.ts +2 -6
- package/src/pm-plugins/sticky-headers/plugin-key.ts +1 -3
- package/src/pm-plugins/sticky-headers/plugin-state.ts +41 -44
- package/src/pm-plugins/sticky-headers/plugin.ts +4 -4
- package/src/pm-plugins/sticky-headers/types.ts +8 -8
- package/src/pm-plugins/sticky-headers/util.ts +10 -10
- package/src/pm-plugins/table-analytics.ts +70 -72
- package/src/pm-plugins/table-local-id.ts +180 -184
- package/src/pm-plugins/table-resizing/commands.ts +72 -85
- package/src/pm-plugins/table-resizing/event-handlers.ts +298 -317
- package/src/pm-plugins/table-resizing/plugin-factory.ts +10 -10
- package/src/pm-plugins/table-resizing/plugin-key.ts +1 -3
- package/src/pm-plugins/table-resizing/plugin.ts +61 -68
- package/src/pm-plugins/table-resizing/reducer.ts +30 -33
- package/src/pm-plugins/table-resizing/utils/colgroup.ts +84 -84
- package/src/pm-plugins/table-resizing/utils/column-state.ts +78 -81
- package/src/pm-plugins/table-resizing/utils/content-width.ts +94 -114
- package/src/pm-plugins/table-resizing/utils/dom.ts +93 -110
- package/src/pm-plugins/table-resizing/utils/index.ts +29 -34
- package/src/pm-plugins/table-resizing/utils/misc.ts +94 -119
- package/src/pm-plugins/table-resizing/utils/resize-column.ts +93 -106
- package/src/pm-plugins/table-resizing/utils/resize-logic.ts +240 -257
- package/src/pm-plugins/table-resizing/utils/resize-state.ts +343 -372
- package/src/pm-plugins/table-resizing/utils/scale-table.ts +202 -207
- package/src/pm-plugins/table-resizing/utils/types.ts +17 -17
- package/src/pm-plugins/table-resizing/utils/unit-to-number.ts +1 -2
- package/src/pm-plugins/table-selection-keymap.ts +25 -51
- package/src/pm-plugins/table-width.ts +191 -204
- package/src/pm-plugins/view-mode-sort/index.ts +223 -227
- package/src/pm-plugins/view-mode-sort/plugin-key.ts +3 -2
- package/src/pm-plugins/view-mode-sort/types.ts +12 -12
- package/src/pm-plugins/view-mode-sort/utils.ts +108 -117
- package/src/reducer.ts +139 -155
- package/src/toolbar.tsx +815 -905
- package/src/transforms/column-width.ts +186 -213
- package/src/transforms/delete-columns.ts +208 -222
- package/src/transforms/delete-rows.ts +117 -121
- package/src/transforms/fix-tables.ts +190 -215
- package/src/transforms/merge.ts +263 -269
- package/src/transforms/replace-table.ts +27 -43
- package/src/transforms/split.ts +65 -75
- package/src/types.ts +421 -427
- package/src/ui/ColumnResizeWidget/index.tsx +40 -47
- package/src/ui/DragHandle/HandleIconComponent.tsx +9 -13
- package/src/ui/DragHandle/index.tsx +221 -250
- package/src/ui/DragPreview/index.tsx +35 -35
- package/src/ui/FloatingAlignmentButtons/FloatingAlignmentButtons.tsx +33 -41
- package/src/ui/FloatingContextualButton/FixedButton.tsx +154 -157
- package/src/ui/FloatingContextualButton/index.tsx +109 -115
- package/src/ui/FloatingContextualButton/styles.ts +43 -46
- package/src/ui/FloatingContextualMenu/ContextualMenu.tsx +634 -694
- package/src/ui/FloatingContextualMenu/index.tsx +83 -101
- package/src/ui/FloatingContextualMenu/styles.ts +57 -65
- package/src/ui/FloatingDeleteButton/DeleteButton.tsx +37 -37
- package/src/ui/FloatingDeleteButton/getPopUpOptions.ts +47 -57
- package/src/ui/FloatingDeleteButton/index.tsx +319 -350
- package/src/ui/FloatingDragMenu/DragMenu.tsx +555 -596
- package/src/ui/FloatingDragMenu/DropdownMenu.tsx +152 -162
- package/src/ui/FloatingDragMenu/index.tsx +88 -102
- package/src/ui/FloatingDragMenu/styles.ts +51 -54
- package/src/ui/FloatingInsertButton/InsertButton.tsx +204 -217
- package/src/ui/FloatingInsertButton/getPopupOptions.ts +100 -115
- package/src/ui/FloatingInsertButton/index.tsx +248 -292
- package/src/ui/FloatingToolbarLabel/FloatingToolbarLabel.tsx +24 -29
- package/src/ui/TableFloatingColumnControls/ColumnControls/index.tsx +308 -329
- package/src/ui/TableFloatingColumnControls/ColumnDropTargets/ColumnDropTarget.tsx +85 -94
- package/src/ui/TableFloatingColumnControls/ColumnDropTargets/index.tsx +46 -46
- package/src/ui/TableFloatingColumnControls/index.tsx +116 -136
- package/src/ui/TableFloatingControls/CornerControls/ClassicCornerControls.tsx +79 -91
- package/src/ui/TableFloatingControls/CornerControls/DragCornerControls.tsx +95 -102
- package/src/ui/TableFloatingControls/CornerControls/index.tsx +1 -4
- package/src/ui/TableFloatingControls/CornerControls/types.ts +8 -8
- package/src/ui/TableFloatingControls/FloatingControlsWithSelection.tsx +50 -50
- package/src/ui/TableFloatingControls/NumberColumn/index.tsx +111 -124
- package/src/ui/TableFloatingControls/RowControls/ClassicControls.tsx +86 -105
- package/src/ui/TableFloatingControls/RowControls/DragControls.tsx +305 -341
- package/src/ui/TableFloatingControls/RowDropTarget/index.tsx +72 -75
- package/src/ui/TableFloatingControls/index.tsx +191 -193
- package/src/ui/TableFullWidthLabel/index.tsx +20 -20
- package/src/ui/common-styles.ts +880 -912
- package/src/ui/consts.ts +29 -74
- package/src/ui/icons/AddColLeftIcon.tsx +33 -39
- package/src/ui/icons/AddColRightIcon.tsx +33 -39
- package/src/ui/icons/AddRowAboveIcon.tsx +16 -22
- package/src/ui/icons/AddRowBelowIcon.tsx +33 -39
- package/src/ui/icons/DisplayModeIcon.tsx +31 -31
- package/src/ui/icons/DragHandleDisabledIcon.tsx +19 -21
- package/src/ui/icons/DragHandleIcon.tsx +12 -12
- package/src/ui/icons/DragInMotionIcon.tsx +45 -52
- package/src/ui/icons/MergeCellsIcon.tsx +22 -28
- package/src/ui/icons/MinimisedHandle.tsx +9 -9
- package/src/ui/icons/SplitCellIcon.tsx +30 -36
- package/src/ui/ui-styles.ts +769 -798
- package/src/utils/alignment.ts +1 -1
- package/src/utils/analytics.ts +192 -208
- package/src/utils/collapse.ts +55 -64
- package/src/utils/column-controls.ts +237 -254
- package/src/utils/create.ts +30 -30
- package/src/utils/decoration.ts +482 -502
- package/src/utils/dom.ts +127 -134
- package/src/utils/drag-menu.ts +322 -373
- package/src/utils/get-allow-add-column-custom-step.ts +4 -5
- package/src/utils/guidelines.ts +16 -21
- package/src/utils/index.ts +68 -68
- package/src/utils/merged-cells.ts +245 -254
- package/src/utils/nodes.ts +91 -106
- package/src/utils/paste.ts +119 -135
- package/src/utils/row-controls.ts +199 -213
- package/src/utils/selection.ts +77 -87
- package/src/utils/snapping.ts +87 -100
- package/src/utils/table.ts +44 -44
- package/src/utils/transforms.ts +5 -5
- 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
|
|
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(
|
|
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
|
-
|
|
217
|
-
|
|
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
|
|
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(
|
|
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
|
|
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
|
-
|
|
272
|
-
|
|
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 (
|
|
14
|
-
_inherits(TableCell,
|
|
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 (
|
|
50
|
-
var
|
|
51
|
-
key =
|
|
52
|
-
value =
|
|
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 (
|
|
60
|
-
var
|
|
61
|
-
key =
|
|
62
|
-
value =
|
|
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,
|
|
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
|
|
146
|
-
editorViewModeState =
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
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(
|
|
205
|
-
var children =
|
|
206
|
-
node =
|
|
207
|
-
className =
|
|
208
|
-
|
|
209
|
-
editorWidth =
|
|
210
|
-
lineLength =
|
|
211
|
-
editorView =
|
|
212
|
-
getPos =
|
|
213
|
-
tableRef =
|
|
214
|
-
isNested =
|
|
215
|
-
tableWrapperHeight =
|
|
216
|
-
isResizing =
|
|
217
|
-
pluginInjectionApi =
|
|
218
|
-
isWholeTableInDanger =
|
|
219
|
-
isTableResizingEnabled =
|
|
220
|
-
isTableScalingEnabled =
|
|
221
|
-
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
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
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) <
|
|
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(
|
|
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
|
|
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(
|
|
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 (
|
|
29
|
-
_inherits(TableRow,
|
|
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
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
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
|
-
|
|
43
|
-
|
|
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
|
-
|
|
93
|
-
|
|
94
|
-
|
|
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
|
-
|
|
164
|
-
|
|
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
|
|
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
|
|
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']": {
|