handsontable 14.2.0 → 14.3.0-next-3fa6b18-20240410

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 (469) hide show
  1. package/3rdparty/walkontable/src/calculator/renderAllColumns.js +1 -1
  2. package/3rdparty/walkontable/src/calculator/renderAllColumns.mjs +1 -1
  3. package/3rdparty/walkontable/src/calculator/renderAllRows.js +1 -1
  4. package/3rdparty/walkontable/src/calculator/renderAllRows.mjs +1 -1
  5. package/3rdparty/walkontable/src/calculator/viewportColumns.js +13 -18
  6. package/3rdparty/walkontable/src/calculator/viewportColumns.mjs +13 -18
  7. package/3rdparty/walkontable/src/calculator/viewportRows.js +11 -16
  8. package/3rdparty/walkontable/src/calculator/viewportRows.mjs +11 -16
  9. package/3rdparty/walkontable/src/cell/coords.js +13 -18
  10. package/3rdparty/walkontable/src/cell/coords.mjs +13 -18
  11. package/3rdparty/walkontable/src/cell/range.d.ts +2 -1
  12. package/3rdparty/walkontable/src/cell/range.js +42 -30
  13. package/3rdparty/walkontable/src/cell/range.mjs +42 -30
  14. package/3rdparty/walkontable/src/core/_base.js +2 -2
  15. package/3rdparty/walkontable/src/core/_base.mjs +2 -2
  16. package/3rdparty/walkontable/src/core/clone.js +1 -1
  17. package/3rdparty/walkontable/src/core/clone.mjs +1 -1
  18. package/3rdparty/walkontable/src/event.js +72 -104
  19. package/3rdparty/walkontable/src/event.mjs +72 -104
  20. package/3rdparty/walkontable/src/filter/column.js +1 -1
  21. package/3rdparty/walkontable/src/filter/column.mjs +1 -1
  22. package/3rdparty/walkontable/src/filter/row.js +1 -1
  23. package/3rdparty/walkontable/src/filter/row.mjs +1 -1
  24. package/3rdparty/walkontable/src/index.js +1 -1
  25. package/3rdparty/walkontable/src/overlay/_base.js +1 -1
  26. package/3rdparty/walkontable/src/overlay/_base.mjs +1 -1
  27. package/3rdparty/walkontable/src/overlay/bottom.js +1 -1
  28. package/3rdparty/walkontable/src/overlay/bottom.mjs +1 -1
  29. package/3rdparty/walkontable/src/overlay/inlineStart.js +15 -1
  30. package/3rdparty/walkontable/src/overlay/inlineStart.mjs +16 -2
  31. package/3rdparty/walkontable/src/overlay/top.js +12 -1
  32. package/3rdparty/walkontable/src/overlay/top.mjs +13 -2
  33. package/3rdparty/walkontable/src/overlay/topInlineStartCorner.js +1 -1
  34. package/3rdparty/walkontable/src/overlay/topInlineStartCorner.mjs +1 -1
  35. package/3rdparty/walkontable/src/overlays.js +47 -5
  36. package/3rdparty/walkontable/src/overlays.mjs +47 -5
  37. package/3rdparty/walkontable/src/renderer/_base.js +1 -1
  38. package/3rdparty/walkontable/src/renderer/_base.mjs +1 -1
  39. package/3rdparty/walkontable/src/renderer/cells.js +1 -1
  40. package/3rdparty/walkontable/src/renderer/cells.mjs +1 -1
  41. package/3rdparty/walkontable/src/renderer/rowHeaders.js +1 -1
  42. package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +1 -1
  43. package/3rdparty/walkontable/src/renderer/rows.js +1 -1
  44. package/3rdparty/walkontable/src/renderer/rows.mjs +1 -1
  45. package/3rdparty/walkontable/src/renderer/table.js +1 -1
  46. package/3rdparty/walkontable/src/renderer/table.mjs +1 -1
  47. package/3rdparty/walkontable/src/scroll.js +16 -18
  48. package/3rdparty/walkontable/src/scroll.mjs +16 -18
  49. package/3rdparty/walkontable/src/selection/manager.js +48 -69
  50. package/3rdparty/walkontable/src/selection/manager.mjs +48 -69
  51. package/3rdparty/walkontable/src/selection/scanner.js +33 -42
  52. package/3rdparty/walkontable/src/selection/scanner.mjs +33 -42
  53. package/3rdparty/walkontable/src/settings.js +1 -1
  54. package/3rdparty/walkontable/src/settings.mjs +1 -1
  55. package/3rdparty/walkontable/src/table.js +1 -1
  56. package/3rdparty/walkontable/src/table.mjs +1 -1
  57. package/3rdparty/walkontable/src/utils/column.js +1 -1
  58. package/3rdparty/walkontable/src/utils/column.mjs +1 -1
  59. package/3rdparty/walkontable/src/utils/columnStretching.js +28 -45
  60. package/3rdparty/walkontable/src/utils/columnStretching.mjs +28 -45
  61. package/3rdparty/walkontable/src/utils/nodesPool.js +1 -1
  62. package/3rdparty/walkontable/src/utils/nodesPool.mjs +1 -1
  63. package/3rdparty/walkontable/src/utils/orderView/view.js +2 -2
  64. package/3rdparty/walkontable/src/utils/orderView/view.mjs +2 -2
  65. package/3rdparty/walkontable/src/utils/orderView/viewSize.js +1 -1
  66. package/3rdparty/walkontable/src/utils/orderView/viewSize.mjs +1 -1
  67. package/3rdparty/walkontable/src/utils/orderView/viewSizeSet.js +1 -1
  68. package/3rdparty/walkontable/src/utils/orderView/viewSizeSet.mjs +1 -1
  69. package/3rdparty/walkontable/src/utils/row.js +1 -1
  70. package/3rdparty/walkontable/src/utils/row.mjs +1 -1
  71. package/CHANGELOG.md +20 -0
  72. package/base.js +2 -2
  73. package/base.mjs +2 -2
  74. package/core/viewportScroll/index.js +4 -1
  75. package/core/viewportScroll/index.mjs +4 -1
  76. package/core/viewportScroll/scrollStrategies/focusScroll.js +15 -0
  77. package/core/viewportScroll/scrollStrategies/focusScroll.mjs +11 -0
  78. package/core.d.ts +4 -3
  79. package/core.js +98 -43
  80. package/core.mjs +98 -43
  81. package/dataMap/dataMap.js +1 -1
  82. package/dataMap/dataMap.mjs +1 -1
  83. package/dataMap/dataSource.js +2 -2
  84. package/dataMap/dataSource.mjs +2 -2
  85. package/dataMap/metaManager/lazyFactoryMap.js +3 -5
  86. package/dataMap/metaManager/lazyFactoryMap.mjs +2 -4
  87. package/dataMap/metaManager/metaLayers/cellMeta.js +2 -2
  88. package/dataMap/metaManager/metaLayers/cellMeta.mjs +2 -2
  89. package/dataMap/metaManager/metaLayers/columnMeta.js +1 -1
  90. package/dataMap/metaManager/metaLayers/columnMeta.mjs +1 -1
  91. package/dataMap/metaManager/metaLayers/globalMeta.js +1 -1
  92. package/dataMap/metaManager/metaLayers/globalMeta.mjs +1 -1
  93. package/dataMap/metaManager/metaLayers/tableMeta.js +1 -1
  94. package/dataMap/metaManager/metaLayers/tableMeta.mjs +1 -1
  95. package/dataMap/metaManager/metaSchema.js +272 -272
  96. package/dataMap/metaManager/metaSchema.mjs +272 -272
  97. package/dataMap/metaManager/mods/dynamicCellMeta.js +1 -1
  98. package/dataMap/metaManager/mods/dynamicCellMeta.mjs +1 -1
  99. package/dataMap/metaManager/mods/extendMetaProperties.js +1 -1
  100. package/dataMap/metaManager/mods/extendMetaProperties.mjs +1 -1
  101. package/dataMap/replaceData.js +1 -1
  102. package/dataMap/replaceData.mjs +1 -1
  103. package/dist/handsontable.css +4 -4
  104. package/dist/handsontable.full.css +4 -4
  105. package/dist/handsontable.full.js +9814 -10020
  106. package/dist/handsontable.full.min.css +3 -3
  107. package/dist/handsontable.full.min.js +292 -292
  108. package/dist/handsontable.js +7484 -7056
  109. package/dist/handsontable.min.css +3 -3
  110. package/dist/handsontable.min.js +25 -25
  111. package/dist/languages/all.min.js +1 -1
  112. package/dist/languages/ar-AR.min.js +1 -1
  113. package/dist/languages/cs-CZ.min.js +1 -1
  114. package/dist/languages/de-CH.min.js +1 -1
  115. package/dist/languages/de-DE.min.js +1 -1
  116. package/dist/languages/en-US.min.js +1 -1
  117. package/dist/languages/es-MX.min.js +1 -1
  118. package/dist/languages/fr-FR.min.js +1 -1
  119. package/dist/languages/hr-HR.min.js +1 -1
  120. package/dist/languages/it-IT.min.js +1 -1
  121. package/dist/languages/ja-JP.min.js +1 -1
  122. package/dist/languages/ko-KR.min.js +1 -1
  123. package/dist/languages/lv-LV.min.js +1 -1
  124. package/dist/languages/nb-NO.min.js +1 -1
  125. package/dist/languages/nl-NL.min.js +1 -1
  126. package/dist/languages/pl-PL.min.js +1 -1
  127. package/dist/languages/pt-BR.min.js +1 -1
  128. package/dist/languages/ru-RU.min.js +1 -1
  129. package/dist/languages/sr-SP.min.js +1 -1
  130. package/dist/languages/zh-CN.min.js +1 -1
  131. package/dist/languages/zh-TW.min.js +1 -1
  132. package/editorManager.js +26 -24
  133. package/editorManager.mjs +26 -24
  134. package/editors/autocompleteEditor/autocompleteEditor.js +7 -11
  135. package/editors/autocompleteEditor/autocompleteEditor.mjs +7 -11
  136. package/editors/baseEditor/baseEditor.js +1 -1
  137. package/editors/baseEditor/baseEditor.mjs +1 -1
  138. package/editors/dateEditor/dateEditor.js +49 -11
  139. package/editors/dateEditor/dateEditor.mjs +49 -11
  140. package/editors/selectEditor/selectEditor.js +20 -19
  141. package/editors/selectEditor/selectEditor.mjs +20 -19
  142. package/editors/textEditor/textEditor.js +1 -1
  143. package/editors/textEditor/textEditor.mjs +1 -1
  144. package/eventManager.js +2 -2
  145. package/eventManager.mjs +2 -2
  146. package/focusManager.js +64 -82
  147. package/focusManager.mjs +64 -82
  148. package/helpers/dom/element.js +23 -1
  149. package/helpers/dom/element.mjs +21 -1
  150. package/helpers/mixed.js +2 -2
  151. package/helpers/mixed.mjs +2 -2
  152. package/helpers/object.js +2 -2
  153. package/helpers/object.mjs +2 -2
  154. package/i18n/languages/ar-AR.d.ts +5 -0
  155. package/i18n/languages/ar-AR.js +1 -1
  156. package/i18n/languages/cs-CZ.d.ts +5 -0
  157. package/i18n/languages/cs-CZ.js +1 -1
  158. package/i18n/languages/de-CH.js +1 -1
  159. package/i18n/languages/de-DE.js +1 -1
  160. package/i18n/languages/en-US.js +1 -1
  161. package/i18n/languages/es-MX.js +1 -1
  162. package/i18n/languages/fr-FR.js +1 -1
  163. package/i18n/languages/hr-HR.d.ts +5 -0
  164. package/i18n/languages/hr-HR.js +1 -1
  165. package/i18n/languages/it-IT.js +1 -1
  166. package/i18n/languages/ja-JP.js +1 -1
  167. package/i18n/languages/ko-KR.js +1 -1
  168. package/i18n/languages/lv-LV.js +1 -1
  169. package/i18n/languages/nb-NO.js +1 -1
  170. package/i18n/languages/nl-NL.js +1 -1
  171. package/i18n/languages/pl-PL.js +1 -1
  172. package/i18n/languages/pt-BR.js +1 -1
  173. package/i18n/languages/ru-RU.js +1 -1
  174. package/i18n/languages/sr-SP.d.ts +5 -0
  175. package/i18n/languages/sr-SP.js +1 -1
  176. package/i18n/languages/zh-CN.js +1 -1
  177. package/i18n/languages/zh-TW.js +1 -1
  178. package/i18n/registry.js +1 -1
  179. package/index.d.ts +10 -0
  180. package/index.js +1 -1
  181. package/package.json +14 -10
  182. package/pluginHooks.d.ts +4 -3
  183. package/pluginHooks.js +143 -82
  184. package/pluginHooks.mjs +143 -82
  185. package/plugins/autoColumnSize/autoColumnSize.js +50 -66
  186. package/plugins/autoColumnSize/autoColumnSize.mjs +50 -66
  187. package/plugins/autoRowSize/autoRowSize.js +29 -35
  188. package/plugins/autoRowSize/autoRowSize.mjs +29 -35
  189. package/plugins/autofill/autofill.js +31 -39
  190. package/plugins/autofill/autofill.mjs +31 -39
  191. package/plugins/base/base.js +13 -18
  192. package/plugins/base/base.mjs +13 -18
  193. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.js +6 -6
  194. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.mjs +6 -6
  195. package/plugins/collapsibleColumns/collapsibleColumns.js +60 -51
  196. package/plugins/collapsibleColumns/collapsibleColumns.mjs +60 -51
  197. package/plugins/columnSorting/columnSorting.js +50 -46
  198. package/plugins/columnSorting/columnSorting.mjs +50 -46
  199. package/plugins/columnSorting/columnStatesManager.js +1 -1
  200. package/plugins/columnSorting/columnStatesManager.mjs +1 -1
  201. package/plugins/columnSummary/columnSummary.js +36 -40
  202. package/plugins/columnSummary/columnSummary.mjs +36 -40
  203. package/plugins/columnSummary/endpoints.js +1 -1
  204. package/plugins/columnSummary/endpoints.mjs +1 -1
  205. package/plugins/comments/commentEditor.js +1 -1
  206. package/plugins/comments/commentEditor.mjs +1 -1
  207. package/plugins/comments/comments.js +117 -159
  208. package/plugins/comments/comments.mjs +117 -159
  209. package/plugins/comments/contextMenuItem/addEditComment.js +1 -1
  210. package/plugins/comments/contextMenuItem/readOnlyComment.js +1 -1
  211. package/plugins/comments/contextMenuItem/removeComment.js +1 -1
  212. package/plugins/comments/displaySwitch.js +1 -1
  213. package/plugins/comments/displaySwitch.mjs +1 -1
  214. package/plugins/contextMenu/commandExecutor.js +1 -1
  215. package/plugins/contextMenu/commandExecutor.mjs +1 -1
  216. package/plugins/contextMenu/contextMenu.js +24 -30
  217. package/plugins/contextMenu/contextMenu.mjs +24 -30
  218. package/plugins/contextMenu/itemsFactory.js +2 -2
  219. package/plugins/contextMenu/itemsFactory.mjs +2 -2
  220. package/plugins/contextMenu/menu/cursor.js +1 -1
  221. package/plugins/contextMenu/menu/cursor.mjs +1 -1
  222. package/plugins/contextMenu/menu/defaultShortcutsList.js +26 -10
  223. package/plugins/contextMenu/menu/defaultShortcutsList.mjs +26 -10
  224. package/plugins/contextMenu/menu/menu.js +14 -22
  225. package/plugins/contextMenu/menu/menu.mjs +14 -22
  226. package/plugins/contextMenu/menu/positioner.js +41 -58
  227. package/plugins/contextMenu/menu/positioner.mjs +41 -58
  228. package/plugins/contextMenu/predefinedItems/alignment.js +1 -1
  229. package/plugins/contextMenu/predefinedItems/clearColumn.js +1 -1
  230. package/plugins/contextMenu/predefinedItems/columnLeft.js +1 -1
  231. package/plugins/contextMenu/predefinedItems/columnRight.js +1 -1
  232. package/plugins/contextMenu/predefinedItems/index.js +1 -1
  233. package/plugins/contextMenu/predefinedItems/readOnly.js +1 -1
  234. package/plugins/contextMenu/predefinedItems/redo.js +1 -1
  235. package/plugins/contextMenu/predefinedItems/removeColumn.js +1 -1
  236. package/plugins/contextMenu/predefinedItems/removeRow.js +1 -1
  237. package/plugins/contextMenu/predefinedItems/rowAbove.js +1 -1
  238. package/plugins/contextMenu/predefinedItems/rowBelow.js +1 -1
  239. package/plugins/contextMenu/predefinedItems/undo.js +1 -1
  240. package/plugins/copyPaste/contextMenuItem/cut.js +1 -1
  241. package/plugins/copyPaste/copyPaste.js +120 -161
  242. package/plugins/copyPaste/copyPaste.mjs +120 -161
  243. package/plugins/copyPaste/copyableRanges.js +43 -66
  244. package/plugins/copyPaste/copyableRanges.mjs +43 -66
  245. package/plugins/customBorders/contextMenuItem/bottom.js +1 -1
  246. package/plugins/customBorders/contextMenuItem/left.js +1 -1
  247. package/plugins/customBorders/contextMenuItem/noBorders.js +1 -1
  248. package/plugins/customBorders/contextMenuItem/right.js +1 -1
  249. package/plugins/customBorders/contextMenuItem/top.js +1 -1
  250. package/plugins/customBorders/customBorders.js +14 -16
  251. package/plugins/customBorders/customBorders.mjs +13 -15
  252. package/plugins/dragToScroll/dragToScroll.js +7 -7
  253. package/plugins/dragToScroll/dragToScroll.mjs +7 -7
  254. package/plugins/dropdownMenu/dropdownMenu.js +84 -110
  255. package/plugins/dropdownMenu/dropdownMenu.mjs +84 -110
  256. package/plugins/exportFile/dataProvider.js +2 -2
  257. package/plugins/exportFile/dataProvider.mjs +2 -2
  258. package/plugins/exportFile/exportFile.js +2 -2
  259. package/plugins/exportFile/exportFile.mjs +1 -1
  260. package/plugins/exportFile/types/_base.js +1 -1
  261. package/plugins/exportFile/types/_base.mjs +1 -1
  262. package/plugins/filters/component/_base.js +1 -1
  263. package/plugins/filters/component/_base.mjs +1 -1
  264. package/plugins/filters/component/actionBar.js +11 -11
  265. package/plugins/filters/component/actionBar.mjs +9 -9
  266. package/plugins/filters/component/condition.js +15 -17
  267. package/plugins/filters/component/condition.mjs +14 -16
  268. package/plugins/filters/component/operators.js +7 -7
  269. package/plugins/filters/component/operators.mjs +7 -7
  270. package/plugins/filters/component/value.js +26 -30
  271. package/plugins/filters/component/value.mjs +25 -29
  272. package/plugins/filters/condition/beginsWith.js +1 -1
  273. package/plugins/filters/condition/between.js +1 -1
  274. package/plugins/filters/condition/contains.js +1 -1
  275. package/plugins/filters/condition/date/after.js +1 -1
  276. package/plugins/filters/condition/date/before.js +1 -1
  277. package/plugins/filters/condition/date/today.js +1 -1
  278. package/plugins/filters/condition/date/tomorrow.js +1 -1
  279. package/plugins/filters/condition/date/yesterday.js +1 -1
  280. package/plugins/filters/condition/empty.js +1 -1
  281. package/plugins/filters/condition/endsWith.js +1 -1
  282. package/plugins/filters/condition/equal.js +1 -1
  283. package/plugins/filters/condition/greaterThan.js +1 -1
  284. package/plugins/filters/condition/greaterThanOrEqual.js +1 -1
  285. package/plugins/filters/condition/lessThan.js +1 -1
  286. package/plugins/filters/condition/lessThanOrEqual.js +1 -1
  287. package/plugins/filters/condition/none.js +1 -1
  288. package/plugins/filters/condition/notBetween.js +1 -1
  289. package/plugins/filters/condition/notContains.js +1 -1
  290. package/plugins/filters/condition/notEmpty.js +1 -1
  291. package/plugins/filters/condition/notEqual.js +1 -1
  292. package/plugins/filters/conditionCollection.js +1 -1
  293. package/plugins/filters/conditionCollection.mjs +1 -1
  294. package/plugins/filters/conditionUpdateObserver.js +23 -25
  295. package/plugins/filters/conditionUpdateObserver.mjs +23 -25
  296. package/plugins/filters/dataFilter.js +2 -2
  297. package/plugins/filters/dataFilter.mjs +2 -2
  298. package/plugins/filters/filters.js +84 -98
  299. package/plugins/filters/filters.mjs +83 -97
  300. package/plugins/filters/logicalOperations/conjunction.js +1 -1
  301. package/plugins/filters/logicalOperations/disjunction.js +1 -1
  302. package/plugins/filters/logicalOperations/disjunctionWithExtraCondition.js +1 -1
  303. package/plugins/filters/ui/_base.js +2 -2
  304. package/plugins/filters/ui/_base.mjs +1 -1
  305. package/plugins/filters/ui/input.js +13 -19
  306. package/plugins/filters/ui/input.mjs +13 -19
  307. package/plugins/filters/ui/link.js +8 -13
  308. package/plugins/filters/ui/link.mjs +8 -13
  309. package/plugins/filters/ui/multipleSelect.js +86 -113
  310. package/plugins/filters/ui/multipleSelect.mjs +85 -112
  311. package/plugins/filters/ui/radioInput.js +12 -20
  312. package/plugins/filters/ui/radioInput.mjs +12 -20
  313. package/plugins/filters/ui/select.js +51 -73
  314. package/plugins/filters/ui/select.mjs +49 -71
  315. package/plugins/formulas/formulas.js +270 -328
  316. package/plugins/formulas/formulas.mjs +271 -329
  317. package/plugins/formulas/indexSyncer/axisSyncer.js +38 -61
  318. package/plugins/formulas/indexSyncer/axisSyncer.mjs +38 -61
  319. package/plugins/formulas/indexSyncer/index.js +25 -48
  320. package/plugins/formulas/indexSyncer/index.mjs +25 -48
  321. package/plugins/hiddenColumns/contextMenuItem/hideColumn.js +1 -1
  322. package/plugins/hiddenColumns/contextMenuItem/showColumn.js +1 -1
  323. package/plugins/hiddenColumns/hiddenColumns.js +68 -87
  324. package/plugins/hiddenColumns/hiddenColumns.mjs +68 -87
  325. package/plugins/hiddenRows/contextMenuItem/hideRow.js +1 -1
  326. package/plugins/hiddenRows/contextMenuItem/showRow.js +1 -1
  327. package/plugins/hiddenRows/hiddenRows.js +67 -86
  328. package/plugins/hiddenRows/hiddenRows.mjs +67 -86
  329. package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.js +1 -1
  330. package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.js +1 -1
  331. package/plugins/manualColumnFreeze/manualColumnFreeze.js +24 -32
  332. package/plugins/manualColumnFreeze/manualColumnFreeze.mjs +25 -33
  333. package/plugins/manualColumnMove/manualColumnMove.js +133 -177
  334. package/plugins/manualColumnMove/manualColumnMove.mjs +133 -177
  335. package/plugins/manualColumnMove/ui/_base.js +1 -1
  336. package/plugins/manualColumnMove/ui/_base.mjs +1 -1
  337. package/plugins/manualColumnResize/manualColumnResize.js +169 -230
  338. package/plugins/manualColumnResize/manualColumnResize.mjs +169 -230
  339. package/plugins/manualRowMove/manualRowMove.js +106 -135
  340. package/plugins/manualRowMove/manualRowMove.mjs +106 -135
  341. package/plugins/manualRowMove/ui/_base.js +1 -1
  342. package/plugins/manualRowMove/ui/_base.mjs +1 -1
  343. package/plugins/manualRowResize/manualRowResize.js +150 -209
  344. package/plugins/manualRowResize/manualRowResize.mjs +150 -209
  345. package/plugins/mergeCells/calculations/autofill.js +1 -1
  346. package/plugins/mergeCells/calculations/autofill.mjs +1 -1
  347. package/plugins/mergeCells/calculations/selection.js +3 -72
  348. package/plugins/mergeCells/calculations/selection.mjs +3 -72
  349. package/plugins/mergeCells/cellCoords.js +1 -1
  350. package/plugins/mergeCells/cellCoords.mjs +1 -1
  351. package/plugins/mergeCells/cellsCollection.js +118 -2
  352. package/plugins/mergeCells/cellsCollection.mjs +118 -2
  353. package/plugins/mergeCells/contextMenuItem/toggleMerge.js +12 -2
  354. package/plugins/mergeCells/contextMenuItem/toggleMerge.mjs +11 -1
  355. package/plugins/mergeCells/focusOrder.js +305 -0
  356. package/plugins/mergeCells/focusOrder.mjs +300 -0
  357. package/plugins/mergeCells/mergeCells.js +500 -398
  358. package/plugins/mergeCells/mergeCells.mjs +500 -398
  359. package/plugins/multiColumnSorting/multiColumnSorting.js +9 -3
  360. package/plugins/multiColumnSorting/multiColumnSorting.mjs +9 -3
  361. package/plugins/multipleSelectionHandles/multipleSelectionHandles.js +2 -2
  362. package/plugins/multipleSelectionHandles/multipleSelectionHandles.mjs +2 -2
  363. package/plugins/nestedHeaders/nestedHeaders.js +206 -254
  364. package/plugins/nestedHeaders/nestedHeaders.mjs +207 -255
  365. package/plugins/nestedHeaders/stateManager/headersTree.js +21 -32
  366. package/plugins/nestedHeaders/stateManager/headersTree.mjs +21 -32
  367. package/plugins/nestedHeaders/stateManager/index.js +30 -41
  368. package/plugins/nestedHeaders/stateManager/index.mjs +30 -41
  369. package/plugins/nestedHeaders/stateManager/sourceSettings.js +19 -30
  370. package/plugins/nestedHeaders/stateManager/sourceSettings.mjs +19 -30
  371. package/plugins/nestedHeaders/utils/ghostTable.js +1 -1
  372. package/plugins/nestedHeaders/utils/ghostTable.mjs +1 -1
  373. package/plugins/nestedRows/data/dataManager.js +2 -2
  374. package/plugins/nestedRows/data/dataManager.mjs +2 -2
  375. package/plugins/nestedRows/nestedRows.js +154 -185
  376. package/plugins/nestedRows/nestedRows.mjs +155 -186
  377. package/plugins/nestedRows/ui/_base.js +1 -1
  378. package/plugins/nestedRows/ui/_base.mjs +1 -1
  379. package/plugins/nestedRows/ui/contextMenu.js +13 -17
  380. package/plugins/nestedRows/ui/contextMenu.mjs +11 -15
  381. package/plugins/nestedRows/utils/rowMoveController.js +6 -6
  382. package/plugins/nestedRows/utils/rowMoveController.mjs +6 -6
  383. package/plugins/persistentState/persistentState.js +1 -1
  384. package/plugins/persistentState/persistentState.mjs +1 -1
  385. package/plugins/persistentState/storage.js +3 -3
  386. package/plugins/persistentState/storage.mjs +3 -3
  387. package/plugins/search/search.js +8 -8
  388. package/plugins/search/search.mjs +8 -8
  389. package/plugins/touchScroll/touchScroll.js +16 -20
  390. package/plugins/touchScroll/touchScroll.mjs +17 -21
  391. package/plugins/trimRows/trimRows.js +7 -7
  392. package/plugins/trimRows/trimRows.mjs +7 -7
  393. package/plugins/undoRedo/index.js +1 -1
  394. package/renderers/checkboxRenderer/checkboxRenderer.js +8 -5
  395. package/renderers/checkboxRenderer/checkboxRenderer.mjs +8 -5
  396. package/selection/highlight/highlight.js +16 -18
  397. package/selection/highlight/highlight.mjs +15 -17
  398. package/selection/highlight/visualSelection.js +3 -1
  399. package/selection/highlight/visualSelection.mjs +3 -1
  400. package/selection/range.js +3 -5
  401. package/selection/range.mjs +2 -4
  402. package/selection/selection.js +227 -69
  403. package/selection/selection.mjs +225 -67
  404. package/selection/transformation.js +149 -118
  405. package/selection/transformation.mjs +149 -118
  406. package/shortcutContexts/commands/editor/closeAndSave.js +2 -2
  407. package/shortcutContexts/commands/editor/closeAndSave.mjs +2 -2
  408. package/shortcutContexts/commands/editor/open.js +18 -3
  409. package/shortcutContexts/commands/editor/open.mjs +18 -3
  410. package/shortcutContexts/commands/extendCellsSelection/down.js +1 -1
  411. package/shortcutContexts/commands/extendCellsSelection/down.mjs +1 -1
  412. package/shortcutContexts/commands/extendCellsSelection/left.js +1 -1
  413. package/shortcutContexts/commands/extendCellsSelection/left.mjs +1 -1
  414. package/shortcutContexts/commands/extendCellsSelection/right.js +1 -1
  415. package/shortcutContexts/commands/extendCellsSelection/right.mjs +1 -1
  416. package/shortcutContexts/commands/extendCellsSelection/toColumns.js +1 -1
  417. package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +1 -1
  418. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +3 -1
  419. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +3 -1
  420. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +9 -3
  421. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +9 -3
  422. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +10 -3
  423. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +10 -3
  424. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +3 -1
  425. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +3 -1
  426. package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +3 -1
  427. package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +3 -1
  428. package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +3 -1
  429. package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +3 -1
  430. package/shortcutContexts/commands/extendCellsSelection/toRows.js +1 -1
  431. package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +1 -1
  432. package/shortcutContexts/commands/extendCellsSelection/up.js +1 -1
  433. package/shortcutContexts/commands/extendCellsSelection/up.mjs +1 -1
  434. package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +6 -1
  435. package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +6 -1
  436. package/shortcutContexts/commands/moveCellSelection/inlineStart.js +6 -1
  437. package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +6 -1
  438. package/shortcutContexts/grid.js +9 -3
  439. package/shortcutContexts/grid.mjs +9 -3
  440. package/shortcuts/context.js +3 -2
  441. package/shortcuts/context.mjs +3 -2
  442. package/shortcuts/manager.js +2 -2
  443. package/shortcuts/manager.mjs +2 -2
  444. package/tableView.js +53 -79
  445. package/tableView.mjs +53 -79
  446. package/translations/changesObservable/observable.js +21 -38
  447. package/translations/changesObservable/observable.mjs +21 -38
  448. package/translations/changesObservable/observer.js +7 -12
  449. package/translations/changesObservable/observer.mjs +6 -11
  450. package/translations/indexMapper.js +1 -1
  451. package/translations/indexMapper.mjs +1 -1
  452. package/translations/mapCollections/aggregatedCollection.js +2 -2
  453. package/translations/mapCollections/aggregatedCollection.mjs +2 -2
  454. package/translations/mapCollections/mapCollection.js +1 -1
  455. package/translations/mapCollections/mapCollection.mjs +1 -1
  456. package/translations/maps/indexMap.js +2 -2
  457. package/translations/maps/indexMap.mjs +2 -2
  458. package/translations/maps/linkedPhysicalIndexToValueMap.js +1 -1
  459. package/translations/maps/linkedPhysicalIndexToValueMap.mjs +1 -1
  460. package/utils/dataStructures/linkedList.js +7 -2
  461. package/utils/dataStructures/linkedList.mjs +7 -2
  462. package/utils/dataStructures/tree.js +2 -2
  463. package/utils/dataStructures/tree.mjs +2 -2
  464. package/utils/ghostTable.js +1 -1
  465. package/utils/ghostTable.mjs +1 -1
  466. package/utils/interval.js +27 -45
  467. package/utils/interval.mjs +27 -45
  468. package/utils/samplesGenerator.js +1 -1
  469. package/utils/samplesGenerator.mjs +1 -1
@@ -5,7 +5,7 @@ require("core-js/modules/es.error.cause.js");
5
5
  var _object = require("../../../helpers/object");
6
6
  var _array = require("../../../helpers/array");
7
7
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
8
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
8
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
9
9
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
10
10
  /**
11
11
  * Class responsible for all of the Autofill-related operations on merged cells.
@@ -1,6 +1,6 @@
1
1
  import "core-js/modules/es.error.cause.js";
2
2
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
3
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
3
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
4
4
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
5
5
  import { extend } from "../../../helpers/object.mjs";
6
6
  import { arrayEach } from "../../../helpers/array.mjs";
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
2
 
3
3
  exports.__esModule = true;
4
- require("core-js/modules/es.array.push.js");
5
4
  require("core-js/modules/es.error.cause.js");
5
+ require("core-js/modules/es.array.push.js");
6
6
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
7
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
7
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
8
8
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
9
9
  /**
10
10
  * Class responsible for all of the Selection-related operations on merged cells.
@@ -36,74 +36,6 @@ class SelectionCalculations {
36
36
  this.hot = plugin.hot;
37
37
  }
38
38
 
39
- /**
40
- * "Snap" the delta value according to defined merged cells. (In other words, compensate the rowspan -
41
- * e.g. Going up with `delta.row = -1` over a merged cell with `rowspan = 3`, `delta.row` should change to `-3`.).
42
- *
43
- * @param {object} delta The delta object containing `row` and `col` properties.
44
- * @param {CellRange} selectionRange The selection range.
45
- * @param {object} mergedCell A merged cell object.
46
- */
47
- snapDelta(delta, selectionRange, mergedCell) {
48
- const cellCoords = selectionRange.to;
49
- const newRow = cellCoords.row + delta.row;
50
- const newColumn = cellCoords.col + delta.col;
51
- if (delta.row) {
52
- this.jumpOverMergedCell(delta, mergedCell, newRow);
53
- } else if (delta.col) {
54
- this.jumpOverMergedCell(delta, mergedCell, newColumn);
55
- }
56
- }
57
-
58
- /**
59
- * "Jump" over the merged cell (compensate for the indexes within the merged cell to get past it).
60
- *
61
- * @private
62
- * @param {object} delta The delta object.
63
- * @param {MergedCellCoords} mergedCell The merge cell object.
64
- * @param {number} newIndex New row/column index, created with the delta.
65
- */
66
- jumpOverMergedCell(delta, mergedCell, newIndex) {
67
- let flatDelta = delta.row || delta.col;
68
- let includesIndex = null;
69
- let firstIndex = null;
70
- let lastIndex = null;
71
- if (delta.row) {
72
- includesIndex = mergedCell.includesVertically(newIndex);
73
- firstIndex = mergedCell.row;
74
- lastIndex = mergedCell.getLastRow();
75
- } else if (delta.col) {
76
- includesIndex = mergedCell.includesHorizontally(newIndex);
77
- firstIndex = mergedCell.col;
78
- lastIndex = mergedCell.getLastColumn();
79
- }
80
- if (flatDelta === 0) {
81
- return;
82
- } else if (flatDelta > 0) {
83
- if (includesIndex && newIndex !== firstIndex) {
84
- flatDelta += lastIndex - newIndex + 1;
85
- }
86
- } else if (includesIndex && newIndex !== lastIndex) {
87
- flatDelta -= newIndex - firstIndex + 1;
88
- }
89
- if (delta.row) {
90
- delta.row = flatDelta;
91
- } else if (delta.col) {
92
- delta.col = flatDelta;
93
- }
94
- }
95
-
96
- /**
97
- * Get a selection range with `to` property incremented by the provided delta.
98
- *
99
- * @param {CellRange} oldSelectionRange The base selection range.
100
- * @param {object} delta The delta object with `row` and `col` properties.
101
- * @returns {CellRange} A new `CellRange` object.
102
- */
103
- getUpdatedSelectionRange(oldSelectionRange, delta) {
104
- return this.hot._createCellRange(oldSelectionRange.highlight, oldSelectionRange.from, this.hot._createCellCoords(oldSelectionRange.to.row + delta.row, oldSelectionRange.to.col + delta.col));
105
- }
106
-
107
39
  /**
108
40
  * Generate an additional class name for the entirely-selected merged cells.
109
41
  *
@@ -136,8 +68,7 @@ class SelectionCalculations {
136
68
  const fullMergeAreaWithinSelection = startRow <= mergedCell.row && startColumn <= mergedCell.col && endRow >= mergeRowEnd && endColumn >= mergeColumnEnd;
137
69
  if (fullMergeAreaWithinSelection) {
138
70
  return `${this.fullySelectedMergedCellClassName}-${layerLevel}`;
139
- } else if (this.plugin.selectionCalculations.isMergeCellFullySelected(mergedCell, this.plugin.hot.getSelectedRange())) {
140
- // eslint-disable-line max-len
71
+ } else if (this.isMergeCellFullySelected(mergedCell, this.plugin.hot.getSelectedRange())) {
141
72
  return `${this.fullySelectedMergedCellClassName}-multiple`;
142
73
  }
143
74
  }
@@ -1,7 +1,7 @@
1
- import "core-js/modules/es.array.push.js";
2
1
  import "core-js/modules/es.error.cause.js";
2
+ import "core-js/modules/es.array.push.js";
3
3
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
4
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
4
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
5
5
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
6
6
  /**
7
7
  * Class responsible for all of the Selection-related operations on merged cells.
@@ -33,74 +33,6 @@ class SelectionCalculations {
33
33
  this.hot = plugin.hot;
34
34
  }
35
35
 
36
- /**
37
- * "Snap" the delta value according to defined merged cells. (In other words, compensate the rowspan -
38
- * e.g. Going up with `delta.row = -1` over a merged cell with `rowspan = 3`, `delta.row` should change to `-3`.).
39
- *
40
- * @param {object} delta The delta object containing `row` and `col` properties.
41
- * @param {CellRange} selectionRange The selection range.
42
- * @param {object} mergedCell A merged cell object.
43
- */
44
- snapDelta(delta, selectionRange, mergedCell) {
45
- const cellCoords = selectionRange.to;
46
- const newRow = cellCoords.row + delta.row;
47
- const newColumn = cellCoords.col + delta.col;
48
- if (delta.row) {
49
- this.jumpOverMergedCell(delta, mergedCell, newRow);
50
- } else if (delta.col) {
51
- this.jumpOverMergedCell(delta, mergedCell, newColumn);
52
- }
53
- }
54
-
55
- /**
56
- * "Jump" over the merged cell (compensate for the indexes within the merged cell to get past it).
57
- *
58
- * @private
59
- * @param {object} delta The delta object.
60
- * @param {MergedCellCoords} mergedCell The merge cell object.
61
- * @param {number} newIndex New row/column index, created with the delta.
62
- */
63
- jumpOverMergedCell(delta, mergedCell, newIndex) {
64
- let flatDelta = delta.row || delta.col;
65
- let includesIndex = null;
66
- let firstIndex = null;
67
- let lastIndex = null;
68
- if (delta.row) {
69
- includesIndex = mergedCell.includesVertically(newIndex);
70
- firstIndex = mergedCell.row;
71
- lastIndex = mergedCell.getLastRow();
72
- } else if (delta.col) {
73
- includesIndex = mergedCell.includesHorizontally(newIndex);
74
- firstIndex = mergedCell.col;
75
- lastIndex = mergedCell.getLastColumn();
76
- }
77
- if (flatDelta === 0) {
78
- return;
79
- } else if (flatDelta > 0) {
80
- if (includesIndex && newIndex !== firstIndex) {
81
- flatDelta += lastIndex - newIndex + 1;
82
- }
83
- } else if (includesIndex && newIndex !== lastIndex) {
84
- flatDelta -= newIndex - firstIndex + 1;
85
- }
86
- if (delta.row) {
87
- delta.row = flatDelta;
88
- } else if (delta.col) {
89
- delta.col = flatDelta;
90
- }
91
- }
92
-
93
- /**
94
- * Get a selection range with `to` property incremented by the provided delta.
95
- *
96
- * @param {CellRange} oldSelectionRange The base selection range.
97
- * @param {object} delta The delta object with `row` and `col` properties.
98
- * @returns {CellRange} A new `CellRange` object.
99
- */
100
- getUpdatedSelectionRange(oldSelectionRange, delta) {
101
- return this.hot._createCellRange(oldSelectionRange.highlight, oldSelectionRange.from, this.hot._createCellCoords(oldSelectionRange.to.row + delta.row, oldSelectionRange.to.col + delta.col));
102
- }
103
-
104
36
  /**
105
37
  * Generate an additional class name for the entirely-selected merged cells.
106
38
  *
@@ -133,8 +65,7 @@ class SelectionCalculations {
133
65
  const fullMergeAreaWithinSelection = startRow <= mergedCell.row && startColumn <= mergedCell.col && endRow >= mergeRowEnd && endColumn >= mergeColumnEnd;
134
66
  if (fullMergeAreaWithinSelection) {
135
67
  return `${this.fullySelectedMergedCellClassName}-${layerLevel}`;
136
- } else if (this.plugin.selectionCalculations.isMergeCellFullySelected(mergedCell, this.plugin.hot.getSelectedRange())) {
137
- // eslint-disable-line max-len
68
+ } else if (this.isMergeCellFullySelected(mergedCell, this.plugin.hot.getSelectedRange())) {
138
69
  return `${this.fullySelectedMergedCellClassName}-multiple`;
139
70
  }
140
71
  }
@@ -4,7 +4,7 @@ exports.__esModule = true;
4
4
  require("core-js/modules/es.error.cause.js");
5
5
  var _templateLiteralTag = require("../../helpers/templateLiteralTag");
6
6
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
7
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
7
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
8
8
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
9
9
  /**
10
10
  * The `MergedCellCoords` class represents a single merged cell.
@@ -1,6 +1,6 @@
1
1
  import "core-js/modules/es.error.cause.js";
2
2
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
3
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
3
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
4
4
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
5
5
  import { toSingleLine } from "../../helpers/templateLiteralTag.mjs";
6
6
  /**
@@ -1,8 +1,9 @@
1
1
  "use strict";
2
2
 
3
3
  exports.__esModule = true;
4
- require("core-js/modules/es.array.push.js");
5
4
  require("core-js/modules/es.error.cause.js");
5
+ require("core-js/modules/es.array.push.js");
6
+ require("core-js/modules/es.array.unscopables.flat-map.js");
6
7
  var _cellCoords = _interopRequireDefault(require("./cellCoords"));
7
8
  var _number = require("../../helpers/number");
8
9
  var _console = require("../../helpers/console");
@@ -10,17 +11,30 @@ var _array = require("../../helpers/array");
10
11
  var _utils = require("./utils");
11
12
  var _templateLiteralTag = require("../../helpers/templateLiteralTag");
12
13
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
+ function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
15
+ function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
13
16
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
14
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
17
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
15
18
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
19
+ function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); }
16
20
  /**
17
21
  * Defines a container object for the merged cells.
18
22
  *
19
23
  * @private
20
24
  * @class MergedCellsCollection
21
25
  */
26
+ var _MergedCellsCollection_brand = /*#__PURE__*/new WeakSet();
22
27
  class MergedCellsCollection {
23
28
  constructor(mergeCellsPlugin) {
29
+ /**
30
+ * Gets the list of the indexes that do not intersect with other merged cells within the provided range.
31
+ *
32
+ * @param {CellRange} range The range to search within.
33
+ * @param {'row' | 'col'} axis The axis to search within.
34
+ * @param {number} scanDirection The direction to scan the range. `1` for forward, `-1` for backward.
35
+ * @returns {number[]}
36
+ */
37
+ _classPrivateMethodInitSpec(this, _MergedCellsCollection_brand);
24
38
  /**
25
39
  * Reference to the Merge Cells plugin.
26
40
  *
@@ -259,6 +273,81 @@ class MergedCellsCollection {
259
273
  return this.hot._createCellCoords(firstRenderableRow, firstRenderableColumn);
260
274
  }
261
275
 
276
+ /**
277
+ * Gets the start-most visual column index that do not intersect with other merged cells within the provided range.
278
+ *
279
+ * @param {CellRange} range The range to search within.
280
+ * @param {number} visualColumnIndex The visual column index to start the search from.
281
+ * @returns {number}
282
+ */
283
+ getStartMostColumnIndex(range, visualColumnIndex) {
284
+ const indexes = _assertClassBrand(_MergedCellsCollection_brand, this, _getNonIntersectingIndexes).call(this, range, 'col', -1);
285
+ let startMostIndex = visualColumnIndex;
286
+ for (let i = 0; i < indexes.length; i++) {
287
+ if (indexes[i] <= visualColumnIndex) {
288
+ startMostIndex = indexes[i];
289
+ break;
290
+ }
291
+ }
292
+ return startMostIndex;
293
+ }
294
+
295
+ /**
296
+ * Gets the end-most visual column index that do not intersect with other merged cells within the provided range.
297
+ *
298
+ * @param {CellRange} range The range to search within.
299
+ * @param {number} visualColumnIndex The visual column index to start the search from.
300
+ * @returns {number}
301
+ */
302
+ getEndMostColumnIndex(range, visualColumnIndex) {
303
+ const indexes = _assertClassBrand(_MergedCellsCollection_brand, this, _getNonIntersectingIndexes).call(this, range, 'col', 1);
304
+ let endMostIndex = visualColumnIndex;
305
+ for (let i = 0; i < indexes.length; i++) {
306
+ if (indexes[i] >= visualColumnIndex) {
307
+ endMostIndex = indexes[i];
308
+ break;
309
+ }
310
+ }
311
+ return endMostIndex;
312
+ }
313
+
314
+ /**
315
+ * Gets the top-most visual row index that do not intersect with other merged cells within the provided range.
316
+ *
317
+ * @param {CellRange} range The range to search within.
318
+ * @param {number} visualRowIndex The visual row index to start the search from.
319
+ * @returns {number}
320
+ */
321
+ getTopMostRowIndex(range, visualRowIndex) {
322
+ const indexes = _assertClassBrand(_MergedCellsCollection_brand, this, _getNonIntersectingIndexes).call(this, range, 'row', -1);
323
+ let topMostIndex = visualRowIndex;
324
+ for (let i = 0; i < indexes.length; i++) {
325
+ if (indexes[i] <= visualRowIndex) {
326
+ topMostIndex = indexes[i];
327
+ break;
328
+ }
329
+ }
330
+ return topMostIndex;
331
+ }
332
+
333
+ /**
334
+ * Gets the bottom-most visual row index that do not intersect with other merged cells within the provided range.
335
+ *
336
+ * @param {CellRange} range The range to search within.
337
+ * @param {number} visualRowIndex The visual row index to start the search from.
338
+ * @returns {number}
339
+ */
340
+ getBottomMostRowIndex(range, visualRowIndex) {
341
+ const indexes = _assertClassBrand(_MergedCellsCollection_brand, this, _getNonIntersectingIndexes).call(this, range, 'row', 1);
342
+ let bottomMostIndex = visualRowIndex;
343
+ for (let i = 0; i < indexes.length; i++) {
344
+ if (indexes[i] >= visualRowIndex) {
345
+ bottomMostIndex = indexes[i];
346
+ break;
347
+ }
348
+ }
349
+ return bottomMostIndex;
350
+ }
262
351
  /**
263
352
  * Shift the merged cell in the direction and by an offset defined in the arguments.
264
353
  *
@@ -294,4 +383,31 @@ class MergedCellsCollection {
294
383
  });
295
384
  }
296
385
  }
386
+ function _getNonIntersectingIndexes(range, axis) {
387
+ let scanDirection = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
388
+ const indexes = new Map();
389
+ const from = scanDirection === 1 ? range.getTopStartCorner() : range.getBottomEndCorner();
390
+ const to = scanDirection === 1 ? range.getBottomEndCorner() : range.getTopStartCorner();
391
+ for (let row = from.row; scanDirection === 1 ? row <= to.row : row >= to.row; row += scanDirection) {
392
+ for (let column = from.col; scanDirection === 1 ? column <= to.col : column >= to.col; column += scanDirection) {
393
+ const index = axis === 'row' ? row : column;
394
+ const mergedCell = this.get(row, column);
395
+ let lastIndex = index;
396
+ if (mergedCell) {
397
+ lastIndex = scanDirection === 1 ? mergedCell[axis] + mergedCell[`${axis}span`] - 1 : mergedCell[axis];
398
+ }
399
+ if (!indexes.has(index)) {
400
+ indexes.set(index, new Set());
401
+ }
402
+ indexes.get(index).add(lastIndex);
403
+ }
404
+ }
405
+ return Array.from(new Set(Array.from(indexes.entries()).filter(_ref => {
406
+ let [, set] = _ref;
407
+ return set.size === 1;
408
+ }).flatMap(_ref2 => {
409
+ let [, set] = _ref2;
410
+ return Array.from(set);
411
+ })));
412
+ }
297
413
  var _default = exports.default = MergedCellsCollection;
@@ -1,8 +1,12 @@
1
- import "core-js/modules/es.array.push.js";
2
1
  import "core-js/modules/es.error.cause.js";
2
+ import "core-js/modules/es.array.push.js";
3
+ import "core-js/modules/es.array.unscopables.flat-map.js";
4
+ function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
5
+ function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
3
6
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
4
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
7
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
5
8
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
9
+ function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); }
6
10
  import MergedCellCoords from "./cellCoords.mjs";
7
11
  import { rangeEach, rangeEachReverse } from "../../helpers/number.mjs";
8
12
  import { warn } from "../../helpers/console.mjs";
@@ -15,8 +19,18 @@ import { toSingleLine } from "../../helpers/templateLiteralTag.mjs";
15
19
  * @private
16
20
  * @class MergedCellsCollection
17
21
  */
22
+ var _MergedCellsCollection_brand = /*#__PURE__*/new WeakSet();
18
23
  class MergedCellsCollection {
19
24
  constructor(mergeCellsPlugin) {
25
+ /**
26
+ * Gets the list of the indexes that do not intersect with other merged cells within the provided range.
27
+ *
28
+ * @param {CellRange} range The range to search within.
29
+ * @param {'row' | 'col'} axis The axis to search within.
30
+ * @param {number} scanDirection The direction to scan the range. `1` for forward, `-1` for backward.
31
+ * @returns {number[]}
32
+ */
33
+ _classPrivateMethodInitSpec(this, _MergedCellsCollection_brand);
20
34
  /**
21
35
  * Reference to the Merge Cells plugin.
22
36
  *
@@ -255,6 +269,81 @@ class MergedCellsCollection {
255
269
  return this.hot._createCellCoords(firstRenderableRow, firstRenderableColumn);
256
270
  }
257
271
 
272
+ /**
273
+ * Gets the start-most visual column index that do not intersect with other merged cells within the provided range.
274
+ *
275
+ * @param {CellRange} range The range to search within.
276
+ * @param {number} visualColumnIndex The visual column index to start the search from.
277
+ * @returns {number}
278
+ */
279
+ getStartMostColumnIndex(range, visualColumnIndex) {
280
+ const indexes = _assertClassBrand(_MergedCellsCollection_brand, this, _getNonIntersectingIndexes).call(this, range, 'col', -1);
281
+ let startMostIndex = visualColumnIndex;
282
+ for (let i = 0; i < indexes.length; i++) {
283
+ if (indexes[i] <= visualColumnIndex) {
284
+ startMostIndex = indexes[i];
285
+ break;
286
+ }
287
+ }
288
+ return startMostIndex;
289
+ }
290
+
291
+ /**
292
+ * Gets the end-most visual column index that do not intersect with other merged cells within the provided range.
293
+ *
294
+ * @param {CellRange} range The range to search within.
295
+ * @param {number} visualColumnIndex The visual column index to start the search from.
296
+ * @returns {number}
297
+ */
298
+ getEndMostColumnIndex(range, visualColumnIndex) {
299
+ const indexes = _assertClassBrand(_MergedCellsCollection_brand, this, _getNonIntersectingIndexes).call(this, range, 'col', 1);
300
+ let endMostIndex = visualColumnIndex;
301
+ for (let i = 0; i < indexes.length; i++) {
302
+ if (indexes[i] >= visualColumnIndex) {
303
+ endMostIndex = indexes[i];
304
+ break;
305
+ }
306
+ }
307
+ return endMostIndex;
308
+ }
309
+
310
+ /**
311
+ * Gets the top-most visual row index that do not intersect with other merged cells within the provided range.
312
+ *
313
+ * @param {CellRange} range The range to search within.
314
+ * @param {number} visualRowIndex The visual row index to start the search from.
315
+ * @returns {number}
316
+ */
317
+ getTopMostRowIndex(range, visualRowIndex) {
318
+ const indexes = _assertClassBrand(_MergedCellsCollection_brand, this, _getNonIntersectingIndexes).call(this, range, 'row', -1);
319
+ let topMostIndex = visualRowIndex;
320
+ for (let i = 0; i < indexes.length; i++) {
321
+ if (indexes[i] <= visualRowIndex) {
322
+ topMostIndex = indexes[i];
323
+ break;
324
+ }
325
+ }
326
+ return topMostIndex;
327
+ }
328
+
329
+ /**
330
+ * Gets the bottom-most visual row index that do not intersect with other merged cells within the provided range.
331
+ *
332
+ * @param {CellRange} range The range to search within.
333
+ * @param {number} visualRowIndex The visual row index to start the search from.
334
+ * @returns {number}
335
+ */
336
+ getBottomMostRowIndex(range, visualRowIndex) {
337
+ const indexes = _assertClassBrand(_MergedCellsCollection_brand, this, _getNonIntersectingIndexes).call(this, range, 'row', 1);
338
+ let bottomMostIndex = visualRowIndex;
339
+ for (let i = 0; i < indexes.length; i++) {
340
+ if (indexes[i] >= visualRowIndex) {
341
+ bottomMostIndex = indexes[i];
342
+ break;
343
+ }
344
+ }
345
+ return bottomMostIndex;
346
+ }
258
347
  /**
259
348
  * Shift the merged cell in the direction and by an offset defined in the arguments.
260
349
  *
@@ -290,4 +379,31 @@ class MergedCellsCollection {
290
379
  });
291
380
  }
292
381
  }
382
+ function _getNonIntersectingIndexes(range, axis) {
383
+ let scanDirection = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
384
+ const indexes = new Map();
385
+ const from = scanDirection === 1 ? range.getTopStartCorner() : range.getBottomEndCorner();
386
+ const to = scanDirection === 1 ? range.getBottomEndCorner() : range.getTopStartCorner();
387
+ for (let row = from.row; scanDirection === 1 ? row <= to.row : row >= to.row; row += scanDirection) {
388
+ for (let column = from.col; scanDirection === 1 ? column <= to.col : column >= to.col; column += scanDirection) {
389
+ const index = axis === 'row' ? row : column;
390
+ const mergedCell = this.get(row, column);
391
+ let lastIndex = index;
392
+ if (mergedCell) {
393
+ lastIndex = scanDirection === 1 ? mergedCell[axis] + mergedCell[`${axis}span`] - 1 : mergedCell[axis];
394
+ }
395
+ if (!indexes.has(index)) {
396
+ indexes.set(index, new Set());
397
+ }
398
+ indexes.get(index).add(lastIndex);
399
+ }
400
+ }
401
+ return Array.from(new Set(Array.from(indexes.entries()).filter(_ref => {
402
+ let [, set] = _ref;
403
+ return set.size === 1;
404
+ }).flatMap(_ref2 => {
405
+ let [, set] = _ref2;
406
+ return Array.from(set);
407
+ })));
408
+ }
293
409
  export default MergedCellsCollection;
@@ -6,7 +6,7 @@ var C = _interopRequireWildcard(require("../../../i18n/constants"));
6
6
  var _cellCoords = _interopRequireDefault(require("../cellCoords"));
7
7
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8
8
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
9
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
9
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
10
10
  /**
11
11
  * @param {*} plugin The plugin instance.
12
12
  * @returns {object}
@@ -25,7 +25,17 @@ function toggleMergeItem(plugin) {
25
25
  return this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_MERGE_CELLS);
26
26
  },
27
27
  callback() {
28
- plugin.toggleMergeOnSelection();
28
+ const currentRange = this.getSelectedRangeLast();
29
+ if (!currentRange) {
30
+ return;
31
+ }
32
+ currentRange.setDirection(this.isRtl() ? 'NE-SW' : 'NW-SE');
33
+ const {
34
+ from,
35
+ to
36
+ } = currentRange;
37
+ plugin.toggleMerge(currentRange);
38
+ this.selectCell(from.row, from.col, to.row, to.col, false);
29
39
  },
30
40
  disabled() {
31
41
  const sel = this.getSelectedLast();
@@ -18,7 +18,17 @@ export default function toggleMergeItem(plugin) {
18
18
  return this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_MERGE_CELLS);
19
19
  },
20
20
  callback() {
21
- plugin.toggleMergeOnSelection();
21
+ const currentRange = this.getSelectedRangeLast();
22
+ if (!currentRange) {
23
+ return;
24
+ }
25
+ currentRange.setDirection(this.isRtl() ? 'NE-SW' : 'NW-SE');
26
+ const {
27
+ from,
28
+ to
29
+ } = currentRange;
30
+ plugin.toggleMerge(currentRange);
31
+ this.selectCell(from.row, from.col, to.row, to.col, false);
22
32
  },
23
33
  disabled() {
24
34
  const sel = this.getSelectedLast();