handsontable 12.3.3 → 12.4.0-next-ddbea0c-20230512
Sign up to get free protection for your applications and to get access to all the features.
- package/3rdparty/walkontable/src/cell/coords.js +13 -16
- package/3rdparty/walkontable/src/cell/coords.mjs +13 -16
- package/3rdparty/walkontable/src/cell/range.js +25 -29
- package/3rdparty/walkontable/src/cell/range.mjs +24 -28
- package/3rdparty/walkontable/src/core/_base.js +16 -20
- package/3rdparty/walkontable/src/core/_base.mjs +16 -20
- package/3rdparty/walkontable/src/event.js +4 -0
- package/3rdparty/walkontable/src/event.mjs +4 -0
- package/3rdparty/walkontable/src/overlay/_base.js +6 -7
- package/3rdparty/walkontable/src/overlay/_base.mjs +6 -7
- package/3rdparty/walkontable/src/overlay/bottom.js +6 -7
- package/3rdparty/walkontable/src/overlay/bottom.mjs +6 -7
- package/3rdparty/walkontable/src/overlay/top.js +6 -7
- package/3rdparty/walkontable/src/overlay/top.mjs +6 -7
- package/3rdparty/walkontable/src/overlay/topInlineStartCorner.js +10 -12
- package/3rdparty/walkontable/src/overlay/topInlineStartCorner.mjs +10 -12
- package/3rdparty/walkontable/src/overlays.js +55 -64
- package/3rdparty/walkontable/src/overlays.mjs +55 -64
- package/3rdparty/walkontable/src/scroll.js +20 -23
- package/3rdparty/walkontable/src/scroll.mjs +20 -23
- package/3rdparty/walkontable/src/settings.js +13 -15
- package/3rdparty/walkontable/src/settings.mjs +13 -15
- package/3rdparty/walkontable/src/table.js +22 -26
- package/3rdparty/walkontable/src/table.mjs +22 -26
- package/CHANGELOG.md +14 -0
- package/base.js +2 -4
- package/base.mjs +2 -2
- package/core.js +23 -6
- package/core.mjs +23 -6
- package/dataMap/dataSource.js +5 -5
- package/dataMap/dataSource.mjs +5 -5
- package/dataMap/metaManager/metaSchema.js +9 -7
- package/dataMap/metaManager/metaSchema.mjs +9 -7
- package/dist/handsontable.css +2 -2
- package/dist/handsontable.full.css +2 -2
- package/dist/handsontable.full.js +7364 -5992
- package/dist/handsontable.full.min.css +2 -2
- package/dist/handsontable.full.min.js +256 -234
- package/dist/handsontable.js +4326 -3275
- package/dist/handsontable.min.css +2 -2
- package/dist/handsontable.min.js +11 -3
- package/dist/languages/all.js +133 -0
- package/dist/languages/ar-AR.js +7 -0
- package/dist/languages/cs-CZ.js +7 -0
- package/dist/languages/de-CH.js +7 -0
- package/dist/languages/de-DE.js +7 -0
- package/dist/languages/en-US.js +7 -0
- package/dist/languages/es-MX.js +7 -0
- package/dist/languages/fr-FR.js +7 -0
- package/dist/languages/it-IT.js +7 -0
- package/dist/languages/ja-JP.js +7 -0
- package/dist/languages/ko-KR.js +7 -0
- package/dist/languages/lv-LV.js +7 -0
- package/dist/languages/nb-NO.js +7 -0
- package/dist/languages/nl-NL.js +7 -0
- package/dist/languages/pl-PL.js +7 -0
- package/dist/languages/pt-BR.js +7 -0
- package/dist/languages/ru-RU.js +7 -0
- package/dist/languages/sr-SP.js +7 -0
- package/dist/languages/zh-CN.js +7 -0
- package/dist/languages/zh-TW.js +7 -0
- package/editors/autocompleteEditor/autocompleteEditor.js +8 -9
- package/editors/autocompleteEditor/autocompleteEditor.mjs +8 -9
- package/helpers/mixed.js +2 -2
- package/helpers/mixed.mjs +2 -2
- package/i18n/languages/ar-AR.js +7 -1
- package/i18n/languages/cs-CZ.js +7 -1
- package/i18n/languages/de-CH.js +7 -1
- package/i18n/languages/de-DE.js +7 -1
- package/i18n/languages/en-US.js +7 -1
- package/i18n/languages/es-MX.js +7 -1
- package/i18n/languages/fr-FR.js +7 -1
- package/i18n/languages/it-IT.js +7 -1
- package/i18n/languages/ja-JP.js +7 -1
- package/i18n/languages/ko-KR.js +7 -1
- package/i18n/languages/lv-LV.js +7 -1
- package/i18n/languages/nb-NO.js +7 -1
- package/i18n/languages/nl-NL.js +7 -1
- package/i18n/languages/pl-PL.js +7 -1
- package/i18n/languages/pt-BR.js +7 -1
- package/i18n/languages/ru-RU.js +7 -1
- package/i18n/languages/sr-SP.js +7 -1
- package/i18n/languages/zh-CN.js +7 -1
- package/i18n/languages/zh-TW.js +7 -1
- package/languages/all.js +133 -0
- package/languages/ar-AR.js +7 -0
- package/languages/cs-CZ.js +7 -0
- package/languages/de-CH.js +7 -0
- package/languages/de-DE.js +7 -0
- package/languages/en-US.js +7 -0
- package/languages/es-MX.js +7 -0
- package/languages/fr-FR.js +7 -0
- package/languages/index.js +133 -0
- package/languages/it-IT.js +7 -0
- package/languages/ja-JP.js +7 -0
- package/languages/ko-KR.js +7 -0
- package/languages/lv-LV.js +7 -0
- package/languages/nb-NO.js +7 -0
- package/languages/nl-NL.js +7 -0
- package/languages/pl-PL.js +7 -0
- package/languages/pt-BR.js +7 -0
- package/languages/ru-RU.js +7 -0
- package/languages/sr-SP.js +7 -0
- package/languages/zh-CN.js +7 -0
- package/languages/zh-TW.js +7 -0
- package/package.json +3 -2
- package/pluginHooks.js +16 -6
- package/pluginHooks.mjs +15 -3
- package/plugins/autoRowSize/autoRowSize.js +2 -2
- package/plugins/autoRowSize/autoRowSize.mjs +2 -2
- package/plugins/base/base.js +9 -10
- package/plugins/base/base.mjs +9 -10
- package/plugins/collapsibleColumns/collapsibleColumns.js +24 -7
- package/plugins/collapsibleColumns/collapsibleColumns.mjs +24 -7
- package/plugins/copyPaste/copyPaste.js +92 -16
- package/plugins/copyPaste/copyPaste.mjs +92 -16
- package/plugins/copyPaste/copyableRanges.js +39 -39
- package/plugins/copyPaste/copyableRanges.mjs +32 -32
- package/plugins/customBorders/customBorders.d.ts +2 -0
- package/plugins/customBorders/customBorders.js +6 -7
- package/plugins/customBorders/customBorders.mjs +6 -7
- package/plugins/filters/filters.js +5 -0
- package/plugins/filters/filters.mjs +5 -0
- package/plugins/formulas/engine/register.js +9 -0
- package/plugins/formulas/engine/register.mjs +13 -4
- package/plugins/formulas/engine/settings.js +18 -3
- package/plugins/formulas/engine/settings.mjs +16 -3
- package/plugins/formulas/formulas.js +308 -162
- package/plugins/formulas/formulas.mjs +308 -163
- package/plugins/formulas/indexSyncer/axisSyncer.js +379 -0
- package/plugins/formulas/indexSyncer/axisSyncer.mjs +374 -0
- package/plugins/formulas/indexSyncer/index.js +225 -0
- package/plugins/formulas/indexSyncer/index.mjs +219 -0
- package/plugins/formulas/utils.js +81 -0
- package/plugins/formulas/utils.mjs +74 -0
- package/plugins/hiddenColumns/hiddenColumns.js +12 -7
- package/plugins/hiddenColumns/hiddenColumns.mjs +12 -7
- package/plugins/hiddenRows/hiddenRows.js +12 -7
- package/plugins/hiddenRows/hiddenRows.mjs +12 -7
- package/plugins/manualRowMove/manualRowMove.js +26 -11
- package/plugins/manualRowMove/manualRowMove.mjs +27 -12
- package/plugins/nestedHeaders/nestedHeaders.js +26 -7
- package/plugins/nestedHeaders/nestedHeaders.mjs +26 -7
- package/plugins/nestedHeaders/stateManager/headersTree.js +23 -26
- package/plugins/nestedHeaders/stateManager/headersTree.mjs +20 -23
- package/plugins/nestedHeaders/stateManager/index.js +21 -3
- package/plugins/nestedHeaders/stateManager/index.mjs +18 -0
- package/plugins/nestedHeaders/stateManager/matrixGenerator.js +1 -0
- package/plugins/nestedHeaders/stateManager/settingsNormalizer.js +1 -1
- package/plugins/nestedHeaders/stateManager/sourceSettings.js +19 -0
- package/plugins/nestedHeaders/stateManager/sourceSettings.mjs +19 -0
- package/plugins/nestedHeaders/utils/ghostTable.js +30 -35
- package/plugins/nestedHeaders/utils/ghostTable.mjs +30 -35
- package/plugins/registry.js +3 -1
- package/plugins/undoRedo/undoRedo.js +0 -1
- package/plugins/undoRedo/undoRedo.mjs +0 -1
- package/selection/highlight/visualSelection.js +5 -6
- package/selection/highlight/visualSelection.mjs +5 -6
- package/tableView.js +62 -72
- package/tableView.mjs +62 -72
- package/translations/changesObservable/observable.js +41 -46
- package/translations/changesObservable/observable.mjs +36 -41
- package/translations/changesObservable/observer.js +8 -1
- package/translations/changesObservable/observer.mjs +7 -0
- package/translations/indexMapper.js +21 -0
- package/translations/indexMapper.mjs +21 -0
- package/translations/maps/linkedPhysicalIndexToValueMap.js +6 -0
- package/translations/maps/linkedPhysicalIndexToValueMap.mjs +6 -0
- package/utils/dataStructures/tree.js +15 -18
- package/utils/dataStructures/tree.mjs +15 -18
- package/utils/parseTable.js +5 -1
- package/utils/parseTable.mjs +5 -1
@@ -155,6 +155,12 @@ export var IndexMapper = /*#__PURE__*/function () {
|
|
155
155
|
* @type {boolean}
|
156
156
|
*/
|
157
157
|
this.indexesSequenceChanged = false;
|
158
|
+
/**
|
159
|
+
* Flag informing about source of the change.
|
160
|
+
*
|
161
|
+
* @type {undefined|string}
|
162
|
+
*/
|
163
|
+
this.indexesChangeSource = void 0;
|
158
164
|
/**
|
159
165
|
* Flag determining whether any action on trimmed indexes has been performed. It's used for cache management.
|
160
166
|
*
|
@@ -195,6 +201,7 @@ export var IndexMapper = /*#__PURE__*/function () {
|
|
195
201
|
|
196
202
|
// Sequence of stored indexes might change.
|
197
203
|
_this.updateCache();
|
204
|
+
_this.runLocalHooks('indexesSequenceChange', _this.indexesChangeSource);
|
198
205
|
_this.runLocalHooks('change', _this.indexesSequence, null);
|
199
206
|
});
|
200
207
|
this.trimmingMapsCollection.addLocalHook('change', function (changedMap) {
|
@@ -515,7 +522,9 @@ export var IndexMapper = /*#__PURE__*/function () {
|
|
515
522
|
this.notTrimmedIndexesCache = _toConsumableArray(new Array(length).keys());
|
516
523
|
this.notHiddenIndexesCache = _toConsumableArray(new Array(length).keys());
|
517
524
|
this.suspendOperations();
|
525
|
+
this.indexesChangeSource = 'init';
|
518
526
|
this.indexesSequence.init(length);
|
527
|
+
this.indexesChangeSource = void 0;
|
519
528
|
this.trimmingMapsCollection.initEvery(length);
|
520
529
|
this.resumeOperations();
|
521
530
|
|
@@ -567,7 +576,13 @@ export var IndexMapper = /*#__PURE__*/function () {
|
|
567
576
|
}, {
|
568
577
|
key: "setIndexesSequence",
|
569
578
|
value: function setIndexesSequence(indexes) {
|
579
|
+
if (this.indexesChangeSource === void 0) {
|
580
|
+
this.indexesChangeSource = 'update';
|
581
|
+
}
|
570
582
|
this.indexesSequence.setValues(indexes);
|
583
|
+
if (this.indexesChangeSource === 'update') {
|
584
|
+
this.indexesChangeSource = void 0;
|
585
|
+
}
|
571
586
|
}
|
572
587
|
|
573
588
|
/**
|
@@ -717,9 +732,11 @@ export var IndexMapper = /*#__PURE__*/function () {
|
|
717
732
|
})[finalIndex];
|
718
733
|
destinationPosition = listWithRemovedItems.indexOf(physicalIndex);
|
719
734
|
}
|
735
|
+
this.indexesChangeSource = 'move';
|
720
736
|
|
721
737
|
// Adding indexes without re-indexing.
|
722
738
|
this.setIndexesSequence(getListWithInsertedItems(listWithRemovedItems, destinationPosition, physicalMovedIndexes));
|
739
|
+
this.indexesChangeSource = void 0;
|
723
740
|
}
|
724
741
|
|
725
742
|
/**
|
@@ -763,7 +780,9 @@ export var IndexMapper = /*#__PURE__*/function () {
|
|
763
780
|
return nextIndex + stepsFromStart;
|
764
781
|
});
|
765
782
|
this.suspendOperations();
|
783
|
+
this.indexesChangeSource = 'insert';
|
766
784
|
this.indexesSequence.insert(insertionIndex, insertedIndexes);
|
785
|
+
this.indexesChangeSource = void 0;
|
767
786
|
this.trimmingMapsCollection.insertToEvery(insertionIndex, insertedIndexes);
|
768
787
|
this.hidingMapsCollection.insertToEvery(insertionIndex, insertedIndexes);
|
769
788
|
this.variousMapsCollection.insertToEvery(insertionIndex, insertedIndexes);
|
@@ -780,7 +799,9 @@ export var IndexMapper = /*#__PURE__*/function () {
|
|
780
799
|
key: "removeIndexes",
|
781
800
|
value: function removeIndexes(removedIndexes) {
|
782
801
|
this.suspendOperations();
|
802
|
+
this.indexesChangeSource = 'remove';
|
783
803
|
this.indexesSequence.remove(removedIndexes);
|
804
|
+
this.indexesChangeSource = void 0;
|
784
805
|
this.trimmingMapsCollection.removeFromEvery(removedIndexes);
|
785
806
|
this.hidingMapsCollection.removeFromEvery(removedIndexes);
|
786
807
|
this.variousMapsCollection.removeFromEvery(removedIndexes);
|
@@ -71,6 +71,12 @@ var LinkedPhysicalIndexToValueMap = /*#__PURE__*/function (_IndexMap) {
|
|
71
71
|
args[_key] = arguments[_key];
|
72
72
|
}
|
73
73
|
_this = _super.call.apply(_super, [this].concat(args));
|
74
|
+
/**
|
75
|
+
* Indexes and values corresponding to them (entries) are stored in a certain order.
|
76
|
+
*
|
77
|
+
* @private
|
78
|
+
* @type {Array<number>}
|
79
|
+
*/
|
74
80
|
_defineProperty(_assertThisInitialized(_this), "orderOfIndexes", []);
|
75
81
|
return _this;
|
76
82
|
}
|
@@ -67,6 +67,12 @@ export var LinkedPhysicalIndexToValueMap = /*#__PURE__*/function (_IndexMap) {
|
|
67
67
|
args[_key] = arguments[_key];
|
68
68
|
}
|
69
69
|
_this = _super.call.apply(_super, [this].concat(args));
|
70
|
+
/**
|
71
|
+
* Indexes and values corresponding to them (entries) are stored in a certain order.
|
72
|
+
*
|
73
|
+
* @private
|
74
|
+
* @type {Array<number>}
|
75
|
+
*/
|
70
76
|
_defineProperty(_assertThisInitialized(_this), "orderOfIndexes", []);
|
71
77
|
return _this;
|
72
78
|
}
|
@@ -130,28 +130,25 @@ var TRAVERSAL_STRATEGIES = new Map([[TRAVERSAL_DF_PRE, depthFirstPreOrder], [TRA
|
|
130
130
|
*
|
131
131
|
*/
|
132
132
|
var TreeNode = /*#__PURE__*/function () {
|
133
|
-
/**
|
134
|
-
* A tree data.
|
135
|
-
*
|
136
|
-
* @type {object}
|
137
|
-
*/
|
138
|
-
|
139
|
-
/**
|
140
|
-
* A parent node.
|
141
|
-
*
|
142
|
-
* @type {TreeNode}
|
143
|
-
*/
|
144
|
-
|
145
|
-
/**
|
146
|
-
* A tree leaves.
|
147
|
-
*
|
148
|
-
* @type {TreeNode[]}
|
149
|
-
*/
|
150
|
-
|
151
133
|
function TreeNode(data) {
|
152
134
|
_classCallCheck(this, TreeNode);
|
135
|
+
/**
|
136
|
+
* A tree data.
|
137
|
+
*
|
138
|
+
* @type {object}
|
139
|
+
*/
|
153
140
|
_defineProperty(this, "data", {});
|
141
|
+
/**
|
142
|
+
* A parent node.
|
143
|
+
*
|
144
|
+
* @type {TreeNode}
|
145
|
+
*/
|
154
146
|
_defineProperty(this, "parent", null);
|
147
|
+
/**
|
148
|
+
* A tree leaves.
|
149
|
+
*
|
150
|
+
* @type {TreeNode[]}
|
151
|
+
*/
|
155
152
|
_defineProperty(this, "childs", []);
|
156
153
|
this.data = data;
|
157
154
|
}
|
@@ -122,28 +122,25 @@ var TRAVERSAL_STRATEGIES = new Map([[TRAVERSAL_DF_PRE, depthFirstPreOrder], [TRA
|
|
122
122
|
*
|
123
123
|
*/
|
124
124
|
var TreeNode = /*#__PURE__*/function () {
|
125
|
-
/**
|
126
|
-
* A tree data.
|
127
|
-
*
|
128
|
-
* @type {object}
|
129
|
-
*/
|
130
|
-
|
131
|
-
/**
|
132
|
-
* A parent node.
|
133
|
-
*
|
134
|
-
* @type {TreeNode}
|
135
|
-
*/
|
136
|
-
|
137
|
-
/**
|
138
|
-
* A tree leaves.
|
139
|
-
*
|
140
|
-
* @type {TreeNode[]}
|
141
|
-
*/
|
142
|
-
|
143
125
|
function TreeNode(data) {
|
144
126
|
_classCallCheck(this, TreeNode);
|
127
|
+
/**
|
128
|
+
* A tree data.
|
129
|
+
*
|
130
|
+
* @type {object}
|
131
|
+
*/
|
145
132
|
_defineProperty(this, "data", {});
|
133
|
+
/**
|
134
|
+
* A parent node.
|
135
|
+
*
|
136
|
+
* @type {TreeNode}
|
137
|
+
*/
|
146
138
|
_defineProperty(this, "parent", null);
|
139
|
+
/**
|
140
|
+
* A tree leaves.
|
141
|
+
*
|
142
|
+
* @type {TreeNode[]}
|
143
|
+
*/
|
147
144
|
_defineProperty(this, "childs", []);
|
148
145
|
this.data = data;
|
149
146
|
}
|
package/utils/parseTable.js
CHANGED
@@ -21,6 +21,7 @@ require("core-js/modules/es.string.replace.js");
|
|
21
21
|
require("core-js/modules/es.object.to-string.js");
|
22
22
|
require("core-js/modules/es.array.concat.js");
|
23
23
|
require("core-js/modules/es.array.splice.js");
|
24
|
+
require("core-js/modules/es.string.repeat.js");
|
24
25
|
require("core-js/modules/es.string.match.js");
|
25
26
|
require("core-js/modules/es.array.last-index-of.js");
|
26
27
|
require("core-js/modules/es.array.reduce.js");
|
@@ -139,7 +140,10 @@ function _dataToHTML(input) {
|
|
139
140
|
}
|
140
141
|
for (var column = 0; column < columnsLen; column += 1) {
|
141
142
|
var cellData = rowData[column];
|
142
|
-
var parsedCellData = (0, _mixed.isEmpty)(cellData) ? '' : cellData.toString().replace(/</g, '<').replace(/>/g, '>').replace(/(<br(\s*|\/)>(\r\n|\n)?|\r\n|\n)/g, '<br>\r\n').replace(/\x20/gi,
|
143
|
+
var parsedCellData = (0, _mixed.isEmpty)(cellData) ? '' : cellData.toString().replace(/</g, '<').replace(/>/g, '>').replace(/(<br(\s*|\/)>(\r\n|\n)?|\r\n|\n)/g, '<br>\r\n').replace(/\x20{2,}/gi, function (substring) {
|
144
|
+
// The way how Excel serializes data with at least two spaces.
|
145
|
+
return "<span style=\"mso-spacerun: yes\">".concat(' '.repeat(substring.length - 1), " </span>");
|
146
|
+
}).replace(/\t/gi, '	');
|
143
147
|
columnsResult.push("<td>".concat(parsedCellData, "</td>"));
|
144
148
|
}
|
145
149
|
result.push.apply(result, ['<tr>'].concat(columnsResult, ['</tr>']));
|
package/utils/parseTable.mjs
CHANGED
@@ -14,6 +14,7 @@ import "core-js/modules/es.string.replace.js";
|
|
14
14
|
import "core-js/modules/es.object.to-string.js";
|
15
15
|
import "core-js/modules/es.array.concat.js";
|
16
16
|
import "core-js/modules/es.array.splice.js";
|
17
|
+
import "core-js/modules/es.string.repeat.js";
|
17
18
|
import "core-js/modules/es.string.match.js";
|
18
19
|
import "core-js/modules/es.array.last-index-of.js";
|
19
20
|
import "core-js/modules/es.array.reduce.js";
|
@@ -133,7 +134,10 @@ export function _dataToHTML(input) {
|
|
133
134
|
}
|
134
135
|
for (var column = 0; column < columnsLen; column += 1) {
|
135
136
|
var cellData = rowData[column];
|
136
|
-
var parsedCellData = isEmpty(cellData) ? '' : cellData.toString().replace(/</g, '<').replace(/>/g, '>').replace(/(<br(\s*|\/)>(\r\n|\n)?|\r\n|\n)/g, '<br>\r\n').replace(/\x20/gi,
|
137
|
+
var parsedCellData = isEmpty(cellData) ? '' : cellData.toString().replace(/</g, '<').replace(/>/g, '>').replace(/(<br(\s*|\/)>(\r\n|\n)?|\r\n|\n)/g, '<br>\r\n').replace(/\x20{2,}/gi, function (substring) {
|
138
|
+
// The way how Excel serializes data with at least two spaces.
|
139
|
+
return "<span style=\"mso-spacerun: yes\">".concat(' '.repeat(substring.length - 1), " </span>");
|
140
|
+
}).replace(/\t/gi, '	');
|
137
141
|
columnsResult.push("<td>".concat(parsedCellData, "</td>"));
|
138
142
|
}
|
139
143
|
result.push.apply(result, ['<tr>'].concat(columnsResult, ['</tr>']));
|