@rowsncolumns/spreadsheet-state 28.0.76 → 29.0.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.
Files changed (95) hide show
  1. package/dist/cjs/api/copy-paste.d.ts +8 -1
  2. package/dist/cjs/api/copy-paste.d.ts.map +1 -1
  3. package/dist/cjs/api/copy-paste.js +4 -2
  4. package/dist/cjs/api/immer-utils.d.ts +11 -1
  5. package/dist/cjs/api/immer-utils.d.ts.map +1 -1
  6. package/dist/cjs/api/immer-utils.js +17 -1
  7. package/dist/cjs/api/insert-cut-cells.d.ts +35 -0
  8. package/dist/cjs/api/insert-cut-cells.d.ts.map +1 -0
  9. package/dist/cjs/api/insert-cut-cells.js +60 -0
  10. package/dist/cjs/api/merges.d.ts +8 -0
  11. package/dist/cjs/api/merges.d.ts.map +1 -1
  12. package/dist/cjs/api/merges.js +11 -0
  13. package/dist/cjs/api/subtotal.d.ts +20 -13
  14. package/dist/cjs/api/subtotal.d.ts.map +1 -1
  15. package/dist/cjs/api/subtotal.js +26 -19
  16. package/dist/cjs/commands.d.ts +9 -0
  17. package/dist/cjs/commands.d.ts.map +1 -1
  18. package/dist/cjs/hooks/use-on-copy.d.ts +1 -1
  19. package/dist/cjs/hooks/use-on-copy.d.ts.map +1 -1
  20. package/dist/cjs/hooks/use-on-copy.js +2 -3
  21. package/dist/cjs/hooks/use-on-move-columns.d.ts +2 -1
  22. package/dist/cjs/hooks/use-on-move-columns.d.ts.map +1 -1
  23. package/dist/cjs/hooks/use-on-move-columns.js +14 -5
  24. package/dist/cjs/hooks/use-on-move-rows.d.ts +16 -1
  25. package/dist/cjs/hooks/use-on-move-rows.d.ts.map +1 -1
  26. package/dist/cjs/hooks/use-on-move-rows.js +30 -5
  27. package/dist/cjs/hooks/use-on-move-selection.d.ts +7 -2
  28. package/dist/cjs/hooks/use-on-move-selection.d.ts.map +1 -1
  29. package/dist/cjs/hooks/use-on-move-selection.js +14 -1
  30. package/dist/cjs/hooks/use-on-paste.d.ts +12 -2
  31. package/dist/cjs/hooks/use-on-paste.d.ts.map +1 -1
  32. package/dist/cjs/hooks/use-on-paste.js +56 -8
  33. package/dist/cjs/hooks/use-spreadsheet-state.d.ts +14 -3
  34. package/dist/cjs/hooks/use-spreadsheet-state.d.ts.map +1 -1
  35. package/dist/cjs/hooks/use-spreadsheet-state.js +80 -3
  36. package/dist/cjs/index.d.ts +1 -0
  37. package/dist/cjs/index.d.ts.map +1 -1
  38. package/dist/cjs/index.js +1 -0
  39. package/dist/cjs/interface/delete-column.d.ts.map +1 -1
  40. package/dist/cjs/interface/delete-column.js +20 -20
  41. package/dist/cjs/interface/delete-row.d.ts.map +1 -1
  42. package/dist/cjs/interface/delete-row.js +21 -21
  43. package/dist/cjs/interface/insert-column.d.ts.map +1 -1
  44. package/dist/cjs/interface/insert-column.js +34 -18
  45. package/dist/cjs/interface/insert-row.d.ts.map +1 -1
  46. package/dist/cjs/interface/insert-row.js +16 -5
  47. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  48. package/dist/esm/api/copy-paste.d.ts +8 -1
  49. package/dist/esm/api/copy-paste.d.ts.map +1 -1
  50. package/dist/esm/api/copy-paste.js +4 -2
  51. package/dist/esm/api/immer-utils.d.ts +11 -1
  52. package/dist/esm/api/immer-utils.d.ts.map +1 -1
  53. package/dist/esm/api/immer-utils.js +16 -0
  54. package/dist/esm/api/insert-cut-cells.d.ts +35 -0
  55. package/dist/esm/api/insert-cut-cells.d.ts.map +1 -0
  56. package/dist/esm/api/insert-cut-cells.js +67 -0
  57. package/dist/esm/api/merges.d.ts +8 -0
  58. package/dist/esm/api/merges.d.ts.map +1 -1
  59. package/dist/esm/api/merges.js +9 -0
  60. package/dist/esm/api/subtotal.d.ts +20 -13
  61. package/dist/esm/api/subtotal.d.ts.map +1 -1
  62. package/dist/esm/api/subtotal.js +15 -8
  63. package/dist/esm/commands.d.ts +9 -0
  64. package/dist/esm/commands.d.ts.map +1 -1
  65. package/dist/esm/hooks/use-on-copy.d.ts +1 -1
  66. package/dist/esm/hooks/use-on-copy.d.ts.map +1 -1
  67. package/dist/esm/hooks/use-on-copy.js +2 -3
  68. package/dist/esm/hooks/use-on-move-columns.d.ts +2 -1
  69. package/dist/esm/hooks/use-on-move-columns.d.ts.map +1 -1
  70. package/dist/esm/hooks/use-on-move-columns.js +14 -5
  71. package/dist/esm/hooks/use-on-move-rows.d.ts +16 -1
  72. package/dist/esm/hooks/use-on-move-rows.d.ts.map +1 -1
  73. package/dist/esm/hooks/use-on-move-rows.js +30 -5
  74. package/dist/esm/hooks/use-on-move-selection.d.ts +7 -2
  75. package/dist/esm/hooks/use-on-move-selection.d.ts.map +1 -1
  76. package/dist/esm/hooks/use-on-move-selection.js +14 -1
  77. package/dist/esm/hooks/use-on-paste.d.ts +12 -2
  78. package/dist/esm/hooks/use-on-paste.d.ts.map +1 -1
  79. package/dist/esm/hooks/use-on-paste.js +41 -2
  80. package/dist/esm/hooks/use-spreadsheet-state.d.ts +14 -3
  81. package/dist/esm/hooks/use-spreadsheet-state.d.ts.map +1 -1
  82. package/dist/esm/hooks/use-spreadsheet-state.js +80 -2
  83. package/dist/esm/index.d.ts +1 -0
  84. package/dist/esm/index.d.ts.map +1 -1
  85. package/dist/esm/index.js +1 -0
  86. package/dist/esm/interface/delete-column.d.ts.map +1 -1
  87. package/dist/esm/interface/delete-column.js +17 -28
  88. package/dist/esm/interface/delete-row.d.ts.map +1 -1
  89. package/dist/esm/interface/delete-row.js +18 -29
  90. package/dist/esm/interface/insert-column.d.ts.map +1 -1
  91. package/dist/esm/interface/insert-column.js +22 -10
  92. package/dist/esm/interface/insert-row.d.ts.map +1 -1
  93. package/dist/esm/interface/insert-row.js +13 -4
  94. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  95. package/package.json +12 -12
@@ -1,11 +1,11 @@
1
- import { __assign, __read, __rest, __values } from "tslib";
1
+ import { __assign, __read, __rest, __spreadArray, __values } from "tslib";
2
2
  import { isCellNode } from "@rowsncolumns/dag";
3
3
  import { isCellWithinBounds } from "@rowsncolumns/grid";
4
4
  import { createNewSheet, DEFAULT_COLUMN_COUNT, DEFAULT_ROW_COUNT, useGetCellDimensions, useGetColumnWidth, useGetContentfulRangeAroundCell, useGetEffectiveValuesFromRange, useGetRowHeight, } from "@rowsncolumns/spreadsheet";
5
5
  import { useFonts } from "@rowsncolumns/spreadsheet";
6
6
  import { getBandedCells } from "@rowsncolumns/spreadsheet";
7
7
  import { defaultSpreadsheetTheme, useCallbackRef, useSpreadsheetTheme, } from "@rowsncolumns/spreadsheet";
8
- import { findMatchingBandProperty, getCurrentLocale, isNil, setDefaultEnableAtFormula, uuid, } from "@rowsncolumns/utils";
8
+ import { findMatchingBandProperty, getCurrentLocale, getFormulaLocale, isNil, setDefaultEnableAtFormula, uuid, } from "@rowsncolumns/utils";
9
9
  import { enableMapSet, enablePatches, setUseStrictShallowCopy } from "immer";
10
10
  import { useCallback, useEffect, useMemo, useRef } from "react";
11
11
  import { getAutoFillValues as defaultGetAutoFillValues } from "../api/fill";
@@ -84,6 +84,10 @@ import { useOnMergeUnMergeCells } from "./use-on-merge-unmerge-cells";
84
84
  import { useOnMoveColumns } from "./use-on-move-columns";
85
85
  import { useOnMoveRows } from "./use-on-move-rows";
86
86
  import { useOnMoveSelection } from "./use-on-move-selection";
87
+ import { planInsertCutCells } from "../api/insert-cut-cells";
88
+ import { findPartiallyCoveredMerge, MERGED_CELL_MOVE_ERROR } from "../api/merges";
89
+ import { useShowError } from "../atoms/error-state.atom";
90
+ import { SHEET_PROTECTION_ERROR_TITLE, useCanEditCellRange, useCanPerformSheetAction, } from "./use-can-edit-cellrange";
87
91
  import { useOnMoveSheet } from "./use-on-move-sheet";
88
92
  import { useOnPaste } from "./use-on-paste";
89
93
  import { useOnProtectRange } from "./use-on-protect-range";
@@ -241,7 +245,7 @@ export var useSpreadsheetState = function (_a) {
241
245
  // Current locale
242
246
  _h = _a.locale,
243
247
  // Current locale
244
- locale = _h === void 0 ? getCurrentLocale() : _h,
248
+ locale = _h === void 0 ? getCurrentLocale() : _h, formulaLocaleProp = _a.formulaLocale,
245
249
  // Templates for auto-generated names (sheets, tables, table columns)
246
250
  generatedNamesProp = _a.generatedNames, _j = _a.enableAtFormula, enableAtFormula = _j === void 0 ? false : _j,
247
251
  // Preserve data formatting like color, font style on paste
@@ -995,6 +999,8 @@ export var useSpreadsheetState = function (_a) {
995
999
  onCommand: onCommand,
996
1000
  });
997
1001
  // Locale change - regenerate formatted values and normalize validation rules
1002
+ // The formula syntax the editors speak — Excel follows the user's language, so `locale` by default.
1003
+ var formulaLocale = useMemo(function () { return getFormulaLocale(formulaLocaleProp !== null && formulaLocaleProp !== void 0 ? formulaLocaleProp : locale); }, [formulaLocaleProp, locale]);
998
1004
  var onChangeLocale = useOnLocaleChange({
999
1005
  cellXfsRegistry: cellXfsRegistry,
1000
1006
  sharedStringRegistry: sharedStringRegistry,
@@ -1334,6 +1340,7 @@ export var useSpreadsheetState = function (_a) {
1334
1340
  var onMoveSelection = useOnMoveSelection({
1335
1341
  rowCount: rowCount,
1336
1342
  columnCount: columnCount,
1343
+ getSheetMerges: getPaintMerges,
1337
1344
  enqueueGraphOperation: enqueueGraphOperation,
1338
1345
  enqueueCalculation: enqueueCalculation,
1339
1346
  enqueueStructureChange: enqueueStructureChange,
@@ -1354,6 +1361,71 @@ export var useSpreadsheetState = function (_a) {
1354
1361
  sharedStringRegistry: sharedStringRegistry,
1355
1362
  onCommand: onCommand,
1356
1363
  });
1364
+ // Excel "Insert Cut Cells" / Shift+drag for a cell range, as the three structural steps the
1365
+ // hooks above own (`planInsertCutCells`): open the destination band, move the block into the
1366
+ // opening, close the gap it left — so Shift+drag A5 to A2 over r1..r6 gives r1 r5 r2 r3 r4 r6 and
1367
+ // a forward move lands before Excel's pre-removal reference row. The refusals are decided up
1368
+ // front — a merge the block or a shifted band covers only partially, a protected range — so a
1369
+ // refused move never leaves the band opened. Each step records its own undo entry.
1370
+ var showError = useShowError();
1371
+ var canEditCellRange = useCanEditCellRange();
1372
+ var canPerformSheetAction = useCanPerformSheetAction();
1373
+ var onInsertCutCells = useCallback(function (sheetId, from, to) {
1374
+ var plan = planInsertCutCells(from.range, to.range);
1375
+ if (!plan) {
1376
+ return;
1377
+ }
1378
+ var merges = getPaintMerges(sheetId);
1379
+ if (__spreadArray([from.range, to.range], __read(plan.bands), false).some(function (range) {
1380
+ return findPartiallyCoveredMerge(range, merges);
1381
+ })) {
1382
+ showError({ message: MERGED_CELL_MOVE_ERROR });
1383
+ return;
1384
+ }
1385
+ var vertical = plan.shift === "down";
1386
+ if (!canEditCellRange(sheetId, from.range) ||
1387
+ !canEditCellRange(sheetId, to.range) ||
1388
+ !canPerformSheetAction(sheetId, vertical ? "insertRows" : "insertColumns") ||
1389
+ !canPerformSheetAction(sheetId, vertical ? "deleteRows" : "deleteColumns")) {
1390
+ showError({
1391
+ title: SHEET_PROTECTION_ERROR_TITLE,
1392
+ message: "You can't move cells on a protected sheet.",
1393
+ });
1394
+ return;
1395
+ }
1396
+ var target = {
1397
+ rowIndex: to.range.startRowIndex,
1398
+ columnIndex: to.range.startColumnIndex,
1399
+ };
1400
+ if (vertical) {
1401
+ onInsertCellsShiftDown(sheetId, target, [to]);
1402
+ }
1403
+ else {
1404
+ onInsertCellsShiftRight(sheetId, target, [to]);
1405
+ }
1406
+ var source = __assign(__assign({}, from), { range: plan.shiftedSource });
1407
+ onMoveSelection(sheetId, source, to);
1408
+ var vacated = {
1409
+ rowIndex: plan.shiftedSource.startRowIndex,
1410
+ columnIndex: plan.shiftedSource.startColumnIndex,
1411
+ };
1412
+ if (vertical) {
1413
+ onDeleteCellsShiftUp(sheetId, vacated, [source]);
1414
+ }
1415
+ else {
1416
+ onDeleteCellsShiftLeft(sheetId, vacated, [source]);
1417
+ }
1418
+ }, [
1419
+ getPaintMerges,
1420
+ showError,
1421
+ canEditCellRange,
1422
+ canPerformSheetAction,
1423
+ onInsertCellsShiftDown,
1424
+ onInsertCellsShiftRight,
1425
+ onDeleteCellsShiftUp,
1426
+ onDeleteCellsShiftLeft,
1427
+ onMoveSelection,
1428
+ ]);
1357
1429
  // Sort column
1358
1430
  var onSortColumn = useOnSortColumn({
1359
1431
  rowCount: rowCount,
@@ -1449,6 +1521,8 @@ export var useSpreadsheetState = function (_a) {
1449
1521
  columnCount: columnCount,
1450
1522
  locale: locale,
1451
1523
  sheetData: sheetData,
1524
+ onChangeNamedRanges: onChangeNamedRanges,
1525
+ getSheetMerges: getPaintMerges,
1452
1526
  getDataValidationById: getDataValidationById,
1453
1527
  preserveFormatting: preserveFormattingOnPaste,
1454
1528
  maxColumnCount: maxColumnCount,
@@ -2047,6 +2121,7 @@ export var useSpreadsheetState = function (_a) {
2047
2121
  onMoveColumns: onMoveColumns,
2048
2122
  onMoveRows: onMoveRows,
2049
2123
  onMoveSelection: onMoveSelection,
2124
+ onInsertCutCells: onInsertCutCells,
2050
2125
  onSortColumn: onSortColumn,
2051
2126
  onSortTable: onSortTable,
2052
2127
  onFilterTable: onFilterTable,
@@ -2164,6 +2239,8 @@ export var useSpreadsheetState = function (_a) {
2164
2239
  onClearHistory: onClearHistory,
2165
2240
  // Locale change
2166
2241
  onChangeLocale: onChangeLocale,
2242
+ // Resolved formula syntax locale (see the `formulaLocale` option)
2243
+ formulaLocale: formulaLocale,
2167
2244
  // Comments
2168
2245
  onInsertComment: onInsertComment,
2169
2246
  onRemoveComment: onRemoveComment,
@@ -18,6 +18,7 @@ export * from "./sheet-cell";
18
18
  export { useSubscribeToSheet, useSubscribeToMultipleRanges, } from "./hooks/use-sheet-observer";
19
19
  export * from "./helpers";
20
20
  export * from "./api/fill";
21
+ export * from "./api/insert-cut-cells";
21
22
  export * from "./api/immer-utils";
22
23
  export * from "./api/range";
23
24
  export * from "./api/anchored-objects";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qBAAqB,CAAC;AACpC,OAAO,EACL,yBAAyB,EACzB,cAAc,EACd,WAAW,EACX,SAAS,EACT,SAAS,GACV,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,4BAA4B,EAC5B,yBAAyB,EACzB,sBAAsB,EACtB,0BAA0B,EAC1B,KAAK,2BAA2B,GACjC,MAAM,qBAAqB,CAAC;AAC7B,cAAc,yBAAyB,CAAC;AACxC,cAAc,oCAAoC,CAAC;AACnD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,kCAAkC,CAAC;AACjD,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oBAAoB,CAAC;AACnC,cAAc,oCAAoC,CAAC;AACnD,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,OAAO,EACL,mBAAmB,EACnB,4BAA4B,GAC7B,MAAM,4BAA4B,CAAC;AACpC,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,wBAAwB,CAAC;AACvC,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,yBAAyB,CAAC;AACxC,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,YAAY,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAE1D,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,kCAAkC,CAAC;AACjD,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,8BAA8B,CAAC;AAG7C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mCAAmC,CAAC;AAClD,cAAc,qCAAqC,CAAC;AACpD,cAAc,wCAAwC,CAAC;AACvD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,2CAA2C,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qBAAqB,CAAC;AACpC,OAAO,EACL,yBAAyB,EACzB,cAAc,EACd,WAAW,EACX,SAAS,EACT,SAAS,GACV,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,4BAA4B,EAC5B,yBAAyB,EACzB,sBAAsB,EACtB,0BAA0B,EAC1B,KAAK,2BAA2B,GACjC,MAAM,qBAAqB,CAAC;AAC7B,cAAc,yBAAyB,CAAC;AACxC,cAAc,oCAAoC,CAAC;AACnD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,kCAAkC,CAAC;AACjD,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oBAAoB,CAAC;AACnC,cAAc,oCAAoC,CAAC;AACnD,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,OAAO,EACL,mBAAmB,EACnB,4BAA4B,GAC7B,MAAM,4BAA4B,CAAC;AACpC,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,wBAAwB,CAAC;AACvC,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,yBAAyB,CAAC;AACxC,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,YAAY,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAE1D,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,kCAAkC,CAAC;AACjD,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,8BAA8B,CAAC;AAG7C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mCAAmC,CAAC;AAClD,cAAc,qCAAqC,CAAC;AACpD,cAAc,wCAAwC,CAAC;AACvD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,2CAA2C,CAAC"}
package/dist/cjs/index.js CHANGED
@@ -18,6 +18,7 @@ export * from "./sheet-cell";
18
18
  export { useSubscribeToSheet, useSubscribeToMultipleRanges, } from "./hooks/use-sheet-observer";
19
19
  export * from "./helpers";
20
20
  export * from "./api/fill";
21
+ export * from "./api/insert-cut-cells";
21
22
  export * from "./api/immer-utils";
22
23
  export * from "./api/range";
23
24
  export * from "./api/anchored-objects";
@@ -1 +1 @@
1
- {"version":3,"file":"delete-column.d.ts","sourceRoot":"","sources":["../../../interface/delete-column.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAuBjE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAG5E,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,0hBA+B/D,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,MACrB,SAAS,MAAM,EAAE,eAAe,MAAM,EAAE,SAscjD,CAAC"}
1
+ {"version":3,"file":"delete-column.d.ts","sourceRoot":"","sources":["../../../interface/delete-column.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAsBjE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAG5E,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,0hBA+B/D,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,MACrB,SAAS,MAAM,EAAE,eAAe,MAAM,EAAE,SA8bjD,CAAC"}
@@ -5,7 +5,6 @@ import { shiftChartsOnStructuralChange, shiftEmbedsOnStructuralChange, shiftProt
5
5
  import { shrinkMergesOnColumnDelete } from "../api/merges";
6
6
  import { updateNamedRangesOnStructuralChange, updatePrintSettingsOnStructuralChange, } from "../api/named-range-structural";
7
7
  import { shiftPivotsOnDelete } from "../api/pivot-range";
8
- import { updateSheetRangeOnDelete } from "../api/range";
9
8
  import { updateRangedRulesOnStructuralChange } from "../api/range-rule-helpers";
10
9
  import { moveFilterView } from "../api/selection";
11
10
  import { updateFormulasForStructuralChange } from "../api/structural-formula-update";
@@ -32,31 +31,32 @@ export var deleteColumn = function (_a) {
32
31
  var activeCell = getActiveCell();
33
32
  var selections = getSelections();
34
33
  var newColumnCount = Math.max(1, columnCount - count);
35
- // NOTE: contiguity assumption — see delete-row.ts.
36
- var inDeletedColumns = activeCell.columnIndex >= minColumnIndex &&
37
- activeCell.columnIndex <= maxColumnIndex;
38
- var nextActiveColumnIndex = activeCell.columnIndex;
39
- if (inDeletedColumns) {
40
- nextActiveColumnIndex = Math.max(1, minColumnIndex - 1);
41
- }
42
- else if (activeCell.columnIndex > maxColumnIndex) {
43
- nextActiveColumnIndex = Math.max(1, activeCell.columnIndex - count);
44
- }
45
- if (nextActiveColumnIndex > newColumnCount) {
46
- nextActiveColumnIndex = newColumnCount;
47
- }
34
+ // Excel keeps the selection where it was (UI-02, column twin): after
35
+ // deleting columns C:D the selection still reads C:D — now over the
36
+ // columns that moved left — and the active cell sits in the first deleted
37
+ // column. Every coordinate loses the deleted columns that lie BEFORE it.
38
+ var deletedBefore = function (columnIndex) {
39
+ return sortedColumnIndexes.filter(function (index) { return index < columnIndex; }).length;
40
+ };
41
+ var clampColumn = function (columnIndex) {
42
+ return Math.min(Math.max(1, columnIndex), newColumnCount);
43
+ };
44
+ var nextActiveColumnIndex = clampColumn(activeCell.columnIndex - deletedBefore(activeCell.columnIndex));
48
45
  var nextActiveCell = nextActiveColumnIndex === activeCell.columnIndex
49
46
  ? activeCell
50
47
  : __assign(__assign({}, activeCell), { columnIndex: nextActiveColumnIndex });
51
- var fallbackSelectionColumnIndex = nextActiveCell.columnIndex;
52
48
  var nextSelections = selections.map(function (selection) {
53
49
  if (!selection.range)
54
50
  return selection;
55
- var updatedRange = updateSheetRangeOnDelete(__assign(__assign({}, selection.range), { sheetId: sheetId }), "column", minColumnIndex, count, sheetId);
56
- if (updatedRange) {
57
- return __assign(__assign({}, selection), { range: __assign(__assign({}, selection.range), { startColumnIndex: updatedRange.startColumnIndex, endColumnIndex: updatedRange.endColumnIndex }) });
58
- }
59
- return __assign(__assign({}, selection), { range: __assign(__assign({}, selection.range), { startColumnIndex: fallbackSelectionColumnIndex, endColumnIndex: fallbackSelectionColumnIndex }) });
51
+ var _a = selection.range, startColumnIndex = _a.startColumnIndex, endColumnIndex = _a.endColumnIndex;
52
+ var deletedWithin = sortedColumnIndexes.filter(function (index) { return index >= startColumnIndex && index <= endColumnIndex; }).length;
53
+ var size = endColumnIndex - startColumnIndex + 1;
54
+ var nextStart = clampColumn(startColumnIndex - deletedBefore(startColumnIndex));
55
+ // A partially covered area shrinks by the columns it lost; an area
56
+ // deleted outright keeps its size (it now frames the columns that moved
57
+ // left).
58
+ var nextSize = deletedWithin < size ? size - deletedWithin : size;
59
+ return __assign(__assign({}, selection), { range: __assign(__assign({}, selection.range), { startColumnIndex: nextStart, endColumnIndex: clampColumn(nextStart + nextSize - 1) }) });
60
60
  });
61
61
  // Tables: shift / shrink, plus column-specific filter+sort spec updates
62
62
  // and table-column splice for partially-overlapped tables.
@@ -1 +1 @@
1
- {"version":3,"file":"delete-row.d.ts","sourceRoot":"","sources":["../../../interface/delete-row.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAuBjE,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAGtE,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,0hBA+B5D,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,MAClB,SAAS,MAAM,EAAE,YAAY,MAAM,EAAE,SAmZ9C,CAAC"}
1
+ {"version":3,"file":"delete-row.d.ts","sourceRoot":"","sources":["../../../interface/delete-row.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAsBjE,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAGtE,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,0hBA+B5D,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,MAClB,SAAS,MAAM,EAAE,YAAY,MAAM,EAAE,SAyY9C,CAAC"}
@@ -5,7 +5,6 @@ import { shiftChartsOnStructuralChange, shiftEmbedsOnStructuralChange, shiftProt
5
5
  import { shrinkMergesOnRowDelete } from "../api/merges";
6
6
  import { updateNamedRangesOnStructuralChange, updatePrintSettingsOnStructuralChange, } from "../api/named-range-structural";
7
7
  import { shiftPivotsOnDelete } from "../api/pivot-range";
8
- import { updateSheetRangeOnDelete } from "../api/range";
9
8
  import { updateRangedRulesOnStructuralChange } from "../api/range-rule-helpers";
10
9
  import { moveFilterView } from "../api/selection";
11
10
  import { updateFormulasForStructuralChange } from "../api/structural-formula-update";
@@ -33,32 +32,33 @@ export var deleteRow = function (_a) {
33
32
  var activeCell = getActiveCell();
34
33
  var selections = getSelections();
35
34
  var newRowCount = Math.max(1, rowCount - count);
36
- // NOTE: this treats `[minRowIndex..maxRowIndex]` as a contiguous block.
37
- // Non-contiguous deletes (e.g. rows [2, 5, 10]) currently misclassify
38
- // intermediate rows as deleted. Document/track separately.
39
- var inDeletedRows = activeCell.rowIndex >= minRowIndex && activeCell.rowIndex <= maxRowIndex;
40
- var nextActiveRowIndex = activeCell.rowIndex;
41
- if (inDeletedRows) {
42
- nextActiveRowIndex = Math.max(1, minRowIndex - 1);
43
- }
44
- else if (activeCell.rowIndex > maxRowIndex) {
45
- nextActiveRowIndex = Math.max(1, activeCell.rowIndex - count);
46
- }
47
- if (nextActiveRowIndex > newRowCount) {
48
- nextActiveRowIndex = newRowCount;
49
- }
35
+ // Excel keeps the selection where it was (UI-02): after deleting rows 3:4
36
+ // the selection still reads 3:4 — now over the rows that moved up — and
37
+ // the active cell sits in the first deleted row. Every coordinate simply
38
+ // loses the deleted rows that lie BEFORE it, so an area entirely inside
39
+ // the deleted band keeps its place while areas below slide up; partially
40
+ // overlapping areas shrink like any other range.
41
+ var deletedBefore = function (rowIndex) {
42
+ return sortedRowIndexes.filter(function (index) { return index < rowIndex; }).length;
43
+ };
44
+ var clampRow = function (rowIndex) {
45
+ return Math.min(Math.max(1, rowIndex), newRowCount);
46
+ };
47
+ var nextActiveRowIndex = clampRow(activeCell.rowIndex - deletedBefore(activeCell.rowIndex));
50
48
  var nextActiveCell = nextActiveRowIndex === activeCell.rowIndex
51
49
  ? activeCell
52
50
  : __assign(__assign({}, activeCell), { rowIndex: nextActiveRowIndex });
53
- var fallbackSelectionRowIndex = nextActiveCell.rowIndex;
54
51
  var nextSelections = selections.map(function (selection) {
55
52
  if (!selection.range)
56
53
  return selection;
57
- var updatedRange = updateSheetRangeOnDelete(__assign(__assign({}, selection.range), { sheetId: sheetId }), "row", minRowIndex, count, sheetId);
58
- if (updatedRange) {
59
- return __assign(__assign({}, selection), { range: __assign(__assign({}, selection.range), { startRowIndex: updatedRange.startRowIndex, endRowIndex: updatedRange.endRowIndex }) });
60
- }
61
- return __assign(__assign({}, selection), { range: __assign(__assign({}, selection.range), { startRowIndex: fallbackSelectionRowIndex, endRowIndex: fallbackSelectionRowIndex }) });
54
+ var _a = selection.range, startRowIndex = _a.startRowIndex, endRowIndex = _a.endRowIndex;
55
+ var deletedWithin = sortedRowIndexes.filter(function (index) { return index >= startRowIndex && index <= endRowIndex; }).length;
56
+ var size = endRowIndex - startRowIndex + 1;
57
+ var nextStart = clampRow(startRowIndex - deletedBefore(startRowIndex));
58
+ // A partially covered area shrinks by the rows it lost; an area deleted
59
+ // outright keeps its size (it now frames the rows that moved up).
60
+ var nextSize = deletedWithin < size ? size - deletedWithin : size;
61
+ return __assign(__assign({}, selection), { range: __assign(__assign({}, selection.range), { startRowIndex: nextStart, endRowIndex: clampRow(nextStart + nextSize - 1) }) });
62
62
  });
63
63
  // Tables: shrink/move based on overlap with deletion; drop tables
64
64
  // whose header row is removed.
@@ -1 +1 @@
1
- {"version":3,"file":"insert-column.d.ts","sourceRoot":"","sources":["../../../interface/insert-column.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AA6B5E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAI7D,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,mgBA8B/D,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,MACrB,SAAS,MAAM,EAAE,sBAAsB,MAAM,EAAE,mBAAc,SAmZtE,CAAC;AAMF,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,qQAiBpE,IAAI,CACL,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,EACnB,QAAQ,GACR,aAAa,GACb,UAAU,GACV,QAAQ,GACR,iBAAiB,GACjB,sBAAsB,GACtB,eAAe,GACf,gBAAgB,GAChB,gBAAgB,GAChB,mBAAmB,GACnB,oBAAoB,GACpB,wBAAwB,GACxB,uBAAuB,GACvB,eAAe,GACf,cAAc,GACd,gBAAgB,CACnB,MAEG,WAAW,SAAS,EACpB,gBAAgB,MAAM,EACtB,WAAW,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,KAAK,SA2V9C,CAAC"}
1
+ {"version":3,"file":"insert-column.d.ts","sourceRoot":"","sources":["../../../interface/insert-column.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAkC5E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAI7D,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,mgBA8B/D,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,MACrB,SAAS,MAAM,EAAE,sBAAsB,MAAM,EAAE,mBAAc,SAoatE,CAAC;AAMF,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,qQAiBpE,IAAI,CACL,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,EACnB,QAAQ,GACR,aAAa,GACb,UAAU,GACV,QAAQ,GACR,iBAAiB,GACjB,sBAAsB,GACtB,eAAe,GACf,gBAAgB,GAChB,gBAAgB,GAChB,mBAAmB,GACnB,oBAAoB,GACpB,wBAAwB,GACxB,uBAAuB,GACvB,eAAe,GACf,cAAc,GACd,gBAAgB,CACnB,MAEG,WAAW,SAAS,EACpB,gBAAgB,MAAM,EACtB,WAAW,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,KAAK,SA2V9C,CAAC"}
@@ -1,10 +1,11 @@
1
1
  import { __assign, __read, __spreadArray, __values } from "tslib";
2
2
  import { Direction } from "@rowsncolumns/common-types";
3
+ import { isNil } from "@rowsncolumns/utils";
3
4
  import { produceWithPatches } from "immer";
4
5
  import { shiftChartsOnStructuralChange, shiftEmbedsOnStructuralChange, shiftProtectedRangesOnStructuralChange, } from "../api/anchored-objects";
5
6
  import { collectUniqueDependentsForRange, moveFormulaAtPosition, } from "../api/dependency";
6
7
  import { createSheetCellIdentifier, expandRangesInFormula, } from "../api/formula";
7
- import { cloneCellWithFormatting, createSheetDraft } from "../api/immer-utils";
8
+ import { cloneCellWithFormatting, createSheetDraft, inheritedDimensionMetadata, } from "../api/immer-utils";
8
9
  import { expandMergesOnColumnInsert, moveMergedCells } from "../api/merges";
9
10
  import { updateNamedRangesOnStructuralChange, updatePrintSettingsOnStructuralChange, } from "../api/named-range-structural";
10
11
  import { shiftPivotsOnInsert } from "../api/pivot-range";
@@ -196,8 +197,14 @@ export var insertColumn = function (_a) {
196
197
  if (!sheet)
197
198
  return;
198
199
  if (sheet.columnMetadata) {
200
+ // Excel "Format Same As Left" (FMT-02) covers the column width and
201
+ // hidden state: the inserted columns inherit the metadata of the
202
+ // column to the left (column A takes the pushed-right column's).
203
+ var inherited_1 = inheritedDimensionMetadata(sheet.columnMetadata, referenceColumnIndex);
199
204
  (_a = sheet.columnMetadata).splice.apply(_a, __spreadArray([referenceColumnIndex,
200
- 0], __read(Array.from({ length: numColumns }, function () { return null; })), false));
205
+ 0], __read(Array.from({ length: numColumns }, function () {
206
+ return inherited_1 ? __assign({}, inherited_1) : null;
207
+ })), false));
201
208
  }
202
209
  if (sheet.basicFilter) {
203
210
  var _e = sheet.basicFilter.range, startColumnIndex = _e.startColumnIndex, endColumnIndex = _e.endColumnIndex;
@@ -261,7 +268,7 @@ export var insertColumn = function (_a) {
261
268
  onChangeSheetData === null || onChangeSheetData === void 0 ? void 0 : onChangeSheetData(function (prevSheetData) {
262
269
  var _a = __read(produceWithPatches(prevSheetData, function (draft) {
263
270
  var e_7, _a;
264
- var _b, _c, _d, _e, _f;
271
+ var _b, _c, _d, _e;
265
272
  updateFormulasForStructuralChange({
266
273
  draft: draft,
267
274
  axis: "column",
@@ -282,21 +289,30 @@ export var insertColumn = function (_a) {
282
289
  cellXfsRegistry: cellXfsRegistry,
283
290
  sharedStringRegistry: sharedStringRegistry,
284
291
  });
285
- // Insert columns into each row's values array.
292
+ // Insert columns into each row's values array. Excel "Format Same
293
+ // As Left" (FMT-02): every new cell takes the formatting (never the
294
+ // value) of the cell to its LEFT; only an insert at column A seeds
295
+ // from the column being pushed right.
286
296
  var sheetRows = draft[sheetId];
287
297
  if (sheetRows) {
298
+ var sourceColumnIndex = referenceColumnIndex > 1
299
+ ? referenceColumnIndex - 1
300
+ : referenceColumnIndex;
288
301
  var _loop_1 = function (rowIndex) {
289
- var _k;
302
+ var _j;
290
303
  var row = sheetRows[rowIndex];
291
304
  if (!(row === null || row === void 0 ? void 0 : row.values))
292
305
  return "continue";
293
- if (row.values.length > referenceColumnIndex) {
294
- var formattingSource_1 = (_c = (_b = row.values[referenceColumnIndex]) !== null && _b !== void 0 ? _b : row.values[referenceColumnIndex - 1]) !== null && _c !== void 0 ? _c : undefined;
295
- var newColumns = Array.from({ length: numColumns }, function () {
296
- return cloneCellWithFormatting(formattingSource_1);
297
- });
298
- (_k = row.values).splice.apply(_k, __spreadArray([referenceColumnIndex, 0], __read(newColumns), false));
299
- }
306
+ var formattingSource = (_b = row.values[sourceColumnIndex]) !== null && _b !== void 0 ? _b : undefined;
307
+ // Rows that end before the insertion point have nothing to
308
+ // shift; they only grow when there is a format to inherit.
309
+ var hasCellsToShift = row.values.length > referenceColumnIndex;
310
+ if (!hasCellsToShift && isNil(formattingSource))
311
+ return "continue";
312
+ var newColumns = Array.from({ length: numColumns }, function () {
313
+ return cloneCellWithFormatting(formattingSource);
314
+ });
315
+ (_j = row.values).splice.apply(_j, __spreadArray([referenceColumnIndex, 0], __read(newColumns), false));
300
316
  };
301
317
  for (var rowIndex = 1; rowIndex < sheetRows.length; rowIndex++) {
302
318
  _loop_1(rowIndex);
@@ -305,8 +321,8 @@ export var insertColumn = function (_a) {
305
321
  try {
306
322
  // Add table column headers for any table whose header row was
307
323
  // affected by the insertion.
308
- for (var _g = __values(tables !== null && tables !== void 0 ? tables : []), _h = _g.next(); !_h.done; _h = _g.next()) {
309
- var _j = _h.value, range = _j.range, tSheetId = _j.sheetId, headerRow = _j.headerRow, columns = _j.columns;
324
+ for (var _f = __values(tables !== null && tables !== void 0 ? tables : []), _g = _f.next(); !_g.done; _g = _f.next()) {
325
+ var _h = _g.value, range = _h.range, tSheetId = _h.sheetId, headerRow = _h.headerRow, columns = _h.columns;
310
326
  if (tSheetId !== sheetId ||
311
327
  !headerRow ||
312
328
  referenceColumnIndex <= range.startColumnIndex ||
@@ -316,7 +332,7 @@ export var insertColumn = function (_a) {
316
332
  var currentSheet = createSheetDraft(draft, tSheetId, range.startRowIndex);
317
333
  for (var i = 0; i < numColumns; i++) {
318
334
  var currentColumnIndex = referenceColumnIndex + i;
319
- var formattingSource = cloneCellWithFormatting((_f = (_e = (_d = draft[tSheetId]) === null || _d === void 0 ? void 0 : _d[range.startRowIndex]) === null || _e === void 0 ? void 0 : _e.values) === null || _f === void 0 ? void 0 : _f[currentColumnIndex]);
335
+ var formattingSource = cloneCellWithFormatting((_e = (_d = (_c = draft[tSheetId]) === null || _c === void 0 ? void 0 : _c[range.startRowIndex]) === null || _d === void 0 ? void 0 : _d.values) === null || _e === void 0 ? void 0 : _e[currentColumnIndex]);
320
336
  var existingColumns = __spreadArray([], __read((columns || [])), false);
321
337
  for (var j = 0; j < i; j++) {
322
338
  existingColumns.push({
@@ -337,7 +353,7 @@ export var insertColumn = function (_a) {
337
353
  catch (e_7_1) { e_7 = { error: e_7_1 }; }
338
354
  finally {
339
355
  try {
340
- if (_h && !_h.done && (_a = _g.return)) _a.call(_g);
356
+ if (_g && !_g.done && (_a = _f.return)) _a.call(_f);
341
357
  }
342
358
  finally { if (e_7) throw e_7.error; }
343
359
  }
@@ -648,9 +664,9 @@ export var insertTableColumn = function (_a) {
648
664
  }
649
665
  var _loop_2 = function (rowIndex) {
650
666
  if ((_l = (_k = draft[sheetId]) === null || _k === void 0 ? void 0 : _k[rowIndex]) === null || _l === void 0 ? void 0 : _l.values) {
651
- var formattingSource_2 = (_u = (_q = (_p = (_o = (_m = draft[sheetId]) === null || _m === void 0 ? void 0 : _m[rowIndex]) === null || _o === void 0 ? void 0 : _o.values) === null || _p === void 0 ? void 0 : _p[realReferenceColumnIndex]) !== null && _q !== void 0 ? _q : (_t = (_s = (_r = draft[sheetId]) === null || _r === void 0 ? void 0 : _r[rowIndex]) === null || _s === void 0 ? void 0 : _s.values) === null || _t === void 0 ? void 0 : _t[realReferenceColumnIndex - 1]) !== null && _u !== void 0 ? _u : undefined;
667
+ var formattingSource_1 = (_u = (_q = (_p = (_o = (_m = draft[sheetId]) === null || _m === void 0 ? void 0 : _m[rowIndex]) === null || _o === void 0 ? void 0 : _o.values) === null || _p === void 0 ? void 0 : _p[realReferenceColumnIndex]) !== null && _q !== void 0 ? _q : (_t = (_s = (_r = draft[sheetId]) === null || _r === void 0 ? void 0 : _r[rowIndex]) === null || _s === void 0 ? void 0 : _s.values) === null || _t === void 0 ? void 0 : _t[realReferenceColumnIndex - 1]) !== null && _u !== void 0 ? _u : undefined;
652
668
  var newColumns = Array.from({ length: numColumns }).map(function () {
653
- return cloneCellWithFormatting(formattingSource_2);
669
+ return cloneCellWithFormatting(formattingSource_1);
654
670
  });
655
671
  (_w = (_v = draft[sheetId][rowIndex]) === null || _v === void 0 ? void 0 : _v.values) === null || _w === void 0 ? void 0 : _w.splice.apply(_w, __spreadArray([referenceColumnIndex,
656
672
  0], __read(newColumns), false));
@@ -1 +1 @@
1
- {"version":3,"file":"insert-row.d.ts","sourceRoot":"","sources":["../../../interface/insert-row.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAkBjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAGtE,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,weA4B5D,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,MAClB,SAAS,MAAM,EAAE,mBAAmB,MAAM,EAAE,gBAAW,SA4ShE,CAAC"}
1
+ {"version":3,"file":"insert-row.d.ts","sourceRoot":"","sources":["../../../interface/insert-row.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAsBjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAGtE,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,weA4B5D,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,MAClB,SAAS,MAAM,EAAE,mBAAmB,MAAM,EAAE,gBAAW,SA0ThE,CAAC"}
@@ -1,8 +1,8 @@
1
- import { __read, __spreadArray, __values } from "tslib";
1
+ import { __assign, __read, __spreadArray, __values } from "tslib";
2
2
  import { Direction } from "@rowsncolumns/common-types";
3
3
  import { produceWithPatches } from "immer";
4
4
  import { shiftChartsOnStructuralChange, shiftEmbedsOnStructuralChange, shiftProtectedRangesOnStructuralChange, } from "../api/anchored-objects";
5
- import { cloneRowWithFormatting, createSheetDraft } from "../api/immer-utils";
5
+ import { cloneRowWithFormatting, createSheetDraft, inheritedDimensionMetadata, } from "../api/immer-utils";
6
6
  import { expandMergesOnRowInsert } from "../api/merges";
7
7
  import { updateNamedRangesOnStructuralChange, updatePrintSettingsOnStructuralChange, } from "../api/named-range-structural";
8
8
  import { shiftPivotsOnInsert } from "../api/pivot-range";
@@ -152,8 +152,14 @@ export var insertRow = function (_a) {
152
152
  if (!sheet)
153
153
  return;
154
154
  if (sheet.rowMetadata) {
155
+ // Excel "Format Same As Above" (FMT-01) covers the row height and
156
+ // hidden state too: the inserted rows inherit the row above's
157
+ // metadata (row 1 has none above and takes the pushed-down row's).
158
+ var inherited_1 = inheritedDimensionMetadata(sheet.rowMetadata, referenceRowIndex);
155
159
  (_a = sheet.rowMetadata).splice.apply(_a, __spreadArray([referenceRowIndex,
156
- 0], __read(Array.from({ length: numRows }, function () { return null; })), false));
160
+ 0], __read(Array.from({ length: numRows }, function () {
161
+ return inherited_1 ? __assign({}, inherited_1) : null;
162
+ })), false));
157
163
  }
158
164
  if (sheet.basicFilter) {
159
165
  var _c = sheet.basicFilter.range, startRowIndex = _c.startRowIndex, endRowIndex = _c.endRowIndex;
@@ -182,7 +188,6 @@ export var insertRow = function (_a) {
182
188
  // in the new rows.
183
189
  onChangeSheetData === null || onChangeSheetData === void 0 ? void 0 : onChangeSheetData(function (prevSheetData) {
184
190
  var _a = __read(produceWithPatches(prevSheetData, function (draft) {
185
- var _a;
186
191
  updateFormulasForStructuralChange({
187
192
  draft: draft,
188
193
  axis: "row",
@@ -204,7 +209,13 @@ export var insertRow = function (_a) {
204
209
  sharedStringRegistry: sharedStringRegistry,
205
210
  });
206
211
  var currentSheet = createSheetDraft(draft, sheetId, referenceRowIndex);
207
- var formattingSourceRow = (_a = currentSheet[referenceRowIndex]) !== null && _a !== void 0 ? _a : currentSheet[referenceRowIndex - 1];
212
+ // Excel "Format Same As Above" (FMT-01): the new rows take the
213
+ // per-cell formatting (never values) of the row ABOVE the insertion
214
+ // point. Only an insert at row 1 has no row above and seeds from the
215
+ // row being pushed down instead.
216
+ var formattingSourceRow = referenceRowIndex > 1
217
+ ? currentSheet[referenceRowIndex - 1]
218
+ : currentSheet[referenceRowIndex];
208
219
  var newRows = Array.from({ length: numRows }, function () {
209
220
  return cloneRowWithFormatting(formattingSourceRow);
210
221
  });
@@ -1 +1 @@
1
- {"root":["../../cellxfs-registry.ts","../../commands.ts","../../constants.ts","../../generated-names.ts","../../helpers.ts","../../index.ts","../../server-utils.ts","../../server.browser.ts","../../server.ts","../../shared-string-registry.ts","../../sheet-cell.ts","../../test-setup.ts","../../types.ts","../../vitest.config.ts","../../api/advanced-filter.ts","../../api/anchored-objects.ts","../../api/border.ts","../../api/conditional-format.ts","../../api/copy-paste.ts","../../api/data-validation.ts","../../api/datatype.ts","../../api/date.ts","../../api/decimals.ts","../../api/dependency.ts","../../api/fill-series-spec.ts","../../api/fill.ts","../../api/filter-range.ts","../../api/filter.ts","../../api/format-caches.ts","../../api/formula.ts","../../api/goal-seek.ts","../../api/immer-utils.ts","../../api/intl.ts","../../api/merges.ts","../../api/named-range-structural.ts","../../api/outline.ts","../../api/paint-format.ts","../../api/parse-html.ts","../../api/paste-special.ts","../../api/patches.ts","../../api/pivot-range.ts","../../api/range-rule-helpers.ts","../../api/range.ts","../../api/rename-sheet.ts","../../api/selection.ts","../../api/sort.ts","../../api/split-text.ts","../../api/structural-formula-update.ts","../../api/structural-guards.ts","../../api/structural-table-refs.ts","../../api/subtotal.ts","../../api/table.ts","../../api/validation.ts","../../api/xlsx-source.ts","../../atoms/delete-sheet-atom.ts","../../atoms/dialog-state.atom.ts","../../atoms/editing-data-validation-id.atom.ts","../../atoms/editing-embed.atom.ts","../../atoms/editing-table.atom.ts","../../atoms/error-state.atom.ts","../../atoms/index.ts","../../atoms/insert-image-state.atom.ts","../../atoms/named-range.atom.ts","../../atoms/resize-dimension.atom.ts","../../atoms/sheet-observer.atom.ts","../../components/index.tsx","../../components/dialogs/delete-sheet-confirmation.tsx","../../components/dialogs/error-state.tsx","../../components/editors/cell-format-editor.tsx","../../components/editors/conditional-format-editor.tsx","../../components/editors/conditional-format-rule-editor.tsx","../../components/editors/data-validation-editor.tsx","../../components/editors/data-validation-rule-editor.tsx","../../components/editors/embed-editor.tsx","../../components/editors/insert-image-editor.tsx","../../components/editors/insert-link-editor.tsx","../../components/editors/named-range-editor.tsx","../../components/editors/resize-dimension-editor.tsx","../../components/editors/sheet-filter.tsx","../../components/editors/table-editor.tsx","../../helpers/iterative-calculation.ts","../../helpers/sheet-title.ts","../../hooks/use-async-datasource.ts","../../hooks/use-calculation-initialize.ts","../../hooks/use-calculation-process-array.ts","../../hooks/use-calculation-queue.ts","../../hooks/use-calculation-worker.ts","../../hooks/use-calculation.ts","../../hooks/use-can-edit-cellrange.ts","../../hooks/use-cellxfs-registry.ts","../../hooks/use-citations.ts","../../hooks/use-comments.ts","../../hooks/use-conditional-formatting-rules.ts","../../hooks/use-data-validation-rules.ts","../../hooks/use-deferred-calculation-flush.ts","../../hooks/use-idle-scheduler.ts","../../hooks/use-indent.ts","../../hooks/use-named-range.ts","../../hooks/use-on-adjust-row-height.ts","../../hooks/use-on-advanced-filter.ts","../../hooks/use-on-autoresize.ts","../../hooks/use-on-banded-ranges.ts","../../hooks/use-on-calculation-begin.ts","../../hooks/use-on-calculation-success.ts","../../hooks/use-on-change-batch-stream.ts","../../hooks/use-on-change-batch.ts","../../hooks/use-on-change-calculated-column.ts","../../hooks/use-on-change-decimals.ts","../../hooks/use-on-change-formatting.ts","../../hooks/use-on-change-sheet-tabcolor.ts","../../hooks/use-on-change-table-column.ts","../../hooks/use-on-change-theme.ts","../../hooks/use-on-change.ts","../../hooks/use-on-clear-formatting.ts","../../hooks/use-on-collapse-column-group.ts","../../hooks/use-on-collapse-row-group.ts","../../hooks/use-on-copy.ts","../../hooks/use-on-create-named-range.ts","../../hooks/use-on-create-sheet.ts","../../hooks/use-on-delete-cells-shift-left.ts","../../hooks/use-on-delete-cells-shift-up.ts","../../hooks/use-on-delete-column.ts","../../hooks/use-on-delete-named-range.ts","../../hooks/use-on-delete-row.ts","../../hooks/use-on-delete-sheet.ts","../../hooks/use-on-delete-table-row.ts","../../hooks/use-on-delete.ts","../../hooks/use-on-drag-n-drop.ts","../../hooks/use-on-duplicate-sheet.ts","../../hooks/use-on-embeds.ts","../../hooks/use-on-expand-column-group.ts","../../hooks/use-on-expand-row-group.ts","../../hooks/use-on-fill-range.ts","../../hooks/use-on-fill.ts","../../hooks/use-on-filter-table.ts","../../hooks/use-on-find-replace.ts","../../hooks/use-on-freeze.ts","../../hooks/use-on-goal-seek.ts","../../hooks/use-on-group-columns.ts","../../hooks/use-on-group-rows.ts","../../hooks/use-on-hide-column.ts","../../hooks/use-on-hide-row.ts","../../hooks/use-on-hide-show-sheet.ts","../../hooks/use-on-import-csv-legacy.ts","../../hooks/use-on-import-csv.ts","../../hooks/use-on-import-excel.ts","../../hooks/use-on-insert-autosum.ts","../../hooks/use-on-insert-cells-shift-down.ts","../../hooks/use-on-insert-cells-shift-right.ts","../../hooks/use-on-insert-checkbox.ts","../../hooks/use-on-insert-column.ts","../../hooks/use-on-insert-date-time.ts","../../hooks/use-on-insert-date.ts","../../hooks/use-on-insert-image.ts","../../hooks/use-on-insert-link.ts","../../hooks/use-on-insert-note.ts","../../hooks/use-on-insert-row.ts","../../hooks/use-on-insert-table-row.ts","../../hooks/use-on-insert-time.ts","../../hooks/use-on-locale-change.ts","../../hooks/use-on-merge-unmerge-cells.ts","../../hooks/use-on-move-columns.ts","../../hooks/use-on-move-rows.ts","../../hooks/use-on-move-selection.ts","../../hooks/use-on-move-sheet.ts","../../hooks/use-on-move-table-columns.ts","../../hooks/use-on-paste.ts","../../hooks/use-on-protect-range.ts","../../hooks/use-on-protect-sheet.ts","../../hooks/use-on-remove-duplicates.ts","../../hooks/use-on-rename-sheet.ts","../../hooks/use-on-request-calculate-wrapper.ts","../../hooks/use-on-request-conditional-format.ts","../../hooks/use-on-request-data-validation.ts","../../hooks/use-on-request-define-named-range.ts","../../hooks/use-on-request-delete-sheet.ts","../../hooks/use-on-request-edit-table.ts","../../hooks/use-on-request-format-cells.ts","../../hooks/use-on-request-insert-image.ts","../../hooks/use-on-request-insert-link.ts","../../hooks/use-on-request-resize.ts","../../hooks/use-on-request-update-named-range.ts","../../hooks/use-on-resize-table.ts","../../hooks/use-on-resize.ts","../../hooks/use-on-set-outline-depth.ts","../../hooks/use-on-show-column.ts","../../hooks/use-on-show-row.ts","../../hooks/use-on-sort-column.ts","../../hooks/use-on-sort-range.ts","../../hooks/use-on-sort-table.ts","../../hooks/use-on-subtotal.ts","../../hooks/use-on-table.ts","../../hooks/use-on-trace-dependents-precedents.tsx","../../hooks/use-on-ungroup-columns.ts","../../hooks/use-on-ungroup-rows.ts","../../hooks/use-on-update-named-range.ts","../../hooks/use-on-update-note.ts","../../hooks/use-on-update-sheet.ts","../../hooks/use-paint-format.ts","../../hooks/use-search.ts","../../hooks/use-select-next-prev-sheet.ts","../../hooks/use-sheet-observer.ts","../../hooks/use-sheet-properties.ts","../../hooks/use-sheet-state.ts","../../hooks/use-sheetdata-subscriber.ts","../../hooks/use-slicers.ts","../../hooks/use-split-text-to-columns.ts","../../hooks/use-spreadsheet-state.ts","../../hooks/use-ss-registry.ts","../../hooks/use-structured-reference.ts","../../hooks/use-undo-redo-actions.ts","../../hooks/use-undo-redo.ts","../../hooks/utils/frozen-sort.ts","../../hooks/utils/sort-rows.ts","../../interface/apply-fill.ts","../../interface/auto-resize.ts","../../interface/calculation-interface.ts","../../interface/change-batch-stream.ts","../../interface/change-batch.ts","../../interface/change-border.ts","../../interface/change-calculated-column.ts","../../interface/change-decimals.ts","../../interface/change-formatting.ts","../../interface/change-sheet-tabcolor.ts","../../interface/change-table-column.ts","../../interface/change-theme.ts","../../interface/chart-extensions.ts","../../interface/citations.ts","../../interface/clear-formatting.ts","../../interface/conditional-formatting-rules.ts","../../interface/create-table.ts","../../interface/data-validation-rules.ts","../../interface/data-validation-utils.ts","../../interface/delete-cells-shift-left.ts","../../interface/delete-cells-shift-up.ts","../../interface/delete-cells.ts","../../interface/delete-column.ts","../../interface/delete-row.ts","../../interface/delete-sheet.ts","../../interface/delete-table-column.ts","../../interface/delete-table-row.ts","../../interface/duplicate-sheet.ts","../../interface/embeds.ts","../../interface/freeze.ts","../../interface/helpers.ts","../../interface/hide-column.ts","../../interface/hide-row.ts","../../interface/indent.ts","../../interface/insert-cells-shift-down.ts","../../interface/insert-cells-shift-right.ts","../../interface/insert-column.ts","../../interface/insert-note.ts","../../interface/insert-row.ts","../../interface/insert-table-row.ts","../../interface/interface-cli.ts","../../interface/named-range-operations.ts","../../interface/new-sheet.ts","../../interface/pivot-extensions.ts","../../interface/remove-duplicates.ts","../../interface/remove-table.ts","../../interface/resize-utils.ts","../../interface/resize.ts","../../interface/slicers.ts","../../interface/split-text.ts","../../interface/spreadsheet-interface.ts","../../interface/table-totalrow.ts","../../interface/table-utils.ts","../../interface/update-sheet.ts","../../interface/update-table.ts","../../validation-schema/table.schema.ts"],"version":"5.8.3"}
1
+ {"root":["../../cellxfs-registry.ts","../../commands.ts","../../constants.ts","../../generated-names.ts","../../helpers.ts","../../index.ts","../../server-utils.ts","../../server.browser.ts","../../server.ts","../../shared-string-registry.ts","../../sheet-cell.ts","../../test-setup.ts","../../types.ts","../../vitest.config.ts","../../api/advanced-filter.ts","../../api/anchored-objects.ts","../../api/border.ts","../../api/conditional-format.ts","../../api/copy-paste.ts","../../api/data-validation.ts","../../api/datatype.ts","../../api/date.ts","../../api/decimals.ts","../../api/dependency.ts","../../api/fill-series-spec.ts","../../api/fill.ts","../../api/filter-range.ts","../../api/filter.ts","../../api/format-caches.ts","../../api/formula.ts","../../api/goal-seek.ts","../../api/immer-utils.ts","../../api/insert-cut-cells.ts","../../api/intl.ts","../../api/merges.ts","../../api/named-range-structural.ts","../../api/outline.ts","../../api/paint-format.ts","../../api/parse-html.ts","../../api/paste-special.ts","../../api/patches.ts","../../api/pivot-range.ts","../../api/range-rule-helpers.ts","../../api/range.ts","../../api/rename-sheet.ts","../../api/selection.ts","../../api/sort.ts","../../api/split-text.ts","../../api/structural-formula-update.ts","../../api/structural-guards.ts","../../api/structural-table-refs.ts","../../api/subtotal.ts","../../api/table.ts","../../api/validation.ts","../../api/xlsx-source.ts","../../atoms/delete-sheet-atom.ts","../../atoms/dialog-state.atom.ts","../../atoms/editing-data-validation-id.atom.ts","../../atoms/editing-embed.atom.ts","../../atoms/editing-table.atom.ts","../../atoms/error-state.atom.ts","../../atoms/index.ts","../../atoms/insert-image-state.atom.ts","../../atoms/named-range.atom.ts","../../atoms/resize-dimension.atom.ts","../../atoms/sheet-observer.atom.ts","../../components/index.tsx","../../components/dialogs/delete-sheet-confirmation.tsx","../../components/dialogs/error-state.tsx","../../components/editors/cell-format-editor.tsx","../../components/editors/conditional-format-editor.tsx","../../components/editors/conditional-format-rule-editor.tsx","../../components/editors/data-validation-editor.tsx","../../components/editors/data-validation-rule-editor.tsx","../../components/editors/embed-editor.tsx","../../components/editors/insert-image-editor.tsx","../../components/editors/insert-link-editor.tsx","../../components/editors/named-range-editor.tsx","../../components/editors/resize-dimension-editor.tsx","../../components/editors/sheet-filter.tsx","../../components/editors/table-editor.tsx","../../helpers/iterative-calculation.ts","../../helpers/sheet-title.ts","../../hooks/use-async-datasource.ts","../../hooks/use-calculation-initialize.ts","../../hooks/use-calculation-process-array.ts","../../hooks/use-calculation-queue.ts","../../hooks/use-calculation-worker.ts","../../hooks/use-calculation.ts","../../hooks/use-can-edit-cellrange.ts","../../hooks/use-cellxfs-registry.ts","../../hooks/use-citations.ts","../../hooks/use-comments.ts","../../hooks/use-conditional-formatting-rules.ts","../../hooks/use-data-validation-rules.ts","../../hooks/use-deferred-calculation-flush.ts","../../hooks/use-idle-scheduler.ts","../../hooks/use-indent.ts","../../hooks/use-named-range.ts","../../hooks/use-on-adjust-row-height.ts","../../hooks/use-on-advanced-filter.ts","../../hooks/use-on-autoresize.ts","../../hooks/use-on-banded-ranges.ts","../../hooks/use-on-calculation-begin.ts","../../hooks/use-on-calculation-success.ts","../../hooks/use-on-change-batch-stream.ts","../../hooks/use-on-change-batch.ts","../../hooks/use-on-change-calculated-column.ts","../../hooks/use-on-change-decimals.ts","../../hooks/use-on-change-formatting.ts","../../hooks/use-on-change-sheet-tabcolor.ts","../../hooks/use-on-change-table-column.ts","../../hooks/use-on-change-theme.ts","../../hooks/use-on-change.ts","../../hooks/use-on-clear-formatting.ts","../../hooks/use-on-collapse-column-group.ts","../../hooks/use-on-collapse-row-group.ts","../../hooks/use-on-copy.ts","../../hooks/use-on-create-named-range.ts","../../hooks/use-on-create-sheet.ts","../../hooks/use-on-delete-cells-shift-left.ts","../../hooks/use-on-delete-cells-shift-up.ts","../../hooks/use-on-delete-column.ts","../../hooks/use-on-delete-named-range.ts","../../hooks/use-on-delete-row.ts","../../hooks/use-on-delete-sheet.ts","../../hooks/use-on-delete-table-row.ts","../../hooks/use-on-delete.ts","../../hooks/use-on-drag-n-drop.ts","../../hooks/use-on-duplicate-sheet.ts","../../hooks/use-on-embeds.ts","../../hooks/use-on-expand-column-group.ts","../../hooks/use-on-expand-row-group.ts","../../hooks/use-on-fill-range.ts","../../hooks/use-on-fill.ts","../../hooks/use-on-filter-table.ts","../../hooks/use-on-find-replace.ts","../../hooks/use-on-freeze.ts","../../hooks/use-on-goal-seek.ts","../../hooks/use-on-group-columns.ts","../../hooks/use-on-group-rows.ts","../../hooks/use-on-hide-column.ts","../../hooks/use-on-hide-row.ts","../../hooks/use-on-hide-show-sheet.ts","../../hooks/use-on-import-csv-legacy.ts","../../hooks/use-on-import-csv.ts","../../hooks/use-on-import-excel.ts","../../hooks/use-on-insert-autosum.ts","../../hooks/use-on-insert-cells-shift-down.ts","../../hooks/use-on-insert-cells-shift-right.ts","../../hooks/use-on-insert-checkbox.ts","../../hooks/use-on-insert-column.ts","../../hooks/use-on-insert-date-time.ts","../../hooks/use-on-insert-date.ts","../../hooks/use-on-insert-image.ts","../../hooks/use-on-insert-link.ts","../../hooks/use-on-insert-note.ts","../../hooks/use-on-insert-row.ts","../../hooks/use-on-insert-table-row.ts","../../hooks/use-on-insert-time.ts","../../hooks/use-on-locale-change.ts","../../hooks/use-on-merge-unmerge-cells.ts","../../hooks/use-on-move-columns.ts","../../hooks/use-on-move-rows.ts","../../hooks/use-on-move-selection.ts","../../hooks/use-on-move-sheet.ts","../../hooks/use-on-move-table-columns.ts","../../hooks/use-on-paste.ts","../../hooks/use-on-protect-range.ts","../../hooks/use-on-protect-sheet.ts","../../hooks/use-on-remove-duplicates.ts","../../hooks/use-on-rename-sheet.ts","../../hooks/use-on-request-calculate-wrapper.ts","../../hooks/use-on-request-conditional-format.ts","../../hooks/use-on-request-data-validation.ts","../../hooks/use-on-request-define-named-range.ts","../../hooks/use-on-request-delete-sheet.ts","../../hooks/use-on-request-edit-table.ts","../../hooks/use-on-request-format-cells.ts","../../hooks/use-on-request-insert-image.ts","../../hooks/use-on-request-insert-link.ts","../../hooks/use-on-request-resize.ts","../../hooks/use-on-request-update-named-range.ts","../../hooks/use-on-resize-table.ts","../../hooks/use-on-resize.ts","../../hooks/use-on-set-outline-depth.ts","../../hooks/use-on-show-column.ts","../../hooks/use-on-show-row.ts","../../hooks/use-on-sort-column.ts","../../hooks/use-on-sort-range.ts","../../hooks/use-on-sort-table.ts","../../hooks/use-on-subtotal.ts","../../hooks/use-on-table.ts","../../hooks/use-on-trace-dependents-precedents.tsx","../../hooks/use-on-ungroup-columns.ts","../../hooks/use-on-ungroup-rows.ts","../../hooks/use-on-update-named-range.ts","../../hooks/use-on-update-note.ts","../../hooks/use-on-update-sheet.ts","../../hooks/use-paint-format.ts","../../hooks/use-search.ts","../../hooks/use-select-next-prev-sheet.ts","../../hooks/use-sheet-observer.ts","../../hooks/use-sheet-properties.ts","../../hooks/use-sheet-state.ts","../../hooks/use-sheetdata-subscriber.ts","../../hooks/use-slicers.ts","../../hooks/use-split-text-to-columns.ts","../../hooks/use-spreadsheet-state.ts","../../hooks/use-ss-registry.ts","../../hooks/use-structured-reference.ts","../../hooks/use-undo-redo-actions.ts","../../hooks/use-undo-redo.ts","../../hooks/utils/frozen-sort.ts","../../hooks/utils/sort-rows.ts","../../interface/apply-fill.ts","../../interface/auto-resize.ts","../../interface/calculation-interface.ts","../../interface/change-batch-stream.ts","../../interface/change-batch.ts","../../interface/change-border.ts","../../interface/change-calculated-column.ts","../../interface/change-decimals.ts","../../interface/change-formatting.ts","../../interface/change-sheet-tabcolor.ts","../../interface/change-table-column.ts","../../interface/change-theme.ts","../../interface/chart-extensions.ts","../../interface/citations.ts","../../interface/clear-formatting.ts","../../interface/conditional-formatting-rules.ts","../../interface/create-table.ts","../../interface/data-validation-rules.ts","../../interface/data-validation-utils.ts","../../interface/delete-cells-shift-left.ts","../../interface/delete-cells-shift-up.ts","../../interface/delete-cells.ts","../../interface/delete-column.ts","../../interface/delete-row.ts","../../interface/delete-sheet.ts","../../interface/delete-table-column.ts","../../interface/delete-table-row.ts","../../interface/duplicate-sheet.ts","../../interface/embeds.ts","../../interface/freeze.ts","../../interface/helpers.ts","../../interface/hide-column.ts","../../interface/hide-row.ts","../../interface/indent.ts","../../interface/insert-cells-shift-down.ts","../../interface/insert-cells-shift-right.ts","../../interface/insert-column.ts","../../interface/insert-note.ts","../../interface/insert-row.ts","../../interface/insert-table-row.ts","../../interface/interface-cli.ts","../../interface/named-range-operations.ts","../../interface/new-sheet.ts","../../interface/pivot-extensions.ts","../../interface/remove-duplicates.ts","../../interface/remove-table.ts","../../interface/resize-utils.ts","../../interface/resize.ts","../../interface/slicers.ts","../../interface/split-text.ts","../../interface/spreadsheet-interface.ts","../../interface/table-totalrow.ts","../../interface/table-utils.ts","../../interface/update-sheet.ts","../../interface/update-table.ts","../../validation-schema/table.schema.ts"],"version":"5.8.3"}
@@ -4,7 +4,14 @@ import type { GeneratedNames } from "../generated-names";
4
4
  import type { UseSpreadsheetProps } from "../hooks/use-spreadsheet-state";
5
5
  export type ClipBoardFormat = "text/html" | "text/csv" | "text/plain" | "application/json" | "image/apng" | "image/bmp" | "image/gif" | "image/jpeg" | "image/pjpeg" | "image/png" | "image/svg+xml" | "image/tiff" | "image/webp" | "image/x-icon";
6
6
  export declare const SUPPORTED_IMAGE_TYPES: string[];
7
- export declare const generateDataFromClipboard: <T extends CellData>(e: ClipboardEvent | undefined, activeCell: CellInterface, sheetId: number, activeSheetName: string, preserveFormatting?: boolean, locale?: string, idCreationStrategy?: UseSpreadsheetProps<T>["idCreationStrategy"], forcePlainText?: boolean, sanitizeHtml?: (html: string) => string, generatedNames?: GeneratedNames) => Promise<{
7
+ export declare const generateDataFromClipboard: <T extends CellData>(e: ClipboardEvent | undefined, activeCell: CellInterface, sheetId: number, activeSheetName: string, preserveFormatting?: boolean, locale?: string, idCreationStrategy?: UseSpreadsheetProps<T>["idCreationStrategy"], forcePlainText?: boolean, sanitizeHtml?: (html: string) => string, generatedNames?: GeneratedNames, options?: {
8
+ /**
9
+ * Re-anchor each copied formula's relative refs from its `sourceCell` to the paste
10
+ * destination (a COPY). `false` for a CUT: Excel keeps a moved formula's text verbatim and
11
+ * only repoints references INTO the moved block, which the consumer does itself.
12
+ */
13
+ relocateFormulas?: boolean;
14
+ }) => Promise<{
8
15
  results?: (CellData | null | undefined)[][];
9
16
  merges?: GridRange[];
10
17
  embeds?: EmbeddedObject[];
@@ -1 +1 @@
1
- {"version":3,"file":"copy-paste.d.ts","sourceRoot":"","sources":["../../../api/copy-paste.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,aAAa,EACb,SAAS,EACV,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EACV,QAAQ,EACR,cAAc,EACd,SAAS,EAEV,MAAM,2BAA2B,CAAC;AAanC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAW1E,MAAM,MAAM,eAAe,GACvB,WAAW,GACX,UAAU,GACV,YAAY,GACZ,kBAAkB,GAClB,YAAY,GACZ,WAAW,GACX,WAAW,GACX,YAAY,GACZ,aAAa,GACb,WAAW,GACX,eAAe,GACf,YAAY,GACZ,YAAY,GACZ,cAAc,CAAC;AAEnB,eAAO,MAAM,qBAAqB,UAWjC,CAAC;AAEF,eAAO,MAAM,yBAAyB,GAAU,CAAC,SAAS,QAAQ,EAChE,GAAG,cAAc,GAAG,SAAS,EAC7B,YAAY,aAAa,EACzB,SAAS,MAAM,EACf,iBAAiB,MAAM,EACvB,qBAAqB,OAAO,EAC5B,SAAS,MAAM,EACf,qBAAqB,mBAAmB,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,EACjE,iBAAiB,OAAO,EACxB,eAAe,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,EACvC,iBAAiB,cAAc,KAC9B,OAAO,CACN;IACE,OAAO,CAAC,EAAE,CAAC,QAAQ,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE,EAAE,CAAC;IAC5C,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,MAAM,CAAC,EAAE,cAAc,EAAE,CAAC;IAC1B,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB,GACD,SAAS,CAqQZ,CAAC;AAEF,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,SAazC;AAED,wBAAgB,cAAc,CAAC,CAAC,SAAS,QAAQ,EAC/C,MAAM,EAAE,CAAC,QAAQ,GAAG,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC,EAAE,EAAE,yCAwB9C;AAED,wBAAgB,SAAS,CAAC,CAAC,SAAS,QAAQ,EAC1C,MAAM,EAAE,CAAC,QAAQ,GAAG,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC,EAAE,EAAE,EAC7C,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,yCAkChB;AAED,wBAAgB,WAAW,CAAC,CAAC,SAAS,QAAQ,EAC5C,MAAM,EAAE,CAAC,QAAQ,GAAG,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC,EAAE,EAAE,EAC7C,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,yCAwBhB;AAED,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,QAAQ,GAAG,QAAQ,EAC7D,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,QAAQ,GAAG,SAAS,GAAG,IAAI,CAAC,EAAE,EAAE,KACnD,MAAM,EAmBR,CAAC"}
1
+ {"version":3,"file":"copy-paste.d.ts","sourceRoot":"","sources":["../../../api/copy-paste.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,aAAa,EACb,SAAS,EACV,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EACV,QAAQ,EACR,cAAc,EACd,SAAS,EAEV,MAAM,2BAA2B,CAAC;AAanC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAW1E,MAAM,MAAM,eAAe,GACvB,WAAW,GACX,UAAU,GACV,YAAY,GACZ,kBAAkB,GAClB,YAAY,GACZ,WAAW,GACX,WAAW,GACX,YAAY,GACZ,aAAa,GACb,WAAW,GACX,eAAe,GACf,YAAY,GACZ,YAAY,GACZ,cAAc,CAAC;AAEnB,eAAO,MAAM,qBAAqB,UAWjC,CAAC;AAEF,eAAO,MAAM,yBAAyB,GAAU,CAAC,SAAS,QAAQ,EAChE,GAAG,cAAc,GAAG,SAAS,EAC7B,YAAY,aAAa,EACzB,SAAS,MAAM,EACf,iBAAiB,MAAM,EACvB,qBAAqB,OAAO,EAC5B,SAAS,MAAM,EACf,qBAAqB,mBAAmB,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,EACjE,iBAAiB,OAAO,EACxB,eAAe,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,EACvC,iBAAiB,cAAc,EAC/B,UAAU;IACR;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,KACA,OAAO,CACN;IACE,OAAO,CAAC,EAAE,CAAC,QAAQ,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE,EAAE,CAAC;IAC5C,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,MAAM,CAAC,EAAE,cAAc,EAAE,CAAC;IAC1B,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB,GACD,SAAS,CAyQZ,CAAC;AAEF,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,SAazC;AAED,wBAAgB,cAAc,CAAC,CAAC,SAAS,QAAQ,EAC/C,MAAM,EAAE,CAAC,QAAQ,GAAG,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC,EAAE,EAAE,yCAwB9C;AAED,wBAAgB,SAAS,CAAC,CAAC,SAAS,QAAQ,EAC1C,MAAM,EAAE,CAAC,QAAQ,GAAG,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC,EAAE,EAAE,EAC7C,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,yCAkChB;AAED,wBAAgB,WAAW,CAAC,CAAC,SAAS,QAAQ,EAC5C,MAAM,EAAE,CAAC,QAAQ,GAAG,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC,EAAE,EAAE,EAC7C,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,yCAwBhB;AAED,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,QAAQ,GAAG,QAAQ,EAC7D,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,QAAQ,GAAG,SAAS,GAAG,IAAI,CAAC,EAAE,EAAE,KACnD,MAAM,EAmBR,CAAC"}