@rowsncolumns/spreadsheet 10.3.1 → 10.4.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/banded-ranges.d.ts.map +1 -1
- package/dist/cjs/api/banded-ranges.js +40 -14
- package/dist/cjs/api/calculated-column-fill.d.ts +43 -0
- package/dist/cjs/api/calculated-column-fill.d.ts.map +1 -0
- package/dist/cjs/api/calculated-column-fill.js +16 -0
- package/dist/cjs/api/chart-sheet.d.ts +8 -0
- package/dist/cjs/api/chart-sheet.d.ts.map +1 -0
- package/dist/cjs/api/chart-sheet.js +20 -0
- package/dist/cjs/api/chart-source-ranges.d.ts +64 -0
- package/dist/cjs/api/chart-source-ranges.d.ts.map +1 -0
- package/dist/cjs/api/chart-source-ranges.js +175 -0
- package/dist/cjs/api/selections.d.ts +3 -3
- package/dist/cjs/api/selections.d.ts.map +1 -1
- package/dist/cjs/api/selections.js +28 -2
- package/dist/cjs/api/spreadsheet-api.d.ts +16 -3
- package/dist/cjs/api/spreadsheet-api.d.ts.map +1 -1
- package/dist/cjs/api/spreadsheet-api.js +22 -2
- package/dist/cjs/api/table-auto-expansion.d.ts +37 -0
- package/dist/cjs/api/table-auto-expansion.d.ts.map +1 -0
- package/dist/cjs/api/table-auto-expansion.js +16 -0
- package/dist/cjs/api/table.d.ts +49 -1
- package/dist/cjs/api/table.d.ts.map +1 -1
- package/dist/cjs/api/table.js +145 -1
- package/dist/cjs/api/validation.d.ts +26 -1
- package/dist/cjs/api/validation.d.ts.map +1 -1
- package/dist/cjs/api/validation.js +127 -9
- package/dist/cjs/atoms/calculated-column-fill.atom.d.ts +15 -0
- package/dist/cjs/atoms/calculated-column-fill.atom.d.ts.map +1 -0
- package/dist/cjs/atoms/calculated-column-fill.atom.js +18 -0
- package/dist/cjs/atoms/chart-actions.atom.d.ts +40 -0
- package/dist/cjs/atoms/chart-actions.atom.d.ts.map +1 -0
- package/dist/cjs/atoms/chart-actions.atom.js +66 -0
- package/dist/cjs/atoms/index.d.ts +5 -0
- package/dist/cjs/atoms/index.d.ts.map +1 -1
- package/dist/cjs/atoms/index.js +5 -0
- package/dist/cjs/atoms/move-chart-dialog.atom.d.ts +28 -0
- package/dist/cjs/atoms/move-chart-dialog.atom.d.ts.map +1 -0
- package/dist/cjs/atoms/move-chart-dialog.atom.js +34 -0
- package/dist/cjs/atoms/selected-chart-embed.atom.d.ts +9 -1
- package/dist/cjs/atoms/selected-chart-embed.atom.d.ts.map +1 -1
- package/dist/cjs/atoms/selected-chart-embed.atom.js +18 -1
- package/dist/cjs/atoms/selected-chart-series.atom.d.ts +24 -0
- package/dist/cjs/atoms/selected-chart-series.atom.d.ts.map +1 -0
- package/dist/cjs/atoms/selected-chart-series.atom.js +11 -0
- package/dist/cjs/atoms/sheet-context.atom.d.ts +2 -0
- package/dist/cjs/atoms/sheet-context.atom.d.ts.map +1 -1
- package/dist/cjs/atoms/sheet-context.atom.js +5 -2
- package/dist/cjs/atoms/sparkline-dialog.atom.d.ts +34 -0
- package/dist/cjs/atoms/sparkline-dialog.atom.d.ts.map +1 -0
- package/dist/cjs/atoms/sparkline-dialog.atom.js +30 -0
- package/dist/cjs/atoms/table-auto-expansion.atom.d.ts +14 -0
- package/dist/cjs/atoms/table-auto-expansion.atom.d.ts.map +1 -0
- package/dist/cjs/atoms/table-auto-expansion.atom.js +17 -0
- package/dist/cjs/components/calculated-column-smart-tag/index.d.ts +25 -0
- package/dist/cjs/components/calculated-column-smart-tag/index.d.ts.map +1 -0
- package/dist/cjs/components/calculated-column-smart-tag/index.js +31 -0
- package/dist/cjs/components/canvas-grid/index.d.ts.map +1 -1
- package/dist/cjs/components/canvas-grid/index.js +393 -72
- package/dist/cjs/components/canvas-grid/typings.d.ts +127 -14
- package/dist/cjs/components/canvas-grid/typings.d.ts.map +1 -1
- package/dist/cjs/components/cell/index.d.ts.map +1 -1
- package/dist/cjs/components/cell/index.js +3 -3
- package/dist/cjs/components/cell/typings.d.ts +13 -0
- package/dist/cjs/components/cell/typings.d.ts.map +1 -1
- package/dist/cjs/components/cell-filter/index.d.ts.map +1 -1
- package/dist/cjs/components/cell-filter/index.js +13 -2
- package/dist/cjs/components/cell-input/formula-bar-cell-input.d.ts.map +1 -1
- package/dist/cjs/components/cell-input/formula-bar-cell-input.js +4 -1
- package/dist/cjs/components/cell-structured/sparkline-math.d.ts +28 -5
- package/dist/cjs/components/cell-structured/sparkline-math.d.ts.map +1 -1
- package/dist/cjs/components/cell-structured/sparkline-math.js +93 -5
- package/dist/cjs/components/cell-structured/sparkline.d.ts +1 -1
- package/dist/cjs/components/cell-structured/sparkline.d.ts.map +1 -1
- package/dist/cjs/components/cell-structured/sparkline.js +3 -3
- package/dist/cjs/components/cell-structured/types.d.ts +1 -1
- package/dist/cjs/components/cell-structured/types.d.ts.map +1 -1
- package/dist/cjs/components/chart-sheet-view/index.d.ts +27 -0
- package/dist/cjs/components/chart-sheet-view/index.d.ts.map +1 -0
- package/dist/cjs/components/chart-sheet-view/index.js +35 -0
- package/dist/cjs/components/context-menu/embed-context-menu.d.ts +48 -0
- package/dist/cjs/components/context-menu/embed-context-menu.d.ts.map +1 -0
- package/dist/cjs/components/context-menu/embed-context-menu.js +123 -0
- package/dist/cjs/components/context-menu/index.d.ts +23 -2
- package/dist/cjs/components/context-menu/index.d.ts.map +1 -1
- package/dist/cjs/components/context-menu/index.js +217 -39
- package/dist/cjs/components/context-menu/total-row-function-menu.d.ts +33 -0
- package/dist/cjs/components/context-menu/total-row-function-menu.d.ts.map +1 -0
- package/dist/cjs/components/context-menu/total-row-function-menu.js +58 -0
- package/dist/cjs/components/context-menu/total-row-functions.d.ts +12 -12
- package/dist/cjs/components/context-menu/total-row-functions.d.ts.map +1 -1
- package/dist/cjs/components/context-menu/total-row-functions.js +39 -39
- package/dist/cjs/components/embeds/chart-component.d.ts +17 -0
- package/dist/cjs/components/embeds/chart-component.d.ts.map +1 -1
- package/dist/cjs/components/embeds/embed-draggable.d.ts +61 -4
- package/dist/cjs/components/embeds/embed-draggable.d.ts.map +1 -1
- package/dist/cjs/components/embeds/embed-draggable.js +214 -39
- package/dist/cjs/components/filter-box/date-tree.d.ts +28 -0
- package/dist/cjs/components/filter-box/date-tree.d.ts.map +1 -0
- package/dist/cjs/components/filter-box/date-tree.js +147 -0
- package/dist/cjs/components/filter-box/filter-by-condition.d.ts +14 -2
- package/dist/cjs/components/filter-box/filter-by-condition.d.ts.map +1 -1
- package/dist/cjs/components/filter-box/filter-by-condition.js +95 -19
- package/dist/cjs/components/filter-box/filter-by-value.d.ts.map +1 -1
- package/dist/cjs/components/filter-box/filter-by-value.js +126 -40
- package/dist/cjs/components/filter-box/index.d.ts +7 -1
- package/dist/cjs/components/filter-box/index.d.ts.map +1 -1
- package/dist/cjs/components/filter-box/index.js +102 -11
- package/dist/cjs/components/move-chart-dialog/index.d.ts +34 -0
- package/dist/cjs/components/move-chart-dialog/index.d.ts.map +1 -0
- package/dist/cjs/components/move-chart-dialog/index.js +96 -0
- package/dist/cjs/components/print-preview/page-block.d.ts +9 -1
- package/dist/cjs/components/print-preview/page-block.d.ts.map +1 -1
- package/dist/cjs/components/print-preview/page-block.js +28 -2
- package/dist/cjs/components/print-preview/print-preview-dialog.d.ts +8 -1
- package/dist/cjs/components/print-preview/print-preview-dialog.d.ts.map +1 -1
- package/dist/cjs/components/print-preview/print-preview-dialog.js +144 -3
- package/dist/cjs/components/print-preview/run-print.d.ts.map +1 -1
- package/dist/cjs/components/print-preview/run-print.js +19 -7
- package/dist/cjs/components/print-preview/use-page-layout.d.ts +47 -0
- package/dist/cjs/components/print-preview/use-page-layout.d.ts.map +1 -1
- package/dist/cjs/components/print-preview/use-page-layout.js +81 -7
- package/dist/cjs/components/selection/index.d.ts +1 -1
- package/dist/cjs/components/selection/index.d.ts.map +1 -1
- package/dist/cjs/components/selection/index.js +6 -2
- package/dist/cjs/components/selection/types.d.ts +15 -0
- package/dist/cjs/components/selection/types.d.ts.map +1 -1
- package/dist/cjs/components/sheet-tabs/index.d.ts.map +1 -1
- package/dist/cjs/components/sheet-tabs/index.js +2 -2
- package/dist/cjs/components/sheet-tabs/sheet-tab.d.ts +1 -1
- package/dist/cjs/components/sheet-tabs/sheet-tab.d.ts.map +1 -1
- package/dist/cjs/components/sheet-tabs/sheet-tab.js +3 -1
- package/dist/cjs/components/sparkline-dialog/index.d.ts +43 -0
- package/dist/cjs/components/sparkline-dialog/index.d.ts.map +1 -0
- package/dist/cjs/components/sparkline-dialog/index.js +127 -0
- package/dist/cjs/components/subtotal-dialog/index.d.ts.map +1 -1
- package/dist/cjs/components/subtotal-dialog/index.js +10 -1
- package/dist/cjs/components/table-auto-expansion-smart-tag/index.d.ts +24 -0
- package/dist/cjs/components/table-auto-expansion-smart-tag/index.d.ts.map +1 -0
- package/dist/cjs/components/table-auto-expansion-smart-tag/index.js +31 -0
- package/dist/cjs/components/toolbar/index.d.ts +1 -0
- package/dist/cjs/components/toolbar/index.d.ts.map +1 -1
- package/dist/cjs/components/toolbar/index.js +1 -0
- package/dist/cjs/components/toolbar/insert-menu.d.ts +2 -1
- package/dist/cjs/components/toolbar/insert-menu.d.ts.map +1 -1
- package/dist/cjs/components/toolbar/insert-menu.js +24 -1
- package/dist/cjs/components/toolbar/merge-cells-selector.d.ts +4 -1
- package/dist/cjs/components/toolbar/merge-cells-selector.d.ts.map +1 -1
- package/dist/cjs/components/toolbar/merge-cells-selector.js +11 -5
- package/dist/cjs/components/toolbar/sparkline-actions.d.ts +31 -0
- package/dist/cjs/components/toolbar/sparkline-actions.d.ts.map +1 -0
- package/dist/cjs/components/toolbar/sparkline-actions.js +273 -0
- package/dist/cjs/components/toolbar/table-actions.d.ts +9 -1
- package/dist/cjs/components/toolbar/table-actions.d.ts.map +1 -1
- package/dist/cjs/components/toolbar/table-actions.js +17 -7
- package/dist/cjs/components/toolbar/table-style-selector.d.ts +38 -2
- package/dist/cjs/components/toolbar/table-style-selector.d.ts.map +1 -1
- package/dist/cjs/components/toolbar/table-style-selector.js +241 -389
- package/dist/cjs/config.d.ts +2 -0
- package/dist/cjs/config.d.ts.map +1 -1
- package/dist/cjs/config.js +31 -1
- package/dist/cjs/helpers.d.ts +1 -1
- package/dist/cjs/helpers.d.ts.map +1 -1
- package/dist/cjs/helpers.js +13 -2
- package/dist/cjs/hooks/use-cell-renderer.d.ts +16 -1
- package/dist/cjs/hooks/use-cell-renderer.d.ts.map +1 -1
- package/dist/cjs/hooks/use-cell-renderer.js +20 -8
- package/dist/cjs/hooks/use-chart-clipboard.d.ts +55 -0
- package/dist/cjs/hooks/use-chart-clipboard.d.ts.map +1 -0
- package/dist/cjs/hooks/use-chart-clipboard.js +231 -0
- package/dist/cjs/hooks/use-chart-source-ranges.d.ts +27 -0
- package/dist/cjs/hooks/use-chart-source-ranges.d.ts.map +1 -0
- package/dist/cjs/hooks/use-chart-source-ranges.js +211 -0
- package/dist/cjs/hooks/use-context-setter.d.ts.map +1 -1
- package/dist/cjs/hooks/use-context-setter.js +3 -1
- package/dist/cjs/hooks/use-editable.d.ts +9 -1
- package/dist/cjs/hooks/use-editable.d.ts.map +1 -1
- package/dist/cjs/hooks/use-editable.js +25 -1
- package/dist/cjs/hooks/use-embeds-charts.d.ts +64 -4
- package/dist/cjs/hooks/use-embeds-charts.d.ts.map +1 -1
- package/dist/cjs/hooks/use-embeds-charts.js +412 -41
- package/dist/cjs/hooks/use-grid-children.d.ts +2 -2
- package/dist/cjs/hooks/use-grid-children.d.ts.map +1 -1
- package/dist/cjs/hooks/use-grid-children.js +12 -6
- package/dist/cjs/hooks/use-isomorphic-layout-effect.d.ts +2 -2
- package/dist/cjs/hooks/use-isomorphic-layout-effect.d.ts.map +1 -1
- package/dist/cjs/hooks/use-keyboard-handler.d.ts +2 -1
- package/dist/cjs/hooks/use-keyboard-handler.d.ts.map +1 -1
- package/dist/cjs/hooks/use-keyboard-handler.js +8 -2
- package/dist/cjs/hooks/use-reveal-chart-embed.d.ts +17 -0
- package/dist/cjs/hooks/use-reveal-chart-embed.d.ts.map +1 -0
- package/dist/cjs/hooks/use-reveal-chart-embed.js +40 -0
- package/dist/cjs/hooks/use-selection-renderer.d.ts +13 -1
- package/dist/cjs/hooks/use-selection-renderer.d.ts.map +1 -1
- package/dist/cjs/hooks/use-selection-renderer.js +37 -7
- package/dist/cjs/hooks/use-selection.d.ts +9 -1
- package/dist/cjs/hooks/use-selection.d.ts.map +1 -1
- package/dist/cjs/hooks/use-selection.js +118 -30
- package/dist/cjs/hooks/use-structured-reference-selection.d.ts +1 -1
- package/dist/cjs/hooks/use-structured-reference-selection.d.ts.map +1 -1
- package/dist/cjs/hooks/use-structured-reference-selection.js +10 -0
- package/dist/cjs/hooks/use-table-hit-zones.d.ts +61 -0
- package/dist/cjs/hooks/use-table-hit-zones.d.ts.map +1 -0
- package/dist/cjs/hooks/use-table-hit-zones.js +157 -0
- package/dist/cjs/hooks/use-table-resizer.d.ts +7 -0
- package/dist/cjs/hooks/use-table-resizer.d.ts.map +1 -1
- package/dist/cjs/hooks/use-table-resizer.js +22 -10
- package/dist/cjs/index.d.ts +13 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +17 -1
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/cjs/types.d.ts +289 -4
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/cjs/utils/copy-as-picture.d.ts +13 -0
- package/dist/cjs/utils/copy-as-picture.d.ts.map +1 -0
- package/dist/cjs/utils/copy-as-picture.js +70 -0
- package/dist/cjs/utils/pivot-chart-field-buttons.d.ts +19 -0
- package/dist/cjs/utils/pivot-chart-field-buttons.d.ts.map +1 -0
- package/dist/cjs/utils/pivot-chart-field-buttons.js +25 -0
- package/dist/cjs/utils/z-order.d.ts +47 -0
- package/dist/cjs/utils/z-order.d.ts.map +1 -0
- package/dist/cjs/utils/z-order.js +124 -0
- package/dist/esm/api/banded-ranges.d.ts.map +1 -1
- package/dist/esm/api/banded-ranges.js +39 -12
- package/dist/esm/api/calculated-column-fill.d.ts +43 -0
- package/dist/esm/api/calculated-column-fill.d.ts.map +1 -0
- package/dist/esm/api/calculated-column-fill.js +10 -0
- package/dist/esm/api/chart-sheet.d.ts +8 -0
- package/dist/esm/api/chart-sheet.d.ts.map +1 -0
- package/dist/esm/api/chart-sheet.js +15 -0
- package/dist/esm/api/chart-source-ranges.d.ts +64 -0
- package/dist/esm/api/chart-source-ranges.d.ts.map +1 -0
- package/dist/esm/api/chart-source-ranges.js +168 -0
- package/dist/esm/api/selections.d.ts +3 -3
- package/dist/esm/api/selections.d.ts.map +1 -1
- package/dist/esm/api/selections.js +26 -2
- package/dist/esm/api/spreadsheet-api.d.ts +16 -3
- package/dist/esm/api/spreadsheet-api.d.ts.map +1 -1
- package/dist/esm/api/spreadsheet-api.js +18 -2
- package/dist/esm/api/table-auto-expansion.d.ts +37 -0
- package/dist/esm/api/table-auto-expansion.d.ts.map +1 -0
- package/dist/esm/api/table-auto-expansion.js +10 -0
- package/dist/esm/api/table.d.ts +49 -1
- package/dist/esm/api/table.d.ts.map +1 -1
- package/dist/esm/api/table.js +138 -1
- package/dist/esm/api/validation.d.ts +26 -1
- package/dist/esm/api/validation.d.ts.map +1 -1
- package/dist/esm/api/validation.js +119 -9
- package/dist/esm/atoms/calculated-column-fill.atom.d.ts +15 -0
- package/dist/esm/atoms/calculated-column-fill.atom.d.ts.map +1 -0
- package/dist/esm/atoms/calculated-column-fill.atom.js +12 -0
- package/dist/esm/atoms/chart-actions.atom.d.ts +40 -0
- package/dist/esm/atoms/chart-actions.atom.d.ts.map +1 -0
- package/dist/esm/atoms/chart-actions.atom.js +58 -0
- package/dist/esm/atoms/index.d.ts +5 -0
- package/dist/esm/atoms/index.d.ts.map +1 -1
- package/dist/esm/atoms/index.js +5 -0
- package/dist/esm/atoms/move-chart-dialog.atom.d.ts +28 -0
- package/dist/esm/atoms/move-chart-dialog.atom.d.ts.map +1 -0
- package/dist/esm/atoms/move-chart-dialog.atom.js +25 -0
- package/dist/esm/atoms/selected-chart-embed.atom.d.ts +9 -1
- package/dist/esm/atoms/selected-chart-embed.atom.d.ts.map +1 -1
- package/dist/esm/atoms/selected-chart-embed.atom.js +19 -2
- package/dist/esm/atoms/selected-chart-series.atom.d.ts +24 -0
- package/dist/esm/atoms/selected-chart-series.atom.d.ts.map +1 -0
- package/dist/esm/atoms/selected-chart-series.atom.js +4 -0
- package/dist/esm/atoms/sheet-context.atom.d.ts +2 -0
- package/dist/esm/atoms/sheet-context.atom.d.ts.map +1 -1
- package/dist/esm/atoms/sheet-context.atom.js +2 -0
- package/dist/esm/atoms/sparkline-dialog.atom.d.ts +34 -0
- package/dist/esm/atoms/sparkline-dialog.atom.d.ts.map +1 -0
- package/dist/esm/atoms/sparkline-dialog.atom.js +21 -0
- package/dist/esm/atoms/table-auto-expansion.atom.d.ts +14 -0
- package/dist/esm/atoms/table-auto-expansion.atom.d.ts.map +1 -0
- package/dist/esm/atoms/table-auto-expansion.atom.js +11 -0
- package/dist/esm/components/calculated-column-smart-tag/index.d.ts +25 -0
- package/dist/esm/components/calculated-column-smart-tag/index.d.ts.map +1 -0
- package/dist/esm/components/calculated-column-smart-tag/index.js +25 -0
- package/dist/esm/components/canvas-grid/index.d.ts.map +1 -1
- package/dist/esm/components/canvas-grid/index.js +332 -21
- package/dist/esm/components/canvas-grid/typings.d.ts +127 -14
- package/dist/esm/components/canvas-grid/typings.d.ts.map +1 -1
- package/dist/esm/components/cell/index.d.ts.map +1 -1
- package/dist/esm/components/cell/index.js +3 -3
- package/dist/esm/components/cell/typings.d.ts +13 -0
- package/dist/esm/components/cell/typings.d.ts.map +1 -1
- package/dist/esm/components/cell-filter/index.d.ts.map +1 -1
- package/dist/esm/components/cell-filter/index.js +14 -3
- package/dist/esm/components/cell-input/formula-bar-cell-input.d.ts.map +1 -1
- package/dist/esm/components/cell-input/formula-bar-cell-input.js +4 -1
- package/dist/esm/components/cell-structured/sparkline-math.d.ts +28 -5
- package/dist/esm/components/cell-structured/sparkline-math.d.ts.map +1 -1
- package/dist/esm/components/cell-structured/sparkline-math.js +58 -4
- package/dist/esm/components/cell-structured/sparkline.d.ts +1 -1
- package/dist/esm/components/cell-structured/sparkline.d.ts.map +1 -1
- package/dist/esm/components/cell-structured/sparkline.js +3 -3
- package/dist/esm/components/cell-structured/types.d.ts +1 -1
- package/dist/esm/components/cell-structured/types.d.ts.map +1 -1
- package/dist/esm/components/chart-sheet-view/index.d.ts +27 -0
- package/dist/esm/components/chart-sheet-view/index.d.ts.map +1 -0
- package/dist/esm/components/chart-sheet-view/index.js +30 -0
- package/dist/esm/components/context-menu/embed-context-menu.d.ts +48 -0
- package/dist/esm/components/context-menu/embed-context-menu.d.ts.map +1 -0
- package/dist/esm/components/context-menu/embed-context-menu.js +112 -0
- package/dist/esm/components/context-menu/index.d.ts +23 -2
- package/dist/esm/components/context-menu/index.d.ts.map +1 -1
- package/dist/esm/components/context-menu/index.js +174 -38
- package/dist/esm/components/context-menu/total-row-function-menu.d.ts +33 -0
- package/dist/esm/components/context-menu/total-row-function-menu.d.ts.map +1 -0
- package/dist/esm/components/context-menu/total-row-function-menu.js +50 -0
- package/dist/esm/components/context-menu/total-row-functions.d.ts +12 -12
- package/dist/esm/components/context-menu/total-row-functions.d.ts.map +1 -1
- package/dist/esm/components/context-menu/total-row-functions.js +29 -31
- package/dist/esm/components/embeds/chart-component.d.ts +17 -0
- package/dist/esm/components/embeds/chart-component.d.ts.map +1 -1
- package/dist/esm/components/embeds/embed-draggable.d.ts +61 -4
- package/dist/esm/components/embeds/embed-draggable.d.ts.map +1 -1
- package/dist/esm/components/embeds/embed-draggable.js +204 -45
- package/dist/esm/components/filter-box/date-tree.d.ts +28 -0
- package/dist/esm/components/filter-box/date-tree.d.ts.map +1 -0
- package/dist/esm/components/filter-box/date-tree.js +107 -0
- package/dist/esm/components/filter-box/filter-by-condition.d.ts +14 -2
- package/dist/esm/components/filter-box/filter-by-condition.d.ts.map +1 -1
- package/dist/esm/components/filter-box/filter-by-condition.js +72 -16
- package/dist/esm/components/filter-box/filter-by-value.d.ts.map +1 -1
- package/dist/esm/components/filter-box/filter-by-value.js +110 -39
- package/dist/esm/components/filter-box/index.d.ts +7 -1
- package/dist/esm/components/filter-box/index.d.ts.map +1 -1
- package/dist/esm/components/filter-box/index.js +88 -2
- package/dist/esm/components/move-chart-dialog/index.d.ts +34 -0
- package/dist/esm/components/move-chart-dialog/index.d.ts.map +1 -0
- package/dist/esm/components/move-chart-dialog/index.js +88 -0
- package/dist/esm/components/print-preview/page-block.d.ts +9 -1
- package/dist/esm/components/print-preview/page-block.d.ts.map +1 -1
- package/dist/esm/components/print-preview/page-block.js +27 -2
- package/dist/esm/components/print-preview/print-preview-dialog.d.ts +8 -1
- package/dist/esm/components/print-preview/print-preview-dialog.d.ts.map +1 -1
- package/dist/esm/components/print-preview/print-preview-dialog.js +92 -4
- package/dist/esm/components/print-preview/run-print.d.ts.map +1 -1
- package/dist/esm/components/print-preview/run-print.js +17 -7
- package/dist/esm/components/print-preview/use-page-layout.d.ts +47 -0
- package/dist/esm/components/print-preview/use-page-layout.d.ts.map +1 -1
- package/dist/esm/components/print-preview/use-page-layout.js +55 -0
- package/dist/esm/components/selection/index.d.ts +1 -1
- package/dist/esm/components/selection/index.d.ts.map +1 -1
- package/dist/esm/components/selection/index.js +6 -2
- package/dist/esm/components/selection/types.d.ts +15 -0
- package/dist/esm/components/selection/types.d.ts.map +1 -1
- package/dist/esm/components/sheet-tabs/index.d.ts.map +1 -1
- package/dist/esm/components/sheet-tabs/index.js +2 -2
- package/dist/esm/components/sheet-tabs/sheet-tab.d.ts +1 -1
- package/dist/esm/components/sheet-tabs/sheet-tab.d.ts.map +1 -1
- package/dist/esm/components/sheet-tabs/sheet-tab.js +4 -2
- package/dist/esm/components/sparkline-dialog/index.d.ts +43 -0
- package/dist/esm/components/sparkline-dialog/index.d.ts.map +1 -0
- package/dist/esm/components/sparkline-dialog/index.js +123 -0
- package/dist/esm/components/subtotal-dialog/index.d.ts.map +1 -1
- package/dist/esm/components/subtotal-dialog/index.js +10 -1
- package/dist/esm/components/table-auto-expansion-smart-tag/index.d.ts +24 -0
- package/dist/esm/components/table-auto-expansion-smart-tag/index.d.ts.map +1 -0
- package/dist/esm/components/table-auto-expansion-smart-tag/index.js +25 -0
- package/dist/esm/components/toolbar/index.d.ts +1 -0
- package/dist/esm/components/toolbar/index.d.ts.map +1 -1
- package/dist/esm/components/toolbar/index.js +1 -0
- package/dist/esm/components/toolbar/insert-menu.d.ts +2 -1
- package/dist/esm/components/toolbar/insert-menu.d.ts.map +1 -1
- package/dist/esm/components/toolbar/insert-menu.js +24 -1
- package/dist/esm/components/toolbar/merge-cells-selector.d.ts +4 -1
- package/dist/esm/components/toolbar/merge-cells-selector.d.ts.map +1 -1
- package/dist/esm/components/toolbar/merge-cells-selector.js +10 -6
- package/dist/esm/components/toolbar/sparkline-actions.d.ts +31 -0
- package/dist/esm/components/toolbar/sparkline-actions.d.ts.map +1 -0
- package/dist/esm/components/toolbar/sparkline-actions.js +238 -0
- package/dist/esm/components/toolbar/table-actions.d.ts +9 -1
- package/dist/esm/components/toolbar/table-actions.d.ts.map +1 -1
- package/dist/esm/components/toolbar/table-actions.js +15 -7
- package/dist/esm/components/toolbar/table-style-selector.d.ts +38 -2
- package/dist/esm/components/toolbar/table-style-selector.d.ts.map +1 -1
- package/dist/esm/components/toolbar/table-style-selector.js +210 -399
- package/dist/esm/config.d.ts +2 -0
- package/dist/esm/config.d.ts.map +1 -1
- package/dist/esm/config.js +30 -0
- package/dist/esm/helpers.d.ts +1 -1
- package/dist/esm/helpers.d.ts.map +1 -1
- package/dist/esm/helpers.js +12 -1
- package/dist/esm/hooks/use-cell-renderer.d.ts +16 -1
- package/dist/esm/hooks/use-cell-renderer.d.ts.map +1 -1
- package/dist/esm/hooks/use-cell-renderer.js +14 -4
- package/dist/esm/hooks/use-chart-clipboard.d.ts +55 -0
- package/dist/esm/hooks/use-chart-clipboard.d.ts.map +1 -0
- package/dist/esm/hooks/use-chart-clipboard.js +213 -0
- package/dist/esm/hooks/use-chart-source-ranges.d.ts +27 -0
- package/dist/esm/hooks/use-chart-source-ranges.d.ts.map +1 -0
- package/dist/esm/hooks/use-chart-source-ranges.js +186 -0
- package/dist/esm/hooks/use-context-setter.d.ts.map +1 -1
- package/dist/esm/hooks/use-context-setter.js +3 -1
- package/dist/esm/hooks/use-editable.d.ts +9 -1
- package/dist/esm/hooks/use-editable.d.ts.map +1 -1
- package/dist/esm/hooks/use-editable.js +25 -1
- package/dist/esm/hooks/use-embeds-charts.d.ts +64 -4
- package/dist/esm/hooks/use-embeds-charts.d.ts.map +1 -1
- package/dist/esm/hooks/use-embeds-charts.js +394 -39
- package/dist/esm/hooks/use-grid-children.d.ts +2 -2
- package/dist/esm/hooks/use-grid-children.d.ts.map +1 -1
- package/dist/esm/hooks/use-grid-children.js +8 -2
- package/dist/esm/hooks/use-isomorphic-layout-effect.d.ts +2 -2
- package/dist/esm/hooks/use-isomorphic-layout-effect.d.ts.map +1 -1
- package/dist/esm/hooks/use-keyboard-handler.d.ts +2 -1
- package/dist/esm/hooks/use-keyboard-handler.d.ts.map +1 -1
- package/dist/esm/hooks/use-keyboard-handler.js +8 -2
- package/dist/esm/hooks/use-reveal-chart-embed.d.ts +17 -0
- package/dist/esm/hooks/use-reveal-chart-embed.d.ts.map +1 -0
- package/dist/esm/hooks/use-reveal-chart-embed.js +35 -0
- package/dist/esm/hooks/use-selection-renderer.d.ts +13 -1
- package/dist/esm/hooks/use-selection-renderer.d.ts.map +1 -1
- package/dist/esm/hooks/use-selection-renderer.js +35 -6
- package/dist/esm/hooks/use-selection.d.ts +9 -1
- package/dist/esm/hooks/use-selection.d.ts.map +1 -1
- package/dist/esm/hooks/use-selection.js +122 -30
- package/dist/esm/hooks/use-structured-reference-selection.d.ts +1 -1
- package/dist/esm/hooks/use-structured-reference-selection.d.ts.map +1 -1
- package/dist/esm/hooks/use-structured-reference-selection.js +16 -0
- package/dist/esm/hooks/use-table-hit-zones.d.ts +61 -0
- package/dist/esm/hooks/use-table-hit-zones.d.ts.map +1 -0
- package/dist/esm/hooks/use-table-hit-zones.js +146 -0
- package/dist/esm/hooks/use-table-resizer.d.ts +7 -0
- package/dist/esm/hooks/use-table-resizer.d.ts.map +1 -1
- package/dist/esm/hooks/use-table-resizer.js +21 -10
- package/dist/esm/index.d.ts +13 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +13 -0
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/esm/types.d.ts +289 -4
- package/dist/esm/types.d.ts.map +1 -1
- package/dist/esm/utils/copy-as-picture.d.ts +13 -0
- package/dist/esm/utils/copy-as-picture.d.ts.map +1 -0
- package/dist/esm/utils/copy-as-picture.js +45 -0
- package/dist/esm/utils/pivot-chart-field-buttons.d.ts +19 -0
- package/dist/esm/utils/pivot-chart-field-buttons.d.ts.map +1 -0
- package/dist/esm/utils/pivot-chart-field-buttons.js +18 -0
- package/dist/esm/utils/z-order.d.ts +47 -0
- package/dist/esm/utils/z-order.d.ts.map +1 -0
- package/dist/esm/utils/z-order.js +111 -0
- package/dist/spreadsheet.min.css +1 -1
- package/package.json +8 -6
- package/dist/cjs/components/cell-editor/helpers.spec.d.ts +0 -2
- package/dist/cjs/components/cell-editor/helpers.spec.d.ts.map +0 -1
- package/dist/cjs/components/cell-editor/helpers.spec.js +0 -32
- package/dist/esm/components/cell-editor/helpers.spec.d.ts +0 -2
- package/dist/esm/components/cell-editor/helpers.spec.d.ts.map +0 -1
- package/dist/esm/components/cell-editor/helpers.spec.js +0 -30
|
@@ -8,21 +8,23 @@ var ui_1 = require("@rowsncolumns/ui");
|
|
|
8
8
|
var utils_1 = require("@rowsncolumns/utils");
|
|
9
9
|
var react_1 = tslib_1.__importStar(require("react"));
|
|
10
10
|
var multi_selection_1 = require("../../api/multi-selection");
|
|
11
|
+
var table_1 = require("../../api/table");
|
|
11
12
|
var validation_1 = require("../../api/validation");
|
|
12
13
|
var atoms_1 = require("../../atoms");
|
|
13
14
|
var advanced_filter_dialog_atom_1 = require("../../atoms/advanced-filter-dialog.atom");
|
|
14
15
|
var goal_seek_dialog_atom_1 = require("../../atoms/goal-seek-dialog.atom");
|
|
15
16
|
var insert_cells_dialog_atom_1 = require("../../atoms/insert-cells-dialog.atom");
|
|
16
17
|
var remove_duplicates_dialog_atom_1 = require("../../atoms/remove-duplicates-dialog.atom");
|
|
18
|
+
var sparkline_dialog_atom_1 = require("../../atoms/sparkline-dialog.atom");
|
|
17
19
|
var subtotal_dialog_atom_1 = require("../../atoms/subtotal-dialog.atom");
|
|
18
20
|
var text_to_columns_dialog_atom_1 = require("../../atoms/text-to-columns-dialog.atom");
|
|
19
21
|
var validation_alert_atom_1 = require("../../atoms/validation-alert.atom");
|
|
20
22
|
var config_1 = require("../../config");
|
|
21
23
|
var helpers_1 = require("../../helpers");
|
|
22
|
-
var
|
|
24
|
+
var total_row_function_menu_1 = require("./total-row-function-menu");
|
|
23
25
|
var ContextMenu = function (_a) {
|
|
24
26
|
var _b, _c, _d;
|
|
25
|
-
var isRowHeader = _a.isRowHeader, isColumnHeader = _a.isColumnHeader, activeCell = _a.activeCell, selections = _a.selections, basicFilter = _a.basicFilter, isTableHeader = _a.isTableHeader, onClearContents = _a.onClearContents, onHideColumn = _a.onHideColumn, onHideRow = _a.onHideRow, onGroupRows = _a.onGroupRows, onUngroupRows = _a.onUngroupRows, onGroupColumns = _a.onGroupColumns, onUngroupColumns = _a.onUngroupColumns, onDeleteRow = _a.onDeleteRow, onDeleteColumn = _a.onDeleteColumn, onInsertColumn = _a.onInsertColumn, onInsertRow = _a.onInsertRow, onInsertCellsShiftDown = _a.onInsertCellsShiftDown, onInsertCellsShiftRight = _a.onInsertCellsShiftRight, onDeleteCellsShiftLeft = _a.onDeleteCellsShiftLeft, onDeleteCellsShiftUp = _a.onDeleteCellsShiftUp, onFreezeRow = _a.onFreezeRow, onFreezeColumn = _a.onFreezeColumn, onCopy = _a.onCopy, onCut = _a.onCut, hasCutSelection = _a.hasCutSelection, onInsertCutCells = _a.onInsertCutCells, onPaste = _a.onPaste, onRequestPasteSpecial = _a.onRequestPasteSpecial, onRequestEvaluateFormula = _a.onRequestEvaluateFormula, onRequestAddWatch = _a.onRequestAddWatch, isActiveCellFormula = _a.isActiveCellFormula, onInsertNote = _a.onInsertNote, onProtectRange = _a.onProtectRange, onUnProtectRange = _a.onUnProtectRange, onSortRange = _a.onSortRange, onSortColumn = _a.onSortColumn, onRequestDefineNamedRange = _a.onRequestDefineNamedRange, onRequestResize = _a.onRequestResize, onRequestEditTable = _a.onRequestEditTable, onRequestEditPivotTable = _a.onRequestEditPivotTable, onRequestDeletePivotTable = _a.onRequestDeletePivotTable, onPivotDrillDown = _a.onPivotDrillDown, onRequestFormatCells = _a.onRequestFormatCells, onRequestConditionalFormat = _a.onRequestConditionalFormat, onRequestDataValidation = _a.onRequestDataValidation, onRemoveTable = _a.onRemoveTable, onClearFormatting = _a.onClearFormatting, onCreateTable = _a.onCreateTable, onCreateBasicFilter = _a.onCreateBasicFilter, onFilterTable = _a.onFilterTable, onSortTable = _a.onSortTable, getFormattedValuesFromRange = _a.getFormattedValuesFromRange, focusSheet = _a.focusSheet, isSheetFocused = _a.isSheetFocused, getFormattedValue = _a.getFormattedValue, onInsertTableColumn = _a.onInsertTableColumn, onDeleteTableColumn = _a.onDeleteTableColumn, onInsertTableRow = _a.onInsertTableRow, onDeleteTableRow = _a.onDeleteTableRow, onSplitTextToColumns = _a.onSplitTextToColumns, onRemoveDuplicates = _a.onRemoveDuplicates, onGoalSeek = _a.onGoalSeek, onSubtotal = _a.onSubtotal, onAdvancedFilter = _a.onAdvancedFilter, onChange = _a.onChange, getCellData = _a.getCellData, isHiddenColumn = _a.isHiddenColumn, isHiddenRow = _a.isHiddenRow, onShowColumn = _a.onShowColumn, onShowRow = _a.onShowRow, tables = _a.tables, pivotTables = _a.pivotTables, protectedRanges = _a.protectedRanges, sheetId = _a.sheetId, frozenRows = _a.frozenRows, frozenColumns = _a.frozenColumns, selectedRowHeadersIds = _a.selectedRowHeadersIds, selectedColumnHeadersIds = _a.selectedColumnHeadersIds, rowCount = _a.rowCount, columnCount = _a.columnCount, _e = _a.readonly, readonly = _e === void 0 ? false : _e, onAddQuickEdit = _a.onAddQuickEdit, enableMagicFill = _a.enableMagicFill;
|
|
27
|
+
var isRowHeader = _a.isRowHeader, isColumnHeader = _a.isColumnHeader, activeCell = _a.activeCell, selections = _a.selections, basicFilter = _a.basicFilter, isTableHeader = _a.isTableHeader, onClearContents = _a.onClearContents, onHideColumn = _a.onHideColumn, onHideRow = _a.onHideRow, onGroupRows = _a.onGroupRows, onUngroupRows = _a.onUngroupRows, onGroupColumns = _a.onGroupColumns, onUngroupColumns = _a.onUngroupColumns, onDeleteRow = _a.onDeleteRow, onDeleteColumn = _a.onDeleteColumn, onInsertColumn = _a.onInsertColumn, onInsertRow = _a.onInsertRow, onInsertCellsShiftDown = _a.onInsertCellsShiftDown, onInsertCellsShiftRight = _a.onInsertCellsShiftRight, onDeleteCellsShiftLeft = _a.onDeleteCellsShiftLeft, onDeleteCellsShiftUp = _a.onDeleteCellsShiftUp, onFreezeRow = _a.onFreezeRow, onFreezeColumn = _a.onFreezeColumn, onCopy = _a.onCopy, onCut = _a.onCut, hasCutSelection = _a.hasCutSelection, onInsertCutCells = _a.onInsertCutCells, onPaste = _a.onPaste, onRequestPasteSpecial = _a.onRequestPasteSpecial, onRequestEvaluateFormula = _a.onRequestEvaluateFormula, onRequestAddWatch = _a.onRequestAddWatch, isActiveCellFormula = _a.isActiveCellFormula, onInsertNote = _a.onInsertNote, onProtectRange = _a.onProtectRange, onUnProtectRange = _a.onUnProtectRange, onSortRange = _a.onSortRange, onSortColumn = _a.onSortColumn, onRequestDefineNamedRange = _a.onRequestDefineNamedRange, onRequestResize = _a.onRequestResize, onRequestEditTable = _a.onRequestEditTable, onRequestResizeTable = _a.onRequestResizeTable, onRequestInsertSlicer = _a.onRequestInsertSlicer, onRequestEditPivotTable = _a.onRequestEditPivotTable, onRequestDeletePivotTable = _a.onRequestDeletePivotTable, onRequestCreatePivotChart = _a.onRequestCreatePivotChart, onPivotDrillDown = _a.onPivotDrillDown, onRequestFormatCells = _a.onRequestFormatCells, onRequestConditionalFormat = _a.onRequestConditionalFormat, onRequestDataValidation = _a.onRequestDataValidation, onRemoveTable = _a.onRemoveTable, onClearFormatting = _a.onClearFormatting, onCreateTable = _a.onCreateTable, onRequestCreateTable = _a.onRequestCreateTable, onCreateBasicFilter = _a.onCreateBasicFilter, onFilterTable = _a.onFilterTable, onSortTable = _a.onSortTable, getFormattedValuesFromRange = _a.getFormattedValuesFromRange, focusSheet = _a.focusSheet, isSheetFocused = _a.isSheetFocused, getFormattedValue = _a.getFormattedValue, onInsertTableColumn = _a.onInsertTableColumn, onDeleteTableColumn = _a.onDeleteTableColumn, onInsertTableRow = _a.onInsertTableRow, onDeleteTableRow = _a.onDeleteTableRow, onSplitTextToColumns = _a.onSplitTextToColumns, onRemoveDuplicates = _a.onRemoveDuplicates, onGoalSeek = _a.onGoalSeek, onSubtotal = _a.onSubtotal, onAdvancedFilter = _a.onAdvancedFilter, onChange = _a.onChange, onUpdateTable = _a.onUpdateTable, onRequestEditCell = _a.onRequestEditCell, onSelectRange = _a.onSelectRange, getCellData = _a.getCellData, isHiddenColumn = _a.isHiddenColumn, isHiddenRow = _a.isHiddenRow, onShowColumn = _a.onShowColumn, onShowRow = _a.onShowRow, tables = _a.tables, pivotTables = _a.pivotTables, protectedRanges = _a.protectedRanges, sheetId = _a.sheetId, frozenRows = _a.frozenRows, frozenColumns = _a.frozenColumns, selectedRowHeadersIds = _a.selectedRowHeadersIds, selectedColumnHeadersIds = _a.selectedColumnHeadersIds, rowCount = _a.rowCount, columnCount = _a.columnCount, _e = _a.readonly, readonly = _e === void 0 ? false : _e, onAddQuickEdit = _a.onAddQuickEdit, enableMagicFill = _a.enableMagicFill;
|
|
26
28
|
var isHeader = isColumnHeader || isRowHeader;
|
|
27
29
|
var shouldFocusSheetRef = (0, react_1.useRef)(true);
|
|
28
30
|
var multiColumnTitle = (0, helpers_1.generateMultiDimTitle)(selectedColumnHeadersIds, "y");
|
|
@@ -255,6 +257,40 @@ var ContextMenu = function (_a) {
|
|
|
255
257
|
var range = _a.range;
|
|
256
258
|
return (0, grid_1.isCellWithinBounds)(activeCell, range);
|
|
257
259
|
}); }, [tables, activeCell]);
|
|
260
|
+
// Excel sparkline group under the active cell (a run of same-option =SPARKLINE() cells). Only
|
|
261
|
+
// offered while a `SparklineDialogHost` is mounted — the Edit entry has nowhere to go without one.
|
|
262
|
+
var isSparklineDialogMounted = (0, sparkline_dialog_atom_1.useIsSparklineDialogMounted)();
|
|
263
|
+
var openSparklineDialog = (0, sparkline_dialog_atom_1.useOpenSparklineDialog)();
|
|
264
|
+
var getSparklineFormula = (0, react_1.useCallback)(function (targetSheetId, rowIndex, columnIndex) {
|
|
265
|
+
var _a;
|
|
266
|
+
var formula = (_a = (0, utils_1.getCellUserEnteredValue)(getCellData === null || getCellData === void 0 ? void 0 : getCellData(targetSheetId, rowIndex, columnIndex))) === null || _a === void 0 ? void 0 : _a.fv;
|
|
267
|
+
return (0, utils_1.isSparklineFormula)(formula) ? formula : undefined;
|
|
268
|
+
}, [getCellData]);
|
|
269
|
+
var activeSparklineGroup = (0, react_1.useMemo)(function () {
|
|
270
|
+
return isSparklineDialogMounted && getCellData
|
|
271
|
+
? (0, utils_1.resolveSparklineGroup)({
|
|
272
|
+
sheetId: sheetId,
|
|
273
|
+
cell: activeCell,
|
|
274
|
+
getFormula: getSparklineFormula,
|
|
275
|
+
})
|
|
276
|
+
: undefined;
|
|
277
|
+
}, [isSparklineDialogMounted, getCellData, sheetId, activeCell, getSparklineFormula]);
|
|
278
|
+
// Clear Selected Sparklines: the SPARKLINE cells inside the selection (Excel leaves the rest alone).
|
|
279
|
+
var clearSparklineCells = (0, react_1.useCallback)(function (cells) {
|
|
280
|
+
var targets = cells.filter(function (cell) {
|
|
281
|
+
return getSparklineFormula(sheetId, cell.rowIndex, cell.columnIndex);
|
|
282
|
+
});
|
|
283
|
+
if (!targets.length)
|
|
284
|
+
return;
|
|
285
|
+
onClearContents === null || onClearContents === void 0 ? void 0 : onClearContents(sheetId, targets[0], targets.map(function (cell) { return ({
|
|
286
|
+
range: {
|
|
287
|
+
startRowIndex: cell.rowIndex,
|
|
288
|
+
endRowIndex: cell.rowIndex,
|
|
289
|
+
startColumnIndex: cell.columnIndex,
|
|
290
|
+
endColumnIndex: cell.columnIndex,
|
|
291
|
+
},
|
|
292
|
+
}); }));
|
|
293
|
+
}, [getSparklineFormula, onClearContents, sheetId]);
|
|
258
294
|
// Check for active pivot table
|
|
259
295
|
var activePivotTable = (0, react_1.useMemo)(function () {
|
|
260
296
|
return pivotTables === null || pivotTables === void 0 ? void 0 : pivotTables.find(function (_a) {
|
|
@@ -264,6 +300,11 @@ var ContextMenu = function (_a) {
|
|
|
264
300
|
}, [pivotTables, activeCell]);
|
|
265
301
|
// Check if the active cell is table header
|
|
266
302
|
var isActiveCellTableHeader = isTableHeader(activeCell.rowIndex, activeCell.columnIndex);
|
|
303
|
+
// Excel's "Delete table rows" only ever removes body rows: the header and totals rows are
|
|
304
|
+
// dropped from the selection, and the item is hidden when nothing else is selected.
|
|
305
|
+
var deletableTableRowIndexes = activeTable
|
|
306
|
+
? (0, table_1.getDeletableTableRowIndexes)(activeTable, selectedRowIndexes)
|
|
307
|
+
: selectedRowIndexes;
|
|
267
308
|
// Basic filter
|
|
268
309
|
var activeBasicFilter = basicFilter && (0, grid_1.isCellWithinBounds)(activeCell, basicFilter.range)
|
|
269
310
|
? basicFilter
|
|
@@ -453,15 +494,50 @@ var ContextMenu = function (_a) {
|
|
|
453
494
|
// Totals-row function picker: the active cell sits on a table's totals row.
|
|
454
495
|
var isActiveCellTableTotal = !!(activeTable === null || activeTable === void 0 ? void 0 : activeTable.totalRow) &&
|
|
455
496
|
activeCell.rowIndex === activeTable.range.endRowIndex;
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
497
|
+
/**
|
|
498
|
+
* The selection clipped to the active table, in table terms (Excel's table
|
|
499
|
+
* Insert / Select items): the selected data-body rows (none when only the
|
|
500
|
+
* header / totals row is selected), the selected rows including header and
|
|
501
|
+
* totals, and the selected columns. Counts follow the selection — N
|
|
502
|
+
* selected rows insert N table rows.
|
|
503
|
+
*/
|
|
504
|
+
var tableSelection = (0, react_1.useMemo)(function () {
|
|
505
|
+
var _a, _b, _c;
|
|
506
|
+
if (!activeTable) {
|
|
507
|
+
return undefined;
|
|
460
508
|
}
|
|
461
|
-
var
|
|
462
|
-
var
|
|
463
|
-
|
|
464
|
-
|
|
509
|
+
var range = activeTable.range;
|
|
510
|
+
var firstBodyRow = range.startRowIndex + (((_a = activeTable.headerRow) !== null && _a !== void 0 ? _a : true) ? 1 : 0);
|
|
511
|
+
var lastDataRow = range.endRowIndex - (activeTable.totalRow ? 1 : 0);
|
|
512
|
+
var sel = selection.range;
|
|
513
|
+
var clip = function (start, end, lo, hi) {
|
|
514
|
+
var s = Math.max(start, lo);
|
|
515
|
+
var e = Math.min(end, hi);
|
|
516
|
+
return e >= s ? { start: s, end: e, count: e - s + 1 } : undefined;
|
|
517
|
+
};
|
|
518
|
+
var activeColumn = {
|
|
519
|
+
start: activeCell.columnIndex,
|
|
520
|
+
end: activeCell.columnIndex,
|
|
521
|
+
count: 1,
|
|
522
|
+
};
|
|
523
|
+
var bodyRows = clip(sel.startRowIndex, sel.endRowIndex, firstBodyRow, lastDataRow);
|
|
524
|
+
return {
|
|
525
|
+
firstBodyRow: firstBodyRow,
|
|
526
|
+
lastDataRow: lastDataRow,
|
|
527
|
+
bodyRows: bodyRows,
|
|
528
|
+
rows: (_b = clip(sel.startRowIndex, sel.endRowIndex, range.startRowIndex, range.endRowIndex)) !== null && _b !== void 0 ? _b : {
|
|
529
|
+
start: activeCell.rowIndex,
|
|
530
|
+
end: activeCell.rowIndex,
|
|
531
|
+
count: 1,
|
|
532
|
+
},
|
|
533
|
+
columns: (_c = clip(sel.startColumnIndex, sel.endColumnIndex, range.startColumnIndex, range.endColumnIndex)) !== null && _c !== void 0 ? _c : activeColumn,
|
|
534
|
+
touchesLastDataRow: !!bodyRows && bodyRows.end === lastDataRow && lastDataRow >= firstBodyRow,
|
|
535
|
+
};
|
|
536
|
+
}, [activeTable, selection.range, activeCell]);
|
|
537
|
+
/** `rowData` for `onInsertTableRow`: one blank record per row to insert. */
|
|
538
|
+
var blankTableRows = function (count) {
|
|
539
|
+
return Array.from({ length: count }, function () { return ({}); });
|
|
540
|
+
};
|
|
465
541
|
// Sort table or filter
|
|
466
542
|
var onSortTableOrFilterView = (0, react_1.useCallback)(function (direction) {
|
|
467
543
|
// Found a table
|
|
@@ -777,28 +853,40 @@ var ContextMenu = function (_a) {
|
|
|
777
853
|
"Insert",
|
|
778
854
|
react_1.default.createElement(ui_1.DropdownRightSlot, null,
|
|
779
855
|
react_1.default.createElement(icons_1.ChevronRightIcon, null))),
|
|
780
|
-
react_1.default.createElement(ui_1.DropdownMenuSubContent, { sideOffset: 2, alignOffset: -5 }, activeTable ? (react_1.default.createElement(react_1.default.Fragment, null,
|
|
856
|
+
react_1.default.createElement(ui_1.DropdownMenuSubContent, { sideOffset: 2, alignOffset: -5 }, activeTable && tableSelection ? (react_1.default.createElement(react_1.default.Fragment, null,
|
|
781
857
|
isActiveCellTableHeader ? null : (react_1.default.createElement(ui_1.DropdownMenuItem, { onClick: function () {
|
|
782
|
-
|
|
783
|
-
|
|
858
|
+
var _a, _b;
|
|
859
|
+
// Above the selected body rows; from the totals
|
|
860
|
+
// row, above the totals row (Excel).
|
|
861
|
+
var bodyRows = tableSelection.bodyRows, lastDataRow = tableSelection.lastDataRow;
|
|
862
|
+
onInsertTableRow === null || onInsertTableRow === void 0 ? void 0 : onInsertTableRow(activeTable, ((_a = bodyRows === null || bodyRows === void 0 ? void 0 : bodyRows.start) !== null && _a !== void 0 ? _a : lastDataRow + 1) -
|
|
863
|
+
activeTable.range.startRowIndex, blankTableRows((_b = bodyRows === null || bodyRows === void 0 ? void 0 : bodyRows.count) !== null && _b !== void 0 ? _b : 1));
|
|
864
|
+
}, disabled: readonly },
|
|
865
|
+
react_1.default.createElement(ui_1.DropdownLeftSlot, null,
|
|
866
|
+
react_1.default.createElement(icons_1.PlusIcon, null)),
|
|
867
|
+
"Table Rows Above")),
|
|
868
|
+
tableSelection.touchesLastDataRow ? (react_1.default.createElement(ui_1.DropdownMenuItem, { onClick: function () {
|
|
869
|
+
var _a;
|
|
870
|
+
var bodyRows = tableSelection.bodyRows, lastDataRow = tableSelection.lastDataRow;
|
|
871
|
+
onInsertTableRow === null || onInsertTableRow === void 0 ? void 0 : onInsertTableRow(activeTable, lastDataRow + 1 - activeTable.range.startRowIndex, blankTableRows((_a = bodyRows === null || bodyRows === void 0 ? void 0 : bodyRows.count) !== null && _a !== void 0 ? _a : 1));
|
|
784
872
|
}, disabled: readonly },
|
|
785
873
|
react_1.default.createElement(ui_1.DropdownLeftSlot, null,
|
|
786
874
|
react_1.default.createElement(icons_1.PlusIcon, null)),
|
|
787
|
-
"
|
|
875
|
+
"Table Row Below")) : null,
|
|
788
876
|
react_1.default.createElement(ui_1.DropdownMenuItem, { onClick: function () {
|
|
789
|
-
|
|
790
|
-
|
|
877
|
+
var columns = tableSelection.columns;
|
|
878
|
+
onInsertTableColumn === null || onInsertTableColumn === void 0 ? void 0 : onInsertTableColumn(activeTable, columns.start - activeTable.range.startColumnIndex, grid_1.Direction.Left, columns.count);
|
|
791
879
|
}, disabled: readonly },
|
|
792
880
|
react_1.default.createElement(ui_1.DropdownLeftSlot, null,
|
|
793
881
|
react_1.default.createElement(icons_1.ArrowLeftIcon, null)),
|
|
794
|
-
"
|
|
882
|
+
"Table Columns to the Left"),
|
|
795
883
|
react_1.default.createElement(ui_1.DropdownMenuItem, { onClick: function () {
|
|
796
|
-
|
|
797
|
-
|
|
884
|
+
var columns = tableSelection.columns;
|
|
885
|
+
onInsertTableColumn === null || onInsertTableColumn === void 0 ? void 0 : onInsertTableColumn(activeTable, columns.end - activeTable.range.startColumnIndex, grid_1.Direction.Right, columns.count);
|
|
798
886
|
}, disabled: readonly },
|
|
799
887
|
react_1.default.createElement(ui_1.DropdownLeftSlot, null,
|
|
800
888
|
react_1.default.createElement(icons_1.ArrowRightIcon, null)),
|
|
801
|
-
"
|
|
889
|
+
"Table Columns to the Right"))) : (react_1.default.createElement(react_1.default.Fragment, null,
|
|
802
890
|
react_1.default.createElement(ui_1.DropdownMenuItem, { onClick: function () {
|
|
803
891
|
return onInsertRow === null || onInsertRow === void 0 ? void 0 : onInsertRow(sheetId, activeCell.rowIndex, selectedRowIndexes.length);
|
|
804
892
|
}, disabled: readonly },
|
|
@@ -838,8 +926,8 @@ var ContextMenu = function (_a) {
|
|
|
838
926
|
react_1.default.createElement(ui_1.DropdownRightSlot, null,
|
|
839
927
|
react_1.default.createElement(icons_1.ChevronRightIcon, null))),
|
|
840
928
|
react_1.default.createElement(ui_1.DropdownMenuSubContent, { sideOffset: 2, alignOffset: -5 }, activeTable ? (react_1.default.createElement(react_1.default.Fragment, null,
|
|
841
|
-
|
|
842
|
-
return onDeleteTableRow === null || onDeleteTableRow === void 0 ? void 0 : onDeleteTableRow(activeTable,
|
|
929
|
+
deletableTableRowIndexes.length === 0 ? null : (react_1.default.createElement(ui_1.DropdownMenuItem, { onClick: function () {
|
|
930
|
+
return onDeleteTableRow === null || onDeleteTableRow === void 0 ? void 0 : onDeleteTableRow(activeTable, deletableTableRowIndexes);
|
|
843
931
|
}, disabled: readonly },
|
|
844
932
|
react_1.default.createElement(ui_1.DropdownLeftSlot, null,
|
|
845
933
|
react_1.default.createElement(icons_1.TrashIcon, null)),
|
|
@@ -880,6 +968,38 @@ var ContextMenu = function (_a) {
|
|
|
880
968
|
react_1.default.createElement(ui_1.DropdownLeftSlot, null,
|
|
881
969
|
react_1.default.createElement(icons_1.TrashIcon, null)),
|
|
882
970
|
deleteCellsLabel)),
|
|
971
|
+
activeTable && tableSelection && onSelectRange ? (react_1.default.createElement(ui_1.DropdownMenuSub, null,
|
|
972
|
+
react_1.default.createElement(ui_1.DropdownMenuSubTrigger, null,
|
|
973
|
+
react_1.default.createElement(ui_1.DropdownLeftSlot, null,
|
|
974
|
+
react_1.default.createElement(icons_1.ViewGridIcon, null)),
|
|
975
|
+
"Select",
|
|
976
|
+
react_1.default.createElement(ui_1.DropdownRightSlot, null,
|
|
977
|
+
react_1.default.createElement(icons_1.ChevronRightIcon, null))),
|
|
978
|
+
react_1.default.createElement(ui_1.DropdownMenuSubContent, { sideOffset: 2, alignOffset: -5 },
|
|
979
|
+
react_1.default.createElement(ui_1.DropdownMenuItem, { onClick: function () {
|
|
980
|
+
return onSelectRange(sheetId, {
|
|
981
|
+
startRowIndex: tableSelection.firstBodyRow,
|
|
982
|
+
endRowIndex: Math.max(tableSelection.firstBodyRow, tableSelection.lastDataRow),
|
|
983
|
+
startColumnIndex: tableSelection.columns.start,
|
|
984
|
+
endColumnIndex: tableSelection.columns.end,
|
|
985
|
+
});
|
|
986
|
+
} }, "Table Column Data"),
|
|
987
|
+
react_1.default.createElement(ui_1.DropdownMenuItem, { onClick: function () {
|
|
988
|
+
return onSelectRange(sheetId, {
|
|
989
|
+
startRowIndex: activeTable.range.startRowIndex,
|
|
990
|
+
endRowIndex: activeTable.range.endRowIndex,
|
|
991
|
+
startColumnIndex: tableSelection.columns.start,
|
|
992
|
+
endColumnIndex: tableSelection.columns.end,
|
|
993
|
+
});
|
|
994
|
+
} }, "Entire Table Column"),
|
|
995
|
+
react_1.default.createElement(ui_1.DropdownMenuItem, { onClick: function () {
|
|
996
|
+
return onSelectRange(sheetId, {
|
|
997
|
+
startRowIndex: tableSelection.rows.start,
|
|
998
|
+
endRowIndex: tableSelection.rows.end,
|
|
999
|
+
startColumnIndex: activeTable.range.startColumnIndex,
|
|
1000
|
+
endColumnIndex: activeTable.range.endColumnIndex,
|
|
1001
|
+
});
|
|
1002
|
+
} }, "Table Row")))) : null,
|
|
883
1003
|
react_1.default.createElement(ui_1.DropdownMenuSeparator, null),
|
|
884
1004
|
react_1.default.createElement(ui_1.DropdownMenuSub, null,
|
|
885
1005
|
react_1.default.createElement(ui_1.DropdownMenuSubTrigger, { disabled: readonly },
|
|
@@ -920,27 +1040,31 @@ var ContextMenu = function (_a) {
|
|
|
920
1040
|
react_1.default.createElement(ui_1.DropdownRightSlot, null,
|
|
921
1041
|
react_1.default.createElement(icons_1.ChevronRightIcon, null))),
|
|
922
1042
|
react_1.default.createElement(ui_1.DropdownMenuSubContent, { sideOffset: 2, alignOffset: -5 },
|
|
1043
|
+
onUpdateTable ? (react_1.default.createElement(ui_1.DropdownMenuCheckboxItem, { checked: !!activeTable.totalRow, disabled: readonly, onSelect: function () {
|
|
1044
|
+
return onUpdateTable(sheetId, activeTable.id, {
|
|
1045
|
+
totalRow: !activeTable.totalRow,
|
|
1046
|
+
});
|
|
1047
|
+
} },
|
|
1048
|
+
react_1.default.createElement(ui_1.DropdownMenuItemIndicator, null,
|
|
1049
|
+
react_1.default.createElement(icons_1.CheckIcon, null)),
|
|
1050
|
+
"Totals Row")) : null,
|
|
923
1051
|
react_1.default.createElement(ui_1.DropdownMenuItem, { onClick: function () { return onRemoveTable === null || onRemoveTable === void 0 ? void 0 : onRemoveTable(activeTable); }, disabled: readonly }, "Convert to range"),
|
|
924
1052
|
react_1.default.createElement(ui_1.DropdownMenuItem, { onClick: function () { return onRequestEditTable === null || onRequestEditTable === void 0 ? void 0 : onRequestEditTable(activeTable); }, disabled: readonly }, "Edit table"),
|
|
1053
|
+
onRequestResizeTable ? (react_1.default.createElement(ui_1.DropdownMenuItem, { onClick: function () {
|
|
1054
|
+
shouldFocusSheetRef.current = false;
|
|
1055
|
+
onRequestResizeTable(activeTable);
|
|
1056
|
+
}, disabled: readonly }, "Resize Table\u2026")) : null,
|
|
1057
|
+
onRequestInsertSlicer ? (react_1.default.createElement(ui_1.DropdownMenuItem, { onClick: function () {
|
|
1058
|
+
shouldFocusSheetRef.current = false;
|
|
1059
|
+
onRequestInsertSlicer(activeTable);
|
|
1060
|
+
}, disabled: readonly }, "Insert Slicer\u2026")) : null,
|
|
925
1061
|
isActiveCellTableTotal ? (react_1.default.createElement(ui_1.DropdownMenuSub, null,
|
|
926
1062
|
react_1.default.createElement(ui_1.DropdownMenuSubTrigger, { disabled: readonly },
|
|
927
1063
|
"Total row function",
|
|
928
1064
|
react_1.default.createElement(ui_1.DropdownRightSlot, null,
|
|
929
1065
|
react_1.default.createElement(icons_1.ChevronRightIcon, null))),
|
|
930
|
-
react_1.default.createElement(ui_1.DropdownMenuSubContent, { sideOffset: 2, alignOffset: -5 },
|
|
931
|
-
|
|
932
|
-
if (formula === undefined) {
|
|
933
|
-
return;
|
|
934
|
-
}
|
|
935
|
-
if (formula === "") {
|
|
936
|
-
onClearContents === null || onClearContents === void 0 ? void 0 : onClearContents(sheetId, activeCell, (0, grid_1.selectionFromActiveCell)(activeCell));
|
|
937
|
-
return;
|
|
938
|
-
}
|
|
939
|
-
onChange === null || onChange === void 0 ? void 0 : onChange(sheetId, activeCell, formula, null);
|
|
940
|
-
} },
|
|
941
|
-
react_1.default.createElement(ui_1.DropdownMenuItemIndicator, null,
|
|
942
|
-
react_1.default.createElement(icons_1.CheckIcon, null)),
|
|
943
|
-
option.label)); })))) : null))) : null,
|
|
1066
|
+
react_1.default.createElement(ui_1.DropdownMenuSubContent, { sideOffset: 2, alignOffset: -5 },
|
|
1067
|
+
react_1.default.createElement(total_row_function_menu_1.TotalRowFunctionMenuItems, { sheetId: sheetId, table: activeTable, cell: activeCell, readonly: readonly, getCellData: getCellData, onChange: onChange, onClearContents: onClearContents, onUpdateTable: onUpdateTable, onRequestEditCell: onRequestEditCell })))) : null))) : null,
|
|
944
1068
|
activePivotTable ? (react_1.default.createElement(ui_1.DropdownMenuSub, null,
|
|
945
1069
|
react_1.default.createElement(ui_1.DropdownMenuSubTrigger, { disabled: readonly },
|
|
946
1070
|
react_1.default.createElement(ui_1.DropdownLeftSlot, null,
|
|
@@ -955,13 +1079,61 @@ var ContextMenu = function (_a) {
|
|
|
955
1079
|
react_1.default.createElement(ui_1.DropdownMenuItem, { onClick: function () { return onRequestEditPivotTable === null || onRequestEditPivotTable === void 0 ? void 0 : onRequestEditPivotTable(activePivotTable); }, disabled: readonly }, "Edit PivotTable"),
|
|
956
1080
|
react_1.default.createElement(ui_1.DropdownMenuItem, { onClick: function () {
|
|
957
1081
|
return onRequestDeletePivotTable === null || onRequestDeletePivotTable === void 0 ? void 0 : onRequestDeletePivotTable(activePivotTable.pivotId);
|
|
958
|
-
}, disabled: readonly }, "Delete PivotTable")
|
|
1082
|
+
}, disabled: readonly }, "Delete PivotTable"),
|
|
1083
|
+
onRequestCreatePivotChart ? (react_1.default.createElement(ui_1.DropdownMenuItem, { onClick: function () {
|
|
1084
|
+
return onRequestCreatePivotChart(sheetId, activeCell, selections, activePivotTable.pivotId);
|
|
1085
|
+
}, disabled: readonly }, "PivotChart")) : null))) : null,
|
|
1086
|
+
activeSparklineGroup ? (react_1.default.createElement(ui_1.DropdownMenuSub, null,
|
|
1087
|
+
react_1.default.createElement(ui_1.DropdownMenuSubTrigger, { disabled: readonly },
|
|
1088
|
+
"Sparklines",
|
|
1089
|
+
react_1.default.createElement(ui_1.DropdownRightSlot, null,
|
|
1090
|
+
react_1.default.createElement(icons_1.ChevronRightIcon, null))),
|
|
1091
|
+
react_1.default.createElement(ui_1.DropdownMenuSubContent, { sideOffset: 2, alignOffset: -5 },
|
|
1092
|
+
react_1.default.createElement(ui_1.DropdownMenuItem, { disabled: readonly, onClick: function () {
|
|
1093
|
+
shouldFocusSheetRef.current = false;
|
|
1094
|
+
openSparklineDialog({ mode: "edit", group: activeSparklineGroup });
|
|
1095
|
+
} }, "Edit Group Location & Data\u2026"),
|
|
1096
|
+
react_1.default.createElement(ui_1.DropdownMenuItem, { disabled: readonly, onClick: function () {
|
|
1097
|
+
var e_5, _a, e_6, _b;
|
|
1098
|
+
var cells = [];
|
|
1099
|
+
try {
|
|
1100
|
+
for (var _c = tslib_1.__values(selections.length
|
|
1101
|
+
? selections
|
|
1102
|
+
: (0, grid_1.selectionFromActiveCell)(activeCell)), _d = _c.next(); !_d.done; _d = _c.next()) {
|
|
1103
|
+
var range = _d.value.range;
|
|
1104
|
+
try {
|
|
1105
|
+
for (var _e = (e_6 = void 0, tslib_1.__values((0, utils_1.iterateCellsInRange)(range))), _f = _e.next(); !_f.done; _f = _e.next()) {
|
|
1106
|
+
var _g = tslib_1.__read(_f.value, 2), rowIndex = _g[0], columnIndex = _g[1];
|
|
1107
|
+
cells.push({ rowIndex: rowIndex, columnIndex: columnIndex });
|
|
1108
|
+
}
|
|
1109
|
+
}
|
|
1110
|
+
catch (e_6_1) { e_6 = { error: e_6_1 }; }
|
|
1111
|
+
finally {
|
|
1112
|
+
try {
|
|
1113
|
+
if (_f && !_f.done && (_b = _e.return)) _b.call(_e);
|
|
1114
|
+
}
|
|
1115
|
+
finally { if (e_6) throw e_6.error; }
|
|
1116
|
+
}
|
|
1117
|
+
}
|
|
1118
|
+
}
|
|
1119
|
+
catch (e_5_1) { e_5 = { error: e_5_1 }; }
|
|
1120
|
+
finally {
|
|
1121
|
+
try {
|
|
1122
|
+
if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
|
|
1123
|
+
}
|
|
1124
|
+
finally { if (e_5) throw e_5.error; }
|
|
1125
|
+
}
|
|
1126
|
+
clearSparklineCells(cells);
|
|
1127
|
+
} }, "Clear Selected Sparklines"),
|
|
1128
|
+
react_1.default.createElement(ui_1.DropdownMenuItem, { disabled: readonly, onClick: function () {
|
|
1129
|
+
return clearSparklineCells(activeSparklineGroup.members.map(function (m) { return m.cell; }));
|
|
1130
|
+
} }, "Clear Selected Sparkline Groups")))) : null,
|
|
959
1131
|
react_1.default.createElement(ui_1.DropdownMenuSeparator, null),
|
|
960
1132
|
activeTable ? null : (react_1.default.createElement(react_1.default.Fragment, null,
|
|
961
1133
|
react_1.default.createElement(ui_1.DropdownMenuItem, { onClick: function () {
|
|
962
1134
|
// We have to shift the focus to note editor
|
|
963
1135
|
shouldFocusSheetRef.current = false;
|
|
964
|
-
|
|
1136
|
+
var bandedRange = {
|
|
965
1137
|
rowProperties: {
|
|
966
1138
|
firstBandColor: {
|
|
967
1139
|
theme: 1,
|
|
@@ -996,7 +1168,13 @@ var ContextMenu = function (_a) {
|
|
|
996
1168
|
},
|
|
997
1169
|
},
|
|
998
1170
|
},
|
|
999
|
-
}
|
|
1171
|
+
};
|
|
1172
|
+
if (onRequestCreateTable) {
|
|
1173
|
+
onRequestCreateTable(sheetId, activeCell, selections, "TableStyleLight1", bandedRange);
|
|
1174
|
+
}
|
|
1175
|
+
else {
|
|
1176
|
+
onCreateTable === null || onCreateTable === void 0 ? void 0 : onCreateTable(sheetId, activeCell, selections, undefined, "TableStyleLight1", bandedRange);
|
|
1177
|
+
}
|
|
1000
1178
|
}, disabled: readonly },
|
|
1001
1179
|
react_1.default.createElement(ui_1.DropdownLeftSlot, null,
|
|
1002
1180
|
react_1.default.createElement(icons_1.TableIcon, null)),
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { CellInterface } from "@rowsncolumns/grid";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import type { TableView } from "../../types";
|
|
4
|
+
import type { CanvasGridProps } from "../canvas-grid/typings";
|
|
5
|
+
export type TotalRowFunctionMenuItemsProps = {
|
|
6
|
+
sheetId: number;
|
|
7
|
+
table: TableView;
|
|
8
|
+
/** The totals-row cell the picker acts on. */
|
|
9
|
+
cell: CellInterface;
|
|
10
|
+
readonly?: boolean;
|
|
11
|
+
/** Reads the cell's formula to highlight its current function when the column records none. */
|
|
12
|
+
getCellData?: CanvasGridProps["getCellData"];
|
|
13
|
+
/** Writes the chosen aggregation formula into the cell (fallback without `onUpdateTable`). */
|
|
14
|
+
onChange?: CanvasGridProps["onChange"];
|
|
15
|
+
/** Clears the cell for "None" (fallback without `onUpdateTable`). */
|
|
16
|
+
onClearContents?: CanvasGridProps["onClearContents"];
|
|
17
|
+
/**
|
|
18
|
+
* Records the choice as the column's `totalsRowFunction`: both engines derive
|
|
19
|
+
* the totals cell from it and regenerate it when the totals row is toggled off
|
|
20
|
+
* and on. Without it the picker writes the formula with `onChange`.
|
|
21
|
+
*/
|
|
22
|
+
onUpdateTable?: CanvasGridProps["onUpdateTable"];
|
|
23
|
+
/** Opens the cell editor pre-filled, for "More Functions…" (omitted when absent). */
|
|
24
|
+
onRequestEditCell?: (sheetId: number, cell: CellInterface, initialValue?: string) => void;
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Excel's totals-row function list (None / Average / Count / … / Var, then
|
|
28
|
+
* "More Functions…") for one totals cell — the items of the context menu's
|
|
29
|
+
* "Total row function" submenu and of the dropdown the totals cell's in-cell
|
|
30
|
+
* arrow opens.
|
|
31
|
+
*/
|
|
32
|
+
export declare const TotalRowFunctionMenuItems: ({ sheetId, table, cell, readonly, getCellData, onChange, onClearContents, onUpdateTable, onRequestEditCell, }: TotalRowFunctionMenuItemsProps) => React.JSX.Element;
|
|
33
|
+
//# sourceMappingURL=total-row-function-menu.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"total-row-function-menu.d.ts","sourceRoot":"","sources":["../../../../components/context-menu/total-row-function-menu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AASxD,OAAO,KAAkB,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAS9D,MAAM,MAAM,8BAA8B,GAAG;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,SAAS,CAAC;IACjB,8CAA8C;IAC9C,IAAI,EAAE,aAAa,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,+FAA+F;IAC/F,WAAW,CAAC,EAAE,eAAe,CAAC,aAAa,CAAC,CAAC;IAC7C,8FAA8F;IAC9F,QAAQ,CAAC,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC;IACvC,qEAAqE;IACrE,eAAe,CAAC,EAAE,eAAe,CAAC,iBAAiB,CAAC,CAAC;IACrD;;;;OAIG;IACH,aAAa,CAAC,EAAE,eAAe,CAAC,eAAe,CAAC,CAAC;IACjD,qFAAqF;IACrF,iBAAiB,CAAC,EAAE,CAClB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,aAAa,EACnB,YAAY,CAAC,EAAE,MAAM,KAClB,IAAI,CAAC;CACX,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,GAAI,+GAUvC,8BAA8B,sBAiEhC,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TotalRowFunctionMenuItems = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var grid_1 = require("@rowsncolumns/grid");
|
|
6
|
+
var icons_1 = require("@rowsncolumns/icons");
|
|
7
|
+
var ui_1 = require("@rowsncolumns/ui");
|
|
8
|
+
var react_1 = tslib_1.__importStar(require("react"));
|
|
9
|
+
var total_row_functions_1 = require("./total-row-functions");
|
|
10
|
+
/**
|
|
11
|
+
* Excel's totals-row function list (None / Average / Count / … / Var, then
|
|
12
|
+
* "More Functions…") for one totals cell — the items of the context menu's
|
|
13
|
+
* "Total row function" submenu and of the dropdown the totals cell's in-cell
|
|
14
|
+
* arrow opens.
|
|
15
|
+
*/
|
|
16
|
+
var TotalRowFunctionMenuItems = function (_a) {
|
|
17
|
+
var sheetId = _a.sheetId, table = _a.table, cell = _a.cell, readonly = _a.readonly, getCellData = _a.getCellData, onChange = _a.onChange, onClearContents = _a.onClearContents, onUpdateTable = _a.onUpdateTable, onRequestEditCell = _a.onRequestEditCell;
|
|
18
|
+
var activeFunction = (0, react_1.useMemo)(function () {
|
|
19
|
+
var _a, _b, _c, _d;
|
|
20
|
+
// The column's recorded function is the source of truth; a totals cell
|
|
21
|
+
// without one (typed by hand, or from a file) is read off its formula.
|
|
22
|
+
var recorded = (_b = (_a = table.columns) === null || _a === void 0 ? void 0 : _a[cell.columnIndex - table.range.startColumnIndex]) === null || _b === void 0 ? void 0 : _b.totalsRowFunction;
|
|
23
|
+
if (recorded && recorded !== "custom") {
|
|
24
|
+
return recorded;
|
|
25
|
+
}
|
|
26
|
+
var cellData = getCellData === null || getCellData === void 0 ? void 0 : getCellData(sheetId, cell.rowIndex, cell.columnIndex);
|
|
27
|
+
var ue = (_c = cellData === null || cellData === void 0 ? void 0 : cellData.ue) !== null && _c !== void 0 ? _c : cellData === null || cellData === void 0 ? void 0 : cellData.userEnteredValue;
|
|
28
|
+
return (0, total_row_functions_1.getTotalRowFunctionFromFormula)((_d = ue === null || ue === void 0 ? void 0 : ue.fv) !== null && _d !== void 0 ? _d : ue === null || ue === void 0 ? void 0 : ue.formulaValue);
|
|
29
|
+
}, [table, getCellData, sheetId, cell]);
|
|
30
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
31
|
+
total_row_functions_1.TOTAL_ROW_FUNCTIONS.map(function (option) { return (react_1.default.createElement(ui_1.DropdownMenuCheckboxItem, { key: option.id, checked: activeFunction === option.id, disabled: readonly, onSelect: function () {
|
|
32
|
+
var columns = onUpdateTable
|
|
33
|
+
? (0, total_row_functions_1.withTotalRowFunction)(table, cell.columnIndex, option.id)
|
|
34
|
+
: undefined;
|
|
35
|
+
if (columns) {
|
|
36
|
+
onUpdateTable === null || onUpdateTable === void 0 ? void 0 : onUpdateTable(sheetId, table.id, { columns: columns });
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
var formula = (0, total_row_functions_1.getTotalRowFunctionFormula)(option.id, table, cell.columnIndex);
|
|
40
|
+
if (formula === undefined) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
if (formula === "") {
|
|
44
|
+
onClearContents === null || onClearContents === void 0 ? void 0 : onClearContents(sheetId, cell, (0, grid_1.selectionFromActiveCell)(cell));
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(sheetId, cell, formula, null);
|
|
48
|
+
} },
|
|
49
|
+
react_1.default.createElement(ui_1.DropdownMenuItemIndicator, null,
|
|
50
|
+
react_1.default.createElement(icons_1.CheckIcon, null)),
|
|
51
|
+
option.label)); }),
|
|
52
|
+
onRequestEditCell ? (react_1.default.createElement(react_1.default.Fragment, null,
|
|
53
|
+
react_1.default.createElement(ui_1.DropdownMenuSeparator, null),
|
|
54
|
+
react_1.default.createElement(ui_1.DropdownMenuItem, { disabled: readonly, onSelect: function () {
|
|
55
|
+
return onRequestEditCell(sheetId, cell, total_row_functions_1.MORE_FUNCTIONS_INITIAL_VALUE);
|
|
56
|
+
} }, "More Functions\u2026"))) : null));
|
|
57
|
+
};
|
|
58
|
+
exports.TotalRowFunctionMenuItems = TotalRowFunctionMenuItems;
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
import { escapeStructuredColumnName, getTotalsRowFunctionFromFormula, type TotalsRowFunction } from "@rowsncolumns/utils";
|
|
1
2
|
import type { TableView } from "../../types";
|
|
2
3
|
/**
|
|
3
|
-
* The aggregations Excel offers in a table's totals-row dropdown
|
|
4
|
-
*
|
|
4
|
+
* The aggregations Excel offers in a table's totals-row dropdown — the
|
|
5
|
+
* `totalsRowFunction` values a column records (`custom` is what "More
|
|
6
|
+
* Functions…" produces and is not a picker entry).
|
|
5
7
|
*/
|
|
6
|
-
export type TotalRowFunction =
|
|
8
|
+
export type TotalRowFunction = Exclude<TotalsRowFunction, "custom">;
|
|
7
9
|
export type TotalRowFunctionOption = {
|
|
8
10
|
id: TotalRowFunction;
|
|
9
11
|
label: string;
|
|
@@ -11,11 +13,9 @@ export type TotalRowFunctionOption = {
|
|
|
11
13
|
subtotal?: number;
|
|
12
14
|
};
|
|
13
15
|
export declare const TOTAL_ROW_FUNCTIONS: TotalRowFunctionOption[];
|
|
14
|
-
/**
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
*/
|
|
18
|
-
export declare const escapeStructuredColumnName: (name: string) => string;
|
|
16
|
+
/** What "More Functions…" pre-fills in the cell editor for a custom totals formula. */
|
|
17
|
+
export declare const MORE_FUNCTIONS_INITIAL_VALUE = "=SUBTOTAL(";
|
|
18
|
+
export { escapeStructuredColumnName, getTotalsRowFunctionFromFormula as getTotalRowFunctionFromFormula };
|
|
19
19
|
/**
|
|
20
20
|
* Formula for a totals-row cell, e.g. `=SUBTOTAL(109,Table1[Amount])`.
|
|
21
21
|
* Qualified with the table name so it evaluates from any engine and matches
|
|
@@ -24,9 +24,9 @@ export declare const escapeStructuredColumnName: (name: string) => string;
|
|
|
24
24
|
*/
|
|
25
25
|
export declare const getTotalRowFunctionFormula: (fn: TotalRowFunction, table: Pick<TableView, "title" | "columns" | "range">, columnIndex: number) => string | undefined;
|
|
26
26
|
/**
|
|
27
|
-
*
|
|
28
|
-
* the
|
|
29
|
-
* `
|
|
27
|
+
* The table's columns with `columnIndex`'s `totalsRowFunction` set to `fn` —
|
|
28
|
+
* the shape `onUpdateTable` persists so the choice survives toggling the totals
|
|
29
|
+
* row off and on. `undefined` when the column list does not cover the cell.
|
|
30
30
|
*/
|
|
31
|
-
export declare const
|
|
31
|
+
export declare const withTotalRowFunction: (table: Pick<TableView, "columns" | "range">, columnIndex: number, fn: TotalRowFunction) => TableView["columns"] | undefined;
|
|
32
32
|
//# sourceMappingURL=total-row-functions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"total-row-functions.d.ts","sourceRoot":"","sources":["../../../../components/context-menu/total-row-functions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C
|
|
1
|
+
{"version":3,"file":"total-row-functions.d.ts","sourceRoot":"","sources":["../../../../components/context-menu/total-row-functions.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAE1B,+BAA+B,EAE/B,KAAK,iBAAiB,EACvB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;AAEpE,MAAM,MAAM,sBAAsB,GAAG;IACnC,EAAE,EAAE,gBAAgB,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,sBAAsB,EAgBrD,CAAC;AAEJ,uFAAuF;AACvF,eAAO,MAAM,4BAA4B,eAAe,CAAC;AAEzD,OAAO,EAAE,0BAA0B,EAAE,+BAA+B,IAAI,8BAA8B,EAAE,CAAC;AAEzG;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B,GACrC,IAAI,gBAAgB,EACpB,OAAO,IAAI,CAAC,SAAS,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC,EACrD,aAAa,MAAM,KAClB,MAAM,GAAG,SAUX,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,GAC/B,OAAO,IAAI,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,EAC3C,aAAa,MAAM,EACnB,IAAI,gBAAgB,KACnB,SAAS,CAAC,SAAS,CAAC,GAAG,SASzB,CAAC"}
|