@progress/kendo-spreadsheet-common 1.2.6-develop.1 → 1.2.6-develop.2
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 +54 -270
- package/dist/index.js +54 -270
- package/package.json +6 -4
package/dist/index-esm.js
CHANGED
|
@@ -3,14 +3,12 @@ import { dayOfWeek, getDate, addDays, firstDayOfMonth } from '@progress/kendo-da
|
|
|
3
3
|
import { browser } from '@progress/kendo-common';
|
|
4
4
|
import JSZip from '@progress/jszip-esm';
|
|
5
5
|
|
|
6
|
-
/* eslint-disable camelcase */
|
|
7
|
-
/* eslint-disable no-nested-ternary */
|
|
8
6
|
/* eslint-disable max-params */
|
|
9
7
|
/* eslint-disable no-unused-vars */
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
14
12
|
|
|
15
13
|
// WARNING
|
|
16
14
|
// == into === to make JSHint happy will break functionality.
|
|
@@ -791,7 +789,7 @@ class UnionRef extends Ref {
|
|
|
791
789
|
return NULLREF;
|
|
792
790
|
}
|
|
793
791
|
simplify() {
|
|
794
|
-
|
|
792
|
+
|
|
795
793
|
let u = new UnionRef(this.refs.reduce(function(a, ref) {
|
|
796
794
|
ref = ref.simplify();
|
|
797
795
|
if (ref !== NULLREF) {
|
|
@@ -944,7 +942,6 @@ SHEETREF.print = function() {
|
|
|
944
942
|
return "#SHEET";
|
|
945
943
|
};
|
|
946
944
|
|
|
947
|
-
/* eslint-disable key-spacing */
|
|
948
945
|
const messages = {};
|
|
949
946
|
messages.view = {
|
|
950
947
|
nameBox: "Name Box",
|
|
@@ -1002,6 +999,7 @@ const options = {
|
|
|
1002
999
|
fileName: "Workbook.xlsx",
|
|
1003
1000
|
forceProxy: false,
|
|
1004
1001
|
proxyURL: "",
|
|
1002
|
+
applyProtection: false,
|
|
1005
1003
|
},
|
|
1006
1004
|
messages: messages,
|
|
1007
1005
|
pdf: {
|
|
@@ -1078,8 +1076,6 @@ const keys = {
|
|
|
1078
1076
|
R: 82
|
|
1079
1077
|
};
|
|
1080
1078
|
|
|
1081
|
-
/* eslint-disable no-nested-ternary */
|
|
1082
|
-
/* eslint-disable no-param-reassign */
|
|
1083
1079
|
/* eslint-disable no-prototype-builtins */
|
|
1084
1080
|
|
|
1085
1081
|
const RX_UNICODE_LETTER = new RegExp("[\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B2\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA7AD\\uA7B0\\uA7B1\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB5F\\uAB64\\uAB65\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]");
|
|
@@ -1343,7 +1339,7 @@ const insertAfter = function(newElement, after) {
|
|
|
1343
1339
|
const _activeElement$1 = function() {
|
|
1344
1340
|
try {
|
|
1345
1341
|
return document.activeElement;
|
|
1346
|
-
} catch
|
|
1342
|
+
} catch {
|
|
1347
1343
|
return document.documentElement.activeElement;
|
|
1348
1344
|
}
|
|
1349
1345
|
};
|
|
@@ -1408,9 +1404,7 @@ function createKendoObj(calc, CalcError, Ref, CellRef, RangeRef) {
|
|
|
1408
1404
|
}
|
|
1409
1405
|
|
|
1410
1406
|
/* eslint-disable max-params */
|
|
1411
|
-
|
|
1412
|
-
/* eslint-disable no-unused-vars */
|
|
1413
|
-
|
|
1407
|
+
|
|
1414
1408
|
|
|
1415
1409
|
let calc = {
|
|
1416
1410
|
runtime: {
|
|
@@ -2916,8 +2910,6 @@ calc.runtime.defineAlias = defineAlias$1;
|
|
|
2916
2910
|
calc.runtime.InputStream = InputStream;
|
|
2917
2911
|
calc.runtime.ParseError = ParseError;
|
|
2918
2912
|
|
|
2919
|
-
/* eslint-disable indent */
|
|
2920
|
-
|
|
2921
2913
|
function Node() {
|
|
2922
2914
|
this.node = null;
|
|
2923
2915
|
}
|
|
@@ -4136,30 +4128,6 @@ const formatting = {
|
|
|
4136
4128
|
makeDateFormat: makeDateFormat
|
|
4137
4129
|
};
|
|
4138
4130
|
|
|
4139
|
-
/* eslint-disable no-nested-ternary */
|
|
4140
|
-
/* eslint-disable space-infix-ops */
|
|
4141
|
-
/* eslint-disable indent */
|
|
4142
|
-
/* eslint-disable no-empty */
|
|
4143
|
-
/* eslint-disable no-loop-func */
|
|
4144
|
-
/* eslint-disable consistent-return */
|
|
4145
|
-
/* eslint-disable block-scoped-var */
|
|
4146
|
-
/* eslint-disable no-redeclare */
|
|
4147
|
-
/* eslint-disable no-var */
|
|
4148
|
-
/* eslint-disable eqeqeq */
|
|
4149
|
-
/* eslint-disable complexity */
|
|
4150
|
-
/* eslint-disable max-params */
|
|
4151
|
-
/* eslint-disable no-implicit-coercion */
|
|
4152
|
-
/* eslint-disable key-spacing */
|
|
4153
|
-
/* eslint-disable default-case */
|
|
4154
|
-
/* eslint-disable camelcase */
|
|
4155
|
-
/* eslint-disable brace-style */
|
|
4156
|
-
/* eslint-disable no-else-return */
|
|
4157
|
-
/* eslint-disable no-constant-condition */
|
|
4158
|
-
/* eslint-disable no-param-reassign */
|
|
4159
|
-
/* eslint-disable space-before-blocks */
|
|
4160
|
-
/* eslint-disable no-unused-labels */
|
|
4161
|
-
|
|
4162
|
-
|
|
4163
4131
|
const kendo = createKendoObj(calc, CalcError, Ref, CellRef, RangeRef);
|
|
4164
4132
|
calc.kendo = kendo; // XXX
|
|
4165
4133
|
calc.formatting = formatting;
|
|
@@ -5765,8 +5733,6 @@ class ValidationFormulaContext extends FormulaContext {
|
|
|
5765
5733
|
|
|
5766
5734
|
calc.ValidationFormulaContext = ValidationFormulaContext;
|
|
5767
5735
|
|
|
5768
|
-
/* eslint-disable no-param-reassign */
|
|
5769
|
-
|
|
5770
5736
|
let KEY_NAMES$1 = {
|
|
5771
5737
|
8: 'backspace',
|
|
5772
5738
|
9: 'tab',
|
|
@@ -5963,14 +5929,6 @@ class EventListener {
|
|
|
5963
5929
|
}
|
|
5964
5930
|
}
|
|
5965
5931
|
|
|
5966
|
-
/* eslint-disable default-case */
|
|
5967
|
-
/* eslint-disable no-else-return */
|
|
5968
|
-
/* eslint-disable key-spacing */
|
|
5969
|
-
/* eslint-disable eqeqeq */
|
|
5970
|
-
/* eslint-disable brace-style */
|
|
5971
|
-
/* eslint-disable consistent-return */
|
|
5972
|
-
|
|
5973
|
-
|
|
5974
5932
|
let alphaNumRegExp = /:alphanum$/;
|
|
5975
5933
|
|
|
5976
5934
|
let ACTIONS = {
|
|
@@ -7812,11 +7770,6 @@ class SparseRangeList extends RangeList {
|
|
|
7812
7770
|
}
|
|
7813
7771
|
}
|
|
7814
7772
|
|
|
7815
|
-
/* eslint-disable default-case */
|
|
7816
|
-
/* eslint-disable camelcase */
|
|
7817
|
-
/* eslint-disable no-param-reassign */
|
|
7818
|
-
|
|
7819
|
-
|
|
7820
7773
|
class Property {
|
|
7821
7774
|
constructor(list) {
|
|
7822
7775
|
this.list = list;
|
|
@@ -8138,12 +8091,6 @@ const ALL_PROPERTIES = propertyBagSpec.reduce(function(a, spec) {
|
|
|
8138
8091
|
return a;
|
|
8139
8092
|
}, [ "borderTop", "borderRight", "borderBottom", "borderLeft" ]);
|
|
8140
8093
|
|
|
8141
|
-
/* eslint-disable no-param-reassign */
|
|
8142
|
-
/* eslint-disable no-useless-call */
|
|
8143
|
-
/* eslint-disable camelcase */
|
|
8144
|
-
/* eslint-disable default-case */
|
|
8145
|
-
|
|
8146
|
-
|
|
8147
8094
|
function compileValidation(sheet, row, col, validation) {
|
|
8148
8095
|
let validationHandler;
|
|
8149
8096
|
let comparer;
|
|
@@ -8476,29 +8423,6 @@ validationExport.validationComparers = {
|
|
|
8476
8423
|
};
|
|
8477
8424
|
validationExport.Validation = Validation;
|
|
8478
8425
|
|
|
8479
|
-
/* eslint-disable no-nested-ternary */
|
|
8480
|
-
/* eslint-disable curly */
|
|
8481
|
-
/* eslint-disable space-infix-ops */
|
|
8482
|
-
/* eslint-disable indent */
|
|
8483
|
-
/* eslint-disable no-empty */
|
|
8484
|
-
/* eslint-disable no-loop-func */
|
|
8485
|
-
/* eslint-disable consistent-return */
|
|
8486
|
-
/* eslint-disable block-scoped-var */
|
|
8487
|
-
/* eslint-disable no-redeclare */
|
|
8488
|
-
/* eslint-disable no-var */
|
|
8489
|
-
/* eslint-disable eqeqeq */
|
|
8490
|
-
/* eslint-disable complexity */
|
|
8491
|
-
/* eslint-disable max-params */
|
|
8492
|
-
/* eslint-disable no-implicit-coercion */
|
|
8493
|
-
/* eslint-disable key-spacing */
|
|
8494
|
-
/* eslint-disable default-case */
|
|
8495
|
-
/* eslint-disable camelcase */
|
|
8496
|
-
/* eslint-disable brace-style */
|
|
8497
|
-
/* eslint-disable no-else-return */
|
|
8498
|
-
/* eslint-disable no-constant-condition */
|
|
8499
|
-
/* eslint-disable no-param-reassign */
|
|
8500
|
-
/* eslint-disable space-before-blocks */
|
|
8501
|
-
|
|
8502
8426
|
const { measureText } = drawing.util;
|
|
8503
8427
|
|
|
8504
8428
|
let PROPERTIES = [
|
|
@@ -9284,7 +9208,7 @@ let Range$1 = class Range {
|
|
|
9284
9208
|
} else {
|
|
9285
9209
|
range.input(cellState.value);
|
|
9286
9210
|
}
|
|
9287
|
-
} catch
|
|
9211
|
+
} catch {
|
|
9288
9212
|
range._set("value", cellState.value);
|
|
9289
9213
|
}
|
|
9290
9214
|
} else {
|
|
@@ -9792,8 +9716,6 @@ function transpose(a) {
|
|
|
9792
9716
|
return t;
|
|
9793
9717
|
}
|
|
9794
9718
|
|
|
9795
|
-
/* eslint-disable no-loop-func */
|
|
9796
|
-
/* eslint-disable no-param-reassign */
|
|
9797
9719
|
const STRING$1 = 'string';
|
|
9798
9720
|
const FUNCTION = 'function';
|
|
9799
9721
|
|
|
@@ -9983,12 +9905,10 @@ class Widget extends Observable {
|
|
|
9983
9905
|
}
|
|
9984
9906
|
}
|
|
9985
9907
|
|
|
9986
|
-
/* eslint-disable no-param-reassign */
|
|
9987
|
-
|
|
9988
9908
|
const _activeElement = function() {
|
|
9989
9909
|
try {
|
|
9990
9910
|
return document.activeElement;
|
|
9991
|
-
} catch
|
|
9911
|
+
} catch {
|
|
9992
9912
|
return document.documentElement.activeElement;
|
|
9993
9913
|
}
|
|
9994
9914
|
};
|
|
@@ -10406,11 +10326,11 @@ class Axis {
|
|
|
10406
10326
|
return { values: this.values.iterator(0, 0), offset: 0 };
|
|
10407
10327
|
}
|
|
10408
10328
|
let startOffset = start - startSegment.start;
|
|
10409
|
-
|
|
10329
|
+
|
|
10410
10330
|
let startIndex = ((startOffset / startSegment.value.value) >> 0) + startSegment.value.start;
|
|
10411
10331
|
let offset = startOffset - (startIndex - startSegment.value.start) * startSegment.value.value;
|
|
10412
10332
|
let endOffset = end - endSegment.start;
|
|
10413
|
-
|
|
10333
|
+
|
|
10414
10334
|
let endIndex = ((endOffset / endSegment.value.value) >> 0) + endSegment.value.start;
|
|
10415
10335
|
if (endIndex > endSegment.value.end) {
|
|
10416
10336
|
endIndex = endSegment.value.end;
|
|
@@ -10557,9 +10477,6 @@ class PaneAxis {
|
|
|
10557
10477
|
}
|
|
10558
10478
|
}
|
|
10559
10479
|
|
|
10560
|
-
/* eslint-disable no-param-reassign */
|
|
10561
|
-
/* eslint-disable camelcase */
|
|
10562
|
-
|
|
10563
10480
|
class Rectangle {
|
|
10564
10481
|
constructor(left, top, width, height) {
|
|
10565
10482
|
this.left = left;
|
|
@@ -10945,11 +10862,6 @@ Sorter.descendingComparer = function(a, b) {
|
|
|
10945
10862
|
return Sorter.ascendingComparer(b, a);
|
|
10946
10863
|
};
|
|
10947
10864
|
|
|
10948
|
-
/* eslint-disable no-constant-condition */
|
|
10949
|
-
/* eslint-disable key-spacing */
|
|
10950
|
-
/* eslint-disable no-param-reassign */
|
|
10951
|
-
|
|
10952
|
-
|
|
10953
10865
|
class AxisManager {
|
|
10954
10866
|
constructor(sheet) {
|
|
10955
10867
|
this._sheet = sheet;
|
|
@@ -11181,8 +11093,6 @@ class AxisManager {
|
|
|
11181
11093
|
}
|
|
11182
11094
|
}
|
|
11183
11095
|
|
|
11184
|
-
/* eslint-disable no-param-reassign */
|
|
11185
|
-
|
|
11186
11096
|
class AutoFillCalculator {
|
|
11187
11097
|
constructor(grid) {
|
|
11188
11098
|
this._grid = grid;
|
|
@@ -11258,23 +11168,6 @@ class AutoFillCalculator {
|
|
|
11258
11168
|
}
|
|
11259
11169
|
}
|
|
11260
11170
|
|
|
11261
|
-
/* eslint-disable max-params */
|
|
11262
|
-
/* eslint-disable no-empty */
|
|
11263
|
-
/* eslint-disable no-loop-func */
|
|
11264
|
-
/* eslint-disable consistent-return */
|
|
11265
|
-
/* eslint-disable block-scoped-var */
|
|
11266
|
-
/* eslint-disable no-redeclare */
|
|
11267
|
-
/* eslint-disable no-var */
|
|
11268
|
-
/* eslint-disable eqeqeq */
|
|
11269
|
-
/* eslint-disable complexity */
|
|
11270
|
-
/* eslint-disable no-implicit-coercion */
|
|
11271
|
-
/* eslint-disable brace-style */
|
|
11272
|
-
/* eslint-disable key-spacing */
|
|
11273
|
-
/* eslint-disable no-else-return */
|
|
11274
|
-
/* eslint-disable default-case */
|
|
11275
|
-
/* eslint-disable no-param-reassign */
|
|
11276
|
-
|
|
11277
|
-
|
|
11278
11171
|
class EdgeNavigator {
|
|
11279
11172
|
constructor(field, axis, rangeGetter, union) {
|
|
11280
11173
|
this.rangeGetter = rangeGetter;
|
|
@@ -11947,23 +11840,6 @@ function makeWordMovement(sheet, pivot, isCol) {
|
|
|
11947
11840
|
};
|
|
11948
11841
|
}
|
|
11949
11842
|
|
|
11950
|
-
/* eslint-disable max-params */
|
|
11951
|
-
/* eslint-disable no-empty */
|
|
11952
|
-
/* eslint-disable no-loop-func */
|
|
11953
|
-
/* eslint-disable consistent-return */
|
|
11954
|
-
/* eslint-disable block-scoped-var */
|
|
11955
|
-
/* eslint-disable no-redeclare */
|
|
11956
|
-
/* eslint-disable no-var */
|
|
11957
|
-
/* eslint-disable eqeqeq */
|
|
11958
|
-
/* eslint-disable complexity */
|
|
11959
|
-
/* eslint-disable no-implicit-coercion */
|
|
11960
|
-
/* eslint-disable brace-style */
|
|
11961
|
-
/* eslint-disable key-spacing */
|
|
11962
|
-
/* eslint-disable no-else-return */
|
|
11963
|
-
/* eslint-disable default-case */
|
|
11964
|
-
/* eslint-disable no-param-reassign */
|
|
11965
|
-
|
|
11966
|
-
|
|
11967
11843
|
function numberToDate(val) {
|
|
11968
11844
|
return val == null ? null : calc.runtime.serialToDate(val);
|
|
11969
11845
|
}
|
|
@@ -12223,12 +12099,6 @@ const kendoDate = (function() {
|
|
|
12223
12099
|
};
|
|
12224
12100
|
})();
|
|
12225
12101
|
|
|
12226
|
-
/* eslint-disable no-var */
|
|
12227
|
-
/* eslint-disable no-implicit-coercion */
|
|
12228
|
-
/* eslint-disable no-param-reassign */
|
|
12229
|
-
/* eslint-disable no-loop-func */
|
|
12230
|
-
|
|
12231
|
-
|
|
12232
12102
|
const logic = {
|
|
12233
12103
|
or: {
|
|
12234
12104
|
concat: (acc, fn) => (a) => acc(a) || fn(a),
|
|
@@ -12356,23 +12226,6 @@ const transformCompositeFilter = function (filter) {
|
|
|
12356
12226
|
.reduce(combiner.concat, combiner.identity);
|
|
12357
12227
|
};
|
|
12358
12228
|
|
|
12359
|
-
/* eslint-disable max-params */
|
|
12360
|
-
/* eslint-disable no-empty */
|
|
12361
|
-
/* eslint-disable no-loop-func */
|
|
12362
|
-
/* eslint-disable consistent-return */
|
|
12363
|
-
/* eslint-disable block-scoped-var */
|
|
12364
|
-
/* eslint-disable no-redeclare */
|
|
12365
|
-
/* eslint-disable no-var */
|
|
12366
|
-
/* eslint-disable eqeqeq */
|
|
12367
|
-
/* eslint-disable complexity */
|
|
12368
|
-
/* eslint-disable no-implicit-coercion */
|
|
12369
|
-
/* eslint-disable brace-style */
|
|
12370
|
-
/* eslint-disable key-spacing */
|
|
12371
|
-
/* eslint-disable no-else-return */
|
|
12372
|
-
/* eslint-disable default-case */
|
|
12373
|
-
/* eslint-disable no-param-reassign */
|
|
12374
|
-
|
|
12375
|
-
|
|
12376
12229
|
let filtersObj = {};
|
|
12377
12230
|
const dateToSerial$1 = calc.runtime.dateToSerial;
|
|
12378
12231
|
const serialToDate$1 = calc.runtime.serialToDate;
|
|
@@ -12822,21 +12675,7 @@ function sameWeek(a, b) {
|
|
|
12822
12675
|
}
|
|
12823
12676
|
|
|
12824
12677
|
/* eslint-disable max-params */
|
|
12825
|
-
|
|
12826
|
-
/* eslint-disable no-loop-func */
|
|
12827
|
-
/* eslint-disable consistent-return */
|
|
12828
|
-
/* eslint-disable block-scoped-var */
|
|
12829
|
-
/* eslint-disable no-redeclare */
|
|
12830
|
-
/* eslint-disable no-var */
|
|
12831
|
-
/* eslint-disable eqeqeq */
|
|
12832
|
-
/* eslint-disable complexity */
|
|
12833
|
-
/* eslint-disable no-implicit-coercion */
|
|
12834
|
-
/* eslint-disable brace-style */
|
|
12835
|
-
/* eslint-disable key-spacing */
|
|
12836
|
-
/* eslint-disable no-else-return */
|
|
12837
|
-
/* eslint-disable default-case */
|
|
12838
|
-
/* eslint-disable no-param-reassign */
|
|
12839
|
-
|
|
12678
|
+
|
|
12840
12679
|
|
|
12841
12680
|
// This is a “dynamic variable” (see Greenspun's 10th rule). It's
|
|
12842
12681
|
// bound to an array via sheet._saveModifiedFormulas (which see)
|
|
@@ -14909,8 +14748,6 @@ Drawing.fromJSON = function(args) {
|
|
|
14909
14748
|
return new Drawing(args);
|
|
14910
14749
|
};
|
|
14911
14750
|
|
|
14912
|
-
/* eslint-disable no-param-reassign */
|
|
14913
|
-
/* eslint-disable key-spacing */
|
|
14914
14751
|
let PAPER_SIZE = {
|
|
14915
14752
|
a0 : [ 2383.94 , 3370.39 ],
|
|
14916
14753
|
a1 : [ 1683.78 , 2383.94 ],
|
|
@@ -15040,15 +14877,6 @@ function getPaperOptions(getOption) {
|
|
|
15040
14877
|
return { paperSize: paperSize, margin: margin };
|
|
15041
14878
|
}
|
|
15042
14879
|
|
|
15043
|
-
/* eslint-disable no-nested-ternary */
|
|
15044
|
-
/* eslint-disable default-case */
|
|
15045
|
-
/* eslint-disable no-implicit-coercion */
|
|
15046
|
-
/* eslint-disable no-else-return */
|
|
15047
|
-
/* eslint-disable key-spacing */
|
|
15048
|
-
/* eslint-disable eqeqeq */
|
|
15049
|
-
/* eslint-disable no-param-reassign */
|
|
15050
|
-
|
|
15051
|
-
|
|
15052
14880
|
let GUIDELINE_WIDTH = 0.8;
|
|
15053
14881
|
|
|
15054
14882
|
// This takes a list of row heights and the page height, and
|
|
@@ -16084,6 +15912,7 @@ const draw = { Borders, doLayout, applyIndent };
|
|
|
16084
15912
|
|
|
16085
15913
|
const RESIZE_HANDLE_WIDTH = 7;
|
|
16086
15914
|
const EDIT_BUTTON_WIDTH = 20;
|
|
15915
|
+
const CELL_PADDING_RIGHT = 3;
|
|
16087
15916
|
const DOT = ".";
|
|
16088
15917
|
|
|
16089
15918
|
const viewClassNames = {
|
|
@@ -16406,7 +16235,7 @@ class Pane {
|
|
|
16406
16235
|
children.push(this.renderData(args));
|
|
16407
16236
|
|
|
16408
16237
|
if (!sheet._activeDrawing) {
|
|
16409
|
-
children.push(this.renderSelection(
|
|
16238
|
+
children.push(this.renderSelection());
|
|
16410
16239
|
}
|
|
16411
16240
|
|
|
16412
16241
|
children.push(this.renderAutoFill());
|
|
@@ -16571,6 +16400,7 @@ class Pane {
|
|
|
16571
16400
|
let cls = null;
|
|
16572
16401
|
let absRow = cell.row + view.ref.topLeft.row;
|
|
16573
16402
|
let absCol = cell.col + view.ref.topLeft.col;
|
|
16403
|
+
let hasButton = false;
|
|
16574
16404
|
if (sheet._activeDrawing) {
|
|
16575
16405
|
let ref = sheet._activeDrawing.topLeftCell;
|
|
16576
16406
|
if (ref && ref.row === absRow && ref.col === absCol) {
|
|
@@ -16585,10 +16415,16 @@ class Pane {
|
|
|
16585
16415
|
if (sheet.singleCellSelection()) {
|
|
16586
16416
|
cls.push(Pane.classNames.single);
|
|
16587
16417
|
}
|
|
16418
|
+
if (this._renderCustomEditorButton(cont.children, cell)) {
|
|
16419
|
+
hasButton = true;
|
|
16420
|
+
}
|
|
16588
16421
|
cls = cls.join(" ");
|
|
16589
16422
|
}
|
|
16590
16423
|
borders.add(cell);
|
|
16591
|
-
drawCell(cont.children, cell, cls, showGridLines);
|
|
16424
|
+
var cellDiv = drawCell(cont.children, cell, cls, showGridLines);
|
|
16425
|
+
if (hasButton) {
|
|
16426
|
+
cellDiv.attr.style.paddingRight = (EDIT_BUTTON_WIDTH + CELL_PADDING_RIGHT) + "px";
|
|
16427
|
+
}
|
|
16592
16428
|
if (cell.comment && sheet._commentRef &&
|
|
16593
16429
|
absRow === sheet._commentRef.row && absCol === sheet._commentRef.col) {
|
|
16594
16430
|
let ttOffset = 4;
|
|
@@ -16803,12 +16639,11 @@ class Pane {
|
|
|
16803
16639
|
|
|
16804
16640
|
}
|
|
16805
16641
|
|
|
16806
|
-
renderSelection(
|
|
16642
|
+
renderSelection() {
|
|
16807
16643
|
let classNames = Pane.classNames;
|
|
16808
16644
|
let selections = [];
|
|
16809
16645
|
let selectionClasses = [classNames.selection];
|
|
16810
16646
|
let sheet = this._sheet;
|
|
16811
|
-
let activeCell = sheet.activeCell().toRangeRef();
|
|
16812
16647
|
let selection = sheet.select();
|
|
16813
16648
|
|
|
16814
16649
|
selectionClasses = selectionClasses.concat(this._activeFormulaColor());
|
|
@@ -16827,8 +16662,6 @@ class Pane {
|
|
|
16827
16662
|
}
|
|
16828
16663
|
}.bind(this));
|
|
16829
16664
|
|
|
16830
|
-
this._renderCustomEditorButton(selections, activeCell, scroller);
|
|
16831
|
-
|
|
16832
16665
|
return dom.element("div", { className: classNames.selectionWrapper }, selections);
|
|
16833
16666
|
}
|
|
16834
16667
|
|
|
@@ -16887,42 +16720,26 @@ class Pane {
|
|
|
16887
16720
|
return div;
|
|
16888
16721
|
}
|
|
16889
16722
|
|
|
16890
|
-
_renderCustomEditorButton(collection,
|
|
16723
|
+
_renderCustomEditorButton(collection, cell) {
|
|
16891
16724
|
let self = this;
|
|
16892
|
-
let sheet =
|
|
16893
|
-
let view = self._currentView;
|
|
16894
|
-
let columnCount = self._grid.columns._axis._count;
|
|
16725
|
+
let sheet = this._sheet;
|
|
16895
16726
|
let ed = sheet.activeCellCustomEditor();
|
|
16896
|
-
|
|
16897
|
-
|
|
16898
|
-
let
|
|
16899
|
-
|
|
16900
|
-
|
|
16901
|
-
|
|
16902
|
-
|
|
16903
|
-
|
|
16904
|
-
|
|
16905
|
-
let btnClass = "k-button k-button-md k-rounded-md k-button-solid k-button-solid-base k-spreadsheet-editor-button";
|
|
16906
|
-
let isLastColumn = col === columnCount - 1 || self._buttonOutOfVisiblePane(row, col, scroller);
|
|
16907
|
-
if (isLastColumn) {
|
|
16908
|
-
btnClass += " k-spreadsheet-last-column";
|
|
16909
|
-
}
|
|
16910
|
-
self._editorInLastColumn = isLastColumn;
|
|
16911
|
-
let btn = dom.element("div", {
|
|
16912
|
-
className: btnClass,
|
|
16913
|
-
style: {
|
|
16914
|
-
left : (cell.left + (isLastColumn ? 0 : cell.width)) + "px",
|
|
16915
|
-
top : cell.top + "px",
|
|
16916
|
-
height : cell.height + "px"
|
|
16917
|
-
}
|
|
16918
|
-
});
|
|
16919
|
-
|
|
16920
|
-
if (ed.icon) {
|
|
16921
|
-
btn.children.push(self.icon(ed.icon));
|
|
16727
|
+
if (ed) {
|
|
16728
|
+
let btnClass = "k-button k-button-md k-rounded-md k-button-solid k-button-solid-base k-spreadsheet-editor-button";
|
|
16729
|
+
let btn = dom.element("div", {
|
|
16730
|
+
className: btnClass,
|
|
16731
|
+
style: {
|
|
16732
|
+
left : (cell.left + cell.width - EDIT_BUTTON_WIDTH) + "px",
|
|
16733
|
+
top : (cell.top + 1) + "px",
|
|
16734
|
+
height : (cell.height - 2) + "px",
|
|
16735
|
+
width : EDIT_BUTTON_WIDTH + "px",
|
|
16922
16736
|
}
|
|
16923
|
-
|
|
16924
|
-
collection.push(btn);
|
|
16925
16737
|
});
|
|
16738
|
+
if (ed.icon) {
|
|
16739
|
+
btn.children.push(self.icon(ed.icon));
|
|
16740
|
+
}
|
|
16741
|
+
collection.push(btn);
|
|
16742
|
+
return true;
|
|
16926
16743
|
}
|
|
16927
16744
|
}
|
|
16928
16745
|
|
|
@@ -16994,13 +16811,6 @@ function drawingResizeHandles(container) {
|
|
|
16994
16811
|
});
|
|
16995
16812
|
}
|
|
16996
16813
|
|
|
16997
|
-
/* eslint-disable no-unused-vars */
|
|
16998
|
-
/* eslint-disable no-param-reassign */
|
|
16999
|
-
/* eslint-disable no-else-return */
|
|
17000
|
-
/* eslint-disable no-multi-spaces */
|
|
17001
|
-
/* eslint-disable no-nested-ternary */
|
|
17002
|
-
|
|
17003
|
-
|
|
17004
16814
|
let styles = [
|
|
17005
16815
|
"font-family",
|
|
17006
16816
|
"font-size",
|
|
@@ -17860,15 +17670,6 @@ class SheetsBar extends Widget {
|
|
|
17860
17670
|
}
|
|
17861
17671
|
}
|
|
17862
17672
|
|
|
17863
|
-
/* eslint-disable complexity */
|
|
17864
|
-
/* eslint-disable consistent-return */
|
|
17865
|
-
/* eslint-disable default-case */
|
|
17866
|
-
/* eslint-disable no-implicit-coercion */
|
|
17867
|
-
/* eslint-disable no-nested-ternary */
|
|
17868
|
-
/* eslint-disable key-spacing */
|
|
17869
|
-
/* eslint-disable no-param-reassign */
|
|
17870
|
-
|
|
17871
|
-
|
|
17872
17673
|
function selectElementContents(el) {
|
|
17873
17674
|
let sel = window.getSelection();
|
|
17874
17675
|
sel.removeAllRanges();
|
|
@@ -18340,15 +18141,12 @@ class View extends Observable {
|
|
|
18340
18141
|
return Math.abs(rectangle.right - x) < 8 && Math.abs(rectangle.bottom - y) < 8;
|
|
18341
18142
|
}
|
|
18342
18143
|
|
|
18343
|
-
isEditButton(x, y
|
|
18144
|
+
isEditButton(x, y) {
|
|
18344
18145
|
let ed = this._sheet.activeCellCustomEditor();
|
|
18345
18146
|
if (ed) {
|
|
18346
18147
|
let r = this.activeCellRectangle();
|
|
18347
|
-
// XXX: hard-coded button width (20)
|
|
18348
|
-
|
|
18349
18148
|
if (y >= r.top && y <= r.bottom) {
|
|
18350
|
-
return
|
|
18351
|
-
: x > r.right && x <= r.right + EDIT_BUTTON_WIDTH;
|
|
18149
|
+
return x < r.right && x >= r.right - EDIT_BUTTON_WIDTH;
|
|
18352
18150
|
}
|
|
18353
18151
|
}
|
|
18354
18152
|
}
|
|
@@ -18436,7 +18234,7 @@ class View extends Observable {
|
|
|
18436
18234
|
ref = new CellRef(-Infinity, column);
|
|
18437
18235
|
type = "columnresizehandle";
|
|
18438
18236
|
}
|
|
18439
|
-
} else if (this.isEditButton(x, y
|
|
18237
|
+
} else if (this.isEditButton(x, y)) {
|
|
18440
18238
|
type = "editor";
|
|
18441
18239
|
}
|
|
18442
18240
|
|
|
@@ -19255,12 +19053,6 @@ function parseTSV(data) {
|
|
|
19255
19053
|
return state;
|
|
19256
19054
|
}
|
|
19257
19055
|
|
|
19258
|
-
/* eslint-disable no-else-return */
|
|
19259
|
-
/* eslint-disable consistent-return */
|
|
19260
|
-
/* eslint-disable space-before-blocks */
|
|
19261
|
-
/* eslint-disable no-implicit-coercion */
|
|
19262
|
-
|
|
19263
|
-
|
|
19264
19056
|
let COMMAND_TYPES = {
|
|
19265
19057
|
AUTO_FILL: "autoFill",
|
|
19266
19058
|
CLEAR: "clear",
|
|
@@ -20710,7 +20502,6 @@ class UndoRedoStack extends Observable {
|
|
|
20710
20502
|
}
|
|
20711
20503
|
}
|
|
20712
20504
|
|
|
20713
|
-
/* eslint-disable no-param-reassign */
|
|
20714
20505
|
// SAX-style XML parser ====================================================
|
|
20715
20506
|
let STRING = String.fromCharCode;
|
|
20716
20507
|
|
|
@@ -21080,13 +20871,7 @@ class Deferred {
|
|
|
21080
20871
|
}
|
|
21081
20872
|
|
|
21082
20873
|
/* eslint-disable complexity */
|
|
21083
|
-
|
|
21084
|
-
/* eslint-disable key-spacing */
|
|
21085
|
-
/* eslint-disable no-nested-ternary */
|
|
21086
|
-
/* eslint-disable brace-style */
|
|
21087
|
-
/* eslint-disable no-implicit-coercion */
|
|
21088
|
-
/* eslint-disable no-loop-func */
|
|
21089
|
-
/* eslint-disable no-param-reassign */
|
|
20874
|
+
|
|
21090
20875
|
|
|
21091
20876
|
// WARNING: removing the following jshint declaration and turning
|
|
21092
20877
|
// == into === to make JSHint happy will break functionality.
|
|
@@ -21384,6 +21169,7 @@ async function readSheet(zip, file, sheet, strings, styles) {
|
|
|
21384
21169
|
let valueFilterValues;
|
|
21385
21170
|
let filters = [];
|
|
21386
21171
|
let deferredStyles = [];
|
|
21172
|
+
let applyProtection = Boolean(sheet._workbook?.options?.excel?.applyProtection);
|
|
21387
21173
|
|
|
21388
21174
|
ERROR_LOG = sheet._workbook.excelImportErrors;
|
|
21389
21175
|
|
|
@@ -21492,7 +21278,7 @@ async function readSheet(zip, file, sheet, strings, styles) {
|
|
|
21492
21278
|
if (target) {
|
|
21493
21279
|
sheet.range(attrs.ref).link(target);
|
|
21494
21280
|
}
|
|
21495
|
-
} else if (this.is(SEL_PROTECTION)) {
|
|
21281
|
+
} else if (applyProtection && this.is(SEL_PROTECTION)) {
|
|
21496
21282
|
if (attrs.sheet) {
|
|
21497
21283
|
sheet.range(SHEETREF).enable(false);
|
|
21498
21284
|
}
|
|
@@ -21970,6 +21756,7 @@ let DEFAULT_FORMATS = {
|
|
|
21970
21756
|
|
|
21971
21757
|
function applyStyle(sheet, ref, styles, styleIndex) {
|
|
21972
21758
|
let range = sheet.range(ref);
|
|
21759
|
+
let applyProtection = Boolean(sheet._workbook?.options?.excel?.applyProtection);
|
|
21973
21760
|
let xf = styles.inlineStyles[styleIndex], base, value;
|
|
21974
21761
|
if (xf.xfId) {
|
|
21975
21762
|
base = styles.namedStyles[xf.xfId];
|
|
@@ -21999,7 +21786,7 @@ function applyStyle(sheet, ref, styles, styleIndex) {
|
|
|
21999
21786
|
if (shouldSet("applyNumberFormat", "numFmtId")) {
|
|
22000
21787
|
setFormat(styles.numFmts[value] || DEFAULT_FORMATS[value]);
|
|
22001
21788
|
}
|
|
22002
|
-
if (shouldSet("applyProtection", "protection")) {
|
|
21789
|
+
if (applyProtection && shouldSet("applyProtection", "protection")) {
|
|
22003
21790
|
range.enable(!xf.protection.locked);
|
|
22004
21791
|
}
|
|
22005
21792
|
|
|
@@ -22455,13 +22242,6 @@ function excelToPixels(val) {
|
|
|
22455
22242
|
return val / 9525;
|
|
22456
22243
|
}
|
|
22457
22244
|
|
|
22458
|
-
/* eslint-disable no-undef */
|
|
22459
|
-
/* eslint-disable no-nested-ternary */
|
|
22460
|
-
/* eslint-disable key-spacing */
|
|
22461
|
-
/* eslint-disable consistent-return */
|
|
22462
|
-
/* eslint-disable no-param-reassign */
|
|
22463
|
-
|
|
22464
|
-
|
|
22465
22245
|
const events$1 = [
|
|
22466
22246
|
"cut",
|
|
22467
22247
|
"copy",
|
|
@@ -23144,6 +22924,12 @@ class Workbook extends Observable {
|
|
|
23144
22924
|
options = deepExtend({}, self.options.excel, options);
|
|
23145
22925
|
let data = self.toJSON();
|
|
23146
22926
|
|
|
22927
|
+
if (!options.applyProtection) {
|
|
22928
|
+
data.sheets.forEach(({ rows }) =>
|
|
22929
|
+
rows.forEach(({ cells }) =>
|
|
22930
|
+
cells.forEach(cell => delete cell.enable)));
|
|
22931
|
+
}
|
|
22932
|
+
|
|
23147
22933
|
if (self.trigger("excelExport", { workbook: data })) {
|
|
23148
22934
|
return;
|
|
23149
22935
|
}
|
|
@@ -23457,8 +23243,6 @@ function sheetParamsFromJSON(data, options) {
|
|
|
23457
23243
|
// };
|
|
23458
23244
|
// }
|
|
23459
23245
|
|
|
23460
|
-
/* eslint-disable no-param-reassign */
|
|
23461
|
-
|
|
23462
23246
|
const events = [
|
|
23463
23247
|
"cut",
|
|
23464
23248
|
"copy",
|