@atlaskit/editor-tables 3.1.14 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +24 -0
- package/cell-bookmark/package.json +4 -4
- package/cell-selection/package.json +4 -4
- package/dist/cjs/add-to-cache.js +10 -0
- package/dist/cjs/cell-bookmark.js +2 -2
- package/dist/cjs/cell-selection.js +6 -6
- package/dist/cjs/compute-map.js +133 -0
- package/dist/cjs/find-bad-col-widths.js +51 -0
- package/dist/cjs/find-width.js +41 -0
- package/dist/cjs/index.js +4 -3
- package/dist/cjs/pm-plugins/handle-mouse-down.js +154 -0
- package/dist/cjs/pm-plugins/handle-triple-click.js +20 -0
- package/dist/cjs/pm-plugins/input.js +3 -156
- package/dist/cjs/pm-plugins/table-editing.js +4 -2
- package/dist/cjs/read-from-cache.js +10 -0
- package/dist/cjs/rect.js +18 -0
- package/dist/cjs/table-map-cache.js +49 -0
- package/dist/cjs/table-map.js +42 -253
- package/dist/cjs/utils/add-col-span.js +26 -0
- package/dist/cjs/utils/add-column-after.js +21 -0
- package/dist/cjs/utils/add-column-at.js +2 -2
- package/dist/cjs/utils/add-column-before.js +21 -0
- package/dist/cjs/utils/add-column.js +13 -15
- package/dist/cjs/utils/add-row-after.js +21 -0
- package/dist/cjs/utils/add-row-at.js +5 -83
- package/dist/cjs/utils/add-row-before.js +21 -0
- package/dist/cjs/utils/analytics-helpers.js +12 -45
- package/dist/cjs/utils/array-of-rows.js +5 -0
- package/dist/cjs/utils/assert-colspan.js +14 -0
- package/dist/cjs/utils/cell-around.js +14 -0
- package/dist/cjs/utils/cell-near.js +21 -0
- package/dist/cjs/utils/cell-wrapping.js +16 -0
- package/dist/cjs/utils/cells.js +25 -36
- package/dist/cjs/utils/changed-descendants.js +33 -0
- package/dist/cjs/utils/clip-cells.js +80 -0
- package/dist/cjs/utils/clone-column.js +4 -4
- package/dist/cjs/utils/clone-row-at.js +86 -0
- package/dist/cjs/utils/clone-row.js +4 -4
- package/dist/cjs/utils/colspan.js +18 -47
- package/dist/cjs/utils/column-is-header.js +17 -0
- package/dist/cjs/utils/convert-array-of-rows-to-table-node.js +57 -0
- package/dist/cjs/utils/convert-table-node-to-array-of-rows.js +54 -0
- package/dist/cjs/utils/find-cell-closest-to-pos.js +18 -0
- package/dist/cjs/utils/find-cell-rect-closest-to-pos.js +21 -0
- package/dist/cjs/utils/find-table-closest-to-pos.js +14 -0
- package/dist/cjs/utils/find-table.js +13 -0
- package/dist/cjs/utils/find.js +27 -41
- package/dist/cjs/utils/fit-slice.js +27 -0
- package/dist/cjs/utils/fix-table.js +112 -0
- package/dist/cjs/utils/fix-tables.js +4 -138
- package/dist/cjs/utils/for-each-cell-in-column.js +27 -0
- package/dist/cjs/utils/for-each-cell-in-row.js +25 -0
- package/dist/cjs/utils/for-each-cell.js +14 -41
- package/dist/cjs/utils/get-cell-type-callback.js +5 -0
- package/dist/cjs/utils/get-cells-in-column.js +2 -2
- package/dist/cjs/utils/get-cells-in-row.js +2 -2
- package/dist/cjs/utils/get-cells-in-table.js +2 -2
- package/dist/cjs/utils/get-selected-cell-info.js +33 -0
- package/dist/cjs/utils/get-selected-table-info.js +25 -0
- package/dist/cjs/utils/get-table-selection-closes-to-pos.js +23 -0
- package/dist/cjs/utils/go-to-next-cell.js +2 -2
- package/dist/cjs/utils/handle-paste.js +11 -8
- package/dist/cjs/utils/in-same-table.js +9 -0
- package/dist/cjs/utils/{copy-paste.js → insert-cells.js} +13 -194
- package/dist/cjs/utils/is-column-selected.js +24 -0
- package/dist/cjs/utils/is-header-enabled-by-type.js +22 -0
- package/dist/cjs/utils/is-in-table.js +15 -0
- package/dist/cjs/utils/is-rect-selected.js +26 -0
- package/dist/cjs/utils/is-row-selected.js +24 -0
- package/dist/cjs/utils/is-selected.js +27 -66
- package/dist/cjs/utils/is-table-selected.js +22 -0
- package/dist/cjs/utils/is-valid-reorder.js +20 -0
- package/dist/cjs/utils/move-column.js +4 -4
- package/dist/cjs/utils/move-row-in-array-of-rows.js +23 -0
- package/dist/cjs/utils/move-row.js +4 -4
- package/dist/cjs/utils/move-table-column.js +16 -0
- package/dist/cjs/utils/move-table-row.js +14 -0
- package/dist/cjs/utils/next-cell.js +13 -0
- package/dist/cjs/utils/pasted-cells.js +129 -0
- package/dist/cjs/utils/points-at-cell.js +9 -0
- package/dist/cjs/utils/remove-col-span.js +29 -0
- package/dist/cjs/utils/remove-column-at.js +31 -0
- package/dist/cjs/utils/remove-column-closest-to-pos.js +19 -0
- package/dist/cjs/utils/remove-column.js +31 -80
- package/dist/cjs/utils/remove-row-at.js +31 -0
- package/dist/cjs/utils/remove-row-closest-to-pos.js +19 -0
- package/dist/cjs/utils/remove-row.js +26 -75
- package/dist/cjs/utils/remove-selected-columns.js +49 -0
- package/dist/cjs/utils/remove-selected-rows.js +49 -0
- package/dist/cjs/utils/reorder-utils.js +45 -178
- package/dist/cjs/utils/replace-table.js +4 -4
- package/dist/cjs/utils/select-nodes.js +43 -60
- package/dist/cjs/utils/select-table-closest-to-pos.js +36 -0
- package/dist/cjs/utils/select-table.js +26 -0
- package/dist/cjs/utils/selection-cell.js +3 -2
- package/dist/cjs/utils/split-cell-with-type.js +11 -15
- package/dist/cjs/utils/tables.js +13 -13
- package/dist/cjs/utils/toggle-header.js +7 -24
- package/dist/cjs/utils/transpose.js +39 -0
- package/dist/cjs/utils.js +66 -43
- package/dist/es2019/add-to-cache.js +4 -0
- package/dist/es2019/cell-bookmark.js +1 -1
- package/dist/es2019/cell-selection.js +3 -3
- package/dist/es2019/compute-map.js +128 -0
- package/dist/es2019/find-bad-col-widths.js +46 -0
- package/dist/es2019/find-width.js +35 -0
- package/dist/es2019/index.js +3 -2
- package/dist/es2019/pm-plugins/handle-mouse-down.js +148 -0
- package/dist/es2019/pm-plugins/handle-triple-click.js +16 -0
- package/dist/es2019/pm-plugins/input.js +2 -155
- package/dist/es2019/pm-plugins/table-editing.js +3 -1
- package/dist/es2019/pm-plugins.js +9 -1
- package/dist/es2019/read-from-cache.js +4 -0
- package/dist/es2019/rect.js +11 -0
- package/dist/es2019/table-map-cache.js +36 -0
- package/dist/es2019/table-map.js +17 -245
- package/dist/es2019/utils/add-col-span.js +17 -0
- package/dist/es2019/utils/add-column-after.js +16 -0
- package/dist/es2019/utils/add-column-at.js +1 -1
- package/dist/es2019/utils/add-column-before.js +16 -0
- package/dist/es2019/utils/add-column.js +6 -11
- package/dist/es2019/utils/add-row-after.js +16 -0
- package/dist/es2019/utils/add-row-at.js +2 -70
- package/dist/es2019/utils/add-row-before.js +16 -0
- package/dist/es2019/utils/analytics-helpers.js +12 -46
- package/dist/es2019/utils/array-of-rows.js +1 -0
- package/dist/es2019/utils/assert-colspan.js +8 -0
- package/dist/es2019/utils/cell-around.js +8 -0
- package/dist/es2019/utils/cell-near.js +19 -0
- package/dist/es2019/utils/cell-wrapping.js +10 -0
- package/dist/es2019/utils/cells.js +21 -38
- package/dist/es2019/utils/changed-descendants.js +27 -0
- package/dist/es2019/utils/clip-cells.js +75 -0
- package/dist/es2019/utils/clone-column.js +2 -2
- package/dist/es2019/utils/clone-row-at.js +71 -0
- package/dist/es2019/utils/clone-row.js +2 -2
- package/dist/es2019/utils/colspan.js +16 -40
- package/dist/es2019/utils/column-is-header.js +11 -0
- package/dist/es2019/utils/convert-array-of-rows-to-table-node.js +51 -0
- package/dist/es2019/utils/convert-table-node-to-array-of-rows.js +48 -0
- package/dist/es2019/utils/find-cell-closest-to-pos.js +10 -0
- package/dist/es2019/utils/find-cell-rect-closest-to-pos.js +16 -0
- package/dist/es2019/utils/find-table-closest-to-pos.js +6 -0
- package/dist/es2019/utils/find-table.js +3 -0
- package/dist/es2019/utils/find.js +21 -32
- package/dist/es2019/utils/fit-slice.js +21 -0
- package/dist/es2019/utils/fix-table.js +105 -0
- package/dist/es2019/utils/fix-tables.js +2 -133
- package/dist/es2019/utils/for-each-cell-in-column.js +20 -0
- package/dist/es2019/utils/for-each-cell-in-row.js +18 -0
- package/dist/es2019/utils/for-each-cell.js +11 -36
- package/dist/es2019/utils/get-cell-type-callback.js +1 -0
- package/dist/es2019/utils/get-cells-in-column.js +1 -1
- package/dist/es2019/utils/get-cells-in-row.js +1 -1
- package/dist/es2019/utils/get-cells-in-table.js +1 -1
- package/dist/es2019/utils/get-selected-cell-info.js +28 -0
- package/dist/es2019/utils/get-selected-table-info.js +19 -0
- package/dist/es2019/utils/get-table-selection-closes-to-pos.js +18 -0
- package/dist/es2019/utils/go-to-next-cell.js +1 -1
- package/dist/es2019/utils/handle-paste.js +5 -2
- package/dist/es2019/utils/in-same-table.js +3 -0
- package/dist/es2019/utils/{copy-paste.js → insert-cells.js} +2 -185
- package/dist/es2019/utils/is-column-selected.js +17 -0
- package/dist/es2019/utils/is-header-enabled-by-type.js +16 -0
- package/dist/es2019/utils/is-in-table.js +11 -0
- package/dist/es2019/utils/is-rect-selected.js +19 -0
- package/dist/es2019/utils/is-row-selected.js +17 -0
- package/dist/es2019/utils/is-selected.js +21 -60
- package/dist/es2019/utils/is-table-selected.js +17 -0
- package/dist/es2019/utils/is-valid-reorder.js +14 -0
- package/dist/es2019/utils/move-column.js +2 -2
- package/dist/es2019/utils/move-row-in-array-of-rows.js +17 -0
- package/dist/es2019/utils/move-row.js +2 -2
- package/dist/es2019/utils/move-table-column.js +10 -0
- package/dist/es2019/utils/move-table-row.js +8 -0
- package/dist/es2019/utils/next-cell.js +7 -0
- package/dist/es2019/utils/pasted-cells.js +127 -0
- package/dist/es2019/utils/points-at-cell.js +3 -0
- package/dist/es2019/utils/remove-col-span.js +17 -0
- package/dist/es2019/utils/remove-column-at.js +24 -0
- package/dist/es2019/utils/remove-column-closest-to-pos.js +12 -0
- package/dist/es2019/utils/remove-column.js +10 -74
- package/dist/es2019/utils/remove-row-at.js +24 -0
- package/dist/es2019/utils/remove-row-closest-to-pos.js +12 -0
- package/dist/es2019/utils/remove-row.js +8 -73
- package/dist/es2019/utils/remove-selected-columns.js +43 -0
- package/dist/es2019/utils/remove-selected-rows.js +43 -0
- package/dist/es2019/utils/reorder-utils.js +40 -178
- package/dist/es2019/utils/replace-table.js +2 -2
- package/dist/es2019/utils/select-nodes.js +19 -59
- package/dist/es2019/utils/select-table-closest-to-pos.js +31 -0
- package/dist/es2019/utils/select-table.js +22 -0
- package/dist/es2019/utils/selection-cell.js +2 -1
- package/dist/es2019/utils/split-cell-with-type.js +5 -11
- package/dist/es2019/utils/tables.js +12 -14
- package/dist/es2019/utils/toggle-header.js +3 -19
- package/dist/es2019/utils/transpose.js +31 -0
- package/dist/es2019/utils.js +272 -14
- package/dist/esm/add-to-cache.js +4 -0
- package/dist/esm/cell-bookmark.js +1 -1
- package/dist/esm/cell-selection.js +3 -3
- package/dist/esm/compute-map.js +127 -0
- package/dist/esm/find-bad-col-widths.js +46 -0
- package/dist/esm/find-width.js +35 -0
- package/dist/esm/index.js +3 -2
- package/dist/esm/pm-plugins/handle-mouse-down.js +148 -0
- package/dist/esm/pm-plugins/handle-triple-click.js +14 -0
- package/dist/esm/pm-plugins/input.js +2 -153
- package/dist/esm/pm-plugins/table-editing.js +3 -1
- package/dist/esm/pm-plugins.js +9 -1
- package/dist/esm/read-from-cache.js +4 -0
- package/dist/esm/rect.js +12 -0
- package/dist/esm/table-map-cache.js +42 -0
- package/dist/esm/table-map.js +19 -247
- package/dist/esm/utils/add-col-span.js +20 -0
- package/dist/esm/utils/add-column-after.js +16 -0
- package/dist/esm/utils/add-column-at.js +1 -1
- package/dist/esm/utils/add-column-before.js +16 -0
- package/dist/esm/utils/add-column.js +6 -11
- package/dist/esm/utils/add-row-after.js +16 -0
- package/dist/esm/utils/add-row-at.js +2 -78
- package/dist/esm/utils/add-row-before.js +16 -0
- package/dist/esm/utils/analytics-helpers.js +12 -45
- package/dist/esm/utils/array-of-rows.js +1 -0
- package/dist/esm/utils/assert-colspan.js +8 -0
- package/dist/esm/utils/cell-around.js +8 -0
- package/dist/esm/utils/cell-near.js +15 -0
- package/dist/esm/utils/cell-wrapping.js +10 -0
- package/dist/esm/utils/cells.js +21 -34
- package/dist/esm/utils/changed-descendants.js +27 -0
- package/dist/esm/utils/clip-cells.js +76 -0
- package/dist/esm/utils/clone-column.js +2 -2
- package/dist/esm/utils/clone-row-at.js +79 -0
- package/dist/esm/utils/clone-row.js +2 -2
- package/dist/esm/utils/colspan.js +16 -45
- package/dist/esm/utils/column-is-header.js +11 -0
- package/dist/esm/utils/convert-array-of-rows-to-table-node.js +51 -0
- package/dist/esm/utils/convert-table-node-to-array-of-rows.js +48 -0
- package/dist/esm/utils/find-cell-closest-to-pos.js +12 -0
- package/dist/esm/utils/find-cell-rect-closest-to-pos.js +16 -0
- package/dist/esm/utils/find-table-closest-to-pos.js +8 -0
- package/dist/esm/utils/find-table.js +7 -0
- package/dist/esm/utils/find.js +21 -40
- package/dist/esm/utils/fit-slice.js +21 -0
- package/dist/esm/utils/fix-table.js +106 -0
- package/dist/esm/utils/fix-tables.js +2 -134
- package/dist/esm/utils/for-each-cell-in-column.js +22 -0
- package/dist/esm/utils/for-each-cell-in-row.js +20 -0
- package/dist/esm/utils/for-each-cell.js +11 -40
- package/dist/esm/utils/get-cell-type-callback.js +1 -0
- package/dist/esm/utils/get-cells-in-column.js +1 -1
- package/dist/esm/utils/get-cells-in-row.js +1 -1
- package/dist/esm/utils/get-cells-in-table.js +1 -1
- package/dist/esm/utils/get-selected-cell-info.js +27 -0
- package/dist/esm/utils/get-selected-table-info.js +19 -0
- package/dist/esm/utils/get-table-selection-closes-to-pos.js +17 -0
- package/dist/esm/utils/go-to-next-cell.js +1 -1
- package/dist/esm/utils/handle-paste.js +5 -2
- package/dist/esm/utils/in-same-table.js +3 -0
- package/dist/esm/utils/{copy-paste.js → insert-cells.js} +9 -187
- package/dist/esm/utils/is-column-selected.js +19 -0
- package/dist/esm/utils/is-header-enabled-by-type.js +16 -0
- package/dist/esm/utils/is-in-table.js +9 -0
- package/dist/esm/utils/is-rect-selected.js +21 -0
- package/dist/esm/utils/is-row-selected.js +19 -0
- package/dist/esm/utils/is-selected.js +21 -66
- package/dist/esm/utils/is-table-selected.js +17 -0
- package/dist/esm/utils/is-valid-reorder.js +14 -0
- package/dist/esm/utils/move-column.js +2 -2
- package/dist/esm/utils/move-row-in-array-of-rows.js +17 -0
- package/dist/esm/utils/move-row.js +2 -2
- package/dist/esm/utils/move-table-column.js +10 -0
- package/dist/esm/utils/move-table-row.js +8 -0
- package/dist/esm/utils/next-cell.js +7 -0
- package/dist/esm/utils/pasted-cells.js +124 -0
- package/dist/esm/utils/points-at-cell.js +3 -0
- package/dist/esm/utils/remove-col-span.js +22 -0
- package/dist/esm/utils/remove-column-at.js +26 -0
- package/dist/esm/utils/remove-column-closest-to-pos.js +14 -0
- package/dist/esm/utils/remove-column.js +10 -78
- package/dist/esm/utils/remove-row-at.js +26 -0
- package/dist/esm/utils/remove-row-closest-to-pos.js +14 -0
- package/dist/esm/utils/remove-row.js +8 -74
- package/dist/esm/utils/remove-selected-columns.js +43 -0
- package/dist/esm/utils/remove-selected-rows.js +43 -0
- package/dist/esm/utils/reorder-utils.js +40 -180
- package/dist/esm/utils/replace-table.js +2 -2
- package/dist/esm/utils/select-nodes.js +19 -56
- package/dist/esm/utils/select-table-closest-to-pos.js +30 -0
- package/dist/esm/utils/select-table.js +21 -0
- package/dist/esm/utils/selection-cell.js +2 -1
- package/dist/esm/utils/split-cell-with-type.js +5 -11
- package/dist/esm/utils/tables.js +12 -12
- package/dist/esm/utils/toggle-header.js +3 -19
- package/dist/esm/utils/transpose.js +33 -0
- package/dist/esm/utils.js +272 -14
- package/dist/types/add-to-cache.d.ts +3 -0
- package/dist/types/compute-map.d.ts +3 -0
- package/dist/types/find-bad-col-widths.d.ts +3 -0
- package/dist/types/find-width.d.ts +2 -0
- package/dist/types/index.d.ts +3 -2
- package/dist/types/pm-plugins/handle-mouse-down.d.ts +2 -0
- package/dist/types/pm-plugins/handle-triple-click.d.ts +2 -0
- package/dist/types/pm-plugins/input.d.ts +0 -2
- package/dist/types/pm-plugins.d.ts +6 -0
- package/dist/types/read-from-cache.d.ts +3 -0
- package/dist/types/rect.d.ts +7 -0
- package/dist/types/table-map-cache.d.ts +6 -0
- package/dist/types/table-map.d.ts +13 -7
- package/dist/types/utils/add-col-span.d.ts +2 -0
- package/dist/types/utils/add-column-after.d.ts +2 -0
- package/dist/types/utils/add-column-before.d.ts +2 -0
- package/dist/types/utils/add-column.d.ts +2 -3
- package/dist/types/utils/add-row-after.d.ts +2 -0
- package/dist/types/utils/add-row-at.d.ts +0 -1
- package/dist/types/utils/add-row-before.d.ts +2 -0
- package/dist/types/utils/analytics-helpers.d.ts +8 -16
- package/dist/types/utils/array-of-rows.d.ts +2 -0
- package/dist/types/utils/assert-colspan.d.ts +2 -0
- package/dist/types/utils/cell-around.d.ts +2 -0
- package/dist/types/utils/cell-near.d.ts +2 -0
- package/dist/types/utils/cell-wrapping.d.ts +2 -0
- package/dist/types/utils/cells.d.ts +16 -7
- package/dist/types/utils/changed-descendants.d.ts +2 -0
- package/dist/types/utils/clip-cells.d.ts +2 -0
- package/dist/types/utils/clone-row-at.d.ts +2 -0
- package/dist/types/utils/colspan.d.ts +12 -4
- package/dist/types/utils/column-is-header.d.ts +3 -0
- package/dist/types/utils/convert-array-of-rows-to-table-node.d.ts +3 -0
- package/dist/types/utils/convert-table-node-to-array-of-rows.d.ts +3 -0
- package/dist/types/utils/find-cell-closest-to-pos.d.ts +3 -0
- package/dist/types/utils/find-cell-rect-closest-to-pos.d.ts +3 -0
- package/dist/types/utils/find-table-closest-to-pos.d.ts +3 -0
- package/dist/types/utils/find-table.d.ts +3 -0
- package/dist/types/utils/find.d.ts +16 -8
- package/dist/types/utils/fit-slice.d.ts +2 -0
- package/dist/types/utils/fix-table.d.ts +4 -0
- package/dist/types/utils/fix-tables.d.ts +0 -2
- package/dist/types/utils/for-each-cell-in-column.d.ts +3 -0
- package/dist/types/utils/for-each-cell-in-row.d.ts +3 -0
- package/dist/types/utils/for-each-cell.d.ts +8 -4
- package/dist/types/utils/get-cell-type-callback.d.ts +3 -0
- package/dist/types/utils/get-selected-cell-info.d.ts +8 -0
- package/dist/types/utils/get-selected-table-info.d.ts +9 -0
- package/dist/types/utils/get-selection-rect.d.ts +1 -1
- package/dist/types/utils/get-table-selection-closes-to-pos.d.ts +3 -0
- package/dist/types/utils/in-same-table.d.ts +2 -0
- package/dist/types/utils/insert-cells.d.ts +4 -0
- package/dist/types/utils/is-column-selected.d.ts +2 -0
- package/dist/types/utils/is-header-enabled-by-type.d.ts +4 -0
- package/dist/types/utils/is-in-table.d.ts +2 -0
- package/dist/types/utils/is-rect-selected.d.ts +3 -0
- package/dist/types/utils/is-row-selected.d.ts +2 -0
- package/dist/types/utils/is-selected.d.ts +16 -6
- package/dist/types/utils/is-table-selected.d.ts +2 -0
- package/dist/types/utils/is-valid-reorder.d.ts +1 -0
- package/dist/types/utils/move-row-in-array-of-rows.d.ts +2 -0
- package/dist/types/utils/move-table-column.d.ts +3 -0
- package/dist/types/utils/move-table-row.d.ts +3 -0
- package/dist/types/utils/next-cell.d.ts +3 -0
- package/dist/types/utils/pasted-cells.d.ts +3 -0
- package/dist/types/utils/points-at-cell.d.ts +2 -0
- package/dist/types/utils/remove-col-span.d.ts +2 -0
- package/dist/types/utils/remove-column-at.d.ts +2 -0
- package/dist/types/utils/remove-column-closest-to-pos.d.ts +3 -0
- package/dist/types/utils/remove-column.d.ts +5 -4
- package/dist/types/utils/remove-row-at.d.ts +2 -0
- package/dist/types/utils/remove-row-closest-to-pos.d.ts +3 -0
- package/dist/types/utils/remove-row.d.ts +5 -4
- package/dist/types/utils/remove-selected-columns.d.ts +2 -0
- package/dist/types/utils/remove-selected-rows.d.ts +2 -0
- package/dist/types/utils/reorder-utils.d.ts +32 -10
- package/dist/types/utils/select-nodes.d.ts +12 -5
- package/dist/types/utils/select-table-closest-to-pos.d.ts +3 -0
- package/dist/types/utils/select-table.d.ts +2 -0
- package/dist/types/utils/selection-rect.d.ts +2 -1
- package/dist/types/utils/split-cell-with-type.d.ts +3 -5
- package/dist/types/utils/tables.d.ts +8 -4
- package/dist/types/utils/toggle-header.d.ts +0 -3
- package/dist/types/utils/transpose.d.ts +1 -0
- package/dist/types/utils.d.ts +201 -13
- package/find-bad-col-widths/package.json +8 -0
- package/find-width/package.json +8 -0
- package/get-table-selection-closes-to-pos/package.json +8 -0
- package/package.json +3 -3
- package/pm-plugins/plugin-key/package.json +4 -4
- package/pm-plugins/table-editing/package.json +4 -4
- package/rect/package.json +8 -0
- package/select-table/package.json +8 -0
- package/select-table-closest-to-pos/package.json +8 -0
- package/table-map/package.json +4 -4
- package/types/package.json +4 -4
- package/utils/add-column/package.json +4 -4
- package/utils/add-column-at/package.json +4 -4
- package/utils/add-row/package.json +4 -4
- package/utils/add-row-at/package.json +4 -4
- package/utils/analytics-helpers/package.json +4 -4
- package/utils/cells/package.json +4 -4
- package/utils/clone-column/package.json +4 -4
- package/utils/clone-row/package.json +4 -4
- package/utils/clone-tr/package.json +4 -4
- package/utils/colspan/package.json +4 -4
- package/utils/create-table/package.json +4 -4
- package/utils/draw-cell-selection/package.json +4 -4
- package/utils/empty-cells/package.json +4 -4
- package/utils/find/package.json +4 -4
- package/utils/fix-tables/package.json +4 -4
- package/utils/for-each-cell/package.json +4 -4
- package/utils/get-cell-selection-ranges/package.json +4 -4
- package/utils/get-cells-in-column/package.json +4 -4
- package/utils/get-cells-in-row/package.json +4 -4
- package/utils/get-cells-in-table/package.json +4 -4
- package/utils/get-selection-range-in-column/package.json +4 -4
- package/utils/get-selection-range-in-row/package.json +4 -4
- package/utils/get-selection-rect/package.json +4 -4
- package/utils/go-to-next-cell/package.json +4 -4
- package/utils/handle-paste/package.json +4 -4
- package/utils/is-selected/package.json +4 -4
- package/utils/is-selection-type/package.json +4 -4
- package/utils/move-column/package.json +4 -4
- package/utils/move-row/package.json +4 -4
- package/utils/normalize-selection/package.json +4 -4
- package/utils/remove-column/package.json +4 -4
- package/utils/remove-row/package.json +4 -4
- package/utils/remove-table/package.json +4 -4
- package/utils/reorder-utils/package.json +4 -4
- package/utils/replace-table/package.json +4 -4
- package/utils/select-nodes/package.json +4 -4
- package/utils/selection-cell/package.json +4 -4
- package/utils/selection-rect/package.json +4 -4
- package/utils/set-cell-attrs/package.json +4 -4
- package/utils/split-cell/package.json +4 -4
- package/utils/split-cell-with-type/package.json +4 -4
- package/utils/table-node-types/package.json +4 -4
- package/utils/tables/package.json +4 -4
- package/utils/toggle-header/package.json +4 -4
- package/utils/uuid/package.json +4 -4
- package/afm-cc/tsconfig.json +0 -35
- package/dist/cjs/entry-points/cell-bookmark.js +0 -12
- package/dist/cjs/entry-points/cell-selection.js +0 -12
- package/dist/cjs/entry-points/pm-plugins-plugin-key.js +0 -12
- package/dist/cjs/entry-points/pm-plugins-table-editing.js +0 -12
- package/dist/cjs/entry-points/table-map.js +0 -30
- package/dist/cjs/entry-points/types.js +0 -1
- package/dist/cjs/entry-points/utils-add-column-at.js +0 -12
- package/dist/cjs/entry-points/utils-add-column.js +0 -18
- package/dist/cjs/entry-points/utils-add-row-at.js +0 -12
- package/dist/cjs/entry-points/utils-add-row.js +0 -12
- package/dist/cjs/entry-points/utils-analytics-helpers.js +0 -18
- package/dist/cjs/entry-points/utils-cells.js +0 -30
- package/dist/cjs/entry-points/utils-clone-column.js +0 -12
- package/dist/cjs/entry-points/utils-clone-row.js +0 -12
- package/dist/cjs/entry-points/utils-clone-tr.js +0 -12
- package/dist/cjs/entry-points/utils-colspan.js +0 -18
- package/dist/cjs/entry-points/utils-create-table.js +0 -12
- package/dist/cjs/entry-points/utils-draw-cell-selection.js +0 -12
- package/dist/cjs/entry-points/utils-empty-cells.js +0 -12
- package/dist/cjs/entry-points/utils-find.js +0 -30
- package/dist/cjs/entry-points/utils-fix-tables.js +0 -12
- package/dist/cjs/entry-points/utils-for-each-cell.js +0 -18
- package/dist/cjs/entry-points/utils-get-cell-selection-ranges.js +0 -12
- package/dist/cjs/entry-points/utils-get-cells-in-column.js +0 -12
- package/dist/cjs/entry-points/utils-get-cells-in-row.js +0 -12
- package/dist/cjs/entry-points/utils-get-cells-in-table.js +0 -12
- package/dist/cjs/entry-points/utils-get-selection-range-in-column.js +0 -12
- package/dist/cjs/entry-points/utils-get-selection-range-in-row.js +0 -12
- package/dist/cjs/entry-points/utils-get-selection-rect.js +0 -12
- package/dist/cjs/entry-points/utils-go-to-next-cell.js +0 -12
- package/dist/cjs/entry-points/utils-handle-paste.js +0 -12
- package/dist/cjs/entry-points/utils-is-selected.js +0 -30
- package/dist/cjs/entry-points/utils-is-selection-type.js +0 -12
- package/dist/cjs/entry-points/utils-move-column.js +0 -12
- package/dist/cjs/entry-points/utils-move-row.js +0 -12
- package/dist/cjs/entry-points/utils-normalize-selection.js +0 -12
- package/dist/cjs/entry-points/utils-remove-column.js +0 -24
- package/dist/cjs/entry-points/utils-remove-row.js +0 -24
- package/dist/cjs/entry-points/utils-remove-table.js +0 -12
- package/dist/cjs/entry-points/utils-reorder-utils.js +0 -18
- package/dist/cjs/entry-points/utils-replace-table.js +0 -12
- package/dist/cjs/entry-points/utils-select-nodes.js +0 -48
- package/dist/cjs/entry-points/utils-selection-cell.js +0 -12
- package/dist/cjs/entry-points/utils-selection-rect.js +0 -12
- package/dist/cjs/entry-points/utils-set-cell-attrs.js +0 -12
- package/dist/cjs/entry-points/utils-split-cell-with-type.js +0 -18
- package/dist/cjs/entry-points/utils-split-cell.js +0 -12
- package/dist/cjs/entry-points/utils-table-node-types.js +0 -12
- package/dist/cjs/entry-points/utils-tables.js +0 -18
- package/dist/cjs/entry-points/utils-toggle-header.js +0 -12
- package/dist/cjs/entry-points/utils-uuid.js +0 -12
- package/dist/cjs/utils/test-utils.js +0 -61
- package/dist/es2019/entry-points/cell-bookmark.js +0 -2
- package/dist/es2019/entry-points/cell-selection.js +0 -2
- package/dist/es2019/entry-points/pm-plugins-plugin-key.js +0 -2
- package/dist/es2019/entry-points/pm-plugins-table-editing.js +0 -2
- package/dist/es2019/entry-points/table-map.js +0 -2
- package/dist/es2019/entry-points/types.js +0 -0
- package/dist/es2019/entry-points/utils-add-column-at.js +0 -2
- package/dist/es2019/entry-points/utils-add-column.js +0 -2
- package/dist/es2019/entry-points/utils-add-row-at.js +0 -2
- package/dist/es2019/entry-points/utils-add-row.js +0 -2
- package/dist/es2019/entry-points/utils-analytics-helpers.js +0 -2
- package/dist/es2019/entry-points/utils-cells.js +0 -2
- package/dist/es2019/entry-points/utils-clone-column.js +0 -2
- package/dist/es2019/entry-points/utils-clone-row.js +0 -2
- package/dist/es2019/entry-points/utils-clone-tr.js +0 -2
- package/dist/es2019/entry-points/utils-colspan.js +0 -2
- package/dist/es2019/entry-points/utils-create-table.js +0 -2
- package/dist/es2019/entry-points/utils-draw-cell-selection.js +0 -2
- package/dist/es2019/entry-points/utils-empty-cells.js +0 -2
- package/dist/es2019/entry-points/utils-find.js +0 -2
- package/dist/es2019/entry-points/utils-fix-tables.js +0 -2
- package/dist/es2019/entry-points/utils-for-each-cell.js +0 -2
- package/dist/es2019/entry-points/utils-get-cell-selection-ranges.js +0 -2
- package/dist/es2019/entry-points/utils-get-cells-in-column.js +0 -2
- package/dist/es2019/entry-points/utils-get-cells-in-row.js +0 -2
- package/dist/es2019/entry-points/utils-get-cells-in-table.js +0 -2
- package/dist/es2019/entry-points/utils-get-selection-range-in-column.js +0 -2
- package/dist/es2019/entry-points/utils-get-selection-range-in-row.js +0 -2
- package/dist/es2019/entry-points/utils-get-selection-rect.js +0 -2
- package/dist/es2019/entry-points/utils-go-to-next-cell.js +0 -2
- package/dist/es2019/entry-points/utils-handle-paste.js +0 -2
- package/dist/es2019/entry-points/utils-is-selected.js +0 -2
- package/dist/es2019/entry-points/utils-is-selection-type.js +0 -2
- package/dist/es2019/entry-points/utils-move-column.js +0 -2
- package/dist/es2019/entry-points/utils-move-row.js +0 -2
- package/dist/es2019/entry-points/utils-normalize-selection.js +0 -2
- package/dist/es2019/entry-points/utils-remove-column.js +0 -2
- package/dist/es2019/entry-points/utils-remove-row.js +0 -2
- package/dist/es2019/entry-points/utils-remove-table.js +0 -2
- package/dist/es2019/entry-points/utils-reorder-utils.js +0 -2
- package/dist/es2019/entry-points/utils-replace-table.js +0 -2
- package/dist/es2019/entry-points/utils-select-nodes.js +0 -2
- package/dist/es2019/entry-points/utils-selection-cell.js +0 -2
- package/dist/es2019/entry-points/utils-selection-rect.js +0 -2
- package/dist/es2019/entry-points/utils-set-cell-attrs.js +0 -2
- package/dist/es2019/entry-points/utils-split-cell-with-type.js +0 -2
- package/dist/es2019/entry-points/utils-split-cell.js +0 -2
- package/dist/es2019/entry-points/utils-table-node-types.js +0 -2
- package/dist/es2019/entry-points/utils-tables.js +0 -2
- package/dist/es2019/entry-points/utils-toggle-header.js +0 -2
- package/dist/es2019/entry-points/utils-uuid.js +0 -2
- package/dist/es2019/utils/test-utils.js +0 -56
- package/dist/esm/entry-points/cell-bookmark.js +0 -2
- package/dist/esm/entry-points/cell-selection.js +0 -2
- package/dist/esm/entry-points/pm-plugins-plugin-key.js +0 -2
- package/dist/esm/entry-points/pm-plugins-table-editing.js +0 -2
- package/dist/esm/entry-points/table-map.js +0 -2
- package/dist/esm/entry-points/types.js +0 -0
- package/dist/esm/entry-points/utils-add-column-at.js +0 -2
- package/dist/esm/entry-points/utils-add-column.js +0 -2
- package/dist/esm/entry-points/utils-add-row-at.js +0 -2
- package/dist/esm/entry-points/utils-add-row.js +0 -2
- package/dist/esm/entry-points/utils-analytics-helpers.js +0 -2
- package/dist/esm/entry-points/utils-cells.js +0 -2
- package/dist/esm/entry-points/utils-clone-column.js +0 -2
- package/dist/esm/entry-points/utils-clone-row.js +0 -2
- package/dist/esm/entry-points/utils-clone-tr.js +0 -2
- package/dist/esm/entry-points/utils-colspan.js +0 -2
- package/dist/esm/entry-points/utils-create-table.js +0 -2
- package/dist/esm/entry-points/utils-draw-cell-selection.js +0 -2
- package/dist/esm/entry-points/utils-empty-cells.js +0 -2
- package/dist/esm/entry-points/utils-find.js +0 -2
- package/dist/esm/entry-points/utils-fix-tables.js +0 -2
- package/dist/esm/entry-points/utils-for-each-cell.js +0 -2
- package/dist/esm/entry-points/utils-get-cell-selection-ranges.js +0 -2
- package/dist/esm/entry-points/utils-get-cells-in-column.js +0 -2
- package/dist/esm/entry-points/utils-get-cells-in-row.js +0 -2
- package/dist/esm/entry-points/utils-get-cells-in-table.js +0 -2
- package/dist/esm/entry-points/utils-get-selection-range-in-column.js +0 -2
- package/dist/esm/entry-points/utils-get-selection-range-in-row.js +0 -2
- package/dist/esm/entry-points/utils-get-selection-rect.js +0 -2
- package/dist/esm/entry-points/utils-go-to-next-cell.js +0 -2
- package/dist/esm/entry-points/utils-handle-paste.js +0 -2
- package/dist/esm/entry-points/utils-is-selected.js +0 -2
- package/dist/esm/entry-points/utils-is-selection-type.js +0 -2
- package/dist/esm/entry-points/utils-move-column.js +0 -2
- package/dist/esm/entry-points/utils-move-row.js +0 -2
- package/dist/esm/entry-points/utils-normalize-selection.js +0 -2
- package/dist/esm/entry-points/utils-remove-column.js +0 -2
- package/dist/esm/entry-points/utils-remove-row.js +0 -2
- package/dist/esm/entry-points/utils-remove-table.js +0 -2
- package/dist/esm/entry-points/utils-reorder-utils.js +0 -2
- package/dist/esm/entry-points/utils-replace-table.js +0 -2
- package/dist/esm/entry-points/utils-select-nodes.js +0 -2
- package/dist/esm/entry-points/utils-selection-cell.js +0 -2
- package/dist/esm/entry-points/utils-selection-rect.js +0 -2
- package/dist/esm/entry-points/utils-set-cell-attrs.js +0 -2
- package/dist/esm/entry-points/utils-split-cell-with-type.js +0 -2
- package/dist/esm/entry-points/utils-split-cell.js +0 -2
- package/dist/esm/entry-points/utils-table-node-types.js +0 -2
- package/dist/esm/entry-points/utils-tables.js +0 -2
- package/dist/esm/entry-points/utils-toggle-header.js +0 -2
- package/dist/esm/entry-points/utils-uuid.js +0 -2
- package/dist/esm/utils/test-utils.js +0 -56
- package/dist/types/entry-points/cell-bookmark.d.ts +0 -1
- package/dist/types/entry-points/cell-selection.d.ts +0 -1
- package/dist/types/entry-points/pm-plugins-plugin-key.d.ts +0 -1
- package/dist/types/entry-points/pm-plugins-table-editing.d.ts +0 -1
- package/dist/types/entry-points/table-map.d.ts +0 -2
- package/dist/types/entry-points/types.d.ts +0 -1
- package/dist/types/entry-points/utils-add-column-at.d.ts +0 -1
- package/dist/types/entry-points/utils-add-column.d.ts +0 -1
- package/dist/types/entry-points/utils-add-row-at.d.ts +0 -1
- package/dist/types/entry-points/utils-add-row.d.ts +0 -1
- package/dist/types/entry-points/utils-analytics-helpers.d.ts +0 -1
- package/dist/types/entry-points/utils-cells.d.ts +0 -1
- package/dist/types/entry-points/utils-clone-column.d.ts +0 -1
- package/dist/types/entry-points/utils-clone-row.d.ts +0 -1
- package/dist/types/entry-points/utils-clone-tr.d.ts +0 -1
- package/dist/types/entry-points/utils-colspan.d.ts +0 -1
- package/dist/types/entry-points/utils-create-table.d.ts +0 -1
- package/dist/types/entry-points/utils-draw-cell-selection.d.ts +0 -1
- package/dist/types/entry-points/utils-empty-cells.d.ts +0 -1
- package/dist/types/entry-points/utils-find.d.ts +0 -1
- package/dist/types/entry-points/utils-fix-tables.d.ts +0 -1
- package/dist/types/entry-points/utils-for-each-cell.d.ts +0 -1
- package/dist/types/entry-points/utils-get-cell-selection-ranges.d.ts +0 -1
- package/dist/types/entry-points/utils-get-cells-in-column.d.ts +0 -1
- package/dist/types/entry-points/utils-get-cells-in-row.d.ts +0 -1
- package/dist/types/entry-points/utils-get-cells-in-table.d.ts +0 -1
- package/dist/types/entry-points/utils-get-selection-range-in-column.d.ts +0 -1
- package/dist/types/entry-points/utils-get-selection-range-in-row.d.ts +0 -1
- package/dist/types/entry-points/utils-get-selection-rect.d.ts +0 -1
- package/dist/types/entry-points/utils-go-to-next-cell.d.ts +0 -1
- package/dist/types/entry-points/utils-handle-paste.d.ts +0 -1
- package/dist/types/entry-points/utils-is-selected.d.ts +0 -1
- package/dist/types/entry-points/utils-is-selection-type.d.ts +0 -1
- package/dist/types/entry-points/utils-move-column.d.ts +0 -1
- package/dist/types/entry-points/utils-move-row.d.ts +0 -1
- package/dist/types/entry-points/utils-normalize-selection.d.ts +0 -1
- package/dist/types/entry-points/utils-remove-column.d.ts +0 -1
- package/dist/types/entry-points/utils-remove-row.d.ts +0 -1
- package/dist/types/entry-points/utils-remove-table.d.ts +0 -1
- package/dist/types/entry-points/utils-reorder-utils.d.ts +0 -1
- package/dist/types/entry-points/utils-replace-table.d.ts +0 -1
- package/dist/types/entry-points/utils-select-nodes.d.ts +0 -1
- package/dist/types/entry-points/utils-selection-cell.d.ts +0 -1
- package/dist/types/entry-points/utils-selection-rect.d.ts +0 -2
- package/dist/types/entry-points/utils-set-cell-attrs.d.ts +0 -1
- package/dist/types/entry-points/utils-split-cell-with-type.d.ts +0 -1
- package/dist/types/entry-points/utils-split-cell.d.ts +0 -1
- package/dist/types/entry-points/utils-table-node-types.d.ts +0 -1
- package/dist/types/entry-points/utils-tables.d.ts +0 -1
- package/dist/types/entry-points/utils-toggle-header.d.ts +0 -1
- package/dist/types/entry-points/utils-uuid.d.ts +0 -1
- package/dist/types/utils/copy-paste.d.ts +0 -9
- package/dist/types/utils/test-utils.d.ts +0 -5
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// Helper for iterating through the nodes in a document that changed
|
|
2
|
+
// compared to the given previous document. Useful for avoiding
|
|
3
|
+
// duplicate work on each transaction.
|
|
4
|
+
export function changedDescendants(old, cur, offsetStart, f) {
|
|
5
|
+
var offset = offsetStart;
|
|
6
|
+
var oldSize = old.childCount;
|
|
7
|
+
var curSize = cur.childCount;
|
|
8
|
+
// eslint-disable-next-line no-labels
|
|
9
|
+
outer: for (var i = 0, j = 0; i < curSize; i++) {
|
|
10
|
+
var child = cur.child(i);
|
|
11
|
+
for (var scan = j, e = Math.min(oldSize, i + 3); scan < e; scan++) {
|
|
12
|
+
if (old.child(scan) === child) {
|
|
13
|
+
j = scan + 1;
|
|
14
|
+
offset += child.nodeSize;
|
|
15
|
+
// eslint-disable-next-line no-continue, no-labels
|
|
16
|
+
continue outer;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
f(child, offset);
|
|
20
|
+
if (j < oldSize && old.child(j).sameMarkup(child)) {
|
|
21
|
+
changedDescendants(old.child(j), child, offset + 1, f);
|
|
22
|
+
} else {
|
|
23
|
+
child.nodesBetween(0, child.content.size, f, offset + 1);
|
|
24
|
+
}
|
|
25
|
+
offset += child.nodeSize;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
3
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
4
|
+
// Utilities used for copy/paste handling.
|
|
5
|
+
//
|
|
6
|
+
// This module handles pasting cell content into tables, or pasting
|
|
7
|
+
// anything into a cell selection, as replacing a block of cells with
|
|
8
|
+
// the content of the selection. When pasting cells into a cell, that
|
|
9
|
+
// involves placing the block of pasted content so that its top left
|
|
10
|
+
// aligns with the selection cell, optionally extending the table to
|
|
11
|
+
// the right or bottom to make sure it is large enough. Pasting into a
|
|
12
|
+
// cell selection is different, here the cells in the selection are
|
|
13
|
+
// clipped to the selection's rectangle, optionally repeating the
|
|
14
|
+
// pasted cells when they are smaller than the selection.
|
|
15
|
+
|
|
16
|
+
import { Fragment } from '@atlaskit/editor-prosemirror/model';
|
|
17
|
+
import { removeColSpan } from './remove-col-span';
|
|
18
|
+
|
|
19
|
+
// : ({width: number, height: number, rows: [Fragment]}, number, number) → {width: number, height: number, rows: [Fragment]}
|
|
20
|
+
// Clip or extend (repeat) the given set of cells to cover the given
|
|
21
|
+
// width and height. Will clip rowspan/colspan cells at the edges when
|
|
22
|
+
// they stick out.
|
|
23
|
+
export function clipCells(_ref, newWidth, newHeight) {
|
|
24
|
+
var currentWidth = _ref.width,
|
|
25
|
+
currentHeight = _ref.height,
|
|
26
|
+
currentRows = _ref.rows;
|
|
27
|
+
var rows = currentRows;
|
|
28
|
+
var width = currentWidth;
|
|
29
|
+
var height = currentHeight;
|
|
30
|
+
if (width !== newWidth) {
|
|
31
|
+
var added = [];
|
|
32
|
+
var newRows = [];
|
|
33
|
+
for (var row = 0; row < rows.length; row++) {
|
|
34
|
+
var frag = rows[row];
|
|
35
|
+
var cells = [];
|
|
36
|
+
for (var col = added[row] || 0, i = 0; col < newWidth; i++) {
|
|
37
|
+
var cell = frag.child(i % frag.childCount);
|
|
38
|
+
if (col + cell.attrs.colspan > newWidth) {
|
|
39
|
+
cell = cell.type.create(removeColSpan(cell.attrs, cell.attrs.colspan, col + cell.attrs.colspan - newWidth), cell.content);
|
|
40
|
+
}
|
|
41
|
+
cells.push(cell);
|
|
42
|
+
col += cell.attrs.colspan;
|
|
43
|
+
for (var j = 1; j < cell.attrs.rowspan; j++) {
|
|
44
|
+
added[row + j] = (added[row + j] || 0) + cell.attrs.colspan;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
newRows.push(Fragment.from(cells));
|
|
48
|
+
}
|
|
49
|
+
rows = newRows;
|
|
50
|
+
width = newWidth;
|
|
51
|
+
}
|
|
52
|
+
if (height !== newHeight) {
|
|
53
|
+
var _newRows = [];
|
|
54
|
+
for (var _row = 0, _i = 0; _row < newHeight; _row++, _i++) {
|
|
55
|
+
var _cells = [];
|
|
56
|
+
var source = rows[_i % height];
|
|
57
|
+
for (var _j = 0; _j < source.childCount; _j++) {
|
|
58
|
+
var _cell = source.child(_j);
|
|
59
|
+
if (_row + _cell.attrs.rowspan > newHeight) {
|
|
60
|
+
_cell = _cell.type.create(_objectSpread(_objectSpread({}, _cell.attrs), {}, {
|
|
61
|
+
rowspan: Math.max(1, newHeight - _cell.attrs.rowspan)
|
|
62
|
+
}), _cell.content);
|
|
63
|
+
}
|
|
64
|
+
_cells.push(_cell);
|
|
65
|
+
}
|
|
66
|
+
_newRows.push(Fragment.from(_cells));
|
|
67
|
+
}
|
|
68
|
+
rows = _newRows;
|
|
69
|
+
height = newHeight;
|
|
70
|
+
}
|
|
71
|
+
return {
|
|
72
|
+
width: width,
|
|
73
|
+
height: height,
|
|
74
|
+
rows: rows
|
|
75
|
+
};
|
|
76
|
+
}
|
|
@@ -3,9 +3,9 @@ import { CellSelection } from '../cell-selection';
|
|
|
3
3
|
import { TableMap } from '../table-map';
|
|
4
4
|
import { determineTableHeaderStateFromTableNode } from './analyse-table';
|
|
5
5
|
import { cloneTr } from './clone-tr';
|
|
6
|
-
import { findTable } from './find';
|
|
6
|
+
import { findTable } from './find-table';
|
|
7
7
|
import { getSelectionRangeInColumn } from './get-selection-range-in-column';
|
|
8
|
-
import { isValidReorder } from './reorder
|
|
8
|
+
import { isValidReorder } from './is-valid-reorder';
|
|
9
9
|
import { tableNodeTypes } from './table-node-types';
|
|
10
10
|
function normalizeDirection(targetDirection, options) {
|
|
11
11
|
var _options$direction;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
|
|
2
|
+
import { safeInsert } from '@atlaskit/editor-prosemirror/utils';
|
|
3
|
+
import { TableMap } from '../table-map';
|
|
4
|
+
import { findTable } from './find-table';
|
|
5
|
+
import { getCellsInRow } from './get-cells-in-row';
|
|
6
|
+
import { setCellAttrs } from './set-cell-attrs';
|
|
7
|
+
import { tableNodeTypes } from './table-node-types';
|
|
8
|
+
var filterCellsInRow = function filterCellsInRow(rowIndex, predicate) {
|
|
9
|
+
return function (tr) {
|
|
10
|
+
var foundCells = [];
|
|
11
|
+
var cells = getCellsInRow(rowIndex)(tr.selection);
|
|
12
|
+
if (cells) {
|
|
13
|
+
for (var j = cells.length - 1; j >= 0; j--) {
|
|
14
|
+
if (predicate(cells[j], tr)) {
|
|
15
|
+
foundCells.push(cells[j]);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return foundCells;
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
// Returns a new transaction that adds a new row after `cloneRowIndex`, cloning the row attributes at `cloneRowIndex`.
|
|
24
|
+
export var cloneRowAt = function cloneRowAt(rowIndex) {
|
|
25
|
+
return function (tr) {
|
|
26
|
+
var table = findTable(tr.selection);
|
|
27
|
+
if (table) {
|
|
28
|
+
var map = TableMap.get(table.node);
|
|
29
|
+
if (rowIndex >= 0 && rowIndex <= map.height) {
|
|
30
|
+
var tableNode = table.node;
|
|
31
|
+
var tableNodes = tableNodeTypes(tableNode.type.schema);
|
|
32
|
+
var rowPos = table.start;
|
|
33
|
+
for (var i = 0; i < rowIndex + 1; i++) {
|
|
34
|
+
rowPos += tableNode.child(i).nodeSize;
|
|
35
|
+
}
|
|
36
|
+
var cloneRow = tableNode.child(rowIndex);
|
|
37
|
+
// Re-create the same nodes with same attrs, dropping the node content.
|
|
38
|
+
var cells = [];
|
|
39
|
+
var rowWidth = 0;
|
|
40
|
+
cloneRow.forEach(function (cell) {
|
|
41
|
+
// If we're copying a row with rowspan somewhere, we dont want to copy that cell
|
|
42
|
+
// We'll increment its span below.
|
|
43
|
+
if (cell.attrs.rowspan === 1) {
|
|
44
|
+
rowWidth += cell.attrs.colspan;
|
|
45
|
+
var node = tableNodes[cell.type.spec.tableRole].createAndFill(cell.attrs, [], cell.marks);
|
|
46
|
+
if (node) {
|
|
47
|
+
cells.push(node);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
// If a higher row spans past our clone row, bump the higher row to cover this new row too.
|
|
53
|
+
if (rowWidth < map.width) {
|
|
54
|
+
var rowSpanCells = [];
|
|
55
|
+
var _loop = function _loop(_i) {
|
|
56
|
+
var foundCells = filterCellsInRow(_i, function (cell, _tr) {
|
|
57
|
+
var rowspan = cell.node.attrs.rowspan;
|
|
58
|
+
var spanRange = _i + rowspan;
|
|
59
|
+
return rowspan > 1 && spanRange > rowIndex;
|
|
60
|
+
})(tr);
|
|
61
|
+
rowSpanCells.push.apply(rowSpanCells, _toConsumableArray(foundCells));
|
|
62
|
+
};
|
|
63
|
+
for (var _i = rowIndex; _i >= 0; _i--) {
|
|
64
|
+
_loop(_i);
|
|
65
|
+
}
|
|
66
|
+
if (rowSpanCells.length) {
|
|
67
|
+
rowSpanCells.forEach(function (cell) {
|
|
68
|
+
tr = setCellAttrs(cell, {
|
|
69
|
+
rowspan: cell.node.attrs.rowspan + 1
|
|
70
|
+
})(tr);
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return safeInsert(tableNodes.row.create(cloneRow.attrs, cells), rowPos)(tr);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return tr;
|
|
78
|
+
};
|
|
79
|
+
};
|
|
@@ -4,9 +4,9 @@ import { CellSelection } from '../cell-selection';
|
|
|
4
4
|
import { TableMap } from '../table-map';
|
|
5
5
|
import { determineTableHeaderStateFromTableNode } from './analyse-table';
|
|
6
6
|
import { cloneTr } from './clone-tr';
|
|
7
|
-
import { findTable } from './find';
|
|
7
|
+
import { findTable } from './find-table';
|
|
8
8
|
import { getSelectionRangeInRow } from './get-selection-range-in-row';
|
|
9
|
-
import { isValidReorder } from './reorder
|
|
9
|
+
import { isValidReorder } from './is-valid-reorder';
|
|
10
10
|
import { tableNodeTypes } from './table-node-types';
|
|
11
11
|
function normalizeDirection(targetDirection, options) {
|
|
12
12
|
var _options$direction;
|
|
@@ -1,46 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
3
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
4
|
-
export function removeColSpan(attrs, pos) {
|
|
5
|
-
var n = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
|
|
6
|
-
if (!attrs.colspan) {
|
|
7
|
-
throw new Error('removeColSpan(): attrs.colspan not defined');
|
|
8
|
-
}
|
|
9
|
-
var result = _objectSpread(_objectSpread({}, attrs), {}, {
|
|
10
|
-
colspan: attrs.colspan - n
|
|
11
|
-
});
|
|
12
|
-
if (result.colwidth) {
|
|
13
|
-
result.colwidth = result.colwidth.slice();
|
|
14
|
-
result.colwidth.splice(pos, n);
|
|
15
|
-
if (!result.colwidth.some(function (w) {
|
|
16
|
-
return w > 0;
|
|
17
|
-
})) {
|
|
18
|
-
result.colwidth = undefined;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
return result;
|
|
22
|
-
}
|
|
23
|
-
export function assertColspan(attrs) {
|
|
24
|
-
if (typeof attrs.colspan === 'undefined') {
|
|
25
|
-
throw new Error('addColSpan: attrs.colspan is not defined');
|
|
26
|
-
}
|
|
27
|
-
if (typeof attrs.colspan !== 'number' || Number.isNaN(attrs.colspan) || attrs.colspan < 1) {
|
|
28
|
-
throw new Error("addColSpan: attrs.colspan must be number >= 1, received: ".concat(attrs.colspan));
|
|
29
|
-
}
|
|
30
|
-
}
|
|
1
|
+
/* eslint-disable @repo/internal/deprecations/deprecation-ticket-required -- VOLTC-139 tracks removal of these deprecated re-export shims. */
|
|
31
2
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
}
|
|
3
|
+
/**
|
|
4
|
+
* @deprecated Use `import { removeColSpan } from '@atlaskit/editor-tables/utils'` instead.
|
|
5
|
+
*/
|
|
6
|
+
// eslint-disable-next-line @atlaskit/editor/no-re-export -- Compatibility shim for deprecated API
|
|
7
|
+
export { removeColSpan } from './remove-col-span';
|
|
8
|
+
/**
|
|
9
|
+
* @deprecated Use `import { assertColspan } from '@atlaskit/editor-tables/utils/colspan'` instead.
|
|
10
|
+
*/
|
|
11
|
+
// eslint-disable-next-line @atlaskit/editor/no-re-export -- Compatibility shim for deprecated API
|
|
12
|
+
export { assertColspan } from './assert-colspan';
|
|
13
|
+
/**
|
|
14
|
+
* @deprecated Use `import { addColSpan } from '@atlaskit/editor-tables/utils'` instead.
|
|
15
|
+
*/
|
|
16
|
+
// eslint-disable-next-line @atlaskit/editor/no-re-export -- Compatibility shim for deprecated API
|
|
17
|
+
export { addColSpan } from './add-col-span';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { tableNodeTypes } from './table-node-types';
|
|
2
|
+
export function columnIsHeader(map, table, col) {
|
|
3
|
+
var headerCell = tableNodeTypes(table.type.schema).header_cell;
|
|
4
|
+
for (var row = 0; row < map.height; row++) {
|
|
5
|
+
var cell = table.nodeAt(map.map[col + row * map.width]);
|
|
6
|
+
if (cell && cell.type !== headerCell) {
|
|
7
|
+
return false;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
return true;
|
|
11
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { TableMap } from '../table-map';
|
|
2
|
+
// :: (tableNode: Node, tableArray: Array<Node>) -> Node
|
|
3
|
+
// This function will transform a matrix of nodes
|
|
4
|
+
// into table node respecting merged cells and rows configurations,
|
|
5
|
+
// for example this array will be convert to the table below:
|
|
6
|
+
//
|
|
7
|
+
// ```javascript
|
|
8
|
+
// array = [
|
|
9
|
+
// [A1, B1, C1, null],
|
|
10
|
+
// [A2, B2, null, D1],
|
|
11
|
+
// [A3. B3, C2, null],
|
|
12
|
+
// ]
|
|
13
|
+
// ```
|
|
14
|
+
//
|
|
15
|
+
// ```
|
|
16
|
+
// ____________________________
|
|
17
|
+
// | | | |
|
|
18
|
+
// | A1 | B1 | C1 |
|
|
19
|
+
// |______|______|______ ______|
|
|
20
|
+
// | | | |
|
|
21
|
+
// | A2 | B2 | |
|
|
22
|
+
// |______|______ ______| |
|
|
23
|
+
// | | | | D1 |
|
|
24
|
+
// | A3 | B3 | C2 | |
|
|
25
|
+
// |______|______|______|______|
|
|
26
|
+
// ```
|
|
27
|
+
//
|
|
28
|
+
export var convertArrayOfRowsToTableNode = function convertArrayOfRowsToTableNode(tableNode, arrayOfNodes) {
|
|
29
|
+
var rowsPM = [];
|
|
30
|
+
var map = TableMap.get(tableNode);
|
|
31
|
+
for (var rowIndex = 0; rowIndex < map.height; rowIndex++) {
|
|
32
|
+
var row = tableNode.child(rowIndex);
|
|
33
|
+
var rowCells = [];
|
|
34
|
+
for (var colIndex = 0; colIndex < map.width; colIndex++) {
|
|
35
|
+
if (!arrayOfNodes[rowIndex][colIndex]) {
|
|
36
|
+
continue;
|
|
37
|
+
}
|
|
38
|
+
var cellPos = map.map[rowIndex * map.width + colIndex];
|
|
39
|
+
var cell = arrayOfNodes[rowIndex][colIndex];
|
|
40
|
+
var oldCell = tableNode.nodeAt(cellPos);
|
|
41
|
+
if (!cell || !oldCell) {
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
var newCell = oldCell.type.createChecked(Object.assign({}, cell.attrs), cell.content, cell.marks);
|
|
45
|
+
rowCells.push(newCell);
|
|
46
|
+
}
|
|
47
|
+
rowsPM.push(row.type.createChecked(row.attrs, rowCells, row.marks));
|
|
48
|
+
}
|
|
49
|
+
var newTable = tableNode.type.createChecked(tableNode.attrs, rowsPM, tableNode.marks);
|
|
50
|
+
return newTable;
|
|
51
|
+
};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { TableMap } from '../table-map';
|
|
2
|
+
// :: (tableNode: Node) -> Array<Node>
|
|
3
|
+
// This function will transform the table node
|
|
4
|
+
// into a matrix of rows and columns respecting merged cells,
|
|
5
|
+
// for example this table will be convert to the below:
|
|
6
|
+
//
|
|
7
|
+
// ```
|
|
8
|
+
// ____________________________
|
|
9
|
+
// | | | |
|
|
10
|
+
// | A1 | B1 | C1 |
|
|
11
|
+
// |______|______|______ ______|
|
|
12
|
+
// | | | |
|
|
13
|
+
// | A2 | B2 | |
|
|
14
|
+
// |______|______ ______| |
|
|
15
|
+
// | | | | D1 |
|
|
16
|
+
// | A3 | B3 | C2 | |
|
|
17
|
+
// |______|______|______|______|
|
|
18
|
+
// ```
|
|
19
|
+
//
|
|
20
|
+
//
|
|
21
|
+
// ```javascript
|
|
22
|
+
// array = [
|
|
23
|
+
// [A1, B1, C1, null],
|
|
24
|
+
// [A2, B2, null, D1],
|
|
25
|
+
// [A3. B3, C2, null],
|
|
26
|
+
// ]
|
|
27
|
+
// ```
|
|
28
|
+
export var convertTableNodeToArrayOfRows = function convertTableNodeToArrayOfRows(tableNode) {
|
|
29
|
+
var map = TableMap.get(tableNode);
|
|
30
|
+
var rows = [];
|
|
31
|
+
for (var rowIndex = 0; rowIndex < map.height; rowIndex++) {
|
|
32
|
+
var rowCells = [];
|
|
33
|
+
var seen = {};
|
|
34
|
+
for (var colIndex = 0; colIndex < map.width; colIndex++) {
|
|
35
|
+
var cellPos = map.map[rowIndex * map.width + colIndex];
|
|
36
|
+
var cell = tableNode.nodeAt(cellPos);
|
|
37
|
+
var rect = map.findCell(cellPos);
|
|
38
|
+
if (!cell || seen[cellPos] || rect.top !== rowIndex) {
|
|
39
|
+
rowCells.push(null);
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
seen[cellPos] = true;
|
|
43
|
+
rowCells.push(cell);
|
|
44
|
+
}
|
|
45
|
+
rows.push(rowCells);
|
|
46
|
+
}
|
|
47
|
+
return rows;
|
|
48
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { findParentNodeClosestToPos } from '@atlaskit/editor-prosemirror/utils';
|
|
2
|
+
// Ignored via go/ees005
|
|
3
|
+
// eslint-disable-next-line require-unicode-regexp
|
|
4
|
+
var CELL_ROLE_REGEX = /cell/i;
|
|
5
|
+
|
|
6
|
+
// Iterates over parent nodes, returning a table cell or a table header node closest to a given `$pos`.
|
|
7
|
+
export var findCellClosestToPos = function findCellClosestToPos($pos) {
|
|
8
|
+
var predicate = function predicate(node) {
|
|
9
|
+
return node.type.spec.tableRole && CELL_ROLE_REGEX.test(node.type.spec.tableRole);
|
|
10
|
+
};
|
|
11
|
+
return findParentNodeClosestToPos($pos, predicate);
|
|
12
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { TableMap } from '../table-map';
|
|
2
|
+
import { findCellClosestToPos } from './find-cell-closest-to-pos';
|
|
3
|
+
import { findTableClosestToPos } from './find-table-closest-to-pos';
|
|
4
|
+
|
|
5
|
+
// Returns the rectangle spanning a cell closest to a given `$pos`.
|
|
6
|
+
export var findCellRectClosestToPos = function findCellRectClosestToPos($pos) {
|
|
7
|
+
var cell = findCellClosestToPos($pos);
|
|
8
|
+
if (cell) {
|
|
9
|
+
var table = findTableClosestToPos($pos);
|
|
10
|
+
if (table) {
|
|
11
|
+
var map = TableMap.get(table.node);
|
|
12
|
+
var cellPos = cell.pos - table.start;
|
|
13
|
+
return map.rectBetween(cellPos, cellPos);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { findParentNodeClosestToPos } from '@atlaskit/editor-prosemirror/utils';
|
|
2
|
+
// Iterates over parent nodes, returning a table node closest to a given `$pos`.
|
|
3
|
+
export var findTableClosestToPos = function findTableClosestToPos($pos) {
|
|
4
|
+
var predicate = function predicate(node) {
|
|
5
|
+
return node.type.spec.tableRole && node.type.spec.tableRole === 'table';
|
|
6
|
+
};
|
|
7
|
+
return findParentNodeClosestToPos($pos, predicate);
|
|
8
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { findParentNode } from '@atlaskit/editor-prosemirror/utils';
|
|
2
|
+
// Iterates over parent nodes, returning the closest table node.
|
|
3
|
+
export var findTable = function findTable(selection) {
|
|
4
|
+
return findParentNode(function (node) {
|
|
5
|
+
return node.type.spec.tableRole && node.type.spec.tableRole === 'table';
|
|
6
|
+
})(selection);
|
|
7
|
+
};
|
package/dist/esm/utils/find.js
CHANGED
|
@@ -1,41 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
import { TableMap } from '../table-map';
|
|
3
|
-
// Ignored via go/ees005
|
|
4
|
-
// eslint-disable-next-line require-unicode-regexp
|
|
5
|
-
var CELL_ROLE_REGEX = /cell/i;
|
|
1
|
+
/* eslint-disable @repo/internal/deprecations/deprecation-ticket-required -- VOLTC-139 tracks removal of these deprecated re-export shims. */
|
|
6
2
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
export
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
return findParentNodeClosestToPos($pos, predicate);
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
// Returns the rectangle spanning a cell closest to a given `$pos`.
|
|
31
|
-
export var findCellRectClosestToPos = function findCellRectClosestToPos($pos) {
|
|
32
|
-
var cell = findCellClosestToPos($pos);
|
|
33
|
-
if (cell) {
|
|
34
|
-
var table = findTableClosestToPos($pos);
|
|
35
|
-
if (table) {
|
|
36
|
-
var map = TableMap.get(table.node);
|
|
37
|
-
var cellPos = cell.pos - table.start;
|
|
38
|
-
return map.rectBetween(cellPos, cellPos);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
};
|
|
3
|
+
/**
|
|
4
|
+
* @deprecated Use `import { findTable } from '@atlaskit/editor-tables/utils'` instead.
|
|
5
|
+
*/
|
|
6
|
+
// eslint-disable-next-line @atlaskit/editor/no-re-export -- Compatibility shim for deprecated API
|
|
7
|
+
export { findTable } from './find-table';
|
|
8
|
+
/**
|
|
9
|
+
* @deprecated Use `import { findTableClosestToPos } from '@atlaskit/editor-tables/utils'` instead.
|
|
10
|
+
*/
|
|
11
|
+
// eslint-disable-next-line @atlaskit/editor/no-re-export -- Compatibility shim for deprecated API
|
|
12
|
+
export { findTableClosestToPos } from './find-table-closest-to-pos';
|
|
13
|
+
/**
|
|
14
|
+
* @deprecated Use `import { findCellClosestToPos } from '@atlaskit/editor-tables/utils'` instead.
|
|
15
|
+
*/
|
|
16
|
+
// eslint-disable-next-line @atlaskit/editor/no-re-export -- Compatibility shim for deprecated API
|
|
17
|
+
export { findCellClosestToPos } from './find-cell-closest-to-pos';
|
|
18
|
+
/**
|
|
19
|
+
* @deprecated Use `import { findCellRectClosestToPos } from '@atlaskit/editor-tables/utils'` instead.
|
|
20
|
+
*/
|
|
21
|
+
// eslint-disable-next-line @atlaskit/editor/no-re-export -- Compatibility shim for deprecated API
|
|
22
|
+
export { findCellRectClosestToPos } from './find-cell-rect-closest-to-pos';
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// Utilities used for copy/paste handling.
|
|
2
|
+
//
|
|
3
|
+
// This module handles pasting cell content into tables, or pasting
|
|
4
|
+
// anything into a cell selection, as replacing a block of cells with
|
|
5
|
+
// the content of the selection. When pasting cells into a cell, that
|
|
6
|
+
// involves placing the block of pasted content so that its top left
|
|
7
|
+
// aligns with the selection cell, optionally extending the table to
|
|
8
|
+
// the right or bottom to make sure it is large enough. Pasting into a
|
|
9
|
+
// cell selection is different, here the cells in the selection are
|
|
10
|
+
// clipped to the selection's rectangle, optionally repeating the
|
|
11
|
+
// pasted cells when they are smaller than the selection.
|
|
12
|
+
|
|
13
|
+
import { Transform } from '@atlaskit/editor-prosemirror/transform';
|
|
14
|
+
export function fitSlice(nodeType, slice) {
|
|
15
|
+
var node = nodeType.createAndFill();
|
|
16
|
+
if (!node) {
|
|
17
|
+
throw new Error("fitSlice: unable to create node");
|
|
18
|
+
}
|
|
19
|
+
var tr = new Transform(node).replace(0, node.content.size, slice);
|
|
20
|
+
return tr.doc;
|
|
21
|
+
}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
3
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
4
|
+
import { fixTablesKey } from '../pm-plugins/plugin-key';
|
|
5
|
+
import { TableMap, TableProblemTypes } from '../table-map';
|
|
6
|
+
import { removeColSpan } from './remove-col-span';
|
|
7
|
+
import { tableNodeTypes } from './table-node-types';
|
|
8
|
+
|
|
9
|
+
// : (EditorState, Node, number, ?Transaction) → ?Transaction
|
|
10
|
+
// Fix the given table, if necessary. Will append to the transaction
|
|
11
|
+
// it was given, if non-null, or create a new one if necessary.
|
|
12
|
+
export function fixTable(state, table, tablePos, transaction, reportFixedTable) {
|
|
13
|
+
var tr = transaction;
|
|
14
|
+
var map = TableMap.get(table);
|
|
15
|
+
if (!map.problems) {
|
|
16
|
+
return tr;
|
|
17
|
+
}
|
|
18
|
+
if (!tr) {
|
|
19
|
+
tr = state.tr;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
// Track which rows we must add cells to, so that we can adjust that
|
|
23
|
+
// when fixing collisions.
|
|
24
|
+
var mustAdd = [];
|
|
25
|
+
for (var i = 0; i < map.height; i++) {
|
|
26
|
+
mustAdd.push(0);
|
|
27
|
+
}
|
|
28
|
+
for (var _i = 0; _i < map.problems.length; _i++) {
|
|
29
|
+
var prob = map.problems[_i];
|
|
30
|
+
if (reportFixedTable) {
|
|
31
|
+
reportFixedTable({
|
|
32
|
+
state: state,
|
|
33
|
+
tr: tr,
|
|
34
|
+
reason: prob.type || 'unknown'
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
if (prob.type === TableProblemTypes.COLLISION) {
|
|
38
|
+
var collision = prob;
|
|
39
|
+
var cell = table.nodeAt(prob.pos);
|
|
40
|
+
if (!cell) {
|
|
41
|
+
throw new Error("fixTable: unable to find cell at pos ".concat(prob.pos));
|
|
42
|
+
}
|
|
43
|
+
for (var j = 0; j < cell.attrs.rowspan; j++) {
|
|
44
|
+
mustAdd[collision.row + j] += collision.n;
|
|
45
|
+
}
|
|
46
|
+
tr.setNodeMarkup(tr.mapping.map(tablePos + 1 + prob.pos), undefined, removeColSpan(cell.attrs, cell.attrs.colspan - collision.n, collision.n));
|
|
47
|
+
} else if (prob.type === TableProblemTypes.MISSING) {
|
|
48
|
+
var missing = prob;
|
|
49
|
+
mustAdd[missing.row] += missing.n;
|
|
50
|
+
} else if (prob.type === TableProblemTypes.OVERLONG_ROWSPAN) {
|
|
51
|
+
var overlong = prob;
|
|
52
|
+
var _cell = table.nodeAt(overlong.pos);
|
|
53
|
+
if (!_cell) {
|
|
54
|
+
throw new Error("fixTable: unable to find cell at pos ".concat(prob.pos));
|
|
55
|
+
}
|
|
56
|
+
tr.setNodeMarkup(tr.mapping.map(tablePos + 1 + overlong.pos), undefined, _objectSpread(_objectSpread({}, _cell.attrs), {}, {
|
|
57
|
+
rowspan: _cell.attrs.rowspan - overlong.n
|
|
58
|
+
}));
|
|
59
|
+
} else if (prob.type === TableProblemTypes.COLWIDTH_MISMATCH) {
|
|
60
|
+
var _cell2 = table.nodeAt(prob.pos);
|
|
61
|
+
if (!_cell2) {
|
|
62
|
+
throw new Error("fixTable: unable to find cell at pos ".concat(prob.pos));
|
|
63
|
+
}
|
|
64
|
+
tr.setNodeMarkup(tr.mapping.map(tablePos + 1 + prob.pos), undefined, _objectSpread(_objectSpread({}, _cell2.attrs), {}, {
|
|
65
|
+
colwidth: prob.colwidth
|
|
66
|
+
}));
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
var first;
|
|
70
|
+
var last;
|
|
71
|
+
for (var _i2 = 0; _i2 < mustAdd.length; _i2++) {
|
|
72
|
+
if (mustAdd[_i2]) {
|
|
73
|
+
if (first == null) {
|
|
74
|
+
first = _i2;
|
|
75
|
+
}
|
|
76
|
+
last = _i2;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
// Add the necessary cells, using a heuristic for whether to add the
|
|
80
|
+
// cells at the start or end of the rows (if it looks like a 'bite'
|
|
81
|
+
// was taken out of the table, add cells at the start of the row
|
|
82
|
+
// after the bite. Otherwise add them at the end).
|
|
83
|
+
for (var _i3 = 0, pos = tablePos + 1; _i3 < map.height; _i3++) {
|
|
84
|
+
var row = table.child(_i3);
|
|
85
|
+
var end = pos + row.nodeSize;
|
|
86
|
+
var add = mustAdd[_i3];
|
|
87
|
+
if (add > 0) {
|
|
88
|
+
var tableNodeType = 'cell';
|
|
89
|
+
if (row.firstChild) {
|
|
90
|
+
tableNodeType = row.firstChild.type.spec.tableRole;
|
|
91
|
+
}
|
|
92
|
+
var nodes = [];
|
|
93
|
+
for (var _j = 0; _j < add; _j++) {
|
|
94
|
+
// Ignored via go/ees005
|
|
95
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
96
|
+
nodes.push(tableNodeTypes(state.schema)[tableNodeType].createAndFill());
|
|
97
|
+
}
|
|
98
|
+
var side = (_i3 === 0 || first === _i3 - 1) && last === _i3 ? pos + 1 : end - 1;
|
|
99
|
+
tr.insert(tr.mapping.map(side), nodes);
|
|
100
|
+
}
|
|
101
|
+
pos = end;
|
|
102
|
+
}
|
|
103
|
+
return tr.setMeta(fixTablesKey, {
|
|
104
|
+
fixTables: true
|
|
105
|
+
});
|
|
106
|
+
}
|