handsontable 0.0.0-next-5e7f0fe-20230504 → 0.0.0-next-48677e7-20230509

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/cell/coords.js +40 -13
  2. package/3rdparty/walkontable/src/cell/coords.mjs +40 -13
  3. package/3rdparty/walkontable/src/cell/range.js +29 -25
  4. package/3rdparty/walkontable/src/cell/range.mjs +28 -24
  5. package/3rdparty/walkontable/src/core/_base.js +9 -3
  6. package/3rdparty/walkontable/src/core/_base.mjs +9 -3
  7. package/3rdparty/walkontable/src/core/clone.js +2 -2
  8. package/3rdparty/walkontable/src/core/clone.mjs +2 -2
  9. package/3rdparty/walkontable/src/core/core.js +3 -2
  10. package/3rdparty/walkontable/src/core/core.mjs +3 -2
  11. package/3rdparty/walkontable/src/event.js +12 -10
  12. package/3rdparty/walkontable/src/event.mjs +12 -10
  13. package/3rdparty/walkontable/src/facade/core.js +2 -2
  14. package/3rdparty/walkontable/src/facade/core.mjs +2 -2
  15. package/3rdparty/walkontable/src/index.js +10 -2
  16. package/3rdparty/walkontable/src/index.mjs +2 -2
  17. package/3rdparty/walkontable/src/overlay/_base.js +8 -7
  18. package/3rdparty/walkontable/src/overlay/_base.mjs +8 -7
  19. package/3rdparty/walkontable/src/overlay/bottom.js +7 -6
  20. package/3rdparty/walkontable/src/overlay/bottom.mjs +7 -6
  21. package/3rdparty/walkontable/src/overlay/inlineStart.js +2 -4
  22. package/3rdparty/walkontable/src/overlay/inlineStart.mjs +2 -4
  23. package/3rdparty/walkontable/src/overlay/top.js +9 -10
  24. package/3rdparty/walkontable/src/overlay/top.mjs +9 -10
  25. package/3rdparty/walkontable/src/overlay/topInlineStartCorner.js +12 -10
  26. package/3rdparty/walkontable/src/overlay/topInlineStartCorner.mjs +12 -10
  27. package/3rdparty/walkontable/src/overlays.js +64 -55
  28. package/3rdparty/walkontable/src/overlays.mjs +64 -55
  29. package/3rdparty/walkontable/src/renderer/table.js +2 -0
  30. package/3rdparty/walkontable/src/renderer/table.mjs +2 -0
  31. package/3rdparty/walkontable/src/scroll.js +23 -20
  32. package/3rdparty/walkontable/src/scroll.mjs +23 -20
  33. package/3rdparty/walkontable/src/{border.js → selection/border/border.js} +7 -12
  34. package/3rdparty/walkontable/src/{border.mjs → selection/border/border.mjs} +7 -12
  35. package/3rdparty/walkontable/src/selection/border/constants.js +18 -0
  36. package/3rdparty/walkontable/src/selection/border/constants.mjs +13 -0
  37. package/3rdparty/walkontable/src/selection/constants.js +63 -0
  38. package/3rdparty/walkontable/src/selection/constants.mjs +51 -0
  39. package/3rdparty/walkontable/src/selection/index.js +30 -0
  40. package/3rdparty/walkontable/src/selection/index.mjs +5 -0
  41. package/3rdparty/walkontable/src/selection/manager.js +334 -0
  42. package/3rdparty/walkontable/src/selection/manager.mjs +328 -0
  43. package/3rdparty/walkontable/src/selection/scanner.js +363 -0
  44. package/3rdparty/walkontable/src/selection/scanner.mjs +359 -0
  45. package/3rdparty/walkontable/src/selection/selection.js +133 -0
  46. package/3rdparty/walkontable/src/selection/selection.mjs +127 -0
  47. package/3rdparty/walkontable/src/settings.js +15 -13
  48. package/3rdparty/walkontable/src/settings.mjs +15 -13
  49. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +9 -0
  50. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +9 -0
  51. package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +9 -0
  52. package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +9 -0
  53. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.js +9 -0
  54. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.mjs +9 -0
  55. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +9 -0
  56. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +9 -0
  57. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +9 -0
  58. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +9 -0
  59. package/3rdparty/walkontable/src/table.js +33 -101
  60. package/3rdparty/walkontable/src/table.mjs +34 -102
  61. package/base.js +4 -2
  62. package/base.mjs +2 -2
  63. package/core.d.ts +4 -0
  64. package/core.js +49 -8
  65. package/core.mjs +49 -8
  66. package/dataMap/dataSource.js +5 -5
  67. package/dataMap/dataSource.mjs +5 -5
  68. package/dataMap/metaManager/metaSchema.js +7 -0
  69. package/dataMap/metaManager/metaSchema.mjs +7 -0
  70. package/dist/handsontable.css +7 -2
  71. package/dist/handsontable.full.css +7 -2
  72. package/dist/handsontable.full.js +9409 -9084
  73. package/dist/handsontable.full.min.css +3 -3
  74. package/dist/handsontable.full.min.js +115 -123
  75. package/dist/handsontable.js +9497 -9171
  76. package/dist/handsontable.min.css +3 -3
  77. package/dist/handsontable.min.js +3 -11
  78. package/dist/languages/all.js +0 -133
  79. package/dist/languages/ar-AR.js +0 -7
  80. package/dist/languages/cs-CZ.js +0 -7
  81. package/dist/languages/de-CH.js +0 -7
  82. package/dist/languages/de-DE.js +0 -7
  83. package/dist/languages/en-US.js +0 -7
  84. package/dist/languages/es-MX.js +0 -7
  85. package/dist/languages/fr-FR.js +0 -7
  86. package/dist/languages/it-IT.js +0 -7
  87. package/dist/languages/ja-JP.js +0 -7
  88. package/dist/languages/ko-KR.js +0 -7
  89. package/dist/languages/lv-LV.js +0 -7
  90. package/dist/languages/nb-NO.js +0 -7
  91. package/dist/languages/nl-NL.js +0 -7
  92. package/dist/languages/pl-PL.js +0 -7
  93. package/dist/languages/pt-BR.js +0 -7
  94. package/dist/languages/ru-RU.js +0 -7
  95. package/dist/languages/sr-SP.js +0 -7
  96. package/dist/languages/zh-CN.js +0 -7
  97. package/dist/languages/zh-TW.js +0 -7
  98. package/editorManager.js +7 -3
  99. package/editorManager.mjs +7 -3
  100. package/editors/textEditor/textEditor.js +3 -16
  101. package/editors/textEditor/textEditor.mjs +4 -17
  102. package/focusManager.d.ts +12 -0
  103. package/focusManager.js +249 -0
  104. package/focusManager.mjs +245 -0
  105. package/helpers/dom/element.js +11 -0
  106. package/helpers/dom/element.mjs +10 -0
  107. package/helpers/mixed.js +1 -1
  108. package/helpers/mixed.mjs +1 -1
  109. package/i18n/languages/ar-AR.js +1 -7
  110. package/i18n/languages/cs-CZ.js +1 -7
  111. package/i18n/languages/de-CH.js +1 -7
  112. package/i18n/languages/de-DE.js +1 -7
  113. package/i18n/languages/en-US.js +1 -7
  114. package/i18n/languages/es-MX.js +1 -7
  115. package/i18n/languages/fr-FR.js +1 -7
  116. package/i18n/languages/it-IT.js +1 -7
  117. package/i18n/languages/ja-JP.js +1 -7
  118. package/i18n/languages/ko-KR.js +1 -7
  119. package/i18n/languages/lv-LV.js +1 -7
  120. package/i18n/languages/nb-NO.js +1 -7
  121. package/i18n/languages/nl-NL.js +1 -7
  122. package/i18n/languages/pl-PL.js +1 -7
  123. package/i18n/languages/pt-BR.js +1 -7
  124. package/i18n/languages/ru-RU.js +1 -7
  125. package/i18n/languages/sr-SP.js +1 -7
  126. package/i18n/languages/zh-CN.js +1 -7
  127. package/i18n/languages/zh-TW.js +1 -7
  128. package/languages/all.js +0 -133
  129. package/languages/ar-AR.js +0 -7
  130. package/languages/cs-CZ.js +0 -7
  131. package/languages/de-CH.js +0 -7
  132. package/languages/de-DE.js +0 -7
  133. package/languages/en-US.js +0 -7
  134. package/languages/es-MX.js +0 -7
  135. package/languages/fr-FR.js +0 -7
  136. package/languages/index.js +0 -133
  137. package/languages/it-IT.js +0 -7
  138. package/languages/ja-JP.js +0 -7
  139. package/languages/ko-KR.js +0 -7
  140. package/languages/lv-LV.js +0 -7
  141. package/languages/nb-NO.js +0 -7
  142. package/languages/nl-NL.js +0 -7
  143. package/languages/pl-PL.js +0 -7
  144. package/languages/pt-BR.js +0 -7
  145. package/languages/ru-RU.js +0 -7
  146. package/languages/sr-SP.js +0 -7
  147. package/languages/zh-CN.js +0 -7
  148. package/languages/zh-TW.js +0 -7
  149. package/package.json +2 -3
  150. package/pluginHooks.js +7 -17
  151. package/pluginHooks.mjs +4 -16
  152. package/plugins/autoRowSize/autoRowSize.js +2 -2
  153. package/plugins/autoRowSize/autoRowSize.mjs +2 -2
  154. package/plugins/copyPaste/copyPaste.js +12 -93
  155. package/plugins/copyPaste/copyPaste.mjs +12 -93
  156. package/plugins/copyPaste/copyableRanges.js +31 -25
  157. package/plugins/copyPaste/copyableRanges.mjs +24 -18
  158. package/plugins/customBorders/customBorders.js +6 -2
  159. package/plugins/customBorders/customBorders.mjs +7 -3
  160. package/plugins/filters/filters.js +0 -5
  161. package/plugins/filters/filters.mjs +0 -5
  162. package/plugins/formulas/formulas.js +168 -190
  163. package/plugins/formulas/formulas.mjs +168 -190
  164. package/plugins/mergeCells/mergeCells.js +0 -16
  165. package/plugins/mergeCells/mergeCells.mjs +0 -16
  166. package/plugins/nestedHeaders/nestedHeaders.js +3 -4
  167. package/plugins/nestedHeaders/nestedHeaders.mjs +3 -4
  168. package/plugins/nestedHeaders/stateManager/headersTree.js +26 -23
  169. package/plugins/nestedHeaders/stateManager/headersTree.mjs +23 -20
  170. package/plugins/nestedHeaders/stateManager/index.js +3 -3
  171. package/plugins/nestedHeaders/stateManager/matrixGenerator.js +0 -1
  172. package/plugins/nestedHeaders/stateManager/settingsNormalizer.js +1 -1
  173. package/plugins/nestedHeaders/utils/ghostTable.js +35 -30
  174. package/plugins/nestedHeaders/utils/ghostTable.mjs +35 -30
  175. package/plugins/registry.js +1 -3
  176. package/plugins/undoRedo/undoRedo.js +1 -0
  177. package/plugins/undoRedo/undoRedo.mjs +1 -0
  178. package/renderers/baseRenderer/baseRenderer.js +3 -0
  179. package/renderers/baseRenderer/baseRenderer.mjs +3 -0
  180. package/selection/highlight/highlight.js +335 -133
  181. package/selection/highlight/highlight.mjs +325 -129
  182. package/selection/highlight/types/activeHeader.js +10 -9
  183. package/selection/highlight/types/activeHeader.mjs +10 -8
  184. package/selection/highlight/types/area.js +12 -27
  185. package/selection/highlight/types/area.mjs +16 -30
  186. package/selection/highlight/types/areaLayered.js +54 -0
  187. package/selection/highlight/types/areaLayered.mjs +49 -0
  188. package/selection/highlight/types/column.js +50 -0
  189. package/selection/highlight/types/column.mjs +45 -0
  190. package/selection/highlight/types/customSelection.js +7 -10
  191. package/selection/highlight/types/customSelection.mjs +7 -9
  192. package/selection/highlight/types/fill.js +5 -8
  193. package/selection/highlight/types/fill.mjs +5 -7
  194. package/selection/highlight/types/{cell.js → focus.js} +5 -8
  195. package/selection/highlight/types/{cell.mjs → focus.mjs} +5 -7
  196. package/selection/highlight/types/header.js +10 -20
  197. package/selection/highlight/types/header.mjs +10 -19
  198. package/selection/highlight/types/{index.js → row.js} +27 -31
  199. package/selection/highlight/types/{index.mjs → row.mjs} +24 -29
  200. package/selection/highlight/visualSelection.js +12 -21
  201. package/selection/highlight/visualSelection.mjs +12 -21
  202. package/selection/index.js +4 -7
  203. package/selection/index.mjs +2 -3
  204. package/selection/selection.js +88 -46
  205. package/selection/selection.mjs +82 -44
  206. package/settings.d.ts +1 -0
  207. package/tableView.js +94 -66
  208. package/tableView.mjs +94 -66
  209. package/translations/changesObservable/observable.js +46 -41
  210. package/translations/changesObservable/observable.mjs +41 -36
  211. package/translations/changesObservable/observer.js +1 -1
  212. package/translations/indexMapper.js +0 -21
  213. package/translations/indexMapper.mjs +0 -21
  214. package/utils/dataStructures/tree.js +18 -15
  215. package/utils/dataStructures/tree.mjs +18 -15
  216. package/utils/parseTable.js +1 -5
  217. package/utils/parseTable.mjs +1 -5
  218. package/3rdparty/walkontable/src/selection.js +0 -354
  219. package/3rdparty/walkontable/src/selection.mjs +0 -348
  220. package/plugins/copyPaste/focusableElement.js +0 -219
  221. package/plugins/copyPaste/focusableElement.mjs +0 -213
  222. package/plugins/formulas/indexSyncer/axisSyncer.js +0 -379
  223. package/plugins/formulas/indexSyncer/axisSyncer.mjs +0 -374
  224. package/plugins/formulas/indexSyncer/index.js +0 -225
  225. package/plugins/formulas/indexSyncer/index.mjs +0 -219
  226. package/selection/highlight/constants.js +0 -16
  227. package/selection/highlight/constants.mjs +0 -6
package/core.js CHANGED
@@ -39,6 +39,7 @@ 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"));
42
43
  var _array = require("./helpers/array");
43
44
  var _parseTable = require("./utils/parseTable");
44
45
  var _registry = require("./plugins/registry");
@@ -107,7 +108,7 @@ var deprecationWarns = new Set();
107
108
  * :::
108
109
  *
109
110
  * ::: only-for react
110
- * ```jsx
111
+ * ```jsx{3,7,13}
111
112
  * import { useRef } from 'react';
112
113
  *
113
114
  * const hotTableComponent = useRef(null);
@@ -139,6 +140,7 @@ function Core(rootElement, userSettings) {
139
140
  var dataSource;
140
141
  var grid;
141
142
  var editorManager;
143
+ var focusManager;
142
144
  var firstRun = true;
143
145
  if ((0, _rootInstance.hasValidParameter)(rootInstanceSymbol)) {
144
146
  (0, _rootInstance.registerAsRootInstance)(this);
@@ -263,12 +265,6 @@ function Core(rootElement, userSettings) {
263
265
  * @type {IndexMapper}
264
266
  */
265
267
  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
- });
272
268
  dataSource = new _dataSource.default(instance);
273
269
  if (!this.rootElement.id || this.rootElement.id.substring(0, 3) === 'ht_') {
274
270
  this.rootElement.id = this.guid; // if root element does not have an id, assign a random id
@@ -315,6 +311,12 @@ function Core(rootElement, userSettings) {
315
311
  countRowsTranslated: function countRowsTranslated() {
316
312
  return _this.view.countRenderableRows();
317
313
  },
314
+ countRowHeaders: function countRowHeaders() {
315
+ return _this.countRowHeaders();
316
+ },
317
+ countColHeaders: function countColHeaders() {
318
+ return _this.countColHeaders();
319
+ },
318
320
  getShortcutManager: function getShortcutManager() {
319
321
  return instance.getShortcutManager();
320
322
  },
@@ -1113,6 +1115,7 @@ function Core(rootElement, userSettings) {
1113
1115
  this.updateSettings(tableMeta, true);
1114
1116
  this.view = new _tableView.default(this);
1115
1117
  editorManager = _editorManager.default.getInstance(instance, tableMeta, selection);
1118
+ focusManager = new _focusManager.default(instance);
1116
1119
  instance.runHooks('init');
1117
1120
  this.forceFullRender = true; // used when data was changed
1118
1121
  this.view.render();
@@ -3710,6 +3713,30 @@ function Core(rootElement, userSettings) {
3710
3713
  return instance.view._wt.drawn ? instance.view._wt.wtTable.getVisibleColumnsCount() : -1;
3711
3714
  };
3712
3715
 
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
+
3713
3740
  /**
3714
3741
  * Returns the number of empty rows. If the optional ending parameter is `true`, returns the
3715
3742
  * number of empty rows at the bottom of the table.
@@ -4110,6 +4137,8 @@ function Core(rootElement, userSettings) {
4110
4137
  if (datamap) {
4111
4138
  datamap.destroy();
4112
4139
  }
4140
+ instance.rowIndexMapper = null;
4141
+ instance.columnIndexMapper = null;
4113
4142
  datamap = null;
4114
4143
  grid = null;
4115
4144
  selection = null;
@@ -4465,6 +4494,18 @@ function Core(rootElement, userSettings) {
4465
4494
  this.getShortcutManager = function () {
4466
4495
  return shortcutManager;
4467
4496
  };
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
+ };
4468
4509
  var gridContext = shortcutManager.addContext('grid');
4469
4510
  var gridConfig = {
4470
4511
  runOnlyIf: function runOnlyIf() {
@@ -4474,7 +4515,7 @@ function Core(rootElement, userSettings) {
4474
4515
  };
4475
4516
  shortcutManager.setActiveContextName('grid');
4476
4517
  gridContext.addShortcuts([{
4477
- keys: [['Control/Meta', 'A']],
4518
+ keys: [['Control/Meta', 'A'], ['Control/Meta', 'Shift', 'Space']],
4478
4519
  callback: function callback() {
4479
4520
  instance.selectAll();
4480
4521
  }
package/core.mjs CHANGED
@@ -48,6 +48,7 @@ import { toSingleLine } from "./helpers/templateLiteralTag.mjs";
48
48
  import EditorManager from "./editorManager.mjs";
49
49
  import EventManager from "./eventManager.mjs";
50
50
  import { deepClone, duckSchema, isObjectEqual, isObject, deepObjectSize, hasOwnProperty, createObjectPropListener, objectEach } from "./helpers/object.mjs";
51
+ import FocusManager from "./focusManager.mjs";
51
52
  import { arrayMap, arrayEach, arrayReduce, getDifferenceOfArrays, stringToArray, pivot } from "./helpers/array.mjs";
52
53
  import { instanceToHTML } from "./utils/parseTable.mjs";
53
54
  import { getPlugin, getPluginsNames } from "./plugins/registry.mjs";
@@ -102,7 +103,7 @@ var deprecationWarns = new Set();
102
103
  * :::
103
104
  *
104
105
  * ::: only-for react
105
- * ```jsx
106
+ * ```jsx{3,7,13}
106
107
  * import { useRef } from 'react';
107
108
  *
108
109
  * const hotTableComponent = useRef(null);
@@ -134,6 +135,7 @@ export default function Core(rootElement, userSettings) {
134
135
  var dataSource;
135
136
  var grid;
136
137
  var editorManager;
138
+ var focusManager;
137
139
  var firstRun = true;
138
140
  if (hasValidParameter(rootInstanceSymbol)) {
139
141
  registerAsRootInstance(this);
@@ -258,12 +260,6 @@ export default function Core(rootElement, userSettings) {
258
260
  * @type {IndexMapper}
259
261
  */
260
262
  this.rowIndexMapper = new IndexMapper();
261
- this.columnIndexMapper.addLocalHook('indexesSequenceChange', function (source) {
262
- instance.runHooks('afterColumnSequenceChange', source);
263
- });
264
- this.rowIndexMapper.addLocalHook('indexesSequenceChange', function (source) {
265
- instance.runHooks('afterRowSequenceChange', source);
266
- });
267
263
  dataSource = new DataSource(instance);
268
264
  if (!this.rootElement.id || this.rootElement.id.substring(0, 3) === 'ht_') {
269
265
  this.rootElement.id = this.guid; // if root element does not have an id, assign a random id
@@ -310,6 +306,12 @@ export default function Core(rootElement, userSettings) {
310
306
  countRowsTranslated: function countRowsTranslated() {
311
307
  return _this.view.countRenderableRows();
312
308
  },
309
+ countRowHeaders: function countRowHeaders() {
310
+ return _this.countRowHeaders();
311
+ },
312
+ countColHeaders: function countColHeaders() {
313
+ return _this.countColHeaders();
314
+ },
313
315
  getShortcutManager: function getShortcutManager() {
314
316
  return instance.getShortcutManager();
315
317
  },
@@ -1108,6 +1110,7 @@ export default function Core(rootElement, userSettings) {
1108
1110
  this.updateSettings(tableMeta, true);
1109
1111
  this.view = new TableView(this);
1110
1112
  editorManager = EditorManager.getInstance(instance, tableMeta, selection);
1113
+ focusManager = new FocusManager(instance);
1111
1114
  instance.runHooks('init');
1112
1115
  this.forceFullRender = true; // used when data was changed
1113
1116
  this.view.render();
@@ -3705,6 +3708,30 @@ export default function Core(rootElement, userSettings) {
3705
3708
  return instance.view._wt.drawn ? instance.view._wt.wtTable.getVisibleColumnsCount() : -1;
3706
3709
  };
3707
3710
 
3711
+ /**
3712
+ * Returns the number of rendered row headers.
3713
+ *
3714
+ * @since 13.0.0
3715
+ * @memberof Core#
3716
+ * @function countRowHeaders
3717
+ * @returns {number} Number of row headers.
3718
+ */
3719
+ this.countRowHeaders = function () {
3720
+ return this.view.getRowHeadersCount();
3721
+ };
3722
+
3723
+ /**
3724
+ * Returns the number of rendered column headers.
3725
+ *
3726
+ * @since 13.0.0
3727
+ * @memberof Core#
3728
+ * @function countColHeaders
3729
+ * @returns {number} Number of column headers.
3730
+ */
3731
+ this.countColHeaders = function () {
3732
+ return this.view.getColumnHeadersCount();
3733
+ };
3734
+
3708
3735
  /**
3709
3736
  * Returns the number of empty rows. If the optional ending parameter is `true`, returns the
3710
3737
  * number of empty rows at the bottom of the table.
@@ -4105,6 +4132,8 @@ export default function Core(rootElement, userSettings) {
4105
4132
  if (datamap) {
4106
4133
  datamap.destroy();
4107
4134
  }
4135
+ instance.rowIndexMapper = null;
4136
+ instance.columnIndexMapper = null;
4108
4137
  datamap = null;
4109
4138
  grid = null;
4110
4139
  selection = null;
@@ -4460,6 +4489,18 @@ export default function Core(rootElement, userSettings) {
4460
4489
  this.getShortcutManager = function () {
4461
4490
  return shortcutManager;
4462
4491
  };
4492
+
4493
+ /**
4494
+ * Return the Focus Manager responsible for managing the browser's focus in the table.
4495
+ *
4496
+ * @memberof Core#
4497
+ * @since 13.0.0
4498
+ * @function getFocusManager
4499
+ * @returns {FocusManager}
4500
+ */
4501
+ this.getFocusManager = function () {
4502
+ return focusManager;
4503
+ };
4463
4504
  var gridContext = shortcutManager.addContext('grid');
4464
4505
  var gridConfig = {
4465
4506
  runOnlyIf: function runOnlyIf() {
@@ -4469,7 +4510,7 @@ export default function Core(rootElement, userSettings) {
4469
4510
  };
4470
4511
  shortcutManager.setActiveContextName('grid');
4471
4512
  gridContext.addShortcuts([{
4472
- keys: [['Control/Meta', 'A']],
4513
+ keys: [['Control/Meta', 'A'], ['Control/Meta', 'Shift', 'Space']],
4473
4514
  callback: function callback() {
4474
4515
  instance.selectAll();
4475
4516
  }
@@ -195,7 +195,7 @@ var DataSource = /*#__PURE__*/function () {
195
195
  }
196
196
  if (this.hot.hasHook('modifySourceData')) {
197
197
  var valueHolder = (0, _object.createObjectPropListener)(value);
198
- this.hot.runHooks('modifySourceData', row, column, valueHolder, 'set');
198
+ this.hot.runHooks('modifySourceData', row, this.propToCol(column), valueHolder, 'set');
199
199
  if (valueHolder.isTouched()) {
200
200
  value = valueHolder.value;
201
201
  }
@@ -232,7 +232,7 @@ var DataSource = /*#__PURE__*/function () {
232
232
  }
233
233
  if (this.hot.hasHook('modifySourceData')) {
234
234
  var valueHolder = (0, _object.createObjectPropListener)(result);
235
- this.hot.runHooks('modifySourceData', row, column, valueHolder, 'get');
235
+ this.hot.runHooks('modifySourceData', row, this.colToProp(column), valueHolder, 'get');
236
236
  if (valueHolder.isTouched()) {
237
237
  result = valueHolder.value;
238
238
  }
@@ -244,14 +244,14 @@ var DataSource = /*#__PURE__*/function () {
244
244
  * Returns a single value from the data.
245
245
  *
246
246
  * @param {number} row Physical row index.
247
- * @param {number} columnOrProp Visual column index or property.
247
+ * @param {number} column Visual column index.
248
248
  * @returns {*}
249
249
  */
250
250
  }, {
251
251
  key: "getAtCell",
252
- value: function getAtCell(row, columnOrProp) {
252
+ value: function getAtCell(row, column) {
253
253
  var dataRow = this.modifyRowData(row);
254
- return this.getAtPhysicalCell(row, this.colToProp(columnOrProp), dataRow);
254
+ return this.getAtPhysicalCell(row, this.colToProp(column), dataRow);
255
255
  }
256
256
 
257
257
  /**
@@ -191,7 +191,7 @@ var DataSource = /*#__PURE__*/function () {
191
191
  }
192
192
  if (this.hot.hasHook('modifySourceData')) {
193
193
  var valueHolder = createObjectPropListener(value);
194
- this.hot.runHooks('modifySourceData', row, column, valueHolder, 'set');
194
+ this.hot.runHooks('modifySourceData', row, this.propToCol(column), valueHolder, 'set');
195
195
  if (valueHolder.isTouched()) {
196
196
  value = valueHolder.value;
197
197
  }
@@ -228,7 +228,7 @@ var DataSource = /*#__PURE__*/function () {
228
228
  }
229
229
  if (this.hot.hasHook('modifySourceData')) {
230
230
  var valueHolder = createObjectPropListener(result);
231
- this.hot.runHooks('modifySourceData', row, column, valueHolder, 'get');
231
+ this.hot.runHooks('modifySourceData', row, this.colToProp(column), valueHolder, 'get');
232
232
  if (valueHolder.isTouched()) {
233
233
  result = valueHolder.value;
234
234
  }
@@ -240,14 +240,14 @@ var DataSource = /*#__PURE__*/function () {
240
240
  * Returns a single value from the data.
241
241
  *
242
242
  * @param {number} row Physical row index.
243
- * @param {number} columnOrProp Visual column index or property.
243
+ * @param {number} column Visual column index.
244
244
  * @returns {*}
245
245
  */
246
246
  }, {
247
247
  key: "getAtCell",
248
- value: function getAtCell(row, columnOrProp) {
248
+ value: function getAtCell(row, column) {
249
249
  var dataRow = this.modifyRowData(row);
250
- return this.getAtPhysicalCell(row, this.colToProp(columnOrProp), dataRow);
250
+ return this.getAtPhysicalCell(row, this.colToProp(column), dataRow);
251
251
  }
252
252
 
253
253
  /**
@@ -2437,6 +2437,13 @@ var _default = function _default() {
2437
2437
  * ```
2438
2438
  */
2439
2439
  invalidCellClassName: 'htInvalid',
2440
+ /**
2441
+ * The `imeFastEdit` option allows using the "fast edit" feature for the IME users. It's disabled by default
2442
+ * because of its incompatibility with some of the accessibility features.
2443
+ *
2444
+ * Enabling this option can make a negative impact on how some screen readers handle reading the table cells.
2445
+ */
2446
+ imeFastEdit: false,
2440
2447
  /**
2441
2448
  * The `isEmptyCol` option lets you define your own custom method
2442
2449
  * for checking if a column at a given visual index is empty.
@@ -2433,6 +2433,13 @@ export default (function () {
2433
2433
  * ```
2434
2434
  */
2435
2435
  invalidCellClassName: 'htInvalid',
2436
+ /**
2437
+ * The `imeFastEdit` option allows using the "fast edit" feature for the IME users. It's disabled by default
2438
+ * because of its incompatibility with some of the accessibility features.
2439
+ *
2440
+ * Enabling this option can make a negative impact on how some screen readers handle reading the table cells.
2441
+ */
2442
+ imeFastEdit: false,
2436
2443
  /**
2437
2444
  * The `isEmptyCol` option lets you define your own custom method
2438
2445
  * for checking if a column at a given visual index is empty.
@@ -25,8 +25,8 @@
25
25
  * INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING FROM
26
26
  * USE OR INABILITY TO USE THIS SOFTWARE.
27
27
  *
28
- * Version: 0.0.0-next-5e7f0fe-20230504
29
- * Release date: 28/03/2023 (built at 04/05/2023 15:26:23)
28
+ * Version: 0.0.0-next-48677e7-20230509
29
+ * Release date: 28/03/2023 (built at 09/05/2023 07:28:55)
30
30
  */
31
31
  /**
32
32
  * Fix for bootstrap styles
@@ -607,6 +607,11 @@ innerBorderBottom - Property controlled by bottom overlay
607
607
  opacity: 0.58;
608
608
  }
609
609
 
610
+ .handsontable tbody th.current,
611
+ .handsontable thead th.current {
612
+ box-shadow: inset 0 0 0 2px #5292f7;
613
+ }
614
+
610
615
  .handsontable tbody th.ht__highlight,
611
616
  .handsontable thead th.ht__highlight {
612
617
  background-color: #dcdcdc;
@@ -25,8 +25,8 @@
25
25
  * INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING FROM
26
26
  * USE OR INABILITY TO USE THIS SOFTWARE.
27
27
  *
28
- * Version: 0.0.0-next-5e7f0fe-20230504
29
- * Release date: 28/03/2023 (built at 04/05/2023 15:26:23)
28
+ * Version: 0.0.0-next-48677e7-20230509
29
+ * Release date: 28/03/2023 (built at 09/05/2023 07:28:55)
30
30
  */
31
31
  /**
32
32
  * Fix for bootstrap styles
@@ -607,6 +607,11 @@ innerBorderBottom - Property controlled by bottom overlay
607
607
  opacity: 0.58;
608
608
  }
609
609
 
610
+ .handsontable tbody th.current,
611
+ .handsontable thead th.current {
612
+ box-shadow: inset 0 0 0 2px #5292f7;
613
+ }
614
+
610
615
  .handsontable tbody th.ht__highlight,
611
616
  .handsontable thead th.ht__highlight {
612
617
  background-color: #dcdcdc;