@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
|
@@ -1,12 +1,68 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { GridRange } from "@rowsncolumns/common-types";
|
|
2
|
+
import type { NamedRange, Slicer, SpreadsheetTheme, TableView } from "@rowsncolumns/spreadsheet";
|
|
2
3
|
import React from "react";
|
|
3
4
|
import type { useSpreadsheetState } from "../../hooks/use-spreadsheet-state";
|
|
4
5
|
type TableEditorProps = {
|
|
5
6
|
sheetId: number;
|
|
6
7
|
theme: SpreadsheetTheme;
|
|
8
|
+
/**
|
|
9
|
+
* Every table in the workbook — the name field refuses a rename that
|
|
10
|
+
* collides with another table's name (case-insensitive, like Excel).
|
|
11
|
+
*/
|
|
12
|
+
tables?: TableView[];
|
|
13
|
+
/**
|
|
14
|
+
* The workbook's defined names — a table name that collides with one is
|
|
15
|
+
* refused inline, the way the engines refuse it on submit.
|
|
16
|
+
*/
|
|
17
|
+
namedRanges?: NamedRange[];
|
|
7
18
|
onSubmit: ReturnType<typeof useSpreadsheetState>["onUpdateTable"];
|
|
8
19
|
onRemoveTable?: ReturnType<typeof useSpreadsheetState>["onRemoveTable"];
|
|
20
|
+
/**
|
|
21
|
+
* Submits the Create Table dialog (opened by `onRequestCreateTable` — Ctrl+T, Insert → Table,
|
|
22
|
+
* Format as Table). Without it the create dialog is not rendered.
|
|
23
|
+
*/
|
|
24
|
+
onCreateTable?: ReturnType<typeof useSpreadsheetState>["onCreateTable"];
|
|
25
|
+
/**
|
|
26
|
+
* Submits the Resize Table dialog (opened by `onRequestResizeTable` — Table Design → Resize
|
|
27
|
+
* Table, the context menu's Table → Resize Table…). Without it the resize dialog is not rendered.
|
|
28
|
+
*/
|
|
29
|
+
onResizeTable?: ReturnType<typeof useSpreadsheetState>["onResizeTable"];
|
|
30
|
+
/**
|
|
31
|
+
* Submits the Insert Slicers dialog (opened by `onRequestInsertSlicer` — Table Design → Insert
|
|
32
|
+
* Slicer, the context menu's Table → Insert Slicer…): one slicer per checked column. Without it
|
|
33
|
+
* the dialog is not rendered.
|
|
34
|
+
*/
|
|
35
|
+
onCreateSlicer?: (slicer: Slicer) => void;
|
|
9
36
|
};
|
|
10
|
-
export declare const TableEditor: ({ sheetId, theme, onSubmit, onRemoveTable, }: TableEditorProps) => React.JSX.Element;
|
|
37
|
+
export declare const TableEditor: ({ sheetId, theme, tables, namedRanges, onSubmit, onRemoveTable, onCreateTable, onResizeTable, onCreateSlicer, }: TableEditorProps) => React.JSX.Element;
|
|
38
|
+
/**
|
|
39
|
+
* Excel's "Create Table" dialog: the data range (pre-filled with the selection or the data region
|
|
40
|
+
* around the active cell) and "My table has headers". Unchecked, a `Column1..N` header row is
|
|
41
|
+
* inserted above the data (`CreateTableOptions.hasHeaders: false`).
|
|
42
|
+
*/
|
|
43
|
+
export declare const CreateTableEditor: ({ onCreateTable, }: {
|
|
44
|
+
onCreateTable: NonNullable<TableEditorProps["onCreateTable"]>;
|
|
45
|
+
}) => React.JSX.Element;
|
|
46
|
+
/**
|
|
47
|
+
* Excel's rule for a resized table: the header row stays where it is and the new range must
|
|
48
|
+
* overlap the original one. Overlaps with other tables or merged cells are refused by the engines
|
|
49
|
+
* themselves (`onResizeTable`).
|
|
50
|
+
*/
|
|
51
|
+
export declare const RESIZE_TABLE_RANGE_ERROR = "The header row must remain in the same row, and the resulting table range must overlap the original table range.";
|
|
52
|
+
export declare const getResizeTableRangeError: (table: Pick<TableView, "range">, range: GridRange) => string | undefined;
|
|
53
|
+
/**
|
|
54
|
+
* Excel's "Resize Table" dialog: the table's range, editable, submitted through
|
|
55
|
+
* `onResizeTable` once it keeps the header row and overlaps the original range.
|
|
56
|
+
*/
|
|
57
|
+
export declare const ResizeTableEditor: ({ onResizeTable, }: {
|
|
58
|
+
onResizeTable: NonNullable<TableEditorProps["onResizeTable"]>;
|
|
59
|
+
}) => React.JSX.Element;
|
|
60
|
+
/**
|
|
61
|
+
* Excel's "Insert Slicers" dialog: the table's columns as checkboxes; OK creates one table-bound
|
|
62
|
+
* slicer per checked column (`buildTableSlicers`), placed right of the table.
|
|
63
|
+
*/
|
|
64
|
+
export declare const InsertSlicerEditor: ({ onCreateSlicer, }: {
|
|
65
|
+
onCreateSlicer: NonNullable<TableEditorProps["onCreateSlicer"]>;
|
|
66
|
+
}) => React.JSX.Element;
|
|
11
67
|
export {};
|
|
12
68
|
//# sourceMappingURL=table-editor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table-editor.d.ts","sourceRoot":"","sources":["../../../../components/editors/table-editor.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"table-editor.d.ts","sourceRoot":"","sources":["../../../../components/editors/table-editor.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAE5D,OAAO,KAAK,EACV,UAAU,EACV,MAAM,EACN,gBAAgB,EAChB,SAAS,EACV,MAAM,2BAA2B,CAAC;AAqBnC,OAAO,KAAyC,MAAM,OAAO,CAAC;AAe9D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAO7E,KAAK,gBAAgB,GAAG;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,gBAAgB,CAAC;IACxB;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB;;;OAGG;IACH,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,QAAQ,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,eAAe,CAAC,CAAC;IAClE,aAAa,CAAC,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,eAAe,CAAC,CAAC;IACxE;;;OAGG;IACH,aAAa,CAAC,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,eAAe,CAAC,CAAC;IACxE;;;OAGG;IACH,aAAa,CAAC,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,eAAe,CAAC,CAAC;IACxE;;;;OAIG;IACH,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3C,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,iHAUzB,gBAAgB,sBAwElB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,GAAI,oBAE/B;IACD,aAAa,EAAE,WAAW,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,CAAC;CAC/D,sBA2DA,CAAC;AAgEF;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,qHAC+E,CAAC;AAErH,eAAO,MAAM,wBAAwB,GACnC,OAAO,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,EAC/B,OAAO,SAAS,KACf,MAAM,GAAG,SAOX,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAAI,oBAE/B;IACD,aAAa,EAAE,WAAW,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,CAAC;CAC/D,sBAqDA,CAAC;AAmEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAAI,qBAEhC;IACD,cAAc,EAAE,WAAW,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,CAAC;CACjE,sBAiDA,CAAC"}
|
|
@@ -2,11 +2,15 @@ import { Cross2Icon } from "@rowsncolumns/icons";
|
|
|
2
2
|
import { findMatchingBandProperty, FormulaInput, useFocusSheet, useFormulaInputState, useSetFormulaMode, useSetFormulaSelections, } from "@rowsncolumns/spreadsheet";
|
|
3
3
|
import { Button, Dialog, DialogBody, DialogCloseButton, DialogContent, DialogDescription, DialogTitle, Input, Stack, } from "@rowsncolumns/ui";
|
|
4
4
|
import { useFormik } from "formik";
|
|
5
|
-
import React, { useCallback } from "react";
|
|
6
|
-
import {
|
|
5
|
+
import React, { useCallback, useMemo, useState } from "react";
|
|
6
|
+
import { useCreatingTable, } from "../../atoms/creating-table.atom";
|
|
7
|
+
import { useCreateTableDialogState, useEditTableDialogState, useInsertSlicerDialogState, useResizeTableDialogState, } from "../../atoms/dialog-state.atom";
|
|
7
8
|
import { useEditingTable } from "../../atoms/editing-table.atom";
|
|
8
|
-
import {
|
|
9
|
-
|
|
9
|
+
import { useInsertingSlicer } from "../../atoms/inserting-slicer.atom";
|
|
10
|
+
import { useResizingTable } from "../../atoms/resizing-table.atom";
|
|
11
|
+
import { buildTableSlicers, getTableSlicerColumnNames, } from "../../interface/slicers";
|
|
12
|
+
import { createTableSchema } from "../../validation-schema/table.schema";
|
|
13
|
+
export const TableEditor = ({ sheetId, theme, tables, namedRanges, onSubmit, onRemoveTable, onCreateTable, onResizeTable, onCreateSlicer, }) => {
|
|
10
14
|
const [isOpen, onOpenChange] = useEditTableDialogState();
|
|
11
15
|
const setFormulaMode = useSetFormulaMode();
|
|
12
16
|
const setFormulaSelections = useSetFormulaSelections();
|
|
@@ -22,24 +26,229 @@ export const TableEditor = ({ sheetId, theme, onSubmit, onRemoveTable, }) => {
|
|
|
22
26
|
onSubmit?.(sheetId, tableId, table);
|
|
23
27
|
closeDialog();
|
|
24
28
|
}, [onSubmit, closeDialog]);
|
|
29
|
+
return (React.createElement(React.Fragment, null,
|
|
30
|
+
onCreateTable ? (React.createElement(CreateTableEditor, { onCreateTable: onCreateTable })) : null,
|
|
31
|
+
onResizeTable ? (React.createElement(ResizeTableEditor, { onResizeTable: onResizeTable })) : null,
|
|
32
|
+
onCreateSlicer ? (React.createElement(InsertSlicerEditor, { onCreateSlicer: onCreateSlicer })) : null,
|
|
33
|
+
React.createElement(Dialog, { modal: false, open: isOpen },
|
|
34
|
+
React.createElement(DialogContent, { onEscapeKeyDown: closeDialog, onCloseAutoFocus: (e) => {
|
|
35
|
+
e.preventDefault();
|
|
36
|
+
focusSheet?.();
|
|
37
|
+
} },
|
|
38
|
+
React.createElement(DialogTitle, { className: "rnc-drag-handle cursor-move" }, "Edit table"),
|
|
39
|
+
React.createElement(DialogDescription, null, "Update data range and table properties"),
|
|
40
|
+
React.createElement(DialogBody, null, table ? (React.createElement(TableEditorForm, { onSubmit: handleSubmit, table: table, tables: tables, namedRanges: namedRanges, sheetId: sheetId, theme: theme, onCancel: closeDialog, onRemoveTable: onRemoveTable })) : null),
|
|
41
|
+
React.createElement(DialogCloseButton, { onClick: () => {
|
|
42
|
+
closeDialog();
|
|
43
|
+
} },
|
|
44
|
+
React.createElement(Cross2Icon, null))))));
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* Excel's "Create Table" dialog: the data range (pre-filled with the selection or the data region
|
|
48
|
+
* around the active cell) and "My table has headers". Unchecked, a `Column1..N` header row is
|
|
49
|
+
* inserted above the data (`CreateTableOptions.hasHeaders: false`).
|
|
50
|
+
*/
|
|
51
|
+
export const CreateTableEditor = ({ onCreateTable, }) => {
|
|
52
|
+
const [isOpen, onOpenChange] = useCreateTableDialogState();
|
|
53
|
+
const request = useCreatingTable();
|
|
54
|
+
const setFormulaMode = useSetFormulaMode();
|
|
55
|
+
const setFormulaSelections = useSetFormulaSelections();
|
|
56
|
+
const focusSheet = useFocusSheet();
|
|
57
|
+
const closeDialog = useCallback(() => {
|
|
58
|
+
setFormulaMode(false);
|
|
59
|
+
setFormulaSelections([]);
|
|
60
|
+
onOpenChange(false);
|
|
61
|
+
}, [setFormulaMode, setFormulaSelections, onOpenChange]);
|
|
62
|
+
const handleSubmit = useCallback((range, hasHeaders) => {
|
|
63
|
+
if (!request) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
onCreateTable(request.sheetId, request.activeCell, [{ range }], { range }, request.theme, request.bandedRange, { hasHeaders });
|
|
67
|
+
closeDialog();
|
|
68
|
+
}, [request, onCreateTable, closeDialog]);
|
|
25
69
|
return (React.createElement(Dialog, { modal: false, open: isOpen },
|
|
26
70
|
React.createElement(DialogContent, { onEscapeKeyDown: closeDialog, onCloseAutoFocus: (e) => {
|
|
27
71
|
e.preventDefault();
|
|
28
72
|
focusSheet?.();
|
|
29
73
|
} },
|
|
30
|
-
React.createElement(DialogTitle, { className: "rnc-drag-handle cursor-move" }, "
|
|
31
|
-
React.createElement(DialogDescription, null, "
|
|
32
|
-
React.createElement(DialogBody, null,
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
74
|
+
React.createElement(DialogTitle, { className: "rnc-drag-handle cursor-move" }, "Create Table"),
|
|
75
|
+
React.createElement(DialogDescription, null, "Where is the data for your table?"),
|
|
76
|
+
React.createElement(DialogBody, null, request && isOpen ? (React.createElement(CreateTableForm
|
|
77
|
+
// A fresh form per request: its fields are seeded from the request once.
|
|
78
|
+
, {
|
|
79
|
+
// A fresh form per request: its fields are seeded from the request once.
|
|
80
|
+
key: `${request.sheetId}:${request.range.startRowIndex}:${request.range.startColumnIndex}:${request.range.endRowIndex}:${request.range.endColumnIndex}`, request: request, onSubmit: handleSubmit, onCancel: closeDialog })) : null),
|
|
81
|
+
React.createElement(DialogCloseButton, { onClick: closeDialog },
|
|
82
|
+
React.createElement(Cross2Icon, null)))));
|
|
83
|
+
};
|
|
84
|
+
const CreateTableForm = ({ request, onSubmit, onCancel, }) => {
|
|
85
|
+
const [range, setRange] = useState(request.range);
|
|
86
|
+
const [hasHeaders, setHasHeaders] = useState(request.hasHeaders);
|
|
87
|
+
const formulaInput = useFormulaInputState(request.sheetId, {
|
|
88
|
+
...request.range,
|
|
89
|
+
sheetId: request.sheetId,
|
|
90
|
+
});
|
|
91
|
+
return (React.createElement("form", { onSubmit: (e) => {
|
|
92
|
+
e.preventDefault();
|
|
93
|
+
if (range) {
|
|
94
|
+
onSubmit(range, hasHeaders);
|
|
95
|
+
}
|
|
96
|
+
}, className: "m-0 p-0" },
|
|
97
|
+
React.createElement(Stack, { direction: "vertical", className: "pb-2 gap-2" },
|
|
98
|
+
React.createElement(FormulaInput, { onChange: (value) => {
|
|
99
|
+
// An unparsable range disables OK until the text reads as a range again.
|
|
100
|
+
setRange(undefined);
|
|
101
|
+
formulaInput.onChange(value, (parsed) => {
|
|
102
|
+
setRange(parsed);
|
|
103
|
+
});
|
|
104
|
+
}, value: formulaInput.value, required: true }),
|
|
105
|
+
React.createElement("label", { className: "font-system text-sm flex items-center gap-1" },
|
|
106
|
+
React.createElement("input", { type: "checkbox", id: "rnc-table-has-headers-element", checked: hasHeaders, name: "hasHeaders", onChange: (e) => setHasHeaders(e.target.checked) }),
|
|
107
|
+
"My table has headers")),
|
|
108
|
+
React.createElement("div", { className: "flex gap-1 pt-2" },
|
|
109
|
+
React.createElement(Button, { type: "submit", variant: "primary", size: "xs", disabled: !range }, "OK"),
|
|
110
|
+
React.createElement(Button, { size: "xs", onClick: onCancel, type: "button" }, "Cancel"))));
|
|
111
|
+
};
|
|
112
|
+
/**
|
|
113
|
+
* Excel's rule for a resized table: the header row stays where it is and the new range must
|
|
114
|
+
* overlap the original one. Overlaps with other tables or merged cells are refused by the engines
|
|
115
|
+
* themselves (`onResizeTable`).
|
|
116
|
+
*/
|
|
117
|
+
export const RESIZE_TABLE_RANGE_ERROR = "The header row must remain in the same row, and the resulting table range must overlap the original table range.";
|
|
118
|
+
export const getResizeTableRangeError = (table, range) => {
|
|
119
|
+
const overlapsColumns = range.startColumnIndex <= table.range.endColumnIndex &&
|
|
120
|
+
range.endColumnIndex >= table.range.startColumnIndex;
|
|
121
|
+
return range.startRowIndex === table.range.startRowIndex && overlapsColumns
|
|
122
|
+
? undefined
|
|
123
|
+
: RESIZE_TABLE_RANGE_ERROR;
|
|
124
|
+
};
|
|
125
|
+
/**
|
|
126
|
+
* Excel's "Resize Table" dialog: the table's range, editable, submitted through
|
|
127
|
+
* `onResizeTable` once it keeps the header row and overlaps the original range.
|
|
128
|
+
*/
|
|
129
|
+
export const ResizeTableEditor = ({ onResizeTable, }) => {
|
|
130
|
+
const [isOpen, onOpenChange] = useResizeTableDialogState();
|
|
131
|
+
const table = useResizingTable();
|
|
132
|
+
const setFormulaMode = useSetFormulaMode();
|
|
133
|
+
const setFormulaSelections = useSetFormulaSelections();
|
|
134
|
+
const focusSheet = useFocusSheet();
|
|
135
|
+
const closeDialog = useCallback(() => {
|
|
136
|
+
setFormulaMode(false);
|
|
137
|
+
setFormulaSelections([]);
|
|
138
|
+
onOpenChange(false);
|
|
139
|
+
}, [setFormulaMode, setFormulaSelections, onOpenChange]);
|
|
140
|
+
const handleSubmit = useCallback((range) => {
|
|
141
|
+
if (!table) {
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
onResizeTable(table.sheetId, table, range);
|
|
145
|
+
closeDialog();
|
|
146
|
+
}, [table, onResizeTable, closeDialog]);
|
|
147
|
+
return (React.createElement(Dialog, { modal: false, open: isOpen },
|
|
148
|
+
React.createElement(DialogContent, { onEscapeKeyDown: closeDialog, onCloseAutoFocus: (e) => {
|
|
149
|
+
e.preventDefault();
|
|
150
|
+
focusSheet?.();
|
|
151
|
+
} },
|
|
152
|
+
React.createElement(DialogTitle, { className: "rnc-drag-handle cursor-move" }, "Resize Table"),
|
|
153
|
+
React.createElement(DialogDescription, null, "Select the new data range for your table:"),
|
|
154
|
+
React.createElement(DialogBody, null, table && isOpen ? (React.createElement(ResizeTableForm
|
|
155
|
+
// A fresh form per table: its field is seeded from the table once.
|
|
156
|
+
, {
|
|
157
|
+
// A fresh form per table: its field is seeded from the table once.
|
|
158
|
+
key: `${table.sheetId}:${table.id}:${table.range.startRowIndex}:${table.range.startColumnIndex}:${table.range.endRowIndex}:${table.range.endColumnIndex}`, table: table, onSubmit: handleSubmit, onCancel: closeDialog })) : null),
|
|
159
|
+
React.createElement(DialogCloseButton, { onClick: closeDialog },
|
|
160
|
+
React.createElement(Cross2Icon, null)))));
|
|
161
|
+
};
|
|
162
|
+
const ResizeTableForm = ({ table, onSubmit, onCancel, }) => {
|
|
163
|
+
const [range, setRange] = useState(table.range);
|
|
164
|
+
const [error, setError] = useState();
|
|
165
|
+
const formulaInput = useFormulaInputState(table.sheetId, {
|
|
166
|
+
...table.range,
|
|
167
|
+
sheetId: table.sheetId,
|
|
168
|
+
});
|
|
169
|
+
return (React.createElement("form", { onSubmit: (e) => {
|
|
170
|
+
e.preventDefault();
|
|
171
|
+
if (!range) {
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
const rangeError = getResizeTableRangeError(table, range);
|
|
175
|
+
setError(rangeError);
|
|
176
|
+
if (!rangeError) {
|
|
177
|
+
onSubmit(range);
|
|
178
|
+
}
|
|
179
|
+
}, className: "m-0 p-0" },
|
|
180
|
+
React.createElement(Stack, { direction: "vertical", className: "pb-2 gap-2" },
|
|
181
|
+
React.createElement(FormulaInput, { onChange: (value) => {
|
|
182
|
+
// An unparsable range disables OK until the text reads as a range again.
|
|
183
|
+
setRange(undefined);
|
|
184
|
+
setError(undefined);
|
|
185
|
+
formulaInput.onChange(value, (parsed) => {
|
|
186
|
+
setRange(parsed);
|
|
187
|
+
});
|
|
188
|
+
}, value: formulaInput.value, required: true }),
|
|
189
|
+
React.createElement("p", { className: "font-system text-xs text-rnc-muted-foreground m-0" }, "Note: The headers must remain in the same row, and the resulting table range must overlap the original table range."),
|
|
190
|
+
error ? (React.createElement("p", { role: "alert", className: "font-system text-xs text-rnc-destructive m-0" }, error)) : null),
|
|
191
|
+
React.createElement("div", { className: "flex gap-1 pt-2" },
|
|
192
|
+
React.createElement(Button, { type: "submit", variant: "primary", size: "xs", disabled: !range }, "OK"),
|
|
193
|
+
React.createElement(Button, { size: "xs", onClick: onCancel, type: "button" }, "Cancel"))));
|
|
194
|
+
};
|
|
195
|
+
/**
|
|
196
|
+
* Excel's "Insert Slicers" dialog: the table's columns as checkboxes; OK creates one table-bound
|
|
197
|
+
* slicer per checked column (`buildTableSlicers`), placed right of the table.
|
|
198
|
+
*/
|
|
199
|
+
export const InsertSlicerEditor = ({ onCreateSlicer, }) => {
|
|
200
|
+
const [isOpen, onOpenChange] = useInsertSlicerDialogState();
|
|
201
|
+
const table = useInsertingSlicer();
|
|
202
|
+
const focusSheet = useFocusSheet();
|
|
203
|
+
const closeDialog = useCallback(() => onOpenChange(false), [onOpenChange]);
|
|
204
|
+
const handleSubmit = useCallback((columnIndexes) => {
|
|
205
|
+
if (!table) {
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
for (const slicer of buildTableSlicers(table, columnIndexes)) {
|
|
209
|
+
onCreateSlicer(slicer);
|
|
210
|
+
}
|
|
211
|
+
closeDialog();
|
|
212
|
+
}, [table, onCreateSlicer, closeDialog]);
|
|
213
|
+
return (React.createElement(Dialog, { modal: false, open: isOpen },
|
|
214
|
+
React.createElement(DialogContent, { onEscapeKeyDown: closeDialog, onCloseAutoFocus: (e) => {
|
|
215
|
+
e.preventDefault();
|
|
216
|
+
focusSheet?.();
|
|
217
|
+
} },
|
|
218
|
+
React.createElement(DialogTitle, { className: "rnc-drag-handle cursor-move" }, "Insert Slicers"),
|
|
219
|
+
React.createElement(DialogDescription, null, "Choose the columns to filter the table by:"),
|
|
220
|
+
React.createElement(DialogBody, null, table && isOpen ? (React.createElement(InsertSlicerForm
|
|
221
|
+
// A fresh form per table: its checkboxes are seeded from the table once.
|
|
222
|
+
, {
|
|
223
|
+
// A fresh form per table: its checkboxes are seeded from the table once.
|
|
224
|
+
key: `${table.sheetId}:${table.id}`, table: table, onSubmit: handleSubmit, onCancel: closeDialog })) : null),
|
|
225
|
+
React.createElement(DialogCloseButton, { onClick: closeDialog },
|
|
36
226
|
React.createElement(Cross2Icon, null)))));
|
|
37
227
|
};
|
|
38
|
-
const
|
|
39
|
-
const
|
|
228
|
+
const InsertSlicerForm = ({ table, onSubmit, onCancel, }) => {
|
|
229
|
+
const names = useMemo(() => getTableSlicerColumnNames(table), [table]);
|
|
230
|
+
const [checked, setChecked] = useState([]);
|
|
231
|
+
return (React.createElement("form", { onSubmit: (e) => {
|
|
232
|
+
e.preventDefault();
|
|
233
|
+
if (checked.length) {
|
|
234
|
+
onSubmit([...checked].sort((a, b) => a - b));
|
|
235
|
+
}
|
|
236
|
+
}, className: "m-0 p-0" },
|
|
237
|
+
React.createElement(Stack, { direction: "vertical", className: "pb-2 gap-1" }, names.map((name, index) => (React.createElement("label", { key: index, className: "font-system text-sm flex items-center gap-1" },
|
|
238
|
+
React.createElement("input", { type: "checkbox", name: "slicerColumn", value: index, checked: checked.includes(index), onChange: (e) => setChecked((prev) => e.target.checked
|
|
239
|
+
? [...prev, index]
|
|
240
|
+
: prev.filter((i) => i !== index)) }),
|
|
241
|
+
name)))),
|
|
242
|
+
React.createElement("div", { className: "flex gap-1 pt-2" },
|
|
243
|
+
React.createElement(Button, { type: "submit", variant: "primary", size: "xs", disabled: !checked.length }, "OK"),
|
|
244
|
+
React.createElement(Button, { size: "xs", onClick: onCancel, type: "button" }, "Cancel"))));
|
|
245
|
+
};
|
|
246
|
+
const TableEditorForm = ({ table, tables, namedRanges, sheetId, theme, onSubmit, onCancel, onRemoveTable, }) => {
|
|
247
|
+
const validationSchema = useMemo(() => createTableSchema(tables?.filter((t) => t.id !== table.id).map((t) => t.title) ?? [], namedRanges?.map((namedRange) => namedRange.name) ?? []), [tables, namedRanges, table.id]);
|
|
248
|
+
const { values: { title, showRowStripes = true, showColumnStripes = false, showFirstColumn = false, showLastColumn = false, filterButton = true, range, headerRow = true, totalRow = false, }, errors, handleChange, handleSubmit, setFieldValue, resetForm, } = useFormik({
|
|
40
249
|
initialValues: table,
|
|
41
250
|
enableReinitialize: true,
|
|
42
|
-
validationSchema
|
|
251
|
+
validationSchema,
|
|
43
252
|
onSubmit(values) {
|
|
44
253
|
const tableTheme = values.theme ?? "TableStyleLight1";
|
|
45
254
|
let bandedRange = values.bandedRange;
|
|
@@ -76,6 +285,16 @@ const TableEditorForm = ({ table, sheetId, theme, onSubmit, onCancel, onRemoveTa
|
|
|
76
285
|
});
|
|
77
286
|
}, value: formulaInput.value, required: true })),
|
|
78
287
|
React.createElement(Stack, { direction: "horizontal", className: "grid grid-cols-2 gap-2" },
|
|
288
|
+
React.createElement("label", { className: "font-system text-sm flex items-center gap-1" },
|
|
289
|
+
React.createElement("input", { type: "checkbox", id: "rnc-header-row-element", checked: headerRow ?? true, name: "headerRow", onChange: (e) => {
|
|
290
|
+
setFieldValue("headerRow", e.target.checked);
|
|
291
|
+
} }),
|
|
292
|
+
"Header row"),
|
|
293
|
+
React.createElement("label", { className: "font-system text-sm flex items-center gap-1" },
|
|
294
|
+
React.createElement("input", { type: "checkbox", id: "rnc-total-row-element", checked: totalRow ?? false, name: "totalRow", onChange: (e) => {
|
|
295
|
+
setFieldValue("totalRow", e.target.checked);
|
|
296
|
+
} }),
|
|
297
|
+
"Show total row"),
|
|
79
298
|
React.createElement("label", { className: "font-system text-sm flex items-center gap-1" },
|
|
80
299
|
React.createElement("input", { type: "checkbox", checked: showRowStripes ?? undefined, name: "showRowStripes", onChange: (e) => {
|
|
81
300
|
setFieldValue("showRowStripes", e.target.checked);
|
|
@@ -87,15 +306,20 @@ const TableEditorForm = ({ table, sheetId, theme, onSubmit, onCancel, onRemoveTa
|
|
|
87
306
|
} }),
|
|
88
307
|
"Banded columns"),
|
|
89
308
|
React.createElement("label", { className: "font-system text-sm flex items-center gap-1" },
|
|
90
|
-
React.createElement("input", { type: "checkbox", id: "rnc-
|
|
91
|
-
setFieldValue("
|
|
309
|
+
React.createElement("input", { type: "checkbox", id: "rnc-first-column-element", checked: showFirstColumn ?? false, name: "showFirstColumn", onChange: (e) => {
|
|
310
|
+
setFieldValue("showFirstColumn", e.target.checked);
|
|
92
311
|
} }),
|
|
93
|
-
"
|
|
312
|
+
"First column"),
|
|
94
313
|
React.createElement("label", { className: "font-system text-sm flex items-center gap-1" },
|
|
95
|
-
React.createElement("input", { type: "checkbox", id: "rnc-
|
|
96
|
-
setFieldValue("
|
|
314
|
+
React.createElement("input", { type: "checkbox", id: "rnc-last-column-element", checked: showLastColumn ?? false, name: "showLastColumn", onChange: (e) => {
|
|
315
|
+
setFieldValue("showLastColumn", e.target.checked);
|
|
316
|
+
} }),
|
|
317
|
+
"Last column"),
|
|
318
|
+
React.createElement("label", { className: "font-system text-sm flex items-center gap-1" },
|
|
319
|
+
React.createElement("input", { type: "checkbox", id: "rnc-filter-button-element", checked: filterButton ?? undefined, name: "filterButton", disabled: headerRow === false, onChange: (e) => {
|
|
320
|
+
setFieldValue("filterButton", e.target.checked);
|
|
97
321
|
} }),
|
|
98
|
-
"Show
|
|
322
|
+
"Show filter button"))),
|
|
99
323
|
React.createElement("div", { className: "flex gap-1 pt-2" },
|
|
100
324
|
React.createElement(Button, { type: "submit", variant: "primary", size: "xs" }, "Save"),
|
|
101
325
|
React.createElement(Button, { size: "xs", onClick: () => {
|
|
@@ -10,4 +10,5 @@ export * from "./editors/insert-image-editor";
|
|
|
10
10
|
export * from "./editors/insert-link-editor";
|
|
11
11
|
export * from "./editors/data-validation-editor";
|
|
12
12
|
export * from "./editors/embed-editor";
|
|
13
|
+
export * from "./editors/slicer-editor";
|
|
13
14
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../components/index.tsx"],"names":[],"mappings":"AAAA,cAAc,qCAAqC,CAAC;AACpD,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mCAAmC,CAAC;AAClD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0CAA0C,CAAC;AACzD,cAAc,qCAAqC,CAAC;AACpD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,kCAAkC,CAAC;AACjD,cAAc,wBAAwB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../components/index.tsx"],"names":[],"mappings":"AAAA,cAAc,qCAAqC,CAAC;AACpD,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mCAAmC,CAAC;AAClD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0CAA0C,CAAC;AACzD,cAAc,qCAAqC,CAAC;AACpD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,kCAAkC,CAAC;AACjD,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC"}
|
package/dist/esm/constants.d.ts
CHANGED
|
@@ -13,8 +13,16 @@ export declare const MERGED_CELL_REFUSAL_MESSAGE = "We can't do that to a merged
|
|
|
13
13
|
export declare const TABLE_SHIFT_REFUSAL_MESSAGE = "This won't work because it would move cells in a table on your worksheet.";
|
|
14
14
|
/** ANC-14 — the shifted band covers only part of a CSE / dynamic array. */
|
|
15
15
|
export declare const ARRAY_REFUSAL_MESSAGE = "You can't change part of an array.";
|
|
16
|
+
/** T-42 — a merge whose region touches a table (Excel refuses every merge inside a table). */
|
|
17
|
+
export declare const TABLE_MERGE_REFUSAL_MESSAGE = "This operation is not allowed. The operation is attempting to shift cells in a table on your worksheet.";
|
|
18
|
+
/** T-17 — a table resize whose new range would overlap another table on the sheet. */
|
|
19
|
+
export declare const TABLE_OVERLAP_REFUSAL_MESSAGE = "A table cannot overlap another table.";
|
|
20
|
+
/** T-17 — a table resize whose new range would cover a merged cell. */
|
|
21
|
+
export declare const TABLE_MERGED_CELLS_REFUSAL_MESSAGE = "A table cannot overlap a range that contains a PivotTable report, query results, protected cells or merged cells.";
|
|
22
|
+
/** T-81 — a fill whose target reaches a table's totals row (Excel's fill handle never extends over it). */
|
|
23
|
+
export declare const TABLE_TOTALS_FILL_REFUSAL_MESSAGE = "This won't work because it would overwrite the totals row of a table on your worksheet.";
|
|
16
24
|
/** Machine-readable refusal codes — the rnc engine's `CommitResult.rejected.code` uses the same set. */
|
|
17
|
-
export type StructuralRefusalCode = "off-sheet-push" | "torn-merge" | "torn-table" | "torn-array";
|
|
25
|
+
export type StructuralRefusalCode = "off-sheet-push" | "torn-merge" | "torn-table" | "torn-array" | "table-merge" | "table-overlap" | "table-merged-cells" | "table-totals-fill";
|
|
18
26
|
export type StructuralRefusal = {
|
|
19
27
|
code: StructuralRefusalCode;
|
|
20
28
|
title: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,oBAAoB,CAAC;AAE1D,2GAA2G;AAC3G,eAAO,MAAM,sBAAsB,ySACqQ,CAAC;AAEzS,4EAA4E;AAC5E,eAAO,MAAM,2BAA2B,uCAAuC,CAAC;AAEhF,0DAA0D;AAC1D,eAAO,MAAM,2BAA2B,8EACqC,CAAC;AAE9E,2EAA2E;AAC3E,eAAO,MAAM,qBAAqB,uCAAuC,CAAC;AAE1E,wGAAwG;AACxG,MAAM,MAAM,qBAAqB,GAC7B,gBAAgB,GAChB,YAAY,GACZ,YAAY,GACZ,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,oBAAoB,CAAC;AAE1D,2GAA2G;AAC3G,eAAO,MAAM,sBAAsB,ySACqQ,CAAC;AAEzS,4EAA4E;AAC5E,eAAO,MAAM,2BAA2B,uCAAuC,CAAC;AAEhF,0DAA0D;AAC1D,eAAO,MAAM,2BAA2B,8EACqC,CAAC;AAE9E,2EAA2E;AAC3E,eAAO,MAAM,qBAAqB,uCAAuC,CAAC;AAE1E,8FAA8F;AAC9F,eAAO,MAAM,2BAA2B,4GACmE,CAAC;AAE5G,sFAAsF;AACtF,eAAO,MAAM,6BAA6B,0CACD,CAAC;AAE1C,uEAAuE;AACvE,eAAO,MAAM,kCAAkC,sHACsE,CAAC;AAEtH,2GAA2G;AAC3G,eAAO,MAAM,iCAAiC,4FAC6C,CAAC;AAE5F,wGAAwG;AACxG,MAAM,MAAM,qBAAqB,GAC7B,gBAAgB,GAChB,YAAY,GACZ,YAAY,GACZ,YAAY,GACZ,aAAa,GACb,eAAe,GACf,oBAAoB,GACpB,mBAAmB,CAAC;AAExB,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,qBAAqB,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAAC,qBAAqB,EAAE,MAAM,CAS7E,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,MAAM,qBAAqB,KAC1B,iBAID,CAAC"}
|
package/dist/esm/constants.js
CHANGED
|
@@ -13,11 +13,23 @@ export const MERGED_CELL_REFUSAL_MESSAGE = "We can't do that to a merged cell.";
|
|
|
13
13
|
export const TABLE_SHIFT_REFUSAL_MESSAGE = "This won't work because it would move cells in a table on your worksheet.";
|
|
14
14
|
/** ANC-14 — the shifted band covers only part of a CSE / dynamic array. */
|
|
15
15
|
export const ARRAY_REFUSAL_MESSAGE = "You can't change part of an array.";
|
|
16
|
+
/** T-42 — a merge whose region touches a table (Excel refuses every merge inside a table). */
|
|
17
|
+
export const TABLE_MERGE_REFUSAL_MESSAGE = "This operation is not allowed. The operation is attempting to shift cells in a table on your worksheet.";
|
|
18
|
+
/** T-17 — a table resize whose new range would overlap another table on the sheet. */
|
|
19
|
+
export const TABLE_OVERLAP_REFUSAL_MESSAGE = "A table cannot overlap another table.";
|
|
20
|
+
/** T-17 — a table resize whose new range would cover a merged cell. */
|
|
21
|
+
export const TABLE_MERGED_CELLS_REFUSAL_MESSAGE = "A table cannot overlap a range that contains a PivotTable report, query results, protected cells or merged cells.";
|
|
22
|
+
/** T-81 — a fill whose target reaches a table's totals row (Excel's fill handle never extends over it). */
|
|
23
|
+
export const TABLE_TOTALS_FILL_REFUSAL_MESSAGE = "This won't work because it would overwrite the totals row of a table on your worksheet.";
|
|
16
24
|
export const STRUCTURAL_REFUSAL_MESSAGES = {
|
|
17
25
|
"off-sheet-push": OFF_SHEET_PUSH_MESSAGE,
|
|
18
26
|
"torn-merge": MERGED_CELL_REFUSAL_MESSAGE,
|
|
19
27
|
"torn-table": TABLE_SHIFT_REFUSAL_MESSAGE,
|
|
20
28
|
"torn-array": ARRAY_REFUSAL_MESSAGE,
|
|
29
|
+
"table-merge": TABLE_MERGE_REFUSAL_MESSAGE,
|
|
30
|
+
"table-overlap": TABLE_OVERLAP_REFUSAL_MESSAGE,
|
|
31
|
+
"table-merged-cells": TABLE_MERGED_CELLS_REFUSAL_MESSAGE,
|
|
32
|
+
"table-totals-fill": TABLE_TOTALS_FILL_REFUSAL_MESSAGE,
|
|
21
33
|
};
|
|
22
34
|
export const structuralRefusal = (code) => ({
|
|
23
35
|
code,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Formatters for auto-generated names such as "Sheet1", "
|
|
2
|
+
* Formatters for auto-generated names such as "Sheet1", "Table1",
|
|
3
3
|
* "Column1" and "Copy of Sheet1".
|
|
4
4
|
*
|
|
5
5
|
* Pass `generatedNames` to `useSpreadsheetState` to customize or
|
|
@@ -31,11 +31,19 @@ export interface GeneratedNames {
|
|
|
31
31
|
*/
|
|
32
32
|
sheetCopy?: (title: string) => string | undefined;
|
|
33
33
|
/**
|
|
34
|
-
* Title for a
|
|
34
|
+
* Title for a chartsheet created by "Move Chart → New sheet". Default:
|
|
35
|
+
* `Chart${index}` (Excel's pattern — the first unused number is picked).
|
|
36
|
+
*/
|
|
37
|
+
chartSheet?: (index: number) => string | undefined;
|
|
38
|
+
/**
|
|
39
|
+
* Title for a newly created table. Default: `Table${index}` (Excel's
|
|
40
|
+
* pattern — no space; the first unused number is picked).
|
|
35
41
|
*/
|
|
36
42
|
table?: (index: number) => string | undefined;
|
|
37
43
|
/**
|
|
38
|
-
*
|
|
44
|
+
* @deprecated No longer applied: a pasted table is named like a new one
|
|
45
|
+
* (the next free `Table${index}`, via `table`), as in Excel — `Copy of
|
|
46
|
+
* ${title}` is not a valid table name.
|
|
39
47
|
*/
|
|
40
48
|
tableCopy?: (title: string) => string | undefined;
|
|
41
49
|
/**
|
|
@@ -45,7 +53,9 @@ export interface GeneratedNames {
|
|
|
45
53
|
}
|
|
46
54
|
export declare const getGeneratedSheetName: (index: number, generatedNames?: GeneratedNames) => string;
|
|
47
55
|
export declare const getGeneratedSheetCopyName: (title: string, generatedNames?: GeneratedNames) => string;
|
|
56
|
+
export declare const getGeneratedChartSheetName: (index: number, generatedNames?: GeneratedNames) => string;
|
|
48
57
|
export declare const getGeneratedTableName: (index: number, generatedNames?: GeneratedNames) => string;
|
|
58
|
+
/** @deprecated See `GeneratedNames.tableCopy`. */
|
|
49
59
|
export declare const getGeneratedTableCopyName: (title: string, generatedNames?: GeneratedNames) => string;
|
|
50
60
|
export declare const getGeneratedTableColumnName: (index: number, generatedNames?: GeneratedNames) => string;
|
|
51
61
|
//# sourceMappingURL=generated-names.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generated-names.d.ts","sourceRoot":"","sources":["../../generated-names.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAC9C;;OAEG;IACH,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAClD
|
|
1
|
+
{"version":3,"file":"generated-names.d.ts","sourceRoot":"","sources":["../../generated-names.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAC9C;;OAEG;IACH,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAClD;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IACnD;;;OAGG;IACH,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAC9C;;;;OAIG;IACH,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAClD;;OAEG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;CACrD;AAED,eAAO,MAAM,qBAAqB,GAChC,OAAO,MAAM,EACb,iBAAiB,cAAc,KAC9B,MAA2D,CAAC;AAE/D,eAAO,MAAM,yBAAyB,GACpC,OAAO,MAAM,EACb,iBAAiB,cAAc,KAC9B,MAAkE,CAAC;AAEtE,eAAO,MAAM,0BAA0B,GACrC,OAAO,MAAM,EACb,iBAAiB,cAAc,KAC9B,MAAgE,CAAC;AAEpE,eAAO,MAAM,qBAAqB,GAChC,OAAO,MAAM,EACb,iBAAiB,cAAc,KAC9B,MAA2D,CAAC;AAE/D,kDAAkD;AAClD,eAAO,MAAM,yBAAyB,GACpC,OAAO,MAAM,EACb,iBAAiB,cAAc,KAC9B,MAAkE,CAAC;AAEtE,eAAO,MAAM,2BAA2B,GACtC,OAAO,MAAM,EACb,iBAAiB,cAAc,KAC9B,MAAkE,CAAC"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export const getGeneratedSheetName = (index, generatedNames) => generatedNames?.sheet?.(index) ?? `Sheet${index}`;
|
|
2
2
|
export const getGeneratedSheetCopyName = (title, generatedNames) => generatedNames?.sheetCopy?.(title) ?? `Copy of ${title}`;
|
|
3
|
-
export const
|
|
3
|
+
export const getGeneratedChartSheetName = (index, generatedNames) => generatedNames?.chartSheet?.(index) ?? `Chart${index}`;
|
|
4
|
+
export const getGeneratedTableName = (index, generatedNames) => generatedNames?.table?.(index) ?? `Table${index}`;
|
|
5
|
+
/** @deprecated See `GeneratedNames.tableCopy`. */
|
|
4
6
|
export const getGeneratedTableCopyName = (title, generatedNames) => generatedNames?.tableCopy?.(title) ?? `Copy of ${title}`;
|
|
5
7
|
export const getGeneratedTableColumnName = (index, generatedNames) => generatedNames?.tableColumn?.(index) ?? `Column${index}`;
|
package/dist/esm/helpers.d.ts
CHANGED
|
@@ -28,6 +28,11 @@ export declare function combineMapIterators<K, V>(...mapIterators: IterableItera
|
|
|
28
28
|
* @returns
|
|
29
29
|
*/
|
|
30
30
|
export declare function combineMapIteratorsWithFormatting<K, V, F>(...mapIterators: IterableIterator<[K, V, formatting?: F]>[]): IterableIterator<[K, V, formatting?: F]>;
|
|
31
|
+
/**
|
|
32
|
+
* Default title for a new table — `Table1`, `Table2`, … with the lowest
|
|
33
|
+
* number no existing table uses (case-insensitive), like Excel.
|
|
34
|
+
*/
|
|
35
|
+
export declare const getNextTableTitle: (tables?: Pick<TableView, "title">[] | null, generatedNames?: GeneratedNames) => string;
|
|
31
36
|
/**
|
|
32
37
|
* Get unique table column name
|
|
33
38
|
* @param columns
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAI7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAQxD;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,GAAI,CAAC,SAAS,QAAQ,EACvD,MAAM,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,EAAE,EACnE,gBAAwB,KACvB,OAAO,CAAC,CAAC,CAAC,EAeZ,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,WAAW,GACtB,QAAQ,UAAU,GAAG,SAAS,KAC7B,MAAM,IAAI,SAEZ,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,CAAC,EACtC,GAAG,YAAY,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAC1C,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAkB1B;AAED;;;;GAIG;AACH,wBAAgB,iCAAiC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EACvD,GAAG,YAAY,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAC1D,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAkB1C;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAC5B,SAAS,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,GAAG,IAAI,EAC1C,iBAAiB,cAAc,WAK9B,CAAC;AAEJ;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,GACjC,UAAU,MAAM,EAAE,GAAG,IAAI,EACzB,iBAAiB,cAAc,WAYhC,CAAC;AAIF,eAAO,MAAM,kBAAkB,GAC7B,QAAQ,SAAS,EAAE,GAAG,SAAS,EAC/B,aAAa,SAAS,0BAsBvB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,UAAU,GAAI,KAAK,MAAM,GAAG,IAAI,GAAG,SAAS,WA6BxD,CAAC;AAEF,eAAO,MAAM,oBAAoB,WAAW,CAAC"}
|
package/dist/esm/helpers.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getNextTableName } from "@rowsncolumns/utils";
|
|
2
|
+
import { getGeneratedTableColumnName, getGeneratedTableName, } from "./generated-names";
|
|
2
3
|
import { defaultCellCoords, defaultSheetId, SheetCell } from "./sheet-cell";
|
|
3
4
|
/**
|
|
4
5
|
* Convert
|
|
@@ -77,6 +78,11 @@ export function combineMapIteratorsWithFormatting(...mapIterators) {
|
|
|
77
78
|
},
|
|
78
79
|
};
|
|
79
80
|
}
|
|
81
|
+
/**
|
|
82
|
+
* Default title for a new table — `Table1`, `Table2`, … with the lowest
|
|
83
|
+
* number no existing table uses (case-insensitive), like Excel.
|
|
84
|
+
*/
|
|
85
|
+
export const getNextTableTitle = (tables, generatedNames) => getNextTableName(tables?.map((table) => table.title) ?? [], (index) => getGeneratedTableName(index, generatedNames));
|
|
80
86
|
/**
|
|
81
87
|
* Get unique table column name
|
|
82
88
|
* @param columns
|
|
@@ -33,11 +33,12 @@ export type UseOnChangeBatchProps<T extends CellData, S extends Sheet = Sheet> =
|
|
|
33
33
|
onChangeSheetData: UseSpreadsheetProps<T, S>["onChangeSheetData"];
|
|
34
34
|
onChangeSheets: UseSpreadsheetProps<T, S>["onChangeSheets"];
|
|
35
35
|
onChangeTables?: UseSpreadsheetProps<T, S>["onChangeTables"];
|
|
36
|
+
onChangeCharts?: UseSpreadsheetProps<T, S>["onChangeCharts"];
|
|
36
37
|
onChangeCitations?: UseSpreadsheetProps<T, S>["onChangeCitations"];
|
|
37
38
|
onChangeTableColumn?: (sheetId: number, coords: {
|
|
38
39
|
rowIndex: number;
|
|
39
40
|
columnIndex: number;
|
|
40
|
-
}, value: string | boolean | undefined, currentTable: TableView | undefined, isRowExpansion: boolean, isColumnExpansion: boolean, range: GridRange) => void;
|
|
41
|
+
}, value: string | boolean | undefined, currentTable: TableView | undefined, isRowExpansion: boolean, isColumnExpansion: boolean, range: GridRange, headerValues?: (string | boolean | number | null | undefined)[]) => void;
|
|
41
42
|
onChangeCalculatedColumn?: (sheetId: number, coords: {
|
|
42
43
|
rowIndex: number;
|
|
43
44
|
columnIndex: number;
|
|
@@ -49,6 +50,22 @@ export type UseOnChangeBatchProps<T extends CellData, S extends Sheet = Sheet> =
|
|
|
49
50
|
tokenizer?(value: string): ParsedToken[];
|
|
50
51
|
onCommand?: OnCommand;
|
|
51
52
|
generatedNames?: GeneratedNames;
|
|
53
|
+
/** `useUndoRedo`'s `batchHistory`: the writes and the table growth they trigger undo as one step when wired. */
|
|
54
|
+
batchHistory?: <R>(action: () => R) => R;
|
|
55
|
+
/**
|
|
56
|
+
* Excel's "Include new rows and columns in table" AutoCorrect option: a value typed, pasted or
|
|
57
|
+
* filled into the row below / column right of a table grows the table. `false` turns the
|
|
58
|
+
* auto-expansion off (the "Stop Automatically Expanding Tables" smart-tag action).
|
|
59
|
+
* @default true
|
|
60
|
+
*/
|
|
61
|
+
autoExpandTables?: boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Excel's "Fill formulas in tables to create calculated columns" AutoCorrect option. `false`
|
|
64
|
+
* leaves a formula typed into a table column a one-cell edit (the "Stop automatically creating
|
|
65
|
+
* calculated columns" smart-tag action).
|
|
66
|
+
* @default true
|
|
67
|
+
*/
|
|
68
|
+
autoCalculatedColumns?: boolean;
|
|
52
69
|
};
|
|
53
|
-
export declare const useOnChangeBatch: <T extends CellData, K extends CellFormat, S extends Sheet = Sheet>({ locale, cellXfsRegistry, sharedStringRegistry, getDataValidationById, enqueueCalculation, onChangeSheetData, onChangeSheets, onChangeTables, tables, createHistory, getFormattedValue, getUserEnteredValue, getCellDimensions, getRowHeight, isMergedCell, enqueueGraphOperation, getDependents, getSheetName, onChangeCitations, onCommand, generatedNames, }: UseOnChangeBatchProps<T, S>) => (sheetId: number, ranges: GridRange[] | GridRange, values: (string | boolean | number | null | undefined)[][] | string | boolean | number | null | undefined, formatting?: (K | undefined | null)[][] | K | null | undefined, citations?: (string | undefined | null)[][] | string | null | undefined, changeBatchOptions?: ChangeBatchOptions) => void;
|
|
70
|
+
export declare const useOnChangeBatch: <T extends CellData, K extends CellFormat, S extends Sheet = Sheet>({ locale, cellXfsRegistry, sharedStringRegistry, getDataValidationById, enqueueCalculation, onChangeSheetData, onChangeSheets, onChangeTables, onChangeCharts, tables, createHistory, getFormattedValue, getUserEnteredValue, getCellDimensions, getRowHeight, isMergedCell, enqueueGraphOperation, getDependents, getSheetName, onChangeCitations, onCommand, generatedNames, batchHistory, autoExpandTables, autoCalculatedColumns, }: UseOnChangeBatchProps<T, S>) => (sheetId: number, ranges: GridRange[] | GridRange, values: (string | boolean | number | null | undefined)[][] | string | boolean | number | null | undefined, formatting?: (K | undefined | null)[][] | K | null | undefined, citations?: (string | undefined | null)[][] | string | null | undefined, changeBatchOptions?: ChangeBatchOptions) => void;
|
|
54
71
|
//# sourceMappingURL=use-on-change-batch.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-on-change-batch.d.ts","sourceRoot":"","sources":["../../../hooks/use-on-change-batch.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"use-on-change-batch.d.ts","sourceRoot":"","sources":["../../../hooks/use-on-change-batch.ts"],"names":[],"mappings":"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"}
|