handsontable 12.0.0 → 12.1.1

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.
Files changed (301) hide show
  1. package/3rdparty/walkontable/src/core/clone.js +2 -2
  2. package/3rdparty/walkontable/src/core/clone.mjs +2 -2
  3. package/3rdparty/walkontable/src/core/core.js +2 -2
  4. package/3rdparty/walkontable/src/core/core.mjs +2 -2
  5. package/3rdparty/walkontable/src/overlay/bottom.js +20 -14
  6. package/3rdparty/walkontable/src/overlay/bottom.mjs +20 -14
  7. package/3rdparty/walkontable/src/overlay/bottomInlineStartCorner.js +14 -8
  8. package/3rdparty/walkontable/src/overlay/bottomInlineStartCorner.mjs +14 -8
  9. package/3rdparty/walkontable/src/overlay/inlineStart.js +14 -5
  10. package/3rdparty/walkontable/src/overlay/inlineStart.mjs +14 -5
  11. package/3rdparty/walkontable/src/overlay/top.js +12 -3
  12. package/3rdparty/walkontable/src/overlay/top.mjs +12 -3
  13. package/3rdparty/walkontable/src/overlay/topInlineStartCorner.js +3 -3
  14. package/3rdparty/walkontable/src/overlay/topInlineStartCorner.mjs +3 -3
  15. package/3rdparty/walkontable/src/overlays.js +2 -2
  16. package/3rdparty/walkontable/src/overlays.mjs +2 -2
  17. package/3rdparty/walkontable/src/renderer/cells.js +2 -2
  18. package/3rdparty/walkontable/src/renderer/cells.mjs +2 -2
  19. package/3rdparty/walkontable/src/renderer/colGroup.js +2 -2
  20. package/3rdparty/walkontable/src/renderer/colGroup.mjs +2 -2
  21. package/3rdparty/walkontable/src/renderer/columnHeaders.js +2 -2
  22. package/3rdparty/walkontable/src/renderer/columnHeaders.mjs +2 -2
  23. package/3rdparty/walkontable/src/renderer/rowHeaders.js +2 -2
  24. package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +2 -2
  25. package/3rdparty/walkontable/src/renderer/rows.js +2 -2
  26. package/3rdparty/walkontable/src/renderer/rows.mjs +2 -2
  27. package/3rdparty/walkontable/src/scroll.js +111 -63
  28. package/3rdparty/walkontable/src/scroll.mjs +110 -63
  29. package/3rdparty/walkontable/src/table/bottom.js +2 -2
  30. package/3rdparty/walkontable/src/table/bottom.mjs +2 -2
  31. package/3rdparty/walkontable/src/table/bottomInlineStartCorner.js +2 -2
  32. package/3rdparty/walkontable/src/table/bottomInlineStartCorner.mjs +2 -2
  33. package/3rdparty/walkontable/src/table/inlineStart.js +2 -2
  34. package/3rdparty/walkontable/src/table/inlineStart.mjs +2 -2
  35. package/3rdparty/walkontable/src/table/master.js +2 -2
  36. package/3rdparty/walkontable/src/table/master.mjs +2 -2
  37. package/3rdparty/walkontable/src/table/top.js +2 -2
  38. package/3rdparty/walkontable/src/table/top.mjs +2 -2
  39. package/3rdparty/walkontable/src/table/topInlineStartCorner.js +2 -2
  40. package/3rdparty/walkontable/src/table/topInlineStartCorner.mjs +2 -2
  41. package/3rdparty/walkontable/src/utils/orderView/sharedView.js +2 -2
  42. package/3rdparty/walkontable/src/utils/orderView/sharedView.mjs +2 -2
  43. package/3rdparty/walkontable/src/viewport.js +14 -22
  44. package/3rdparty/walkontable/src/viewport.mjs +14 -22
  45. package/CHANGELOG.md +52 -0
  46. package/LICENSE.txt +1 -1
  47. package/base.js +2 -2
  48. package/base.mjs +2 -2
  49. package/core.js +39 -31
  50. package/core.mjs +39 -31
  51. package/dataMap/metaManager/metaSchema.js +165 -168
  52. package/dataMap/metaManager/metaSchema.mjs +165 -168
  53. package/dist/handsontable.css +18 -18
  54. package/dist/handsontable.full.css +19 -29
  55. package/dist/handsontable.full.js +13863 -12941
  56. package/dist/handsontable.full.min.css +5 -5
  57. package/dist/handsontable.full.min.js +134 -135
  58. package/dist/handsontable.js +4136 -3926
  59. package/dist/handsontable.min.css +4 -4
  60. package/dist/handsontable.min.js +4 -4
  61. package/dist/languages/all.js +97 -33
  62. package/dist/languages/all.min.js +1 -1
  63. package/dist/languages/cs-CZ.js +167 -0
  64. package/dist/languages/cs-CZ.min.js +1 -0
  65. package/dist/languages/de-CH.js +3 -2
  66. package/dist/languages/de-CH.min.js +1 -1
  67. package/dist/languages/de-DE.js +3 -2
  68. package/dist/languages/de-DE.min.js +1 -1
  69. package/dist/languages/en-US.js +3 -2
  70. package/dist/languages/en-US.min.js +1 -1
  71. package/dist/languages/es-MX.js +3 -2
  72. package/dist/languages/es-MX.min.js +1 -1
  73. package/dist/languages/fr-FR.js +3 -2
  74. package/dist/languages/fr-FR.min.js +1 -1
  75. package/dist/languages/it-IT.js +3 -2
  76. package/dist/languages/it-IT.min.js +1 -1
  77. package/dist/languages/ja-JP.js +36 -39
  78. package/dist/languages/ja-JP.min.js +1 -1
  79. package/dist/languages/ko-KR.js +2 -2
  80. package/dist/languages/ko-KR.min.js +1 -1
  81. package/dist/languages/lv-LV.js +2 -2
  82. package/dist/languages/lv-LV.min.js +1 -1
  83. package/dist/languages/nb-NO.js +2 -2
  84. package/dist/languages/nb-NO.min.js +1 -1
  85. package/dist/languages/nl-NL.js +2 -2
  86. package/dist/languages/nl-NL.min.js +1 -1
  87. package/dist/languages/pl-PL.js +2 -2
  88. package/dist/languages/pl-PL.min.js +1 -1
  89. package/dist/languages/pt-BR.js +2 -2
  90. package/dist/languages/pt-BR.min.js +1 -1
  91. package/dist/languages/ru-RU.js +2 -2
  92. package/dist/languages/ru-RU.min.js +1 -1
  93. package/dist/languages/sr-SP.js +171 -0
  94. package/dist/languages/sr-SP.min.js +1 -0
  95. package/dist/languages/zh-CN.js +24 -24
  96. package/dist/languages/zh-CN.min.js +1 -1
  97. package/dist/languages/zh-TW.js +2 -2
  98. package/dist/languages/zh-TW.min.js +1 -1
  99. package/editors/autocompleteEditor/autocompleteEditor.js +13 -14
  100. package/editors/autocompleteEditor/autocompleteEditor.mjs +13 -14
  101. package/editors/baseEditor/baseEditor.js +2 -2
  102. package/editors/baseEditor/baseEditor.mjs +2 -2
  103. package/editors/checkboxEditor/checkboxEditor.js +2 -2
  104. package/editors/checkboxEditor/checkboxEditor.mjs +2 -2
  105. package/editors/dateEditor/dateEditor.js +3 -3
  106. package/editors/dateEditor/dateEditor.mjs +3 -3
  107. package/editors/dropdownEditor/dropdownEditor.js +3 -3
  108. package/editors/dropdownEditor/dropdownEditor.mjs +3 -3
  109. package/editors/handsontableEditor/handsontableEditor.js +3 -3
  110. package/editors/handsontableEditor/handsontableEditor.mjs +3 -3
  111. package/editors/numericEditor/numericEditor.js +2 -2
  112. package/editors/numericEditor/numericEditor.mjs +2 -2
  113. package/editors/passwordEditor/passwordEditor.js +3 -3
  114. package/editors/passwordEditor/passwordEditor.mjs +3 -3
  115. package/editors/selectEditor/selectEditor.js +3 -3
  116. package/editors/selectEditor/selectEditor.mjs +3 -3
  117. package/editors/textEditor/textEditor.js +3 -3
  118. package/editors/textEditor/textEditor.mjs +3 -3
  119. package/editors/timeEditor/timeEditor.js +3 -3
  120. package/editors/timeEditor/timeEditor.mjs +3 -3
  121. package/helpers/mixed.js +2 -2
  122. package/helpers/mixed.mjs +2 -2
  123. package/i18n/languages/cs-CZ.js +40 -0
  124. package/i18n/languages/cs-CZ.mjs +16 -0
  125. package/i18n/languages/index.js +8 -0
  126. package/i18n/languages/index.mjs +3 -1
  127. package/i18n/languages/sr-SP.js +40 -0
  128. package/i18n/languages/sr-SP.mjs +16 -0
  129. package/languages/all.js +97 -33
  130. package/languages/cs-CZ.js +167 -0
  131. package/languages/cs-CZ.mjs +18 -0
  132. package/languages/de-CH.js +3 -2
  133. package/languages/de-DE.js +3 -2
  134. package/languages/en-US.js +3 -2
  135. package/languages/es-MX.js +3 -2
  136. package/languages/fr-FR.js +3 -2
  137. package/languages/index.js +97 -33
  138. package/languages/index.mjs +3 -1
  139. package/languages/it-IT.js +3 -2
  140. package/languages/ja-JP.js +36 -39
  141. package/languages/ko-KR.js +2 -2
  142. package/languages/lv-LV.js +2 -2
  143. package/languages/nb-NO.js +2 -2
  144. package/languages/nl-NL.js +2 -2
  145. package/languages/pl-PL.js +2 -2
  146. package/languages/pt-BR.js +2 -2
  147. package/languages/ru-RU.js +2 -2
  148. package/languages/sr-SP.js +171 -0
  149. package/languages/sr-SP.mjs +18 -0
  150. package/languages/zh-CN.js +24 -24
  151. package/languages/zh-TW.js +2 -2
  152. package/package.json +22 -2
  153. package/pluginHooks.js +46 -8
  154. package/pluginHooks.mjs +46 -8
  155. package/plugins/autoColumnSize/autoColumnSize.js +6 -6
  156. package/plugins/autoColumnSize/autoColumnSize.mjs +6 -6
  157. package/plugins/autoRowSize/autoRowSize.js +4 -4
  158. package/plugins/autoRowSize/autoRowSize.mjs +4 -4
  159. package/plugins/autofill/autofill.js +3 -3
  160. package/plugins/autofill/autofill.mjs +3 -3
  161. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.js +3 -3
  162. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.mjs +3 -3
  163. package/plugins/bindRowsWithHeaders/maps/looseBindsMap.js +3 -3
  164. package/plugins/bindRowsWithHeaders/maps/looseBindsMap.mjs +3 -3
  165. package/plugins/bindRowsWithHeaders/maps/strictBindsMap.js +3 -3
  166. package/plugins/bindRowsWithHeaders/maps/strictBindsMap.mjs +3 -3
  167. package/plugins/collapsibleColumns/collapsibleColumns.js +3 -3
  168. package/plugins/collapsibleColumns/collapsibleColumns.mjs +3 -3
  169. package/plugins/columnSorting/columnSorting.js +3 -3
  170. package/plugins/columnSorting/columnSorting.mjs +3 -3
  171. package/plugins/columnSummary/columnSummary.js +3 -3
  172. package/plugins/columnSummary/columnSummary.mjs +3 -3
  173. package/plugins/comments/commentEditor.js +2 -2
  174. package/plugins/comments/commentEditor.mjs +2 -2
  175. package/plugins/comments/comments.js +39 -31
  176. package/plugins/comments/comments.mjs +40 -32
  177. package/plugins/contextMenu/contextMenu.js +3 -3
  178. package/plugins/contextMenu/contextMenu.mjs +3 -3
  179. package/plugins/copyPaste/copyPaste.js +6 -6
  180. package/plugins/copyPaste/copyPaste.mjs +6 -6
  181. package/plugins/customBorders/customBorders.js +8 -7
  182. package/plugins/customBorders/customBorders.mjs +9 -8
  183. package/plugins/dragToScroll/dragToScroll.js +3 -3
  184. package/plugins/dragToScroll/dragToScroll.mjs +3 -3
  185. package/plugins/dropdownMenu/dropdownMenu.js +5 -4
  186. package/plugins/dropdownMenu/dropdownMenu.mjs +5 -4
  187. package/plugins/exportFile/exportFile.js +2 -2
  188. package/plugins/exportFile/exportFile.mjs +2 -2
  189. package/plugins/exportFile/types/csv.js +2 -2
  190. package/plugins/exportFile/types/csv.mjs +2 -2
  191. package/plugins/filters/component/actionBar.js +2 -2
  192. package/plugins/filters/component/actionBar.mjs +2 -2
  193. package/plugins/filters/component/condition.js +3 -3
  194. package/plugins/filters/component/condition.mjs +3 -3
  195. package/plugins/filters/component/operators.js +2 -2
  196. package/plugins/filters/component/operators.mjs +2 -2
  197. package/plugins/filters/component/value.js +3 -3
  198. package/plugins/filters/component/value.mjs +3 -3
  199. package/plugins/filters/filters.js +3 -3
  200. package/plugins/filters/filters.mjs +3 -3
  201. package/plugins/filters/ui/input.js +3 -3
  202. package/plugins/filters/ui/input.mjs +3 -3
  203. package/plugins/filters/ui/link.js +3 -3
  204. package/plugins/filters/ui/link.mjs +3 -3
  205. package/plugins/filters/ui/multipleSelect.js +3 -3
  206. package/plugins/filters/ui/multipleSelect.mjs +3 -3
  207. package/plugins/filters/ui/radioInput.js +3 -3
  208. package/plugins/filters/ui/radioInput.mjs +3 -3
  209. package/plugins/filters/ui/select.js +3 -3
  210. package/plugins/filters/ui/select.mjs +3 -3
  211. package/plugins/formulas/formulas.js +10 -5
  212. package/plugins/formulas/formulas.mjs +10 -5
  213. package/plugins/hiddenColumns/contextMenuItem/hideColumn.js +2 -4
  214. package/plugins/hiddenColumns/contextMenuItem/hideColumn.mjs +2 -4
  215. package/plugins/hiddenColumns/contextMenuItem/showColumn.js +3 -3
  216. package/plugins/hiddenColumns/contextMenuItem/showColumn.mjs +3 -3
  217. package/plugins/hiddenColumns/hiddenColumns.js +3 -3
  218. package/plugins/hiddenColumns/hiddenColumns.mjs +3 -3
  219. package/plugins/hiddenRows/contextMenuItem/hideRow.js +2 -4
  220. package/plugins/hiddenRows/contextMenuItem/hideRow.mjs +2 -4
  221. package/plugins/hiddenRows/contextMenuItem/showRow.js +3 -3
  222. package/plugins/hiddenRows/contextMenuItem/showRow.mjs +3 -3
  223. package/plugins/hiddenRows/hiddenRows.js +3 -3
  224. package/plugins/hiddenRows/hiddenRows.mjs +3 -3
  225. package/plugins/manualColumnFreeze/manualColumnFreeze.js +46 -20
  226. package/plugins/manualColumnFreeze/manualColumnFreeze.mjs +41 -20
  227. package/plugins/manualColumnMove/manualColumnMove.js +7 -18
  228. package/plugins/manualColumnMove/manualColumnMove.mjs +7 -18
  229. package/plugins/manualColumnMove/ui/backlight.js +3 -3
  230. package/plugins/manualColumnMove/ui/backlight.mjs +3 -3
  231. package/plugins/manualColumnMove/ui/guideline.js +3 -3
  232. package/plugins/manualColumnMove/ui/guideline.mjs +3 -3
  233. package/plugins/manualColumnResize/manualColumnResize.js +3 -3
  234. package/plugins/manualColumnResize/manualColumnResize.mjs +3 -3
  235. package/plugins/manualRowMove/manualRowMove.js +11 -29
  236. package/plugins/manualRowMove/manualRowMove.mjs +11 -29
  237. package/plugins/manualRowMove/ui/backlight.js +3 -3
  238. package/plugins/manualRowMove/ui/backlight.mjs +3 -3
  239. package/plugins/manualRowMove/ui/guideline.js +3 -3
  240. package/plugins/manualRowMove/ui/guideline.mjs +3 -3
  241. package/plugins/manualRowResize/manualRowResize.js +3 -3
  242. package/plugins/manualRowResize/manualRowResize.mjs +3 -3
  243. package/plugins/mergeCells/cellsCollection.js +3 -3
  244. package/plugins/mergeCells/cellsCollection.mjs +3 -3
  245. package/plugins/mergeCells/mergeCells.js +15 -15
  246. package/plugins/mergeCells/mergeCells.mjs +15 -15
  247. package/plugins/multiColumnSorting/multiColumnSorting.js +3 -3
  248. package/plugins/multiColumnSorting/multiColumnSorting.mjs +3 -3
  249. package/plugins/multipleSelectionHandles/multipleSelectionHandles.js +3 -3
  250. package/plugins/multipleSelectionHandles/multipleSelectionHandles.mjs +3 -3
  251. package/plugins/nestedHeaders/nestedHeaders.js +10 -6
  252. package/plugins/nestedHeaders/nestedHeaders.mjs +10 -6
  253. package/plugins/nestedHeaders/stateManager/utils.js +3 -4
  254. package/plugins/nestedHeaders/stateManager/utils.mjs +3 -4
  255. package/plugins/nestedHeaders/utils/ghostTable.js +114 -75
  256. package/plugins/nestedHeaders/utils/ghostTable.mjs +114 -74
  257. package/plugins/nestedRows/nestedRows.js +3 -3
  258. package/plugins/nestedRows/nestedRows.mjs +3 -3
  259. package/plugins/nestedRows/ui/collapsing.js +2 -2
  260. package/plugins/nestedRows/ui/collapsing.mjs +2 -2
  261. package/plugins/nestedRows/ui/contextMenu.js +2 -2
  262. package/plugins/nestedRows/ui/contextMenu.mjs +2 -2
  263. package/plugins/nestedRows/ui/headers.js +2 -2
  264. package/plugins/nestedRows/ui/headers.mjs +2 -2
  265. package/plugins/persistentState/persistentState.js +3 -3
  266. package/plugins/persistentState/persistentState.mjs +3 -3
  267. package/plugins/search/search.js +3 -3
  268. package/plugins/search/search.mjs +3 -3
  269. package/plugins/touchScroll/touchScroll.js +3 -3
  270. package/plugins/touchScroll/touchScroll.mjs +3 -3
  271. package/plugins/trimRows/trimRows.js +3 -3
  272. package/plugins/trimRows/trimRows.mjs +3 -3
  273. package/plugins/undoRedo/undoRedo.js +2 -2
  274. package/plugins/undoRedo/undoRedo.mjs +2 -2
  275. package/selection/highlight/visualSelection.js +83 -210
  276. package/selection/highlight/visualSelection.mjs +79 -202
  277. package/selection/selection.js +9 -3
  278. package/selection/selection.mjs +9 -3
  279. package/shortcuts/context.js +1 -1
  280. package/shortcuts/context.mjs +1 -1
  281. package/shortcuts/manager.js +3 -1
  282. package/shortcuts/manager.mjs +3 -1
  283. package/shortcuts/recorder.js +11 -2
  284. package/shortcuts/recorder.mjs +11 -2
  285. package/tableView.js +27 -5
  286. package/tableView.mjs +27 -5
  287. package/translations/indexMapper.d.ts +3 -1
  288. package/translations/indexMapper.js +88 -10
  289. package/translations/indexMapper.mjs +90 -19
  290. package/translations/mapCollections/aggregatedCollection.js +2 -2
  291. package/translations/mapCollections/aggregatedCollection.mjs +2 -2
  292. package/translations/maps/hidingMap.js +2 -2
  293. package/translations/maps/hidingMap.mjs +2 -2
  294. package/translations/maps/indexesSequence.js +3 -3
  295. package/translations/maps/indexesSequence.mjs +3 -3
  296. package/translations/maps/linkedPhysicalIndexToValueMap.js +3 -3
  297. package/translations/maps/linkedPhysicalIndexToValueMap.mjs +3 -3
  298. package/translations/maps/physicalIndexToValueMap.js +3 -3
  299. package/translations/maps/physicalIndexToValueMap.mjs +3 -3
  300. package/translations/maps/trimmingMap.js +2 -2
  301. package/translations/maps/trimmingMap.mjs +2 -2
@@ -69,13 +69,13 @@ function _defineProperties(target, props) { for (var i = 0; i < props.length; i+
69
69
 
70
70
  function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
71
71
 
72
- function _get() { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get.apply(this, arguments); }
72
+ function _get() { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get.bind(); } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get.apply(this, arguments); }
73
73
 
74
74
  function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }
75
75
 
76
76
  function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
77
77
 
78
- function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
78
+ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
79
79
 
80
80
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
81
81
 
@@ -85,7 +85,7 @@ function _assertThisInitialized(self) { if (self === void 0) { throw new Referen
85
85
 
86
86
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
87
87
 
88
- function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
88
+ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
89
89
 
90
90
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
91
91
 
@@ -168,7 +168,9 @@ var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
168
168
  value: null
169
169
  });
170
170
 
171
- _defineProperty(_assertThisInitialized(_this), "ghostTable", new _ghostTable.default(_assertThisInitialized(_this)));
171
+ _defineProperty(_assertThisInitialized(_this), "ghostTable", new _ghostTable.default(_this.hot, function (row, column) {
172
+ return _this.getHeaderSettings(row, column);
173
+ }));
172
174
 
173
175
  _defineProperty(_assertThisInitialized(_this), "detectedOverlappedHeaders", false);
174
176
 
@@ -292,10 +294,12 @@ var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
292
294
  _classPrivateFieldGet(_this3, _stateManager).triggerColumnModification(actionName, columnIndex);
293
295
  }
294
296
  });
297
+
298
+ _this3.ghostTable.buildWidthsMap();
295
299
  }));
296
300
  }
297
301
 
298
- this.ghostTable.buildWidthsMapper();
302
+ this.ghostTable.setLayersCount(this.getLayersCount()).buildWidthsMap();
299
303
 
300
304
  _get(_getPrototypeOf(NestedHeaders.prototype), "updatePlugin", this).call(this);
301
305
  }
@@ -693,7 +697,7 @@ var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
693
697
  }, {
694
698
  key: "onModifyColWidth",
695
699
  value: function onModifyColWidth(width, column) {
696
- var cachedWidth = this.ghostTable.widthsCache[column];
700
+ var cachedWidth = this.ghostTable.getWidth(column);
697
701
  return width > cachedWidth ? width : cachedWidth;
698
702
  }
699
703
  /**
@@ -29,13 +29,13 @@ function _defineProperties(target, props) { for (var i = 0; i < props.length; i+
29
29
 
30
30
  function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
31
31
 
32
- function _get() { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get.apply(this, arguments); }
32
+ function _get() { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get.bind(); } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get.apply(this, arguments); }
33
33
 
34
34
  function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }
35
35
 
36
36
  function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
37
37
 
38
- function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
38
+ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
39
39
 
40
40
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
41
41
 
@@ -45,7 +45,7 @@ function _assertThisInitialized(self) { if (self === void 0) { throw new Referen
45
45
 
46
46
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
47
47
 
48
- function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
48
+ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
49
49
 
50
50
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
51
51
 
@@ -134,7 +134,9 @@ export var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
134
134
  value: null
135
135
  });
136
136
 
137
- _defineProperty(_assertThisInitialized(_this), "ghostTable", new GhostTable(_assertThisInitialized(_this)));
137
+ _defineProperty(_assertThisInitialized(_this), "ghostTable", new GhostTable(_this.hot, function (row, column) {
138
+ return _this.getHeaderSettings(row, column);
139
+ }));
138
140
 
139
141
  _defineProperty(_assertThisInitialized(_this), "detectedOverlappedHeaders", false);
140
142
 
@@ -258,10 +260,12 @@ export var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
258
260
  _classPrivateFieldGet(_this3, _stateManager).triggerColumnModification(actionName, columnIndex);
259
261
  }
260
262
  });
263
+
264
+ _this3.ghostTable.buildWidthsMap();
261
265
  }));
262
266
  }
263
267
 
264
- this.ghostTable.buildWidthsMapper();
268
+ this.ghostTable.setLayersCount(this.getLayersCount()).buildWidthsMap();
265
269
 
266
270
  _get(_getPrototypeOf(NestedHeaders.prototype), "updatePlugin", this).call(this);
267
271
  }
@@ -659,7 +663,7 @@ export var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
659
663
  }, {
660
664
  key: "onModifyColWidth",
661
665
  value: function onModifyColWidth(width, column) {
662
- var cachedWidth = this.ghostTable.widthsCache[column];
666
+ var cachedWidth = this.ghostTable.getWidth(column);
663
667
  return width > cachedWidth ? width : cachedWidth;
664
668
  }
665
669
  /**
@@ -9,15 +9,14 @@ exports.createPlaceholderHeaderSettings = createPlaceholderHeaderSettings;
9
9
  * @property {string} label The name/label of the column header.
10
10
  * @property {number} colspan Current calculated colspan value of the rendered column header element.
11
11
  * @property {number} origColspan Original colspan value, set once while parsing user-defined nested header settings.
12
- * @property {boolean} collapsible The flag determines whether the node is collapsible (can be collpased/expanded).
12
+ * @property {boolean} collapsible The flag determines whether the node is collapsible (can be collapsed/expanded).
13
13
  * @property {number[]} crossHiddenColumns The list of visual column indexes which indicates that the specified columns within
14
14
  * the header settings are hidden.
15
15
  * @property {boolean} isCollapsed The flag determines whether the node is collapsed.
16
16
  * @property {boolean} isHidden The flag determines whether the column header at specified index is hidden. If true
17
17
  * the TH element will be rendered as hidden (display: none).
18
- * @property {boolean} isRoot The flag which determines whether the column header settings is accually not renderable. That kind
18
+ * @property {boolean} isRoot The flag which determines whether the column header settings is actually not renderable. That kind
19
19
  * of objects are generated after colspaned header to fill an array to correct size.
20
- *
21
20
  * For example for header with colspan = 8 the 7 blank objects are generated to fill the array settings
22
21
  * to length = 8.
23
22
  * @property {boolean} isPlaceholder The flag determines whether the column header at the specified index is non-renderable.
@@ -63,7 +62,7 @@ function createDefaultHeaderSettings() {
63
62
  };
64
63
  }
65
64
  /**
66
- * Creates the header settings placeholder object. Those settings tell the header renderers
65
+ * Creates the placeholder header settings object. Those settings tell the header renderers
67
66
  * that this TH element should not be rendered (the node will be overlapped by the previously
68
67
  * created node with colspan bigger than 1).
69
68
  *
@@ -3,15 +3,14 @@
3
3
  * @property {string} label The name/label of the column header.
4
4
  * @property {number} colspan Current calculated colspan value of the rendered column header element.
5
5
  * @property {number} origColspan Original colspan value, set once while parsing user-defined nested header settings.
6
- * @property {boolean} collapsible The flag determines whether the node is collapsible (can be collpased/expanded).
6
+ * @property {boolean} collapsible The flag determines whether the node is collapsible (can be collapsed/expanded).
7
7
  * @property {number[]} crossHiddenColumns The list of visual column indexes which indicates that the specified columns within
8
8
  * the header settings are hidden.
9
9
  * @property {boolean} isCollapsed The flag determines whether the node is collapsed.
10
10
  * @property {boolean} isHidden The flag determines whether the column header at specified index is hidden. If true
11
11
  * the TH element will be rendered as hidden (display: none).
12
- * @property {boolean} isRoot The flag which determines whether the column header settings is accually not renderable. That kind
12
+ * @property {boolean} isRoot The flag which determines whether the column header settings is actually not renderable. That kind
13
13
  * of objects are generated after colspaned header to fill an array to correct size.
14
- *
15
14
  * For example for header with colspan = 8 the 7 blank objects are generated to fill the array settings
16
15
  * to length = 8.
17
16
  * @property {boolean} isPlaceholder The flag determines whether the column header at the specified index is non-renderable.
@@ -57,7 +56,7 @@ export function createDefaultHeaderSettings() {
57
56
  };
58
57
  }
59
58
  /**
60
- * Creates the header settings placeholder object. Those settings tell the header renderers
59
+ * Creates the placeholder header settings object. Those settings tell the header renderers
61
60
  * that this TH element should not be rendered (the node will be overlapped by the previously
62
61
  * created node with colspan bigger than 1).
63
62
  *
@@ -5,66 +5,125 @@ exports.default = void 0;
5
5
 
6
6
  var _element = require("../../../helpers/dom/element");
7
7
 
8
- var _object = require("../../../helpers/object");
9
-
10
8
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
11
9
 
12
10
  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, descriptor.key, descriptor); } }
13
11
 
14
12
  function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
15
13
 
14
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
15
+
16
16
  /**
17
+ * The class generates the nested headers structure in the DOM and reads the column width for
18
+ * each column. The hierarchy is built only for visible, non-hidden columns. Each time the
19
+ * column is shown or hidden, the structure is rebuilt, and the width of the columns in the
20
+ * map updated.
21
+ *
17
22
  * @private
18
23
  */
19
24
  var GhostTable = /*#__PURE__*/function () {
20
- function GhostTable(plugin) {
25
+ /**
26
+ * Reference to the Handsontable instance.
27
+ *
28
+ * @private
29
+ * @type {Handsontable}
30
+ */
31
+
32
+ /**
33
+ * The function for retrieving the nested headers settings.
34
+ *
35
+ * @private
36
+ * @type {Function}
37
+ */
38
+
39
+ /**
40
+ * The value that holds information about the number of the nested header layers (header rows).
41
+ *
42
+ * @private
43
+ * @type {number}
44
+ */
45
+
46
+ /**
47
+ * Temporary element created to get minimal headers widths.
48
+ *
49
+ * @private
50
+ * @type {*}
51
+ */
52
+
53
+ /**
54
+ * PhysicalIndexToValueMap to keep and track of the columns' widths.
55
+ *
56
+ * @private
57
+ * @type {PhysicalIndexToValueMap}
58
+ */
59
+ function GhostTable(hot, nestedHeaderSettingsGetter) {
21
60
  _classCallCheck(this, GhostTable);
22
61
 
23
- /**
24
- * Reference to NestedHeaders plugin.
25
- *
26
- * @type {NestedHeaders}
27
- */
28
- this.nestedHeaders = plugin;
29
- /**
30
- * Temporary element created to get minimal headers widths.
31
- *
32
- * @type {*}
33
- */
62
+ _defineProperty(this, "hot", void 0);
34
63
 
35
- this.container = void 0;
36
- /**
37
- * Cached the headers widths.
38
- *
39
- * @type {Array}
40
- */
64
+ _defineProperty(this, "nestedHeaderSettingsGetter", void 0);
41
65
 
42
- this.widthsCache = [];
66
+ _defineProperty(this, "layersCount", 0);
67
+
68
+ _defineProperty(this, "container", void 0);
69
+
70
+ _defineProperty(this, "widthsMap", void 0);
71
+
72
+ this.hot = hot;
73
+ this.nestedHeaderSettingsGetter = nestedHeaderSettingsGetter;
74
+ this.widthsMap = this.hot.columnIndexMapper.createAndRegisterIndexMap('nestedHeaders.widthsMap', 'physicalIndexToValue');
43
75
  }
44
76
  /**
45
- * Build cache of the headers widths.
77
+ * Sets the number of nested headers layers count.
46
78
  *
47
- * @private
79
+ * @param {number} layersCount Total number of headers levels.
80
+ * @returns {GhostTable}
48
81
  */
49
82
 
50
83
 
51
84
  _createClass(GhostTable, [{
52
- key: "buildWidthsMapper",
53
- value: function buildWidthsMapper() {
54
- this.container = this.nestedHeaders.hot.rootDocument.createElement('div');
55
- this.buildGhostTable(this.container);
56
- this.nestedHeaders.hot.rootElement.appendChild(this.container);
85
+ key: "setLayersCount",
86
+ value: function setLayersCount(layersCount) {
87
+ this.layersCount = layersCount;
88
+ return this;
89
+ }
90
+ /**
91
+ * Gets the column width based on the visual column index.
92
+ *
93
+ * @param {number} visualColumn Visual column index.
94
+ * @returns {number|null}
95
+ */
96
+
97
+ }, {
98
+ key: "getWidth",
99
+ value: function getWidth(visualColumn) {
100
+ return this.widthsMap.getValueAtIndex(this.hot.toPhysicalColumn(visualColumn));
101
+ }
102
+ /**
103
+ * Build cache of the headers widths.
104
+ */
105
+
106
+ }, {
107
+ key: "buildWidthsMap",
108
+ value: function buildWidthsMap() {
109
+ this.container = this.hot.rootDocument.createElement('div');
110
+ this.container.classList.add('handsontable', 'htGhostTable', 'htAutoSize');
111
+
112
+ this._buildGhostTable(this.container);
113
+
114
+ this.hot.rootDocument.body.appendChild(this.container);
57
115
  var columns = this.container.querySelectorAll('tr:last-of-type th');
58
116
  var maxColumns = columns.length;
59
- this.widthsCache.length = 0;
117
+ this.widthsMap.clear();
60
118
 
61
- for (var i = 0; i < maxColumns; i++) {
62
- this.widthsCache.push(columns[i].offsetWidth);
119
+ for (var column = 0; column < maxColumns; column++) {
120
+ var visualColumnsIndex = this.hot.columnIndexMapper.getVisualFromRenderableIndex(column);
121
+ var physicalColumnIndex = this.hot.toPhysicalColumn(visualColumnsIndex);
122
+ this.widthsMap.setValueAtIndex(physicalColumnIndex, columns[column].offsetWidth);
63
123
  }
64
124
 
65
125
  this.container.parentNode.removeChild(this.container);
66
126
  this.container = null;
67
- this.nestedHeaders.hot.render();
68
127
  }
69
128
  /**
70
129
  * Build temporary table for getting minimal columns widths.
@@ -74,63 +133,43 @@ var GhostTable = /*#__PURE__*/function () {
74
133
  */
75
134
 
76
135
  }, {
77
- key: "buildGhostTable",
78
- value: function buildGhostTable(container) {
79
- var rootDocument = this.nestedHeaders.hot.rootDocument;
136
+ key: "_buildGhostTable",
137
+ value: function _buildGhostTable(container) {
138
+ var _this$hot = this.hot,
139
+ rootDocument = _this$hot.rootDocument,
140
+ columnIndexMapper = _this$hot.columnIndexMapper;
80
141
  var fragment = rootDocument.createDocumentFragment();
81
142
  var table = rootDocument.createElement('table');
82
- var lastRowColspan = false;
83
- var isDropdownEnabled = !!this.nestedHeaders.hot.getSettings().dropdownMenu;
84
- var maxRows = this.nestedHeaders.getLayersCount();
85
- var maxCols = this.nestedHeaders.hot.countCols();
86
- var lastRowIndex = maxRows - 1;
143
+ var isDropdownEnabled = !!this.hot.getSettings().dropdownMenu;
144
+ var maxRenderedCols = columnIndexMapper.getRenderableIndexesLength();
87
145
 
88
- for (var row = 0; row < maxRows; row++) {
146
+ for (var row = 0; row < this.layersCount; row++) {
89
147
  var tr = rootDocument.createElement('tr');
90
- lastRowColspan = false;
91
148
 
92
- for (var col = 0; col < maxCols; col++) {
93
- var td = rootDocument.createElement('th');
94
- var headerObj = (0, _object.clone)(this.nestedHeaders.getHeaderSettings(row, col));
149
+ for (var col = 0; col < maxRenderedCols; col++) {
150
+ var visualColumnsIndex = columnIndexMapper.getVisualFromRenderableIndex(col);
95
151
 
96
- if (headerObj && !headerObj.isHidden) {
97
- if (row === lastRowIndex) {
98
- if (headerObj.colspan > 1) {
99
- lastRowColspan = true;
100
- }
152
+ if (visualColumnsIndex === null) {
153
+ visualColumnsIndex = col;
154
+ }
101
155
 
102
- if (isDropdownEnabled) {
103
- headerObj.label += '<button class="changeType"></button>';
104
- }
105
- }
156
+ var th = rootDocument.createElement('th');
157
+ var headerSettings = this.nestedHeaderSettingsGetter(row, visualColumnsIndex);
106
158
 
107
- (0, _element.fastInnerHTML)(td, headerObj.label); // The guard here is needed because on IE11 an error is thrown if you
108
- // try to assign an incorrect value to `td.colSpan` here.
159
+ if (headerSettings && (!headerSettings.isPlaceholder || headerSettings.isHidden)) {
160
+ var label = headerSettings.label;
109
161
 
110
- if (headerObj.colspan !== undefined) {
111
- td.colSpan = headerObj.colspan;
162
+ if (isDropdownEnabled) {
163
+ label += '<button class="changeType"></button>';
112
164
  }
113
165
 
114
- tr.appendChild(td);
166
+ (0, _element.fastInnerHTML)(th, label);
167
+ th.colSpan = headerSettings.colspan;
168
+ tr.appendChild(th);
115
169
  }
116
170
  }
117
171
 
118
172
  table.appendChild(tr);
119
- } // We have to be sure the last row contains only the single columns.
120
-
121
-
122
- if (lastRowColspan) {
123
- {
124
- var _tr = rootDocument.createElement('tr');
125
-
126
- for (var _col = 0; _col < maxCols; _col++) {
127
- var _td = rootDocument.createElement('th');
128
-
129
- _tr.appendChild(_td);
130
- }
131
-
132
- table.appendChild(_tr);
133
- }
134
173
  }
135
174
 
136
175
  fragment.appendChild(table);
@@ -143,8 +182,8 @@ var GhostTable = /*#__PURE__*/function () {
143
182
  }, {
144
183
  key: "clear",
145
184
  value: function clear() {
185
+ this.widthsMap.clear();
146
186
  this.container = null;
147
- this.widthsCache.length = 0;
148
187
  }
149
188
  }]);
150
189