@atlaskit/editor-plugin-table 1.1.0 → 1.1.2
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/CHANGELOG.md +12 -0
- package/dist/cjs/index.js +0 -2
- package/dist/cjs/plugins/table/commands/clear.js +4 -16
- package/dist/cjs/plugins/table/commands/collapse.js +0 -6
- package/dist/cjs/plugins/table/commands/go-to-next-cell.js +7 -18
- package/dist/cjs/plugins/table/commands/hover.js +7 -37
- package/dist/cjs/plugins/table/commands/index.js +0 -8
- package/dist/cjs/plugins/table/commands/insert.js +17 -56
- package/dist/cjs/plugins/table/commands/misc.js +36 -132
- package/dist/cjs/plugins/table/commands/referentiality.js +0 -4
- package/dist/cjs/plugins/table/commands/selection.js +21 -87
- package/dist/cjs/plugins/table/commands/sort.js +2 -23
- package/dist/cjs/plugins/table/commands/split-cell.js +3 -11
- package/dist/cjs/plugins/table/commands/toggle.js +8 -34
- package/dist/cjs/plugins/table/commands-with-analytics.js +50 -139
- package/dist/cjs/plugins/table/create-plugin-config.js +0 -6
- package/dist/cjs/plugins/table/event-handlers.js +58 -160
- package/dist/cjs/plugins/table/handlers.js +10 -39
- package/dist/cjs/plugins/table/index.js +47 -91
- package/dist/cjs/plugins/table/nodeviews/OverflowShadowsObserver.js +8 -41
- package/dist/cjs/plugins/table/nodeviews/TableComponent.js +82 -188
- package/dist/cjs/plugins/table/nodeviews/table.js +12 -70
- package/dist/cjs/plugins/table/nodeviews/tableCell.js +15 -39
- package/dist/cjs/plugins/table/nodeviews/update-overflow-shadows.js +3 -15
- package/dist/cjs/plugins/table/pm-plugins/decorations/plugin.js +0 -18
- package/dist/cjs/plugins/table/pm-plugins/decorations/utils/column-controls.js +8 -27
- package/dist/cjs/plugins/table/pm-plugins/decorations/utils/column-resizing.js +8 -20
- package/dist/cjs/plugins/table/pm-plugins/decorations/utils/compose-decorations.js +1 -3
- package/dist/cjs/plugins/table/pm-plugins/decorations/utils/index.js +0 -3
- package/dist/cjs/plugins/table/pm-plugins/keymap.js +2 -15
- package/dist/cjs/plugins/table/pm-plugins/main.js +20 -72
- package/dist/cjs/plugins/table/pm-plugins/plugin-factory.js +25 -42
- package/dist/cjs/plugins/table/pm-plugins/plugin-key.js +0 -2
- package/dist/cjs/plugins/table/pm-plugins/safari-delayed-dom-selection-syncing-workaround.js +8 -8
- package/dist/cjs/plugins/table/pm-plugins/safari-delete-composition-text-issue-workaround.js +4 -23
- package/dist/cjs/plugins/table/pm-plugins/sticky-headers/commands.js +0 -5
- package/dist/cjs/plugins/table/pm-plugins/sticky-headers/index.js +0 -5
- package/dist/cjs/plugins/table/pm-plugins/sticky-headers/nodeviews/dom.js +4 -13
- package/dist/cjs/plugins/table/pm-plugins/sticky-headers/nodeviews/tableRow.js +56 -138
- package/dist/cjs/plugins/table/pm-plugins/sticky-headers/plugin-key.js +0 -2
- package/dist/cjs/plugins/table/pm-plugins/sticky-headers/plugin-state.js +15 -30
- package/dist/cjs/plugins/table/pm-plugins/sticky-headers/plugin.js +0 -6
- package/dist/cjs/plugins/table/pm-plugins/sticky-headers/util.js +0 -5
- package/dist/cjs/plugins/table/pm-plugins/table-local-id.js +13 -44
- package/dist/cjs/plugins/table/pm-plugins/table-resizing/commands.js +12 -42
- package/dist/cjs/plugins/table/pm-plugins/table-resizing/event-handlers.js +16 -52
- package/dist/cjs/plugins/table/pm-plugins/table-resizing/index.js +0 -4
- package/dist/cjs/plugins/table/pm-plugins/table-resizing/plugin-factory.js +0 -10
- package/dist/cjs/plugins/table/pm-plugins/table-resizing/plugin-key.js +0 -2
- package/dist/cjs/plugins/table/pm-plugins/table-resizing/plugin.js +5 -19
- package/dist/cjs/plugins/table/pm-plugins/table-resizing/reducer.js +0 -10
- package/dist/cjs/plugins/table/pm-plugins/table-resizing/utils/colgroup.js +0 -15
- package/dist/cjs/plugins/table/pm-plugins/table-resizing/utils/column-state.js +8 -28
- package/dist/cjs/plugins/table/pm-plugins/table-resizing/utils/content-width.js +3 -23
- package/dist/cjs/plugins/table/pm-plugins/table-resizing/utils/dom.js +4 -46
- package/dist/cjs/plugins/table/pm-plugins/table-resizing/utils/index.js +0 -9
- package/dist/cjs/plugins/table/pm-plugins/table-resizing/utils/misc.js +15 -36
- package/dist/cjs/plugins/table/pm-plugins/table-resizing/utils/resize-column.js +1 -4
- package/dist/cjs/plugins/table/pm-plugins/table-resizing/utils/resize-logic.js +15 -71
- package/dist/cjs/plugins/table/pm-plugins/table-resizing/utils/resize-state.js +34 -82
- package/dist/cjs/plugins/table/pm-plugins/table-resizing/utils/scale-table.js +12 -36
- package/dist/cjs/plugins/table/pm-plugins/table-resizing/utils/unit-to-number.js +0 -2
- package/dist/cjs/plugins/table/pm-plugins/table-selection-keymap.js +0 -5
- package/dist/cjs/plugins/table/reducer.js +0 -24
- package/dist/cjs/plugins/table/toolbar.js +14 -94
- package/dist/cjs/plugins/table/transforms/column-width.js +12 -45
- package/dist/cjs/plugins/table/transforms/delete-columns.js +11 -76
- package/dist/cjs/plugins/table/transforms/delete-rows.js +4 -42
- package/dist/cjs/plugins/table/transforms/fix-tables.js +24 -61
- package/dist/cjs/plugins/table/transforms/index.js +0 -7
- package/dist/cjs/plugins/table/transforms/merge.js +14 -90
- package/dist/cjs/plugins/table/transforms/metadata.js +0 -5
- package/dist/cjs/plugins/table/transforms/replace-table.js +2 -13
- package/dist/cjs/plugins/table/transforms/split.js +18 -32
- package/dist/cjs/plugins/table/types.js +0 -11
- package/dist/cjs/plugins/table/ui/FloatingContextualButton/index.js +10 -51
- package/dist/cjs/plugins/table/ui/FloatingContextualButton/styles.js +0 -12
- package/dist/cjs/plugins/table/ui/FloatingContextualMenu/ContextualMenu.js +46 -145
- package/dist/cjs/plugins/table/ui/FloatingContextualMenu/index.js +12 -35
- package/dist/cjs/plugins/table/ui/FloatingContextualMenu/styles.js +0 -11
- package/dist/cjs/plugins/table/ui/FloatingDeleteButton/DeleteButton.js +5 -12
- package/dist/cjs/plugins/table/ui/FloatingDeleteButton/getPopUpOptions.js +3 -16
- package/dist/cjs/plugins/table/ui/FloatingDeleteButton/index.js +19 -89
- package/dist/cjs/plugins/table/ui/FloatingInsertButton/InsertButton.js +6 -31
- package/dist/cjs/plugins/table/ui/FloatingInsertButton/getPopupOptions.js +5 -22
- package/dist/cjs/plugins/table/ui/FloatingInsertButton/index.js +25 -80
- package/dist/cjs/plugins/table/ui/LayoutButton/index.js +16 -64
- package/dist/cjs/plugins/table/ui/TableFloatingControls/CornerControls/index.js +14 -47
- package/dist/cjs/plugins/table/ui/TableFloatingControls/NumberColumn/index.js +20 -48
- package/dist/cjs/plugins/table/ui/TableFloatingControls/RowControls/index.js +10 -43
- package/dist/cjs/plugins/table/ui/TableFloatingControls/index.js +33 -74
- package/dist/cjs/plugins/table/ui/common-styles.js +6 -19
- package/dist/cjs/plugins/table/ui/consts.js +3 -8
- package/dist/cjs/plugins/table/ui/messages.js +0 -3
- package/dist/cjs/plugins/table/ui/ui-styles.js +0 -32
- package/dist/cjs/plugins/table/utils/analytics.js +4 -19
- package/dist/cjs/plugins/table/utils/collapse.js +4 -21
- package/dist/cjs/plugins/table/utils/column-controls.js +25 -61
- package/dist/cjs/plugins/table/utils/decoration.js +46 -114
- package/dist/cjs/plugins/table/utils/dom.js +4 -51
- package/dist/cjs/plugins/table/utils/get-allow-add-column-custom-step.js +0 -2
- package/dist/cjs/plugins/table/utils/index.js +0 -10
- package/dist/cjs/plugins/table/utils/nodes.js +5 -48
- package/dist/cjs/plugins/table/utils/paste.js +22 -47
- package/dist/cjs/plugins/table/utils/row-controls.js +6 -67
- package/dist/cjs/plugins/table/utils/selection.js +3 -36
- package/dist/cjs/plugins/table/utils/table.js +0 -11
- package/dist/cjs/plugins/table/utils/update-plugin-state-decorations.js +0 -4
- package/dist/cjs/plugins/table-plugin.js +0 -3
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/plugins/table/commands/clear.js +3 -8
- package/dist/es2019/plugins/table/commands/collapse.js +0 -3
- package/dist/es2019/plugins/table/commands/go-to-next-cell.js +4 -7
- package/dist/es2019/plugins/table/commands/hover.js +7 -17
- package/dist/es2019/plugins/table/commands/insert.js +16 -36
- package/dist/es2019/plugins/table/commands/misc.js +37 -67
- package/dist/es2019/plugins/table/commands/selection.js +7 -62
- package/dist/es2019/plugins/table/commands/sort.js +0 -12
- package/dist/es2019/plugins/table/commands/split-cell.js +0 -4
- package/dist/es2019/plugins/table/commands/toggle.js +13 -15
- package/dist/es2019/plugins/table/commands-with-analytics.js +4 -14
- package/dist/es2019/plugins/table/event-handlers.js +14 -62
- package/dist/es2019/plugins/table/handlers.js +16 -26
- package/dist/es2019/plugins/table/index.js +12 -25
- package/dist/es2019/plugins/table/nodeviews/OverflowShadowsObserver.js +8 -40
- package/dist/es2019/plugins/table/nodeviews/TableComponent.js +27 -100
- package/dist/es2019/plugins/table/nodeviews/table.js +3 -33
- package/dist/es2019/plugins/table/nodeviews/tableCell.js +7 -16
- package/dist/es2019/plugins/table/nodeviews/update-overflow-shadows.js +3 -10
- package/dist/es2019/plugins/table/pm-plugins/decorations/plugin.js +0 -5
- package/dist/es2019/plugins/table/pm-plugins/decorations/utils/column-controls.js +4 -13
- package/dist/es2019/plugins/table/pm-plugins/decorations/utils/column-resizing.js +0 -3
- package/dist/es2019/plugins/table/pm-plugins/keymap.js +2 -3
- package/dist/es2019/plugins/table/pm-plugins/main.js +19 -43
- package/dist/es2019/plugins/table/pm-plugins/plugin-factory.js +2 -6
- package/dist/es2019/plugins/table/pm-plugins/safari-delayed-dom-selection-syncing-workaround.js +8 -3
- package/dist/es2019/plugins/table/pm-plugins/safari-delete-composition-text-issue-workaround.js +0 -12
- package/dist/es2019/plugins/table/pm-plugins/sticky-headers/nodeviews/dom.js +4 -9
- package/dist/es2019/plugins/table/pm-plugins/sticky-headers/nodeviews/tableRow.js +55 -130
- package/dist/es2019/plugins/table/pm-plugins/sticky-headers/plugin-state.js +2 -9
- package/dist/es2019/plugins/table/pm-plugins/sticky-headers/util.js +0 -3
- package/dist/es2019/plugins/table/pm-plugins/table-local-id.js +20 -39
- package/dist/es2019/plugins/table/pm-plugins/table-resizing/commands.js +7 -15
- package/dist/es2019/plugins/table/pm-plugins/table-resizing/event-handlers.js +9 -27
- package/dist/es2019/plugins/table/pm-plugins/table-resizing/plugin-factory.js +2 -4
- package/dist/es2019/plugins/table/pm-plugins/table-resizing/plugin.js +2 -5
- package/dist/es2019/plugins/table/pm-plugins/table-resizing/reducer.js +8 -8
- package/dist/es2019/plugins/table/pm-plugins/table-resizing/utils/colgroup.js +0 -4
- package/dist/es2019/plugins/table/pm-plugins/table-resizing/utils/column-state.js +8 -11
- package/dist/es2019/plugins/table/pm-plugins/table-resizing/utils/content-width.js +4 -21
- package/dist/es2019/plugins/table/pm-plugins/table-resizing/utils/dom.js +3 -22
- package/dist/es2019/plugins/table/pm-plugins/table-resizing/utils/misc.js +10 -18
- package/dist/es2019/plugins/table/pm-plugins/table-resizing/utils/resize-logic.js +29 -59
- package/dist/es2019/plugins/table/pm-plugins/table-resizing/utils/resize-state.js +54 -51
- package/dist/es2019/plugins/table/pm-plugins/table-resizing/utils/scale-table.js +9 -14
- package/dist/es2019/plugins/table/reducer.js +26 -30
- package/dist/es2019/plugins/table/toolbar.js +5 -48
- package/dist/es2019/plugins/table/transforms/column-width.js +16 -28
- package/dist/es2019/plugins/table/transforms/delete-columns.js +17 -58
- package/dist/es2019/plugins/table/transforms/delete-rows.js +8 -25
- package/dist/es2019/plugins/table/transforms/fix-tables.js +25 -42
- package/dist/es2019/plugins/table/transforms/merge.js +22 -70
- package/dist/es2019/plugins/table/transforms/metadata.js +3 -2
- package/dist/es2019/plugins/table/transforms/replace-table.js +0 -2
- package/dist/es2019/plugins/table/transforms/split.js +16 -19
- package/dist/es2019/plugins/table/types.js +2 -4
- package/dist/es2019/plugins/table/ui/FloatingContextualButton/index.js +2 -16
- package/dist/es2019/plugins/table/ui/FloatingContextualMenu/ContextualMenu.js +8 -54
- package/dist/es2019/plugins/table/ui/FloatingContextualMenu/index.js +4 -13
- package/dist/es2019/plugins/table/ui/FloatingDeleteButton/DeleteButton.js +0 -2
- package/dist/es2019/plugins/table/ui/FloatingDeleteButton/getPopUpOptions.js +2 -11
- package/dist/es2019/plugins/table/ui/FloatingDeleteButton/index.js +13 -49
- package/dist/es2019/plugins/table/ui/FloatingInsertButton/InsertButton.js +0 -8
- package/dist/es2019/plugins/table/ui/FloatingInsertButton/getPopupOptions.js +16 -24
- package/dist/es2019/plugins/table/ui/FloatingInsertButton/index.js +3 -31
- package/dist/es2019/plugins/table/ui/LayoutButton/index.js +2 -29
- package/dist/es2019/plugins/table/ui/TableFloatingControls/CornerControls/index.js +0 -12
- package/dist/es2019/plugins/table/ui/TableFloatingControls/NumberColumn/index.js +6 -12
- package/dist/es2019/plugins/table/ui/TableFloatingControls/RowControls/index.js +0 -9
- package/dist/es2019/plugins/table/ui/TableFloatingControls/index.js +4 -19
- package/dist/es2019/plugins/table/ui/common-styles.js +6 -5
- package/dist/es2019/plugins/table/ui/consts.js +4 -3
- package/dist/es2019/plugins/table/ui/ui-styles.js +0 -10
- package/dist/es2019/plugins/table/utils/analytics.js +0 -8
- package/dist/es2019/plugins/table/utils/collapse.js +3 -14
- package/dist/es2019/plugins/table/utils/column-controls.js +22 -37
- package/dist/es2019/plugins/table/utils/decoration.js +13 -51
- package/dist/es2019/plugins/table/utils/dom.js +3 -19
- package/dist/es2019/plugins/table/utils/nodes.js +2 -15
- package/dist/es2019/plugins/table/utils/paste.js +17 -22
- package/dist/es2019/plugins/table/utils/row-controls.js +12 -45
- package/dist/es2019/plugins/table/utils/selection.js +0 -21
- package/dist/es2019/plugins/table/utils/table.js +0 -2
- package/dist/es2019/version.json +1 -1
- package/dist/esm/plugins/table/commands/clear.js +3 -8
- package/dist/esm/plugins/table/commands/collapse.js +0 -3
- package/dist/esm/plugins/table/commands/go-to-next-cell.js +6 -9
- package/dist/esm/plugins/table/commands/hover.js +8 -18
- package/dist/esm/plugins/table/commands/insert.js +16 -36
- package/dist/esm/plugins/table/commands/misc.js +39 -78
- package/dist/esm/plugins/table/commands/selection.js +21 -78
- package/dist/esm/plugins/table/commands/sort.js +2 -14
- package/dist/esm/plugins/table/commands/split-cell.js +3 -8
- package/dist/esm/plugins/table/commands/toggle.js +11 -20
- package/dist/esm/plugins/table/commands-with-analytics.js +50 -85
- package/dist/esm/plugins/table/create-plugin-config.js +0 -3
- package/dist/esm/plugins/table/event-handlers.js +58 -123
- package/dist/esm/plugins/table/handlers.js +11 -29
- package/dist/esm/plugins/table/index.js +47 -60
- package/dist/esm/plugins/table/nodeviews/OverflowShadowsObserver.js +8 -44
- package/dist/esm/plugins/table/nodeviews/TableComponent.js +82 -181
- package/dist/esm/plugins/table/nodeviews/table.js +12 -52
- package/dist/esm/plugins/table/nodeviews/tableCell.js +15 -33
- package/dist/esm/plugins/table/nodeviews/update-overflow-shadows.js +3 -10
- package/dist/esm/plugins/table/pm-plugins/decorations/plugin.js +0 -5
- package/dist/esm/plugins/table/pm-plugins/decorations/utils/column-controls.js +8 -19
- package/dist/esm/plugins/table/pm-plugins/decorations/utils/column-resizing.js +8 -13
- package/dist/esm/plugins/table/pm-plugins/decorations/utils/compose-decorations.js +1 -1
- package/dist/esm/plugins/table/pm-plugins/keymap.js +2 -3
- package/dist/esm/plugins/table/pm-plugins/main.js +20 -47
- package/dist/esm/plugins/table/pm-plugins/plugin-factory.js +25 -37
- package/dist/esm/plugins/table/pm-plugins/safari-delayed-dom-selection-syncing-workaround.js +8 -3
- package/dist/esm/plugins/table/pm-plugins/safari-delete-composition-text-issue-workaround.js +3 -15
- package/dist/esm/plugins/table/pm-plugins/sticky-headers/nodeviews/dom.js +4 -9
- package/dist/esm/plugins/table/pm-plugins/sticky-headers/nodeviews/tableRow.js +58 -147
- package/dist/esm/plugins/table/pm-plugins/sticky-headers/plugin-state.js +15 -27
- package/dist/esm/plugins/table/pm-plugins/sticky-headers/util.js +0 -3
- package/dist/esm/plugins/table/pm-plugins/table-local-id.js +14 -37
- package/dist/esm/plugins/table/pm-plugins/table-resizing/commands.js +12 -24
- package/dist/esm/plugins/table/pm-plugins/table-resizing/event-handlers.js +16 -36
- package/dist/esm/plugins/table/pm-plugins/table-resizing/plugin-factory.js +0 -6
- package/dist/esm/plugins/table/pm-plugins/table-resizing/plugin.js +5 -8
- package/dist/esm/plugins/table/pm-plugins/table-resizing/reducer.js +0 -7
- package/dist/esm/plugins/table/pm-plugins/table-resizing/utils/colgroup.js +0 -4
- package/dist/esm/plugins/table/pm-plugins/table-resizing/utils/column-state.js +8 -12
- package/dist/esm/plugins/table/pm-plugins/table-resizing/utils/content-width.js +5 -22
- package/dist/esm/plugins/table/pm-plugins/table-resizing/utils/dom.js +4 -23
- package/dist/esm/plugins/table/pm-plugins/table-resizing/utils/misc.js +15 -23
- package/dist/esm/plugins/table/pm-plugins/table-resizing/utils/resize-logic.js +15 -60
- package/dist/esm/plugins/table/pm-plugins/table-resizing/utils/resize-state.js +34 -55
- package/dist/esm/plugins/table/pm-plugins/table-resizing/utils/scale-table.js +12 -24
- package/dist/esm/plugins/table/reducer.js +0 -20
- package/dist/esm/plugins/table/toolbar.js +13 -63
- package/dist/esm/plugins/table/transforms/column-width.js +12 -32
- package/dist/esm/plugins/table/transforms/delete-columns.js +11 -62
- package/dist/esm/plugins/table/transforms/delete-rows.js +4 -30
- package/dist/esm/plugins/table/transforms/fix-tables.js +24 -49
- package/dist/esm/plugins/table/transforms/merge.js +16 -75
- package/dist/esm/plugins/table/transforms/metadata.js +3 -2
- package/dist/esm/plugins/table/transforms/replace-table.js +2 -6
- package/dist/esm/plugins/table/transforms/split.js +18 -29
- package/dist/esm/plugins/table/types.js +0 -6
- package/dist/esm/plugins/table/ui/FloatingContextualButton/index.js +10 -31
- package/dist/esm/plugins/table/ui/FloatingContextualButton/styles.js +0 -2
- package/dist/esm/plugins/table/ui/FloatingContextualMenu/ContextualMenu.js +46 -126
- package/dist/esm/plugins/table/ui/FloatingContextualMenu/index.js +13 -24
- package/dist/esm/plugins/table/ui/FloatingContextualMenu/styles.js +0 -2
- package/dist/esm/plugins/table/ui/FloatingDeleteButton/DeleteButton.js +5 -7
- package/dist/esm/plugins/table/ui/FloatingDeleteButton/getPopUpOptions.js +3 -13
- package/dist/esm/plugins/table/ui/FloatingDeleteButton/index.js +19 -68
- package/dist/esm/plugins/table/ui/FloatingInsertButton/InsertButton.js +6 -14
- package/dist/esm/plugins/table/ui/FloatingInsertButton/getPopupOptions.js +5 -18
- package/dist/esm/plugins/table/ui/FloatingInsertButton/index.js +25 -57
- package/dist/esm/plugins/table/ui/LayoutButton/index.js +16 -47
- package/dist/esm/plugins/table/ui/TableFloatingControls/CornerControls/index.js +14 -35
- package/dist/esm/plugins/table/ui/TableFloatingControls/NumberColumn/index.js +20 -38
- package/dist/esm/plugins/table/ui/TableFloatingControls/RowControls/index.js +10 -29
- package/dist/esm/plugins/table/ui/TableFloatingControls/index.js +33 -62
- package/dist/esm/plugins/table/ui/common-styles.js +6 -7
- package/dist/esm/plugins/table/ui/consts.js +4 -3
- package/dist/esm/plugins/table/ui/ui-styles.js +0 -12
- package/dist/esm/plugins/table/utils/analytics.js +4 -13
- package/dist/esm/plugins/table/utils/collapse.js +4 -15
- package/dist/esm/plugins/table/utils/column-controls.js +25 -41
- package/dist/esm/plugins/table/utils/decoration.js +46 -88
- package/dist/esm/plugins/table/utils/dom.js +4 -20
- package/dist/esm/plugins/table/utils/nodes.js +5 -18
- package/dist/esm/plugins/table/utils/paste.js +24 -29
- package/dist/esm/plugins/table/utils/row-controls.js +6 -46
- package/dist/esm/plugins/table/utils/selection.js +3 -26
- package/dist/esm/plugins/table/utils/table.js +0 -2
- package/dist/esm/version.json +1 -1
- package/package.json +2 -2
- package/src/__tests__/visual-regression/cell-options-menu.ts +1 -12
|
@@ -10,27 +10,25 @@
|
|
|
10
10
|
* TODO: https://product-fabric.atlassian.net/browse/ED-12714
|
|
11
11
|
*
|
|
12
12
|
*/
|
|
13
|
+
|
|
13
14
|
import { SafePlugin } from '@atlaskit/editor-common/safe-plugin';
|
|
14
15
|
import { PluginKey } from 'prosemirror-state';
|
|
15
16
|
import rafSchedule from 'raf-schd';
|
|
16
17
|
import { uuid } from '@atlaskit/adf-schema';
|
|
17
18
|
import { stepAddsOneOf } from '@atlaskit/editor-common/utils';
|
|
18
19
|
const pluginKey = new PluginKey('tableLocalIdPlugin');
|
|
19
|
-
|
|
20
20
|
const getPluginState = state => state && pluginKey.getState(state);
|
|
21
|
+
|
|
21
22
|
/**
|
|
22
23
|
* Traverses a transaction's steps to see if we're inserting any tables
|
|
23
24
|
*/
|
|
24
|
-
|
|
25
|
-
|
|
26
25
|
const checkIsAddingTable = (transaction, nodeType) => {
|
|
27
26
|
return transaction.steps.some(step => stepAddsOneOf(step, new Set([nodeType])));
|
|
28
27
|
};
|
|
28
|
+
|
|
29
29
|
/**
|
|
30
30
|
* Ensures uniqueness of `localId`s on tables being created or edited
|
|
31
31
|
*/
|
|
32
|
-
|
|
33
|
-
|
|
34
32
|
const createPlugin = dispatch => new SafePlugin({
|
|
35
33
|
key: pluginKey,
|
|
36
34
|
state: {
|
|
@@ -39,28 +37,24 @@ const createPlugin = dispatch => new SafePlugin({
|
|
|
39
37
|
parsedForLocalIds: false
|
|
40
38
|
};
|
|
41
39
|
},
|
|
42
|
-
|
|
43
40
|
apply(tr, pluginState) {
|
|
44
41
|
const meta = tr.getMeta(pluginKey);
|
|
45
|
-
|
|
46
42
|
if (meta) {
|
|
47
43
|
const keys = Object.keys(meta);
|
|
48
44
|
const changed = keys.some(key => {
|
|
49
45
|
return pluginState[key] !== meta[key];
|
|
50
46
|
});
|
|
51
|
-
|
|
52
47
|
if (changed) {
|
|
53
|
-
const newState = {
|
|
48
|
+
const newState = {
|
|
49
|
+
...pluginState,
|
|
54
50
|
...meta
|
|
55
51
|
};
|
|
56
52
|
dispatch(pluginKey, newState);
|
|
57
53
|
return newState;
|
|
58
54
|
}
|
|
59
55
|
}
|
|
60
|
-
|
|
61
56
|
return pluginState;
|
|
62
57
|
}
|
|
63
|
-
|
|
64
58
|
},
|
|
65
59
|
view: () => {
|
|
66
60
|
return {
|
|
@@ -86,17 +80,13 @@ const createPlugin = dispatch => new SafePlugin({
|
|
|
86
80
|
state
|
|
87
81
|
} = editorView;
|
|
88
82
|
const pluginState = getPluginState(state);
|
|
89
|
-
|
|
90
83
|
if (!pluginState) {
|
|
91
84
|
return;
|
|
92
85
|
}
|
|
93
|
-
|
|
94
86
|
const parsed = pluginState.parsedForLocalIds;
|
|
95
|
-
|
|
96
87
|
if (parsed) {
|
|
97
88
|
return;
|
|
98
89
|
}
|
|
99
|
-
|
|
100
90
|
const {
|
|
101
91
|
table
|
|
102
92
|
} = state.schema.nodes;
|
|
@@ -106,10 +96,10 @@ const createPlugin = dispatch => new SafePlugin({
|
|
|
106
96
|
editorView.state.doc.descendants((node, pos) => {
|
|
107
97
|
const isTable = node.type === table;
|
|
108
98
|
const localId = node.attrs.localId;
|
|
109
|
-
|
|
110
99
|
if (isTable && !localId) {
|
|
111
100
|
tableIdWasAdded = true;
|
|
112
|
-
tr.setNodeMarkup(pos, undefined, {
|
|
101
|
+
tr.setNodeMarkup(pos, undefined, {
|
|
102
|
+
...node.attrs,
|
|
113
103
|
localId: uuid.generate()
|
|
114
104
|
});
|
|
115
105
|
return false;
|
|
@@ -118,11 +108,8 @@ const createPlugin = dispatch => new SafePlugin({
|
|
|
118
108
|
* Otherwise continue traversing, we can encounter tables nested in
|
|
119
109
|
* expands/bodiedExtensions
|
|
120
110
|
*/
|
|
121
|
-
|
|
122
|
-
|
|
123
111
|
return true;
|
|
124
112
|
});
|
|
125
|
-
|
|
126
113
|
if (tableIdWasAdded) {
|
|
127
114
|
tr.setMeta('addToHistory', false);
|
|
128
115
|
editorView.dispatch(tr);
|
|
@@ -132,7 +119,6 @@ const createPlugin = dispatch => new SafePlugin({
|
|
|
132
119
|
parsedForLocalIds: true
|
|
133
120
|
}));
|
|
134
121
|
}
|
|
135
|
-
|
|
136
122
|
};
|
|
137
123
|
},
|
|
138
124
|
appendTransaction: (transactions, _oldState, newState) => {
|
|
@@ -145,57 +131,52 @@ const createPlugin = dispatch => new SafePlugin({
|
|
|
145
131
|
transactions.forEach(transaction => {
|
|
146
132
|
if (!transaction.docChanged) {
|
|
147
133
|
return;
|
|
148
|
-
}
|
|
149
|
-
// to handle any extra cut cases in this plugin
|
|
150
|
-
|
|
134
|
+
}
|
|
151
135
|
|
|
136
|
+
// Don't interfere with cut as it clashes with fixTables & we don't need
|
|
137
|
+
// to handle any extra cut cases in this plugin
|
|
152
138
|
const uiEvent = transaction.getMeta('uiEvent');
|
|
153
|
-
|
|
154
139
|
if (uiEvent === 'cut') {
|
|
155
140
|
return;
|
|
156
141
|
}
|
|
157
|
-
/** Check if we're actually inserting a table, otherwise we can ignore this tr */
|
|
158
|
-
|
|
159
142
|
|
|
143
|
+
/** Check if we're actually inserting a table, otherwise we can ignore this tr */
|
|
160
144
|
const isAddingTable = checkIsAddingTable(transaction, table);
|
|
161
|
-
|
|
162
145
|
if (!isAddingTable) {
|
|
163
146
|
return;
|
|
164
|
-
}
|
|
165
|
-
|
|
147
|
+
}
|
|
166
148
|
|
|
149
|
+
// Can't simply look at changed nodes, as we could be adding a table
|
|
167
150
|
newState.doc.descendants((node, pos) => {
|
|
168
151
|
const isTable = node.type === table;
|
|
169
|
-
const localId = node.attrs.localId;
|
|
152
|
+
const localId = node.attrs.localId;
|
|
170
153
|
|
|
154
|
+
// Dealing with a table - make sure it's a unique ID
|
|
171
155
|
if (isTable) {
|
|
172
156
|
if (localId && !idsObserved.has(localId)) {
|
|
173
|
-
idsObserved.add(localId);
|
|
157
|
+
idsObserved.add(localId);
|
|
158
|
+
// Also add a localId if it happens to not have one,
|
|
174
159
|
} else if (!localId || idsObserved.has(localId)) {
|
|
175
160
|
modified = true;
|
|
176
|
-
tr.setNodeMarkup(pos, undefined, {
|
|
161
|
+
tr.setNodeMarkup(pos, undefined, {
|
|
162
|
+
...node.attrs,
|
|
177
163
|
localId: uuid.generate()
|
|
178
164
|
});
|
|
179
165
|
}
|
|
180
|
-
|
|
181
166
|
return false;
|
|
182
167
|
}
|
|
168
|
+
|
|
183
169
|
/**
|
|
184
170
|
* Otherwise continue traversing, we can encounter tables nested in
|
|
185
171
|
* expands/bodiedExtensions
|
|
186
172
|
*/
|
|
187
|
-
|
|
188
|
-
|
|
189
173
|
return true;
|
|
190
174
|
});
|
|
191
175
|
});
|
|
192
|
-
|
|
193
176
|
if (modified) {
|
|
194
177
|
return tr;
|
|
195
178
|
}
|
|
196
|
-
|
|
197
179
|
return;
|
|
198
180
|
}
|
|
199
181
|
});
|
|
200
|
-
|
|
201
182
|
export { createPlugin };
|
|
@@ -7,45 +7,40 @@ export const scaleTable = (tableRef, options, domAtPos) => (state, dispatch) =>
|
|
|
7
7
|
if (!tableRef) {
|
|
8
8
|
return false;
|
|
9
9
|
}
|
|
10
|
-
|
|
11
10
|
const {
|
|
12
11
|
node,
|
|
13
12
|
start,
|
|
14
13
|
parentWidth
|
|
15
|
-
} = options;
|
|
14
|
+
} = options;
|
|
16
15
|
|
|
16
|
+
// If a table has not been resized yet, columns should be auto.
|
|
17
17
|
if (hasTableBeenResized(node) === false) {
|
|
18
18
|
// If its not a re-sized table, we still want to re-create cols
|
|
19
19
|
// To force reflow of columns upon delete.
|
|
20
20
|
recreateResizeColsByNode(tableRef, node);
|
|
21
21
|
return false;
|
|
22
22
|
}
|
|
23
|
-
|
|
24
23
|
let resizeState;
|
|
25
|
-
|
|
26
24
|
if (parentWidth) {
|
|
27
25
|
resizeState = scaleWithParent(tableRef, parentWidth, node, start, domAtPos);
|
|
28
26
|
} else {
|
|
29
27
|
resizeState = scale(tableRef, options, domAtPos);
|
|
30
28
|
}
|
|
31
|
-
|
|
32
29
|
if (resizeState) {
|
|
33
30
|
let {
|
|
34
31
|
tr
|
|
35
32
|
} = state;
|
|
36
33
|
tr = updateColumnWidths(resizeState, node, start)(tr);
|
|
37
|
-
|
|
38
34
|
if (tr.docChanged && dispatch) {
|
|
39
|
-
tr.setMeta('scrollIntoView', false);
|
|
35
|
+
tr.setMeta('scrollIntoView', false);
|
|
36
|
+
// TODO: ED-8995
|
|
40
37
|
// We need to do this check to reduce the number of race conditions when working with tables.
|
|
41
38
|
// This metadata is been used in the sendTransaction function in the Collab plugin
|
|
42
|
-
|
|
43
39
|
tr.setMeta('scaleTable', true);
|
|
44
40
|
dispatch(tr);
|
|
45
41
|
return true;
|
|
46
42
|
}
|
|
47
43
|
}
|
|
48
|
-
|
|
49
44
|
return false;
|
|
50
45
|
};
|
|
51
46
|
export const evenColumns = ({
|
|
@@ -56,21 +51,19 @@ export const evenColumns = ({
|
|
|
56
51
|
}) => (state, dispatch) => {
|
|
57
52
|
if (!isTableSelected(state.selection)) {
|
|
58
53
|
return false;
|
|
59
|
-
}
|
|
60
|
-
// Note: ProseMirror's handleDoubleClick doesn't quite work with DOM mousedown event handler
|
|
61
|
-
|
|
54
|
+
}
|
|
62
55
|
|
|
56
|
+
// double click detection logic
|
|
57
|
+
// Note: ProseMirror's handleDoubleClick doesn't quite work with DOM mousedown event handler
|
|
63
58
|
const {
|
|
64
59
|
lastClick
|
|
65
60
|
} = getPluginState(state);
|
|
66
61
|
const now = Date.now();
|
|
67
|
-
|
|
68
62
|
if (lastClick && now - lastClick.time < 500 && isClickNear(event, lastClick)) {
|
|
69
63
|
const newState = evenAllColumnsWidths(resizeState);
|
|
70
64
|
setLastClick(null, tr => updateColumnWidths(newState, table, start)(tr))(state, dispatch);
|
|
71
65
|
return true;
|
|
72
66
|
}
|
|
73
|
-
|
|
74
67
|
setLastClick({
|
|
75
68
|
x: event.clientX,
|
|
76
69
|
y: event.clientY,
|
|
@@ -83,7 +76,6 @@ export const distributeColumnsWidths = (newResizeState, table) => (state, dispat
|
|
|
83
76
|
const tr = updateColumnWidths(newResizeState, table.node, table.start)(state.tr);
|
|
84
77
|
stopResizing(tr)(state, dispatch);
|
|
85
78
|
}
|
|
86
|
-
|
|
87
79
|
return true;
|
|
88
80
|
};
|
|
89
81
|
export const setResizeHandlePos = resizeHandlePos => createCommand({
|
|
@@ -16,11 +16,9 @@ export const handleMouseDown = (view, event, localResizeHandlePos, getEditorCont
|
|
|
16
16
|
} = view;
|
|
17
17
|
const editorDisabled = !view.editable;
|
|
18
18
|
const domAtPos = view.domAtPos.bind(view);
|
|
19
|
-
|
|
20
19
|
if (editorDisabled || localResizeHandlePos === null || !pointsAtCell(state.doc.resolve(localResizeHandlePos))) {
|
|
21
20
|
return false;
|
|
22
21
|
}
|
|
23
|
-
|
|
24
22
|
event.preventDefault();
|
|
25
23
|
const mouseDownTime = event.timeStamp;
|
|
26
24
|
const cell = state.doc.nodeAt(localResizeHandlePos);
|
|
@@ -28,19 +26,15 @@ export const handleMouseDown = (view, event, localResizeHandlePos, getEditorCont
|
|
|
28
26
|
const originalTable = $cell.node(-1);
|
|
29
27
|
const start = $cell.start(-1);
|
|
30
28
|
let dom = domAtPos(start).node;
|
|
31
|
-
|
|
32
29
|
if (dom && dom.nodeName !== 'TABLE') {
|
|
33
30
|
dom = dom.closest('table');
|
|
34
31
|
}
|
|
35
|
-
|
|
36
32
|
const containerWidth = getEditorContainerWidth();
|
|
37
33
|
const parentWidth = getParentNodeWidth(start, state, containerWidth);
|
|
38
34
|
let maxSize = parentWidth || getLayoutSize(dom.getAttribute('data-layout'), containerWidth.width, {});
|
|
39
|
-
|
|
40
35
|
if (originalTable.attrs.isNumberColumnEnabled) {
|
|
41
36
|
maxSize -= akEditorTableNumberColumnWidth;
|
|
42
37
|
}
|
|
43
|
-
|
|
44
38
|
const resizeState = getResizeState({
|
|
45
39
|
minWidth: tableCellMinWidth,
|
|
46
40
|
maxSize,
|
|
@@ -49,7 +43,6 @@ export const handleMouseDown = (view, event, localResizeHandlePos, getEditorCont
|
|
|
49
43
|
start,
|
|
50
44
|
domAtPos
|
|
51
45
|
});
|
|
52
|
-
|
|
53
46
|
if (evenColumns({
|
|
54
47
|
resizeState,
|
|
55
48
|
table: originalTable,
|
|
@@ -59,13 +52,11 @@ export const handleMouseDown = (view, event, localResizeHandlePos, getEditorCont
|
|
|
59
52
|
finish(event);
|
|
60
53
|
return true;
|
|
61
54
|
}
|
|
62
|
-
|
|
63
55
|
const width = currentColWidth(view, localResizeHandlePos, cell.attrs);
|
|
64
56
|
setDragging({
|
|
65
57
|
startX: event.clientX,
|
|
66
58
|
startWidth: width
|
|
67
59
|
})(state, dispatch);
|
|
68
|
-
|
|
69
60
|
function finish(event) {
|
|
70
61
|
window.removeEventListener('mouseup', finish);
|
|
71
62
|
window.removeEventListener('mousemove', move);
|
|
@@ -80,46 +71,42 @@ export const handleMouseDown = (view, event, localResizeHandlePos, getEditorCont
|
|
|
80
71
|
dragging,
|
|
81
72
|
resizeHandlePos
|
|
82
73
|
} = getPluginState(state);
|
|
83
|
-
|
|
84
74
|
if (resizeHandlePos === null) {
|
|
85
75
|
return stopResizing()(state, dispatch);
|
|
86
76
|
}
|
|
87
|
-
|
|
88
77
|
if (!pointsAtCell(state.doc.resolve(resizeHandlePos))) {
|
|
89
78
|
return;
|
|
90
|
-
}
|
|
79
|
+
}
|
|
80
|
+
// resizeHandlePos could be remapped via a collab change.
|
|
91
81
|
// Fetch a fresh reference of the table.
|
|
92
|
-
|
|
93
|
-
|
|
94
82
|
const $cell = state.doc.resolve(resizeHandlePos);
|
|
95
83
|
const start = $cell.start(-1);
|
|
96
|
-
const table = $cell.node(-1);
|
|
84
|
+
const table = $cell.node(-1);
|
|
97
85
|
|
|
86
|
+
// If we let go in the same place we started, dont need to do anything.
|
|
98
87
|
if (dragging && clientX === dragging.startX) {
|
|
99
88
|
return stopResizing()(state, dispatch);
|
|
100
89
|
}
|
|
101
|
-
|
|
102
90
|
let {
|
|
103
91
|
tr
|
|
104
92
|
} = state;
|
|
105
|
-
|
|
106
93
|
if (dragging) {
|
|
107
94
|
const {
|
|
108
95
|
startX
|
|
109
|
-
} = dragging;
|
|
96
|
+
} = dragging;
|
|
97
|
+
|
|
98
|
+
// If the table has changed (via collab for example) don't apply column widths
|
|
110
99
|
// For example, if a table col is deleted we won't be able to reliably remap the new widths
|
|
111
100
|
// There may be a more elegant solution to this, to avoid a jarring experience.
|
|
112
|
-
|
|
113
101
|
if (table.eq(originalTable)) {
|
|
114
102
|
const map = TableMap.get(table);
|
|
115
103
|
const colIndex = map.colCount($cell.pos - start) + ($cell.nodeAfter ? $cell.nodeAfter.attrs.colspan : 1) - 1;
|
|
116
104
|
const selectionRect = getSelectionRect(state.selection);
|
|
117
|
-
const selectedColumns = selectionRect ? getSelectedColumnIndexes(selectionRect) : [];
|
|
118
|
-
|
|
105
|
+
const selectedColumns = selectionRect ? getSelectedColumnIndexes(selectionRect) : [];
|
|
106
|
+
// only selected (or selected - 1) columns should be distributed
|
|
119
107
|
const resizingSelectedColumns = selectedColumns.indexOf(colIndex) > -1 || selectedColumns.indexOf(colIndex + 1) > -1;
|
|
120
108
|
const newResizeState = resizeColumn(resizeState, colIndex, clientX - startX, dom, resizingSelectedColumns ? selectedColumns : undefined);
|
|
121
109
|
tr = updateColumnWidths(newResizeState, table, start)(tr);
|
|
122
|
-
|
|
123
110
|
if (colIndex === map.width - 1) {
|
|
124
111
|
const mouseUpTime = event.timeStamp;
|
|
125
112
|
editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 ? void 0 : editorAnalyticsAPI.attachAnalyticsEvent({
|
|
@@ -136,11 +123,9 @@ export const handleMouseDown = (view, event, localResizeHandlePos, getEditorCont
|
|
|
136
123
|
})(tr);
|
|
137
124
|
}
|
|
138
125
|
}
|
|
139
|
-
|
|
140
126
|
return stopResizing(tr)(state, dispatch);
|
|
141
127
|
}
|
|
142
128
|
}
|
|
143
|
-
|
|
144
129
|
function move(event) {
|
|
145
130
|
const {
|
|
146
131
|
clientX,
|
|
@@ -153,11 +138,9 @@ export const handleMouseDown = (view, event, localResizeHandlePos, getEditorCont
|
|
|
153
138
|
dragging,
|
|
154
139
|
resizeHandlePos
|
|
155
140
|
} = getPluginState(state);
|
|
156
|
-
|
|
157
141
|
if (!which || !dragging || resizeHandlePos === null || !pointsAtCell(state.doc.resolve(resizeHandlePos))) {
|
|
158
142
|
return finish(event);
|
|
159
143
|
}
|
|
160
|
-
|
|
161
144
|
const $cell = state.doc.resolve(resizeHandlePos);
|
|
162
145
|
const table = $cell.node(-1);
|
|
163
146
|
const map = TableMap.get(table);
|
|
@@ -166,7 +149,6 @@ export const handleMouseDown = (view, event, localResizeHandlePos, getEditorCont
|
|
|
166
149
|
updateControls(getEditorFeatureFlags)(state);
|
|
167
150
|
updateResizeHandles(dom);
|
|
168
151
|
}
|
|
169
|
-
|
|
170
152
|
window.addEventListener('mouseup', finish);
|
|
171
153
|
window.addEventListener('mousemove', move);
|
|
172
154
|
return true;
|
|
@@ -1,17 +1,15 @@
|
|
|
1
1
|
import { pluginFactory } from '@atlaskit/editor-common/utils';
|
|
2
2
|
import { pluginKey } from './plugin-key';
|
|
3
3
|
import reducer from './reducer';
|
|
4
|
-
|
|
5
4
|
function mapping(tr, pluginState) {
|
|
6
5
|
if (pluginState && pluginState.resizeHandlePos !== null) {
|
|
7
|
-
return {
|
|
6
|
+
return {
|
|
7
|
+
...pluginState,
|
|
8
8
|
resizeHandlePos: tr.mapping.map(pluginState.resizeHandlePos)
|
|
9
9
|
};
|
|
10
10
|
}
|
|
11
|
-
|
|
12
11
|
return pluginState;
|
|
13
12
|
}
|
|
14
|
-
|
|
15
13
|
const factory = pluginFactory(pluginKey, reducer, {
|
|
16
14
|
mapping
|
|
17
15
|
});
|
|
@@ -27,18 +27,17 @@ export function createPlugin(dispatch, {
|
|
|
27
27
|
})
|
|
28
28
|
};
|
|
29
29
|
},
|
|
30
|
-
|
|
31
30
|
handleDOMEvents: {
|
|
32
31
|
mousedown(view, event) {
|
|
33
32
|
const {
|
|
34
33
|
state
|
|
35
34
|
} = view;
|
|
36
|
-
const resizeHandlePos =
|
|
35
|
+
const resizeHandlePos =
|
|
36
|
+
// we're setting `resizeHandlePos` via command in unit tests
|
|
37
37
|
getPluginState(state).resizeHandlePos || getResizeCellPos(view, event, lastColumnResizable);
|
|
38
38
|
const {
|
|
39
39
|
dragging
|
|
40
40
|
} = getPluginState(state);
|
|
41
|
-
|
|
42
41
|
if (resizeHandlePos !== null && !dragging) {
|
|
43
42
|
if (handleMouseDown(view, event, resizeHandlePos, getEditorContainerWidth, getEditorFeatureFlags, editorAnalyticsAPI)) {
|
|
44
43
|
const {
|
|
@@ -48,10 +47,8 @@ export function createPlugin(dispatch, {
|
|
|
48
47
|
return setResizeHandlePos(resizeHandlePos)(state, dispatch);
|
|
49
48
|
}
|
|
50
49
|
}
|
|
51
|
-
|
|
52
50
|
return false;
|
|
53
51
|
}
|
|
54
|
-
|
|
55
52
|
}
|
|
56
53
|
}
|
|
57
54
|
});
|
|
@@ -1,30 +1,30 @@
|
|
|
1
1
|
export default ((pluginState, action) => {
|
|
2
2
|
switch (action.type) {
|
|
3
3
|
case 'STOP_RESIZING':
|
|
4
|
-
return {
|
|
4
|
+
return {
|
|
5
|
+
...pluginState,
|
|
5
6
|
resizeHandlePos: null,
|
|
6
7
|
dragging: null
|
|
7
8
|
};
|
|
8
|
-
|
|
9
9
|
case 'SET_RESIZE_HANDLE_POSITION':
|
|
10
|
-
return {
|
|
10
|
+
return {
|
|
11
|
+
...pluginState,
|
|
11
12
|
resizeHandlePos: action.data.resizeHandlePos
|
|
12
13
|
};
|
|
13
|
-
|
|
14
14
|
case 'SET_DRAGGING':
|
|
15
|
-
return {
|
|
15
|
+
return {
|
|
16
|
+
...pluginState,
|
|
16
17
|
dragging: action.data.dragging
|
|
17
18
|
};
|
|
18
|
-
|
|
19
19
|
case 'SET_LAST_CLICK':
|
|
20
20
|
const {
|
|
21
21
|
lastClick
|
|
22
22
|
} = action.data;
|
|
23
|
-
return {
|
|
23
|
+
return {
|
|
24
|
+
...pluginState,
|
|
24
25
|
lastClick,
|
|
25
26
|
resizeHandlePos: lastClick ? pluginState.resizeHandlePos : null
|
|
26
27
|
};
|
|
27
|
-
|
|
28
28
|
default:
|
|
29
29
|
return pluginState;
|
|
30
30
|
}
|
|
@@ -4,7 +4,6 @@ export const generateColgroup = table => {
|
|
|
4
4
|
const cols = [];
|
|
5
5
|
table.content.firstChild.content.forEach(cell => {
|
|
6
6
|
const colspan = cell.attrs.colspan || 1;
|
|
7
|
-
|
|
8
7
|
if (Array.isArray(cell.attrs.colwidth)) {
|
|
9
8
|
// We slice here to guard against our colwidth array having more entries
|
|
10
9
|
// Than the we actually span. We'll patch the document at a later point.
|
|
@@ -26,11 +25,9 @@ export const generateColgroup = table => {
|
|
|
26
25
|
};
|
|
27
26
|
export const insertColgroupFromNode = (tableRef, table) => {
|
|
28
27
|
let colgroup = tableRef.querySelector('colgroup');
|
|
29
|
-
|
|
30
28
|
if (colgroup) {
|
|
31
29
|
tableRef.removeChild(colgroup);
|
|
32
30
|
}
|
|
33
|
-
|
|
34
31
|
colgroup = renderColgroupFromNode(table);
|
|
35
32
|
tableRef.insertBefore(colgroup, tableRef.firstChild);
|
|
36
33
|
return colgroup.children;
|
|
@@ -38,7 +35,6 @@ export const insertColgroupFromNode = (tableRef, table) => {
|
|
|
38
35
|
export const hasTableBeenResized = table => {
|
|
39
36
|
return !!getFragmentBackingArray(table.content.firstChild.content).find(cell => cell.attrs.colwidth);
|
|
40
37
|
};
|
|
41
|
-
|
|
42
38
|
function renderColgroupFromNode(table) {
|
|
43
39
|
const rendered = DOMSerializer.renderSpec(document, ['colgroup', {}, ...generateColgroup(table)]);
|
|
44
40
|
return rendered.dom;
|
|
@@ -6,7 +6,8 @@ import { unitToNumber } from './unit-to-number';
|
|
|
6
6
|
// Reads `width` and `minWidth` of each column from DOM and returns `ColumnState` containing those values
|
|
7
7
|
export const getColumnStateFromDOM = (cells, index, minWidth) => {
|
|
8
8
|
const width = calculateColumnWidth(cells, calculateColumnWidthCallback);
|
|
9
|
-
const minColumnWidth = width < minWidth ?
|
|
9
|
+
const minColumnWidth = width < minWidth ?
|
|
10
|
+
// for newly created column (where width < minWidth) we set minWidth = tableNewColumnMinWidth (140px atm)
|
|
10
11
|
tableNewColumnMinWidth : calculateColumnWidth(cells, calculateColumnMinWidthCallback(minWidth));
|
|
11
12
|
return {
|
|
12
13
|
index,
|
|
@@ -16,8 +17,9 @@ export const getColumnStateFromDOM = (cells, index, minWidth) => {
|
|
|
16
17
|
};
|
|
17
18
|
export const getFreeSpace = state => {
|
|
18
19
|
return Math.max(state.width - state.minWidth, 0);
|
|
19
|
-
};
|
|
20
|
+
};
|
|
20
21
|
|
|
22
|
+
// Returns DOM refs of all cells in a column by `columnIndex`
|
|
21
23
|
export const getCellsRefsInColumn = (columnIndex, table, tableStart, domAtPos) => {
|
|
22
24
|
const map = TableMap.get(table);
|
|
23
25
|
const cellsPositions = map.cellsInRect({
|
|
@@ -29,26 +31,24 @@ export const getCellsRefsInColumn = (columnIndex, table, tableStart, domAtPos) =
|
|
|
29
31
|
const cells = [];
|
|
30
32
|
cellsPositions.forEach(pos => {
|
|
31
33
|
const col = findDomRefAtPos(pos + tableStart, domAtPos);
|
|
32
|
-
|
|
33
34
|
if (col) {
|
|
34
35
|
cells.push(col);
|
|
35
36
|
}
|
|
36
37
|
});
|
|
37
38
|
return cells;
|
|
38
|
-
};
|
|
39
|
+
};
|
|
39
40
|
|
|
41
|
+
// calculates column widths based on `cells` DOM refs
|
|
40
42
|
export const calculateColumnWidth = (cells, calculateColumnWidthCb) => {
|
|
41
43
|
let maxColWidth = 0;
|
|
42
44
|
let colSpanWidth = 0;
|
|
43
45
|
cells.forEach(cellRef => {
|
|
44
46
|
const css = getComputedStyle(cellRef);
|
|
45
47
|
const colspan = Number(cellRef.getAttribute('colspan') || 1);
|
|
46
|
-
|
|
47
48
|
if (colspan > 1) {
|
|
48
49
|
colSpanWidth = calculateColumnWidthCb(css, cellRef, colspan);
|
|
49
50
|
return;
|
|
50
51
|
}
|
|
51
|
-
|
|
52
52
|
if (css) {
|
|
53
53
|
const colWidth = calculateColumnWidthCb(css, cellRef, colspan);
|
|
54
54
|
maxColWidth = Math.max(colWidth, maxColWidth);
|
|
@@ -57,22 +57,19 @@ export const calculateColumnWidth = (cells, calculateColumnWidthCb) => {
|
|
|
57
57
|
return maxColWidth || colSpanWidth;
|
|
58
58
|
};
|
|
59
59
|
export const addContainerLeftRightPadding = (amount, css) => amount + unitToNumber(css.paddingLeft) + unitToNumber(css.paddingRight);
|
|
60
|
-
|
|
61
60
|
function calculateColumnWidthCallback(css) {
|
|
62
61
|
return unitToNumber(css.width);
|
|
63
62
|
}
|
|
64
|
-
|
|
65
63
|
function calculateColumnMinWidthCallback(minColumnWidth) {
|
|
66
64
|
return (css, cellRef, colSpan) => {
|
|
67
65
|
if (colSpan && colSpan > 1) {
|
|
68
66
|
return unitToNumber(css.width);
|
|
69
67
|
}
|
|
70
|
-
|
|
71
68
|
const {
|
|
72
69
|
minWidth: minContentWidth
|
|
73
|
-
} = contentWidth(cellRef, cellRef);
|
|
70
|
+
} = contentWidth(cellRef, cellRef);
|
|
71
|
+
// Override the min width, if there is content that can't collapse
|
|
74
72
|
// Past a certain width.
|
|
75
|
-
|
|
76
73
|
return Math.max(addContainerLeftRightPadding(minContentWidth, css), minContentWidth, minColumnWidth);
|
|
77
74
|
};
|
|
78
75
|
}
|