@atlaskit/editor-plugin-table 1.1.1 → 1.1.3
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 +18 -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 +95 -191
- 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 +18 -43
- package/dist/cjs/plugins/table/pm-plugins/table-resizing/event-handlers.js +20 -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 +16 -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 +51 -40
- 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 +17 -73
- 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 +58 -49
- 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 +10 -22
- 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 +40 -103
- 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 +14 -17
- package/dist/es2019/plugins/table/pm-plugins/table-resizing/event-handlers.js +13 -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 +14 -3
- 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 +46 -21
- package/dist/es2019/plugins/table/pm-plugins/table-resizing/utils/resize-logic.js +31 -61
- 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 +60 -32
- 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 +11 -7
- 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 +95 -184
- 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 +18 -25
- package/dist/esm/plugins/table/pm-plugins/table-resizing/event-handlers.js +20 -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 +14 -3
- 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 +49 -26
- package/dist/esm/plugins/table/pm-plugins/table-resizing/utils/resize-logic.js +17 -62
- 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 +58 -36
- 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 +9 -10
- 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/dist/types/plugins/table/pm-plugins/table-resizing/utils/colgroup.d.ts +7 -0
- package/dist/types/plugins/table/pm-plugins/table-resizing/utils/misc.d.ts +2 -1
- package/dist/types/plugins/table/ui/common-styles.d.ts +1 -0
- package/package.json +8 -6
- package/src/__tests__/integration/__fixtures__/empty-layout.ts +35 -0
- package/src/__tests__/integration/__fixtures__/nested-in-expand.ts +129 -0
- package/src/__tests__/integration/horizontal-scroll.ts +489 -0
- package/src/__tests__/unit/commands/insert.ts +3 -3
- package/src/__tests__/unit/keymap.ts +3 -1
- package/src/__tests__/unit/pm-plugins/table-resizing/colgroup.ts +38 -0
- package/src/__tests__/unit/pm-plugins/table-resizing/event-handlers.ts +5 -2
- package/src/__tests__/visual-regression/__image_snapshots__/cell-options-menu-ts-table-cell-options-menu-delete-column-menu-item-visual-hints-should-be-added-to-the-table-column-on-hover-1-snap.png +2 -2
- package/src/__tests__/visual-regression/__image_snapshots__/cell-options-menu-ts-table-cell-options-menu-delete-row-menu-item-visual-hints-should-be-added-to-the-table-row-on-hover-1-snap.png +2 -2
- package/src/__tests__/visual-regression/__image_snapshots__/sticky-header-ts-snapshot-test-table-sticky-header-should-align-with-table-cell-when-active-2-snap.png +2 -2
- package/src/__tests__/visual-regression/sticky-header.ts +2 -1
- package/src/plugins/table/nodeviews/TableComponent.tsx +16 -3
- package/src/plugins/table/pm-plugins/table-resizing/commands.ts +6 -2
- package/src/plugins/table/pm-plugins/table-resizing/event-handlers.ts +9 -1
- package/src/plugins/table/pm-plugins/table-resizing/utils/colgroup.ts +19 -1
- package/src/plugins/table/pm-plugins/table-resizing/utils/misc.ts +57 -5
- package/src/plugins/table/pm-plugins/table-resizing/utils/resize-logic.ts +2 -2
- package/src/plugins/table/transforms/column-width.ts +60 -6
- package/src/plugins/table/ui/common-styles.ts +5 -2
|
@@ -4,66 +4,46 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.updateResizeHandles = exports.isTableControlsButton = exports.isTableContainerOrWrapper = exports.isRowControlsButton = exports.isResizeHandleDecoration = exports.isInsertRowButton = exports.isCornerButton = exports.isColumnControlsDecorations = exports.isCell = exports.hasResizeHandler = exports.getMousePositionVerticalRelativeByElement = exports.getMousePositionHorizontalRelativeByElement = exports.getColumnOrRowIndex = void 0;
|
|
7
|
-
|
|
8
7
|
var _utils = require("@atlaskit/editor-common/utils");
|
|
9
|
-
|
|
10
8
|
var _types = require("../types");
|
|
11
|
-
|
|
12
9
|
var _consts = require("../ui/consts");
|
|
13
|
-
|
|
14
10
|
var SELECTOR_TABLE_LEAFS = ".".concat(_types.TableCssClassName.TABLE_CELL, ", .").concat(_types.TableCssClassName.TABLE_HEADER_CELL);
|
|
15
|
-
|
|
16
11
|
var isCell = function isCell(node) {
|
|
17
12
|
return Boolean(node && (['TH', 'TD'].indexOf(node.tagName) > -1 || !!(0, _utils.closestElement)(node, ".".concat(_types.TableCssClassName.TABLE_HEADER_CELL)) || !!(0, _utils.closestElement)(node, ".".concat(_types.TableCssClassName.TABLE_CELL))));
|
|
18
13
|
};
|
|
19
|
-
|
|
20
14
|
exports.isCell = isCell;
|
|
21
|
-
|
|
22
15
|
var isCornerButton = function isCornerButton(node) {
|
|
23
16
|
return (0, _utils.containsClassName)(node, _types.TableCssClassName.CONTROLS_CORNER_BUTTON);
|
|
24
17
|
};
|
|
25
|
-
|
|
26
18
|
exports.isCornerButton = isCornerButton;
|
|
27
|
-
|
|
28
19
|
var isInsertRowButton = function isInsertRowButton(node) {
|
|
29
20
|
return (0, _utils.containsClassName)(node, _types.TableCssClassName.CONTROLS_INSERT_ROW) || (0, _utils.closestElement)(node, ".".concat(_types.TableCssClassName.CONTROLS_INSERT_ROW)) || (0, _utils.containsClassName)(node, _types.TableCssClassName.CONTROLS_BUTTON_OVERLAY) && (0, _utils.closestElement)(node, ".".concat(_types.TableCssClassName.ROW_CONTROLS));
|
|
30
21
|
};
|
|
31
|
-
|
|
32
22
|
exports.isInsertRowButton = isInsertRowButton;
|
|
33
|
-
|
|
34
23
|
var getColumnOrRowIndex = function getColumnOrRowIndex(target) {
|
|
35
24
|
return [parseInt(target.getAttribute('data-start-index') || '-1', 10), parseInt(target.getAttribute('data-end-index') || '-1', 10)];
|
|
36
25
|
};
|
|
37
|
-
|
|
38
26
|
exports.getColumnOrRowIndex = getColumnOrRowIndex;
|
|
39
|
-
|
|
40
27
|
var isColumnControlsDecorations = function isColumnControlsDecorations(node) {
|
|
41
28
|
return (0, _utils.containsClassName)(node, _types.TableCssClassName.COLUMN_CONTROLS_DECORATIONS);
|
|
42
29
|
};
|
|
43
|
-
|
|
44
30
|
exports.isColumnControlsDecorations = isColumnControlsDecorations;
|
|
45
|
-
|
|
46
31
|
var isRowControlsButton = function isRowControlsButton(node) {
|
|
47
32
|
return (0, _utils.containsClassName)(node, _types.TableCssClassName.ROW_CONTROLS_BUTTON) || (0, _utils.containsClassName)(node, _types.TableCssClassName.NUMBERED_COLUMN_BUTTON);
|
|
48
33
|
};
|
|
49
|
-
|
|
50
34
|
exports.isRowControlsButton = isRowControlsButton;
|
|
51
|
-
|
|
52
35
|
var isResizeHandleDecoration = function isResizeHandleDecoration(node) {
|
|
53
36
|
return (0, _utils.containsClassName)(node, _types.TableCssClassName.RESIZE_HANDLE_DECORATION);
|
|
54
37
|
};
|
|
55
|
-
|
|
56
38
|
exports.isResizeHandleDecoration = isResizeHandleDecoration;
|
|
57
|
-
|
|
58
39
|
var isTableControlsButton = function isTableControlsButton(node) {
|
|
59
40
|
return (0, _utils.containsClassName)(node, _types.TableCssClassName.CONTROLS_BUTTON) || (0, _utils.containsClassName)(node, _types.TableCssClassName.ROW_CONTROLS_BUTTON_WRAP);
|
|
60
41
|
};
|
|
61
|
-
|
|
62
42
|
exports.isTableControlsButton = isTableControlsButton;
|
|
63
|
-
|
|
64
43
|
var isTableContainerOrWrapper = function isTableContainerOrWrapper(node) {
|
|
65
44
|
return (0, _utils.containsClassName)(node, _types.TableCssClassName.TABLE_CONTAINER) || (0, _utils.containsClassName)(node, _types.TableCssClassName.TABLE_NODE_WRAPPER);
|
|
66
45
|
};
|
|
46
|
+
|
|
67
47
|
/*
|
|
68
48
|
* This function returns which side of a given element the mouse cursor is,
|
|
69
49
|
* using as a base the half of the width by default, for example:
|
|
@@ -117,20 +97,14 @@ var isTableContainerOrWrapper = function isTableContainerOrWrapper(node) {
|
|
|
117
97
|
*
|
|
118
98
|
* the same is valid to the right side.
|
|
119
99
|
*/
|
|
120
|
-
|
|
121
|
-
|
|
122
100
|
exports.isTableContainerOrWrapper = isTableContainerOrWrapper;
|
|
123
|
-
|
|
124
101
|
var getMousePositionHorizontalRelativeByElement = function getMousePositionHorizontalRelativeByElement(mouseEvent, mouseMoveOptimization, elementContentRects, gapInPixels) {
|
|
125
102
|
var element = mouseEvent.target;
|
|
126
|
-
|
|
127
103
|
if (element instanceof HTMLElement) {
|
|
128
104
|
var width, x;
|
|
129
105
|
var closestCell = element.closest(SELECTOR_TABLE_LEAFS);
|
|
130
|
-
|
|
131
106
|
if (mouseMoveOptimization) {
|
|
132
107
|
var _closestCell$id, _elementContentRects$, _elementContentRects$2;
|
|
133
|
-
|
|
134
108
|
var id = (_closestCell$id = closestCell === null || closestCell === void 0 ? void 0 : closestCell.id) !== null && _closestCell$id !== void 0 ? _closestCell$id : '';
|
|
135
109
|
width = (_elementContentRects$ = elementContentRects === null || elementContentRects === void 0 ? void 0 : (_elementContentRects$2 = elementContentRects[id]) === null || _elementContentRects$2 === void 0 ? void 0 : _elementContentRects$2.width) !== null && _elementContentRects$ !== void 0 ? _elementContentRects$ : 0;
|
|
136
110
|
x = mouseEvent.offsetX;
|
|
@@ -140,11 +114,9 @@ var getMousePositionHorizontalRelativeByElement = function getMousePositionHoriz
|
|
|
140
114
|
var left = elementRect.left;
|
|
141
115
|
x = mouseEvent.clientX - left;
|
|
142
116
|
}
|
|
143
|
-
|
|
144
117
|
if (width <= 0) {
|
|
145
118
|
return null;
|
|
146
119
|
}
|
|
147
|
-
|
|
148
120
|
if (!gapInPixels) {
|
|
149
121
|
return x / width > 0.5 ? 'right' : 'left';
|
|
150
122
|
} else {
|
|
@@ -155,68 +127,49 @@ var getMousePositionHorizontalRelativeByElement = function getMousePositionHoriz
|
|
|
155
127
|
}
|
|
156
128
|
}
|
|
157
129
|
}
|
|
158
|
-
|
|
159
130
|
return null;
|
|
160
131
|
};
|
|
161
|
-
|
|
162
132
|
exports.getMousePositionHorizontalRelativeByElement = getMousePositionHorizontalRelativeByElement;
|
|
163
|
-
|
|
164
133
|
var getMousePositionVerticalRelativeByElement = function getMousePositionVerticalRelativeByElement(mouseEvent) {
|
|
165
134
|
var element = mouseEvent.target;
|
|
166
|
-
|
|
167
135
|
if (element instanceof HTMLElement) {
|
|
168
136
|
var elementRect = element.getBoundingClientRect();
|
|
169
|
-
|
|
170
137
|
if (elementRect.height <= 0) {
|
|
171
138
|
return null;
|
|
172
139
|
}
|
|
173
|
-
|
|
174
140
|
var y = mouseEvent.clientY - elementRect.top;
|
|
175
141
|
return y / elementRect.height > 0.5 ? 'bottom' : 'top';
|
|
176
142
|
}
|
|
177
|
-
|
|
178
143
|
return null;
|
|
179
144
|
};
|
|
180
|
-
|
|
181
145
|
exports.getMousePositionVerticalRelativeByElement = getMousePositionVerticalRelativeByElement;
|
|
182
|
-
|
|
183
146
|
var updateResizeHandles = function updateResizeHandles(tableRef) {
|
|
184
147
|
if (!tableRef) {
|
|
185
148
|
return;
|
|
186
149
|
}
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
150
|
+
var height = tableRef.offsetHeight + _consts.tableToolbarSize;
|
|
151
|
+
// see ED-7600
|
|
190
152
|
var nodes = Array.from(tableRef.querySelectorAll(".".concat(_types.TableCssClassName.RESIZE_HANDLE)));
|
|
191
|
-
|
|
192
153
|
if (!nodes || !nodes.length) {
|
|
193
154
|
return;
|
|
194
155
|
}
|
|
195
|
-
|
|
196
156
|
nodes.forEach(function (node) {
|
|
197
157
|
node.style.height = "".concat(height, "px");
|
|
198
158
|
});
|
|
199
159
|
};
|
|
200
|
-
|
|
201
160
|
exports.updateResizeHandles = updateResizeHandles;
|
|
202
|
-
|
|
203
161
|
var hasResizeHandler = function hasResizeHandler(_ref) {
|
|
204
162
|
var columnEndIndexTarget = _ref.columnEndIndexTarget,
|
|
205
|
-
|
|
163
|
+
target = _ref.target;
|
|
206
164
|
var tableElement = (0, _utils.closestElement)(target, 'table');
|
|
207
|
-
|
|
208
165
|
if (!tableElement) {
|
|
209
166
|
return false;
|
|
210
167
|
}
|
|
211
|
-
|
|
212
168
|
var query = [".".concat(_types.TableCssClassName.RESIZE_HANDLE_DECORATION), "[data-end-index=\"".concat(columnEndIndexTarget, "\"]")];
|
|
213
169
|
var decorationElement = tableElement.querySelectorAll(query.join(''));
|
|
214
|
-
|
|
215
170
|
if (!decorationElement || decorationElement.length === 0) {
|
|
216
171
|
return false;
|
|
217
172
|
}
|
|
218
|
-
|
|
219
173
|
return true;
|
|
220
174
|
};
|
|
221
|
-
|
|
222
175
|
exports.hasResizeHandler = hasResizeHandler;
|
|
@@ -4,9 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.getAllowAddColumnCustomStep = getAllowAddColumnCustomStep;
|
|
7
|
-
|
|
8
7
|
var _pluginFactory = require("../pm-plugins/plugin-factory");
|
|
9
|
-
|
|
10
8
|
function getAllowAddColumnCustomStep(state) {
|
|
11
9
|
var tablePluginState = (0, _pluginFactory.getPluginState)(state);
|
|
12
10
|
return Boolean(tablePluginState) && Boolean(tablePluginState.pluginConfig.allowAddColumnWithCustomStep);
|
|
@@ -333,23 +333,13 @@ Object.defineProperty(exports, "updateResizeHandles", {
|
|
|
333
333
|
return _dom.updateResizeHandles;
|
|
334
334
|
}
|
|
335
335
|
});
|
|
336
|
-
|
|
337
336
|
var _selection = require("./selection");
|
|
338
|
-
|
|
339
337
|
var _decoration = require("./decoration");
|
|
340
|
-
|
|
341
338
|
var _nodes = require("./nodes");
|
|
342
|
-
|
|
343
339
|
var _paste = require("./paste");
|
|
344
|
-
|
|
345
340
|
var _dom = require("./dom");
|
|
346
|
-
|
|
347
341
|
var _columnControls = require("./column-controls");
|
|
348
|
-
|
|
349
342
|
var _rowControls = require("./row-controls");
|
|
350
|
-
|
|
351
343
|
var _analytics = require("./analytics");
|
|
352
|
-
|
|
353
344
|
var _table = require("./table");
|
|
354
|
-
|
|
355
345
|
var _updatePluginStateDecorations = require("./update-plugin-state-decorations");
|
|
@@ -1,43 +1,31 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.tablesHaveDifferentNoOfColumns = exports.tablesHaveDifferentColumnWidths = exports.isLayoutSupported = exports.isIsolating = exports.getTableWidth = exports.containsHeaderRow = exports.containsHeaderColumn = exports.checkIfNumberColumnEnabled = exports.checkIfHeaderRowEnabled = exports.checkIfHeaderColumnEnabled = void 0;
|
|
9
|
-
|
|
10
8
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
11
|
-
|
|
12
9
|
var _tableMap = require("@atlaskit/editor-tables/table-map");
|
|
13
|
-
|
|
14
10
|
var _prosemirrorUtils = require("prosemirror-utils");
|
|
15
|
-
|
|
16
11
|
var _utils = require("@atlaskit/editor-tables/utils");
|
|
17
|
-
|
|
18
12
|
var _pluginKey = require("../pm-plugins/plugin-key");
|
|
19
|
-
|
|
20
13
|
var isIsolating = function isIsolating(node) {
|
|
21
14
|
return !!node.type.spec.isolating;
|
|
22
15
|
};
|
|
23
|
-
|
|
24
16
|
exports.isIsolating = isIsolating;
|
|
25
|
-
|
|
26
17
|
var containsHeaderColumn = function containsHeaderColumn(table) {
|
|
27
|
-
var map = _tableMap.TableMap.get(table);
|
|
28
|
-
|
|
29
|
-
|
|
18
|
+
var map = _tableMap.TableMap.get(table);
|
|
19
|
+
// Get cell positions for first column.
|
|
30
20
|
var cellPositions = map.cellsInRect({
|
|
31
21
|
left: 0,
|
|
32
22
|
top: 0,
|
|
33
23
|
right: 1,
|
|
34
24
|
bottom: map.height
|
|
35
25
|
});
|
|
36
|
-
|
|
37
26
|
for (var i = 0; i < cellPositions.length; i++) {
|
|
38
27
|
try {
|
|
39
28
|
var cell = table.nodeAt(cellPositions[i]);
|
|
40
|
-
|
|
41
29
|
if (cell && cell.type !== table.type.schema.nodes.tableHeader) {
|
|
42
30
|
return false;
|
|
43
31
|
}
|
|
@@ -45,109 +33,78 @@ var containsHeaderColumn = function containsHeaderColumn(table) {
|
|
|
45
33
|
return false;
|
|
46
34
|
}
|
|
47
35
|
}
|
|
48
|
-
|
|
49
36
|
return true;
|
|
50
37
|
};
|
|
51
|
-
|
|
52
38
|
exports.containsHeaderColumn = containsHeaderColumn;
|
|
53
|
-
|
|
54
39
|
var containsHeaderRow = function containsHeaderRow(table) {
|
|
55
40
|
var map = _tableMap.TableMap.get(table);
|
|
56
|
-
|
|
57
41
|
for (var i = 0; i < map.width; i++) {
|
|
58
42
|
var cell = table.nodeAt(map.map[i]);
|
|
59
|
-
|
|
60
43
|
if (cell && cell.type !== table.type.schema.nodes.tableHeader) {
|
|
61
44
|
return false;
|
|
62
45
|
}
|
|
63
46
|
}
|
|
64
|
-
|
|
65
47
|
return true;
|
|
66
48
|
};
|
|
67
|
-
|
|
68
49
|
exports.containsHeaderRow = containsHeaderRow;
|
|
69
|
-
|
|
70
50
|
var checkIfHeaderColumnEnabled = function checkIfHeaderColumnEnabled(selection) {
|
|
71
51
|
return filterNearSelection(selection, _utils.findTable, containsHeaderColumn, false);
|
|
72
52
|
};
|
|
73
|
-
|
|
74
53
|
exports.checkIfHeaderColumnEnabled = checkIfHeaderColumnEnabled;
|
|
75
|
-
|
|
76
54
|
var checkIfHeaderRowEnabled = function checkIfHeaderRowEnabled(selection) {
|
|
77
55
|
return filterNearSelection(selection, _utils.findTable, containsHeaderRow, false);
|
|
78
56
|
};
|
|
79
|
-
|
|
80
57
|
exports.checkIfHeaderRowEnabled = checkIfHeaderRowEnabled;
|
|
81
|
-
|
|
82
58
|
var checkIfNumberColumnEnabled = function checkIfNumberColumnEnabled(selection) {
|
|
83
59
|
return filterNearSelection(selection, _utils.findTable, function (table) {
|
|
84
60
|
return !!table.attrs.isNumberColumnEnabled;
|
|
85
61
|
}, false);
|
|
86
62
|
};
|
|
87
|
-
|
|
88
63
|
exports.checkIfNumberColumnEnabled = checkIfNumberColumnEnabled;
|
|
89
|
-
|
|
90
64
|
var isLayoutSupported = function isLayoutSupported(state) {
|
|
91
65
|
var permittedLayouts = _pluginKey.pluginKey.getState(state).pluginConfig.permittedLayouts;
|
|
92
|
-
|
|
93
66
|
var _state$schema$nodes = state.schema.nodes,
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
67
|
+
bodiedExtension = _state$schema$nodes.bodiedExtension,
|
|
68
|
+
layoutSection = _state$schema$nodes.layoutSection,
|
|
69
|
+
expand = _state$schema$nodes.expand;
|
|
97
70
|
return !(0, _prosemirrorUtils.hasParentNodeOfType)([expand, layoutSection, bodiedExtension])(state.selection) && permittedLayouts && (permittedLayouts === 'all' || permittedLayouts.indexOf('default') > -1 && permittedLayouts.indexOf('wide') > -1 && permittedLayouts.indexOf('full-page') > -1);
|
|
98
71
|
};
|
|
99
|
-
|
|
100
72
|
exports.isLayoutSupported = isLayoutSupported;
|
|
101
|
-
|
|
102
73
|
var getTableWidth = function getTableWidth(node) {
|
|
103
74
|
return getTableWidths(node).reduce(function (acc, current) {
|
|
104
75
|
return acc + current;
|
|
105
76
|
}, 0);
|
|
106
77
|
};
|
|
107
|
-
|
|
108
78
|
exports.getTableWidth = getTableWidth;
|
|
109
|
-
|
|
110
79
|
var tablesHaveDifferentColumnWidths = function tablesHaveDifferentColumnWidths(currentTable, previousTable) {
|
|
111
80
|
var currentTableWidths = getTableWidths(currentTable);
|
|
112
81
|
var previousTableWidths = getTableWidths(previousTable);
|
|
113
|
-
|
|
114
82
|
if (currentTableWidths.length !== previousTableWidths.length) {
|
|
115
83
|
return true;
|
|
116
84
|
}
|
|
117
|
-
|
|
118
85
|
var sameWidths = currentTableWidths.every(function (value, index) {
|
|
119
86
|
return value === previousTableWidths[index];
|
|
120
87
|
});
|
|
121
88
|
return sameWidths === false;
|
|
122
89
|
};
|
|
123
|
-
|
|
124
90
|
exports.tablesHaveDifferentColumnWidths = tablesHaveDifferentColumnWidths;
|
|
125
|
-
|
|
126
91
|
var tablesHaveDifferentNoOfColumns = function tablesHaveDifferentNoOfColumns(currentTable, previousTable) {
|
|
127
92
|
var prevMap = _tableMap.TableMap.get(previousTable);
|
|
128
|
-
|
|
129
93
|
var currentMap = _tableMap.TableMap.get(currentTable);
|
|
130
|
-
|
|
131
94
|
return prevMap.width !== currentMap.width;
|
|
132
95
|
};
|
|
133
|
-
|
|
134
96
|
exports.tablesHaveDifferentNoOfColumns = tablesHaveDifferentNoOfColumns;
|
|
135
|
-
|
|
136
97
|
function filterNearSelection(selection, findNode, predicate, defaultValue) {
|
|
137
98
|
var found = findNode(selection);
|
|
138
|
-
|
|
139
99
|
if (!found) {
|
|
140
100
|
return defaultValue;
|
|
141
101
|
}
|
|
142
|
-
|
|
143
102
|
return predicate(found.node, found.pos);
|
|
144
103
|
}
|
|
145
|
-
|
|
146
104
|
function getTableWidths(node) {
|
|
147
105
|
if (!node.content.firstChild) {
|
|
148
106
|
return [];
|
|
149
107
|
}
|
|
150
|
-
|
|
151
108
|
var tableWidths = [];
|
|
152
109
|
node.content.firstChild.content.forEach(function (cell) {
|
|
153
110
|
if (Array.isArray(cell.attrs.colwidth)) {
|
|
@@ -1,146 +1,121 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.isHeaderRowRequired = isHeaderRowRequired;
|
|
9
8
|
exports.unwrapContentFromTable = exports.transformSliceToRemoveOpenTable = exports.transformSliceToFixHardBreakProblemOnCopyFromCell = exports.transformSliceToCorrectEmptyTableCells = exports.removeTableFromLastChild = exports.removeTableFromFirstChild = void 0;
|
|
10
|
-
|
|
11
9
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
12
|
-
|
|
13
10
|
var _prosemirrorModel = require("prosemirror-model");
|
|
14
|
-
|
|
15
11
|
var _prosemirrorUtils = require("prosemirror-utils");
|
|
16
|
-
|
|
17
12
|
var _utils = require("@atlaskit/editor-common/utils");
|
|
18
|
-
|
|
19
13
|
var _pluginFactory = require("../pm-plugins/plugin-factory");
|
|
20
|
-
|
|
21
14
|
// lifts up the content of each cell, returning an array of nodes
|
|
22
15
|
var unwrapContentFromTable = function unwrapContentFromTable(maybeTable) {
|
|
23
16
|
var schema = maybeTable.type.schema;
|
|
24
|
-
|
|
25
17
|
if (maybeTable.type === schema.nodes.table) {
|
|
26
18
|
var content = [];
|
|
27
19
|
var _schema$nodes = schema.nodes,
|
|
28
|
-
|
|
29
|
-
|
|
20
|
+
tableCell = _schema$nodes.tableCell,
|
|
21
|
+
tableHeader = _schema$nodes.tableHeader;
|
|
30
22
|
maybeTable.descendants(function (maybeCell) {
|
|
31
23
|
if (maybeCell.type === tableCell || maybeCell.type === tableHeader) {
|
|
32
24
|
content.push.apply(content, (0, _toConsumableArray2.default)((0, _prosemirrorUtils.flatten)(maybeCell, false).map(function (child) {
|
|
33
25
|
return child.node;
|
|
34
26
|
})));
|
|
35
27
|
}
|
|
36
|
-
|
|
37
28
|
return true;
|
|
38
29
|
});
|
|
39
30
|
return content;
|
|
40
31
|
}
|
|
41
|
-
|
|
42
32
|
return maybeTable;
|
|
43
33
|
};
|
|
44
|
-
|
|
45
34
|
exports.unwrapContentFromTable = unwrapContentFromTable;
|
|
46
|
-
|
|
47
35
|
var removeTableFromFirstChild = function removeTableFromFirstChild(node, i) {
|
|
48
36
|
return i === 0 ? unwrapContentFromTable(node) : node;
|
|
49
37
|
};
|
|
50
|
-
|
|
51
38
|
exports.removeTableFromFirstChild = removeTableFromFirstChild;
|
|
52
|
-
|
|
53
39
|
var removeTableFromLastChild = function removeTableFromLastChild(node, i, fragment) {
|
|
54
40
|
return i === fragment.childCount - 1 ? unwrapContentFromTable(node) : node;
|
|
55
41
|
};
|
|
42
|
+
|
|
56
43
|
/**
|
|
57
44
|
* When we copy from a table cell with a hardBreak at the end,
|
|
58
45
|
* the slice generated will come with a hardBreak outside of the table.
|
|
59
46
|
* This code will look for that pattern and fix it.
|
|
60
47
|
*/
|
|
61
|
-
|
|
62
|
-
|
|
63
48
|
exports.removeTableFromLastChild = removeTableFromLastChild;
|
|
64
|
-
|
|
65
49
|
var transformSliceToFixHardBreakProblemOnCopyFromCell = function transformSliceToFixHardBreakProblemOnCopyFromCell(slice, schema) {
|
|
66
50
|
var _schema$nodes2 = schema.nodes,
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
51
|
+
paragraph = _schema$nodes2.paragraph,
|
|
52
|
+
table = _schema$nodes2.table,
|
|
53
|
+
hardBreak = _schema$nodes2.hardBreak;
|
|
70
54
|
var emptyParagraphNode = paragraph.createAndFill();
|
|
71
55
|
var hardBreakNode = hardBreak === null || hardBreak === void 0 ? void 0 : hardBreak.createAndFill();
|
|
72
56
|
var paragraphNodeSize = emptyParagraphNode ? emptyParagraphNode.nodeSize : 0;
|
|
73
57
|
var hardBreakNodeSize = hardBreakNode ? hardBreakNode.nodeSize : 0;
|
|
74
58
|
var paragraphWithHardBreakSize = paragraphNodeSize + hardBreakNodeSize;
|
|
75
|
-
|
|
76
59
|
if (slice.content.childCount === 2 && slice.content.firstChild && slice.content.lastChild && slice.content.firstChild.type === table && slice.content.lastChild.type === paragraph && slice.content.lastChild.nodeSize === paragraphWithHardBreakSize) {
|
|
77
60
|
var nodes = unwrapContentFromTable(slice.content.firstChild);
|
|
78
|
-
|
|
79
61
|
if (nodes instanceof Array) {
|
|
80
|
-
return new _prosemirrorModel.Slice(_prosemirrorModel.Fragment.from(
|
|
62
|
+
return new _prosemirrorModel.Slice(_prosemirrorModel.Fragment.from(
|
|
63
|
+
// keep only the content and discard the hardBreak
|
|
81
64
|
nodes[0]), slice.openStart, slice.openEnd);
|
|
82
65
|
}
|
|
83
66
|
}
|
|
84
|
-
|
|
85
67
|
return slice;
|
|
86
68
|
};
|
|
87
|
-
|
|
88
69
|
exports.transformSliceToFixHardBreakProblemOnCopyFromCell = transformSliceToFixHardBreakProblemOnCopyFromCell;
|
|
89
|
-
|
|
90
70
|
var transformSliceToRemoveOpenTable = function transformSliceToRemoveOpenTable(slice, schema) {
|
|
91
71
|
var _slice$content$firstC6;
|
|
92
|
-
|
|
93
72
|
// we're removing the table, tableRow and tableCell reducing the open depth by 3
|
|
94
|
-
var depthDecrement = 3;
|
|
73
|
+
var depthDecrement = 3;
|
|
95
74
|
|
|
96
|
-
|
|
97
|
-
|
|
75
|
+
// Case 1: A slice entirely within a single CELL
|
|
76
|
+
if (
|
|
77
|
+
// starts and ends inside of a cell
|
|
78
|
+
slice.openStart >= 4 && slice.openEnd >= 4 &&
|
|
79
|
+
// slice is a table node
|
|
98
80
|
slice.content.childCount === 1 && slice.content.firstChild.type === schema.nodes.table) {
|
|
99
81
|
var _slice$content$firstC, _slice$content$firstC2, _slice$content$firstC3, _slice$content$firstC4, _slice$content$firstC5;
|
|
100
|
-
|
|
101
82
|
// prosemirror-view has a bug that it duplicates table entry when selecting multiple paragraphs in a table cell.
|
|
102
83
|
// https://github.com/ProseMirror/prosemirror/issues/1270
|
|
103
84
|
// The structure becomes
|
|
104
85
|
// table(genuine) > tableRow(genuine) > table(duplicated) > tableRow(duplicated) > tableCell/tableHeader(genuine) > contents(genuine)
|
|
105
86
|
// As we are removing wrapping table anyway, we keep duplicated table and tableRow for simplicity
|
|
106
87
|
var cleaned = slice;
|
|
107
|
-
|
|
108
88
|
if (((_slice$content$firstC = slice.content.firstChild) === null || _slice$content$firstC === void 0 ? void 0 : (_slice$content$firstC2 = _slice$content$firstC.content) === null || _slice$content$firstC2 === void 0 ? void 0 : (_slice$content$firstC3 = _slice$content$firstC2.firstChild) === null || _slice$content$firstC3 === void 0 ? void 0 : (_slice$content$firstC4 = _slice$content$firstC3.content) === null || _slice$content$firstC4 === void 0 ? void 0 : (_slice$content$firstC5 = _slice$content$firstC4.firstChild) === null || _slice$content$firstC5 === void 0 ? void 0 : _slice$content$firstC5.type) === schema.nodes.table) {
|
|
109
89
|
cleaned = new _prosemirrorModel.Slice(slice.content.firstChild.content.firstChild.content, slice.openStart - 2, slice.openEnd - 2);
|
|
110
90
|
}
|
|
111
|
-
|
|
112
91
|
return new _prosemirrorModel.Slice((0, _utils.flatmap)(cleaned.content, unwrapContentFromTable), cleaned.openStart - depthDecrement, cleaned.openEnd - depthDecrement);
|
|
113
|
-
}
|
|
114
|
-
|
|
92
|
+
}
|
|
115
93
|
|
|
116
|
-
|
|
117
|
-
|
|
94
|
+
// Case 2: A slice starting within a CELL and ending outside the table
|
|
95
|
+
if (
|
|
96
|
+
// starts inside of a cell but ends outside of the starting table
|
|
97
|
+
slice.openStart >= 4 &&
|
|
98
|
+
// slice starts from a table node (and spans across more than one node)
|
|
118
99
|
slice.content.childCount > 1 && ((_slice$content$firstC6 = slice.content.firstChild) === null || _slice$content$firstC6 === void 0 ? void 0 : _slice$content$firstC6.type) === schema.nodes.table) {
|
|
119
100
|
// repoint the slice's cutting depth so that cell content where the slice starts
|
|
120
101
|
// does not get lifted out of the cell on paste
|
|
121
102
|
return new _prosemirrorModel.Slice(slice.content, 1, slice.openEnd);
|
|
122
103
|
}
|
|
123
|
-
|
|
124
104
|
return slice;
|
|
125
105
|
};
|
|
126
|
-
|
|
127
106
|
exports.transformSliceToRemoveOpenTable = transformSliceToRemoveOpenTable;
|
|
128
|
-
|
|
129
107
|
var transformSliceToCorrectEmptyTableCells = function transformSliceToCorrectEmptyTableCells(slice, schema) {
|
|
130
108
|
var _schema$nodes3 = schema.nodes,
|
|
131
|
-
|
|
132
|
-
|
|
109
|
+
tableCell = _schema$nodes3.tableCell,
|
|
110
|
+
tableHeader = _schema$nodes3.tableHeader;
|
|
133
111
|
return (0, _utils.mapSlice)(slice, function (node) {
|
|
134
112
|
if (node && (node.type === tableCell || node.type === tableHeader) && !node.content.childCount) {
|
|
135
113
|
return node.type.createAndFill(node.attrs) || node;
|
|
136
114
|
}
|
|
137
|
-
|
|
138
115
|
return node;
|
|
139
116
|
});
|
|
140
117
|
};
|
|
141
|
-
|
|
142
118
|
exports.transformSliceToCorrectEmptyTableCells = transformSliceToCorrectEmptyTableCells;
|
|
143
|
-
|
|
144
119
|
function isHeaderRowRequired(state) {
|
|
145
120
|
var tableState = (0, _pluginFactory.getPluginState)(state);
|
|
146
121
|
return tableState && tableState.pluginConfig.isHeaderRowRequired;
|