@rowsncolumns/spreadsheet-state 29.1.4 → 29.1.6
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 +50 -27
- 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 +50 -27
- 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
|
@@ -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"}
|