@rowsncolumns/spreadsheet 10.2.77 → 10.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/api/insert-options.d.ts +67 -0
- package/dist/cjs/api/insert-options.d.ts.map +1 -0
- package/dist/cjs/api/insert-options.js +104 -0
- package/dist/cjs/api/move-overwrite.d.ts +14 -0
- package/dist/cjs/api/move-overwrite.d.ts.map +1 -0
- package/dist/cjs/api/move-overwrite.js +29 -0
- package/dist/cjs/api/multi-selection.d.ts +59 -0
- package/dist/cjs/api/multi-selection.d.ts.map +1 -0
- package/dist/cjs/api/multi-selection.js +166 -0
- package/dist/cjs/atoms/index.d.ts +3 -0
- package/dist/cjs/atoms/index.d.ts.map +1 -1
- package/dist/cjs/atoms/index.js +3 -0
- package/dist/cjs/atoms/insert-cells-dialog.atom.d.ts +36 -0
- package/dist/cjs/atoms/insert-cells-dialog.atom.d.ts.map +1 -0
- package/dist/cjs/atoms/insert-cells-dialog.atom.js +34 -0
- package/dist/cjs/atoms/insert-options.atom.d.ts +21 -0
- package/dist/cjs/atoms/insert-options.atom.d.ts.map +1 -0
- package/dist/cjs/atoms/insert-options.atom.js +11 -0
- package/dist/cjs/atoms/move-overwrite-confirm.atom.d.ts +24 -0
- package/dist/cjs/atoms/move-overwrite-confirm.atom.d.ts.map +1 -0
- package/dist/cjs/atoms/move-overwrite-confirm.atom.js +42 -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 +15 -2
- package/dist/cjs/components/canvas-grid/index.d.ts.map +1 -1
- package/dist/cjs/components/canvas-grid/index.js +298 -68
- package/dist/cjs/components/canvas-grid/typings.d.ts +47 -5
- package/dist/cjs/components/canvas-grid/typings.d.ts.map +1 -1
- package/dist/cjs/components/cell-editor/formula-result-preview.d.ts +4 -1
- package/dist/cjs/components/cell-editor/formula-result-preview.d.ts.map +1 -1
- package/dist/cjs/components/cell-editor/formula-result-preview.js +2 -2
- package/dist/cjs/components/cell-editor/index.d.ts +7 -1
- package/dist/cjs/components/cell-editor/index.d.ts.map +1 -1
- package/dist/cjs/components/cell-editor/index.js +3 -3
- package/dist/cjs/components/cell-input/cell-input.d.ts +13 -0
- package/dist/cjs/components/cell-input/cell-input.d.ts.map +1 -1
- package/dist/cjs/components/cell-input/cell-input.js +8 -3
- 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 +3 -1
- package/dist/cjs/components/context-menu/index.d.ts +16 -1
- package/dist/cjs/components/context-menu/index.d.ts.map +1 -1
- package/dist/cjs/components/context-menu/index.js +245 -24
- package/dist/cjs/components/embeds/embed-draggable.d.ts.map +1 -1
- package/dist/cjs/components/embeds/embed-draggable.js +4 -3
- package/dist/cjs/components/floating-cell-editor/index.d.ts.map +1 -1
- package/dist/cjs/components/floating-cell-editor/index.js +13 -5
- package/dist/cjs/components/insert-cells-dialog/index.d.ts +35 -0
- package/dist/cjs/components/insert-cells-dialog/index.d.ts.map +1 -0
- package/dist/cjs/components/insert-cells-dialog/index.js +84 -0
- package/dist/cjs/components/insert-options-smart-tag/index.d.ts +25 -0
- package/dist/cjs/components/insert-options-smart-tag/index.d.ts.map +1 -0
- package/dist/cjs/components/insert-options-smart-tag/index.js +41 -0
- package/dist/cjs/components/move-overwrite-confirm-dialog/index.d.ts +8 -0
- package/dist/cjs/components/move-overwrite-confirm-dialog/index.d.ts.map +1 -0
- package/dist/cjs/components/move-overwrite-confirm-dialog/index.js +34 -0
- package/dist/cjs/components/resizer/index.d.ts.map +1 -1
- package/dist/cjs/components/resizer/index.js +10 -5
- 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 +4 -2
- package/dist/cjs/components/selection/types.d.ts +8 -0
- package/dist/cjs/components/selection/types.d.ts.map +1 -1
- package/dist/cjs/components/sheet-search/index.d.ts.map +1 -1
- package/dist/cjs/components/sheet-search/index.js +6 -2
- package/dist/cjs/config.d.ts +6 -0
- package/dist/cjs/config.d.ts.map +1 -1
- package/dist/cjs/config.js +7 -1
- package/dist/cjs/hooks/use-cell-renderer.d.ts +7 -1
- package/dist/cjs/hooks/use-cell-renderer.d.ts.map +1 -1
- package/dist/cjs/hooks/use-cell-renderer.js +8 -3
- package/dist/cjs/hooks/use-context-setter.d.ts.map +1 -1
- package/dist/cjs/hooks/use-context-setter.js +5 -1
- package/dist/cjs/hooks/use-copy-paste-cut.d.ts +5 -0
- package/dist/cjs/hooks/use-copy-paste-cut.d.ts.map +1 -1
- package/dist/cjs/hooks/use-copy-paste-cut.js +25 -3
- package/dist/cjs/hooks/use-editor-change.d.ts +4 -1
- package/dist/cjs/hooks/use-editor-change.d.ts.map +1 -1
- package/dist/cjs/hooks/use-editor-change.js +4 -3
- package/dist/cjs/hooks/use-editor-submit.d.ts +8 -1
- package/dist/cjs/hooks/use-editor-submit.d.ts.map +1 -1
- package/dist/cjs/hooks/use-editor-submit.js +9 -1
- package/dist/cjs/hooks/use-header-actions.d.ts.map +1 -1
- package/dist/cjs/hooks/use-header-actions.js +17 -10
- package/dist/cjs/hooks/use-move-columns-rows.d.ts.map +1 -1
- package/dist/cjs/hooks/use-move-columns-rows.js +27 -15
- package/dist/cjs/hooks/use-selection-move.d.ts.map +1 -1
- package/dist/cjs/hooks/use-selection-move.js +14 -6
- package/dist/cjs/hooks/use-selection-renderer.d.ts +9 -1
- package/dist/cjs/hooks/use-selection-renderer.d.ts.map +1 -1
- package/dist/cjs/hooks/use-selection-renderer.js +26 -2
- package/dist/cjs/hooks/use-selection-resize.d.ts.map +1 -1
- package/dist/cjs/hooks/use-selection-resize.js +13 -6
- package/dist/cjs/hooks/use-selection.d.ts +13 -5
- package/dist/cjs/hooks/use-selection.d.ts.map +1 -1
- package/dist/cjs/hooks/use-selection.js +107 -31
- package/dist/cjs/hooks/use-table-resizer.d.ts.map +1 -1
- package/dist/cjs/hooks/use-table-resizer.js +16 -8
- package/dist/cjs/hooks/use-touch.d.ts.map +1 -1
- package/dist/cjs/hooks/use-touch.js +16 -8
- package/dist/cjs/index.d.ts +7 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +7 -0
- package/dist/cjs/release-date.js +1 -1
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/esm/api/insert-options.d.ts +67 -0
- package/dist/esm/api/insert-options.d.ts.map +1 -0
- package/dist/esm/api/insert-options.js +91 -0
- package/dist/esm/api/move-overwrite.d.ts +14 -0
- package/dist/esm/api/move-overwrite.d.ts.map +1 -0
- package/dist/esm/api/move-overwrite.js +25 -0
- package/dist/esm/api/multi-selection.d.ts +59 -0
- package/dist/esm/api/multi-selection.d.ts.map +1 -0
- package/dist/esm/api/multi-selection.js +92 -0
- package/dist/esm/atoms/index.d.ts +3 -0
- package/dist/esm/atoms/index.d.ts.map +1 -1
- package/dist/esm/atoms/index.js +3 -0
- package/dist/esm/atoms/insert-cells-dialog.atom.d.ts +36 -0
- package/dist/esm/atoms/insert-cells-dialog.atom.d.ts.map +1 -0
- package/dist/esm/atoms/insert-cells-dialog.atom.js +25 -0
- package/dist/esm/atoms/insert-options.atom.d.ts +21 -0
- package/dist/esm/atoms/insert-options.atom.d.ts.map +1 -0
- package/dist/esm/atoms/insert-options.atom.js +5 -0
- package/dist/esm/atoms/move-overwrite-confirm.atom.d.ts +24 -0
- package/dist/esm/atoms/move-overwrite-confirm.atom.d.ts.map +1 -0
- package/dist/esm/atoms/move-overwrite-confirm.atom.js +29 -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 +10 -0
- package/dist/esm/components/canvas-grid/index.d.ts.map +1 -1
- package/dist/esm/components/canvas-grid/index.js +250 -24
- package/dist/esm/components/canvas-grid/typings.d.ts +47 -5
- package/dist/esm/components/canvas-grid/typings.d.ts.map +1 -1
- package/dist/esm/components/cell-editor/formula-result-preview.d.ts +4 -1
- package/dist/esm/components/cell-editor/formula-result-preview.d.ts.map +1 -1
- package/dist/esm/components/cell-editor/formula-result-preview.js +3 -3
- package/dist/esm/components/cell-editor/index.d.ts +7 -1
- package/dist/esm/components/cell-editor/index.d.ts.map +1 -1
- package/dist/esm/components/cell-editor/index.js +3 -3
- package/dist/esm/components/cell-input/cell-input.d.ts +13 -0
- package/dist/esm/components/cell-input/cell-input.d.ts.map +1 -1
- package/dist/esm/components/cell-input/cell-input.js +10 -5
- 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 +3 -1
- package/dist/esm/components/context-menu/index.d.ts +16 -1
- package/dist/esm/components/context-menu/index.d.ts.map +1 -1
- package/dist/esm/components/context-menu/index.js +193 -16
- package/dist/esm/components/embeds/embed-draggable.d.ts.map +1 -1
- package/dist/esm/components/embeds/embed-draggable.js +3 -2
- package/dist/esm/components/floating-cell-editor/index.d.ts.map +1 -1
- package/dist/esm/components/floating-cell-editor/index.js +12 -6
- package/dist/esm/components/insert-cells-dialog/index.d.ts +35 -0
- package/dist/esm/components/insert-cells-dialog/index.d.ts.map +1 -0
- package/dist/esm/components/insert-cells-dialog/index.js +79 -0
- package/dist/esm/components/insert-options-smart-tag/index.d.ts +25 -0
- package/dist/esm/components/insert-options-smart-tag/index.d.ts.map +1 -0
- package/dist/esm/components/insert-options-smart-tag/index.js +35 -0
- package/dist/esm/components/move-overwrite-confirm-dialog/index.d.ts +8 -0
- package/dist/esm/components/move-overwrite-confirm-dialog/index.d.ts.map +1 -0
- package/dist/esm/components/move-overwrite-confirm-dialog/index.js +30 -0
- package/dist/esm/components/resizer/index.d.ts.map +1 -1
- package/dist/esm/components/resizer/index.js +8 -4
- 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 +4 -2
- package/dist/esm/components/selection/types.d.ts +8 -0
- package/dist/esm/components/selection/types.d.ts.map +1 -1
- package/dist/esm/components/sheet-search/index.d.ts.map +1 -1
- package/dist/esm/components/sheet-search/index.js +5 -2
- package/dist/esm/config.d.ts +6 -0
- package/dist/esm/config.d.ts.map +1 -1
- package/dist/esm/config.js +6 -0
- package/dist/esm/hooks/use-cell-renderer.d.ts +7 -1
- package/dist/esm/hooks/use-cell-renderer.d.ts.map +1 -1
- package/dist/esm/hooks/use-cell-renderer.js +9 -4
- package/dist/esm/hooks/use-context-setter.d.ts.map +1 -1
- package/dist/esm/hooks/use-context-setter.js +5 -1
- package/dist/esm/hooks/use-copy-paste-cut.d.ts +5 -0
- package/dist/esm/hooks/use-copy-paste-cut.d.ts.map +1 -1
- package/dist/esm/hooks/use-copy-paste-cut.js +25 -4
- package/dist/esm/hooks/use-editor-change.d.ts +4 -1
- package/dist/esm/hooks/use-editor-change.d.ts.map +1 -1
- package/dist/esm/hooks/use-editor-change.js +5 -4
- package/dist/esm/hooks/use-editor-submit.d.ts +8 -1
- package/dist/esm/hooks/use-editor-submit.d.ts.map +1 -1
- package/dist/esm/hooks/use-editor-submit.js +10 -2
- package/dist/esm/hooks/use-header-actions.d.ts.map +1 -1
- package/dist/esm/hooks/use-header-actions.js +11 -4
- package/dist/esm/hooks/use-move-columns-rows.d.ts.map +1 -1
- package/dist/esm/hooks/use-move-columns-rows.js +18 -6
- package/dist/esm/hooks/use-selection-move.d.ts.map +1 -1
- package/dist/esm/hooks/use-selection-move.js +11 -4
- package/dist/esm/hooks/use-selection-renderer.d.ts +9 -1
- package/dist/esm/hooks/use-selection-renderer.d.ts.map +1 -1
- package/dist/esm/hooks/use-selection-renderer.js +26 -2
- package/dist/esm/hooks/use-selection-resize.d.ts.map +1 -1
- package/dist/esm/hooks/use-selection-resize.js +11 -5
- package/dist/esm/hooks/use-selection.d.ts +13 -5
- package/dist/esm/hooks/use-selection.d.ts.map +1 -1
- package/dist/esm/hooks/use-selection.js +89 -27
- package/dist/esm/hooks/use-table-resizer.d.ts.map +1 -1
- package/dist/esm/hooks/use-table-resizer.js +15 -9
- package/dist/esm/hooks/use-touch.d.ts.map +1 -1
- package/dist/esm/hooks/use-touch.js +15 -7
- package/dist/esm/index.d.ts +7 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +7 -0
- package/dist/esm/release-date.js +1 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/spreadsheet.min.css +1 -1
- package/package.json +6 -6
|
@@ -7,28 +7,245 @@ var icons_1 = require("@rowsncolumns/icons");
|
|
|
7
7
|
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
|
+
var multi_selection_1 = require("../../api/multi-selection");
|
|
10
11
|
var validation_1 = require("../../api/validation");
|
|
11
12
|
var atoms_1 = require("../../atoms");
|
|
12
13
|
var advanced_filter_dialog_atom_1 = require("../../atoms/advanced-filter-dialog.atom");
|
|
13
14
|
var goal_seek_dialog_atom_1 = require("../../atoms/goal-seek-dialog.atom");
|
|
15
|
+
var insert_cells_dialog_atom_1 = require("../../atoms/insert-cells-dialog.atom");
|
|
14
16
|
var remove_duplicates_dialog_atom_1 = require("../../atoms/remove-duplicates-dialog.atom");
|
|
15
17
|
var subtotal_dialog_atom_1 = require("../../atoms/subtotal-dialog.atom");
|
|
16
18
|
var text_to_columns_dialog_atom_1 = require("../../atoms/text-to-columns-dialog.atom");
|
|
19
|
+
var validation_alert_atom_1 = require("../../atoms/validation-alert.atom");
|
|
17
20
|
var config_1 = require("../../config");
|
|
18
21
|
var helpers_1 = require("../../helpers");
|
|
19
22
|
var total_row_functions_1 = require("./total-row-functions");
|
|
20
23
|
var ContextMenu = function (_a) {
|
|
21
|
-
var _b;
|
|
22
|
-
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, 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,
|
|
24
|
+
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;
|
|
23
26
|
var isHeader = isColumnHeader || isRowHeader;
|
|
24
27
|
var shouldFocusSheetRef = (0, react_1.useRef)(true);
|
|
25
28
|
var multiColumnTitle = (0, helpers_1.generateMultiDimTitle)(selectedColumnHeadersIds, "y");
|
|
26
|
-
var
|
|
27
|
-
? selections
|
|
28
|
-
: (0, grid_1.selectionFromActiveCell)(activeCell)
|
|
29
|
+
var selectionAreas = selections.length
|
|
30
|
+
? selections
|
|
31
|
+
: (0, grid_1.selectionFromActiveCell)(activeCell);
|
|
32
|
+
var selection = selectionAreas[0];
|
|
29
33
|
var multiRowTitle = (0, helpers_1.generateMultiDimTitle)(selectedRowHeadersIds, "x");
|
|
30
|
-
|
|
31
|
-
var
|
|
34
|
+
// Every Ctrl-click area counts, not just the first (Excel INS-08 / UI-07).
|
|
35
|
+
var selectedRowIndexes = (0, multi_selection_1.indexesForAreas)(selectionAreas, "row");
|
|
36
|
+
var selectedColumnIndexes = (0, multi_selection_1.indexesForAreas)(selectionAreas, "column");
|
|
37
|
+
var isWholeRow = columnCount != null
|
|
38
|
+
? (0, multi_selection_1.wholeRowPredicate)(columnCount)
|
|
39
|
+
: (0, multi_selection_1.wholeRowPredicateFromHeaderIds)(selectedRowHeadersIds);
|
|
40
|
+
var isWholeColumn = rowCount != null
|
|
41
|
+
? (0, multi_selection_1.wholeColumnPredicate)(rowCount)
|
|
42
|
+
: (0, multi_selection_1.wholeColumnPredicateFromHeaderIds)(selectedColumnHeadersIds);
|
|
43
|
+
var multiSelectionKind = (0, multi_selection_1.classifyMultiSelection)(selectionAreas, {
|
|
44
|
+
isWholeRow: isWholeRow,
|
|
45
|
+
isWholeColumn: isWholeColumn,
|
|
46
|
+
});
|
|
47
|
+
var showValidationAlert = (0, validation_alert_atom_1.useShowValidationAlert)();
|
|
48
|
+
var isInsertCellsDialogMounted = (0, insert_cells_dialog_atom_1.useIsInsertCellsDialogMounted)();
|
|
49
|
+
var openInsertCellsDialog = (0, insert_cells_dialog_atom_1.useOpenInsertCellsDialog)();
|
|
50
|
+
/** Excel: "That command cannot be used on multiple selections." */
|
|
51
|
+
var refuseMultipleSelections = function (title) {
|
|
52
|
+
shouldFocusSheetRef.current = false;
|
|
53
|
+
void showValidationAlert({
|
|
54
|
+
style: "stop",
|
|
55
|
+
title: title,
|
|
56
|
+
message: config_1.MULTIPLE_SELECTIONS_ERROR,
|
|
57
|
+
confirm: false,
|
|
58
|
+
}).then(function () { return focusSheet(); });
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* The entire-row bands a row insert / delete acts on — one per selected
|
|
62
|
+
* area, bottom-up, so inserting above each band never shifts a band still
|
|
63
|
+
* to be processed (Excel INS-08). Falls back to the header bookkeeping, then
|
|
64
|
+
* to the active row, when no area is a whole row.
|
|
65
|
+
*/
|
|
66
|
+
var rowBands = function () {
|
|
67
|
+
var areas = selectionAreas.filter(function (_a) {
|
|
68
|
+
var range = _a.range;
|
|
69
|
+
return isWholeRow(range);
|
|
70
|
+
});
|
|
71
|
+
var bands = areas.length
|
|
72
|
+
? (0, multi_selection_1.bandsForAreas)(areas, "row")
|
|
73
|
+
: (0, multi_selection_1.bandsFromIndexes)(selectedRowHeadersIds);
|
|
74
|
+
return bands.length
|
|
75
|
+
? bands
|
|
76
|
+
: [{ start: activeCell.rowIndex, end: activeCell.rowIndex }];
|
|
77
|
+
};
|
|
78
|
+
var columnBands = function () {
|
|
79
|
+
var areas = selectionAreas.filter(function (_a) {
|
|
80
|
+
var range = _a.range;
|
|
81
|
+
return isWholeColumn(range);
|
|
82
|
+
});
|
|
83
|
+
var bands = areas.length
|
|
84
|
+
? (0, multi_selection_1.bandsForAreas)(areas, "column")
|
|
85
|
+
: (0, multi_selection_1.bandsFromIndexes)(selectedColumnHeadersIds);
|
|
86
|
+
return bands.length
|
|
87
|
+
? bands
|
|
88
|
+
: [{ start: activeCell.columnIndex, end: activeCell.columnIndex }];
|
|
89
|
+
};
|
|
90
|
+
var bandSize = function (band) { return band.end - band.start + 1; };
|
|
91
|
+
var insertRowsAbove = function () {
|
|
92
|
+
var e_1, _a;
|
|
93
|
+
try {
|
|
94
|
+
for (var _b = tslib_1.__values(rowBands()), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
95
|
+
var band = _c.value;
|
|
96
|
+
onInsertRow === null || onInsertRow === void 0 ? void 0 : onInsertRow(sheetId, band.start, bandSize(band));
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
100
|
+
finally {
|
|
101
|
+
try {
|
|
102
|
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
103
|
+
}
|
|
104
|
+
finally { if (e_1) throw e_1.error; }
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
var insertRowsBelow = function () {
|
|
108
|
+
var e_2, _a;
|
|
109
|
+
try {
|
|
110
|
+
for (var _b = tslib_1.__values(rowBands()), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
111
|
+
var band = _c.value;
|
|
112
|
+
onInsertRow === null || onInsertRow === void 0 ? void 0 : onInsertRow(sheetId, band.end + 1, bandSize(band));
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
116
|
+
finally {
|
|
117
|
+
try {
|
|
118
|
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
119
|
+
}
|
|
120
|
+
finally { if (e_2) throw e_2.error; }
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
var insertColumnsLeft = function () {
|
|
124
|
+
var e_3, _a;
|
|
125
|
+
try {
|
|
126
|
+
for (var _b = tslib_1.__values(columnBands()), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
127
|
+
var band = _c.value;
|
|
128
|
+
onInsertColumn === null || onInsertColumn === void 0 ? void 0 : onInsertColumn(sheetId, band.start, bandSize(band));
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
132
|
+
finally {
|
|
133
|
+
try {
|
|
134
|
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
135
|
+
}
|
|
136
|
+
finally { if (e_3) throw e_3.error; }
|
|
137
|
+
}
|
|
138
|
+
};
|
|
139
|
+
var insertColumnsRight = function () {
|
|
140
|
+
var e_4, _a;
|
|
141
|
+
try {
|
|
142
|
+
for (var _b = tslib_1.__values(columnBands()), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
143
|
+
var band = _c.value;
|
|
144
|
+
onInsertColumn === null || onInsertColumn === void 0 ? void 0 : onInsertColumn(sheetId, band.end + 1, bandSize(band));
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
catch (e_4_1) { e_4 = { error: e_4_1 }; }
|
|
148
|
+
finally {
|
|
149
|
+
try {
|
|
150
|
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
151
|
+
}
|
|
152
|
+
finally { if (e_4) throw e_4.error; }
|
|
153
|
+
}
|
|
154
|
+
};
|
|
155
|
+
var isSingleWholeRow = multiSelectionKind === "single" && isWholeRow(selection.range);
|
|
156
|
+
var isSingleWholeColumn = multiSelectionKind === "single" && isWholeColumn(selection.range);
|
|
157
|
+
/**
|
|
158
|
+
* Excel's cell-menu Insert: entire rows / columns insert directly, a
|
|
159
|
+
* multi-area selection inserts per area or is refused, and a plain cell
|
|
160
|
+
* range opens the Insert dialog (UI-06 / UI-07). The direct submenu remains
|
|
161
|
+
* only while no `InsertCellsDialogHost` is mounted.
|
|
162
|
+
*/
|
|
163
|
+
var usesDirectInsertSubmenu = multiSelectionKind === "single" &&
|
|
164
|
+
!isSingleWholeRow &&
|
|
165
|
+
!isSingleWholeColumn &&
|
|
166
|
+
!isInsertCellsDialogMounted;
|
|
167
|
+
var handleInsertCells = function () {
|
|
168
|
+
if (multiSelectionKind === "mixed") {
|
|
169
|
+
refuseMultipleSelections("Insert");
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
if (multiSelectionKind === "all-rows" || isSingleWholeRow) {
|
|
173
|
+
insertRowsAbove();
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
if (multiSelectionKind === "all-columns" || isSingleWholeColumn) {
|
|
177
|
+
insertColumnsLeft();
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
shouldFocusSheetRef.current = false;
|
|
181
|
+
openInsertCellsDialog({
|
|
182
|
+
mode: "insert",
|
|
183
|
+
defaultChoice: (0, multi_selection_1.defaultInsertCellsChoice)(selection.range),
|
|
184
|
+
onApply: function (choice) {
|
|
185
|
+
switch (choice) {
|
|
186
|
+
case "shift-right":
|
|
187
|
+
onInsertCellsShiftRight === null || onInsertCellsShiftRight === void 0 ? void 0 : onInsertCellsShiftRight(sheetId, activeCell, selections);
|
|
188
|
+
break;
|
|
189
|
+
case "shift-down":
|
|
190
|
+
onInsertCellsShiftDown === null || onInsertCellsShiftDown === void 0 ? void 0 : onInsertCellsShiftDown(sheetId, activeCell, selections);
|
|
191
|
+
break;
|
|
192
|
+
case "entire-row":
|
|
193
|
+
onInsertRow === null || onInsertRow === void 0 ? void 0 : onInsertRow(sheetId, selection.range.startRowIndex, selectedRowIndexes.length);
|
|
194
|
+
break;
|
|
195
|
+
case "entire-column":
|
|
196
|
+
onInsertColumn === null || onInsertColumn === void 0 ? void 0 : onInsertColumn(sheetId, selection.range.startColumnIndex, selectedColumnIndexes.length);
|
|
197
|
+
break;
|
|
198
|
+
}
|
|
199
|
+
focusSheet();
|
|
200
|
+
},
|
|
201
|
+
});
|
|
202
|
+
};
|
|
203
|
+
var handleDeleteCells = function () {
|
|
204
|
+
if (multiSelectionKind === "mixed") {
|
|
205
|
+
refuseMultipleSelections("Delete");
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
if (multiSelectionKind === "all-rows" || isSingleWholeRow) {
|
|
209
|
+
onDeleteRow === null || onDeleteRow === void 0 ? void 0 : onDeleteRow(sheetId, selectedRowIndexes);
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
212
|
+
if (multiSelectionKind === "all-columns" || isSingleWholeColumn) {
|
|
213
|
+
onDeleteColumn === null || onDeleteColumn === void 0 ? void 0 : onDeleteColumn(sheetId, selectedColumnIndexes);
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
shouldFocusSheetRef.current = false;
|
|
217
|
+
openInsertCellsDialog({
|
|
218
|
+
mode: "delete",
|
|
219
|
+
defaultChoice: (0, multi_selection_1.defaultDeleteCellsChoice)(selection.range),
|
|
220
|
+
onApply: function (choice) {
|
|
221
|
+
switch (choice) {
|
|
222
|
+
case "shift-left":
|
|
223
|
+
onDeleteCellsShiftLeft === null || onDeleteCellsShiftLeft === void 0 ? void 0 : onDeleteCellsShiftLeft(sheetId, activeCell, selections);
|
|
224
|
+
break;
|
|
225
|
+
case "shift-up":
|
|
226
|
+
onDeleteCellsShiftUp === null || onDeleteCellsShiftUp === void 0 ? void 0 : onDeleteCellsShiftUp(sheetId, activeCell, selections);
|
|
227
|
+
break;
|
|
228
|
+
case "entire-row":
|
|
229
|
+
onDeleteRow === null || onDeleteRow === void 0 ? void 0 : onDeleteRow(sheetId, selectedRowIndexes);
|
|
230
|
+
break;
|
|
231
|
+
case "entire-column":
|
|
232
|
+
onDeleteColumn === null || onDeleteColumn === void 0 ? void 0 : onDeleteColumn(sheetId, selectedColumnIndexes);
|
|
233
|
+
break;
|
|
234
|
+
}
|
|
235
|
+
focusSheet();
|
|
236
|
+
},
|
|
237
|
+
});
|
|
238
|
+
};
|
|
239
|
+
var insertCellsLabel = multiSelectionKind === "all-rows" || isSingleWholeRow
|
|
240
|
+
? "Insert ".concat(selectedRowIndexes.length, " row above")
|
|
241
|
+
: multiSelectionKind === "all-columns" || isSingleWholeColumn
|
|
242
|
+
? "Insert ".concat(selectedColumnIndexes.length, " column left")
|
|
243
|
+
: "Insert…";
|
|
244
|
+
var deleteCellsLabel = multiSelectionKind === "all-rows" || isSingleWholeRow
|
|
245
|
+
? "Delete row ".concat((_b = (0, helpers_1.generateMultiDimTitle)(selectedRowIndexes, "x")) !== null && _b !== void 0 ? _b : "")
|
|
246
|
+
: multiSelectionKind === "all-columns" || isSingleWholeColumn
|
|
247
|
+
? "Delete column ".concat((_c = (0, helpers_1.generateMultiDimTitle)(selectedColumnIndexes, "y")) !== null && _c !== void 0 ? _c : "")
|
|
248
|
+
: "Delete…";
|
|
32
249
|
var hiddenColumns = selectedColumnIndexes.filter(function (index) {
|
|
33
250
|
return isHiddenColumn(index);
|
|
34
251
|
});
|
|
@@ -349,6 +566,12 @@ var ContextMenu = function (_a) {
|
|
|
349
566
|
react_1.default.createElement(icons_1.ClipboardIcon, null)),
|
|
350
567
|
"Paste ",
|
|
351
568
|
react_1.default.createElement(ui_1.DropdownRightSlot, null, "\u2318V")),
|
|
569
|
+
onInsertCutCells ? (react_1.default.createElement(ui_1.DropdownMenuItem, { onClick: function () {
|
|
570
|
+
return onInsertCutCells(isRowHeader ? "rows" : isColumnHeader ? "columns" : "cells");
|
|
571
|
+
}, disabled: readonly || !hasCutSelection },
|
|
572
|
+
react_1.default.createElement(ui_1.DropdownLeftSlot, null,
|
|
573
|
+
react_1.default.createElement(icons_1.ClipboardIcon, null)),
|
|
574
|
+
"Insert Cut Cells")) : null,
|
|
352
575
|
react_1.default.createElement(ui_1.DropdownMenuSub, null,
|
|
353
576
|
react_1.default.createElement(ui_1.DropdownMenuSubTrigger, { disabled: readonly },
|
|
354
577
|
react_1.default.createElement(ui_1.DropdownLeftSlot, null,
|
|
@@ -394,17 +617,13 @@ var ContextMenu = function (_a) {
|
|
|
394
617
|
react_1.default.createElement(ui_1.DropdownMenuItem, { onClick: function () { return onClearContents === null || onClearContents === void 0 ? void 0 : onClearContents(sheetId, activeCell, selections); }, disabled: readonly }, "Clear contents"))),
|
|
395
618
|
react_1.default.createElement(ui_1.DropdownMenuSeparator, null),
|
|
396
619
|
isColumnHeader ? (react_1.default.createElement(react_1.default.Fragment, null,
|
|
397
|
-
react_1.default.createElement(ui_1.DropdownMenuItem, { onClick:
|
|
398
|
-
return onInsertColumn === null || onInsertColumn === void 0 ? void 0 : onInsertColumn(sheetId, activeCell.columnIndex, selectedColumnHeadersIds.length);
|
|
399
|
-
}, disabled: readonly },
|
|
620
|
+
react_1.default.createElement(ui_1.DropdownMenuItem, { onClick: insertColumnsLeft, disabled: readonly },
|
|
400
621
|
react_1.default.createElement(ui_1.DropdownLeftSlot, null,
|
|
401
622
|
react_1.default.createElement(icons_1.PlusIcon, null)),
|
|
402
623
|
"Insert ",
|
|
403
624
|
selectedColumnHeadersIds.length,
|
|
404
625
|
" column left"),
|
|
405
|
-
react_1.default.createElement(ui_1.DropdownMenuItem, { onClick:
|
|
406
|
-
return onInsertColumn === null || onInsertColumn === void 0 ? void 0 : onInsertColumn(sheetId, activeCell.columnIndex + selectedColumnHeadersIds.length, selectedColumnHeadersIds.length);
|
|
407
|
-
}, disabled: readonly },
|
|
626
|
+
react_1.default.createElement(ui_1.DropdownMenuItem, { onClick: insertColumnsRight, disabled: readonly },
|
|
408
627
|
react_1.default.createElement(ui_1.DropdownLeftSlot, null,
|
|
409
628
|
react_1.default.createElement(icons_1.PlusIcon, null)),
|
|
410
629
|
"Insert ",
|
|
@@ -470,17 +689,13 @@ var ContextMenu = function (_a) {
|
|
|
470
689
|
react_1.default.createElement(icons_1.SortUpIcon, null)),
|
|
471
690
|
"Sort sheet Z to A"))) : null,
|
|
472
691
|
isRowHeader ? (react_1.default.createElement(react_1.default.Fragment, null,
|
|
473
|
-
react_1.default.createElement(ui_1.DropdownMenuItem, { onClick:
|
|
474
|
-
return onInsertRow === null || onInsertRow === void 0 ? void 0 : onInsertRow(sheetId, activeCell.rowIndex, selectedRowHeadersIds.length);
|
|
475
|
-
}, disabled: readonly },
|
|
692
|
+
react_1.default.createElement(ui_1.DropdownMenuItem, { onClick: insertRowsAbove, disabled: readonly },
|
|
476
693
|
react_1.default.createElement(ui_1.DropdownLeftSlot, null,
|
|
477
694
|
react_1.default.createElement(icons_1.PlusIcon, null)),
|
|
478
695
|
"Insert ",
|
|
479
696
|
selectedRowHeadersIds.length,
|
|
480
697
|
" row above"),
|
|
481
|
-
react_1.default.createElement(ui_1.DropdownMenuItem, { onClick:
|
|
482
|
-
return onInsertRow === null || onInsertRow === void 0 ? void 0 : onInsertRow(sheetId, activeCell.rowIndex + selectedRowHeadersIds.length, selectedRowHeadersIds.length);
|
|
483
|
-
}, disabled: readonly },
|
|
698
|
+
react_1.default.createElement(ui_1.DropdownMenuItem, { onClick: insertRowsBelow, disabled: readonly },
|
|
484
699
|
react_1.default.createElement(ui_1.DropdownLeftSlot, null,
|
|
485
700
|
react_1.default.createElement(icons_1.PlusIcon, null)),
|
|
486
701
|
"Insert ",
|
|
@@ -555,7 +770,7 @@ var ContextMenu = function (_a) {
|
|
|
555
770
|
react_1.default.createElement(ui_1.DropdownLeftSlot, null,
|
|
556
771
|
react_1.default.createElement(icons_1.MdOutlineFactCheck, null)),
|
|
557
772
|
"Data validation")) : null)) : (react_1.default.createElement(react_1.default.Fragment, null,
|
|
558
|
-
react_1.default.createElement(ui_1.DropdownMenuSub, null,
|
|
773
|
+
activeTable || usesDirectInsertSubmenu ? (react_1.default.createElement(ui_1.DropdownMenuSub, null,
|
|
559
774
|
react_1.default.createElement(ui_1.DropdownMenuSubTrigger, { disabled: readonly },
|
|
560
775
|
react_1.default.createElement(ui_1.DropdownLeftSlot, null,
|
|
561
776
|
react_1.default.createElement(icons_1.PlusIcon, null)),
|
|
@@ -611,8 +826,11 @@ var ContextMenu = function (_a) {
|
|
|
611
826
|
}, disabled: readonly },
|
|
612
827
|
react_1.default.createElement(ui_1.DropdownLeftSlot, null,
|
|
613
828
|
react_1.default.createElement(icons_1.PlusIcon, null)),
|
|
614
|
-
"Insert cells and shift cells down"))))),
|
|
615
|
-
|
|
829
|
+
"Insert cells and shift cells down")))))) : (react_1.default.createElement(ui_1.DropdownMenuItem, { onClick: handleInsertCells, disabled: readonly },
|
|
830
|
+
react_1.default.createElement(ui_1.DropdownLeftSlot, null,
|
|
831
|
+
react_1.default.createElement(icons_1.PlusIcon, null)),
|
|
832
|
+
insertCellsLabel)),
|
|
833
|
+
activeTable || usesDirectInsertSubmenu ? (react_1.default.createElement(ui_1.DropdownMenuSub, null,
|
|
616
834
|
react_1.default.createElement(ui_1.DropdownMenuSubTrigger, { disabled: readonly },
|
|
617
835
|
react_1.default.createElement(ui_1.DropdownLeftSlot, null,
|
|
618
836
|
react_1.default.createElement(icons_1.TrashIcon, null)),
|
|
@@ -658,7 +876,10 @@ var ContextMenu = function (_a) {
|
|
|
658
876
|
}, disabled: readonly },
|
|
659
877
|
react_1.default.createElement(ui_1.DropdownLeftSlot, null,
|
|
660
878
|
react_1.default.createElement(icons_1.TrashIcon, null)),
|
|
661
|
-
"Delete cells and shift cells up"))))),
|
|
879
|
+
"Delete cells and shift cells up")))))) : (react_1.default.createElement(ui_1.DropdownMenuItem, { onClick: handleDeleteCells, disabled: readonly },
|
|
880
|
+
react_1.default.createElement(ui_1.DropdownLeftSlot, null,
|
|
881
|
+
react_1.default.createElement(icons_1.TrashIcon, null)),
|
|
882
|
+
deleteCellsLabel)),
|
|
662
883
|
react_1.default.createElement(ui_1.DropdownMenuSeparator, null),
|
|
663
884
|
react_1.default.createElement(ui_1.DropdownMenuSub, null,
|
|
664
885
|
react_1.default.createElement(ui_1.DropdownMenuSubTrigger, { disabled: readonly },
|
|
@@ -671,7 +892,7 @@ var ContextMenu = function (_a) {
|
|
|
671
892
|
react_1.default.createElement(ui_1.DropdownMenuItem, { onClick: function () {
|
|
672
893
|
onFilterTableOrFilterView(sheetId, activeCell.rowIndex, activeCell.columnIndex);
|
|
673
894
|
}, disabled: readonly },
|
|
674
|
-
"Cell value \"", (
|
|
895
|
+
"Cell value \"", (_d = getFormattedValue(sheetId, activeCell.rowIndex, activeCell.columnIndex)) !== null && _d !== void 0 ? _d : config_1.BLANK_LABEL,
|
|
675
896
|
"\""))),
|
|
676
897
|
react_1.default.createElement(ui_1.DropdownMenuSub, null,
|
|
677
898
|
react_1.default.createElement(ui_1.DropdownMenuSubTrigger, { disabled: readonly },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embed-draggable.d.ts","sourceRoot":"","sources":["../../../../components/embeds/embed-draggable.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGxD,OAAO,KAAwC,MAAM,OAAO,CAAC;AAC7D,OAAO,KAAK,EACV,eAAe,EAGhB,MAAM,iBAAiB,CAAC;AAOzB,KAAK,mBAAmB,GAAG,IAAI,CAC7B,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EACpC,IAAI,GAAG,UAAU,GAAG,UAAU,CAC/B,GAAG;IACF,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,MAAM,CAAC,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzD;;;;OAIG;IACH,QAAQ,CAAC,CACP,EAAE,EAAE,MAAM,GAAG,MAAM,EACnB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,IAAI,CAAC;IACR;;;OAGG;IACH,QAAQ,CAAC,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACrC;;OAEG;IACH,UAAU,EAAE,aAAa,CAAC;IAC1B,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAC;CAC9D,CAAC;AAoBF,eAAO,MAAM,cAAc,GAAI,mNAoB5B,mBAAmB,
|
|
1
|
+
{"version":3,"file":"embed-draggable.d.ts","sourceRoot":"","sources":["../../../../components/embeds/embed-draggable.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGxD,OAAO,KAAwC,MAAM,OAAO,CAAC;AAC7D,OAAO,KAAK,EACV,eAAe,EAGhB,MAAM,iBAAiB,CAAC;AAOzB,KAAK,mBAAmB,GAAG,IAAI,CAC7B,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EACpC,IAAI,GAAG,UAAU,GAAG,UAAU,CAC/B,GAAG;IACF,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,MAAM,CAAC,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzD;;;;OAIG;IACH,QAAQ,CAAC,CACP,EAAE,EAAE,MAAM,GAAG,MAAM,EACnB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,IAAI,CAAC;IACR;;;OAGG;IACH,QAAQ,CAAC,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACrC;;OAEG;IACH,UAAU,EAAE,aAAa,CAAC;IAC1B,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAC;CAC9D,CAAC;AAoBF,eAAO,MAAM,cAAc,GAAI,mNAoB5B,mBAAmB,sBA6KrB,CAAC"}
|
|
@@ -36,9 +36,10 @@ var EmbedDraggable = function (_a) {
|
|
|
36
36
|
var nodeRef = (0, react_1.useRef)(null);
|
|
37
37
|
// Focus if selected index changes
|
|
38
38
|
(0, use_isomorphic_layout_effect_1.useIsomorphicLayoutEffect)(function () {
|
|
39
|
-
var _a;
|
|
40
|
-
if (isSelected &&
|
|
41
|
-
(_a = nodeRef.current) === null || _a === void 0 ? void 0 : _a.
|
|
39
|
+
var _a, _b;
|
|
40
|
+
if (isSelected &&
|
|
41
|
+
((_a = (0, grid_1.getOwnerDocument)(nodeRef.current)) === null || _a === void 0 ? void 0 : _a.activeElement) !== nodeRef.current) {
|
|
42
|
+
(_b = nodeRef.current) === null || _b === void 0 ? void 0 : _b.focus({ preventScroll: true });
|
|
42
43
|
}
|
|
43
44
|
}, [isSelected]);
|
|
44
45
|
// Handle move. Update internal state
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../components/floating-cell-editor/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGvE,OAAO,KAAK,EAAiB,aAAa,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../components/floating-cell-editor/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGvE,OAAO,KAAK,EAAiB,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAU3C,OAAO,KAAK,MAAM,OAAO,CAAC;AAc1B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EACjB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAgBrD,MAAM,MAAM,uBAAuB,GAAG;IACpC;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,qBAAqB,CAAC,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;IAC/C;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,UAAU,EAAE,aAAa,CAAC;IAC1B;;OAEG;IACH,UAAU,CAAC,EAAE,aAAa,CAAC,mBAAmB,CAAC,EAAE,CAAC;IAClD;;OAEG;IACH,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAC/B;;OAEG;IACH,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;OAEG;IACH,oBAAoB,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAC5C;;;;;OAKG;IACH,QAAQ,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC;IACtC;;OAEG;IACH,kBAAkB,CAAC,EAAE,eAAe,CAAC,oBAAoB,CAAC,CAAC;IAC3D;;OAEG;IACH,WAAW,CAAC,EAAE,eAAe,CAAC,aAAa,CAAC,CAAC;IAC7C;;OAEG;IACH,cAAc,CAAC,EAAE,eAAe,CAAC,gBAAgB,CAAC,CAAC;IAEnD;;OAEG;IACH,+BAA+B,CAAC,EAAE,eAAe,CAAC,iCAAiC,CAAC,CAAC;IACrF;;OAEG;IACH,6BAA6B,CAAC,EAAE,eAAe,CAAC,+BAA+B,CAAC,CAAC;IACjF;;OAEG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;CACnD,CAAC;AAEF,eAAO,MAAM,kBAAkB,mRAkB1B,uBAAuB,uBAwW3B,CAAC"}
|
|
@@ -5,6 +5,7 @@ var tslib_1 = require("tslib");
|
|
|
5
5
|
var grid_1 = require("@rowsncolumns/grid");
|
|
6
6
|
var icons_1 = require("@rowsncolumns/icons");
|
|
7
7
|
var ui_1 = require("@rowsncolumns/ui");
|
|
8
|
+
var utils_1 = require("@rowsncolumns/utils");
|
|
8
9
|
var use_selection_aware_formatting_1 = require("../../hooks/use-selection-aware-formatting");
|
|
9
10
|
var react_1 = require("react");
|
|
10
11
|
var react_2 = tslib_1.__importDefault(require("react"));
|
|
@@ -17,7 +18,12 @@ exports.FloatingCellEditor = (0, react_1.memo)(function (_a) {
|
|
|
17
18
|
var _b, _c, _d, _e, _f, _g, _h;
|
|
18
19
|
var initialValue = _a.initialValue, initialTextFormatRuns = _a.initialTextFormatRuns, className = _a.className, activeCell = _a.activeCell, sheetId = _a.sheetId, cellFormat = _a.cellFormat, theme = _a.theme, isDarkMode = _a.isDarkMode, functionDescriptions = _a.functionDescriptions, _j = _a.selections, selections = _j === void 0 ? config_1.DEFAULT_ARRAY : _j, onChange = _a.onChange, onChangeFormattingProp = _a.onChangeFormatting, onInsertRow = _a.onInsertRow, onInsertColumn = _a.onInsertColumn, ColorSelector = _a.ColorSelector, props = tslib_1.__rest(_a, ["initialValue", "initialTextFormatRuns", "className", "activeCell", "sheetId", "cellFormat", "theme", "isDarkMode", "functionDescriptions", "selections", "onChange", "onChangeFormatting", "onInsertRow", "onInsertColumn", "ColorSelector"]);
|
|
19
20
|
var formulaInputRef = (0, react_1.useRef)(null);
|
|
20
|
-
|
|
21
|
+
// The stored (canonical) entry is shown and edited in the grid's formula locale; the commit
|
|
22
|
+
// below hands the canonical text back to the host.
|
|
23
|
+
var formulaLocale = (0, atoms_1.useFormulaLocale)();
|
|
24
|
+
var _k = tslib_1.__read((0, react_1.useState)(function () {
|
|
25
|
+
return (0, utils_1.localizeCellInput)(initialValue !== null && initialValue !== void 0 ? initialValue : "", formulaLocale);
|
|
26
|
+
}), 2), value = _k[0], setValue = _k[1];
|
|
21
27
|
var _l = tslib_1.__read((0, react_1.useState)(initialTextFormatRuns), 2), textFormatRuns = _l[0], setTextFormatRuns = _l[1];
|
|
22
28
|
var setFormulaMode = (0, atoms_1.useSetFormulaMode)();
|
|
23
29
|
var formulaMode = (0, atoms_1.useFormulaModeValue)();
|
|
@@ -60,15 +66,16 @@ exports.FloatingCellEditor = (0, react_1.memo)(function (_a) {
|
|
|
60
66
|
// Set value when not editing, or when editing but not in formula mode
|
|
61
67
|
if (!isEditing || !formulaMode) {
|
|
62
68
|
var currentValue = (_a = formulaInputRef.current) === null || _a === void 0 ? void 0 : _a.getValue();
|
|
63
|
-
var newValue = initialValue !== null && initialValue !== void 0 ? initialValue : "";
|
|
69
|
+
var newValue = (0, utils_1.localizeCellInput)(initialValue !== null && initialValue !== void 0 ? initialValue : "", formulaLocale);
|
|
64
70
|
if (currentValue !== newValue && (currentValue || newValue)) {
|
|
65
71
|
setValue(newValue);
|
|
66
72
|
}
|
|
67
73
|
}
|
|
68
|
-
}, [initialValue, isEditing, formulaMode]);
|
|
74
|
+
}, [initialValue, isEditing, formulaMode, formulaLocale]);
|
|
69
75
|
var handleSubmit = (0, react_1.useCallback)(function (value, textFormatRuns) {
|
|
70
76
|
if (editingCellCoordinate) {
|
|
71
|
-
|
|
77
|
+
var canonicalValue = (0, utils_1.canonicalizeCellInput)(value, formulaLocale);
|
|
78
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(editingCellCoordinate.sheetId, editingCellCoordinate, canonicalValue, textFormatRuns, initialValue, initialValue !== canonicalValue, initialTextFormatRuns);
|
|
72
79
|
if (!(0, grid_1.isEqualCells)(editingCellCoordinate, activeCell)) {
|
|
73
80
|
setActiveCell === null || setActiveCell === void 0 ? void 0 : setActiveCell(editingCellCoordinate.sheetId, editingCellCoordinate, false);
|
|
74
81
|
}
|
|
@@ -82,6 +89,7 @@ exports.FloatingCellEditor = (0, react_1.memo)(function (_a) {
|
|
|
82
89
|
stopEditing,
|
|
83
90
|
focusSheet,
|
|
84
91
|
onChange,
|
|
92
|
+
formulaLocale,
|
|
85
93
|
]);
|
|
86
94
|
var onFocus = (0, react_1.useCallback)(function () {
|
|
87
95
|
if (!isEditing) {
|
|
@@ -103,7 +111,7 @@ exports.FloatingCellEditor = (0, react_1.memo)(function (_a) {
|
|
|
103
111
|
lineHeight: "normal",
|
|
104
112
|
fontSize: "1rem",
|
|
105
113
|
minHeight: 44,
|
|
106
|
-
}, functionDescriptions: functionDescriptions, getMentions: getMentions }, props))),
|
|
114
|
+
}, functionDescriptions: functionDescriptions, getMentions: getMentions, formulaLocale: formulaLocale }, props))),
|
|
107
115
|
isEditing ? (react_2.default.createElement(react_2.default.Fragment, null,
|
|
108
116
|
react_2.default.createElement(ui_1.IconButton, { tooltip: "Save", variant: "primary", type: "submit", className: "min-w-8 min-h-8" },
|
|
109
117
|
react_2.default.createElement(icons_1.CheckIcon, null)),
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { DeleteCellsChoice, InsertCellsChoice } from "../../api/multi-selection";
|
|
3
|
+
export type InsertCellsDialogProps = {
|
|
4
|
+
mode: "insert";
|
|
5
|
+
/** Controls visibility. */
|
|
6
|
+
open: boolean;
|
|
7
|
+
onOpenChange(open: boolean): void;
|
|
8
|
+
/** Pre-selected entry — Excel derives it from the selection shape (UI-06). */
|
|
9
|
+
defaultChoice: InsertCellsChoice;
|
|
10
|
+
onApply(choice: InsertCellsChoice): void;
|
|
11
|
+
} | {
|
|
12
|
+
mode: "delete";
|
|
13
|
+
open: boolean;
|
|
14
|
+
onOpenChange(open: boolean): void;
|
|
15
|
+
defaultChoice: DeleteCellsChoice;
|
|
16
|
+
onApply(choice: DeleteCellsChoice): void;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Excel's Insert / Delete cells dialog (right-click a cell → "Insert…" /
|
|
20
|
+
* "Delete…"): Shift cells right|down (left|up for Delete), Entire row, Entire
|
|
21
|
+
* column. UI-only — the opener turns the choice into the matching structural
|
|
22
|
+
* command. Header menus never show it: entire rows / columns insert directly.
|
|
23
|
+
*/
|
|
24
|
+
export declare const InsertCellsDialog: React.MemoExoticComponent<(props: InsertCellsDialogProps) => React.JSX.Element>;
|
|
25
|
+
/**
|
|
26
|
+
* Host-mounted, atom-driven wrapper around {@link InsertCellsDialog}. Mount it
|
|
27
|
+
* once in the host alongside the other editor dialogs; the grid opens it from
|
|
28
|
+
* the cell context menu. Remounted per request so each opening starts from the
|
|
29
|
+
* request's default.
|
|
30
|
+
*/
|
|
31
|
+
export declare const InsertCellsDialogHost: {
|
|
32
|
+
(): React.JSX.Element | null;
|
|
33
|
+
displayName: string;
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../components/insert-cells-dialog/index.tsx"],"names":[],"mappings":"AASA,OAAO,KAAiD,MAAM,OAAO,CAAC;AAEtE,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,2BAA2B,CAAC;AAoBnC,MAAM,MAAM,sBAAsB,GAC9B;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,2BAA2B;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAClC,8EAA8E;IAC9E,aAAa,EAAE,iBAAiB,CAAC;IACjC,OAAO,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAAC;CAC1C,GACD;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAClC,aAAa,EAAE,iBAAiB,CAAC;IACjC,OAAO,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAAC;CAC1C,CAAC;AAEN;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,oCAAgB,sBAAsB,uBA0ElE,CAAC;AAIH;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB;;;CAyBjC,CAAC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.InsertCellsDialogHost = exports.InsertCellsDialog = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var ui_1 = require("@rowsncolumns/ui");
|
|
6
|
+
var react_1 = tslib_1.__importStar(require("react"));
|
|
7
|
+
var insert_cells_dialog_atom_1 = require("../../atoms/insert-cells-dialog.atom");
|
|
8
|
+
var INSERT_CHOICES = [
|
|
9
|
+
{ value: "shift-right", label: "Shift cells right" },
|
|
10
|
+
{ value: "shift-down", label: "Shift cells down" },
|
|
11
|
+
{ value: "entire-row", label: "Entire row" },
|
|
12
|
+
{ value: "entire-column", label: "Entire column" },
|
|
13
|
+
];
|
|
14
|
+
var DELETE_CHOICES = [
|
|
15
|
+
{ value: "shift-left", label: "Shift cells left" },
|
|
16
|
+
{ value: "shift-up", label: "Shift cells up" },
|
|
17
|
+
{ value: "entire-row", label: "Entire row" },
|
|
18
|
+
{ value: "entire-column", label: "Entire column" },
|
|
19
|
+
];
|
|
20
|
+
/**
|
|
21
|
+
* Excel's Insert / Delete cells dialog (right-click a cell → "Insert…" /
|
|
22
|
+
* "Delete…"): Shift cells right|down (left|up for Delete), Entire row, Entire
|
|
23
|
+
* column. UI-only — the opener turns the choice into the matching structural
|
|
24
|
+
* command. Header menus never show it: entire rows / columns insert directly.
|
|
25
|
+
*/
|
|
26
|
+
exports.InsertCellsDialog = (0, react_1.memo)(function (props) {
|
|
27
|
+
var mode = props.mode, open = props.open, onOpenChange = props.onOpenChange, defaultChoice = props.defaultChoice;
|
|
28
|
+
var _a = tslib_1.__read((0, react_1.useState)(defaultChoice), 2), choice = _a[0], setChoice = _a[1];
|
|
29
|
+
// Re-seed on every open (the request decides the default).
|
|
30
|
+
(0, react_1.useEffect)(function () {
|
|
31
|
+
if (open)
|
|
32
|
+
setChoice(defaultChoice);
|
|
33
|
+
}, [open, defaultChoice]);
|
|
34
|
+
var commit = (0, react_1.useCallback)(function () {
|
|
35
|
+
if (props.mode === "insert") {
|
|
36
|
+
props.onApply(choice);
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
props.onApply(choice);
|
|
40
|
+
}
|
|
41
|
+
onOpenChange(false);
|
|
42
|
+
}, [props, choice, onOpenChange]);
|
|
43
|
+
var title = mode === "insert" ? "Insert" : "Delete";
|
|
44
|
+
var choices = mode === "insert" ? INSERT_CHOICES : DELETE_CHOICES;
|
|
45
|
+
return (react_1.default.createElement(ui_1.Dialog, { open: open, onOpenChange: onOpenChange, modal: true },
|
|
46
|
+
react_1.default.createElement(ui_1.DialogContent, { className: "w-[300px] max-w-[92vw] pointer-events-auto" },
|
|
47
|
+
react_1.default.createElement(ui_1.DialogTitle, null, title),
|
|
48
|
+
react_1.default.createElement(ui_1.DialogCloseButton, null),
|
|
49
|
+
react_1.default.createElement(ui_1.DialogBody, { className: "flex flex-col gap-4" },
|
|
50
|
+
react_1.default.createElement("form", { className: "flex flex-col gap-4", onSubmit: function (e) {
|
|
51
|
+
e.preventDefault();
|
|
52
|
+
commit();
|
|
53
|
+
} },
|
|
54
|
+
react_1.default.createElement("fieldset", { className: "flex flex-col gap-1 min-w-0 border-0 p-0 m-0" },
|
|
55
|
+
react_1.default.createElement("legend", { className: "text-xs font-medium mb-1" }, title),
|
|
56
|
+
choices.map(function (entry) { return (react_1.default.createElement("label", { key: entry.value, className: "flex items-center gap-2 text-xs py-0.5 cursor-pointer" },
|
|
57
|
+
react_1.default.createElement("input", { type: "radio", name: "".concat(mode, "-cells-choice"), value: entry.value, checked: choice === entry.value, onChange: function () { return setChoice(entry.value); } }),
|
|
58
|
+
entry.label)); })),
|
|
59
|
+
react_1.default.createElement(ui_1.Separator, null),
|
|
60
|
+
react_1.default.createElement("div", { className: "flex justify-end gap-2" },
|
|
61
|
+
react_1.default.createElement(ui_1.Button, { type: "button", variant: "outline", size: "sm", onClick: function () { return onOpenChange(false); } }, "Cancel"),
|
|
62
|
+
react_1.default.createElement(ui_1.Button, { type: "submit", size: "sm", autoFocus: true }, "OK")))))));
|
|
63
|
+
});
|
|
64
|
+
exports.InsertCellsDialog.displayName = "InsertCellsDialog";
|
|
65
|
+
/**
|
|
66
|
+
* Host-mounted, atom-driven wrapper around {@link InsertCellsDialog}. Mount it
|
|
67
|
+
* once in the host alongside the other editor dialogs; the grid opens it from
|
|
68
|
+
* the cell context menu. Remounted per request so each opening starts from the
|
|
69
|
+
* request's default.
|
|
70
|
+
*/
|
|
71
|
+
var InsertCellsDialogHost = function () {
|
|
72
|
+
(0, insert_cells_dialog_atom_1.useRegisterInsertCellsDialogHost)();
|
|
73
|
+
var _a = tslib_1.__read((0, insert_cells_dialog_atom_1.useInsertCellsDialogState)(), 2), request = _a[0], setRequest = _a[1];
|
|
74
|
+
var close = (0, react_1.useCallback)(function () { return setRequest(null); }, [setRequest]);
|
|
75
|
+
if (!request)
|
|
76
|
+
return null;
|
|
77
|
+
var onOpenChange = function (open) {
|
|
78
|
+
if (!open)
|
|
79
|
+
close();
|
|
80
|
+
};
|
|
81
|
+
return request.mode === "insert" ? (react_1.default.createElement(exports.InsertCellsDialog, { mode: "insert", open: true, onOpenChange: onOpenChange, defaultChoice: request.defaultChoice, onApply: request.onApply })) : (react_1.default.createElement(exports.InsertCellsDialog, { mode: "delete", open: true, onOpenChange: onOpenChange, defaultChoice: request.defaultChoice, onApply: request.onApply }));
|
|
82
|
+
};
|
|
83
|
+
exports.InsertCellsDialogHost = InsertCellsDialogHost;
|
|
84
|
+
exports.InsertCellsDialogHost.displayName = "InsertCellsDialogHost";
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { InsertFormatOption, InsertOptionsAxis } from "../../api/insert-options";
|
|
3
|
+
export type InsertOptionsSmartTagProps = {
|
|
4
|
+
/** Position/size of the selection the tag is anchored to (bottom-left). */
|
|
5
|
+
x: number;
|
|
6
|
+
y: number;
|
|
7
|
+
width: number;
|
|
8
|
+
height: number;
|
|
9
|
+
axis: InsertOptionsAxis;
|
|
10
|
+
/** The entry currently applied to the inserted band. */
|
|
11
|
+
option: InsertFormatOption;
|
|
12
|
+
onChooseOption(option: InsertFormatOption): void;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Excel's Insert Options smart tag: the small paintbrush button that appears at
|
|
16
|
+
* the inserted rows / columns right after an insert and offers "Format Same As
|
|
17
|
+
* Above / Below / Clear Formatting" (Left / Right for columns). The insert
|
|
18
|
+
* already applied "Same As Above / Left"; picking another entry re-formats the
|
|
19
|
+
* band. Same skin as the Auto Fill Options tag.
|
|
20
|
+
*/
|
|
21
|
+
export declare const InsertOptionsSmartTag: {
|
|
22
|
+
({ x, y, width: _width, height, axis, option, onChooseOption, }: InsertOptionsSmartTagProps): React.JSX.Element;
|
|
23
|
+
displayName: string;
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../components/insert-options-smart-tag/index.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAExC,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,0BAA0B,CAAC;AAElC,MAAM,MAAM,0BAA0B,GAAG;IACvC,2EAA2E;IAC3E,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,iBAAiB,CAAC;IACxB,wDAAwD;IACxD,MAAM,EAAE,kBAAkB,CAAC;IAC3B,cAAc,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAAC;CAClD,CAAC;AAgBF;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB;qEAQ/B,0BAA0B;;CA0C5B,CAAC"}
|