handsontable 0.0.0-next-48677e7-20230509 → 0.0.0-next-c73b24c-20230510

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of handsontable might be problematic. Click here for more details.

Files changed (227) hide show
  1. package/3rdparty/walkontable/src/{selection/border/border.js → border.js} +12 -7
  2. package/3rdparty/walkontable/src/{selection/border/border.mjs → border.mjs} +12 -7
  3. package/3rdparty/walkontable/src/cell/coords.js +13 -40
  4. package/3rdparty/walkontable/src/cell/coords.mjs +13 -40
  5. package/3rdparty/walkontable/src/cell/range.js +25 -29
  6. package/3rdparty/walkontable/src/cell/range.mjs +24 -28
  7. package/3rdparty/walkontable/src/core/_base.js +3 -9
  8. package/3rdparty/walkontable/src/core/_base.mjs +3 -9
  9. package/3rdparty/walkontable/src/core/clone.js +2 -2
  10. package/3rdparty/walkontable/src/core/clone.mjs +2 -2
  11. package/3rdparty/walkontable/src/core/core.js +2 -3
  12. package/3rdparty/walkontable/src/core/core.mjs +2 -3
  13. package/3rdparty/walkontable/src/event.js +10 -12
  14. package/3rdparty/walkontable/src/event.mjs +10 -12
  15. package/3rdparty/walkontable/src/facade/core.js +2 -2
  16. package/3rdparty/walkontable/src/facade/core.mjs +2 -2
  17. package/3rdparty/walkontable/src/index.js +2 -10
  18. package/3rdparty/walkontable/src/index.mjs +2 -2
  19. package/3rdparty/walkontable/src/overlay/_base.js +7 -8
  20. package/3rdparty/walkontable/src/overlay/_base.mjs +7 -8
  21. package/3rdparty/walkontable/src/overlay/bottom.js +6 -7
  22. package/3rdparty/walkontable/src/overlay/bottom.mjs +6 -7
  23. package/3rdparty/walkontable/src/overlay/inlineStart.js +4 -2
  24. package/3rdparty/walkontable/src/overlay/inlineStart.mjs +4 -2
  25. package/3rdparty/walkontable/src/overlay/top.js +10 -9
  26. package/3rdparty/walkontable/src/overlay/top.mjs +10 -9
  27. package/3rdparty/walkontable/src/overlay/topInlineStartCorner.js +10 -12
  28. package/3rdparty/walkontable/src/overlay/topInlineStartCorner.mjs +10 -12
  29. package/3rdparty/walkontable/src/overlays.js +55 -64
  30. package/3rdparty/walkontable/src/overlays.mjs +55 -64
  31. package/3rdparty/walkontable/src/renderer/table.js +0 -2
  32. package/3rdparty/walkontable/src/renderer/table.mjs +0 -2
  33. package/3rdparty/walkontable/src/scroll.js +20 -23
  34. package/3rdparty/walkontable/src/scroll.mjs +20 -23
  35. package/3rdparty/walkontable/src/selection.js +354 -0
  36. package/3rdparty/walkontable/src/selection.mjs +348 -0
  37. package/3rdparty/walkontable/src/settings.js +13 -15
  38. package/3rdparty/walkontable/src/settings.mjs +13 -15
  39. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +0 -9
  40. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +0 -9
  41. package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +0 -9
  42. package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +0 -9
  43. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.js +0 -9
  44. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.mjs +0 -9
  45. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +0 -9
  46. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +0 -9
  47. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +0 -9
  48. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +0 -9
  49. package/3rdparty/walkontable/src/table.js +101 -33
  50. package/3rdparty/walkontable/src/table.mjs +102 -34
  51. package/base.js +2 -4
  52. package/base.mjs +2 -2
  53. package/core.d.ts +0 -4
  54. package/core.js +24 -52
  55. package/core.mjs +24 -52
  56. package/dataMap/dataSource.js +5 -5
  57. package/dataMap/dataSource.mjs +5 -5
  58. package/dataMap/metaManager/metaSchema.js +1 -8
  59. package/dataMap/metaManager/metaSchema.mjs +1 -8
  60. package/dist/handsontable.css +2 -7
  61. package/dist/handsontable.full.css +2 -7
  62. package/dist/handsontable.full.js +9101 -9413
  63. package/dist/handsontable.full.min.css +3 -3
  64. package/dist/handsontable.full.min.js +123 -115
  65. package/dist/handsontable.js +8761 -9074
  66. package/dist/handsontable.min.css +3 -3
  67. package/dist/handsontable.min.js +11 -3
  68. package/dist/languages/all.js +133 -0
  69. package/dist/languages/ar-AR.js +7 -0
  70. package/dist/languages/cs-CZ.js +7 -0
  71. package/dist/languages/de-CH.js +7 -0
  72. package/dist/languages/de-DE.js +7 -0
  73. package/dist/languages/en-US.js +7 -0
  74. package/dist/languages/es-MX.js +7 -0
  75. package/dist/languages/fr-FR.js +7 -0
  76. package/dist/languages/it-IT.js +7 -0
  77. package/dist/languages/ja-JP.js +7 -0
  78. package/dist/languages/ko-KR.js +7 -0
  79. package/dist/languages/lv-LV.js +7 -0
  80. package/dist/languages/nb-NO.js +7 -0
  81. package/dist/languages/nl-NL.js +7 -0
  82. package/dist/languages/pl-PL.js +7 -0
  83. package/dist/languages/pt-BR.js +7 -0
  84. package/dist/languages/ru-RU.js +7 -0
  85. package/dist/languages/sr-SP.js +7 -0
  86. package/dist/languages/zh-CN.js +7 -0
  87. package/dist/languages/zh-TW.js +7 -0
  88. package/editorManager.js +3 -7
  89. package/editorManager.mjs +3 -7
  90. package/editors/textEditor/textEditor.js +16 -3
  91. package/editors/textEditor/textEditor.mjs +17 -4
  92. package/helpers/dom/element.js +0 -11
  93. package/helpers/dom/element.mjs +0 -10
  94. package/helpers/mixed.js +1 -1
  95. package/helpers/mixed.mjs +1 -1
  96. package/i18n/languages/ar-AR.js +7 -1
  97. package/i18n/languages/cs-CZ.js +7 -1
  98. package/i18n/languages/de-CH.js +7 -1
  99. package/i18n/languages/de-DE.js +7 -1
  100. package/i18n/languages/en-US.js +7 -1
  101. package/i18n/languages/es-MX.js +7 -1
  102. package/i18n/languages/fr-FR.js +7 -1
  103. package/i18n/languages/it-IT.js +7 -1
  104. package/i18n/languages/ja-JP.js +7 -1
  105. package/i18n/languages/ko-KR.js +7 -1
  106. package/i18n/languages/lv-LV.js +7 -1
  107. package/i18n/languages/nb-NO.js +7 -1
  108. package/i18n/languages/nl-NL.js +7 -1
  109. package/i18n/languages/pl-PL.js +7 -1
  110. package/i18n/languages/pt-BR.js +7 -1
  111. package/i18n/languages/ru-RU.js +7 -1
  112. package/i18n/languages/sr-SP.js +7 -1
  113. package/i18n/languages/zh-CN.js +7 -1
  114. package/i18n/languages/zh-TW.js +7 -1
  115. package/languages/all.js +133 -0
  116. package/languages/ar-AR.js +7 -0
  117. package/languages/cs-CZ.js +7 -0
  118. package/languages/de-CH.js +7 -0
  119. package/languages/de-DE.js +7 -0
  120. package/languages/en-US.js +7 -0
  121. package/languages/es-MX.js +7 -0
  122. package/languages/fr-FR.js +7 -0
  123. package/languages/index.js +133 -0
  124. package/languages/it-IT.js +7 -0
  125. package/languages/ja-JP.js +7 -0
  126. package/languages/ko-KR.js +7 -0
  127. package/languages/lv-LV.js +7 -0
  128. package/languages/nb-NO.js +7 -0
  129. package/languages/nl-NL.js +7 -0
  130. package/languages/pl-PL.js +7 -0
  131. package/languages/pt-BR.js +7 -0
  132. package/languages/ru-RU.js +7 -0
  133. package/languages/sr-SP.js +7 -0
  134. package/languages/zh-CN.js +7 -0
  135. package/languages/zh-TW.js +7 -0
  136. package/package.json +3 -2
  137. package/pluginHooks.js +17 -7
  138. package/pluginHooks.mjs +16 -4
  139. package/plugins/autoRowSize/autoRowSize.js +2 -2
  140. package/plugins/autoRowSize/autoRowSize.mjs +2 -2
  141. package/plugins/copyPaste/copyPaste.js +93 -12
  142. package/plugins/copyPaste/copyPaste.mjs +93 -12
  143. package/plugins/copyPaste/copyableRanges.js +25 -31
  144. package/plugins/copyPaste/copyableRanges.mjs +18 -24
  145. package/plugins/copyPaste/focusableElement.js +219 -0
  146. package/plugins/copyPaste/focusableElement.mjs +213 -0
  147. package/plugins/customBorders/customBorders.js +2 -6
  148. package/plugins/customBorders/customBorders.mjs +3 -7
  149. package/plugins/filters/filters.js +5 -0
  150. package/plugins/filters/filters.mjs +5 -0
  151. package/plugins/formulas/formulas.js +190 -168
  152. package/plugins/formulas/formulas.mjs +190 -168
  153. package/plugins/formulas/indexSyncer/axisSyncer.js +379 -0
  154. package/plugins/formulas/indexSyncer/axisSyncer.mjs +374 -0
  155. package/plugins/formulas/indexSyncer/index.js +225 -0
  156. package/plugins/formulas/indexSyncer/index.mjs +219 -0
  157. package/plugins/mergeCells/mergeCells.js +16 -0
  158. package/plugins/mergeCells/mergeCells.mjs +16 -0
  159. package/plugins/nestedHeaders/nestedHeaders.js +4 -3
  160. package/plugins/nestedHeaders/nestedHeaders.mjs +4 -3
  161. package/plugins/nestedHeaders/stateManager/headersTree.js +23 -26
  162. package/plugins/nestedHeaders/stateManager/headersTree.mjs +20 -23
  163. package/plugins/nestedHeaders/stateManager/index.js +3 -3
  164. package/plugins/nestedHeaders/stateManager/matrixGenerator.js +1 -0
  165. package/plugins/nestedHeaders/stateManager/settingsNormalizer.js +1 -1
  166. package/plugins/nestedHeaders/utils/ghostTable.js +30 -35
  167. package/plugins/nestedHeaders/utils/ghostTable.mjs +30 -35
  168. package/plugins/registry.js +3 -1
  169. package/plugins/undoRedo/undoRedo.js +0 -1
  170. package/plugins/undoRedo/undoRedo.mjs +0 -1
  171. package/renderers/baseRenderer/baseRenderer.js +0 -3
  172. package/renderers/baseRenderer/baseRenderer.mjs +0 -3
  173. package/selection/highlight/constants.js +16 -0
  174. package/selection/highlight/constants.mjs +6 -0
  175. package/selection/highlight/highlight.js +133 -335
  176. package/selection/highlight/highlight.mjs +129 -325
  177. package/selection/highlight/types/activeHeader.js +9 -10
  178. package/selection/highlight/types/activeHeader.mjs +8 -10
  179. package/selection/highlight/types/area.js +27 -12
  180. package/selection/highlight/types/area.mjs +30 -16
  181. package/selection/highlight/types/{focus.js → cell.js} +8 -5
  182. package/selection/highlight/types/{focus.mjs → cell.mjs} +7 -5
  183. package/selection/highlight/types/customSelection.js +10 -7
  184. package/selection/highlight/types/customSelection.mjs +9 -7
  185. package/selection/highlight/types/fill.js +8 -5
  186. package/selection/highlight/types/fill.mjs +7 -5
  187. package/selection/highlight/types/header.js +20 -10
  188. package/selection/highlight/types/header.mjs +19 -10
  189. package/selection/highlight/types/{row.js → index.js} +31 -27
  190. package/selection/highlight/types/{row.mjs → index.mjs} +29 -24
  191. package/selection/highlight/visualSelection.js +21 -12
  192. package/selection/highlight/visualSelection.mjs +21 -12
  193. package/selection/index.js +7 -4
  194. package/selection/index.mjs +3 -2
  195. package/selection/selection.js +46 -88
  196. package/selection/selection.mjs +44 -82
  197. package/settings.d.ts +0 -1
  198. package/tableView.js +66 -94
  199. package/tableView.mjs +66 -94
  200. package/translations/changesObservable/observable.js +41 -46
  201. package/translations/changesObservable/observable.mjs +36 -41
  202. package/translations/changesObservable/observer.js +1 -1
  203. package/translations/indexMapper.js +21 -0
  204. package/translations/indexMapper.mjs +21 -0
  205. package/utils/dataStructures/tree.js +15 -18
  206. package/utils/dataStructures/tree.mjs +15 -18
  207. package/utils/parseTable.js +5 -1
  208. package/utils/parseTable.mjs +5 -1
  209. package/3rdparty/walkontable/src/selection/border/constants.js +0 -18
  210. package/3rdparty/walkontable/src/selection/border/constants.mjs +0 -13
  211. package/3rdparty/walkontable/src/selection/constants.js +0 -63
  212. package/3rdparty/walkontable/src/selection/constants.mjs +0 -51
  213. package/3rdparty/walkontable/src/selection/index.js +0 -30
  214. package/3rdparty/walkontable/src/selection/index.mjs +0 -5
  215. package/3rdparty/walkontable/src/selection/manager.js +0 -334
  216. package/3rdparty/walkontable/src/selection/manager.mjs +0 -328
  217. package/3rdparty/walkontable/src/selection/scanner.js +0 -363
  218. package/3rdparty/walkontable/src/selection/scanner.mjs +0 -359
  219. package/3rdparty/walkontable/src/selection/selection.js +0 -133
  220. package/3rdparty/walkontable/src/selection/selection.mjs +0 -127
  221. package/focusManager.d.ts +0 -12
  222. package/focusManager.js +0 -249
  223. package/focusManager.mjs +0 -245
  224. package/selection/highlight/types/areaLayered.js +0 -54
  225. package/selection/highlight/types/areaLayered.mjs +0 -49
  226. package/selection/highlight/types/column.js +0 -50
  227. package/selection/highlight/types/column.mjs +0 -45
@@ -2,14 +2,15 @@
2
2
 
3
3
  require("core-js/modules/es.symbol.iterator.js");
4
4
  require("core-js/modules/es.array.iterator.js");
5
- require("core-js/modules/es.string.iterator.js");
6
5
  require("core-js/modules/web.dom-collections.iterator.js");
7
6
  require("core-js/modules/es.array.slice.js");
8
- require("core-js/modules/es.array.from.js");
9
7
  require("core-js/modules/es.regexp.exec.js");
10
8
  exports.__esModule = true;
11
9
  exports.default = void 0;
12
10
  require("core-js/modules/es.function.name.js");
11
+ require("core-js/modules/es.array.from.js");
12
+ require("core-js/modules/es.string.iterator.js");
13
+ require("core-js/modules/es.array.includes.js");
13
14
  require("core-js/modules/es.object.to-string.js");
14
15
  require("core-js/modules/web.dom-collections.for-each.js");
15
16
  require("core-js/modules/es.symbol.to-primitive.js");
@@ -55,32 +56,6 @@ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input ==
55
56
  * @abstract
56
57
  */
57
58
  var Table = /*#__PURE__*/function () {
58
- /**
59
- * The walkontable settings.
60
- *
61
- * @protected
62
- * @type {Settings}
63
- */
64
-
65
- /**
66
- * Indicates if the table has height bigger than 0px.
67
- *
68
- * @type {boolean}
69
- */
70
-
71
- /**
72
- * Indicates if the table has width bigger than 0px.
73
- *
74
- * @type {boolean}
75
- */
76
-
77
- /**
78
- * Indicates if the table is visible. By visible, it means that the holder
79
- * element has CSS 'display' property different than 'none'.
80
- *
81
- * @type {boolean}
82
- */
83
-
84
59
  /**
85
60
  *
86
61
  * @abstract
@@ -93,13 +68,35 @@ var Table = /*#__PURE__*/function () {
93
68
  function Table(dataAccessObject, facadeGetter, domBindings, wtSettings, name) {
94
69
  var _this = this;
95
70
  _classCallCheck(this, Table);
71
+ /**
72
+ * The walkontable settings.
73
+ *
74
+ * @protected
75
+ * @type {Settings}
76
+ */
96
77
  _defineProperty(this, "wtSettings", null);
97
78
  _defineProperty(this, "domBindings", void 0);
98
79
  _defineProperty(this, "TBODY", null);
99
80
  _defineProperty(this, "THEAD", null);
100
81
  _defineProperty(this, "COLGROUP", null);
82
+ /**
83
+ * Indicates if the table has height bigger than 0px.
84
+ *
85
+ * @type {boolean}
86
+ */
101
87
  _defineProperty(this, "hasTableHeight", true);
88
+ /**
89
+ * Indicates if the table has width bigger than 0px.
90
+ *
91
+ * @type {boolean}
92
+ */
102
93
  _defineProperty(this, "hasTableWidth", true);
94
+ /**
95
+ * Indicates if the table is visible. By visible, it means that the holder
96
+ * element has CSS 'display' property different than 'none'.
97
+ *
98
+ * @type {boolean}
99
+ */
103
100
  _defineProperty(this, "isTableVisible", false);
104
101
  _defineProperty(this, "tableOffset", 0);
105
102
  _defineProperty(this, "holderOffset", 0);
@@ -390,7 +387,7 @@ var Table = /*#__PURE__*/function () {
390
387
  wtOverlays.refreshAll(); // `refreshAll()` internally already calls `refreshSelections()` method
391
388
  wtOverlays.adjustElementsSize();
392
389
  } else {
393
- this.dataAccessObject.selectionManager.setActiveOverlay(this.facadeGetter()).render(runFastDraw);
390
+ this.refreshSelections(runFastDraw);
394
391
  }
395
392
  if (syncScroll) {
396
393
  wtOverlays.syncScrollWithMaster();
@@ -482,6 +479,74 @@ var Table = /*#__PURE__*/function () {
482
479
  }
483
480
  }
484
481
 
482
+ /**
483
+ * @param {string} className The CSS class name to remove from the table cells.
484
+ */
485
+ }, {
486
+ key: "removeClassFromCells",
487
+ value: function removeClassFromCells(className) {
488
+ var nodes = this.TABLE.querySelectorAll(".".concat(className));
489
+ for (var i = 0, len = nodes.length; i < len; i++) {
490
+ (0, _element.removeClass)(nodes[i], className);
491
+ }
492
+ }
493
+
494
+ /**
495
+ * Refresh the table selection by re-rendering Selection instances connected with that instance.
496
+ *
497
+ * @param {boolean} fastDraw If fast drawing is enabled than additionally className clearing is applied.
498
+ */
499
+ }, {
500
+ key: "refreshSelections",
501
+ value: function refreshSelections(fastDraw) {
502
+ var wtSettings = this.wtSettings;
503
+ var selections = this.dataAccessObject.selections;
504
+ if (!selections) {
505
+ return;
506
+ }
507
+ var highlights = Array.from(selections);
508
+ var len = highlights.length;
509
+ if (fastDraw) {
510
+ var classesToRemove = [];
511
+ for (var i = 0; i < len; i++) {
512
+ var _highlights$i$setting = highlights[i].settings,
513
+ highlightHeaderClassName = _highlights$i$setting.highlightHeaderClassName,
514
+ highlightRowClassName = _highlights$i$setting.highlightRowClassName,
515
+ highlightColumnClassName = _highlights$i$setting.highlightColumnClassName;
516
+ var classNames = highlights[i].classNames;
517
+ var classNamesLength = classNames.length;
518
+ for (var j = 0; j < classNamesLength; j++) {
519
+ if (!classesToRemove.includes(classNames[j])) {
520
+ classesToRemove.push(classNames[j]);
521
+ }
522
+ }
523
+ if (highlightHeaderClassName && !classesToRemove.includes(highlightHeaderClassName)) {
524
+ classesToRemove.push(highlightHeaderClassName);
525
+ }
526
+ if (highlightRowClassName && !classesToRemove.includes(highlightRowClassName)) {
527
+ classesToRemove.push(highlightRowClassName);
528
+ }
529
+ if (highlightColumnClassName && !classesToRemove.includes(highlightColumnClassName)) {
530
+ classesToRemove.push(highlightColumnClassName);
531
+ }
532
+ }
533
+ var additionalClassesToRemove = wtSettings.getSetting('onBeforeRemoveCellClassNames');
534
+ if (Array.isArray(additionalClassesToRemove)) {
535
+ for (var _i = 0; _i < additionalClassesToRemove.length; _i++) {
536
+ classesToRemove.push(additionalClassesToRemove[_i]);
537
+ }
538
+ }
539
+ var classesToRemoveLength = classesToRemove.length;
540
+ for (var _i2 = 0; _i2 < classesToRemoveLength; _i2++) {
541
+ // there was no rerender, so we need to remove classNames by ourselves
542
+ this.removeClassFromCells(classesToRemove[_i2]);
543
+ }
544
+ }
545
+ for (var _i3 = 0; _i3 < len; _i3++) {
546
+ highlights[_i3].draw(this.facadeGetter(), fastDraw);
547
+ }
548
+ }
549
+
485
550
  /**
486
551
  * Get cell element at coords.
487
552
  * Negative coords.row or coords.col are used to retrieve header cells. If there are multiple header levels, the
@@ -615,14 +680,14 @@ var Table = /*#__PURE__*/function () {
615
680
  key: "getRowHeader",
616
681
  value: function getRowHeader(row) {
617
682
  var level = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
683
+ if (this.columnFilter.sourceColumnToVisibleRowHeadedColumn(0) === 0) {
684
+ return;
685
+ }
618
686
  var rowHeadersCount = this.wtSettings.getSetting('rowHeaders').length;
619
687
  if (level >= rowHeadersCount) {
620
688
  return;
621
689
  }
622
- var renderedRow = this.rowFilter.sourceToRendered(row);
623
- var visibleRow = renderedRow < 0 ? this.rowFilter.sourceRowToVisibleColHeadedRow(row) : renderedRow;
624
- var parentElement = renderedRow < 0 ? this.THEAD : this.TBODY;
625
- var TR = parentElement.childNodes[visibleRow];
690
+ var TR = this.TBODY.childNodes[this.rowFilter.sourceToRendered(row)];
626
691
  return TR === null || TR === void 0 ? void 0 : TR.childNodes[level];
627
692
  }
628
693
 
@@ -635,6 +700,9 @@ var Table = /*#__PURE__*/function () {
635
700
  }, {
636
701
  key: "getRowHeaders",
637
702
  value: function getRowHeaders(row) {
703
+ if (this.columnFilter.sourceColumnToVisibleRowHeadedColumn(0) === 0) {
704
+ return [];
705
+ }
638
706
  var THs = [];
639
707
  var rowHeadersCount = this.wtSettings.getSetting('rowHeaders').length;
640
708
  for (var renderedRowIndex = 0; renderedRowIndex < rowHeadersCount; renderedRowIndex++) {
@@ -10,6 +10,9 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
10
10
  function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
11
11
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
12
12
  import "core-js/modules/es.function.name.js";
13
+ import "core-js/modules/es.array.from.js";
14
+ import "core-js/modules/es.string.iterator.js";
15
+ import "core-js/modules/es.array.includes.js";
13
16
  import "core-js/modules/es.object.to-string.js";
14
17
  import "core-js/modules/web.dom-collections.for-each.js";
15
18
  import "core-js/modules/es.symbol.to-primitive.js";
@@ -19,10 +22,8 @@ import "core-js/modules/es.symbol.description.js";
19
22
  import "core-js/modules/es.number.constructor.js";
20
23
  import "core-js/modules/es.symbol.iterator.js";
21
24
  import "core-js/modules/es.array.iterator.js";
22
- import "core-js/modules/es.string.iterator.js";
23
25
  import "core-js/modules/web.dom-collections.iterator.js";
24
26
  import "core-js/modules/es.array.slice.js";
25
- import "core-js/modules/es.array.from.js";
26
27
  import "core-js/modules/es.regexp.exec.js";
27
28
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
28
29
  function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
@@ -30,7 +31,7 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d
30
31
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
31
32
  function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
32
33
  function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
33
- import { hasClass, index, offset, removeTextNodes, overlayContainsElement, closest, outerHeight, outerWidth, innerHeight, isVisible as _isVisible } from "../../../helpers/dom/element.mjs";
34
+ import { hasClass, index, offset, removeClass, removeTextNodes, overlayContainsElement, closest, outerHeight, outerWidth, innerHeight, isVisible as _isVisible } from "../../../helpers/dom/element.mjs";
34
35
  import { isFunction } from "../../../helpers/function.mjs";
35
36
  import ColumnFilter from "./filter/column.mjs";
36
37
  import RowFilter from "./filter/row.mjs";
@@ -50,32 +51,6 @@ import { CLONE_TOP, CLONE_BOTTOM, CLONE_INLINE_START, CLONE_TOP_INLINE_START_COR
50
51
  * @abstract
51
52
  */
52
53
  var Table = /*#__PURE__*/function () {
53
- /**
54
- * The walkontable settings.
55
- *
56
- * @protected
57
- * @type {Settings}
58
- */
59
-
60
- /**
61
- * Indicates if the table has height bigger than 0px.
62
- *
63
- * @type {boolean}
64
- */
65
-
66
- /**
67
- * Indicates if the table has width bigger than 0px.
68
- *
69
- * @type {boolean}
70
- */
71
-
72
- /**
73
- * Indicates if the table is visible. By visible, it means that the holder
74
- * element has CSS 'display' property different than 'none'.
75
- *
76
- * @type {boolean}
77
- */
78
-
79
54
  /**
80
55
  *
81
56
  * @abstract
@@ -88,13 +63,35 @@ var Table = /*#__PURE__*/function () {
88
63
  function Table(dataAccessObject, facadeGetter, domBindings, wtSettings, name) {
89
64
  var _this = this;
90
65
  _classCallCheck(this, Table);
66
+ /**
67
+ * The walkontable settings.
68
+ *
69
+ * @protected
70
+ * @type {Settings}
71
+ */
91
72
  _defineProperty(this, "wtSettings", null);
92
73
  _defineProperty(this, "domBindings", void 0);
93
74
  _defineProperty(this, "TBODY", null);
94
75
  _defineProperty(this, "THEAD", null);
95
76
  _defineProperty(this, "COLGROUP", null);
77
+ /**
78
+ * Indicates if the table has height bigger than 0px.
79
+ *
80
+ * @type {boolean}
81
+ */
96
82
  _defineProperty(this, "hasTableHeight", true);
83
+ /**
84
+ * Indicates if the table has width bigger than 0px.
85
+ *
86
+ * @type {boolean}
87
+ */
97
88
  _defineProperty(this, "hasTableWidth", true);
89
+ /**
90
+ * Indicates if the table is visible. By visible, it means that the holder
91
+ * element has CSS 'display' property different than 'none'.
92
+ *
93
+ * @type {boolean}
94
+ */
98
95
  _defineProperty(this, "isTableVisible", false);
99
96
  _defineProperty(this, "tableOffset", 0);
100
97
  _defineProperty(this, "holderOffset", 0);
@@ -385,7 +382,7 @@ var Table = /*#__PURE__*/function () {
385
382
  wtOverlays.refreshAll(); // `refreshAll()` internally already calls `refreshSelections()` method
386
383
  wtOverlays.adjustElementsSize();
387
384
  } else {
388
- this.dataAccessObject.selectionManager.setActiveOverlay(this.facadeGetter()).render(runFastDraw);
385
+ this.refreshSelections(runFastDraw);
389
386
  }
390
387
  if (syncScroll) {
391
388
  wtOverlays.syncScrollWithMaster();
@@ -477,6 +474,74 @@ var Table = /*#__PURE__*/function () {
477
474
  }
478
475
  }
479
476
 
477
+ /**
478
+ * @param {string} className The CSS class name to remove from the table cells.
479
+ */
480
+ }, {
481
+ key: "removeClassFromCells",
482
+ value: function removeClassFromCells(className) {
483
+ var nodes = this.TABLE.querySelectorAll(".".concat(className));
484
+ for (var i = 0, len = nodes.length; i < len; i++) {
485
+ removeClass(nodes[i], className);
486
+ }
487
+ }
488
+
489
+ /**
490
+ * Refresh the table selection by re-rendering Selection instances connected with that instance.
491
+ *
492
+ * @param {boolean} fastDraw If fast drawing is enabled than additionally className clearing is applied.
493
+ */
494
+ }, {
495
+ key: "refreshSelections",
496
+ value: function refreshSelections(fastDraw) {
497
+ var wtSettings = this.wtSettings;
498
+ var selections = this.dataAccessObject.selections;
499
+ if (!selections) {
500
+ return;
501
+ }
502
+ var highlights = Array.from(selections);
503
+ var len = highlights.length;
504
+ if (fastDraw) {
505
+ var classesToRemove = [];
506
+ for (var i = 0; i < len; i++) {
507
+ var _highlights$i$setting = highlights[i].settings,
508
+ highlightHeaderClassName = _highlights$i$setting.highlightHeaderClassName,
509
+ highlightRowClassName = _highlights$i$setting.highlightRowClassName,
510
+ highlightColumnClassName = _highlights$i$setting.highlightColumnClassName;
511
+ var classNames = highlights[i].classNames;
512
+ var classNamesLength = classNames.length;
513
+ for (var j = 0; j < classNamesLength; j++) {
514
+ if (!classesToRemove.includes(classNames[j])) {
515
+ classesToRemove.push(classNames[j]);
516
+ }
517
+ }
518
+ if (highlightHeaderClassName && !classesToRemove.includes(highlightHeaderClassName)) {
519
+ classesToRemove.push(highlightHeaderClassName);
520
+ }
521
+ if (highlightRowClassName && !classesToRemove.includes(highlightRowClassName)) {
522
+ classesToRemove.push(highlightRowClassName);
523
+ }
524
+ if (highlightColumnClassName && !classesToRemove.includes(highlightColumnClassName)) {
525
+ classesToRemove.push(highlightColumnClassName);
526
+ }
527
+ }
528
+ var additionalClassesToRemove = wtSettings.getSetting('onBeforeRemoveCellClassNames');
529
+ if (Array.isArray(additionalClassesToRemove)) {
530
+ for (var _i = 0; _i < additionalClassesToRemove.length; _i++) {
531
+ classesToRemove.push(additionalClassesToRemove[_i]);
532
+ }
533
+ }
534
+ var classesToRemoveLength = classesToRemove.length;
535
+ for (var _i2 = 0; _i2 < classesToRemoveLength; _i2++) {
536
+ // there was no rerender, so we need to remove classNames by ourselves
537
+ this.removeClassFromCells(classesToRemove[_i2]);
538
+ }
539
+ }
540
+ for (var _i3 = 0; _i3 < len; _i3++) {
541
+ highlights[_i3].draw(this.facadeGetter(), fastDraw);
542
+ }
543
+ }
544
+
480
545
  /**
481
546
  * Get cell element at coords.
482
547
  * Negative coords.row or coords.col are used to retrieve header cells. If there are multiple header levels, the
@@ -610,14 +675,14 @@ var Table = /*#__PURE__*/function () {
610
675
  key: "getRowHeader",
611
676
  value: function getRowHeader(row) {
612
677
  var level = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
678
+ if (this.columnFilter.sourceColumnToVisibleRowHeadedColumn(0) === 0) {
679
+ return;
680
+ }
613
681
  var rowHeadersCount = this.wtSettings.getSetting('rowHeaders').length;
614
682
  if (level >= rowHeadersCount) {
615
683
  return;
616
684
  }
617
- var renderedRow = this.rowFilter.sourceToRendered(row);
618
- var visibleRow = renderedRow < 0 ? this.rowFilter.sourceRowToVisibleColHeadedRow(row) : renderedRow;
619
- var parentElement = renderedRow < 0 ? this.THEAD : this.TBODY;
620
- var TR = parentElement.childNodes[visibleRow];
685
+ var TR = this.TBODY.childNodes[this.rowFilter.sourceToRendered(row)];
621
686
  return TR === null || TR === void 0 ? void 0 : TR.childNodes[level];
622
687
  }
623
688
 
@@ -630,6 +695,9 @@ var Table = /*#__PURE__*/function () {
630
695
  }, {
631
696
  key: "getRowHeaders",
632
697
  value: function getRowHeaders(row) {
698
+ if (this.columnFilter.sourceColumnToVisibleRowHeadedColumn(0) === 0) {
699
+ return [];
700
+ }
633
701
  var THs = [];
634
702
  var rowHeadersCount = this.wtSettings.getSetting('rowHeaders').length;
635
703
  for (var renderedRowIndex = 0; renderedRowIndex < rowHeadersCount; renderedRowIndex++) {
package/base.js CHANGED
@@ -16,9 +16,7 @@ exports.CellRange = _src.CellRange;
16
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
17
  // FIXME: Bug in eslint-plugin-import: https://github.com/benmosher/eslint-plugin-import/issues/1883
18
18
  /* eslint-disable import/named */
19
-
20
19
  /* eslint-enable import/named */
21
-
22
20
  // register default mandatory cell type for the Base package
23
21
  (0, _registry2.registerCellType)(_textType.TextCellType);
24
22
 
@@ -46,8 +44,8 @@ Handsontable.hooks = _pluginHooks.default.getSingleton();
46
44
  Handsontable.CellCoords = _src.CellCoords;
47
45
  Handsontable.CellRange = _src.CellRange;
48
46
  Handsontable.packageName = 'handsontable';
49
- Handsontable.buildDate = "09/05/2023 07:28:28";
50
- Handsontable.version = "0.0.0-next-48677e7-20230509";
47
+ Handsontable.buildDate = "10/05/2023 12:06:48";
48
+ Handsontable.version = "0.0.0-next-c73b24c-20230510";
51
49
  Handsontable.languages = {
52
50
  dictionaryKeys: _registry.dictionaryKeys,
53
51
  getLanguageDictionary: _registry.getLanguageDictionary,
package/base.mjs CHANGED
@@ -35,8 +35,8 @@ Handsontable.hooks = Hooks.getSingleton();
35
35
  Handsontable.CellCoords = CellCoords;
36
36
  Handsontable.CellRange = CellRange;
37
37
  Handsontable.packageName = 'handsontable';
38
- Handsontable.buildDate = "09/05/2023 07:28:43";
39
- Handsontable.version = "0.0.0-next-48677e7-20230509";
38
+ Handsontable.buildDate = "10/05/2023 12:07:05";
39
+ Handsontable.version = "0.0.0-next-c73b24c-20230510";
40
40
  Handsontable.languages = {
41
41
  dictionaryKeys: dictionaryKeys,
42
42
  getLanguageDictionary: getLanguageDictionary,
package/core.d.ts CHANGED
@@ -17,7 +17,6 @@ import { BaseValidator } from './validators/base';
17
17
  import { Plugins } from './plugins';
18
18
  import { CellType } from './cellTypes';
19
19
  import { ShortcutManager } from './shortcuts';
20
- import { FocusManager } from './focusManager';
21
20
 
22
21
  type AlterActions = 'insert_row' | 'insert_row_above' | 'insert_row_below' |
23
22
  'insert_col' | 'insert_col_start' | 'insert_col_end' |
@@ -46,8 +45,6 @@ export default class Core {
46
45
  countSourceRows(): number;
47
46
  countVisibleCols(): number;
48
47
  countVisibleRows(): number;
49
- countRowHeaders(): number;
50
- countColHeaders(): number;
51
48
  deselectCell(): void;
52
49
  destroy(): void;
53
50
  destroyEditor(revertOriginal?: boolean, prepareEditorIfNeeded?: boolean): void;
@@ -78,7 +75,6 @@ export default class Core {
78
75
  getDataAtRowProp(row: number, prop: string): CellValue;
79
76
  getDataType(rowFrom: number, columnFrom: number, rowTo: number, columnTo: number): CellType | 'mixed';
80
77
  getDirectionFactor(): 1 | -1;
81
- getFocusManager(): FocusManager;
82
78
  getInstance(): Core;
83
79
  getPlugin<T extends keyof Plugins>(pluginName: T): Plugins[T];
84
80
  getPlugin(pluginName: string): Plugins['basePlugin'];
package/core.js CHANGED
@@ -39,7 +39,6 @@ var _templateLiteralTag = require("./helpers/templateLiteralTag");
39
39
  var _editorManager = _interopRequireDefault(require("./editorManager"));
40
40
  var _eventManager = _interopRequireDefault(require("./eventManager"));
41
41
  var _object = require("./helpers/object");
42
- var _focusManager = _interopRequireDefault(require("./focusManager"));
43
42
  var _array = require("./helpers/array");
44
43
  var _parseTable = require("./utils/parseTable");
45
44
  var _registry = require("./plugins/registry");
@@ -108,7 +107,7 @@ var deprecationWarns = new Set();
108
107
  * :::
109
108
  *
110
109
  * ::: only-for react
111
- * ```jsx{3,7,13}
110
+ * ```jsx
112
111
  * import { useRef } from 'react';
113
112
  *
114
113
  * const hotTableComponent = useRef(null);
@@ -140,7 +139,6 @@ function Core(rootElement, userSettings) {
140
139
  var dataSource;
141
140
  var grid;
142
141
  var editorManager;
143
- var focusManager;
144
142
  var firstRun = true;
145
143
  if ((0, _rootInstance.hasValidParameter)(rootInstanceSymbol)) {
146
144
  (0, _rootInstance.registerAsRootInstance)(this);
@@ -265,6 +263,12 @@ function Core(rootElement, userSettings) {
265
263
  * @type {IndexMapper}
266
264
  */
267
265
  this.rowIndexMapper = new _translations.IndexMapper();
266
+ this.columnIndexMapper.addLocalHook('indexesSequenceChange', function (source) {
267
+ instance.runHooks('afterColumnSequenceChange', source);
268
+ });
269
+ this.rowIndexMapper.addLocalHook('indexesSequenceChange', function (source) {
270
+ instance.runHooks('afterRowSequenceChange', source);
271
+ });
268
272
  dataSource = new _dataSource.default(instance);
269
273
  if (!this.rootElement.id || this.rootElement.id.substring(0, 3) === 'ht_') {
270
274
  this.rootElement.id = this.guid; // if root element does not have an id, assign a random id
@@ -311,12 +315,6 @@ function Core(rootElement, userSettings) {
311
315
  countRowsTranslated: function countRowsTranslated() {
312
316
  return _this.view.countRenderableRows();
313
317
  },
314
- countRowHeaders: function countRowHeaders() {
315
- return _this.countRowHeaders();
316
- },
317
- countColHeaders: function countColHeaders() {
318
- return _this.countColHeaders();
319
- },
320
318
  getShortcutManager: function getShortcutManager() {
321
319
  return instance.getShortcutManager();
322
320
  },
@@ -1115,7 +1113,6 @@ function Core(rootElement, userSettings) {
1115
1113
  this.updateSettings(tableMeta, true);
1116
1114
  this.view = new _tableView.default(this);
1117
1115
  editorManager = _editorManager.default.getInstance(instance, tableMeta, selection);
1118
- focusManager = new _focusManager.default(instance);
1119
1116
  instance.runHooks('init');
1120
1117
  this.forceFullRender = true; // used when data was changed
1121
1118
  this.view.render();
@@ -2451,11 +2448,13 @@ function Core(rootElement, userSettings) {
2451
2448
  };
2452
2449
 
2453
2450
  /**
2454
- * Get value from the selected cell.
2451
+ * Gets the value of the currently focused cell.
2452
+ *
2453
+ * For column headers and row headers, returns `null`.
2455
2454
  *
2456
2455
  * @memberof Core#
2457
2456
  * @function getValue
2458
- * @returns {*} Value of selected cell.
2457
+ * @returns {*} The value of the focused cell.
2459
2458
  */
2460
2459
  this.getValue = function () {
2461
2460
  var sel = instance.getSelectedLast();
@@ -2798,6 +2797,11 @@ function Core(rootElement, userSettings) {
2798
2797
  * __Note__: This method does not participate in data transformation. If the visual data of the table is reordered,
2799
2798
  * sorted or trimmed only physical indexes are correct.
2800
2799
  *
2800
+ * __Note__: This method may return incorrect values for cells that contain
2801
+ * [formulas](@/guides/formulas/formula-calculation.md). This is because `getSourceData()`
2802
+ * operates on source data ([physical indexes](@/api/indexMapper.md)),
2803
+ * whereas formulas operate on visual data (visual indexes).
2804
+ *
2801
2805
  * @memberof Core#
2802
2806
  * @function getSourceData
2803
2807
  * @param {number} [row] From physical row index.
@@ -3147,7 +3151,13 @@ function Core(rootElement, userSettings) {
3147
3151
  };
3148
3152
 
3149
3153
  /**
3150
- * Checks if the data format and config allows user to modify the column structure.
3154
+ * Checks if your [data format](@/guides/getting-started/binding-to-data.md#compatible-data-types)
3155
+ * and [configuration options](@/guides/getting-started/configuration-options.md)
3156
+ * allow for changing the number of columns.
3157
+ *
3158
+ * Returns `false` when your data is an array of objects,
3159
+ * or when you use the [`columns`](@/api/options.md#columns) option.
3160
+ * Otherwise, returns `true`.
3151
3161
  *
3152
3162
  * @memberof Core#
3153
3163
  * @function isColumnModificationAllowed
@@ -3713,30 +3723,6 @@ function Core(rootElement, userSettings) {
3713
3723
  return instance.view._wt.drawn ? instance.view._wt.wtTable.getVisibleColumnsCount() : -1;
3714
3724
  };
3715
3725
 
3716
- /**
3717
- * Returns the number of rendered row headers.
3718
- *
3719
- * @since 13.0.0
3720
- * @memberof Core#
3721
- * @function countRowHeaders
3722
- * @returns {number} Number of row headers.
3723
- */
3724
- this.countRowHeaders = function () {
3725
- return this.view.getRowHeadersCount();
3726
- };
3727
-
3728
- /**
3729
- * Returns the number of rendered column headers.
3730
- *
3731
- * @since 13.0.0
3732
- * @memberof Core#
3733
- * @function countColHeaders
3734
- * @returns {number} Number of column headers.
3735
- */
3736
- this.countColHeaders = function () {
3737
- return this.view.getColumnHeadersCount();
3738
- };
3739
-
3740
3726
  /**
3741
3727
  * Returns the number of empty rows. If the optional ending parameter is `true`, returns the
3742
3728
  * number of empty rows at the bottom of the table.
@@ -4137,8 +4123,6 @@ function Core(rootElement, userSettings) {
4137
4123
  if (datamap) {
4138
4124
  datamap.destroy();
4139
4125
  }
4140
- instance.rowIndexMapper = null;
4141
- instance.columnIndexMapper = null;
4142
4126
  datamap = null;
4143
4127
  grid = null;
4144
4128
  selection = null;
@@ -4494,18 +4478,6 @@ function Core(rootElement, userSettings) {
4494
4478
  this.getShortcutManager = function () {
4495
4479
  return shortcutManager;
4496
4480
  };
4497
-
4498
- /**
4499
- * Return the Focus Manager responsible for managing the browser's focus in the table.
4500
- *
4501
- * @memberof Core#
4502
- * @since 13.0.0
4503
- * @function getFocusManager
4504
- * @returns {FocusManager}
4505
- */
4506
- this.getFocusManager = function () {
4507
- return focusManager;
4508
- };
4509
4481
  var gridContext = shortcutManager.addContext('grid');
4510
4482
  var gridConfig = {
4511
4483
  runOnlyIf: function runOnlyIf() {
@@ -4515,7 +4487,7 @@ function Core(rootElement, userSettings) {
4515
4487
  };
4516
4488
  shortcutManager.setActiveContextName('grid');
4517
4489
  gridContext.addShortcuts([{
4518
- keys: [['Control/Meta', 'A'], ['Control/Meta', 'Shift', 'Space']],
4490
+ keys: [['Control/Meta', 'A']],
4519
4491
  callback: function callback() {
4520
4492
  instance.selectAll();
4521
4493
  }