@rowsncolumns/spreadsheet-state 28.0.76 → 29.1.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/dist/cjs/api/anchored-objects.d.ts +122 -6
- package/dist/cjs/api/anchored-objects.d.ts.map +1 -1
- package/dist/cjs/api/anchored-objects.js +464 -43
- package/dist/cjs/api/copy-paste.d.ts +8 -2
- package/dist/cjs/api/copy-paste.d.ts.map +1 -1
- package/dist/cjs/api/copy-paste.js +4 -4
- package/dist/cjs/api/filter.d.ts +15 -1
- package/dist/cjs/api/filter.d.ts.map +1 -1
- package/dist/cjs/api/filter.js +32 -2
- package/dist/cjs/api/formula.d.ts +63 -0
- package/dist/cjs/api/formula.d.ts.map +1 -1
- package/dist/cjs/api/formula.js +278 -8
- package/dist/cjs/api/immer-utils.d.ts +11 -1
- package/dist/cjs/api/immer-utils.d.ts.map +1 -1
- package/dist/cjs/api/immer-utils.js +17 -1
- package/dist/cjs/api/insert-cut-cells.d.ts +35 -0
- package/dist/cjs/api/insert-cut-cells.d.ts.map +1 -0
- package/dist/cjs/api/insert-cut-cells.js +60 -0
- package/dist/cjs/api/merges.d.ts +8 -0
- package/dist/cjs/api/merges.d.ts.map +1 -1
- package/dist/cjs/api/merges.js +11 -0
- package/dist/cjs/api/paint-format.d.ts +22 -1
- package/dist/cjs/api/paint-format.d.ts.map +1 -1
- package/dist/cjs/api/paint-format.js +57 -1
- package/dist/cjs/api/sort.d.ts +23 -1
- package/dist/cjs/api/sort.d.ts.map +1 -1
- package/dist/cjs/api/sort.js +52 -6
- package/dist/cjs/api/structural-guards.d.ts +57 -0
- package/dist/cjs/api/structural-guards.d.ts.map +1 -1
- package/dist/cjs/api/structural-guards.js +93 -1
- package/dist/cjs/api/structural-table-refs.d.ts +58 -3
- package/dist/cjs/api/structural-table-refs.d.ts.map +1 -1
- package/dist/cjs/api/structural-table-refs.js +177 -16
- package/dist/cjs/api/subtotal.d.ts +20 -13
- package/dist/cjs/api/subtotal.d.ts.map +1 -1
- package/dist/cjs/api/subtotal.js +26 -19
- package/dist/cjs/api/table.d.ts +26 -2
- package/dist/cjs/api/table.d.ts.map +1 -1
- package/dist/cjs/api/table.js +93 -60
- package/dist/cjs/api/validation.d.ts.map +1 -1
- package/dist/cjs/api/validation.js +53 -8
- package/dist/cjs/atoms/creating-table.atom.d.ts +22 -0
- package/dist/cjs/atoms/creating-table.atom.d.ts.map +1 -0
- package/dist/cjs/atoms/creating-table.atom.js +4 -0
- package/dist/cjs/atoms/dialog-state.atom.d.ts +8 -0
- package/dist/cjs/atoms/dialog-state.atom.d.ts.map +1 -1
- package/dist/cjs/atoms/dialog-state.atom.js +28 -0
- package/dist/cjs/atoms/editing-slicer.atom.d.ts +9 -0
- package/dist/cjs/atoms/editing-slicer.atom.d.ts.map +1 -0
- package/dist/cjs/atoms/editing-slicer.atom.js +6 -0
- package/dist/cjs/atoms/index.d.ts +4 -0
- package/dist/cjs/atoms/index.d.ts.map +1 -1
- package/dist/cjs/atoms/index.js +4 -0
- package/dist/cjs/atoms/inserting-slicer.atom.d.ts +8 -0
- package/dist/cjs/atoms/inserting-slicer.atom.d.ts.map +1 -0
- package/dist/cjs/atoms/inserting-slicer.atom.js +5 -0
- package/dist/cjs/atoms/resizing-table.atom.d.ts +8 -0
- package/dist/cjs/atoms/resizing-table.atom.d.ts.map +1 -0
- package/dist/cjs/atoms/resizing-table.atom.js +5 -0
- package/dist/cjs/commands.d.ts +138 -2
- package/dist/cjs/commands.d.ts.map +1 -1
- package/dist/cjs/components/editors/embed-editor.d.ts +4 -2
- package/dist/cjs/components/editors/embed-editor.d.ts.map +1 -1
- package/dist/cjs/components/editors/embed-editor.js +38 -9
- package/dist/cjs/components/editors/slicer-editor.d.ts +15 -0
- package/dist/cjs/components/editors/slicer-editor.d.ts.map +1 -0
- package/dist/cjs/components/editors/slicer-editor.js +87 -0
- package/dist/cjs/components/editors/table-editor.d.ts +58 -2
- package/dist/cjs/components/editors/table-editor.d.ts.map +1 -1
- package/dist/cjs/components/editors/table-editor.js +261 -20
- package/dist/cjs/components/index.d.ts +1 -0
- package/dist/cjs/components/index.d.ts.map +1 -1
- package/dist/cjs/components/index.js +1 -0
- package/dist/cjs/constants.d.ts +9 -1
- package/dist/cjs/constants.d.ts.map +1 -1
- package/dist/cjs/constants.js +12 -0
- package/dist/cjs/generated-names.d.ts +13 -3
- package/dist/cjs/generated-names.d.ts.map +1 -1
- package/dist/cjs/generated-names.js +3 -1
- package/dist/cjs/helpers.d.ts +5 -0
- package/dist/cjs/helpers.d.ts.map +1 -1
- package/dist/cjs/helpers.js +10 -1
- package/dist/cjs/hooks/use-on-change-batch.d.ts +19 -2
- package/dist/cjs/hooks/use-on-change-batch.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-change-batch.js +43 -35
- package/dist/cjs/hooks/use-on-change-calculated-column.d.ts +10 -1
- package/dist/cjs/hooks/use-on-change-calculated-column.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-change-calculated-column.js +17 -5
- package/dist/cjs/hooks/use-on-change-table-column.d.ts +6 -1
- package/dist/cjs/hooks/use-on-change-table-column.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-change-table-column.js +17 -5
- package/dist/cjs/hooks/use-on-change.d.ts +36 -3
- package/dist/cjs/hooks/use-on-change.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-change.js +218 -136
- package/dist/cjs/hooks/use-on-copy.d.ts +1 -1
- package/dist/cjs/hooks/use-on-copy.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-copy.js +2 -3
- package/dist/cjs/hooks/use-on-create-custom-table-style.d.ts +17 -0
- package/dist/cjs/hooks/use-on-create-custom-table-style.d.ts.map +1 -0
- package/dist/cjs/hooks/use-on-create-custom-table-style.js +28 -0
- package/dist/cjs/hooks/use-on-create-named-range.d.ts +4 -2
- package/dist/cjs/hooks/use-on-create-named-range.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-create-named-range.js +11 -1
- package/dist/cjs/hooks/use-on-delete-cells-shift-left.d.ts +2 -1
- package/dist/cjs/hooks/use-on-delete-cells-shift-left.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-delete-cells-shift-left.js +3 -1
- package/dist/cjs/hooks/use-on-delete-cells-shift-up.d.ts +2 -1
- package/dist/cjs/hooks/use-on-delete-cells-shift-up.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-delete-cells-shift-up.js +3 -1
- package/dist/cjs/hooks/use-on-delete-column.d.ts +2 -1
- package/dist/cjs/hooks/use-on-delete-column.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-delete-column.js +3 -1
- package/dist/cjs/hooks/use-on-delete-row.d.ts +2 -1
- package/dist/cjs/hooks/use-on-delete-row.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-delete-row.js +3 -1
- package/dist/cjs/hooks/use-on-delete-sheet.d.ts +9 -1
- package/dist/cjs/hooks/use-on-delete-sheet.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-delete-sheet.js +17 -1
- package/dist/cjs/hooks/use-on-delete-table-row.d.ts +4 -1
- package/dist/cjs/hooks/use-on-delete-table-row.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-delete-table-row.js +19 -1
- package/dist/cjs/hooks/use-on-delete.d.ts +5 -2
- package/dist/cjs/hooks/use-on-delete.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-delete.js +5 -1
- package/dist/cjs/hooks/use-on-embeds.d.ts +7 -4
- package/dist/cjs/hooks/use-on-embeds.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-embeds.js +26 -24
- package/dist/cjs/hooks/use-on-fill.d.ts +17 -2
- package/dist/cjs/hooks/use-on-fill.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-fill.js +29 -15
- package/dist/cjs/hooks/use-on-filter-table.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-filter-table.js +209 -103
- package/dist/cjs/hooks/use-on-import-excel.d.ts +2 -1
- package/dist/cjs/hooks/use-on-import-excel.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-import-excel.js +22 -19
- package/dist/cjs/hooks/use-on-insert-cells-shift-down.d.ts +2 -1
- package/dist/cjs/hooks/use-on-insert-cells-shift-down.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-insert-cells-shift-down.js +3 -1
- package/dist/cjs/hooks/use-on-insert-cells-shift-right.d.ts +2 -1
- package/dist/cjs/hooks/use-on-insert-cells-shift-right.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-insert-cells-shift-right.js +3 -1
- package/dist/cjs/hooks/use-on-insert-column.d.ts +2 -1
- package/dist/cjs/hooks/use-on-insert-column.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-insert-column.js +3 -1
- package/dist/cjs/hooks/use-on-insert-row.d.ts +2 -1
- package/dist/cjs/hooks/use-on-insert-row.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-insert-row.js +3 -1
- package/dist/cjs/hooks/use-on-insert-table-row.d.ts +5 -2
- package/dist/cjs/hooks/use-on-insert-table-row.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-insert-table-row.js +19 -1
- package/dist/cjs/hooks/use-on-merge-unmerge-cells.d.ts +3 -2
- package/dist/cjs/hooks/use-on-merge-unmerge-cells.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-merge-unmerge-cells.js +14 -1
- package/dist/cjs/hooks/use-on-move-columns.d.ts +4 -1
- package/dist/cjs/hooks/use-on-move-columns.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-move-columns.js +28 -6
- package/dist/cjs/hooks/use-on-move-rows.d.ts +18 -1
- package/dist/cjs/hooks/use-on-move-rows.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-move-rows.js +44 -6
- package/dist/cjs/hooks/use-on-move-selection.d.ts +9 -2
- package/dist/cjs/hooks/use-on-move-selection.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-move-selection.js +101 -25
- package/dist/cjs/hooks/use-on-paste.d.ts +33 -2
- package/dist/cjs/hooks/use-on-paste.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-paste.js +1005 -740
- package/dist/cjs/hooks/use-on-remove-duplicates.d.ts +5 -2
- package/dist/cjs/hooks/use-on-remove-duplicates.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-remove-duplicates.js +5 -1
- package/dist/cjs/hooks/use-on-request-create-table.d.ts +13 -0
- package/dist/cjs/hooks/use-on-request-create-table.d.ts.map +1 -0
- package/dist/cjs/hooks/use-on-request-create-table.js +44 -0
- package/dist/cjs/hooks/use-on-request-insert-slicer.d.ts +7 -0
- package/dist/cjs/hooks/use-on-request-insert-slicer.d.ts.map +1 -0
- package/dist/cjs/hooks/use-on-request-insert-slicer.js +15 -0
- package/dist/cjs/hooks/use-on-request-resize-table.d.ts +7 -0
- package/dist/cjs/hooks/use-on-request-resize-table.d.ts.map +1 -0
- package/dist/cjs/hooks/use-on-request-resize-table.js +15 -0
- package/dist/cjs/hooks/use-on-resize-table.d.ts +5 -1
- package/dist/cjs/hooks/use-on-resize-table.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-resize-table.js +110 -33
- package/dist/cjs/hooks/use-on-sort-column.d.ts +28 -3
- package/dist/cjs/hooks/use-on-sort-column.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-sort-column.js +136 -90
- package/dist/cjs/hooks/use-on-sort-range.d.ts +26 -3
- package/dist/cjs/hooks/use-on-sort-range.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-sort-range.js +113 -67
- package/dist/cjs/hooks/use-on-sort-table.d.ts +18 -1
- package/dist/cjs/hooks/use-on-sort-table.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-sort-table.js +128 -98
- package/dist/cjs/hooks/use-on-subtotal.d.ts +10 -3
- package/dist/cjs/hooks/use-on-subtotal.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-subtotal.js +13 -9
- package/dist/cjs/hooks/use-on-table.d.ts +39 -7
- package/dist/cjs/hooks/use-on-table.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-table.js +257 -49
- package/dist/cjs/hooks/use-on-undo-calculated-column.d.ts +23 -0
- package/dist/cjs/hooks/use-on-undo-calculated-column.d.ts.map +1 -0
- package/dist/cjs/hooks/use-on-undo-calculated-column.js +70 -0
- package/dist/cjs/hooks/use-on-undo-table-auto-expansion.d.ts +28 -0
- package/dist/cjs/hooks/use-on-undo-table-auto-expansion.d.ts.map +1 -0
- package/dist/cjs/hooks/use-on-undo-table-auto-expansion.js +96 -0
- package/dist/cjs/hooks/use-on-update-named-range.d.ts +4 -2
- package/dist/cjs/hooks/use-on-update-named-range.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-update-named-range.js +13 -1
- package/dist/cjs/hooks/use-sheet-properties.d.ts +1 -0
- package/dist/cjs/hooks/use-sheet-properties.d.ts.map +1 -1
- package/dist/cjs/hooks/use-sheet-properties.js +54 -34
- package/dist/cjs/hooks/use-slicers.d.ts +2 -2
- package/dist/cjs/hooks/use-slicers.d.ts.map +1 -1
- package/dist/cjs/hooks/use-slicers.js +17 -26
- package/dist/cjs/hooks/use-sparkline-groups.d.ts +50 -0
- package/dist/cjs/hooks/use-sparkline-groups.d.ts.map +1 -0
- package/dist/cjs/hooks/use-sparkline-groups.js +192 -0
- package/dist/cjs/hooks/use-spreadsheet-state.d.ts +69 -12
- package/dist/cjs/hooks/use-spreadsheet-state.d.ts.map +1 -1
- package/dist/cjs/hooks/use-spreadsheet-state.js +383 -84
- package/dist/cjs/hooks/use-structured-reference.d.ts.map +1 -1
- package/dist/cjs/hooks/use-structured-reference.js +17 -0
- package/dist/cjs/hooks/use-undo-redo-actions.d.ts +2 -1
- package/dist/cjs/hooks/use-undo-redo-actions.d.ts.map +1 -1
- package/dist/cjs/hooks/use-undo-redo-actions.js +10 -2
- package/dist/cjs/hooks/use-undo-redo.d.ts +12 -0
- package/dist/cjs/hooks/use-undo-redo.d.ts.map +1 -1
- package/dist/cjs/hooks/use-undo-redo.js +169 -10
- package/dist/cjs/hooks/utils/sort-rows.d.ts.map +1 -1
- package/dist/cjs/hooks/utils/sort-rows.js +4 -3
- package/dist/cjs/index.d.ts +8 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +9 -0
- package/dist/cjs/interface/apply-fill.d.ts +26 -3
- package/dist/cjs/interface/apply-fill.d.ts.map +1 -1
- package/dist/cjs/interface/apply-fill.js +207 -98
- package/dist/cjs/interface/change-batch.d.ts +1 -1
- package/dist/cjs/interface/change-batch.d.ts.map +1 -1
- package/dist/cjs/interface/change-batch.js +112 -15
- package/dist/cjs/interface/change-calculated-column.d.ts +6 -2
- package/dist/cjs/interface/change-calculated-column.d.ts.map +1 -1
- package/dist/cjs/interface/change-calculated-column.js +87 -17
- package/dist/cjs/interface/change-table-column.d.ts +81 -7
- package/dist/cjs/interface/change-table-column.d.ts.map +1 -1
- package/dist/cjs/interface/change-table-column.js +336 -76
- package/dist/cjs/interface/create-table.d.ts +15 -3
- package/dist/cjs/interface/create-table.d.ts.map +1 -1
- package/dist/cjs/interface/create-table.js +100 -25
- package/dist/cjs/interface/delete-cells-shift-left.d.ts +1 -1
- package/dist/cjs/interface/delete-cells-shift-left.d.ts.map +1 -1
- package/dist/cjs/interface/delete-cells-shift-left.js +10 -1
- package/dist/cjs/interface/delete-cells-shift-up.d.ts +1 -1
- package/dist/cjs/interface/delete-cells-shift-up.d.ts.map +1 -1
- package/dist/cjs/interface/delete-cells-shift-up.js +10 -1
- package/dist/cjs/interface/delete-cells.d.ts +1 -1
- package/dist/cjs/interface/delete-cells.d.ts.map +1 -1
- package/dist/cjs/interface/delete-cells.js +81 -25
- package/dist/cjs/interface/delete-column.d.ts +1 -1
- package/dist/cjs/interface/delete-column.d.ts.map +1 -1
- package/dist/cjs/interface/delete-column.js +29 -22
- package/dist/cjs/interface/delete-row.d.ts +1 -1
- package/dist/cjs/interface/delete-row.d.ts.map +1 -1
- package/dist/cjs/interface/delete-row.js +244 -39
- package/dist/cjs/interface/delete-sheet.d.ts +2 -2
- package/dist/cjs/interface/delete-sheet.d.ts.map +1 -1
- package/dist/cjs/interface/delete-sheet.js +118 -1
- package/dist/cjs/interface/delete-table-column.d.ts +1 -1
- package/dist/cjs/interface/delete-table-column.d.ts.map +1 -1
- package/dist/cjs/interface/delete-table-column.js +11 -1
- package/dist/cjs/interface/delete-table-row.d.ts +1 -1
- package/dist/cjs/interface/delete-table-row.d.ts.map +1 -1
- package/dist/cjs/interface/delete-table-row.js +361 -275
- package/dist/cjs/interface/duplicate-sheet.d.ts.map +1 -1
- package/dist/cjs/interface/duplicate-sheet.js +83 -31
- package/dist/cjs/interface/embeds.d.ts +10 -1
- package/dist/cjs/interface/embeds.d.ts.map +1 -1
- package/dist/cjs/interface/embeds.js +120 -6
- package/dist/cjs/interface/insert-cells-shift-down.d.ts +1 -1
- package/dist/cjs/interface/insert-cells-shift-down.d.ts.map +1 -1
- package/dist/cjs/interface/insert-cells-shift-down.js +10 -1
- package/dist/cjs/interface/insert-cells-shift-right.d.ts +1 -1
- package/dist/cjs/interface/insert-cells-shift-right.d.ts.map +1 -1
- package/dist/cjs/interface/insert-cells-shift-right.js +10 -1
- package/dist/cjs/interface/insert-column.d.ts +2 -2
- package/dist/cjs/interface/insert-column.d.ts.map +1 -1
- package/dist/cjs/interface/insert-column.js +101 -56
- package/dist/cjs/interface/insert-row.d.ts +1 -1
- package/dist/cjs/interface/insert-row.d.ts.map +1 -1
- package/dist/cjs/interface/insert-row.js +25 -7
- package/dist/cjs/interface/insert-table-row.d.ts +2 -1
- package/dist/cjs/interface/insert-table-row.d.ts.map +1 -1
- package/dist/cjs/interface/insert-table-row.js +70 -19
- package/dist/cjs/interface/remove-duplicates.d.ts +1 -1
- package/dist/cjs/interface/remove-duplicates.d.ts.map +1 -1
- package/dist/cjs/interface/remove-duplicates.js +46 -6
- package/dist/cjs/interface/remove-table.d.ts +1 -1
- package/dist/cjs/interface/remove-table.d.ts.map +1 -1
- package/dist/cjs/interface/remove-table.js +72 -16
- package/dist/cjs/interface/slicers.d.ts +12 -1
- package/dist/cjs/interface/slicers.d.ts.map +1 -1
- package/dist/cjs/interface/slicers.js +47 -2
- package/dist/cjs/interface/spreadsheet-interface.d.ts +1 -1
- package/dist/cjs/interface/spreadsheet-interface.d.ts.map +1 -1
- package/dist/cjs/interface/spreadsheet-interface.js +64 -1
- package/dist/cjs/interface/table-totalrow.d.ts +13 -1
- package/dist/cjs/interface/table-totalrow.d.ts.map +1 -1
- package/dist/cjs/interface/table-totalrow.js +107 -73
- package/dist/cjs/interface/table-utils.d.ts +59 -6
- package/dist/cjs/interface/table-utils.d.ts.map +1 -1
- package/dist/cjs/interface/table-utils.js +211 -15
- package/dist/cjs/interface/update-table.d.ts +16 -1
- package/dist/cjs/interface/update-table.d.ts.map +1 -1
- package/dist/cjs/interface/update-table.js +190 -44
- package/dist/cjs/sheet-cell.d.ts.map +1 -1
- package/dist/cjs/test-setup.d.ts.map +1 -1
- package/dist/cjs/test-setup.js +6 -0
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/cjs/validation-schema/table.schema.d.ts +11 -0
- package/dist/cjs/validation-schema/table.schema.d.ts.map +1 -1
- package/dist/cjs/validation-schema/table.schema.js +20 -3
- package/dist/esm/api/anchored-objects.d.ts +122 -6
- package/dist/esm/api/anchored-objects.d.ts.map +1 -1
- package/dist/esm/api/anchored-objects.js +375 -15
- package/dist/esm/api/copy-paste.d.ts +8 -2
- package/dist/esm/api/copy-paste.d.ts.map +1 -1
- package/dist/esm/api/copy-paste.js +4 -4
- package/dist/esm/api/filter.d.ts +15 -1
- package/dist/esm/api/filter.d.ts.map +1 -1
- package/dist/esm/api/filter.js +28 -0
- package/dist/esm/api/formula.d.ts +63 -0
- package/dist/esm/api/formula.d.ts.map +1 -1
- package/dist/esm/api/formula.js +235 -8
- package/dist/esm/api/immer-utils.d.ts +11 -1
- package/dist/esm/api/immer-utils.d.ts.map +1 -1
- package/dist/esm/api/immer-utils.js +16 -0
- package/dist/esm/api/insert-cut-cells.d.ts +35 -0
- package/dist/esm/api/insert-cut-cells.d.ts.map +1 -0
- package/dist/esm/api/insert-cut-cells.js +67 -0
- package/dist/esm/api/merges.d.ts +8 -0
- package/dist/esm/api/merges.d.ts.map +1 -1
- package/dist/esm/api/merges.js +9 -0
- package/dist/esm/api/paint-format.d.ts +22 -1
- package/dist/esm/api/paint-format.d.ts.map +1 -1
- package/dist/esm/api/paint-format.js +44 -1
- package/dist/esm/api/sort.d.ts +23 -1
- package/dist/esm/api/sort.d.ts.map +1 -1
- package/dist/esm/api/sort.js +45 -6
- package/dist/esm/api/structural-guards.d.ts +57 -0
- package/dist/esm/api/structural-guards.d.ts.map +1 -1
- package/dist/esm/api/structural-guards.js +85 -0
- package/dist/esm/api/structural-table-refs.d.ts +58 -3
- package/dist/esm/api/structural-table-refs.d.ts.map +1 -1
- package/dist/esm/api/structural-table-refs.js +126 -6
- package/dist/esm/api/subtotal.d.ts +20 -13
- package/dist/esm/api/subtotal.d.ts.map +1 -1
- package/dist/esm/api/subtotal.js +15 -8
- package/dist/esm/api/table.d.ts +26 -2
- package/dist/esm/api/table.d.ts.map +1 -1
- package/dist/esm/api/table.js +70 -48
- package/dist/esm/api/validation.d.ts.map +1 -1
- package/dist/esm/api/validation.js +53 -8
- package/dist/esm/atoms/creating-table.atom.d.ts +22 -0
- package/dist/esm/atoms/creating-table.atom.d.ts.map +1 -0
- package/dist/esm/atoms/creating-table.atom.js +4 -0
- package/dist/esm/atoms/dialog-state.atom.d.ts +8 -0
- package/dist/esm/atoms/dialog-state.atom.d.ts.map +1 -1
- package/dist/esm/atoms/dialog-state.atom.js +12 -0
- package/dist/esm/atoms/editing-slicer.atom.d.ts +9 -0
- package/dist/esm/atoms/editing-slicer.atom.d.ts.map +1 -0
- package/dist/esm/atoms/editing-slicer.atom.js +6 -0
- package/dist/esm/atoms/index.d.ts +4 -0
- package/dist/esm/atoms/index.d.ts.map +1 -1
- package/dist/esm/atoms/index.js +4 -0
- package/dist/esm/atoms/inserting-slicer.atom.d.ts +8 -0
- package/dist/esm/atoms/inserting-slicer.atom.d.ts.map +1 -0
- package/dist/esm/atoms/inserting-slicer.atom.js +5 -0
- package/dist/esm/atoms/resizing-table.atom.d.ts +8 -0
- package/dist/esm/atoms/resizing-table.atom.d.ts.map +1 -0
- package/dist/esm/atoms/resizing-table.atom.js +5 -0
- package/dist/esm/commands.d.ts +138 -2
- package/dist/esm/commands.d.ts.map +1 -1
- package/dist/esm/components/editors/embed-editor.d.ts +4 -2
- package/dist/esm/components/editors/embed-editor.d.ts.map +1 -1
- package/dist/esm/components/editors/embed-editor.js +40 -6
- package/dist/esm/components/editors/slicer-editor.d.ts +15 -0
- package/dist/esm/components/editors/slicer-editor.d.ts.map +1 -0
- package/dist/esm/components/editors/slicer-editor.js +85 -0
- package/dist/esm/components/editors/table-editor.d.ts +58 -2
- package/dist/esm/components/editors/table-editor.d.ts.map +1 -1
- package/dist/esm/components/editors/table-editor.js +243 -19
- package/dist/esm/components/index.d.ts +1 -0
- package/dist/esm/components/index.d.ts.map +1 -1
- package/dist/esm/components/index.js +1 -0
- package/dist/esm/constants.d.ts +9 -1
- package/dist/esm/constants.d.ts.map +1 -1
- package/dist/esm/constants.js +12 -0
- package/dist/esm/generated-names.d.ts +13 -3
- package/dist/esm/generated-names.d.ts.map +1 -1
- package/dist/esm/generated-names.js +3 -1
- package/dist/esm/helpers.d.ts +5 -0
- package/dist/esm/helpers.d.ts.map +1 -1
- package/dist/esm/helpers.js +7 -1
- package/dist/esm/hooks/use-on-change-batch.d.ts +19 -2
- package/dist/esm/hooks/use-on-change-batch.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-change-batch.js +19 -3
- package/dist/esm/hooks/use-on-change-calculated-column.d.ts +10 -1
- package/dist/esm/hooks/use-on-change-calculated-column.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-change-calculated-column.js +17 -5
- package/dist/esm/hooks/use-on-change-table-column.d.ts +6 -1
- package/dist/esm/hooks/use-on-change-table-column.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-change-table-column.js +17 -5
- package/dist/esm/hooks/use-on-change.d.ts +36 -3
- package/dist/esm/hooks/use-on-change.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-change.js +214 -124
- package/dist/esm/hooks/use-on-copy.d.ts +1 -1
- package/dist/esm/hooks/use-on-copy.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-copy.js +2 -3
- package/dist/esm/hooks/use-on-create-custom-table-style.d.ts +17 -0
- package/dist/esm/hooks/use-on-create-custom-table-style.d.ts.map +1 -0
- package/dist/esm/hooks/use-on-create-custom-table-style.js +26 -0
- package/dist/esm/hooks/use-on-create-named-range.d.ts +4 -2
- package/dist/esm/hooks/use-on-create-named-range.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-create-named-range.js +11 -1
- package/dist/esm/hooks/use-on-delete-cells-shift-left.d.ts +2 -1
- package/dist/esm/hooks/use-on-delete-cells-shift-left.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-delete-cells-shift-left.js +3 -1
- package/dist/esm/hooks/use-on-delete-cells-shift-up.d.ts +2 -1
- package/dist/esm/hooks/use-on-delete-cells-shift-up.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-delete-cells-shift-up.js +3 -1
- package/dist/esm/hooks/use-on-delete-column.d.ts +2 -1
- package/dist/esm/hooks/use-on-delete-column.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-delete-column.js +3 -1
- package/dist/esm/hooks/use-on-delete-row.d.ts +2 -1
- package/dist/esm/hooks/use-on-delete-row.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-delete-row.js +3 -1
- package/dist/esm/hooks/use-on-delete-sheet.d.ts +9 -1
- package/dist/esm/hooks/use-on-delete-sheet.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-delete-sheet.js +17 -1
- package/dist/esm/hooks/use-on-delete-table-row.d.ts +4 -1
- package/dist/esm/hooks/use-on-delete-table-row.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-delete-table-row.js +19 -1
- package/dist/esm/hooks/use-on-delete.d.ts +5 -2
- package/dist/esm/hooks/use-on-delete.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-delete.js +5 -1
- package/dist/esm/hooks/use-on-embeds.d.ts +7 -4
- package/dist/esm/hooks/use-on-embeds.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-embeds.js +23 -6
- package/dist/esm/hooks/use-on-fill.d.ts +17 -2
- package/dist/esm/hooks/use-on-fill.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-fill.js +27 -1
- package/dist/esm/hooks/use-on-filter-table.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-filter-table.js +97 -26
- package/dist/esm/hooks/use-on-import-excel.d.ts +2 -1
- package/dist/esm/hooks/use-on-import-excel.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-import-excel.js +4 -1
- package/dist/esm/hooks/use-on-insert-cells-shift-down.d.ts +2 -1
- package/dist/esm/hooks/use-on-insert-cells-shift-down.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-insert-cells-shift-down.js +3 -1
- package/dist/esm/hooks/use-on-insert-cells-shift-right.d.ts +2 -1
- package/dist/esm/hooks/use-on-insert-cells-shift-right.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-insert-cells-shift-right.js +3 -1
- package/dist/esm/hooks/use-on-insert-column.d.ts +2 -1
- package/dist/esm/hooks/use-on-insert-column.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-insert-column.js +3 -1
- package/dist/esm/hooks/use-on-insert-row.d.ts +2 -1
- package/dist/esm/hooks/use-on-insert-row.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-insert-row.js +3 -1
- package/dist/esm/hooks/use-on-insert-table-row.d.ts +5 -2
- package/dist/esm/hooks/use-on-insert-table-row.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-insert-table-row.js +19 -1
- package/dist/esm/hooks/use-on-merge-unmerge-cells.d.ts +3 -2
- package/dist/esm/hooks/use-on-merge-unmerge-cells.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-merge-unmerge-cells.js +12 -1
- package/dist/esm/hooks/use-on-move-columns.d.ts +4 -1
- package/dist/esm/hooks/use-on-move-columns.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-move-columns.js +28 -6
- package/dist/esm/hooks/use-on-move-rows.d.ts +18 -1
- package/dist/esm/hooks/use-on-move-rows.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-move-rows.js +44 -6
- package/dist/esm/hooks/use-on-move-selection.d.ts +9 -2
- package/dist/esm/hooks/use-on-move-selection.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-move-selection.js +57 -1
- package/dist/esm/hooks/use-on-paste.d.ts +33 -2
- package/dist/esm/hooks/use-on-paste.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-paste.js +825 -643
- package/dist/esm/hooks/use-on-remove-duplicates.d.ts +5 -2
- package/dist/esm/hooks/use-on-remove-duplicates.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-remove-duplicates.js +5 -1
- package/dist/esm/hooks/use-on-request-create-table.d.ts +13 -0
- package/dist/esm/hooks/use-on-request-create-table.d.ts.map +1 -0
- package/dist/esm/hooks/use-on-request-create-table.js +43 -0
- package/dist/esm/hooks/use-on-request-insert-slicer.d.ts +7 -0
- package/dist/esm/hooks/use-on-request-insert-slicer.d.ts.map +1 -0
- package/dist/esm/hooks/use-on-request-insert-slicer.js +15 -0
- package/dist/esm/hooks/use-on-request-resize-table.d.ts +7 -0
- package/dist/esm/hooks/use-on-request-resize-table.d.ts.map +1 -0
- package/dist/esm/hooks/use-on-request-resize-table.js +15 -0
- package/dist/esm/hooks/use-on-resize-table.d.ts +5 -1
- package/dist/esm/hooks/use-on-resize-table.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-resize-table.js +107 -27
- package/dist/esm/hooks/use-on-sort-column.d.ts +28 -3
- package/dist/esm/hooks/use-on-sort-column.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-sort-column.js +105 -68
- package/dist/esm/hooks/use-on-sort-range.d.ts +26 -3
- package/dist/esm/hooks/use-on-sort-range.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-sort-range.js +100 -64
- package/dist/esm/hooks/use-on-sort-table.d.ts +18 -1
- package/dist/esm/hooks/use-on-sort-table.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-sort-table.js +107 -86
- package/dist/esm/hooks/use-on-subtotal.d.ts +10 -3
- package/dist/esm/hooks/use-on-subtotal.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-subtotal.js +7 -5
- package/dist/esm/hooks/use-on-table.d.ts +39 -7
- package/dist/esm/hooks/use-on-table.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-table.js +234 -26
- package/dist/esm/hooks/use-on-undo-calculated-column.d.ts +23 -0
- package/dist/esm/hooks/use-on-undo-calculated-column.d.ts.map +1 -0
- package/dist/esm/hooks/use-on-undo-calculated-column.js +62 -0
- package/dist/esm/hooks/use-on-undo-table-auto-expansion.d.ts +28 -0
- package/dist/esm/hooks/use-on-undo-table-auto-expansion.d.ts.map +1 -0
- package/dist/esm/hooks/use-on-undo-table-auto-expansion.js +75 -0
- package/dist/esm/hooks/use-on-update-named-range.d.ts +4 -2
- package/dist/esm/hooks/use-on-update-named-range.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-update-named-range.js +13 -1
- package/dist/esm/hooks/use-sheet-properties.d.ts +1 -0
- package/dist/esm/hooks/use-sheet-properties.d.ts.map +1 -1
- package/dist/esm/hooks/use-sheet-properties.js +38 -19
- package/dist/esm/hooks/use-slicers.d.ts +2 -2
- package/dist/esm/hooks/use-slicers.d.ts.map +1 -1
- package/dist/esm/hooks/use-slicers.js +16 -8
- package/dist/esm/hooks/use-sparkline-groups.d.ts +50 -0
- package/dist/esm/hooks/use-sparkline-groups.d.ts.map +1 -0
- package/dist/esm/hooks/use-sparkline-groups.js +146 -0
- package/dist/esm/hooks/use-spreadsheet-state.d.ts +69 -12
- package/dist/esm/hooks/use-spreadsheet-state.d.ts.map +1 -1
- package/dist/esm/hooks/use-spreadsheet-state.js +321 -14
- package/dist/esm/hooks/use-structured-reference.d.ts.map +1 -1
- package/dist/esm/hooks/use-structured-reference.js +17 -0
- package/dist/esm/hooks/use-undo-redo-actions.d.ts +2 -1
- package/dist/esm/hooks/use-undo-redo-actions.d.ts.map +1 -1
- package/dist/esm/hooks/use-undo-redo-actions.js +8 -2
- package/dist/esm/hooks/use-undo-redo.d.ts +12 -0
- package/dist/esm/hooks/use-undo-redo.d.ts.map +1 -1
- package/dist/esm/hooks/use-undo-redo.js +158 -7
- package/dist/esm/hooks/utils/sort-rows.d.ts.map +1 -1
- package/dist/esm/hooks/utils/sort-rows.js +4 -3
- package/dist/esm/index.d.ts +8 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +9 -0
- package/dist/esm/interface/apply-fill.d.ts +26 -3
- package/dist/esm/interface/apply-fill.d.ts.map +1 -1
- package/dist/esm/interface/apply-fill.js +188 -88
- package/dist/esm/interface/change-batch.d.ts +1 -1
- package/dist/esm/interface/change-batch.d.ts.map +1 -1
- package/dist/esm/interface/change-batch.js +89 -8
- package/dist/esm/interface/change-calculated-column.d.ts +6 -2
- package/dist/esm/interface/change-calculated-column.d.ts.map +1 -1
- package/dist/esm/interface/change-calculated-column.js +81 -16
- package/dist/esm/interface/change-table-column.d.ts +81 -7
- package/dist/esm/interface/change-table-column.d.ts.map +1 -1
- package/dist/esm/interface/change-table-column.js +295 -67
- package/dist/esm/interface/create-table.d.ts +15 -3
- package/dist/esm/interface/create-table.d.ts.map +1 -1
- package/dist/esm/interface/create-table.js +103 -27
- package/dist/esm/interface/delete-cells-shift-left.d.ts +1 -1
- package/dist/esm/interface/delete-cells-shift-left.d.ts.map +1 -1
- package/dist/esm/interface/delete-cells-shift-left.js +10 -1
- package/dist/esm/interface/delete-cells-shift-up.d.ts +1 -1
- package/dist/esm/interface/delete-cells-shift-up.d.ts.map +1 -1
- package/dist/esm/interface/delete-cells-shift-up.js +10 -1
- package/dist/esm/interface/delete-cells.d.ts +1 -1
- package/dist/esm/interface/delete-cells.d.ts.map +1 -1
- package/dist/esm/interface/delete-cells.js +47 -14
- package/dist/esm/interface/delete-column.d.ts +1 -1
- package/dist/esm/interface/delete-column.d.ts.map +1 -1
- package/dist/esm/interface/delete-column.js +26 -30
- package/dist/esm/interface/delete-row.d.ts +1 -1
- package/dist/esm/interface/delete-row.d.ts.map +1 -1
- package/dist/esm/interface/delete-row.js +191 -44
- package/dist/esm/interface/delete-sheet.d.ts +2 -2
- package/dist/esm/interface/delete-sheet.d.ts.map +1 -1
- package/dist/esm/interface/delete-sheet.js +113 -1
- package/dist/esm/interface/delete-table-column.d.ts +1 -1
- package/dist/esm/interface/delete-table-column.d.ts.map +1 -1
- package/dist/esm/interface/delete-table-column.js +11 -1
- package/dist/esm/interface/delete-table-row.d.ts +1 -1
- package/dist/esm/interface/delete-table-row.d.ts.map +1 -1
- package/dist/esm/interface/delete-table-row.js +312 -232
- package/dist/esm/interface/duplicate-sheet.d.ts.map +1 -1
- package/dist/esm/interface/duplicate-sheet.js +73 -26
- package/dist/esm/interface/embeds.d.ts +10 -1
- package/dist/esm/interface/embeds.d.ts.map +1 -1
- package/dist/esm/interface/embeds.js +84 -5
- package/dist/esm/interface/insert-cells-shift-down.d.ts +1 -1
- package/dist/esm/interface/insert-cells-shift-down.d.ts.map +1 -1
- package/dist/esm/interface/insert-cells-shift-down.js +10 -1
- package/dist/esm/interface/insert-cells-shift-right.d.ts +1 -1
- package/dist/esm/interface/insert-cells-shift-right.d.ts.map +1 -1
- package/dist/esm/interface/insert-cells-shift-right.js +10 -1
- package/dist/esm/interface/insert-column.d.ts +2 -2
- package/dist/esm/interface/insert-column.d.ts.map +1 -1
- package/dist/esm/interface/insert-column.js +70 -33
- package/dist/esm/interface/insert-row.d.ts +1 -1
- package/dist/esm/interface/insert-row.d.ts.map +1 -1
- package/dist/esm/interface/insert-row.js +22 -6
- package/dist/esm/interface/insert-table-row.d.ts +2 -1
- package/dist/esm/interface/insert-table-row.d.ts.map +1 -1
- package/dist/esm/interface/insert-table-row.js +67 -12
- package/dist/esm/interface/remove-duplicates.d.ts +1 -1
- package/dist/esm/interface/remove-duplicates.d.ts.map +1 -1
- package/dist/esm/interface/remove-duplicates.js +41 -6
- package/dist/esm/interface/remove-table.d.ts +1 -1
- package/dist/esm/interface/remove-table.d.ts.map +1 -1
- package/dist/esm/interface/remove-table.js +58 -10
- package/dist/esm/interface/slicers.d.ts +12 -1
- package/dist/esm/interface/slicers.d.ts.map +1 -1
- package/dist/esm/interface/slicers.js +44 -2
- package/dist/esm/interface/spreadsheet-interface.d.ts +1 -1
- package/dist/esm/interface/spreadsheet-interface.d.ts.map +1 -1
- package/dist/esm/interface/spreadsheet-interface.js +73 -1
- package/dist/esm/interface/table-totalrow.d.ts +13 -1
- package/dist/esm/interface/table-totalrow.d.ts.map +1 -1
- package/dist/esm/interface/table-totalrow.js +98 -68
- package/dist/esm/interface/table-utils.d.ts +59 -6
- package/dist/esm/interface/table-utils.d.ts.map +1 -1
- package/dist/esm/interface/table-utils.js +155 -14
- package/dist/esm/interface/update-table.d.ts +16 -1
- package/dist/esm/interface/update-table.d.ts.map +1 -1
- package/dist/esm/interface/update-table.js +203 -42
- package/dist/esm/sheet-cell.d.ts.map +1 -1
- package/dist/esm/test-setup.d.ts.map +1 -1
- package/dist/esm/test-setup.js +6 -0
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/esm/validation-schema/table.schema.d.ts +11 -0
- package/dist/esm/validation-schema/table.schema.d.ts.map +1 -1
- package/dist/esm/validation-schema/table.schema.js +15 -2
- package/package.json +25 -17
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { __assign, __read } from "tslib";
|
|
2
|
+
import { areaIntersects } from "@rowsncolumns/grid";
|
|
3
|
+
var LAST_INDEX = Number.MAX_SAFE_INTEGER;
|
|
4
|
+
/**
|
|
5
|
+
* Excel "Insert Cut Cells" / Shift+drag of a cell block, as the three structural steps the
|
|
6
|
+
* legacy hooks already own: open the destination band (`insertCells…` at `to`), move the block
|
|
7
|
+
* into the opening, then close the gap the block left (`deleteCells…` on the vacated source).
|
|
8
|
+
* The sheet keeps its cell count — Shift+drag A5 to A2 over r1..r6 gives r1 r5 r2 r3 r4 r6, never
|
|
9
|
+
* a blank — and a forward move within its own lanes lands `size` lines before `to`, Excel's
|
|
10
|
+
* pre-removal reference (cut A2, drop at row 6 → r1 r3 r4 r5 r2 r6), because the closing shift
|
|
11
|
+
* pulls the landed block up. `null` when the move is a no-op (the drop is inside the block or
|
|
12
|
+
* right after it) or cannot land the block whole (destination lanes overlapping the source
|
|
13
|
+
* lanes only partially — the closing shift would tear the block); the rnc engine's
|
|
14
|
+
* `move-range { insert }` applies the same rules.
|
|
15
|
+
*/
|
|
16
|
+
export var planInsertCutCells = function (from, to) {
|
|
17
|
+
if (areaIntersects(from, to)) {
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
var shift = to.startRowIndex === from.startRowIndex ? "right" : "down";
|
|
21
|
+
var vertical = shift === "down";
|
|
22
|
+
// (line, lane): the axis the bands shift along, and the perpendicular index.
|
|
23
|
+
var _a = __read(vertical
|
|
24
|
+
? [
|
|
25
|
+
from.startRowIndex,
|
|
26
|
+
from.endRowIndex,
|
|
27
|
+
from.startColumnIndex,
|
|
28
|
+
from.endColumnIndex,
|
|
29
|
+
to.startRowIndex,
|
|
30
|
+
to.startColumnIndex,
|
|
31
|
+
]
|
|
32
|
+
: [
|
|
33
|
+
from.startColumnIndex,
|
|
34
|
+
from.endColumnIndex,
|
|
35
|
+
from.startRowIndex,
|
|
36
|
+
from.endRowIndex,
|
|
37
|
+
to.startColumnIndex,
|
|
38
|
+
to.startRowIndex,
|
|
39
|
+
], 6), l1 = _a[0], l2 = _a[1], k1 = _a[2], k2 = _a[3], t = _a[4], tk1 = _a[5];
|
|
40
|
+
var size = l2 - l1 + 1;
|
|
41
|
+
var tk2 = tk1 + (k2 - k1);
|
|
42
|
+
var lanesMeet = tk1 <= k2 && tk2 >= k1;
|
|
43
|
+
if (lanesMeet && tk1 !== k1) {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
if (lanesMeet && t > l1 && t <= l2 + 1) {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
// Opening the destination band above the block slides the block along with it.
|
|
50
|
+
var slides = lanesMeet && t < l1;
|
|
51
|
+
var shiftedSource = !slides
|
|
52
|
+
? from
|
|
53
|
+
: vertical
|
|
54
|
+
? __assign(__assign({}, from), { startRowIndex: from.startRowIndex + size, endRowIndex: from.endRowIndex + size }) : __assign(__assign({}, from), { startColumnIndex: from.startColumnIndex + size, endColumnIndex: from.endColumnIndex + size });
|
|
55
|
+
var band = function (range) {
|
|
56
|
+
return vertical
|
|
57
|
+
? __assign(__assign({}, range), { endRowIndex: LAST_INDEX }) : __assign(__assign({}, range), { endColumnIndex: LAST_INDEX });
|
|
58
|
+
};
|
|
59
|
+
return { shift: shift, shiftedSource: shiftedSource, bands: [band(to), band(from)] };
|
|
60
|
+
};
|
package/dist/cjs/api/merges.d.ts
CHANGED
|
@@ -1,4 +1,12 @@
|
|
|
1
1
|
import type { GridRange } from "@rowsncolumns/common-types";
|
|
2
|
+
/** Excel's refusal when a move / cut-paste / shift would tear a merged cell. */
|
|
3
|
+
export declare const MERGED_CELL_MOVE_ERROR = "We can't do that to a merged cell.";
|
|
4
|
+
/**
|
|
5
|
+
* The first merge that `range` covers only PARTIALLY (it intersects the range without being
|
|
6
|
+
* wholly inside it). Excel refuses any move, cut + paste or cell shift whose source or destination
|
|
7
|
+
* does that ("We can't do that to a merged cell."); merges wholly inside the range travel intact.
|
|
8
|
+
*/
|
|
9
|
+
export declare const findPartiallyCoveredMerge: (range: GridRange, merges: GridRange[] | undefined | null) => GridRange | undefined;
|
|
2
10
|
export declare const moveMergedCells: (mergedCells: GridRange[] | undefined | null, op: "column-insert" | "row-insert" | "column-remove" | "row-remove", referenceIndex: number, count?: number, condition?: (area: GridRange) => boolean) => GridRange[] | null | undefined;
|
|
3
11
|
export declare const shrinkMergesOnRowDelete: (merges: GridRange[], deleteStart: number, deleteCount: number) => GridRange[];
|
|
4
12
|
export declare const shrinkMergesOnColumnDelete: (merges: GridRange[], deleteStart: number, deleteCount: number) => GridRange[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merges.d.ts","sourceRoot":"","sources":["../../../api/merges.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"merges.d.ts","sourceRoot":"","sources":["../../../api/merges.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAG5D,gFAAgF;AAChF,eAAO,MAAM,sBAAsB,uCAAuC,CAAC;AAE3E;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,GACpC,OAAO,SAAS,EAChB,QAAQ,SAAS,EAAE,GAAG,SAAS,GAAG,IAAI,KACrC,SAAS,GAAG,SAGZ,CAAC;AAYJ,eAAO,MAAM,eAAe,GAC1B,aAAa,SAAS,EAAE,GAAG,SAAS,GAAG,IAAI,EAC3C,IAAI,eAAe,GAAG,YAAY,GAAG,eAAe,GAAG,YAAY,EACnE,gBAAgB,MAAM,EACtB,cAAS,EACT,YAAY,CAAC,IAAI,EAAE,SAAS,KAAK,OAAO,mCA2DzC,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAClC,QAAQ,SAAS,EAAE,EACnB,aAAa,MAAM,EACnB,aAAa,MAAM,gBA8CpB,CAAC;AAEF,eAAO,MAAM,0BAA0B,GACrC,QAAQ,SAAS,EAAE,EACnB,aAAa,MAAM,EACnB,aAAa,MAAM,gBA8CpB,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAClC,QAAQ,SAAS,EAAE,EACnB,aAAa,MAAM,EACnB,OAAO,MAAM,gBAyBd,CAAC;AAEF,eAAO,MAAM,0BAA0B,GACrC,QAAQ,SAAS,EAAE,EACnB,aAAa,MAAM,EACnB,OAAO,MAAM,gBAyBd,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,GAC5B,QAAQ,SAAS,EAAE,GAAG,SAAS,GAAG,IAAI,EACtC,MAAM,KAAK,GAAG,QAAQ,EACtB,OAAO,MAAM,EACb,OAAO,MAAM,EACb,QAAQ,OAAO,EACf,WAAW,MAAM,EACjB,SAAS,MAAM,mCAkDhB,CAAC"}
|
package/dist/cjs/api/merges.js
CHANGED
|
@@ -1,4 +1,15 @@
|
|
|
1
1
|
import { __assign, __values } from "tslib";
|
|
2
|
+
import { areaInsideArea, areaIntersects } from "@rowsncolumns/grid";
|
|
3
|
+
/** Excel's refusal when a move / cut-paste / shift would tear a merged cell. */
|
|
4
|
+
export var MERGED_CELL_MOVE_ERROR = "We can't do that to a merged cell.";
|
|
5
|
+
/**
|
|
6
|
+
* The first merge that `range` covers only PARTIALLY (it intersects the range without being
|
|
7
|
+
* wholly inside it). Excel refuses any move, cut + paste or cell shift whose source or destination
|
|
8
|
+
* does that ("We can't do that to a merged cell."); merges wholly inside the range travel intact.
|
|
9
|
+
*/
|
|
10
|
+
export var findPartiallyCoveredMerge = function (range, merges) {
|
|
11
|
+
return merges === null || merges === void 0 ? void 0 : merges.find(function (merge) { return areaIntersects(merge, range) && !areaInsideArea(merge, range); });
|
|
12
|
+
};
|
|
2
13
|
/**
|
|
3
14
|
* Move merged cells when user is inserts, deletes row and columns
|
|
4
15
|
* @param mergedCells
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
import type { CellFormat, CellInterface, GridRange } from "@rowsncolumns/common-types";
|
|
2
|
+
import type { CellData } from "@rowsncolumns/spreadsheet";
|
|
3
|
+
import type { Draft } from "immer";
|
|
4
|
+
import type { CellXfsRegistry } from "../hooks/use-cellxfs-registry";
|
|
5
|
+
import type { SheetData } from "../hooks/use-spreadsheet-state";
|
|
6
|
+
import type { SharedStringRegistry } from "../hooks/use-ss-registry";
|
|
2
7
|
/**
|
|
3
8
|
* Format-painter pattern shared by both engines: the captured 2-D format grid plus the
|
|
4
9
|
* source block's merge configuration, re-based to the block's top-left so it can be tiled
|
|
@@ -49,7 +54,23 @@ export declare const getBandedCellFormat: (bandedCells: Map<string, CellFormat>
|
|
|
49
54
|
* Layer a cell's explicit format over the banded format the grid would paint beneath it, so the
|
|
50
55
|
* captured pattern carries the VISIBLE look (Sheets copies the alternating colours as static cell
|
|
51
56
|
* fills — it does not create a table or banding at the target). Explicit keys win; an explicit
|
|
52
|
-
* `undefined` never clobbers a banded value.
|
|
57
|
+
* `undefined` never clobbers a banded value. `textFormat` merges key-wise: an explicitly bold
|
|
58
|
+
* header keeps the contrast text colour the band paints it with.
|
|
53
59
|
*/
|
|
54
60
|
export declare const layerBandedFormat: (explicit: CellFormat | null | undefined, banded: CellFormat | undefined) => CellFormat | null | undefined;
|
|
61
|
+
/**
|
|
62
|
+
* Write the banded (table stripe) formats the grid paints under `range` into the cells as
|
|
63
|
+
* static formats — Excel's Convert to Range bakes the table style into the cell formats — each
|
|
64
|
+
* cell's explicit format layered on top exactly as the format painter captures it. Runs inside
|
|
65
|
+
* the caller's sheet-data draft; cells without a band are untouched.
|
|
66
|
+
*/
|
|
67
|
+
export declare const bakeBandedFormats: <T extends CellData>({ draft, sheetId, range, bandedCells, locale, cellXfsRegistry, sharedStringRegistry, }: {
|
|
68
|
+
draft: Draft<SheetData<T>>;
|
|
69
|
+
sheetId: number;
|
|
70
|
+
range: GridRange;
|
|
71
|
+
bandedCells: Map<string, CellFormat> | undefined | null;
|
|
72
|
+
locale?: string;
|
|
73
|
+
cellXfsRegistry?: CellXfsRegistry;
|
|
74
|
+
sharedStringRegistry?: SharedStringRegistry;
|
|
75
|
+
}) => void;
|
|
55
76
|
//# sourceMappingURL=paint-format.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paint-format.d.ts","sourceRoot":"","sources":["../../../api/paint-format.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,aAAa,EACb,SAAS,EACV,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"paint-format.d.ts","sourceRoot":"","sources":["../../../api/paint-format.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,aAAa,EACb,SAAS,EACV,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EAAE,QAAQ,EAAkB,MAAM,2BAA2B,CAAC;AAC1E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAEnC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAIrE;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,CAAC,UAAU,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE,EAAE,CAAC;IAC7C,kFAAkF;IAClF,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,6CAA6C;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAQF;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,GAC7B,QAAQ,SAAS,EAAE,GAAG,IAAI,GAAG,SAAS,EACtC,QAAQ,SAAS,KAChB,SAAS,EAaX,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,GACnC,QAAQ,SAAS,EAAE,GAAG,IAAI,GAAG,SAAS,EACtC,YAAY,aAAa,KACxB,SAkBF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,GACnC,SAAS,CAAC,UAAU,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE,EAAE,EAC5C,gBAAgB,SAAS,EAAE,KAC1B,IAYF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,eAAe,GAC1B,gBAAgB,SAAS,EAAE,EAC3B,MAAM,MAAM,EACZ,MAAM,MAAM,EACZ,QAAQ,SAAS,KAChB,SAAS,EAqBX,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAC9B,aAAa,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,SAAS,GAAG,IAAI,EACvD,UAAU,MAAM,EAChB,aAAa,MAAM,KAClB,UAAU,GAAG,SACyC,CAAC;AAE1D;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,GAC5B,UAAU,UAAU,GAAG,IAAI,GAAG,SAAS,EACvC,QAAQ,UAAU,GAAG,SAAS,KAC7B,UAAU,GAAG,IAAI,GAAG,SActB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,QAAQ,EAAE,wFAQnD;IACD,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,SAAS,CAAC;IACjB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC;IACxD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;CAC7C,SA6CA,CAAC"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { __assign, __read, __values } from "tslib";
|
|
2
2
|
import { cellIdentifier, isCellWithinBounds } from "@rowsncolumns/grid";
|
|
3
|
+
import { SheetCell } from "../sheet-cell";
|
|
4
|
+
import { createSheetDraft } from "./immer-utils";
|
|
3
5
|
var rangeContains = function (outer, inner) {
|
|
4
6
|
return inner.startRowIndex >= outer.startRowIndex &&
|
|
5
7
|
inner.endRowIndex <= outer.endRowIndex &&
|
|
@@ -146,7 +148,8 @@ export var getBandedCellFormat = function (bandedCells, rowIndex, columnIndex) {
|
|
|
146
148
|
* Layer a cell's explicit format over the banded format the grid would paint beneath it, so the
|
|
147
149
|
* captured pattern carries the VISIBLE look (Sheets copies the alternating colours as static cell
|
|
148
150
|
* fills — it does not create a table or banding at the target). Explicit keys win; an explicit
|
|
149
|
-
* `undefined` never clobbers a banded value.
|
|
151
|
+
* `undefined` never clobbers a banded value. `textFormat` merges key-wise: an explicitly bold
|
|
152
|
+
* header keeps the contrast text colour the band paints it with.
|
|
150
153
|
*/
|
|
151
154
|
export var layerBandedFormat = function (explicit, banded) {
|
|
152
155
|
var e_4, _a;
|
|
@@ -169,6 +172,59 @@ export var layerBandedFormat = function (explicit, banded) {
|
|
|
169
172
|
}
|
|
170
173
|
finally { if (e_4) throw e_4.error; }
|
|
171
174
|
}
|
|
175
|
+
if (explicit.textFormat && banded.textFormat) {
|
|
176
|
+
merged.textFormat = __assign(__assign({}, banded.textFormat), explicit.textFormat);
|
|
177
|
+
}
|
|
172
178
|
}
|
|
173
179
|
return merged;
|
|
174
180
|
};
|
|
181
|
+
/**
|
|
182
|
+
* Write the banded (table stripe) formats the grid paints under `range` into the cells as
|
|
183
|
+
* static formats — Excel's Convert to Range bakes the table style into the cell formats — each
|
|
184
|
+
* cell's explicit format layered on top exactly as the format painter captures it. Runs inside
|
|
185
|
+
* the caller's sheet-data draft; cells without a band are untouched.
|
|
186
|
+
*/
|
|
187
|
+
export var bakeBandedFormats = function (_a) {
|
|
188
|
+
var e_5, _b;
|
|
189
|
+
var _c, _d;
|
|
190
|
+
var draft = _a.draft, sheetId = _a.sheetId, range = _a.range, bandedCells = _a.bandedCells, locale = _a.locale, cellXfsRegistry = _a.cellXfsRegistry, sharedStringRegistry = _a.sharedStringRegistry;
|
|
191
|
+
if (!(bandedCells === null || bandedCells === void 0 ? void 0 : bandedCells.size))
|
|
192
|
+
return;
|
|
193
|
+
var sheetCell = new SheetCell();
|
|
194
|
+
for (var rowIndex = range.startRowIndex; rowIndex <= range.endRowIndex; rowIndex++) {
|
|
195
|
+
for (var columnIndex = range.startColumnIndex; columnIndex <= range.endColumnIndex; columnIndex++) {
|
|
196
|
+
var banded = getBandedCellFormat(bandedCells, rowIndex, columnIndex);
|
|
197
|
+
if (!banded)
|
|
198
|
+
continue;
|
|
199
|
+
var currentSheet = createSheetDraft(draft, sheetId, rowIndex);
|
|
200
|
+
sheetCell.assign(sheetId, { rowIndex: rowIndex, columnIndex: columnIndex }, (_d = (_c = currentSheet[rowIndex]) === null || _c === void 0 ? void 0 : _c.values) === null || _d === void 0 ? void 0 : _d[columnIndex], { locale: locale, cellXfsRegistry: cellXfsRegistry, sharedStringRegistry: sharedStringRegistry });
|
|
201
|
+
var baked = layerBandedFormat(sheetCell.userEnteredFormat, banded);
|
|
202
|
+
sheetCell.clearUserEnteredFormat();
|
|
203
|
+
try {
|
|
204
|
+
for (var _e = (e_5 = void 0, __values(Object.entries(baked !== null && baked !== void 0 ? baked : {}))), _f = _e.next(); !_f.done; _f = _e.next()) {
|
|
205
|
+
var _g = __read(_f.value, 2), key = _g[0], value = _g[1];
|
|
206
|
+
// A band carries `undefined` for the parts it does not paint (no border, no text
|
|
207
|
+
// colour) — those must not land as empty `{}` formats on the cell.
|
|
208
|
+
if (value === undefined)
|
|
209
|
+
continue;
|
|
210
|
+
if (typeof value === "object" &&
|
|
211
|
+
value !== null &&
|
|
212
|
+
Object.values(value).every(function (part) { return part === undefined; })) {
|
|
213
|
+
continue;
|
|
214
|
+
}
|
|
215
|
+
sheetCell.setUserEnteredFormat(key, value);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
catch (e_5_1) { e_5 = { error: e_5_1 }; }
|
|
219
|
+
finally {
|
|
220
|
+
try {
|
|
221
|
+
if (_f && !_f.done && (_b = _e.return)) _b.call(_e);
|
|
222
|
+
}
|
|
223
|
+
finally { if (e_5) throw e_5.error; }
|
|
224
|
+
}
|
|
225
|
+
currentSheet[rowIndex].values[columnIndex] =
|
|
226
|
+
sheetCell.getCellData();
|
|
227
|
+
cellXfsRegistry === null || cellXfsRegistry === void 0 ? void 0 : cellXfsRegistry.registerCellXfs(sheetCell);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
};
|
package/dist/cjs/api/sort.d.ts
CHANGED
|
@@ -1,3 +1,25 @@
|
|
|
1
1
|
import type { SortOrder } from "@rowsncolumns/spreadsheet";
|
|
2
|
-
|
|
2
|
+
/**
|
|
3
|
+
* A cell whose effective value is an error (`#DIV/0!`, `#N/A`, …). Errors
|
|
4
|
+
* form the last value tier and keep their relative order, as in Excel.
|
|
5
|
+
*/
|
|
6
|
+
export type SortErrorValue = {
|
|
7
|
+
readonly sortError: string;
|
|
8
|
+
};
|
|
9
|
+
export type SortCellValue = string | number | boolean | SortErrorValue | undefined | null;
|
|
10
|
+
export declare const isSortErrorValue: (value: unknown) => value is SortErrorValue;
|
|
11
|
+
/**
|
|
12
|
+
* The value a sort compares for a cell: its error when it has one, else the
|
|
13
|
+
* effective value, else the display text.
|
|
14
|
+
*/
|
|
15
|
+
export declare const getCellSortValue: (cell: {
|
|
16
|
+
readonly error: unknown;
|
|
17
|
+
getEffectiveValue(): string | number | boolean | undefined;
|
|
18
|
+
readonly formattedValue: string | undefined | null;
|
|
19
|
+
}) => SortCellValue;
|
|
20
|
+
/**
|
|
21
|
+
* Excel's sort order: numbers < text < logicals < errors, blanks last in
|
|
22
|
+
* BOTH directions, text compared case-insensitively through the collator.
|
|
23
|
+
*/
|
|
24
|
+
export declare const cellValueSorter: (left: SortCellValue, right: SortCellValue, sortOrder: SortOrder) => number;
|
|
3
25
|
//# sourceMappingURL=sort.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sort.d.ts","sourceRoot":"","sources":["../../../api/sort.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"sort.d.ts","sourceRoot":"","sources":["../../../api/sort.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAa3D;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG;IAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5D,MAAM,MAAM,aAAa,GACrB,MAAM,GACN,MAAM,GACN,OAAO,GACP,cAAc,GACd,SAAS,GACT,IAAI,CAAC;AAET,eAAO,MAAM,gBAAgB,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,cACU,CAAC;AAEtE;;;GAGG;AACH,eAAO,MAAM,gBAAgB,GAAI,MAAM;IACrC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,iBAAiB,IAAI,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;IAC3D,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;CACpD,KAAG,aAGmD,CAAC;AAYxD;;;GAGG;AACH,eAAO,MAAM,eAAe,GAC1B,MAAM,aAAa,EACnB,OAAO,aAAa,EACpB,WAAW,SAAS,WA8CrB,CAAC"}
|
package/dist/cjs/api/sort.js
CHANGED
|
@@ -1,8 +1,40 @@
|
|
|
1
1
|
import { isNil } from "@rowsncolumns/utils";
|
|
2
|
+
/**
|
|
3
|
+
* The text order both engines sort with: case- and accent-insensitive,
|
|
4
|
+
* digit runs by numeric value ("a2" < "a10"). `rnc_cellmodel::collate_text`
|
|
5
|
+
* is its Rust twin.
|
|
6
|
+
*/
|
|
2
7
|
var comparator = new Intl.Collator("en", {
|
|
3
8
|
numeric: true,
|
|
4
9
|
sensitivity: "base",
|
|
5
10
|
}).compare;
|
|
11
|
+
export var isSortErrorValue = function (value) {
|
|
12
|
+
return typeof value === "object" && value !== null && "sortError" in value;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* The value a sort compares for a cell: its error when it has one, else the
|
|
16
|
+
* effective value, else the display text.
|
|
17
|
+
*/
|
|
18
|
+
export var getCellSortValue = function (cell) {
|
|
19
|
+
var _a, _b;
|
|
20
|
+
return cell.error
|
|
21
|
+
? { sortError: (_a = cell.formattedValue) !== null && _a !== void 0 ? _a : "" }
|
|
22
|
+
: ((_b = cell.getEffectiveValue()) !== null && _b !== void 0 ? _b : cell.formattedValue);
|
|
23
|
+
};
|
|
24
|
+
/** Excel's ascending order of value types: numbers < text < logicals < errors. */
|
|
25
|
+
var tierOf = function (value) {
|
|
26
|
+
return typeof value === "number"
|
|
27
|
+
? 0
|
|
28
|
+
: typeof value === "string"
|
|
29
|
+
? 1
|
|
30
|
+
: typeof value === "boolean"
|
|
31
|
+
? 2
|
|
32
|
+
: 3;
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Excel's sort order: numbers < text < logicals < errors, blanks last in
|
|
36
|
+
* BOTH directions, text compared case-insensitively through the collator.
|
|
37
|
+
*/
|
|
6
38
|
export var cellValueSorter = function (left, right, sortOrder) {
|
|
7
39
|
var isEmpty = function (value) {
|
|
8
40
|
if (isNil(value)) {
|
|
@@ -12,7 +44,7 @@ export var cellValueSorter = function (left, right, sortOrder) {
|
|
|
12
44
|
};
|
|
13
45
|
var leftEmpty = isEmpty(left);
|
|
14
46
|
var rightEmpty = isEmpty(right);
|
|
15
|
-
//
|
|
47
|
+
// Blanks stay last regardless of direction.
|
|
16
48
|
if (leftEmpty && rightEmpty) {
|
|
17
49
|
return 0;
|
|
18
50
|
}
|
|
@@ -22,12 +54,26 @@ export var cellValueSorter = function (left, right, sortOrder) {
|
|
|
22
54
|
if (rightEmpty) {
|
|
23
55
|
return -1;
|
|
24
56
|
}
|
|
25
|
-
var
|
|
26
|
-
var
|
|
27
|
-
|
|
28
|
-
|
|
57
|
+
var direction = sortOrder === "ASCENDING" ? 1 : -1;
|
|
58
|
+
var leftTier = tierOf(left);
|
|
59
|
+
var rightTier = tierOf(right);
|
|
60
|
+
if (leftTier !== rightTier) {
|
|
61
|
+
return direction * Math.sign(leftTier - rightTier);
|
|
62
|
+
}
|
|
63
|
+
var comparisonResult = 0;
|
|
64
|
+
if (typeof left === "number" && typeof right === "number") {
|
|
65
|
+
comparisonResult = left - right;
|
|
66
|
+
}
|
|
67
|
+
else if (typeof left === "string" && typeof right === "string") {
|
|
68
|
+
comparisonResult = comparator(left, right);
|
|
69
|
+
}
|
|
70
|
+
else if (typeof left === "boolean" && typeof right === "boolean") {
|
|
71
|
+
// FALSE before TRUE.
|
|
72
|
+
comparisonResult = Number(left) - Number(right);
|
|
73
|
+
}
|
|
74
|
+
// Errors compare equal: Excel keeps them in their original order.
|
|
29
75
|
if (comparisonResult !== 0) {
|
|
30
|
-
return
|
|
76
|
+
return direction * Math.sign(comparisonResult);
|
|
31
77
|
}
|
|
32
78
|
return 0;
|
|
33
79
|
};
|
|
@@ -46,6 +46,24 @@ export declare const findTornArray: (arrayRanges: readonly GridRange[] | undefin
|
|
|
46
46
|
* inside the deleted block. */
|
|
47
47
|
export declare const isRangeInsideBand: (range: GridRange, band: StructuralBand) => boolean;
|
|
48
48
|
export declare const isRangeInsideBlock: (outer: GridRange, inner: GridRange) => boolean;
|
|
49
|
+
/**
|
|
50
|
+
* T-07 — the Excel refusal for defining a table over `range` (create / update): another table on
|
|
51
|
+
* the sheet (`table-overlap`, judged first) or a merged cell (`table-merged-cells`). `excludeTableId`
|
|
52
|
+
* leaves the table being edited out. `insertedRows`, when given, is a one-or-more-row insert that
|
|
53
|
+
* runs first (the Create Table dialog's header row): tables and merges wholly inside its band are
|
|
54
|
+
* judged at their shifted position.
|
|
55
|
+
*/
|
|
56
|
+
export declare const getTableRangeRefusal: ({ sheetId, range, tables, merges, excludeTableId, insertedRows, }: {
|
|
57
|
+
sheetId: number;
|
|
58
|
+
range: GridRange;
|
|
59
|
+
tables?: readonly TableView[] | null;
|
|
60
|
+
merges?: readonly GridRange[] | null;
|
|
61
|
+
excludeTableId?: TableView["id"];
|
|
62
|
+
insertedRows?: {
|
|
63
|
+
band: StructuralBand;
|
|
64
|
+
count: number;
|
|
65
|
+
};
|
|
66
|
+
}) => StructuralRefusal | undefined;
|
|
49
67
|
/**
|
|
50
68
|
* The Excel refusal (if any) for an insert/delete-cells shift of `range`. Checks run in Excel's
|
|
51
69
|
* order: array tear, merge tear, table tear, off-sheet push. `undefined` means the edit may proceed.
|
|
@@ -63,6 +81,45 @@ export declare const getShiftCellsRefusal: <T extends CellData>({ direction, ran
|
|
|
63
81
|
tables?: readonly TableView[] | null;
|
|
64
82
|
arrayRanges?: readonly GridRange[] | null;
|
|
65
83
|
}) => StructuralRefusal | undefined;
|
|
84
|
+
/**
|
|
85
|
+
* T-46 — the refusal (if any) for a drag-move / cut of `from` onto `to`. Excel moves a table whole
|
|
86
|
+
* when the block contains it, but refuses to move PART of a table (the block covers some of its
|
|
87
|
+
* cells) and refuses a block landing on another table's cells; a block that is a whole table
|
|
88
|
+
* landing on another table is a table overlap. A same-table column reorder is decided before this.
|
|
89
|
+
*/
|
|
90
|
+
export declare const getMoveRangeRefusal: ({ sheetId, from, to, toSheetId, tables, }: {
|
|
91
|
+
sheetId: number;
|
|
92
|
+
from: GridRange;
|
|
93
|
+
to: GridRange;
|
|
94
|
+
/** The destination sheet — a cut + paste can land on another sheet; defaults to `sheetId`. */
|
|
95
|
+
toSheetId?: number;
|
|
96
|
+
tables?: readonly TableView[] | null;
|
|
97
|
+
}) => StructuralRefusal | undefined;
|
|
98
|
+
/**
|
|
99
|
+
* T-81 — the refusal for a fill whose filled cells (`target` minus `source`) reach a table's totals
|
|
100
|
+
* row. Excel's fill handle never extends over a totals row (the row is derived, not data), so the
|
|
101
|
+
* whole fill is refused and nothing is written. A fill whose source IS the totals row (filling away
|
|
102
|
+
* from the table) is not affected.
|
|
103
|
+
*/
|
|
104
|
+
export declare const getFillTotalsRowRefusal: ({ sheetId, source, target, tables, }: {
|
|
105
|
+
sheetId: number;
|
|
106
|
+
source: GridRange;
|
|
107
|
+
target: GridRange;
|
|
108
|
+
tables?: readonly TableView[] | null;
|
|
109
|
+
}) => StructuralRefusal | undefined;
|
|
110
|
+
/**
|
|
111
|
+
* T-47 — the refusal (if any) for Insert / Delete Table Rows (`axis: "row"`) or Table Columns
|
|
112
|
+
* (`axis: "column"`) on `table`. The edit shifts the cells of the table's band — its columns from
|
|
113
|
+
* the table down to the sheet edge, or its rows from the table right to the sheet edge. Another
|
|
114
|
+
* table wholly inside that band moves with it; one the band reaches but does not contain would be
|
|
115
|
+
* torn apart, so Excel refuses the edit.
|
|
116
|
+
*/
|
|
117
|
+
export declare const getTableEditRefusal: ({ sheetId, table, axis, tables, }: {
|
|
118
|
+
sheetId: number;
|
|
119
|
+
table: TableView;
|
|
120
|
+
axis: "row" | "column";
|
|
121
|
+
tables?: readonly TableView[] | null;
|
|
122
|
+
}) => StructuralRefusal | undefined;
|
|
66
123
|
/**
|
|
67
124
|
* INS-06 / INS-09 — the refusal for a whole-row (`axis: "row"`) or whole-column insert of `count`
|
|
68
125
|
* lines before `referenceIndex`, given the hard grid cap (`maxRowCount` / `maxColumnCount`). Blank
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"structural-guards.d.ts","sourceRoot":"","sources":["../../../api/structural-guards.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"structural-guards.d.ts","sourceRoot":"","sources":["../../../api/structural-guards.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { __read } from "tslib";
|
|
1
|
+
import { __assign, __read } from "tslib";
|
|
2
2
|
import { selectionFromActiveCell } from "@rowsncolumns/utils";
|
|
3
3
|
import { structuralRefusal, } from "../constants";
|
|
4
4
|
/** The selection a cell shift operates on — the LAST selection, or the active cell as a 1×1. The
|
|
@@ -140,6 +140,31 @@ export var isRangeInsideBand = function (range, band) {
|
|
|
140
140
|
return rangeContains(band, range);
|
|
141
141
|
};
|
|
142
142
|
export var isRangeInsideBlock = rangeContains;
|
|
143
|
+
/**
|
|
144
|
+
* T-07 — the Excel refusal for defining a table over `range` (create / update): another table on
|
|
145
|
+
* the sheet (`table-overlap`, judged first) or a merged cell (`table-merged-cells`). `excludeTableId`
|
|
146
|
+
* leaves the table being edited out. `insertedRows`, when given, is a one-or-more-row insert that
|
|
147
|
+
* runs first (the Create Table dialog's header row): tables and merges wholly inside its band are
|
|
148
|
+
* judged at their shifted position.
|
|
149
|
+
*/
|
|
150
|
+
export var getTableRangeRefusal = function (_a) {
|
|
151
|
+
var sheetId = _a.sheetId, range = _a.range, tables = _a.tables, merges = _a.merges, excludeTableId = _a.excludeTableId, insertedRows = _a.insertedRows;
|
|
152
|
+
var shifted = function (candidate) {
|
|
153
|
+
return insertedRows && isRangeInsideBand(candidate, insertedRows.band)
|
|
154
|
+
? __assign(__assign({}, candidate), { startRowIndex: candidate.startRowIndex + insertedRows.count, endRowIndex: candidate.endRowIndex + insertedRows.count }) : candidate;
|
|
155
|
+
};
|
|
156
|
+
if (tables === null || tables === void 0 ? void 0 : tables.some(function (table) {
|
|
157
|
+
return table.sheetId === sheetId &&
|
|
158
|
+
table.id !== excludeTableId &&
|
|
159
|
+
rangesIntersect(shifted(table.range), range);
|
|
160
|
+
})) {
|
|
161
|
+
return structuralRefusal("table-overlap");
|
|
162
|
+
}
|
|
163
|
+
if (merges === null || merges === void 0 ? void 0 : merges.some(function (merge) { return rangesIntersect(shifted(merge), range); })) {
|
|
164
|
+
return structuralRefusal("table-merged-cells");
|
|
165
|
+
}
|
|
166
|
+
return undefined;
|
|
167
|
+
};
|
|
143
168
|
/**
|
|
144
169
|
* The Excel refusal (if any) for an insert/delete-cells shift of `range`. Checks run in Excel's
|
|
145
170
|
* order: array tear, merge tear, table tear, off-sheet push. `undefined` means the edit may proceed.
|
|
@@ -176,6 +201,73 @@ export var getShiftCellsRefusal = function (_a) {
|
|
|
176
201
|
}
|
|
177
202
|
return undefined;
|
|
178
203
|
};
|
|
204
|
+
/**
|
|
205
|
+
* T-46 — the refusal (if any) for a drag-move / cut of `from` onto `to`. Excel moves a table whole
|
|
206
|
+
* when the block contains it, but refuses to move PART of a table (the block covers some of its
|
|
207
|
+
* cells) and refuses a block landing on another table's cells; a block that is a whole table
|
|
208
|
+
* landing on another table is a table overlap. A same-table column reorder is decided before this.
|
|
209
|
+
*/
|
|
210
|
+
export var getMoveRangeRefusal = function (_a) {
|
|
211
|
+
var _b;
|
|
212
|
+
var sheetId = _a.sheetId, from = _a.from, to = _a.to, _c = _a.toSheetId, toSheetId = _c === void 0 ? sheetId : _c, tables = _a.tables;
|
|
213
|
+
var sheetTables = tables === null || tables === void 0 ? void 0 : tables.filter(function (table) { return table.sheetId === sheetId; });
|
|
214
|
+
var destinationTables = toSheetId === sheetId
|
|
215
|
+
? sheetTables
|
|
216
|
+
: tables === null || tables === void 0 ? void 0 : tables.filter(function (table) { return table.sheetId === toSheetId; });
|
|
217
|
+
if (!(sheetTables === null || sheetTables === void 0 ? void 0 : sheetTables.length) && !(destinationTables === null || destinationTables === void 0 ? void 0 : destinationTables.length))
|
|
218
|
+
return undefined;
|
|
219
|
+
var moved = (_b = sheetTables === null || sheetTables === void 0 ? void 0 : sheetTables.filter(function (table) { return rangeContains(from, table.range); })) !== null && _b !== void 0 ? _b : [];
|
|
220
|
+
if (sheetTables === null || sheetTables === void 0 ? void 0 : sheetTables.some(function (table) {
|
|
221
|
+
return !moved.includes(table) && rangesIntersect(table.range, from);
|
|
222
|
+
})) {
|
|
223
|
+
return structuralRefusal("torn-table");
|
|
224
|
+
}
|
|
225
|
+
if (destinationTables === null || destinationTables === void 0 ? void 0 : destinationTables.some(function (table) { return !moved.includes(table) && rangesIntersect(table.range, to); })) {
|
|
226
|
+
return structuralRefusal(moved.length ? "table-overlap" : "torn-table");
|
|
227
|
+
}
|
|
228
|
+
return undefined;
|
|
229
|
+
};
|
|
230
|
+
/**
|
|
231
|
+
* T-81 — the refusal for a fill whose filled cells (`target` minus `source`) reach a table's totals
|
|
232
|
+
* row. Excel's fill handle never extends over a totals row (the row is derived, not data), so the
|
|
233
|
+
* whole fill is refused and nothing is written. A fill whose source IS the totals row (filling away
|
|
234
|
+
* from the table) is not affected.
|
|
235
|
+
*/
|
|
236
|
+
export var getFillTotalsRowRefusal = function (_a) {
|
|
237
|
+
var sheetId = _a.sheetId, source = _a.source, target = _a.target, tables = _a.tables;
|
|
238
|
+
return (tables === null || tables === void 0 ? void 0 : tables.some(function (table) {
|
|
239
|
+
if (table.sheetId !== sheetId || !table.totalRow)
|
|
240
|
+
return false;
|
|
241
|
+
var totalsRow = table.range.endRowIndex;
|
|
242
|
+
if (totalsRow < target.startRowIndex || totalsRow > target.endRowIndex) {
|
|
243
|
+
return false;
|
|
244
|
+
}
|
|
245
|
+
var hit = {
|
|
246
|
+
startRowIndex: totalsRow,
|
|
247
|
+
endRowIndex: totalsRow,
|
|
248
|
+
startColumnIndex: Math.max(table.range.startColumnIndex, target.startColumnIndex),
|
|
249
|
+
endColumnIndex: Math.min(table.range.endColumnIndex, target.endColumnIndex),
|
|
250
|
+
};
|
|
251
|
+
return hit.startColumnIndex <= hit.endColumnIndex && !rangeContains(source, hit);
|
|
252
|
+
}))
|
|
253
|
+
? structuralRefusal("table-totals-fill")
|
|
254
|
+
: undefined;
|
|
255
|
+
};
|
|
256
|
+
/**
|
|
257
|
+
* T-47 — the refusal (if any) for Insert / Delete Table Rows (`axis: "row"`) or Table Columns
|
|
258
|
+
* (`axis: "column"`) on `table`. The edit shifts the cells of the table's band — its columns from
|
|
259
|
+
* the table down to the sheet edge, or its rows from the table right to the sheet edge. Another
|
|
260
|
+
* table wholly inside that band moves with it; one the band reaches but does not contain would be
|
|
261
|
+
* torn apart, so Excel refuses the edit.
|
|
262
|
+
*/
|
|
263
|
+
export var getTableEditRefusal = function (_a) {
|
|
264
|
+
var sheetId = _a.sheetId, table = _a.table, axis = _a.axis, tables = _a.tables;
|
|
265
|
+
var band = axis === "row"
|
|
266
|
+
? __assign(__assign({}, table.range), { endRowIndex: Number.POSITIVE_INFINITY }) : __assign(__assign({}, table.range), { endColumnIndex: Number.POSITIVE_INFINITY });
|
|
267
|
+
return findTornTable(tables === null || tables === void 0 ? void 0 : tables.filter(function (other) { return other.id !== table.id; }), sheetId, band)
|
|
268
|
+
? structuralRefusal("torn-table")
|
|
269
|
+
: undefined;
|
|
270
|
+
};
|
|
179
271
|
/**
|
|
180
272
|
* INS-06 / INS-09 — the refusal for a whole-row (`axis: "row"`) or whole-column insert of `count`
|
|
181
273
|
* lines before `referenceIndex`, given the hard grid cap (`maxRowCount` / `maxColumnCount`). Blank
|
|
@@ -27,9 +27,10 @@ export type RemovedTableParts = {
|
|
|
27
27
|
}>;
|
|
28
28
|
};
|
|
29
29
|
/**
|
|
30
|
-
* Which tables / table columns `deleteRow` (a table goes
|
|
31
|
-
*
|
|
32
|
-
*
|
|
30
|
+
* Which tables / table columns `deleteRow` (a table goes only when every one
|
|
31
|
+
* of its rows is deleted — losing its header row keeps it, the next row
|
|
32
|
+
* becomes the header) or `deleteColumn` (a table goes when every column is
|
|
33
|
+
* deleted; otherwise the covered columns are spliced out) removes for the band
|
|
33
34
|
* `[minIndex, maxIndex]` on `sheetId`. Mirrors the table updates those
|
|
34
35
|
* interfaces apply to `tables`.
|
|
35
36
|
*/
|
|
@@ -59,6 +60,60 @@ export type BreakStructuredRefsParams<T extends CellData> = {
|
|
|
59
60
|
* when it is available (cost O(formula cells)); without one the draft is swept.
|
|
60
61
|
*/
|
|
61
62
|
export declare const breakStructuredRefsForRemovedTableParts: <T extends CellData>({ draft, sheetId, axis, referenceIndex, count, removed, getGraphNodes, enqueueCalculation, enqueueGraphOperation, recalcCells, locale, cellXfsRegistry, sharedStringRegistry, }: BreakStructuredRefsParams<T>) => void;
|
|
63
|
+
export type RewriteFormulasParams<T extends CellData> = Pick<BreakStructuredRefsParams<T>, "draft" | "getGraphNodes" | "enqueueCalculation" | "enqueueGraphOperation" | "recalcCells" | "locale" | "cellXfsRegistry" | "sharedStringRegistry">;
|
|
64
|
+
/**
|
|
65
|
+
* Column `oldName` of `table` was renamed `newName` (a header-cell edit):
|
|
66
|
+
* rewrite every structured reference to it across the workbook, including the
|
|
67
|
+
* bare `[@Old]` forms of the formulas that sit inside the table.
|
|
68
|
+
*/
|
|
69
|
+
export declare const renameTableColumnInFormulas: <T extends CellData>({ table, oldName, newName, ...params }: RewriteFormulasParams<T> & {
|
|
70
|
+
table: Pick<TableView, "title" | "sheetId" | "range">;
|
|
71
|
+
oldName: string;
|
|
72
|
+
newName: string;
|
|
73
|
+
}) => void;
|
|
74
|
+
/**
|
|
75
|
+
* Several columns of `table` were renamed at once (a header row re-derived
|
|
76
|
+
* after a row delete, several header cells written by one paste /
|
|
77
|
+
* change-batch): `renames` maps each LOWER-CASED old name to its new name and
|
|
78
|
+
* every formula is rewritten in ONE pass, so `Name` → `Qty` and `Qty` → `Name`
|
|
79
|
+
* swap instead of chaining into the same column.
|
|
80
|
+
*/
|
|
81
|
+
export declare const renameTableColumnsInFormulas: <T extends CellData>({ table, renames, ...params }: RewriteFormulasParams<T> & {
|
|
82
|
+
table: Pick<TableView, "title" | "sheetId" | "range">;
|
|
83
|
+
renames: ReadonlyMap<string, string>;
|
|
84
|
+
}) => void;
|
|
85
|
+
/**
|
|
86
|
+
* The header cells one write renamed (`planHeaderCellRenames`), applied per
|
|
87
|
+
* table as a single multi-column rename.
|
|
88
|
+
*/
|
|
89
|
+
export declare const renameHeaderCellsInFormulas: <T extends CellData>({ headerRenames, ...params }: RewriteFormulasParams<T> & {
|
|
90
|
+
headerRenames: readonly {
|
|
91
|
+
table: Pick<TableView, "id" | "title" | "sheetId" | "range">;
|
|
92
|
+
oldName: string | undefined;
|
|
93
|
+
newName: string;
|
|
94
|
+
}[];
|
|
95
|
+
}) => void;
|
|
96
|
+
/**
|
|
97
|
+
* `table` is being converted to a range (Excel's Convert to Range): rewrite
|
|
98
|
+
* every structured reference into it across the workbook to the A1 reference
|
|
99
|
+
* it resolves to — `T[Col]` → `$B$2:$B$9`, `[@Col]` → `B3`,
|
|
100
|
+
* `T[[#Headers],[Col]]` → `$B$1`, qualified with the table's sheet from another
|
|
101
|
+
* sheet — so the formulas keep their values once the table is gone. Runs
|
|
102
|
+
* BEFORE the table is removed; the bare `[@Col]` forms belong to the formulas
|
|
103
|
+
* that sit inside the table.
|
|
104
|
+
*/
|
|
105
|
+
export declare const convertTableReferencesToA1InFormulas: <T extends CellData>({ table, getSheetName, ...params }: RewriteFormulasParams<T> & {
|
|
106
|
+
table: Pick<TableView, "title" | "sheetId" | "range" | "headerRow" | "totalRow" | "columns">;
|
|
107
|
+
getSheetName(sheetId: number): string;
|
|
108
|
+
}) => void;
|
|
109
|
+
/**
|
|
110
|
+
* Table `oldName` was renamed `newName` (the Edit Table dialog / `updateTable`):
|
|
111
|
+
* rewrite `Old[…]` → `New[…]` in every formula across the workbook.
|
|
112
|
+
*/
|
|
113
|
+
export declare const renameTableInFormulas: <T extends CellData>({ oldName, newName, ...params }: RewriteFormulasParams<T> & {
|
|
114
|
+
oldName: string;
|
|
115
|
+
newName: string;
|
|
116
|
+
}) => void;
|
|
62
117
|
/**
|
|
63
118
|
* Drop the materialised spill cells of every dynamic-array anchor that sits
|
|
64
119
|
* inside the deleted band `[minIndex, maxIndex]` (rows or columns) of
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"structural-table-refs.d.ts","sourceRoot":"","sources":["../../../api/structural-table-refs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAE5D,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAMrE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAEnC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAErE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"structural-table-refs.d.ts","sourceRoot":"","sources":["../../../api/structural-table-refs.ts"],"names":[],"mappings":"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"}
|