@progress/kendo-spreadsheet-common 1.2.6-develop.2 → 1.2.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/index-esm.js +70 -75
- package/dist/index.js +70 -75
- package/package.json +1 -1
package/dist/index-esm.js
CHANGED
|
@@ -21,7 +21,7 @@ function displaySheet(sheet) {
|
|
|
21
21
|
if (/^[a-z_][a-z0-9_]*$/i.test(sheet)) {
|
|
22
22
|
return sheet;
|
|
23
23
|
}
|
|
24
|
-
return "'" + sheet.replace(/\x27/g, "\\'") + "'";
|
|
24
|
+
return "'" + sheet.replace(/\\/g, "\\\\").replace(/\x27/g, "\\'") + "'";
|
|
25
25
|
}
|
|
26
26
|
function displayRef(sheet, row, col, rel) {
|
|
27
27
|
let aa = "";
|
|
@@ -5721,7 +5721,7 @@ class FormulaContext {
|
|
|
5721
5721
|
if (/^[a-z_][a-z0-9_]*$/i.test(val)) {
|
|
5722
5722
|
return val;
|
|
5723
5723
|
}
|
|
5724
|
-
return "'" + val.replace(/\x27/g, "\\'") + "'";
|
|
5724
|
+
return "'" + val.replace(/\\/g, "\\\\").replace(/\x27/g, "\\'") + "'";
|
|
5725
5725
|
}
|
|
5726
5726
|
}
|
|
5727
5727
|
|
|
@@ -7837,8 +7837,10 @@ const propertyBagSpec = [
|
|
|
7837
7837
|
{ property: ValueProperty, name: "value", value: null, sortable: true, serializable: true, depends: "format" },
|
|
7838
7838
|
{ property: Property, name: "formula", value: null, sortable: true, serializable: true },
|
|
7839
7839
|
{ property: Property, name: "background", value: null, sortable: true, serializable: true },
|
|
7840
|
-
{ property: JsonProperty, name: "
|
|
7841
|
-
{ property: JsonProperty, name: "
|
|
7840
|
+
{ property: JsonProperty, name: "borderLeft", value: null, sortable: false, serializable: true },
|
|
7841
|
+
{ property: JsonProperty, name: "borderRight", value: null, sortable: false, serializable: true },
|
|
7842
|
+
{ property: JsonProperty, name: "borderTop", value: null, sortable: false, serializable: true },
|
|
7843
|
+
{ property: JsonProperty, name: "borderBottom", value: null, sortable: false, serializable: true },
|
|
7842
7844
|
{ property: JsonProperty, name: "dBorders", value: null, sortable: false, serializable: true },
|
|
7843
7845
|
{ property: Property, name: "color", value: null, sortable: true, serializable: true },
|
|
7844
7846
|
{ property: Property, name: "fontFamily", value: null, sortable: true, serializable: true },
|
|
@@ -7937,44 +7939,41 @@ class PropertyBag {
|
|
|
7937
7939
|
if (index === undefined) {
|
|
7938
7940
|
return this.lists[name];
|
|
7939
7941
|
}
|
|
7940
|
-
|
|
7941
|
-
switch (name) {
|
|
7942
|
-
case "borderRight":
|
|
7943
|
-
index += this.rowCount;
|
|
7944
|
-
/* falls through */
|
|
7945
|
-
case "borderLeft":
|
|
7946
|
-
name = "vBorders";
|
|
7947
|
-
break;
|
|
7948
|
-
|
|
7949
|
-
case "borderBottom":
|
|
7950
|
-
index++;
|
|
7951
|
-
/* falls through */
|
|
7952
|
-
case "borderTop":
|
|
7953
|
-
name = "hBorders";
|
|
7954
|
-
break;
|
|
7955
|
-
}
|
|
7956
7942
|
return index > this.cellCount ? null : this.properties[name].get(index);
|
|
7957
7943
|
}
|
|
7958
7944
|
|
|
7959
7945
|
set(name, start, end, value) {
|
|
7946
|
+
this._set(name, start, end, value);
|
|
7960
7947
|
switch (name) {
|
|
7961
|
-
|
|
7962
|
-
start
|
|
7963
|
-
end += this.rowCount;
|
|
7964
|
-
/* falls through */
|
|
7965
|
-
case "borderLeft":
|
|
7966
|
-
name = "vBorders";
|
|
7948
|
+
case "borderLeft":
|
|
7949
|
+
this._set("borderRight", start - this.rowCount, end - this.rowCount, value);
|
|
7967
7950
|
break;
|
|
7968
|
-
|
|
7969
|
-
|
|
7970
|
-
|
|
7971
|
-
|
|
7972
|
-
|
|
7973
|
-
|
|
7974
|
-
|
|
7951
|
+
case "borderRight":
|
|
7952
|
+
this._set("borderLeft", start + this.rowCount, end + this.rowCount, value);
|
|
7953
|
+
break;
|
|
7954
|
+
case "borderTop":
|
|
7955
|
+
intervals(start, end, this.rowCount).forEach((a) => {
|
|
7956
|
+
var start = a[0] - 1, end = a[1] - 1;
|
|
7957
|
+
if ((start + 1) % this.rowCount == 0) {
|
|
7958
|
+
start++;
|
|
7959
|
+
}
|
|
7960
|
+
this._set("borderBottom", start, end, value);
|
|
7961
|
+
});
|
|
7962
|
+
break;
|
|
7963
|
+
case "borderBottom":
|
|
7964
|
+
intervals(start, end, this.rowCount).forEach((a) => {
|
|
7965
|
+
var start = a[0] + 1, end = a[1] + 1;
|
|
7966
|
+
if (end % this.rowCount == 0) {
|
|
7967
|
+
end--;
|
|
7968
|
+
}
|
|
7969
|
+
this._set("borderTop", start, end, value);
|
|
7970
|
+
});
|
|
7975
7971
|
break;
|
|
7976
7972
|
}
|
|
7977
|
-
|
|
7973
|
+
}
|
|
7974
|
+
|
|
7975
|
+
_set(name, start, end, value) {
|
|
7976
|
+
if (start >= 0 && start <= end && end <= this.cellCount) {
|
|
7978
7977
|
this.properties[name].set(start, end, value);
|
|
7979
7978
|
}
|
|
7980
7979
|
}
|
|
@@ -7982,19 +7981,12 @@ class PropertyBag {
|
|
|
7982
7981
|
fromJSON(index, value) {
|
|
7983
7982
|
for (let si = 0; si < this.specs.length; si++) {
|
|
7984
7983
|
let spec = this.specs[si];
|
|
7985
|
-
|
|
7986
7984
|
if (spec.serializable) {
|
|
7987
7985
|
if (value[spec.name] !== undefined) {
|
|
7988
7986
|
this.set(spec.name, index, index, value[spec.name], false);
|
|
7989
7987
|
}
|
|
7990
7988
|
}
|
|
7991
7989
|
}
|
|
7992
|
-
|
|
7993
|
-
[ "borderLeft", "borderRight", "borderTop", "borderBottom" ].forEach(function(b) {
|
|
7994
|
-
if (value[b] !== undefined) {
|
|
7995
|
-
this.set(b, index, index, value[b]);
|
|
7996
|
-
}
|
|
7997
|
-
}, this);
|
|
7998
7990
|
}
|
|
7999
7991
|
|
|
8000
7992
|
copy(sourceStart, sourceEnd, targetStart) {
|
|
@@ -8033,18 +8025,8 @@ class PropertyBag {
|
|
|
8033
8025
|
|
|
8034
8026
|
forEach(start, end, callback) {
|
|
8035
8027
|
let iterators = this.iterators(start, end);
|
|
8036
|
-
let hBorders = this.iterator("hBorders", start, end + 1);
|
|
8037
|
-
let leftBorders = this.iterator("vBorders", start, end);
|
|
8038
|
-
let rightBorders = this.iterator("vBorders", start + this.rowCount, end + this.rowCount);
|
|
8039
8028
|
let values, index;
|
|
8040
8029
|
|
|
8041
|
-
function addBorder(name, iterator, index) {
|
|
8042
|
-
let val = iterator.at(index);
|
|
8043
|
-
if (val !== iterator.value) {
|
|
8044
|
-
values[name] = val;
|
|
8045
|
-
}
|
|
8046
|
-
}
|
|
8047
|
-
|
|
8048
8030
|
for (index = start; index <= end; index++) {
|
|
8049
8031
|
values = {};
|
|
8050
8032
|
|
|
@@ -8057,13 +8039,6 @@ class PropertyBag {
|
|
|
8057
8039
|
}
|
|
8058
8040
|
}
|
|
8059
8041
|
|
|
8060
|
-
addBorder("borderLeft", leftBorders, index);
|
|
8061
|
-
addBorder("borderRight", rightBorders, index + this.rowCount);
|
|
8062
|
-
addBorder("borderTop", hBorders, index);
|
|
8063
|
-
if ((index + 1) % this.rowCount) {
|
|
8064
|
-
addBorder("borderBottom", hBorders, index + 1);
|
|
8065
|
-
}
|
|
8066
|
-
|
|
8067
8042
|
callback(values);
|
|
8068
8043
|
}
|
|
8069
8044
|
}
|
|
@@ -8074,6 +8049,15 @@ class PropertyBag {
|
|
|
8074
8049
|
}
|
|
8075
8050
|
}
|
|
8076
8051
|
}
|
|
8052
|
+
function intervals(start, end, rows) {
|
|
8053
|
+
var a = [];
|
|
8054
|
+
while (start <= end) {
|
|
8055
|
+
var lastrow = Math.min(end, rows * (1 + Math.floor(start / rows)) - 1);
|
|
8056
|
+
a.push([ start, lastrow ]);
|
|
8057
|
+
start = lastrow + 1;
|
|
8058
|
+
}
|
|
8059
|
+
return a;
|
|
8060
|
+
}
|
|
8077
8061
|
function cloneFormulaValue(x) {
|
|
8078
8062
|
x = x.clone();
|
|
8079
8063
|
x.value = x.value.deepClone(); // x.value is Formula or Validation
|
|
@@ -9331,7 +9315,7 @@ let Range$1 = class Range {
|
|
|
9331
9315
|
if (ref instanceof RangeRef && ref.width() > 1) {
|
|
9332
9316
|
ref = ref.clone();
|
|
9333
9317
|
ref.topLeft.col++;
|
|
9334
|
-
this._sheet.range(ref).
|
|
9318
|
+
this._sheet.range(ref).borderLeft(value);
|
|
9335
9319
|
}
|
|
9336
9320
|
}, this);
|
|
9337
9321
|
return this;
|
|
@@ -9342,7 +9326,7 @@ let Range$1 = class Range {
|
|
|
9342
9326
|
if (ref instanceof RangeRef && ref.height() > 1) {
|
|
9343
9327
|
ref = ref.clone();
|
|
9344
9328
|
ref.topLeft.row++;
|
|
9345
|
-
this._sheet.range(ref).
|
|
9329
|
+
this._sheet.range(ref).borderTop(value);
|
|
9346
9330
|
}
|
|
9347
9331
|
}, this);
|
|
9348
9332
|
return this;
|
|
@@ -12675,7 +12659,7 @@ function sameWeek(a, b) {
|
|
|
12675
12659
|
}
|
|
12676
12660
|
|
|
12677
12661
|
/* eslint-disable max-params */
|
|
12678
|
-
|
|
12662
|
+
|
|
12679
12663
|
|
|
12680
12664
|
// This is a “dynamic variable” (see Greenspun's 10th rule). It's
|
|
12681
12665
|
// bound to an array via sheet._saveModifiedFormulas (which see)
|
|
@@ -12930,11 +12914,32 @@ class Sheet extends Observable {
|
|
|
12930
12914
|
this._properties._resize(newRows, newCols);
|
|
12931
12915
|
this._sheetRef = this._grid.normalize(SHEETREF);
|
|
12932
12916
|
if (newRows > oldRows) {
|
|
12933
|
-
this.range(oldRows, 0, newRows - oldRows, newCols)
|
|
12917
|
+
this.range(oldRows, 0, newRows - oldRows, newCols)
|
|
12918
|
+
.clear({ clearAll: true, keepBorders: true })
|
|
12919
|
+
.borderLeft(null)
|
|
12920
|
+
.borderBottom(null)
|
|
12921
|
+
.borderRight(null);
|
|
12922
|
+
// The apparent nonsense with the borders is necessary so that we correctly sync the
|
|
12923
|
+
// borderTop of the first newly added row with the borderBottom of the row above
|
|
12924
|
+
// it. Borders are a PITA.
|
|
12925
|
+
for (let i = 0; i < newCols; ++i) {
|
|
12926
|
+
let r = this.range(oldRows - 1, i, 1, 1);
|
|
12927
|
+
r.borderBottom(r.borderBottom());
|
|
12928
|
+
}
|
|
12934
12929
|
this._filteredRows.value(oldRows, newRows - 1, false);
|
|
12935
12930
|
}
|
|
12936
12931
|
if (newCols > oldCols) {
|
|
12937
|
-
this.range(0, oldCols, newRows, newCols - oldCols)
|
|
12932
|
+
this.range(0, oldCols, newRows, newCols - oldCols)
|
|
12933
|
+
.clear({ clearAll: true, keepBorders: true })
|
|
12934
|
+
.borderTop(null)
|
|
12935
|
+
.borderRight(null)
|
|
12936
|
+
.borderBottom(null);
|
|
12937
|
+
// See comment above; this is about syncing borderLeft of the newly added column
|
|
12938
|
+
// with the borderRight of the last existing column.
|
|
12939
|
+
for (let i = 0; i < newRows; ++i) {
|
|
12940
|
+
let r = this.range(i, oldCols - 1, 1, 1);
|
|
12941
|
+
r.borderRight(r.borderRight());
|
|
12942
|
+
}
|
|
12938
12943
|
}
|
|
12939
12944
|
this.triggerChange({ layout: true });
|
|
12940
12945
|
}
|
|
@@ -15620,16 +15625,6 @@ function Borders() {
|
|
|
15620
15625
|
let horiz = new Container();
|
|
15621
15626
|
let vert = new Container();
|
|
15622
15627
|
function add(cell, sheet) {
|
|
15623
|
-
if (sheet) {
|
|
15624
|
-
// reset borders here; the propertybag doesn't keep track of merged cells :-/ this
|
|
15625
|
-
// is ugly, but the inner details of data storage have leaked everywhere anyway.
|
|
15626
|
-
let pb = sheet._properties;
|
|
15627
|
-
let grid = sheet._grid;
|
|
15628
|
-
cell.borderLeft = pb.get("vBorders", grid.index(cell.row, cell.col));
|
|
15629
|
-
cell.borderRight = pb.get("vBorders", grid.index(cell.row, cell.col + cell.colspan));
|
|
15630
|
-
cell.borderTop = pb.get("hBorders", grid.index(cell.row, cell.col));
|
|
15631
|
-
cell.borderBottom = pb.get("hBorders", grid.index(cell.row + cell.rowspan, cell.col));
|
|
15632
|
-
}
|
|
15633
15628
|
if (cell.borderLeft) {
|
|
15634
15629
|
addVert(cell.row, cell.col, cell.borderLeft,
|
|
15635
15630
|
cell.left, cell.top, cell.bottom);
|
|
@@ -15649,7 +15644,7 @@ function Borders() {
|
|
|
15649
15644
|
}
|
|
15650
15645
|
|
|
15651
15646
|
function isUnwantedProp(propName){
|
|
15652
|
-
return propName === '__proto__' || propName === 'constructor' || propName === 'prototype'
|
|
15647
|
+
return propName === '__proto__' || propName === 'constructor' || propName === 'prototype';
|
|
15653
15648
|
}
|
|
15654
15649
|
|
|
15655
15650
|
function addVert(row, col, border, x, top, bottom) {
|
|
@@ -21027,7 +21022,7 @@ async function readWorkbook(zip, workbook, progress) {
|
|
|
21027
21022
|
let name = attrs.name;
|
|
21028
21023
|
if (name !== "_xlnm._FilterDatabase") {
|
|
21029
21024
|
if (sheet) {
|
|
21030
|
-
name = "'" + sheet.replace(/\'/g, "\\'") + "'!" + name;
|
|
21025
|
+
name = "'" + sheet.replace(/\\/g, "\\\\").replace(/\'/g, "\\'") + "'!" + name;
|
|
21031
21026
|
}
|
|
21032
21027
|
withErrorLog(sheet, null, function() {
|
|
21033
21028
|
workbook.defineName(name, text, bool(attrs.hidden));
|
package/dist/index.js
CHANGED
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
if (/^[a-z_][a-z0-9_]*$/i.test(sheet)) {
|
|
23
23
|
return sheet;
|
|
24
24
|
}
|
|
25
|
-
return "'" + sheet.replace(/\x27/g, "\\'") + "'";
|
|
25
|
+
return "'" + sheet.replace(/\\/g, "\\\\").replace(/\x27/g, "\\'") + "'";
|
|
26
26
|
}
|
|
27
27
|
function displayRef(sheet, row, col, rel) {
|
|
28
28
|
let aa = "";
|
|
@@ -5722,7 +5722,7 @@
|
|
|
5722
5722
|
if (/^[a-z_][a-z0-9_]*$/i.test(val)) {
|
|
5723
5723
|
return val;
|
|
5724
5724
|
}
|
|
5725
|
-
return "'" + val.replace(/\x27/g, "\\'") + "'";
|
|
5725
|
+
return "'" + val.replace(/\\/g, "\\\\").replace(/\x27/g, "\\'") + "'";
|
|
5726
5726
|
}
|
|
5727
5727
|
}
|
|
5728
5728
|
|
|
@@ -7838,8 +7838,10 @@
|
|
|
7838
7838
|
{ property: ValueProperty, name: "value", value: null, sortable: true, serializable: true, depends: "format" },
|
|
7839
7839
|
{ property: Property, name: "formula", value: null, sortable: true, serializable: true },
|
|
7840
7840
|
{ property: Property, name: "background", value: null, sortable: true, serializable: true },
|
|
7841
|
-
{ property: JsonProperty, name: "
|
|
7842
|
-
{ property: JsonProperty, name: "
|
|
7841
|
+
{ property: JsonProperty, name: "borderLeft", value: null, sortable: false, serializable: true },
|
|
7842
|
+
{ property: JsonProperty, name: "borderRight", value: null, sortable: false, serializable: true },
|
|
7843
|
+
{ property: JsonProperty, name: "borderTop", value: null, sortable: false, serializable: true },
|
|
7844
|
+
{ property: JsonProperty, name: "borderBottom", value: null, sortable: false, serializable: true },
|
|
7843
7845
|
{ property: JsonProperty, name: "dBorders", value: null, sortable: false, serializable: true },
|
|
7844
7846
|
{ property: Property, name: "color", value: null, sortable: true, serializable: true },
|
|
7845
7847
|
{ property: Property, name: "fontFamily", value: null, sortable: true, serializable: true },
|
|
@@ -7938,44 +7940,41 @@
|
|
|
7938
7940
|
if (index === undefined) {
|
|
7939
7941
|
return this.lists[name];
|
|
7940
7942
|
}
|
|
7941
|
-
|
|
7942
|
-
switch (name) {
|
|
7943
|
-
case "borderRight":
|
|
7944
|
-
index += this.rowCount;
|
|
7945
|
-
/* falls through */
|
|
7946
|
-
case "borderLeft":
|
|
7947
|
-
name = "vBorders";
|
|
7948
|
-
break;
|
|
7949
|
-
|
|
7950
|
-
case "borderBottom":
|
|
7951
|
-
index++;
|
|
7952
|
-
/* falls through */
|
|
7953
|
-
case "borderTop":
|
|
7954
|
-
name = "hBorders";
|
|
7955
|
-
break;
|
|
7956
|
-
}
|
|
7957
7943
|
return index > this.cellCount ? null : this.properties[name].get(index);
|
|
7958
7944
|
}
|
|
7959
7945
|
|
|
7960
7946
|
set(name, start, end, value) {
|
|
7947
|
+
this._set(name, start, end, value);
|
|
7961
7948
|
switch (name) {
|
|
7962
|
-
|
|
7963
|
-
start
|
|
7964
|
-
end += this.rowCount;
|
|
7965
|
-
/* falls through */
|
|
7966
|
-
case "borderLeft":
|
|
7967
|
-
name = "vBorders";
|
|
7949
|
+
case "borderLeft":
|
|
7950
|
+
this._set("borderRight", start - this.rowCount, end - this.rowCount, value);
|
|
7968
7951
|
break;
|
|
7969
|
-
|
|
7970
|
-
|
|
7971
|
-
|
|
7972
|
-
|
|
7973
|
-
|
|
7974
|
-
|
|
7975
|
-
|
|
7952
|
+
case "borderRight":
|
|
7953
|
+
this._set("borderLeft", start + this.rowCount, end + this.rowCount, value);
|
|
7954
|
+
break;
|
|
7955
|
+
case "borderTop":
|
|
7956
|
+
intervals(start, end, this.rowCount).forEach((a) => {
|
|
7957
|
+
var start = a[0] - 1, end = a[1] - 1;
|
|
7958
|
+
if ((start + 1) % this.rowCount == 0) {
|
|
7959
|
+
start++;
|
|
7960
|
+
}
|
|
7961
|
+
this._set("borderBottom", start, end, value);
|
|
7962
|
+
});
|
|
7963
|
+
break;
|
|
7964
|
+
case "borderBottom":
|
|
7965
|
+
intervals(start, end, this.rowCount).forEach((a) => {
|
|
7966
|
+
var start = a[0] + 1, end = a[1] + 1;
|
|
7967
|
+
if (end % this.rowCount == 0) {
|
|
7968
|
+
end--;
|
|
7969
|
+
}
|
|
7970
|
+
this._set("borderTop", start, end, value);
|
|
7971
|
+
});
|
|
7976
7972
|
break;
|
|
7977
7973
|
}
|
|
7978
|
-
|
|
7974
|
+
}
|
|
7975
|
+
|
|
7976
|
+
_set(name, start, end, value) {
|
|
7977
|
+
if (start >= 0 && start <= end && end <= this.cellCount) {
|
|
7979
7978
|
this.properties[name].set(start, end, value);
|
|
7980
7979
|
}
|
|
7981
7980
|
}
|
|
@@ -7983,19 +7982,12 @@
|
|
|
7983
7982
|
fromJSON(index, value) {
|
|
7984
7983
|
for (let si = 0; si < this.specs.length; si++) {
|
|
7985
7984
|
let spec = this.specs[si];
|
|
7986
|
-
|
|
7987
7985
|
if (spec.serializable) {
|
|
7988
7986
|
if (value[spec.name] !== undefined) {
|
|
7989
7987
|
this.set(spec.name, index, index, value[spec.name], false);
|
|
7990
7988
|
}
|
|
7991
7989
|
}
|
|
7992
7990
|
}
|
|
7993
|
-
|
|
7994
|
-
[ "borderLeft", "borderRight", "borderTop", "borderBottom" ].forEach(function(b) {
|
|
7995
|
-
if (value[b] !== undefined) {
|
|
7996
|
-
this.set(b, index, index, value[b]);
|
|
7997
|
-
}
|
|
7998
|
-
}, this);
|
|
7999
7991
|
}
|
|
8000
7992
|
|
|
8001
7993
|
copy(sourceStart, sourceEnd, targetStart) {
|
|
@@ -8034,18 +8026,8 @@
|
|
|
8034
8026
|
|
|
8035
8027
|
forEach(start, end, callback) {
|
|
8036
8028
|
let iterators = this.iterators(start, end);
|
|
8037
|
-
let hBorders = this.iterator("hBorders", start, end + 1);
|
|
8038
|
-
let leftBorders = this.iterator("vBorders", start, end);
|
|
8039
|
-
let rightBorders = this.iterator("vBorders", start + this.rowCount, end + this.rowCount);
|
|
8040
8029
|
let values, index;
|
|
8041
8030
|
|
|
8042
|
-
function addBorder(name, iterator, index) {
|
|
8043
|
-
let val = iterator.at(index);
|
|
8044
|
-
if (val !== iterator.value) {
|
|
8045
|
-
values[name] = val;
|
|
8046
|
-
}
|
|
8047
|
-
}
|
|
8048
|
-
|
|
8049
8031
|
for (index = start; index <= end; index++) {
|
|
8050
8032
|
values = {};
|
|
8051
8033
|
|
|
@@ -8058,13 +8040,6 @@
|
|
|
8058
8040
|
}
|
|
8059
8041
|
}
|
|
8060
8042
|
|
|
8061
|
-
addBorder("borderLeft", leftBorders, index);
|
|
8062
|
-
addBorder("borderRight", rightBorders, index + this.rowCount);
|
|
8063
|
-
addBorder("borderTop", hBorders, index);
|
|
8064
|
-
if ((index + 1) % this.rowCount) {
|
|
8065
|
-
addBorder("borderBottom", hBorders, index + 1);
|
|
8066
|
-
}
|
|
8067
|
-
|
|
8068
8043
|
callback(values);
|
|
8069
8044
|
}
|
|
8070
8045
|
}
|
|
@@ -8075,6 +8050,15 @@
|
|
|
8075
8050
|
}
|
|
8076
8051
|
}
|
|
8077
8052
|
}
|
|
8053
|
+
function intervals(start, end, rows) {
|
|
8054
|
+
var a = [];
|
|
8055
|
+
while (start <= end) {
|
|
8056
|
+
var lastrow = Math.min(end, rows * (1 + Math.floor(start / rows)) - 1);
|
|
8057
|
+
a.push([ start, lastrow ]);
|
|
8058
|
+
start = lastrow + 1;
|
|
8059
|
+
}
|
|
8060
|
+
return a;
|
|
8061
|
+
}
|
|
8078
8062
|
function cloneFormulaValue(x) {
|
|
8079
8063
|
x = x.clone();
|
|
8080
8064
|
x.value = x.value.deepClone(); // x.value is Formula or Validation
|
|
@@ -9332,7 +9316,7 @@
|
|
|
9332
9316
|
if (ref instanceof RangeRef && ref.width() > 1) {
|
|
9333
9317
|
ref = ref.clone();
|
|
9334
9318
|
ref.topLeft.col++;
|
|
9335
|
-
this._sheet.range(ref).
|
|
9319
|
+
this._sheet.range(ref).borderLeft(value);
|
|
9336
9320
|
}
|
|
9337
9321
|
}, this);
|
|
9338
9322
|
return this;
|
|
@@ -9343,7 +9327,7 @@
|
|
|
9343
9327
|
if (ref instanceof RangeRef && ref.height() > 1) {
|
|
9344
9328
|
ref = ref.clone();
|
|
9345
9329
|
ref.topLeft.row++;
|
|
9346
|
-
this._sheet.range(ref).
|
|
9330
|
+
this._sheet.range(ref).borderTop(value);
|
|
9347
9331
|
}
|
|
9348
9332
|
}, this);
|
|
9349
9333
|
return this;
|
|
@@ -12676,7 +12660,7 @@
|
|
|
12676
12660
|
}
|
|
12677
12661
|
|
|
12678
12662
|
/* eslint-disable max-params */
|
|
12679
|
-
|
|
12663
|
+
|
|
12680
12664
|
|
|
12681
12665
|
// This is a “dynamic variable” (see Greenspun's 10th rule). It's
|
|
12682
12666
|
// bound to an array via sheet._saveModifiedFormulas (which see)
|
|
@@ -12931,11 +12915,32 @@
|
|
|
12931
12915
|
this._properties._resize(newRows, newCols);
|
|
12932
12916
|
this._sheetRef = this._grid.normalize(SHEETREF);
|
|
12933
12917
|
if (newRows > oldRows) {
|
|
12934
|
-
this.range(oldRows, 0, newRows - oldRows, newCols)
|
|
12918
|
+
this.range(oldRows, 0, newRows - oldRows, newCols)
|
|
12919
|
+
.clear({ clearAll: true, keepBorders: true })
|
|
12920
|
+
.borderLeft(null)
|
|
12921
|
+
.borderBottom(null)
|
|
12922
|
+
.borderRight(null);
|
|
12923
|
+
// The apparent nonsense with the borders is necessary so that we correctly sync the
|
|
12924
|
+
// borderTop of the first newly added row with the borderBottom of the row above
|
|
12925
|
+
// it. Borders are a PITA.
|
|
12926
|
+
for (let i = 0; i < newCols; ++i) {
|
|
12927
|
+
let r = this.range(oldRows - 1, i, 1, 1);
|
|
12928
|
+
r.borderBottom(r.borderBottom());
|
|
12929
|
+
}
|
|
12935
12930
|
this._filteredRows.value(oldRows, newRows - 1, false);
|
|
12936
12931
|
}
|
|
12937
12932
|
if (newCols > oldCols) {
|
|
12938
|
-
this.range(0, oldCols, newRows, newCols - oldCols)
|
|
12933
|
+
this.range(0, oldCols, newRows, newCols - oldCols)
|
|
12934
|
+
.clear({ clearAll: true, keepBorders: true })
|
|
12935
|
+
.borderTop(null)
|
|
12936
|
+
.borderRight(null)
|
|
12937
|
+
.borderBottom(null);
|
|
12938
|
+
// See comment above; this is about syncing borderLeft of the newly added column
|
|
12939
|
+
// with the borderRight of the last existing column.
|
|
12940
|
+
for (let i = 0; i < newRows; ++i) {
|
|
12941
|
+
let r = this.range(i, oldCols - 1, 1, 1);
|
|
12942
|
+
r.borderRight(r.borderRight());
|
|
12943
|
+
}
|
|
12939
12944
|
}
|
|
12940
12945
|
this.triggerChange({ layout: true });
|
|
12941
12946
|
}
|
|
@@ -15621,16 +15626,6 @@
|
|
|
15621
15626
|
let horiz = new Container();
|
|
15622
15627
|
let vert = new Container();
|
|
15623
15628
|
function add(cell, sheet) {
|
|
15624
|
-
if (sheet) {
|
|
15625
|
-
// reset borders here; the propertybag doesn't keep track of merged cells :-/ this
|
|
15626
|
-
// is ugly, but the inner details of data storage have leaked everywhere anyway.
|
|
15627
|
-
let pb = sheet._properties;
|
|
15628
|
-
let grid = sheet._grid;
|
|
15629
|
-
cell.borderLeft = pb.get("vBorders", grid.index(cell.row, cell.col));
|
|
15630
|
-
cell.borderRight = pb.get("vBorders", grid.index(cell.row, cell.col + cell.colspan));
|
|
15631
|
-
cell.borderTop = pb.get("hBorders", grid.index(cell.row, cell.col));
|
|
15632
|
-
cell.borderBottom = pb.get("hBorders", grid.index(cell.row + cell.rowspan, cell.col));
|
|
15633
|
-
}
|
|
15634
15629
|
if (cell.borderLeft) {
|
|
15635
15630
|
addVert(cell.row, cell.col, cell.borderLeft,
|
|
15636
15631
|
cell.left, cell.top, cell.bottom);
|
|
@@ -15650,7 +15645,7 @@
|
|
|
15650
15645
|
}
|
|
15651
15646
|
|
|
15652
15647
|
function isUnwantedProp(propName){
|
|
15653
|
-
return propName === '__proto__' || propName === 'constructor' || propName === 'prototype'
|
|
15648
|
+
return propName === '__proto__' || propName === 'constructor' || propName === 'prototype';
|
|
15654
15649
|
}
|
|
15655
15650
|
|
|
15656
15651
|
function addVert(row, col, border, x, top, bottom) {
|
|
@@ -21028,7 +21023,7 @@
|
|
|
21028
21023
|
let name = attrs.name;
|
|
21029
21024
|
if (name !== "_xlnm._FilterDatabase") {
|
|
21030
21025
|
if (sheet) {
|
|
21031
|
-
name = "'" + sheet.replace(/\'/g, "\\'") + "'!" + name;
|
|
21026
|
+
name = "'" + sheet.replace(/\\/g, "\\\\").replace(/\'/g, "\\'") + "'!" + name;
|
|
21032
21027
|
}
|
|
21033
21028
|
withErrorLog(sheet, null, function() {
|
|
21034
21029
|
workbook.defineName(name, text, bool(attrs.hidden));
|