@rowsncolumns/spreadsheet-state 29.0.0 → 29.1.1
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 +131 -7
- package/dist/cjs/api/anchored-objects.d.ts.map +1 -1
- package/dist/cjs/api/anchored-objects.js +488 -43
- package/dist/cjs/api/copy-paste.d.ts +1 -2
- package/dist/cjs/api/copy-paste.d.ts.map +1 -1
- package/dist/cjs/api/copy-paste.js +1 -3
- 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/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/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 +129 -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-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 +10 -1
- package/dist/cjs/hooks/use-on-delete-sheet.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-delete-sheet.js +19 -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 +3 -1
- package/dist/cjs/hooks/use-on-move-columns.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-move-columns.js +14 -1
- package/dist/cjs/hooks/use-on-move-rows.d.ts +3 -1
- package/dist/cjs/hooks/use-on-move-rows.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-move-rows.js +14 -1
- package/dist/cjs/hooks/use-on-move-selection.d.ts +3 -1
- package/dist/cjs/hooks/use-on-move-selection.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-move-selection.js +88 -25
- package/dist/cjs/hooks/use-on-paste.d.ts +22 -1
- package/dist/cjs/hooks/use-on-paste.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-paste.js +993 -776
- 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 +56 -10
- package/dist/cjs/hooks/use-spreadsheet-state.d.ts.map +1 -1
- package/dist/cjs/hooks/use-spreadsheet-state.js +323 -100
- 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 +7 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +8 -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 +17 -2
- 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 +17 -2
- 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 +106 -44
- 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 +16 -3
- 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 +230 -19
- 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 +149 -2
- 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 +11 -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 +11 -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 +68 -38
- 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 +10 -2
- 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 +131 -7
- package/dist/esm/api/anchored-objects.d.ts.map +1 -1
- package/dist/esm/api/anchored-objects.js +399 -15
- package/dist/esm/api/copy-paste.d.ts +1 -2
- package/dist/esm/api/copy-paste.d.ts.map +1 -1
- package/dist/esm/api/copy-paste.js +1 -3
- 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/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/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 +129 -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-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 +10 -1
- package/dist/esm/hooks/use-on-delete-sheet.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-delete-sheet.js +19 -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 +3 -1
- package/dist/esm/hooks/use-on-move-columns.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-move-columns.js +14 -1
- package/dist/esm/hooks/use-on-move-rows.d.ts +3 -1
- package/dist/esm/hooks/use-on-move-rows.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-move-rows.js +14 -1
- package/dist/esm/hooks/use-on-move-selection.d.ts +3 -1
- package/dist/esm/hooks/use-on-move-selection.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-move-selection.js +44 -1
- package/dist/esm/hooks/use-on-paste.d.ts +22 -1
- package/dist/esm/hooks/use-on-paste.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-paste.js +815 -672
- 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 +56 -10
- package/dist/esm/hooks/use-spreadsheet-state.d.ts.map +1 -1
- package/dist/esm/hooks/use-spreadsheet-state.js +260 -30
- 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 +7 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +8 -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 +17 -2
- 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 +17 -2
- 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 +69 -30
- 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 +16 -3
- 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 +180 -16
- 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 +132 -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 +11 -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 +11 -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 +49 -23
- 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 +10 -2
- 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 +19 -11
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { __read, __spreadArray, __values } from "tslib";
|
|
1
|
+
import { __assign, __read, __spreadArray, __values } from "tslib";
|
|
2
2
|
import { isStaticNode, } from "@rowsncolumns/dag";
|
|
3
3
|
import { getCellUserEnteredValue, getExtendedValueFormula, getStringifiedColor, } from "@rowsncolumns/spreadsheet";
|
|
4
4
|
import { produceWithPatches } from "immer";
|
|
5
5
|
import { useCallback } from "react";
|
|
6
6
|
import { createSheetCellIdentifier } from "../api/formula";
|
|
7
|
+
import { getCellSortValue } from "../api/sort";
|
|
7
8
|
import { createSheetDraft } from "../api/immer-utils";
|
|
8
9
|
import { SheetCell } from "../sheet-cell";
|
|
9
10
|
import { useShowError } from "../atoms/error-state.atom";
|
|
@@ -35,7 +36,7 @@ var buildSortValue = function (options, fallbackValue, getEffectiveFormat, theme
|
|
|
35
36
|
* @returns
|
|
36
37
|
*/
|
|
37
38
|
export var useOnSortColumn = function (_a) {
|
|
38
|
-
var rowCount = _a.rowCount, columnCount = _a.columnCount, locale = _a.locale, sharedStringRegistry = _a.sharedStringRegistry, createHistory = _a.createHistory, enqueueCalculation = _a.enqueueCalculation, enqueueStructureChange = _a.enqueueStructureChange, enqueueGraphOperation = _a.enqueueGraphOperation, onChangeSheetData = _a.onChangeSheetData, isHiddenRow = _a.isHiddenRow, getDependents = _a.getDependents, getFrozenRowCount = _a.getFrozenRowCount, getSheetName = _a.getSheetName, getEffectiveFormat = _a.getEffectiveFormat, theme = _a.theme, enableSortTimingLogs = _a.enableSortTimingLogs, onCommand = _a.onCommand;
|
|
39
|
+
var rowCount = _a.rowCount, columnCount = _a.columnCount, locale = _a.locale, sharedStringRegistry = _a.sharedStringRegistry, createHistory = _a.createHistory, enqueueCalculation = _a.enqueueCalculation, enqueueStructureChange = _a.enqueueStructureChange, enqueueGraphOperation = _a.enqueueGraphOperation, onChangeSheetData = _a.onChangeSheetData, onChangeSheets = _a.onChangeSheets, getCellData = _a.getCellData, getDataRowCount = _a.getDataRowCount, isHiddenRow = _a.isHiddenRow, isManuallyHiddenRow = _a.isManuallyHiddenRow, getDependents = _a.getDependents, getFrozenRowCount = _a.getFrozenRowCount, getSheetName = _a.getSheetName, getEffectiveFormat = _a.getEffectiveFormat, theme = _a.theme, enableSortTimingLogs = _a.enableSortTimingLogs, onCommand = _a.onCommand;
|
|
39
40
|
var canEditSheet = useCanEditSheet();
|
|
40
41
|
var canPerformSheetAction = useCanPerformSheetAction();
|
|
41
42
|
var showError = useShowError();
|
|
@@ -46,6 +47,7 @@ export var useOnSortColumn = function (_a) {
|
|
|
46
47
|
* column. Omitting this keeps the single-column behavior identical.
|
|
47
48
|
*/
|
|
48
49
|
additionalLevels) {
|
|
50
|
+
var _a, _b;
|
|
49
51
|
if (!canEditSheet(sheetId)) {
|
|
50
52
|
console.debug("This range is protected, users cannot edit this cell range.");
|
|
51
53
|
return;
|
|
@@ -75,108 +77,148 @@ export var useOnSortColumn = function (_a) {
|
|
|
75
77
|
startColumnIndex: 1,
|
|
76
78
|
endColumnIndex: columnCount,
|
|
77
79
|
});
|
|
80
|
+
var startRowIndex = 1;
|
|
81
|
+
var startColumnIndex = 1;
|
|
82
|
+
var isPinnedRow = function (rowIndex) {
|
|
83
|
+
return isManuallyHiddenRow
|
|
84
|
+
? isManuallyHiddenRow(sheetId, rowIndex)
|
|
85
|
+
: isHiddenRow(sheetId, rowIndex);
|
|
86
|
+
};
|
|
87
|
+
var overallStart = now();
|
|
88
|
+
// Gather the sort keys from the committed cell data. Pinned rows
|
|
89
|
+
// contribute no entry and are never rewritten.
|
|
90
|
+
var buildStart = now();
|
|
91
|
+
var dataRowCount = (_a = getDataRowCount(sheetId)) !== null && _a !== void 0 ? _a : 0;
|
|
92
|
+
var rowEntries = [];
|
|
93
|
+
var _loop_1 = function (rowIndex) {
|
|
94
|
+
var e_1, _c;
|
|
95
|
+
if (isPinnedRow(rowIndex)) {
|
|
96
|
+
return "continue";
|
|
97
|
+
}
|
|
98
|
+
// Build one sort value per level: the primary column first,
|
|
99
|
+
// then each "then by" column in order.
|
|
100
|
+
var buildLevelValue = function (columnIndex, levelOptions) {
|
|
101
|
+
var sortCell = new SheetCell(sheetId, { rowIndex: rowIndex, columnIndex: columnIndex }, getCellData(sheetId, rowIndex, columnIndex), { locale: locale, sharedStringRegistry: sharedStringRegistry });
|
|
102
|
+
var fallbackValue = getCellSortValue(sortCell);
|
|
103
|
+
return buildSortValue(levelOptions, fallbackValue, getEffectiveFormat, theme, sheetId, rowIndex, columnIndex);
|
|
104
|
+
};
|
|
105
|
+
var sortValues = [
|
|
106
|
+
buildLevelValue(sortedColumnIndex, options),
|
|
107
|
+
];
|
|
108
|
+
try {
|
|
109
|
+
for (var _d = (e_1 = void 0, __values(additionalLevels !== null && additionalLevels !== void 0 ? additionalLevels : [])), _e = _d.next(); !_e.done; _e = _d.next()) {
|
|
110
|
+
var level = _e.value;
|
|
111
|
+
sortValues.push(buildLevelValue(level.columnIndex, level));
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
115
|
+
finally {
|
|
116
|
+
try {
|
|
117
|
+
if (_e && !_e.done && (_c = _d.return)) _c.call(_d);
|
|
118
|
+
}
|
|
119
|
+
finally { if (e_1) throw e_1.error; }
|
|
120
|
+
}
|
|
121
|
+
rowEntries.push({ rowIndex: rowIndex, sortValues: sortValues });
|
|
122
|
+
};
|
|
123
|
+
for (var rowIndex = startRowIndex; rowIndex <= dataRowCount; rowIndex++) {
|
|
124
|
+
_loop_1(rowIndex);
|
|
125
|
+
}
|
|
126
|
+
var buildMs = now() - buildStart;
|
|
127
|
+
// The slots the sorted rows land on, ascending (the sort reorders
|
|
128
|
+
// `rowEntries` in place).
|
|
129
|
+
var destRows = rowEntries.map(function (entry) { return entry.rowIndex; });
|
|
130
|
+
// Sort data
|
|
131
|
+
var sortStart = now();
|
|
132
|
+
// Primary spec, then one spec per "then by" level. The order
|
|
133
|
+
// matches the sortValues built above so the comparator pairs
|
|
134
|
+
// each value with its spec. `sortedEntries[i]` is the row that
|
|
135
|
+
// lands on `destRows[i]`.
|
|
136
|
+
var specs = __spreadArray([
|
|
137
|
+
{
|
|
138
|
+
sortOrder: sortOrder,
|
|
139
|
+
sortBy: (_b = options === null || options === void 0 ? void 0 : options.sortBy) !== null && _b !== void 0 ? _b : "value",
|
|
140
|
+
// Pre-resolve the target color the same way the cell sort
|
|
141
|
+
// values are resolved, so sort-rows.ts can compare strings.
|
|
142
|
+
sortColor: getStringifiedColor(options === null || options === void 0 ? void 0 : options.sortColor, theme),
|
|
143
|
+
sortIcon: options === null || options === void 0 ? void 0 : options.sortIcon,
|
|
144
|
+
customList: options === null || options === void 0 ? void 0 : options.customList,
|
|
145
|
+
}
|
|
146
|
+
], __read((additionalLevels !== null && additionalLevels !== void 0 ? additionalLevels : []).map(function (level) {
|
|
147
|
+
var _a;
|
|
148
|
+
return ({
|
|
149
|
+
sortOrder: level.sortOrder,
|
|
150
|
+
sortBy: (_a = level.sortBy) !== null && _a !== void 0 ? _a : "value",
|
|
151
|
+
sortColor: getStringifiedColor(level.sortColor, theme),
|
|
152
|
+
sortIcon: level.sortIcon,
|
|
153
|
+
customList: level.customList,
|
|
154
|
+
});
|
|
155
|
+
})), false);
|
|
156
|
+
var sortedEntries = sortRowEntriesByFrozenState(rowEntries, frozenRowCount, specs);
|
|
157
|
+
var sortMs = now() - sortStart;
|
|
158
|
+
// Carry each row's `hiddenByFilter` flag to the row's destination: a
|
|
159
|
+
// sort does not re-evaluate the filter, so the hidden set follows the
|
|
160
|
+
// rows.
|
|
161
|
+
onChangeSheets === null || onChangeSheets === void 0 ? void 0 : onChangeSheets(function (prevSheets) {
|
|
162
|
+
var _a = __read(produceWithPatches(prevSheets, function (draft) {
|
|
163
|
+
var sheet = draft.find(function (sheet) { return sheet.sheetId === sheetId; });
|
|
164
|
+
if (!sheet) {
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
var hiddenByFilterAt = function (rowIndex) { var _a, _b; return Boolean((_b = (_a = sheet.rowMetadata) === null || _a === void 0 ? void 0 : _a[rowIndex]) === null || _b === void 0 ? void 0 : _b.hiddenByFilter); };
|
|
168
|
+
// Read every source flag before writing any destination.
|
|
169
|
+
var carried = destRows.map(function (rowIndex, index) { var _a, _b; return hiddenByFilterAt((_b = (_a = sortedEntries[index]) === null || _a === void 0 ? void 0 : _a.rowIndex) !== null && _b !== void 0 ? _b : rowIndex); });
|
|
170
|
+
destRows.forEach(function (rowIndex, index) {
|
|
171
|
+
var hiddenByFilter = carried[index];
|
|
172
|
+
if (hiddenByFilter === hiddenByFilterAt(rowIndex)) {
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
if (!sheet.rowMetadata) {
|
|
176
|
+
sheet.rowMetadata = [];
|
|
177
|
+
}
|
|
178
|
+
sheet.rowMetadata[rowIndex] = __assign(__assign({}, sheet.rowMetadata[rowIndex]), { hiddenByFilter: hiddenByFilter });
|
|
179
|
+
});
|
|
180
|
+
}), 3), nextState = _a[0], patches = _a[1], inversePatches = _a[2];
|
|
181
|
+
if (!patches.length) {
|
|
182
|
+
return prevSheets;
|
|
183
|
+
}
|
|
184
|
+
saveHistory({ sheets: { patches: patches, inversePatches: inversePatches } });
|
|
185
|
+
return nextState;
|
|
186
|
+
});
|
|
78
187
|
// Update sheet data
|
|
79
188
|
onChangeSheetData === null || onChangeSheetData === void 0 ? void 0 : onChangeSheetData(function (prevSheetData) {
|
|
80
|
-
var overallStart = now();
|
|
81
|
-
var buildMs = 0;
|
|
82
|
-
var sortMs = 0;
|
|
83
189
|
var applyMs = 0;
|
|
84
190
|
var _a = __read(produceWithPatches(prevSheetData, function (draft) {
|
|
85
|
-
var
|
|
86
|
-
var
|
|
191
|
+
var e_2, _a, e_3, _b;
|
|
192
|
+
var _c, _d, _e;
|
|
87
193
|
var sheet = createSheetDraft(draft, sheetId);
|
|
88
|
-
var startRowIndex = 1;
|
|
89
|
-
var startColumnIndex = 1;
|
|
90
|
-
var rowCount = sheet.length;
|
|
91
|
-
var rowEntries = [];
|
|
92
194
|
var rowSnapshots = new Map();
|
|
93
|
-
var buildStart = now();
|
|
94
195
|
var maxColumnCount = 0;
|
|
95
|
-
|
|
96
|
-
var
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
196
|
+
try {
|
|
197
|
+
for (var destRows_1 = __values(destRows), destRows_1_1 = destRows_1.next(); !destRows_1_1.done; destRows_1_1 = destRows_1.next()) {
|
|
198
|
+
var rowIndex = destRows_1_1.value;
|
|
199
|
+
var rowValues = (_d = (_c = sheet[rowIndex]) === null || _c === void 0 ? void 0 : _c.values) !== null && _d !== void 0 ? _d : [];
|
|
200
|
+
maxColumnCount = Math.max(maxColumnCount, rowValues.length);
|
|
201
|
+
rowSnapshots.set(rowIndex, rowValues.slice());
|
|
100
202
|
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
rowSnapshots.set(rowIndex, ((_d = rowValue === null || rowValue === void 0 ? void 0 : rowValue.values) !== null && _d !== void 0 ? _d : []).slice());
|
|
105
|
-
// Build one sort value per level: the primary column first,
|
|
106
|
-
// then each "then by" column in order.
|
|
107
|
-
var buildLevelValue = function (columnIndex, levelOptions) {
|
|
108
|
-
var _a, _b;
|
|
109
|
-
var sortCellData = (_a = rowValue === null || rowValue === void 0 ? void 0 : rowValue.values) === null || _a === void 0 ? void 0 : _a[columnIndex];
|
|
110
|
-
var sortCell = new SheetCell(sheetId, { rowIndex: rowIndex, columnIndex: columnIndex }, sortCellData, { locale: locale, sharedStringRegistry: sharedStringRegistry });
|
|
111
|
-
var fallbackValue = (_b = sortCell.getEffectiveValue()) !== null && _b !== void 0 ? _b : sortCell.formattedValue;
|
|
112
|
-
return buildSortValue(levelOptions, fallbackValue, getEffectiveFormat, theme, sheetId, rowIndex, columnIndex);
|
|
113
|
-
};
|
|
114
|
-
var sortValues = [
|
|
115
|
-
buildLevelValue(sortedColumnIndex, options),
|
|
116
|
-
];
|
|
203
|
+
}
|
|
204
|
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
205
|
+
finally {
|
|
117
206
|
try {
|
|
118
|
-
|
|
119
|
-
var level = _j.value;
|
|
120
|
-
sortValues.push(buildLevelValue(level.columnIndex, level));
|
|
121
|
-
}
|
|
207
|
+
if (destRows_1_1 && !destRows_1_1.done && (_a = destRows_1.return)) _a.call(destRows_1);
|
|
122
208
|
}
|
|
123
|
-
|
|
124
|
-
finally {
|
|
125
|
-
try {
|
|
126
|
-
if (_j && !_j.done && (_g = _h.return)) _g.call(_h);
|
|
127
|
-
}
|
|
128
|
-
finally { if (e_2) throw e_2.error; }
|
|
129
|
-
}
|
|
130
|
-
rowEntries.push({ rowIndex: rowIndex, sortValues: sortValues });
|
|
131
|
-
};
|
|
132
|
-
for (var rowIndex = startRowIndex; rowIndex <= rowCount; rowIndex++) {
|
|
133
|
-
_loop_1(rowIndex);
|
|
209
|
+
finally { if (e_2) throw e_2.error; }
|
|
134
210
|
}
|
|
135
|
-
buildMs = now() - buildStart;
|
|
136
|
-
// Sort data
|
|
137
|
-
var sortStart = now();
|
|
138
|
-
// Primary spec, then one spec per "then by" level. The order
|
|
139
|
-
// matches the sortValues built above so the comparator pairs
|
|
140
|
-
// each value with its spec.
|
|
141
|
-
var specs = __spreadArray([
|
|
142
|
-
{
|
|
143
|
-
sortOrder: sortOrder,
|
|
144
|
-
sortBy: (_e = options === null || options === void 0 ? void 0 : options.sortBy) !== null && _e !== void 0 ? _e : "value",
|
|
145
|
-
// Pre-resolve the target color the same way the cell sort
|
|
146
|
-
// values are resolved, so sort-rows.ts can compare strings.
|
|
147
|
-
sortColor: getStringifiedColor(options === null || options === void 0 ? void 0 : options.sortColor, theme),
|
|
148
|
-
sortIcon: options === null || options === void 0 ? void 0 : options.sortIcon,
|
|
149
|
-
customList: options === null || options === void 0 ? void 0 : options.customList,
|
|
150
|
-
}
|
|
151
|
-
], __read((additionalLevels !== null && additionalLevels !== void 0 ? additionalLevels : []).map(function (level) {
|
|
152
|
-
var _a;
|
|
153
|
-
return ({
|
|
154
|
-
sortOrder: level.sortOrder,
|
|
155
|
-
sortBy: (_a = level.sortBy) !== null && _a !== void 0 ? _a : "value",
|
|
156
|
-
sortColor: getStringifiedColor(level.sortColor, theme),
|
|
157
|
-
sortIcon: level.sortIcon,
|
|
158
|
-
customList: level.customList,
|
|
159
|
-
});
|
|
160
|
-
})), false);
|
|
161
|
-
var sortedEntries = sortRowEntriesByFrozenState(rowEntries, frozenRowCount, specs);
|
|
162
|
-
sortMs = now() - sortStart;
|
|
163
|
-
// Counter for how many rows we have skipped
|
|
164
|
-
var skippedRow = 0;
|
|
165
211
|
var applyStart = now();
|
|
166
|
-
for (var
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
skippedRow++;
|
|
170
|
-
continue;
|
|
171
|
-
}
|
|
172
|
-
var sourceRow = sortedEntries[rowIndex - skippedRow - startRowIndex];
|
|
212
|
+
for (var index = 0; index < destRows.length; index++) {
|
|
213
|
+
var rowIndex = destRows[index];
|
|
214
|
+
var sourceRow = sortedEntries[index];
|
|
173
215
|
if (!sourceRow) {
|
|
174
216
|
continue;
|
|
175
217
|
}
|
|
176
218
|
if (sourceRow.rowIndex === rowIndex) {
|
|
177
219
|
continue;
|
|
178
220
|
}
|
|
179
|
-
var sourceRowValues = (
|
|
221
|
+
var sourceRowValues = (_e = rowSnapshots.get(sourceRow.rowIndex)) !== null && _e !== void 0 ? _e : [];
|
|
180
222
|
var nextRowValues = [];
|
|
181
223
|
for (var columnIndex = startColumnIndex; columnIndex <= maxColumnCount; columnIndex++) {
|
|
182
224
|
// const currentSheet = createSheetDraft(draft, sheetId, rowIndex);
|
|
@@ -226,7 +268,7 @@ export var useOnSortColumn = function (_a) {
|
|
|
226
268
|
nextRowValues[columnIndex] =
|
|
227
269
|
sheetCell === null || sheetCell === void 0 ? void 0 : sheetCell.getCellData();
|
|
228
270
|
try {
|
|
229
|
-
for (var dependents_1 = (
|
|
271
|
+
for (var dependents_1 = (e_3 = void 0, __values(dependents)), dependents_1_1 = dependents_1.next(); !dependents_1_1.done; dependents_1_1 = dependents_1.next()) {
|
|
230
272
|
var dependent = dependents_1_1.value;
|
|
231
273
|
if (isStaticNode(dependent)) {
|
|
232
274
|
continue;
|
|
@@ -238,12 +280,12 @@ export var useOnSortColumn = function (_a) {
|
|
|
238
280
|
recalcCells.set(createSheetCellIdentifier(dependent.position.sheetId, dependent.position.rowIndex, dependent.position.columnIndex), dependent.position);
|
|
239
281
|
}
|
|
240
282
|
}
|
|
241
|
-
catch (
|
|
283
|
+
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
242
284
|
finally {
|
|
243
285
|
try {
|
|
244
|
-
if (dependents_1_1 && !dependents_1_1.done && (
|
|
286
|
+
if (dependents_1_1 && !dependents_1_1.done && (_b = dependents_1.return)) _b.call(dependents_1);
|
|
245
287
|
}
|
|
246
|
-
finally { if (
|
|
288
|
+
finally { if (e_3) throw e_3.error; }
|
|
247
289
|
}
|
|
248
290
|
}
|
|
249
291
|
var currentSheet = createSheetDraft(draft, sheetId, rowIndex);
|
|
@@ -286,7 +328,11 @@ export var useOnSortColumn = function (_a) {
|
|
|
286
328
|
enqueueStructureChange,
|
|
287
329
|
enqueueGraphOperation,
|
|
288
330
|
onChangeSheetData,
|
|
331
|
+
onChangeSheets,
|
|
332
|
+
getCellData,
|
|
333
|
+
getDataRowCount,
|
|
289
334
|
isHiddenRow,
|
|
335
|
+
isManuallyHiddenRow,
|
|
290
336
|
getDependents,
|
|
291
337
|
getFrozenRowCount,
|
|
292
338
|
canEditSheet,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { SelectionArea } from "@rowsncolumns/common-types";
|
|
2
|
-
import { type CellData, type SelectionAttributes, type SortOrder, type SpreadsheetTheme } from "@rowsncolumns/spreadsheet";
|
|
2
|
+
import { type CellData, type Sheet, type SelectionAttributes, type SortOrder, type SpreadsheetTheme } from "@rowsncolumns/spreadsheet";
|
|
3
3
|
import type { OnCommand } from "../commands";
|
|
4
4
|
import type { useCalculation } from "./use-calculation";
|
|
5
5
|
import type { useSheetProperties } from "./use-sheet-properties";
|
|
@@ -7,7 +7,7 @@ import type { UseSpreadsheetProps } from "./use-spreadsheet-state";
|
|
|
7
7
|
import type { SharedStringRegistry } from "./use-ss-registry";
|
|
8
8
|
import type { SpreadsheetPatch } from "./use-undo-redo";
|
|
9
9
|
import { type DimensionSortSpec } from "./utils/sort-rows";
|
|
10
|
-
export type UseOnSortRangeProps<T extends CellData> = {
|
|
10
|
+
export type UseOnSortRangeProps<T extends CellData, S extends Sheet = Sheet> = {
|
|
11
11
|
locale?: string;
|
|
12
12
|
sharedStringRegistry?: SharedStringRegistry;
|
|
13
13
|
createHistory(): (patches: SpreadsheetPatch) => void;
|
|
@@ -15,7 +15,30 @@ export type UseOnSortRangeProps<T extends CellData> = {
|
|
|
15
15
|
enqueueGraphOperation: ReturnType<typeof useCalculation>["enqueueGraphOperation"];
|
|
16
16
|
enqueueCalculation: ReturnType<typeof useCalculation>["enqueueCalculation"];
|
|
17
17
|
onChangeSheetData: UseSpreadsheetProps<T>["onChangeSheetData"];
|
|
18
|
+
/**
|
|
19
|
+
* Receives each sorted row's `hiddenByFilter` flag at its destination,
|
|
20
|
+
* in the same undo step as the cell rewrite. Without it filter-hidden
|
|
21
|
+
* rows still sort, but the hidden set stays on the old row numbers.
|
|
22
|
+
*/
|
|
23
|
+
onChangeSheets?: UseSpreadsheetProps<T, S>["onChangeSheets"];
|
|
24
|
+
/**
|
|
25
|
+
* Committed cell data — the sort keys are gathered from it before the
|
|
26
|
+
* state updaters run, so one row permutation drives both the sheet data
|
|
27
|
+
* rewrite and the row-metadata carry-over.
|
|
28
|
+
*/
|
|
29
|
+
getCellData(sheetId: number, rowIndex: number, columnIndex: number): T | null | undefined;
|
|
30
|
+
/**
|
|
31
|
+
* Any hidden row (by the user, a filter, or a collapsed group). Used as
|
|
32
|
+
* the pin predicate only when `isManuallyHiddenRow` is not supplied.
|
|
33
|
+
*/
|
|
18
34
|
isHiddenRow(sheetId: number, rowIndex: number): boolean;
|
|
35
|
+
/**
|
|
36
|
+
* A row the user hid (`hiddenByUser` / a collapsed outline group). These
|
|
37
|
+
* rows are pinned in place; rows an AutoFilter hid sort along with the
|
|
38
|
+
* visible ones and keep their `hiddenByFilter` flag at their destination,
|
|
39
|
+
* like Excel.
|
|
40
|
+
*/
|
|
41
|
+
isManuallyHiddenRow?(sheetId: number, rowIndex: number): boolean;
|
|
19
42
|
getDependents: ReturnType<typeof useCalculation>["getDependents"];
|
|
20
43
|
getFrozenRowCount(sheetId: number): number;
|
|
21
44
|
getSheetName(sheetId: number): string;
|
|
@@ -38,5 +61,5 @@ export type UseOnSortRangeProps<T extends CellData> = {
|
|
|
38
61
|
* @param param0
|
|
39
62
|
* @returns
|
|
40
63
|
*/
|
|
41
|
-
export declare const useOnSortRange: <T extends CellData>({ locale, sharedStringRegistry, createHistory, enqueueStructureChange, enqueueGraphOperation, enqueueCalculation, onChangeSheetData, getDependents, isHiddenRow, getFrozenRowCount, getSheetName, getEffectiveFormat, theme, onCommand, }: UseOnSortRangeProps<T>) => (sheetId: number, selections: SelectionArea<SelectionAttributes>[], sortOrder: SortOrder, specs?: DimensionSortSpec[]) => void;
|
|
64
|
+
export declare const useOnSortRange: <T extends CellData, S extends Sheet = Sheet>({ locale, sharedStringRegistry, createHistory, enqueueStructureChange, enqueueGraphOperation, enqueueCalculation, onChangeSheetData, onChangeSheets, getCellData, getDependents, isHiddenRow, isManuallyHiddenRow, getFrozenRowCount, getSheetName, getEffectiveFormat, theme, onCommand, }: UseOnSortRangeProps<T, S>) => (sheetId: number, selections: SelectionArea<SelectionAttributes>[], sortOrder: SortOrder, specs?: DimensionSortSpec[]) => void;
|
|
42
65
|
//# sourceMappingURL=use-on-sort-range.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-on-sort-range.d.ts","sourceRoot":"","sources":["../../../hooks/use-on-sort-range.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAGhE,OAAO,EACL,KAAK,QAAQ,
|
|
1
|
+
{"version":3,"file":"use-on-sort-range.d.ts","sourceRoot":"","sources":["../../../hooks/use-on-sort-range.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAGhE,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,KAAK,EAIV,KAAK,mBAAmB,EACxB,KAAK,SAAS,EACd,KAAK,gBAAgB,EACtB,MAAM,2BAA2B,CAAC;AAQnC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAS7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EACL,KAAK,iBAAiB,EAEvB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,MAAM,mBAAmB,CAC7B,CAAC,SAAS,QAAQ,EAClB,CAAC,SAAS,KAAK,GAAG,KAAK,IACrB;IACF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,aAAa,IAAI,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACrD,sBAAsB,CAAC,EAAE,UAAU,CACjC,OAAO,cAAc,CACtB,CAAC,wBAAwB,CAAC,CAAC;IAC5B,qBAAqB,EAAE,UAAU,CAC/B,OAAO,cAAc,CACtB,CAAC,uBAAuB,CAAC,CAAC;IAC3B,kBAAkB,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,oBAAoB,CAAC,CAAC;IAC5E,iBAAiB,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;IAC/D;;;;OAIG;IACH,cAAc,CAAC,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAC7D;;;;OAIG;IACH,WAAW,CACT,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IACxB;;;OAGG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IACxD;;;;;OAKG;IACH,mBAAmB,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IACjE,aAAa,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,eAAe,CAAC,CAAC;IAClE,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3C,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IACtC;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,UAAU,CAC7B,OAAO,kBAAkB,CAC1B,CAAC,oBAAoB,CAAC,CAAC;IACxB;;;OAGG;IACH,KAAK,EAAE,gBAAgB,CAAC;IACxB,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,GAAG,KAAK,EAAE,6RAkBzE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,eAMb,MAAM,cACH,aAAa,CAAC,mBAAmB,CAAC,EAAE,aACrC,SAAS,UAQZ,iBAAiB,EAAE,SA2UhC,CAAC"}
|
|
@@ -5,6 +5,7 @@ import { getCellUserEnteredValue, getExtendedValueFormula, getStringifiedColor,
|
|
|
5
5
|
import { produceWithPatches } from "immer";
|
|
6
6
|
import { useCallback } from "react";
|
|
7
7
|
import { createSheetCellIdentifier } from "../api/formula";
|
|
8
|
+
import { getCellSortValue } from "../api/sort";
|
|
8
9
|
import { createSheetDraft } from "../api/immer-utils";
|
|
9
10
|
import { useShowError } from "../atoms/error-state.atom";
|
|
10
11
|
import { SHEET_PROTECTION_ERROR_TITLE, useCanEditCellRange, useCanPerformSheetAction, } from "./use-can-edit-cellrange";
|
|
@@ -17,7 +18,7 @@ import { sortRowEntriesByFrozenState, } from "./utils/sort-rows";
|
|
|
17
18
|
* @returns
|
|
18
19
|
*/
|
|
19
20
|
export var useOnSortRange = function (_a) {
|
|
20
|
-
var locale = _a.locale, sharedStringRegistry = _a.sharedStringRegistry, createHistory = _a.createHistory, enqueueStructureChange = _a.enqueueStructureChange, enqueueGraphOperation = _a.enqueueGraphOperation, enqueueCalculation = _a.enqueueCalculation, onChangeSheetData = _a.onChangeSheetData, getDependents = _a.getDependents, isHiddenRow = _a.isHiddenRow, getFrozenRowCount = _a.getFrozenRowCount, getSheetName = _a.getSheetName, getEffectiveFormat = _a.getEffectiveFormat, theme = _a.theme, onCommand = _a.onCommand;
|
|
21
|
+
var locale = _a.locale, sharedStringRegistry = _a.sharedStringRegistry, createHistory = _a.createHistory, enqueueStructureChange = _a.enqueueStructureChange, enqueueGraphOperation = _a.enqueueGraphOperation, enqueueCalculation = _a.enqueueCalculation, onChangeSheetData = _a.onChangeSheetData, onChangeSheets = _a.onChangeSheets, getCellData = _a.getCellData, getDependents = _a.getDependents, isHiddenRow = _a.isHiddenRow, isManuallyHiddenRow = _a.isManuallyHiddenRow, getFrozenRowCount = _a.getFrozenRowCount, getSheetName = _a.getSheetName, getEffectiveFormat = _a.getEffectiveFormat, theme = _a.theme, onCommand = _a.onCommand;
|
|
21
22
|
var canEditCellRange = useCanEditCellRange();
|
|
22
23
|
var canPerformSheetAction = useCanPerformSheetAction();
|
|
23
24
|
var showError = useShowError();
|
|
@@ -30,6 +31,7 @@ export var useOnSortRange = function (_a) {
|
|
|
30
31
|
* legacy uniform-direction behavior is preserved exactly.
|
|
31
32
|
*/
|
|
32
33
|
specs) {
|
|
34
|
+
var _a, _b, _c, _d;
|
|
33
35
|
var activeSheetName = getSheetName(sheetId);
|
|
34
36
|
// We need to track this for history. Precedent cells
|
|
35
37
|
var recalcCells = new Map();
|
|
@@ -62,81 +64,122 @@ export var useOnSortRange = function (_a) {
|
|
|
62
64
|
startColumnIndex: selection.range.startColumnIndex,
|
|
63
65
|
endColumnIndex: selection.range.endColumnIndex,
|
|
64
66
|
});
|
|
67
|
+
var startRowIndex = selection.range.startRowIndex;
|
|
68
|
+
var endRowIndex = selection.range.endRowIndex;
|
|
69
|
+
var startColumnIndex = selection.range.startColumnIndex;
|
|
70
|
+
var endColumnIndex = selection.range.endColumnIndex;
|
|
71
|
+
var frozenRowCount = getFrozenRowCount(sheetId);
|
|
72
|
+
var isPinnedRow = function (rowIndex) {
|
|
73
|
+
return isManuallyHiddenRow
|
|
74
|
+
? isManuallyHiddenRow(sheetId, rowIndex)
|
|
75
|
+
: isHiddenRow(sheetId, rowIndex);
|
|
76
|
+
};
|
|
77
|
+
// Gather the sort keys from the committed cell data. Pinned rows
|
|
78
|
+
// contribute no entry and are never rewritten.
|
|
79
|
+
var rowEntries = [];
|
|
80
|
+
for (var rowIndex = startRowIndex; rowIndex <= endRowIndex; rowIndex++) {
|
|
81
|
+
if (isPinnedRow(rowIndex)) {
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
var sortValues = [];
|
|
85
|
+
for (var columnIndex = startColumnIndex; columnIndex <= endColumnIndex; columnIndex++) {
|
|
86
|
+
var sheetCell = new SheetCell(sheetId, { rowIndex: rowIndex, columnIndex: columnIndex }, getCellData(sheetId, rowIndex, columnIndex), { locale: locale, sharedStringRegistry: sharedStringRegistry });
|
|
87
|
+
var fallbackValue = getCellSortValue(sheetCell);
|
|
88
|
+
// When the per-column spec sorts by color/icon, swap the
|
|
89
|
+
// value for the matching attribute from the cell's
|
|
90
|
+
// effective format so sort-rows.ts can compare it.
|
|
91
|
+
var spec = specs === null || specs === void 0 ? void 0 : specs[columnIndex - startColumnIndex];
|
|
92
|
+
var sortBy = (_a = spec === null || spec === void 0 ? void 0 : spec.sortBy) !== null && _a !== void 0 ? _a : "value";
|
|
93
|
+
var fmt = sortBy === "cellColor" || sortBy === "fontColor" || sortBy === "icon"
|
|
94
|
+
? getEffectiveFormat === null || getEffectiveFormat === void 0 ? void 0 : getEffectiveFormat(sheetId, rowIndex, columnIndex)
|
|
95
|
+
: undefined;
|
|
96
|
+
var sortValue = sortBy === "cellColor"
|
|
97
|
+
? getStringifiedColor(fmt === null || fmt === void 0 ? void 0 : fmt.backgroundColor, theme)
|
|
98
|
+
: sortBy === "fontColor"
|
|
99
|
+
? getStringifiedColor((_b = fmt === null || fmt === void 0 ? void 0 : fmt.textFormat) === null || _b === void 0 ? void 0 : _b.color, theme)
|
|
100
|
+
: sortBy === "icon"
|
|
101
|
+
? (fmt === null || fmt === void 0 ? void 0 : fmt.conditionalIcon)
|
|
102
|
+
? {
|
|
103
|
+
iconSet: fmt.conditionalIcon.iconSet,
|
|
104
|
+
iconId: fmt.conditionalIcon.iconId,
|
|
105
|
+
}
|
|
106
|
+
: undefined
|
|
107
|
+
: fallbackValue;
|
|
108
|
+
sortValues.push(sortValue);
|
|
109
|
+
}
|
|
110
|
+
rowEntries.push({ rowIndex: rowIndex, sortValues: sortValues });
|
|
111
|
+
}
|
|
112
|
+
// The slots the sorted rows land on, ascending (the sort reorders
|
|
113
|
+
// `rowEntries` in place).
|
|
114
|
+
var destRows = rowEntries.map(function (entry) { return entry.rowIndex; });
|
|
115
|
+
// Sort each column. When per-column specs are provided, use
|
|
116
|
+
// them as multi-level "then by" specs (pre-resolving any
|
|
117
|
+
// target colors so sort-rows.ts can compare strings). Otherwise
|
|
118
|
+
// fall back to the legacy uniform-direction behavior.
|
|
119
|
+
// `sortedEntries[i]` is the row that lands on `destRows[i]`.
|
|
120
|
+
var sortSpecs = specs
|
|
121
|
+
? specs.map(function (spec) { return (__assign(__assign({}, spec), { sortColor: getStringifiedColor(spec.sortColor, theme) })); })
|
|
122
|
+
: new Array((_d = (_c = rowEntries[0]) === null || _c === void 0 ? void 0 : _c.sortValues.length) !== null && _d !== void 0 ? _d : 0).fill(sortOrder);
|
|
123
|
+
var sortedEntries = sortRowEntriesByFrozenState(rowEntries, frozenRowCount, sortSpecs);
|
|
124
|
+
// Carry each row's `hiddenByFilter` flag to the row's destination: a
|
|
125
|
+
// sort does not re-evaluate the filter, so the hidden set follows the
|
|
126
|
+
// rows.
|
|
127
|
+
onChangeSheets === null || onChangeSheets === void 0 ? void 0 : onChangeSheets(function (prevSheets) {
|
|
128
|
+
var _a = __read(produceWithPatches(prevSheets, function (draft) {
|
|
129
|
+
var sheet = draft.find(function (sheet) { return sheet.sheetId === sheetId; });
|
|
130
|
+
if (!sheet) {
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
var hiddenByFilterAt = function (rowIndex) { var _a, _b; return Boolean((_b = (_a = sheet.rowMetadata) === null || _a === void 0 ? void 0 : _a[rowIndex]) === null || _b === void 0 ? void 0 : _b.hiddenByFilter); };
|
|
134
|
+
// Read every source flag before writing any destination.
|
|
135
|
+
var carried = destRows.map(function (rowIndex, index) { var _a, _b; return hiddenByFilterAt((_b = (_a = sortedEntries[index]) === null || _a === void 0 ? void 0 : _a.rowIndex) !== null && _b !== void 0 ? _b : rowIndex); });
|
|
136
|
+
destRows.forEach(function (rowIndex, index) {
|
|
137
|
+
var hiddenByFilter = carried[index];
|
|
138
|
+
if (hiddenByFilter === hiddenByFilterAt(rowIndex)) {
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
if (!sheet.rowMetadata) {
|
|
142
|
+
sheet.rowMetadata = [];
|
|
143
|
+
}
|
|
144
|
+
sheet.rowMetadata[rowIndex] = __assign(__assign({}, sheet.rowMetadata[rowIndex]), { hiddenByFilter: hiddenByFilter });
|
|
145
|
+
});
|
|
146
|
+
}), 3), nextState = _a[0], patches = _a[1], inversePatches = _a[2];
|
|
147
|
+
if (!patches.length) {
|
|
148
|
+
return prevSheets;
|
|
149
|
+
}
|
|
150
|
+
saveHistory({ sheets: { patches: patches, inversePatches: inversePatches } });
|
|
151
|
+
return nextState;
|
|
152
|
+
});
|
|
65
153
|
// Update sheet data
|
|
66
154
|
onChangeSheetData === null || onChangeSheetData === void 0 ? void 0 : onChangeSheetData(function (prevSheetData) {
|
|
67
155
|
var _a = __read(produceWithPatches(prevSheetData, function (draft) {
|
|
68
|
-
var e_1, _a;
|
|
69
|
-
var
|
|
156
|
+
var e_1, _a, e_2, _b;
|
|
157
|
+
var _c, _d, _e, _f;
|
|
70
158
|
var sheet = createSheetDraft(draft, sheetId);
|
|
71
|
-
var startRowIndex = selection.range.startRowIndex;
|
|
72
|
-
var endRowIndex = selection.range.endRowIndex;
|
|
73
|
-
var startColumnIndex = selection.range.startColumnIndex;
|
|
74
|
-
var endColumnIndex = selection.range.endColumnIndex;
|
|
75
|
-
var rowEntries = [];
|
|
76
159
|
var rowSnapshots = new Map();
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
continue;
|
|
82
|
-
}
|
|
83
|
-
var rowValue = sheet[rowIndex];
|
|
84
|
-
var sortValues = [];
|
|
85
|
-
for (var columnIndex = startColumnIndex; columnIndex <= endColumnIndex; columnIndex++) {
|
|
86
|
-
var cellData = (_b = rowValue === null || rowValue === void 0 ? void 0 : rowValue.values) === null || _b === void 0 ? void 0 : _b[columnIndex];
|
|
87
|
-
var sheetCell = new SheetCell(sheetId, { rowIndex: rowIndex, columnIndex: columnIndex }, cellData, { locale: locale, sharedStringRegistry: sharedStringRegistry });
|
|
88
|
-
var fallbackValue = (_c = sheetCell.getEffectiveValue()) !== null && _c !== void 0 ? _c : sheetCell.formattedValue;
|
|
89
|
-
// When the per-column spec sorts by color/icon, swap the
|
|
90
|
-
// value for the matching attribute from the cell's
|
|
91
|
-
// effective format so sort-rows.ts can compare it.
|
|
92
|
-
var spec = specs === null || specs === void 0 ? void 0 : specs[columnIndex - startColumnIndex];
|
|
93
|
-
var sortBy = (_d = spec === null || spec === void 0 ? void 0 : spec.sortBy) !== null && _d !== void 0 ? _d : "value";
|
|
94
|
-
var fmt = sortBy === "cellColor" ||
|
|
95
|
-
sortBy === "fontColor" ||
|
|
96
|
-
sortBy === "icon"
|
|
97
|
-
? getEffectiveFormat === null || getEffectiveFormat === void 0 ? void 0 : getEffectiveFormat(sheetId, rowIndex, columnIndex)
|
|
98
|
-
: undefined;
|
|
99
|
-
var sortValue = sortBy === "cellColor"
|
|
100
|
-
? getStringifiedColor(fmt === null || fmt === void 0 ? void 0 : fmt.backgroundColor, theme)
|
|
101
|
-
: sortBy === "fontColor"
|
|
102
|
-
? getStringifiedColor((_e = fmt === null || fmt === void 0 ? void 0 : fmt.textFormat) === null || _e === void 0 ? void 0 : _e.color, theme)
|
|
103
|
-
: sortBy === "icon"
|
|
104
|
-
? (fmt === null || fmt === void 0 ? void 0 : fmt.conditionalIcon)
|
|
105
|
-
? {
|
|
106
|
-
iconSet: fmt.conditionalIcon.iconSet,
|
|
107
|
-
iconId: fmt.conditionalIcon.iconId,
|
|
108
|
-
}
|
|
109
|
-
: undefined
|
|
110
|
-
: fallbackValue;
|
|
111
|
-
sortValues.push(sortValue);
|
|
160
|
+
try {
|
|
161
|
+
for (var destRows_1 = __values(destRows), destRows_1_1 = destRows_1.next(); !destRows_1_1.done; destRows_1_1 = destRows_1.next()) {
|
|
162
|
+
var rowIndex = destRows_1_1.value;
|
|
163
|
+
rowSnapshots.set(rowIndex, ((_d = (_c = sheet[rowIndex]) === null || _c === void 0 ? void 0 : _c.values) !== null && _d !== void 0 ? _d : []).slice());
|
|
112
164
|
}
|
|
113
|
-
rowSnapshots.set(rowIndex, ((_f = rowValue === null || rowValue === void 0 ? void 0 : rowValue.values) !== null && _f !== void 0 ? _f : []).slice());
|
|
114
|
-
rowEntries.push({ rowIndex: rowIndex, sortValues: sortValues });
|
|
115
165
|
}
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
var sortSpecs = specs
|
|
121
|
-
? specs.map(function (spec) { return (__assign(__assign({}, spec), { sortColor: getStringifiedColor(spec.sortColor, theme) })); })
|
|
122
|
-
: new Array((_h = (_g = rowEntries[0]) === null || _g === void 0 ? void 0 : _g.sortValues.length) !== null && _h !== void 0 ? _h : 0).fill(sortOrder);
|
|
123
|
-
var sortedEntries = sortRowEntriesByFrozenState(rowEntries, frozenRowCount, sortSpecs);
|
|
124
|
-
// Counter for how many rows we have skipped
|
|
125
|
-
var skippedRow = 0;
|
|
126
|
-
for (var rowIndex = startRowIndex; rowIndex <= endRowIndex; rowIndex++) {
|
|
127
|
-
// Ignore hidden rows
|
|
128
|
-
if (isHiddenRow(sheetId, rowIndex)) {
|
|
129
|
-
skippedRow++;
|
|
130
|
-
continue;
|
|
166
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
167
|
+
finally {
|
|
168
|
+
try {
|
|
169
|
+
if (destRows_1_1 && !destRows_1_1.done && (_a = destRows_1.return)) _a.call(destRows_1);
|
|
131
170
|
}
|
|
132
|
-
|
|
171
|
+
finally { if (e_1) throw e_1.error; }
|
|
172
|
+
}
|
|
173
|
+
for (var index = 0; index < destRows.length; index++) {
|
|
174
|
+
var rowIndex = destRows[index];
|
|
175
|
+
var sourceRow = sortedEntries[index];
|
|
133
176
|
if (!sourceRow) {
|
|
134
177
|
continue;
|
|
135
178
|
}
|
|
136
179
|
if (sourceRow.rowIndex === rowIndex) {
|
|
137
180
|
continue;
|
|
138
181
|
}
|
|
139
|
-
var sourceRowValues = (
|
|
182
|
+
var sourceRowValues = (_e = rowSnapshots.get(sourceRow.rowIndex)) !== null && _e !== void 0 ? _e : [];
|
|
140
183
|
var currentSheet = createSheetDraft(draft, sheetId, rowIndex);
|
|
141
184
|
for (var columnIndex = startColumnIndex; columnIndex <= endColumnIndex; columnIndex++) {
|
|
142
185
|
var sourceCellData = sourceRowValues[columnIndex];
|
|
@@ -145,7 +188,7 @@ export var useOnSortRange = function (_a) {
|
|
|
145
188
|
if (sourceCellData && hasFormula) {
|
|
146
189
|
sheetCell = new SheetCell(sheetId, { rowIndex: sourceRow.rowIndex, columnIndex: columnIndex }, sourceCellData, { locale: locale, sharedStringRegistry: sharedStringRegistry });
|
|
147
190
|
}
|
|
148
|
-
var coords = (
|
|
191
|
+
var coords = (_f = sheetCell === null || sheetCell === void 0 ? void 0 : sheetCell.coords) !== null && _f !== void 0 ? _f : {
|
|
149
192
|
rowIndex: sourceRow.rowIndex,
|
|
150
193
|
columnIndex: columnIndex,
|
|
151
194
|
};
|
|
@@ -178,7 +221,7 @@ export var useOnSortRange = function (_a) {
|
|
|
178
221
|
});
|
|
179
222
|
}
|
|
180
223
|
try {
|
|
181
|
-
for (var dependents_1 = (
|
|
224
|
+
for (var dependents_1 = (e_2 = void 0, __values(dependents)), dependents_1_1 = dependents_1.next(); !dependents_1_1.done; dependents_1_1 = dependents_1.next()) {
|
|
182
225
|
var dependent = dependents_1_1.value;
|
|
183
226
|
if (isStaticNode(dependent)) {
|
|
184
227
|
continue;
|
|
@@ -198,12 +241,12 @@ export var useOnSortRange = function (_a) {
|
|
|
198
241
|
recalcCells.set(createSheetCellIdentifier(dependent.position.sheetId, dependent.position.rowIndex, dependent.position.columnIndex), dependent.position);
|
|
199
242
|
}
|
|
200
243
|
}
|
|
201
|
-
catch (
|
|
244
|
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
202
245
|
finally {
|
|
203
246
|
try {
|
|
204
|
-
if (dependents_1_1 && !dependents_1_1.done && (
|
|
247
|
+
if (dependents_1_1 && !dependents_1_1.done && (_b = dependents_1.return)) _b.call(dependents_1);
|
|
205
248
|
}
|
|
206
|
-
finally { if (
|
|
249
|
+
finally { if (e_2) throw e_2.error; }
|
|
207
250
|
}
|
|
208
251
|
// Update
|
|
209
252
|
if (sheetCell) {
|
|
@@ -239,7 +282,10 @@ export var useOnSortRange = function (_a) {
|
|
|
239
282
|
enqueueGraphOperation,
|
|
240
283
|
enqueueCalculation,
|
|
241
284
|
onChangeSheetData,
|
|
285
|
+
onChangeSheets,
|
|
286
|
+
getCellData,
|
|
242
287
|
isHiddenRow,
|
|
288
|
+
isManuallyHiddenRow,
|
|
243
289
|
getFrozenRowCount,
|
|
244
290
|
getSheetName,
|
|
245
291
|
getEffectiveFormat,
|