@rowsncolumns/spreadsheet-state 29.1.4 → 29.1.7
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/circular-reference.d.ts +31 -0
- package/dist/cjs/api/circular-reference.d.ts.map +1 -0
- package/dist/cjs/api/circular-reference.js +85 -0
- package/dist/cjs/api/copy-paste.d.ts +6 -0
- package/dist/cjs/api/copy-paste.d.ts.map +1 -1
- package/dist/cjs/api/copy-paste.js +24 -15
- package/dist/cjs/api/datatype.d.ts +2 -0
- package/dist/cjs/api/datatype.d.ts.map +1 -1
- package/dist/cjs/api/datatype.js +61 -35
- package/dist/cjs/api/date.d.ts.map +1 -1
- package/dist/cjs/api/date.js +23 -14
- package/dist/cjs/api/decimals.d.ts +10 -0
- package/dist/cjs/api/decimals.d.ts.map +1 -1
- package/dist/cjs/api/decimals.js +34 -11
- package/dist/cjs/api/dependency.d.ts +19 -1
- package/dist/cjs/api/dependency.d.ts.map +1 -1
- package/dist/cjs/api/dependency.js +30 -14
- package/dist/cjs/api/filter-condition.d.ts +58 -0
- package/dist/cjs/api/filter-condition.d.ts.map +1 -0
- package/dist/cjs/api/filter-condition.js +157 -0
- package/dist/cjs/api/formula.d.ts.map +1 -1
- package/dist/cjs/api/formula.js +9 -7
- package/dist/cjs/api/image-embed.d.ts +41 -0
- package/dist/cjs/api/image-embed.d.ts.map +1 -0
- package/dist/cjs/api/image-embed.js +55 -0
- package/dist/cjs/api/immer-utils.d.ts.map +1 -1
- package/dist/cjs/api/immer-utils.js +43 -15
- package/dist/cjs/api/named-range-structural.d.ts +29 -3
- package/dist/cjs/api/named-range-structural.d.ts.map +1 -1
- package/dist/cjs/api/named-range-structural.js +36 -11
- package/dist/cjs/api/parse-html.d.ts.map +1 -1
- package/dist/cjs/api/parse-html.js +11 -5
- package/dist/cjs/api/structural-formula-update.d.ts +20 -1
- package/dist/cjs/api/structural-formula-update.d.ts.map +1 -1
- package/dist/cjs/api/structural-formula-update.js +264 -90
- package/dist/cjs/api/structural-guards.d.ts +11 -0
- package/dist/cjs/api/structural-guards.d.ts.map +1 -1
- package/dist/cjs/api/structural-guards.js +45 -1
- package/dist/cjs/api/structural-table-refs.d.ts +15 -2
- package/dist/cjs/api/structural-table-refs.d.ts.map +1 -1
- package/dist/cjs/api/structural-table-refs.js +79 -35
- package/dist/cjs/commands.d.ts +17 -3
- package/dist/cjs/commands.d.ts.map +1 -1
- package/dist/cjs/components/editors/conditional-format-rule-editor.d.ts.map +1 -1
- package/dist/cjs/components/editors/conditional-format-rule-editor.js +19 -7
- package/dist/cjs/constants.d.ts +4 -1
- package/dist/cjs/constants.d.ts.map +1 -1
- package/dist/cjs/constants.js +4 -0
- package/dist/cjs/helpers/sheet-title.d.ts +2 -1
- package/dist/cjs/helpers/sheet-title.d.ts.map +1 -1
- package/dist/cjs/helpers/sheet-title.js +3 -1
- package/dist/cjs/hooks/use-can-edit-cellrange.d.ts +1 -1
- package/dist/cjs/hooks/use-can-edit-cellrange.d.ts.map +1 -1
- package/dist/cjs/hooks/use-can-edit-cellrange.js +1 -1
- package/dist/cjs/hooks/use-on-calculation-success.d.ts +5 -1
- package/dist/cjs/hooks/use-on-calculation-success.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-calculation-success.js +20 -3
- package/dist/cjs/hooks/use-on-copy.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-copy.js +23 -25
- package/dist/cjs/hooks/use-on-create-sheet.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-create-sheet.js +11 -1
- package/dist/cjs/hooks/use-on-delete.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-delete.js +15 -3
- package/dist/cjs/hooks/use-on-drag-n-drop.d.ts +5 -0
- package/dist/cjs/hooks/use-on-drag-n-drop.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-drag-n-drop.js +6 -5
- package/dist/cjs/hooks/use-on-filter-table.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-filter-table.js +6 -1
- package/dist/cjs/hooks/use-on-find-replace.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-find-replace.js +111 -23
- package/dist/cjs/hooks/use-on-insert-image.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-insert-image.js +20 -33
- package/dist/cjs/hooks/use-on-paste.d.ts +2 -1
- package/dist/cjs/hooks/use-on-paste.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-paste.js +53 -24
- package/dist/cjs/hooks/use-on-rename-sheet.d.ts +3 -1
- package/dist/cjs/hooks/use-on-rename-sheet.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-rename-sheet.js +19 -9
- package/dist/cjs/hooks/use-on-sort-column.d.ts +7 -1
- package/dist/cjs/hooks/use-on-sort-column.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-sort-column.js +25 -8
- package/dist/cjs/hooks/use-on-sort-range.d.ts +16 -2
- package/dist/cjs/hooks/use-on-sort-range.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-sort-range.js +72 -40
- package/dist/cjs/hooks/use-on-sort-table.d.ts +7 -2
- package/dist/cjs/hooks/use-on-sort-table.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-sort-table.js +25 -4
- package/dist/cjs/hooks/use-spreadsheet-state.d.ts +5 -3
- package/dist/cjs/hooks/use-spreadsheet-state.d.ts.map +1 -1
- package/dist/cjs/hooks/use-spreadsheet-state.js +7 -0
- package/dist/cjs/hooks/utils/sort-rows.d.ts +15 -0
- package/dist/cjs/hooks/utils/sort-rows.d.ts.map +1 -1
- package/dist/cjs/hooks/utils/sort-rows.js +16 -0
- package/dist/cjs/index.d.ts +3 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +3 -0
- package/dist/cjs/interface/delete-column.d.ts.map +1 -1
- package/dist/cjs/interface/delete-column.js +254 -101
- package/dist/cjs/interface/delete-row.d.ts.map +1 -1
- package/dist/cjs/interface/delete-row.js +233 -81
- package/dist/cjs/interface/duplicate-sheet.d.ts.map +1 -1
- package/dist/cjs/interface/duplicate-sheet.js +4 -9
- package/dist/cjs/interface/insert-column.d.ts.map +1 -1
- package/dist/cjs/interface/insert-column.js +1 -1
- package/dist/cjs/interface/insert-row.d.ts.map +1 -1
- package/dist/cjs/interface/insert-row.js +1 -1
- package/dist/cjs/interface/new-sheet.d.ts.map +1 -1
- package/dist/cjs/interface/new-sheet.js +6 -13
- package/dist/cjs/sheet-cell.d.ts +9 -0
- package/dist/cjs/sheet-cell.d.ts.map +1 -1
- package/dist/cjs/sheet-cell.js +46 -9
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/esm/api/circular-reference.d.ts +31 -0
- package/dist/esm/api/circular-reference.d.ts.map +1 -0
- package/dist/esm/api/circular-reference.js +55 -0
- package/dist/esm/api/copy-paste.d.ts +6 -0
- package/dist/esm/api/copy-paste.d.ts.map +1 -1
- package/dist/esm/api/copy-paste.js +26 -14
- package/dist/esm/api/datatype.d.ts +2 -0
- package/dist/esm/api/datatype.d.ts.map +1 -1
- package/dist/esm/api/datatype.js +61 -35
- package/dist/esm/api/date.d.ts.map +1 -1
- package/dist/esm/api/date.js +23 -14
- package/dist/esm/api/decimals.d.ts +10 -0
- package/dist/esm/api/decimals.d.ts.map +1 -1
- package/dist/esm/api/decimals.js +31 -10
- package/dist/esm/api/dependency.d.ts +19 -1
- package/dist/esm/api/dependency.d.ts.map +1 -1
- package/dist/esm/api/dependency.js +15 -10
- package/dist/esm/api/filter-condition.d.ts +58 -0
- package/dist/esm/api/filter-condition.d.ts.map +1 -0
- package/dist/esm/api/filter-condition.js +146 -0
- package/dist/esm/api/formula.d.ts.map +1 -1
- package/dist/esm/api/formula.js +9 -7
- package/dist/esm/api/image-embed.d.ts +41 -0
- package/dist/esm/api/image-embed.d.ts.map +1 -0
- package/dist/esm/api/image-embed.js +52 -0
- package/dist/esm/api/immer-utils.d.ts.map +1 -1
- package/dist/esm/api/immer-utils.js +43 -14
- package/dist/esm/api/named-range-structural.d.ts +29 -3
- package/dist/esm/api/named-range-structural.d.ts.map +1 -1
- package/dist/esm/api/named-range-structural.js +35 -11
- package/dist/esm/api/parse-html.d.ts.map +1 -1
- package/dist/esm/api/parse-html.js +14 -5
- package/dist/esm/api/structural-formula-update.d.ts +20 -1
- package/dist/esm/api/structural-formula-update.d.ts.map +1 -1
- package/dist/esm/api/structural-formula-update.js +151 -55
- package/dist/esm/api/structural-guards.d.ts +11 -0
- package/dist/esm/api/structural-guards.d.ts.map +1 -1
- package/dist/esm/api/structural-guards.js +31 -0
- package/dist/esm/api/structural-table-refs.d.ts +15 -2
- package/dist/esm/api/structural-table-refs.d.ts.map +1 -1
- package/dist/esm/api/structural-table-refs.js +49 -18
- package/dist/esm/commands.d.ts +17 -3
- package/dist/esm/commands.d.ts.map +1 -1
- package/dist/esm/components/editors/conditional-format-rule-editor.d.ts.map +1 -1
- package/dist/esm/components/editors/conditional-format-rule-editor.js +18 -7
- package/dist/esm/constants.d.ts +4 -1
- package/dist/esm/constants.d.ts.map +1 -1
- package/dist/esm/constants.js +4 -0
- package/dist/esm/helpers/sheet-title.d.ts +2 -1
- package/dist/esm/helpers/sheet-title.d.ts.map +1 -1
- package/dist/esm/helpers/sheet-title.js +3 -1
- package/dist/esm/hooks/use-can-edit-cellrange.d.ts +1 -1
- package/dist/esm/hooks/use-can-edit-cellrange.d.ts.map +1 -1
- package/dist/esm/hooks/use-can-edit-cellrange.js +1 -1
- package/dist/esm/hooks/use-on-calculation-success.d.ts +5 -1
- package/dist/esm/hooks/use-on-calculation-success.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-calculation-success.js +19 -3
- package/dist/esm/hooks/use-on-copy.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-copy.js +17 -17
- package/dist/esm/hooks/use-on-create-sheet.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-create-sheet.js +11 -1
- package/dist/esm/hooks/use-on-delete.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-delete.js +15 -3
- package/dist/esm/hooks/use-on-drag-n-drop.d.ts +5 -0
- package/dist/esm/hooks/use-on-drag-n-drop.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-drag-n-drop.js +7 -4
- package/dist/esm/hooks/use-on-filter-table.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-filter-table.js +13 -2
- package/dist/esm/hooks/use-on-find-replace.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-find-replace.js +111 -23
- package/dist/esm/hooks/use-on-insert-image.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-insert-image.js +15 -25
- package/dist/esm/hooks/use-on-paste.d.ts +2 -1
- package/dist/esm/hooks/use-on-paste.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-paste.js +46 -15
- package/dist/esm/hooks/use-on-rename-sheet.d.ts +3 -1
- package/dist/esm/hooks/use-on-rename-sheet.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-rename-sheet.js +19 -9
- package/dist/esm/hooks/use-on-sort-column.d.ts +7 -1
- package/dist/esm/hooks/use-on-sort-column.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-sort-column.js +18 -1
- package/dist/esm/hooks/use-on-sort-range.d.ts +16 -2
- package/dist/esm/hooks/use-on-sort-range.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-sort-range.js +30 -3
- package/dist/esm/hooks/use-on-sort-table.d.ts +7 -2
- package/dist/esm/hooks/use-on-sort-table.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-sort-table.js +25 -4
- package/dist/esm/hooks/use-spreadsheet-state.d.ts +5 -3
- package/dist/esm/hooks/use-spreadsheet-state.d.ts.map +1 -1
- package/dist/esm/hooks/use-spreadsheet-state.js +7 -0
- package/dist/esm/hooks/utils/sort-rows.d.ts +15 -0
- package/dist/esm/hooks/utils/sort-rows.d.ts.map +1 -1
- package/dist/esm/hooks/utils/sort-rows.js +15 -0
- package/dist/esm/index.d.ts +3 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +3 -0
- package/dist/esm/interface/delete-column.d.ts.map +1 -1
- package/dist/esm/interface/delete-column.js +111 -80
- package/dist/esm/interface/delete-row.d.ts.map +1 -1
- package/dist/esm/interface/delete-row.js +91 -59
- package/dist/esm/interface/duplicate-sheet.d.ts.map +1 -1
- package/dist/esm/interface/duplicate-sheet.js +4 -9
- package/dist/esm/interface/insert-column.d.ts.map +1 -1
- package/dist/esm/interface/insert-column.js +1 -1
- package/dist/esm/interface/insert-row.d.ts.map +1 -1
- package/dist/esm/interface/insert-row.js +1 -1
- package/dist/esm/interface/new-sheet.d.ts.map +1 -1
- package/dist/esm/interface/new-sheet.js +6 -13
- package/dist/esm/sheet-cell.d.ts +9 -0
- package/dist/esm/sheet-cell.d.ts.map +1 -1
- package/dist/esm/sheet-cell.js +46 -7
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/package.json +9 -9
|
@@ -2,6 +2,21 @@ import type { NamedRange, SheetPrintSettings } from "@rowsncolumns/spreadsheet";
|
|
|
2
2
|
import type { WritableDraft } from "immer";
|
|
3
3
|
export type StructuralAxis = "row" | "column";
|
|
4
4
|
export type StructuralOp = "insert" | "delete";
|
|
5
|
+
/**
|
|
6
|
+
* The edited axis's extent, so a band can be recognised as UNBOUNDED on it:
|
|
7
|
+
* a whole-column name is modelled as `B1:B<rowCount>` and a whole-row name
|
|
8
|
+
* as `A1:<columnCount>1`, and Excel keeps `$B:$B` / `$1:$1` whole through
|
|
9
|
+
* every insert / delete on that axis.
|
|
10
|
+
*/
|
|
11
|
+
export type StructuralAxisBounds = {
|
|
12
|
+
/** The sheet's row / column count on the edited axis before the edit. */
|
|
13
|
+
length: number;
|
|
14
|
+
/**
|
|
15
|
+
* The hard cap the grid never grows past (`maxRowCount` / `maxColumnCount`);
|
|
16
|
+
* a band's end is clamped to it and a band pushed past it is `#REF!`.
|
|
17
|
+
*/
|
|
18
|
+
max?: number;
|
|
19
|
+
};
|
|
5
20
|
/**
|
|
6
21
|
* The `value` a defined name carries once every cell of its range has been
|
|
7
22
|
* deleted. Excel keeps the name in the Name Manager as `=Sheet1!#REF!` and
|
|
@@ -22,8 +37,15 @@ export declare const isRefErrorNamedRange: (namedRange: Pick<NamedRange, "range"
|
|
|
22
37
|
* - insert at the boundary directly below → unchanged;
|
|
23
38
|
* - delete wholly above → shifts back; delete overlapping → shrinks by the
|
|
24
39
|
* deleted indices inside the band; delete covering the band → `null`.
|
|
40
|
+
*
|
|
41
|
+
* With `bounds`, a band that spans the whole axis (`1..length` — a
|
|
42
|
+
* whole-column `$B:$B` / whole-row `$1:$1` name) is unbounded on it: an
|
|
43
|
+
* insert anywhere keeps its start at 1 and stretches its end with the grid
|
|
44
|
+
* (Excel never turns `$B:$B` into `$B$2:$B$1001`), a delete only shrinks the
|
|
45
|
+
* end with the grid. Ends never pass `bounds.max`; a band whose start would
|
|
46
|
+
* is `null` (`#REF!`), like a cell reference pushed off the sheet.
|
|
25
47
|
*/
|
|
26
|
-
export declare const shiftNamedBand: (start: number, end: number, op: StructuralOp, index: number, count: number) => [number, number] | null;
|
|
48
|
+
export declare const shiftNamedBand: (start: number, end: number, op: StructuralOp, index: number, count: number, bounds?: StructuralAxisBounds) => [number, number] | null;
|
|
27
49
|
export type NamedRangeStructuralUpdate<N extends NamedRange> = {
|
|
28
50
|
/** Names whose range moved, grew, or shrank. */
|
|
29
51
|
changed: N[];
|
|
@@ -41,13 +63,17 @@ export type NamedRangeStructuralUpdate<N extends NamedRange> = {
|
|
|
41
63
|
* A name whose entire range is deleted is NOT dropped: it keeps its entry
|
|
42
64
|
* with `range` cleared and `value: "#REF!"`, so `=SUM(Data)` evaluates to
|
|
43
65
|
* `#REF!` like Excel rather than `#NAME?`.
|
|
66
|
+
*
|
|
67
|
+
* `bounds` (the edited sheet's row / column count on the edited axis) lets a
|
|
68
|
+
* whole-column / whole-row name keep its whole-axis geometry — see
|
|
69
|
+
* {@link shiftNamedBand}.
|
|
44
70
|
*/
|
|
45
|
-
export declare const updateNamedRangesOnStructuralChange: (draft: WritableDraft<NamedRange>[], axis: StructuralAxis, op: StructuralOp, index: number, count: number, sheetId: number) => NamedRangeStructuralUpdate<WritableDraft<NamedRange>>;
|
|
71
|
+
export declare const updateNamedRangesOnStructuralChange: (draft: WritableDraft<NamedRange>[], axis: StructuralAxis, op: StructuralOp, index: number, count: number, sheetId: number, bounds?: StructuralAxisBounds) => NamedRangeStructuralUpdate<WritableDraft<NamedRange>>;
|
|
46
72
|
/**
|
|
47
73
|
* Pure variant of {@link updateNamedRangesOnStructuralChange}: returns the
|
|
48
74
|
* adjusted list (sharing untouched entries) plus the names that changed.
|
|
49
75
|
*/
|
|
50
|
-
export declare const shiftNamedRangesOnStructuralChange: <N extends NamedRange>(namedRanges: readonly N[], axis: StructuralAxis, op: StructuralOp, index: number, count: number, sheetId: number) => {
|
|
76
|
+
export declare const shiftNamedRangesOnStructuralChange: <N extends NamedRange>(namedRanges: readonly N[], axis: StructuralAxis, op: StructuralOp, index: number, count: number, sheetId: number, bounds?: StructuralAxisBounds) => {
|
|
51
77
|
next: N[];
|
|
52
78
|
} & NamedRangeStructuralUpdate<N>;
|
|
53
79
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"named-range-structural.d.ts","sourceRoot":"","sources":["../../../api/named-range-structural.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,UAAU,EAEV,kBAAkB,EACnB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,QAAQ,CAAC;AAC9C,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE/C;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,UAAU,CAAC;AAE7C,eAAO,MAAM,oBAAoB,GAC/B,YAAY,IAAI,CAAC,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC,YACmB,CAAC;AAErE
|
|
1
|
+
{"version":3,"file":"named-range-structural.d.ts","sourceRoot":"","sources":["../../../api/named-range-structural.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,UAAU,EAEV,kBAAkB,EACnB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,QAAQ,CAAC;AAC9C,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE/C;;;;;GAKG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,yEAAyE;IACzE,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,UAAU,CAAC;AAE7C,eAAO,MAAM,oBAAoB,GAC/B,YAAY,IAAI,CAAC,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC,YACmB,CAAC;AAErE;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,cAAc,GACzB,OAAO,MAAM,EACb,KAAK,MAAM,EACX,IAAI,YAAY,EAChB,OAAO,MAAM,EACb,OAAO,MAAM,EACb,SAAS,oBAAoB,KAC5B,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IA2BrB,CAAC;AA2BF,MAAM,MAAM,0BAA0B,CAAC,CAAC,SAAS,UAAU,IAAI;IAC7D,gDAAgD;IAChD,OAAO,EAAE,CAAC,EAAE,CAAC;IACb,gEAAgE;IAChE,UAAU,EAAE,CAAC,EAAE,CAAC;CACjB,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,mCAAmC,GAC9C,OAAO,aAAa,CAAC,UAAU,CAAC,EAAE,EAClC,MAAM,cAAc,EACpB,IAAI,YAAY,EAChB,OAAO,MAAM,EACb,OAAO,MAAM,EACb,SAAS,MAAM,EACf,SAAS,oBAAoB,KAC5B,0BAA0B,CAAC,aAAa,CAAC,UAAU,CAAC,CAmBtD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kCAAkC,GAAI,CAAC,SAAS,UAAU,EACrE,aAAa,SAAS,CAAC,EAAE,EACzB,MAAM,cAAc,EACpB,IAAI,YAAY,EAChB,OAAO,MAAM,EACb,OAAO,MAAM,EACb,SAAS,MAAM,EACf,SAAS,oBAAoB,KAC5B;IAAE,IAAI,EAAE,CAAC,EAAE,CAAA;CAAE,GAAG,0BAA0B,CAAC,CAAC,CAsB9C,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,qCAAqC,GAChD,eAAe,aAAa,CAAC,kBAAkB,CAAC,EAChD,MAAM,cAAc,EACpB,IAAI,YAAY,EAChB,OAAO,MAAM,EACb,OAAO,MAAM,KACZ,OAiDF,CAAC"}
|
|
@@ -19,20 +19,41 @@ export var isRefErrorNamedRange = function (namedRange) { return !namedRange.ran
|
|
|
19
19
|
* - insert at the boundary directly below → unchanged;
|
|
20
20
|
* - delete wholly above → shifts back; delete overlapping → shrinks by the
|
|
21
21
|
* deleted indices inside the band; delete covering the band → `null`.
|
|
22
|
+
*
|
|
23
|
+
* With `bounds`, a band that spans the whole axis (`1..length` — a
|
|
24
|
+
* whole-column `$B:$B` / whole-row `$1:$1` name) is unbounded on it: an
|
|
25
|
+
* insert anywhere keeps its start at 1 and stretches its end with the grid
|
|
26
|
+
* (Excel never turns `$B:$B` into `$B$2:$B$1001`), a delete only shrinks the
|
|
27
|
+
* end with the grid. Ends never pass `bounds.max`; a band whose start would
|
|
28
|
+
* is `null` (`#REF!`), like a cell reference pushed off the sheet.
|
|
22
29
|
*/
|
|
23
|
-
export var shiftNamedBand = function (start, end, op, index, count) {
|
|
30
|
+
export var shiftNamedBand = function (start, end, op, index, count, bounds) {
|
|
31
|
+
var _a;
|
|
24
32
|
if (count <= 0)
|
|
25
33
|
return [start, end];
|
|
26
34
|
var s = Math.max(1, start);
|
|
27
35
|
var e = Math.max(s, end);
|
|
36
|
+
var max = (_a = bounds === null || bounds === void 0 ? void 0 : bounds.max) !== null && _a !== void 0 ? _a : Number.POSITIVE_INFINITY;
|
|
37
|
+
var wholeAxis = bounds != null && s <= 1 && e >= bounds.length;
|
|
38
|
+
var deleteEnd = index + count - 1;
|
|
39
|
+
if (wholeAxis) {
|
|
40
|
+
if (op === "insert")
|
|
41
|
+
return [1, Math.min(e + count, max)];
|
|
42
|
+
if (index > e)
|
|
43
|
+
return [s, e];
|
|
44
|
+
var inside_1 = Math.min(deleteEnd, e) - Math.max(index, 1) + 1;
|
|
45
|
+
return [1, Math.max(1, e - inside_1)];
|
|
46
|
+
}
|
|
28
47
|
if (op === "insert") {
|
|
29
|
-
if (index <= s)
|
|
30
|
-
|
|
48
|
+
if (index <= s) {
|
|
49
|
+
if (s + count > max)
|
|
50
|
+
return null;
|
|
51
|
+
return [s + count, Math.min(e + count, max)];
|
|
52
|
+
}
|
|
31
53
|
if (index <= e)
|
|
32
|
-
return [s, e + count];
|
|
54
|
+
return [s, Math.min(e + count, max)];
|
|
33
55
|
return [s, e];
|
|
34
56
|
}
|
|
35
|
-
var deleteEnd = index + count - 1;
|
|
36
57
|
if (deleteEnd < s)
|
|
37
58
|
return [s - count, e - count];
|
|
38
59
|
if (index > e)
|
|
@@ -43,12 +64,12 @@ export var shiftNamedBand = function (start, end, op, index, count) {
|
|
|
43
64
|
var inside = Math.min(deleteEnd, e) - Math.max(index, s) + 1;
|
|
44
65
|
return [s - before, e - before - inside];
|
|
45
66
|
};
|
|
46
|
-
var shiftGridRange = function (range, axis, op, index, count) {
|
|
67
|
+
var shiftGridRange = function (range, axis, op, index, count, bounds) {
|
|
47
68
|
var _a;
|
|
48
69
|
var _b = __read(axis === "row"
|
|
49
70
|
? ["startRowIndex", "endRowIndex"]
|
|
50
71
|
: ["startColumnIndex", "endColumnIndex"], 2), startKey = _b[0], endKey = _b[1];
|
|
51
|
-
var next = shiftNamedBand(range[startKey], range[endKey], op, index, count);
|
|
72
|
+
var next = shiftNamedBand(range[startKey], range[endKey], op, index, count, bounds);
|
|
52
73
|
if (!next)
|
|
53
74
|
return null;
|
|
54
75
|
if (next[0] === range[startKey] && next[1] === range[endKey])
|
|
@@ -66,8 +87,12 @@ var shiftGridRange = function (range, axis, op, index, count) {
|
|
|
66
87
|
* A name whose entire range is deleted is NOT dropped: it keeps its entry
|
|
67
88
|
* with `range` cleared and `value: "#REF!"`, so `=SUM(Data)` evaluates to
|
|
68
89
|
* `#REF!` like Excel rather than `#NAME?`.
|
|
90
|
+
*
|
|
91
|
+
* `bounds` (the edited sheet's row / column count on the edited axis) lets a
|
|
92
|
+
* whole-column / whole-row name keep its whole-axis geometry — see
|
|
93
|
+
* {@link shiftNamedBand}.
|
|
69
94
|
*/
|
|
70
|
-
export var updateNamedRangesOnStructuralChange = function (draft, axis, op, index, count, sheetId) {
|
|
95
|
+
export var updateNamedRangesOnStructuralChange = function (draft, axis, op, index, count, sheetId, bounds) {
|
|
71
96
|
var e_1, _a;
|
|
72
97
|
var changed = [];
|
|
73
98
|
var refErrored = [];
|
|
@@ -79,7 +104,7 @@ export var updateNamedRangesOnStructuralChange = function (draft, axis, op, inde
|
|
|
79
104
|
var range = namedRange.range;
|
|
80
105
|
if (!range || range.sheetId !== sheetId)
|
|
81
106
|
continue;
|
|
82
|
-
var next = shiftGridRange(range, axis, op, index, count);
|
|
107
|
+
var next = shiftGridRange(range, axis, op, index, count, bounds);
|
|
83
108
|
if (next === range)
|
|
84
109
|
continue;
|
|
85
110
|
if (next === null) {
|
|
@@ -105,14 +130,14 @@ export var updateNamedRangesOnStructuralChange = function (draft, axis, op, inde
|
|
|
105
130
|
* Pure variant of {@link updateNamedRangesOnStructuralChange}: returns the
|
|
106
131
|
* adjusted list (sharing untouched entries) plus the names that changed.
|
|
107
132
|
*/
|
|
108
|
-
export var shiftNamedRangesOnStructuralChange = function (namedRanges, axis, op, index, count, sheetId) {
|
|
133
|
+
export var shiftNamedRangesOnStructuralChange = function (namedRanges, axis, op, index, count, sheetId, bounds) {
|
|
109
134
|
var changed = [];
|
|
110
135
|
var refErrored = [];
|
|
111
136
|
var next = namedRanges.map(function (namedRange) {
|
|
112
137
|
var range = namedRange.range;
|
|
113
138
|
if (!range || range.sheetId !== sheetId || count <= 0)
|
|
114
139
|
return namedRange;
|
|
115
|
-
var shifted = shiftGridRange(range, axis, op, index, count);
|
|
140
|
+
var shifted = shiftGridRange(range, axis, op, index, count, bounds);
|
|
116
141
|
if (shifted === range)
|
|
117
142
|
return namedRange;
|
|
118
143
|
if (shifted === null) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-html.d.ts","sourceRoot":"","sources":["../../../api/parse-html.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,SAAS,EAGV,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EACV,QAAQ,EACR,cAAc,EAGf,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"parse-html.d.ts","sourceRoot":"","sources":["../../../api/parse-html.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,SAAS,EAGV,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EACV,QAAQ,EACR,cAAc,EAGf,MAAM,2BAA2B,CAAC;AAqBnC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAgE1E,eAAO,MAAM,SAAS,GACpB,gBAAgB,MAAM,EACtB,gBAAgB,MAAM,GAAG,SAAS,EAClC,YAAY,aAAa,EACzB,SAAS,MAAM,EACf,qBAAqB,OAAO,EAC5B,qBAAqB,mBAAmB,CAAC,oBAAoB,CAAC,EAC9D,SAAS,MAAM,EACf,eAAe,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM;;;;;;EAuDxC,CAAC;AAmrBF,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,GAAG,MAAM,CAuBlE;AA2OD,eAAO,MAAM,YAAY,GAAI,OAAO,MAAM,GAAG,SAAS,GAAG,IAAI,uBAY5D,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,UAAU,MAAM,GAAG,SAAS,GAAG,IAAI,EACnC,SAAS,MAAM,EACf,YAAY,aAAa,EACzB,qBAAqB,mBAAmB,CAAC,oBAAoB,CAAC,wCA2B/D,CAAC;AAEF,eAAO,MAAM,0BAA0B,GAAI,MAAM,OAAO,kFA2CvD,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { __assign, __awaiter, __generator, __read, __values } from "tslib";
|
|
2
2
|
import { getImageDimensionsFromUrl } from "@rowsncolumns/toolkit";
|
|
3
|
-
import { colorStringToHex, getExtendedValueBool, getExtendedValueError, getExtendedValueFormula, getExtendedValueNumber, getExtendedValueString, htmlElementToRichText, isNil, mountClipboardHtml, normalizeColor, pixelToPoint, pointToPixel, uuid, } from "@rowsncolumns/utils";
|
|
3
|
+
import { colorStringToHex, getExtendedValueBool, getExtendedValueError, getExtendedValueFormula, getExtendedValueNumber, getExtendedValueString, htmlElementToRichText, isAFormula, isNil, isSafeHyperlinkUri, isSafeImageSrc, mountClipboardHtml, normalizeColor, pixelToPoint, pointToPixel, uuid, } from "@rowsncolumns/utils";
|
|
4
4
|
import { defaultCellCoords, SheetCell } from "../sheet-cell";
|
|
5
5
|
var BLOCK_TAGS = new Set([
|
|
6
6
|
"p",
|
|
@@ -592,7 +592,7 @@ var tryHandleImageElement = function (element, context) { return __awaiter(void
|
|
|
592
592
|
return [2 /*return*/, false];
|
|
593
593
|
}
|
|
594
594
|
imageUrl = image.getAttribute("src");
|
|
595
|
-
if (!imageUrl) {
|
|
595
|
+
if (!imageUrl || !isSafeImageSrc(imageUrl)) {
|
|
596
596
|
return [2 /*return*/, false];
|
|
597
597
|
}
|
|
598
598
|
text = extractTextContent(element);
|
|
@@ -662,11 +662,15 @@ var applyGoogleSheetsValue = function (element, sheetCell) {
|
|
|
662
662
|
}
|
|
663
663
|
finally { if (e_4) throw e_4.error; }
|
|
664
664
|
}
|
|
665
|
+
// `"1"` is the Google Sheets value type: 2 = string, 3 = number, 4 = boolean. A STRING
|
|
666
|
+
// cell whose text starts with `=` is text in the source sheet (its formula would ride
|
|
667
|
+
// `data-sheets-formula`), so it lands as quote-prefixed text rather than a formula.
|
|
668
|
+
var isStringType = parsed["1"] === 2;
|
|
665
669
|
try {
|
|
666
670
|
for (var candidates_3 = __values(candidates), candidates_3_1 = candidates_3.next(); !candidates_3_1.done; candidates_3_1 = candidates_3.next()) {
|
|
667
671
|
var candidate = candidates_3_1.value;
|
|
668
672
|
if (typeof candidate === "string" && candidate.length) {
|
|
669
|
-
sheetCell.setUserEnteredValue(candidate);
|
|
673
|
+
sheetCell.setUserEnteredValue(isStringType && isAFormula(candidate) ? "'".concat(candidate) : candidate);
|
|
670
674
|
return true;
|
|
671
675
|
}
|
|
672
676
|
}
|
|
@@ -714,7 +718,9 @@ var applyExcelValue = function (element, sheetCell) {
|
|
|
714
718
|
sheetCell.setUserEnteredValue(excelValue === "1" || excelValue === "TRUE");
|
|
715
719
|
return true;
|
|
716
720
|
}
|
|
717
|
-
|
|
721
|
+
// A string-typed (`data-t="s"`) cell whose text starts with `=` is text in the source
|
|
722
|
+
// (a formula rides `data-formula`) — keep it text via the quote prefix.
|
|
723
|
+
sheetCell.setUserEnteredValue(excelType === "s" && isAFormula(excelValue) ? "'".concat(excelValue) : excelValue);
|
|
718
724
|
return true;
|
|
719
725
|
};
|
|
720
726
|
var excelSerialToDate = function (serial) {
|
|
@@ -730,7 +736,7 @@ var excelSerialToDate = function (serial) {
|
|
|
730
736
|
};
|
|
731
737
|
var applyAnchorValue = function (element, sheetCell) {
|
|
732
738
|
var href = element.getAttribute("href");
|
|
733
|
-
if (!href) {
|
|
739
|
+
if (!href || !isSafeHyperlinkUri(href)) {
|
|
734
740
|
return false;
|
|
735
741
|
}
|
|
736
742
|
var title = extractTextContent(element) || href;
|
|
@@ -14,11 +14,20 @@ export type StructuralFormulaUpdateParams<T extends CellData> = {
|
|
|
14
14
|
sheetId: number;
|
|
15
15
|
/**
|
|
16
16
|
* For insert: the index at which rows/columns are being inserted.
|
|
17
|
-
* For delete: the smallest
|
|
17
|
+
* For delete: the smallest deleted index.
|
|
18
18
|
*/
|
|
19
19
|
referenceIndex: number;
|
|
20
20
|
/** Number of rows/columns being inserted or deleted. */
|
|
21
21
|
count: number;
|
|
22
|
+
/**
|
|
23
|
+
* Delete only: the exact deleted indexes (any order) when the selection is
|
|
24
|
+
* NOT one contiguous band — Ctrl-selected rows 2 and 4. Excel shifts every
|
|
25
|
+
* reference by the number of deleted lines BEFORE it and breaks references
|
|
26
|
+
* INTO a deleted line; treating the selection as the band 2:4 would break
|
|
27
|
+
* `=A3` and slide `=A4` onto the wrong cell. Defaults to the contiguous band
|
|
28
|
+
* `referenceIndex .. referenceIndex + count - 1`.
|
|
29
|
+
*/
|
|
30
|
+
indexes?: number[];
|
|
22
31
|
rowCount: number;
|
|
23
32
|
columnCount: number;
|
|
24
33
|
getDependents: ReturnType<typeof useCalculation>["getDependents"];
|
|
@@ -71,5 +80,15 @@ export type StructuralFormulaUpdateParams<T extends CellData> = {
|
|
|
71
80
|
* and 3 don't double-process a cell.
|
|
72
81
|
*/
|
|
73
82
|
export declare const updateFormulasForStructuralChange: <T extends CellData>(params: StructuralFormulaUpdateParams<T>) => void;
|
|
83
|
+
/**
|
|
84
|
+
* The maximal contiguous runs of `indexes` (any order, duplicates ignored),
|
|
85
|
+
* ascending — the bands of a Ctrl-selected delete (rows 2 and 4 → two runs).
|
|
86
|
+
* Shared by `deleteRow` / `deleteColumn`, which apply every band-shaped update
|
|
87
|
+
* once per run.
|
|
88
|
+
*/
|
|
89
|
+
export declare const contiguousRuns: (indexes: number[]) => Array<{
|
|
90
|
+
start: number;
|
|
91
|
+
count: number;
|
|
92
|
+
}>;
|
|
74
93
|
export {};
|
|
75
94
|
//# sourceMappingURL=structural-formula-update.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"structural-formula-update.d.ts","sourceRoot":"","sources":["../../../api/structural-formula-update.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAK1D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAEnC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAErE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"structural-formula-update.d.ts","sourceRoot":"","sources":["../../../api/structural-formula-update.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAK1D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAEnC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAErE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAcrD,KAAK,cAAc,GAAG,KAAK,GAAG,QAAQ,CAAC;AACvC,KAAK,YAAY,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAExC,MAAM,MAAM,6BAA6B,CAAC,CAAC,SAAS,QAAQ,IAAI;IAC9D,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3B,IAAI,EAAE,cAAc,CAAC;IACrB,EAAE,EAAE,YAAY,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB,wDAAwD;IACxD,KAAK,EAAE,MAAM,CAAC;IACd;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IAEpB,aAAa,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,eAAe,CAAC,CAAC;IAClE;;;;OAIG;IACH,aAAa,CAAC,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,eAAe,CAAC,CAAC;IACnE;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,UAAU,CAC/B,OAAO,cAAc,CACtB,CAAC,sBAAsB,CAAC,CAAC;IAC1B,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1C,kBAAkB,CAAC,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,oBAAoB,CAAC,CAAC;IAC7E,qBAAqB,CAAC,EAAE,UAAU,CAChC,OAAO,cAAc,CACtB,CAAC,uBAAuB,CAAC,CAAC;IAE3B,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IAE/C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;CAC7C,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,iCAAiC,GAAI,CAAC,SAAS,QAAQ,EAClE,QAAQ,6BAA6B,CAAC,CAAC,CAAC,SAybzC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GACzB,SAAS,MAAM,EAAE,KAChB,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAYxC,CAAC"}
|