handsontable 12.3.3 → 12.4.0-next-ddbea0c-20230512
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/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>']));
|