handsontable 12.0.1 → 12.1.0

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 +32 -0
  46. package/LICENSE.txt +1 -1
  47. package/base.js +2 -2
  48. package/base.mjs +2 -2
  49. package/core.js +38 -30
  50. package/core.mjs +38 -30
  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 +13389 -12669
  56. package/dist/handsontable.full.min.css +5 -5
  57. package/dist/handsontable.full.min.js +134 -135
  58. package/dist/handsontable.js +3961 -3794
  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 +3 -3
  156. package/plugins/autoColumnSize/autoColumnSize.mjs +3 -3
  157. package/plugins/autoRowSize/autoRowSize.js +3 -3
  158. package/plugins/autoRowSize/autoRowSize.mjs +3 -3
  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 +3 -3
  182. package/plugins/customBorders/customBorders.mjs +3 -3
  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 +3 -3
  212. package/plugins/formulas/formulas.mjs +3 -3
  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 +94 -56
  256. package/plugins/nestedHeaders/utils/ghostTable.mjs +94 -56
  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
  *
@@ -14,61 +14,116 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d
14
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
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
25
  /**
21
- * Reference to NestedHeaders plugin.
26
+ * Reference to the Handsontable instance.
22
27
  *
23
- * @type {NestedHeaders}
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}
24
44
  */
25
45
 
26
46
  /**
27
47
  * Temporary element created to get minimal headers widths.
28
48
  *
49
+ * @private
29
50
  * @type {*}
30
51
  */
31
52
 
32
53
  /**
33
- * Cached the headers widths.
54
+ * PhysicalIndexToValueMap to keep and track of the columns' widths.
34
55
  *
35
- * @type {Array}
56
+ * @private
57
+ * @type {PhysicalIndexToValueMap}
36
58
  */
37
- function GhostTable(plugin) {
59
+ function GhostTable(hot, nestedHeaderSettingsGetter) {
38
60
  _classCallCheck(this, GhostTable);
39
61
 
40
- _defineProperty(this, "nestedHeaders", void 0);
62
+ _defineProperty(this, "hot", void 0);
63
+
64
+ _defineProperty(this, "nestedHeaderSettingsGetter", void 0);
65
+
66
+ _defineProperty(this, "layersCount", 0);
41
67
 
42
68
  _defineProperty(this, "container", void 0);
43
69
 
44
- _defineProperty(this, "widthsCache", []);
70
+ _defineProperty(this, "widthsMap", void 0);
45
71
 
46
- this.nestedHeaders = plugin;
72
+ this.hot = hot;
73
+ this.nestedHeaderSettingsGetter = nestedHeaderSettingsGetter;
74
+ this.widthsMap = this.hot.columnIndexMapper.createAndRegisterIndexMap('nestedHeaders.widthsMap', 'physicalIndexToValue');
47
75
  }
48
76
  /**
49
- * Build cache of the headers widths.
77
+ * Sets the number of nested headers layers count.
50
78
  *
51
- * @private
79
+ * @param {number} layersCount Total number of headers levels.
80
+ * @returns {GhostTable}
52
81
  */
53
82
 
54
83
 
55
84
  _createClass(GhostTable, [{
56
- key: "buildWidthsMapper",
57
- value: function buildWidthsMapper() {
58
- this.container = this.nestedHeaders.hot.rootDocument.createElement('div');
59
- this.buildGhostTable(this.container);
60
- 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);
61
115
  var columns = this.container.querySelectorAll('tr:last-of-type th');
62
116
  var maxColumns = columns.length;
63
- this.widthsCache.length = 0;
117
+ this.widthsMap.clear();
64
118
 
65
- for (var i = 0; i < maxColumns; i++) {
66
- 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);
67
123
  }
68
124
 
69
125
  this.container.parentNode.removeChild(this.container);
70
126
  this.container = null;
71
- this.nestedHeaders.hot.render();
72
127
  }
73
128
  /**
74
129
  * Build temporary table for getting minimal columns widths.
@@ -78,36 +133,34 @@ var GhostTable = /*#__PURE__*/function () {
78
133
  */
79
134
 
80
135
  }, {
81
- key: "buildGhostTable",
82
- value: function buildGhostTable(container) {
83
- 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;
84
141
  var fragment = rootDocument.createDocumentFragment();
85
142
  var table = rootDocument.createElement('table');
86
- var lastRowColspan = false;
87
- var isDropdownEnabled = !!this.nestedHeaders.hot.getSettings().dropdownMenu;
88
- var maxRows = this.nestedHeaders.getLayersCount();
89
- var maxCols = this.nestedHeaders.hot.countCols();
90
- var lastRowIndex = maxRows - 1;
143
+ var isDropdownEnabled = !!this.hot.getSettings().dropdownMenu;
144
+ var maxRenderedCols = columnIndexMapper.getRenderableIndexesLength();
91
145
 
92
- for (var row = 0; row < maxRows; row++) {
146
+ for (var row = 0; row < this.layersCount; row++) {
93
147
  var tr = rootDocument.createElement('tr');
94
- lastRowColspan = false;
95
148
 
96
- for (var col = 0; col < maxCols; col++) {
149
+ for (var col = 0; col < maxRenderedCols; col++) {
150
+ var visualColumnsIndex = columnIndexMapper.getVisualFromRenderableIndex(col);
151
+
152
+ if (visualColumnsIndex === null) {
153
+ visualColumnsIndex = col;
154
+ }
155
+
97
156
  var th = rootDocument.createElement('th');
98
- var headerSettings = this.nestedHeaders.getHeaderSettings(row, col);
157
+ var headerSettings = this.nestedHeaderSettingsGetter(row, visualColumnsIndex);
99
158
 
100
- if (headerSettings && !headerSettings.isPlaceholder) {
159
+ if (headerSettings && (!headerSettings.isPlaceholder || headerSettings.isHidden)) {
101
160
  var label = headerSettings.label;
102
161
 
103
- if (row === lastRowIndex) {
104
- if (headerSettings.colspan > 1) {
105
- lastRowColspan = true;
106
- }
107
-
108
- if (isDropdownEnabled) {
109
- label += '<button class="changeType"></button>';
110
- }
162
+ if (isDropdownEnabled) {
163
+ label += '<button class="changeType"></button>';
111
164
  }
112
165
 
113
166
  (0, _element.fastInnerHTML)(th, label);
@@ -117,21 +170,6 @@ var GhostTable = /*#__PURE__*/function () {
117
170
  }
118
171
 
119
172
  table.appendChild(tr);
120
- } // We have to be sure the last row contains only the single columns.
121
-
122
-
123
- if (lastRowColspan) {
124
- {
125
- var _tr = rootDocument.createElement('tr');
126
-
127
- for (var _col = 0; _col < maxCols; _col++) {
128
- var td = rootDocument.createElement('th');
129
-
130
- _tr.appendChild(td);
131
- }
132
-
133
- table.appendChild(_tr);
134
- }
135
173
  }
136
174
 
137
175
  fragment.appendChild(table);
@@ -144,8 +182,8 @@ var GhostTable = /*#__PURE__*/function () {
144
182
  }, {
145
183
  key: "clear",
146
184
  value: function clear() {
185
+ this.widthsMap.clear();
147
186
  this.container = null;
148
- this.widthsCache.length = 0;
149
187
  }
150
188
  }]);
151
189
 
@@ -8,62 +8,117 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
8
8
 
9
9
  import { fastInnerHTML } from "../../../helpers/dom/element.mjs";
10
10
  /**
11
+ * The class generates the nested headers structure in the DOM and reads the column width for
12
+ * each column. The hierarchy is built only for visible, non-hidden columns. Each time the
13
+ * column is shown or hidden, the structure is rebuilt, and the width of the columns in the
14
+ * map updated.
15
+ *
11
16
  * @private
12
17
  */
13
18
 
14
19
  var GhostTable = /*#__PURE__*/function () {
15
20
  /**
16
- * Reference to NestedHeaders plugin.
21
+ * Reference to the Handsontable instance.
17
22
  *
18
- * @type {NestedHeaders}
23
+ * @private
24
+ * @type {Handsontable}
25
+ */
26
+
27
+ /**
28
+ * The function for retrieving the nested headers settings.
29
+ *
30
+ * @private
31
+ * @type {Function}
32
+ */
33
+
34
+ /**
35
+ * The value that holds information about the number of the nested header layers (header rows).
36
+ *
37
+ * @private
38
+ * @type {number}
19
39
  */
20
40
 
21
41
  /**
22
42
  * Temporary element created to get minimal headers widths.
23
43
  *
44
+ * @private
24
45
  * @type {*}
25
46
  */
26
47
 
27
48
  /**
28
- * Cached the headers widths.
49
+ * PhysicalIndexToValueMap to keep and track of the columns' widths.
29
50
  *
30
- * @type {Array}
51
+ * @private
52
+ * @type {PhysicalIndexToValueMap}
31
53
  */
32
- function GhostTable(plugin) {
54
+ function GhostTable(hot, nestedHeaderSettingsGetter) {
33
55
  _classCallCheck(this, GhostTable);
34
56
 
35
- _defineProperty(this, "nestedHeaders", void 0);
57
+ _defineProperty(this, "hot", void 0);
58
+
59
+ _defineProperty(this, "nestedHeaderSettingsGetter", void 0);
60
+
61
+ _defineProperty(this, "layersCount", 0);
36
62
 
37
63
  _defineProperty(this, "container", void 0);
38
64
 
39
- _defineProperty(this, "widthsCache", []);
65
+ _defineProperty(this, "widthsMap", void 0);
40
66
 
41
- this.nestedHeaders = plugin;
67
+ this.hot = hot;
68
+ this.nestedHeaderSettingsGetter = nestedHeaderSettingsGetter;
69
+ this.widthsMap = this.hot.columnIndexMapper.createAndRegisterIndexMap('nestedHeaders.widthsMap', 'physicalIndexToValue');
42
70
  }
43
71
  /**
44
- * Build cache of the headers widths.
72
+ * Sets the number of nested headers layers count.
45
73
  *
46
- * @private
74
+ * @param {number} layersCount Total number of headers levels.
75
+ * @returns {GhostTable}
47
76
  */
48
77
 
49
78
 
50
79
  _createClass(GhostTable, [{
51
- key: "buildWidthsMapper",
52
- value: function buildWidthsMapper() {
53
- this.container = this.nestedHeaders.hot.rootDocument.createElement('div');
54
- this.buildGhostTable(this.container);
55
- this.nestedHeaders.hot.rootElement.appendChild(this.container);
80
+ key: "setLayersCount",
81
+ value: function setLayersCount(layersCount) {
82
+ this.layersCount = layersCount;
83
+ return this;
84
+ }
85
+ /**
86
+ * Gets the column width based on the visual column index.
87
+ *
88
+ * @param {number} visualColumn Visual column index.
89
+ * @returns {number|null}
90
+ */
91
+
92
+ }, {
93
+ key: "getWidth",
94
+ value: function getWidth(visualColumn) {
95
+ return this.widthsMap.getValueAtIndex(this.hot.toPhysicalColumn(visualColumn));
96
+ }
97
+ /**
98
+ * Build cache of the headers widths.
99
+ */
100
+
101
+ }, {
102
+ key: "buildWidthsMap",
103
+ value: function buildWidthsMap() {
104
+ this.container = this.hot.rootDocument.createElement('div');
105
+ this.container.classList.add('handsontable', 'htGhostTable', 'htAutoSize');
106
+
107
+ this._buildGhostTable(this.container);
108
+
109
+ this.hot.rootDocument.body.appendChild(this.container);
56
110
  var columns = this.container.querySelectorAll('tr:last-of-type th');
57
111
  var maxColumns = columns.length;
58
- this.widthsCache.length = 0;
112
+ this.widthsMap.clear();
59
113
 
60
- for (var i = 0; i < maxColumns; i++) {
61
- this.widthsCache.push(columns[i].offsetWidth);
114
+ for (var column = 0; column < maxColumns; column++) {
115
+ var visualColumnsIndex = this.hot.columnIndexMapper.getVisualFromRenderableIndex(column);
116
+ var physicalColumnIndex = this.hot.toPhysicalColumn(visualColumnsIndex);
117
+ this.widthsMap.setValueAtIndex(physicalColumnIndex, columns[column].offsetWidth);
62
118
  }
63
119
 
64
120
  this.container.parentNode.removeChild(this.container);
65
121
  this.container = null;
66
- this.nestedHeaders.hot.render();
67
122
  }
68
123
  /**
69
124
  * Build temporary table for getting minimal columns widths.
@@ -73,36 +128,34 @@ var GhostTable = /*#__PURE__*/function () {
73
128
  */
74
129
 
75
130
  }, {
76
- key: "buildGhostTable",
77
- value: function buildGhostTable(container) {
78
- var rootDocument = this.nestedHeaders.hot.rootDocument;
131
+ key: "_buildGhostTable",
132
+ value: function _buildGhostTable(container) {
133
+ var _this$hot = this.hot,
134
+ rootDocument = _this$hot.rootDocument,
135
+ columnIndexMapper = _this$hot.columnIndexMapper;
79
136
  var fragment = rootDocument.createDocumentFragment();
80
137
  var table = rootDocument.createElement('table');
81
- var lastRowColspan = false;
82
- var isDropdownEnabled = !!this.nestedHeaders.hot.getSettings().dropdownMenu;
83
- var maxRows = this.nestedHeaders.getLayersCount();
84
- var maxCols = this.nestedHeaders.hot.countCols();
85
- var lastRowIndex = maxRows - 1;
138
+ var isDropdownEnabled = !!this.hot.getSettings().dropdownMenu;
139
+ var maxRenderedCols = columnIndexMapper.getRenderableIndexesLength();
86
140
 
87
- for (var row = 0; row < maxRows; row++) {
141
+ for (var row = 0; row < this.layersCount; row++) {
88
142
  var tr = rootDocument.createElement('tr');
89
- lastRowColspan = false;
90
143
 
91
- for (var col = 0; col < maxCols; col++) {
144
+ for (var col = 0; col < maxRenderedCols; col++) {
145
+ var visualColumnsIndex = columnIndexMapper.getVisualFromRenderableIndex(col);
146
+
147
+ if (visualColumnsIndex === null) {
148
+ visualColumnsIndex = col;
149
+ }
150
+
92
151
  var th = rootDocument.createElement('th');
93
- var headerSettings = this.nestedHeaders.getHeaderSettings(row, col);
152
+ var headerSettings = this.nestedHeaderSettingsGetter(row, visualColumnsIndex);
94
153
 
95
- if (headerSettings && !headerSettings.isPlaceholder) {
154
+ if (headerSettings && (!headerSettings.isPlaceholder || headerSettings.isHidden)) {
96
155
  var label = headerSettings.label;
97
156
 
98
- if (row === lastRowIndex) {
99
- if (headerSettings.colspan > 1) {
100
- lastRowColspan = true;
101
- }
102
-
103
- if (isDropdownEnabled) {
104
- label += '<button class="changeType"></button>';
105
- }
157
+ if (isDropdownEnabled) {
158
+ label += '<button class="changeType"></button>';
106
159
  }
107
160
 
108
161
  fastInnerHTML(th, label);
@@ -112,21 +165,6 @@ var GhostTable = /*#__PURE__*/function () {
112
165
  }
113
166
 
114
167
  table.appendChild(tr);
115
- } // We have to be sure the last row contains only the single columns.
116
-
117
-
118
- if (lastRowColspan) {
119
- {
120
- var _tr = rootDocument.createElement('tr');
121
-
122
- for (var _col = 0; _col < maxCols; _col++) {
123
- var td = rootDocument.createElement('th');
124
-
125
- _tr.appendChild(td);
126
- }
127
-
128
- table.appendChild(_tr);
129
- }
130
168
  }
131
169
 
132
170
  fragment.appendChild(table);
@@ -139,8 +177,8 @@ var GhostTable = /*#__PURE__*/function () {
139
177
  }, {
140
178
  key: "clear",
141
179
  value: function clear() {
180
+ this.widthsMap.clear();
142
181
  this.container = null;
143
- this.widthsCache.length = 0;
144
182
  }
145
183
  }]);
146
184
 
@@ -85,13 +85,13 @@ function _defineProperties(target, props) { for (var i = 0; i < props.length; i+
85
85
 
86
86
  function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
87
87
 
88
- 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); }
88
+ 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); }
89
89
 
90
90
  function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }
91
91
 
92
92
  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); }
93
93
 
94
- function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
94
+ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
95
95
 
96
96
  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); }; }
97
97
 
@@ -101,7 +101,7 @@ function _assertThisInitialized(self) { if (self === void 0) { throw new Referen
101
101
 
102
102
  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; } }
103
103
 
104
- function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
104
+ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
105
105
 
106
106
  var PLUGIN_KEY = 'nestedRows';
107
107
  exports.PLUGIN_KEY = PLUGIN_KEY;