handsontable 11.1.0 → 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 (461) hide show
  1. package/3rdparty/walkontable/src/border.js +120 -98
  2. package/3rdparty/walkontable/src/border.mjs +120 -94
  3. package/3rdparty/walkontable/src/cell/coords.js +59 -17
  4. package/3rdparty/walkontable/src/cell/coords.mjs +55 -17
  5. package/3rdparty/walkontable/src/cell/range.d.ts +10 -2
  6. package/3rdparty/walkontable/src/cell/range.js +278 -99
  7. package/3rdparty/walkontable/src/cell/range.mjs +273 -99
  8. package/3rdparty/walkontable/src/core/_base.js +452 -0
  9. package/3rdparty/walkontable/src/core/_base.mjs +440 -0
  10. package/3rdparty/walkontable/src/core/clone.js +97 -0
  11. package/3rdparty/walkontable/src/core/clone.mjs +80 -0
  12. package/3rdparty/walkontable/src/core/core.js +183 -0
  13. package/3rdparty/walkontable/src/core/core.mjs +160 -0
  14. package/3rdparty/walkontable/src/event.js +99 -66
  15. package/3rdparty/walkontable/src/event.mjs +99 -63
  16. package/3rdparty/walkontable/src/facade/core.js +251 -0
  17. package/3rdparty/walkontable/src/facade/core.mjs +243 -0
  18. package/3rdparty/walkontable/src/index.js +2 -46
  19. package/3rdparty/walkontable/src/index.mjs +3 -13
  20. package/3rdparty/walkontable/src/overlay/_base.js +124 -57
  21. package/3rdparty/walkontable/src/overlay/_base.mjs +124 -57
  22. package/3rdparty/walkontable/src/overlay/bottom.js +96 -80
  23. package/3rdparty/walkontable/src/overlay/bottom.mjs +96 -80
  24. package/3rdparty/walkontable/src/overlay/{bottomLeftCorner.js → bottomInlineStartCorner.js} +45 -62
  25. package/3rdparty/walkontable/src/overlay/{bottomLeftCorner.mjs → bottomInlineStartCorner.mjs} +44 -61
  26. package/3rdparty/walkontable/src/overlay/constants.js +25 -9
  27. package/3rdparty/walkontable/src/overlay/constants.mjs +14 -4
  28. package/3rdparty/walkontable/src/overlay/index.js +10 -19
  29. package/3rdparty/walkontable/src/overlay/index.mjs +4 -5
  30. package/3rdparty/walkontable/src/overlay/{left.js → inlineStart.js} +113 -82
  31. package/3rdparty/walkontable/src/overlay/{left.mjs → inlineStart.mjs} +112 -81
  32. package/3rdparty/walkontable/src/overlay/top.js +93 -68
  33. package/3rdparty/walkontable/src/overlay/top.mjs +93 -68
  34. package/3rdparty/walkontable/src/overlay/{topLeftCorner.js → topInlineStartCorner.js} +56 -57
  35. package/3rdparty/walkontable/src/overlay/{topLeftCorner.mjs → topInlineStartCorner.mjs} +51 -52
  36. package/3rdparty/walkontable/src/overlays.js +225 -156
  37. package/3rdparty/walkontable/src/overlays.mjs +224 -154
  38. package/3rdparty/walkontable/src/renderer/cells.js +4 -3
  39. package/3rdparty/walkontable/src/renderer/cells.mjs +4 -3
  40. package/3rdparty/walkontable/src/renderer/colGroup.js +2 -2
  41. package/3rdparty/walkontable/src/renderer/colGroup.mjs +2 -2
  42. package/3rdparty/walkontable/src/renderer/columnHeaders.js +2 -2
  43. package/3rdparty/walkontable/src/renderer/columnHeaders.mjs +2 -2
  44. package/3rdparty/walkontable/src/renderer/rowHeaders.js +2 -2
  45. package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +2 -2
  46. package/3rdparty/walkontable/src/renderer/rows.js +2 -2
  47. package/3rdparty/walkontable/src/renderer/rows.mjs +2 -2
  48. package/3rdparty/walkontable/src/scroll.js +125 -104
  49. package/3rdparty/walkontable/src/scroll.mjs +124 -104
  50. package/3rdparty/walkontable/src/selection.js +10 -14
  51. package/3rdparty/walkontable/src/selection.mjs +10 -12
  52. package/3rdparty/walkontable/src/settings.js +235 -126
  53. package/3rdparty/walkontable/src/settings.mjs +235 -125
  54. package/3rdparty/walkontable/src/table/bottom.js +16 -5
  55. package/3rdparty/walkontable/src/table/bottom.mjs +15 -5
  56. package/3rdparty/walkontable/src/table/{bottomLeftCorner.js → bottomInlineStartCorner.js} +27 -15
  57. package/3rdparty/walkontable/src/table/{bottomLeftCorner.mjs → bottomInlineStartCorner.mjs} +26 -15
  58. package/3rdparty/walkontable/src/table/{left.js → inlineStart.js} +23 -15
  59. package/3rdparty/walkontable/src/table/{left.mjs → inlineStart.mjs} +22 -15
  60. package/3rdparty/walkontable/src/table/master.js +22 -12
  61. package/3rdparty/walkontable/src/table/master.mjs +22 -12
  62. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +12 -6
  63. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +12 -6
  64. package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +12 -6
  65. package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +12 -6
  66. package/3rdparty/walkontable/src/table/mixin/{stickyColumnsLeft.js → stickyColumnsStart.js} +13 -7
  67. package/3rdparty/walkontable/src/table/mixin/{stickyColumnsLeft.mjs → stickyColumnsStart.mjs} +13 -7
  68. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +11 -5
  69. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +11 -5
  70. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +9 -3
  71. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +9 -3
  72. package/3rdparty/walkontable/src/table/top.js +16 -5
  73. package/3rdparty/walkontable/src/table/top.mjs +15 -5
  74. package/3rdparty/walkontable/src/table/{topLeftCorner.js → topInlineStartCorner.js} +27 -15
  75. package/3rdparty/walkontable/src/table/{topLeftCorner.mjs → topInlineStartCorner.mjs} +26 -15
  76. package/3rdparty/walkontable/src/table.js +235 -140
  77. package/3rdparty/walkontable/src/table.mjs +231 -134
  78. package/3rdparty/walkontable/src/types.js +103 -0
  79. package/3rdparty/walkontable/src/types.mjs +102 -0
  80. package/3rdparty/walkontable/src/utils/column.js +22 -33
  81. package/3rdparty/walkontable/src/utils/column.mjs +22 -30
  82. package/3rdparty/walkontable/src/utils/orderView/sharedView.js +2 -2
  83. package/3rdparty/walkontable/src/utils/orderView/sharedView.mjs +2 -2
  84. package/3rdparty/walkontable/src/utils/row.js +9 -4
  85. package/3rdparty/walkontable/src/utils/row.mjs +9 -4
  86. package/3rdparty/walkontable/src/viewport.js +89 -100
  87. package/3rdparty/walkontable/src/viewport.mjs +89 -97
  88. package/CHANGELOG.md +92 -0
  89. package/LICENSE.txt +1 -1
  90. package/README.md +0 -1
  91. package/base.js +2 -2
  92. package/base.mjs +2 -2
  93. package/cellTypes/timeType/timeType.d.ts +6 -6
  94. package/cellTypes/timeType/timeType.js +4 -5
  95. package/cellTypes/timeType/timeType.mjs +4 -5
  96. package/core.d.ts +6 -1
  97. package/core.js +508 -80
  98. package/core.mjs +517 -92
  99. package/dataMap/index.js +4 -0
  100. package/dataMap/index.mjs +2 -1
  101. package/dataMap/metaManager/index.js +2 -2
  102. package/dataMap/metaManager/index.mjs +2 -2
  103. package/dataMap/metaManager/metaLayers/globalMeta.js +4 -0
  104. package/dataMap/metaManager/metaLayers/globalMeta.mjs +4 -0
  105. package/dataMap/metaManager/metaLayers/tableMeta.js +2 -2
  106. package/dataMap/metaManager/metaLayers/tableMeta.mjs +2 -2
  107. package/dataMap/metaManager/metaSchema.js +282 -187
  108. package/dataMap/metaManager/metaSchema.mjs +282 -187
  109. package/dataMap/metaManager/mods/extendMetaProperties.js +126 -0
  110. package/dataMap/metaManager/mods/extendMetaProperties.mjs +113 -0
  111. package/dataMap/replaceData.js +3 -17
  112. package/dataMap/replaceData.mjs +3 -17
  113. package/dist/handsontable.css +268 -92
  114. package/dist/handsontable.full.css +269 -103
  115. package/dist/handsontable.full.js +41990 -35658
  116. package/dist/handsontable.full.min.css +9 -9
  117. package/dist/handsontable.full.min.js +144 -144
  118. package/dist/handsontable.js +29561 -25597
  119. package/dist/handsontable.min.css +8 -8
  120. package/dist/handsontable.min.js +4 -4
  121. package/dist/languages/all.js +131 -34
  122. package/dist/languages/all.min.js +1 -1
  123. package/dist/languages/ar-AR.js +167 -0
  124. package/dist/languages/ar-AR.min.js +1 -0
  125. package/dist/languages/cs-CZ.js +167 -0
  126. package/dist/languages/cs-CZ.min.js +1 -0
  127. package/dist/languages/de-CH.js +31 -29
  128. package/dist/languages/de-CH.min.js +1 -1
  129. package/dist/languages/de-DE.js +4 -2
  130. package/dist/languages/de-DE.min.js +1 -1
  131. package/dist/languages/en-US.js +4 -2
  132. package/dist/languages/en-US.min.js +1 -1
  133. package/dist/languages/es-MX.js +4 -2
  134. package/dist/languages/es-MX.min.js +1 -1
  135. package/dist/languages/fr-FR.js +4 -2
  136. package/dist/languages/fr-FR.min.js +1 -1
  137. package/dist/languages/it-IT.js +4 -2
  138. package/dist/languages/it-IT.min.js +1 -1
  139. package/dist/languages/ja-JP.js +36 -38
  140. package/dist/languages/ja-JP.min.js +1 -1
  141. package/dist/languages/ko-KR.js +36 -39
  142. package/dist/languages/ko-KR.min.js +1 -1
  143. package/dist/languages/lv-LV.js +2 -2
  144. package/dist/languages/lv-LV.min.js +1 -1
  145. package/dist/languages/nb-NO.js +2 -2
  146. package/dist/languages/nb-NO.min.js +1 -1
  147. package/dist/languages/nl-NL.js +2 -2
  148. package/dist/languages/nl-NL.min.js +1 -1
  149. package/dist/languages/pl-PL.js +2 -2
  150. package/dist/languages/pl-PL.min.js +1 -1
  151. package/dist/languages/pt-BR.js +2 -2
  152. package/dist/languages/pt-BR.min.js +1 -1
  153. package/dist/languages/ru-RU.js +2 -2
  154. package/dist/languages/ru-RU.min.js +1 -1
  155. package/dist/languages/sr-SP.js +171 -0
  156. package/dist/languages/sr-SP.min.js +1 -0
  157. package/dist/languages/zh-CN.js +24 -24
  158. package/dist/languages/zh-CN.min.js +1 -1
  159. package/dist/languages/zh-TW.js +24 -24
  160. package/dist/languages/zh-TW.min.js +1 -1
  161. package/editorManager.js +120 -267
  162. package/editorManager.mjs +128 -278
  163. package/editors/autocompleteEditor/autocompleteEditor.js +22 -25
  164. package/editors/autocompleteEditor/autocompleteEditor.mjs +22 -25
  165. package/editors/baseEditor/baseEditor.js +205 -34
  166. package/editors/baseEditor/baseEditor.mjs +200 -32
  167. package/editors/checkboxEditor/checkboxEditor.js +2 -2
  168. package/editors/checkboxEditor/checkboxEditor.mjs +2 -2
  169. package/editors/dateEditor/dateEditor.js +21 -8
  170. package/editors/dateEditor/dateEditor.mjs +22 -9
  171. package/editors/dropdownEditor/dropdownEditor.js +3 -3
  172. package/editors/dropdownEditor/dropdownEditor.mjs +3 -3
  173. package/editors/handsontableEditor/handsontableEditor.js +106 -55
  174. package/editors/handsontableEditor/handsontableEditor.mjs +106 -55
  175. package/editors/index.d.ts +3 -0
  176. package/editors/index.js +6 -0
  177. package/editors/index.mjs +3 -1
  178. package/editors/numericEditor/numericEditor.js +2 -2
  179. package/editors/numericEditor/numericEditor.mjs +2 -2
  180. package/editors/passwordEditor/passwordEditor.js +3 -3
  181. package/editors/passwordEditor/passwordEditor.mjs +3 -3
  182. package/editors/selectEditor/selectEditor.js +65 -110
  183. package/editors/selectEditor/selectEditor.mjs +66 -109
  184. package/editors/textEditor/caretPositioner.js +49 -0
  185. package/editors/textEditor/caretPositioner.mjs +42 -0
  186. package/editors/textEditor/textEditor.js +205 -181
  187. package/editors/textEditor/textEditor.mjs +199 -179
  188. package/editors/timeEditor/index.d.ts +1 -0
  189. package/editors/timeEditor/index.js +9 -0
  190. package/editors/timeEditor/index.mjs +1 -0
  191. package/editors/timeEditor/timeEditor.d.ts +7 -0
  192. package/editors/timeEditor/timeEditor.js +105 -0
  193. package/editors/timeEditor/timeEditor.mjs +84 -0
  194. package/eventManager.js +4 -2
  195. package/eventManager.mjs +4 -2
  196. package/helpers/mixed.js +2 -2
  197. package/helpers/mixed.mjs +2 -2
  198. package/i18n/languages/ar-AR.js +41 -0
  199. package/i18n/languages/ar-AR.mjs +17 -0
  200. package/i18n/languages/cs-CZ.js +40 -0
  201. package/i18n/languages/cs-CZ.mjs +16 -0
  202. package/i18n/languages/index.js +12 -0
  203. package/i18n/languages/index.mjs +4 -1
  204. package/i18n/languages/sr-SP.js +40 -0
  205. package/i18n/languages/sr-SP.mjs +16 -0
  206. package/index.d.ts +4 -0
  207. package/languages/all.js +131 -34
  208. package/languages/ar-AR.js +167 -0
  209. package/languages/ar-AR.mjs +19 -0
  210. package/languages/cs-CZ.js +167 -0
  211. package/languages/cs-CZ.mjs +18 -0
  212. package/languages/de-CH.js +31 -29
  213. package/languages/de-DE.js +4 -2
  214. package/languages/en-US.js +4 -2
  215. package/languages/es-MX.js +4 -2
  216. package/languages/fr-FR.js +4 -2
  217. package/languages/index.js +131 -34
  218. package/languages/index.mjs +4 -1
  219. package/languages/it-IT.js +4 -2
  220. package/languages/ja-JP.js +36 -38
  221. package/languages/ko-KR.js +36 -39
  222. package/languages/lv-LV.js +2 -2
  223. package/languages/nb-NO.js +2 -2
  224. package/languages/nl-NL.js +2 -2
  225. package/languages/pl-PL.js +2 -2
  226. package/languages/pt-BR.js +2 -2
  227. package/languages/ru-RU.js +2 -2
  228. package/languages/sr-SP.js +171 -0
  229. package/languages/sr-SP.mjs +18 -0
  230. package/languages/zh-CN.js +24 -24
  231. package/languages/zh-TW.js +24 -24
  232. package/package.json +44 -4
  233. package/pluginHooks.js +49 -13
  234. package/pluginHooks.mjs +49 -13
  235. package/plugins/autoColumnSize/autoColumnSize.js +15 -10
  236. package/plugins/autoColumnSize/autoColumnSize.mjs +15 -10
  237. package/plugins/autoRowSize/autoRowSize.js +14 -9
  238. package/plugins/autoRowSize/autoRowSize.mjs +14 -9
  239. package/plugins/autofill/autofill.js +49 -33
  240. package/plugins/autofill/autofill.mjs +49 -32
  241. package/plugins/autofill/utils.js +10 -11
  242. package/plugins/autofill/utils.mjs +10 -10
  243. package/plugins/base/base.d.ts +8 -2
  244. package/plugins/base/base.js +67 -4
  245. package/plugins/base/base.mjs +66 -4
  246. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.js +3 -3
  247. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.mjs +3 -3
  248. package/plugins/bindRowsWithHeaders/maps/looseBindsMap.js +3 -3
  249. package/plugins/bindRowsWithHeaders/maps/looseBindsMap.mjs +3 -3
  250. package/plugins/bindRowsWithHeaders/maps/strictBindsMap.js +3 -3
  251. package/plugins/bindRowsWithHeaders/maps/strictBindsMap.mjs +3 -3
  252. package/plugins/collapsibleColumns/collapsibleColumns.js +27 -9
  253. package/plugins/collapsibleColumns/collapsibleColumns.mjs +27 -9
  254. package/plugins/columnSorting/columnSorting.js +5 -7
  255. package/plugins/columnSorting/columnSorting.mjs +5 -6
  256. package/plugins/columnSummary/columnSummary.js +3 -3
  257. package/plugins/columnSummary/columnSummary.mjs +3 -3
  258. package/plugins/comments/commentEditor.js +18 -2
  259. package/plugins/comments/commentEditor.mjs +19 -3
  260. package/plugins/comments/comments.js +57 -46
  261. package/plugins/comments/comments.mjs +58 -46
  262. package/plugins/contextMenu/contextMenu.js +10 -6
  263. package/plugins/contextMenu/contextMenu.mjs +10 -6
  264. package/plugins/contextMenu/menu.js +222 -110
  265. package/plugins/contextMenu/menu.mjs +219 -111
  266. package/plugins/contextMenu/predefinedItems/columnLeft.js +12 -4
  267. package/plugins/contextMenu/predefinedItems/columnLeft.mjs +11 -4
  268. package/plugins/contextMenu/predefinedItems/columnRight.js +9 -9
  269. package/plugins/contextMenu/predefinedItems/columnRight.mjs +9 -9
  270. package/plugins/contextMenu/utils.js +2 -2
  271. package/plugins/contextMenu/utils.mjs +2 -2
  272. package/plugins/copyPaste/copyPaste.js +31 -21
  273. package/plugins/copyPaste/copyPaste.mjs +30 -21
  274. package/plugins/customBorders/contextMenuItem/left.js +4 -3
  275. package/plugins/customBorders/contextMenuItem/left.mjs +4 -3
  276. package/plugins/customBorders/contextMenuItem/right.js +4 -3
  277. package/plugins/customBorders/contextMenuItem/right.mjs +4 -3
  278. package/plugins/customBorders/customBorders.js +144 -87
  279. package/plugins/customBorders/customBorders.mjs +143 -85
  280. package/plugins/customBorders/utils.js +131 -27
  281. package/plugins/customBorders/utils.mjs +115 -27
  282. package/plugins/dragToScroll/dragToScroll.js +10 -5
  283. package/plugins/dragToScroll/dragToScroll.mjs +10 -5
  284. package/plugins/dropdownMenu/dropdownMenu.js +9 -7
  285. package/plugins/dropdownMenu/dropdownMenu.mjs +9 -7
  286. package/plugins/exportFile/exportFile.js +2 -2
  287. package/plugins/exportFile/exportFile.mjs +2 -2
  288. package/plugins/exportFile/types/csv.js +2 -2
  289. package/plugins/exportFile/types/csv.mjs +2 -2
  290. package/plugins/filters/component/actionBar.js +2 -2
  291. package/plugins/filters/component/actionBar.mjs +2 -2
  292. package/plugins/filters/component/condition.js +3 -3
  293. package/plugins/filters/component/condition.mjs +3 -3
  294. package/plugins/filters/component/operators.js +2 -2
  295. package/plugins/filters/component/operators.mjs +2 -2
  296. package/plugins/filters/component/value.js +3 -3
  297. package/plugins/filters/component/value.mjs +3 -3
  298. package/plugins/filters/filters.js +11 -8
  299. package/plugins/filters/filters.mjs +11 -8
  300. package/plugins/filters/ui/input.js +3 -3
  301. package/plugins/filters/ui/input.mjs +3 -3
  302. package/plugins/filters/ui/link.js +3 -3
  303. package/plugins/filters/ui/link.mjs +3 -3
  304. package/plugins/filters/ui/multipleSelect.js +18 -31
  305. package/plugins/filters/ui/multipleSelect.mjs +18 -31
  306. package/plugins/filters/ui/radioInput.js +3 -3
  307. package/plugins/filters/ui/radioInput.mjs +3 -3
  308. package/plugins/filters/ui/select.js +4 -4
  309. package/plugins/filters/ui/select.mjs +4 -4
  310. package/plugins/formulas/formulas.js +14 -9
  311. package/plugins/formulas/formulas.mjs +14 -9
  312. package/plugins/hiddenColumns/contextMenuItem/hideColumn.js +2 -4
  313. package/plugins/hiddenColumns/contextMenuItem/hideColumn.mjs +2 -4
  314. package/plugins/hiddenColumns/contextMenuItem/showColumn.js +5 -5
  315. package/plugins/hiddenColumns/contextMenuItem/showColumn.mjs +5 -5
  316. package/plugins/hiddenColumns/hiddenColumns.js +9 -4
  317. package/plugins/hiddenColumns/hiddenColumns.mjs +9 -4
  318. package/plugins/hiddenRows/contextMenuItem/hideRow.js +2 -4
  319. package/plugins/hiddenRows/contextMenuItem/hideRow.mjs +2 -4
  320. package/plugins/hiddenRows/contextMenuItem/showRow.js +5 -5
  321. package/plugins/hiddenRows/contextMenuItem/showRow.mjs +5 -5
  322. package/plugins/hiddenRows/hiddenRows.js +9 -4
  323. package/plugins/hiddenRows/hiddenRows.mjs +9 -4
  324. package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.js +1 -1
  325. package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.mjs +1 -1
  326. package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.js +1 -1
  327. package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.mjs +1 -1
  328. package/plugins/manualColumnFreeze/manualColumnFreeze.js +54 -15
  329. package/plugins/manualColumnFreeze/manualColumnFreeze.mjs +49 -15
  330. package/plugins/manualColumnMove/manualColumnMove.js +70 -70
  331. package/plugins/manualColumnMove/manualColumnMove.mjs +71 -71
  332. package/plugins/manualColumnMove/ui/_base.js +25 -12
  333. package/plugins/manualColumnMove/ui/_base.mjs +24 -12
  334. package/plugins/manualColumnMove/ui/backlight.js +3 -3
  335. package/plugins/manualColumnMove/ui/backlight.mjs +3 -3
  336. package/plugins/manualColumnMove/ui/guideline.js +3 -3
  337. package/plugins/manualColumnMove/ui/guideline.mjs +3 -3
  338. package/plugins/manualColumnResize/manualColumnResize.js +37 -21
  339. package/plugins/manualColumnResize/manualColumnResize.mjs +37 -21
  340. package/plugins/manualRowMove/manualRowMove.js +26 -34
  341. package/plugins/manualRowMove/manualRowMove.mjs +26 -34
  342. package/plugins/manualRowMove/ui/backlight.js +3 -3
  343. package/plugins/manualRowMove/ui/backlight.mjs +3 -3
  344. package/plugins/manualRowMove/ui/guideline.js +3 -3
  345. package/plugins/manualRowMove/ui/guideline.mjs +3 -3
  346. package/plugins/manualRowResize/manualRowResize.js +34 -19
  347. package/plugins/manualRowResize/manualRowResize.mjs +34 -19
  348. package/plugins/mergeCells/calculations/autofill.js +6 -5
  349. package/plugins/mergeCells/calculations/autofill.mjs +6 -4
  350. package/plugins/mergeCells/calculations/selection.js +9 -4
  351. package/plugins/mergeCells/calculations/selection.mjs +9 -4
  352. package/plugins/mergeCells/cellCoords.js +16 -4
  353. package/plugins/mergeCells/cellCoords.mjs +16 -3
  354. package/plugins/mergeCells/cellsCollection.js +30 -23
  355. package/plugins/mergeCells/cellsCollection.mjs +30 -22
  356. package/plugins/mergeCells/mergeCells.js +94 -61
  357. package/plugins/mergeCells/mergeCells.mjs +94 -59
  358. package/plugins/multiColumnSorting/multiColumnSorting.js +4 -6
  359. package/plugins/multiColumnSorting/multiColumnSorting.mjs +4 -5
  360. package/plugins/multipleSelectionHandles/multipleSelectionHandles.js +51 -57
  361. package/plugins/multipleSelectionHandles/multipleSelectionHandles.mjs +52 -57
  362. package/plugins/nestedHeaders/nestedHeaders.js +31 -20
  363. package/plugins/nestedHeaders/nestedHeaders.mjs +31 -20
  364. package/plugins/nestedHeaders/stateManager/utils.js +3 -4
  365. package/plugins/nestedHeaders/stateManager/utils.mjs +3 -4
  366. package/plugins/nestedHeaders/utils/ghostTable.js +114 -75
  367. package/plugins/nestedHeaders/utils/ghostTable.mjs +114 -74
  368. package/plugins/nestedRows/nestedRows.js +9 -4
  369. package/plugins/nestedRows/nestedRows.mjs +9 -4
  370. package/plugins/nestedRows/ui/collapsing.js +2 -2
  371. package/plugins/nestedRows/ui/collapsing.mjs +2 -2
  372. package/plugins/nestedRows/ui/contextMenu.js +2 -2
  373. package/plugins/nestedRows/ui/contextMenu.mjs +2 -2
  374. package/plugins/nestedRows/ui/headers.js +2 -2
  375. package/plugins/nestedRows/ui/headers.mjs +2 -2
  376. package/plugins/nestedRows/utils/rowMoveController.js +2 -4
  377. package/plugins/nestedRows/utils/rowMoveController.mjs +2 -3
  378. package/plugins/persistentState/persistentState.js +9 -4
  379. package/plugins/persistentState/persistentState.mjs +9 -4
  380. package/plugins/search/search.js +9 -4
  381. package/plugins/search/search.mjs +9 -4
  382. package/plugins/touchScroll/touchScroll.js +27 -21
  383. package/plugins/touchScroll/touchScroll.mjs +27 -21
  384. package/plugins/trimRows/trimRows.js +9 -4
  385. package/plugins/trimRows/trimRows.mjs +9 -4
  386. package/plugins/undoRedo/undoRedo.js +53 -47
  387. package/plugins/undoRedo/undoRedo.mjs +53 -46
  388. package/renderers/autocompleteRenderer/autocompleteRenderer.js +1 -3
  389. package/renderers/autocompleteRenderer/autocompleteRenderer.mjs +1 -2
  390. package/renderers/checkboxRenderer/checkboxRenderer.js +48 -43
  391. package/renderers/checkboxRenderer/checkboxRenderer.mjs +48 -41
  392. package/renderers/index.d.ts +4 -1
  393. package/renderers/index.js +6 -0
  394. package/renderers/index.mjs +3 -1
  395. package/renderers/numericRenderer/numericRenderer.js +1 -0
  396. package/renderers/numericRenderer/numericRenderer.mjs +1 -0
  397. package/renderers/timeRenderer/index.d.ts +1 -0
  398. package/renderers/timeRenderer/index.js +9 -0
  399. package/renderers/timeRenderer/index.mjs +1 -0
  400. package/renderers/timeRenderer/timeRenderer.d.ts +5 -0
  401. package/renderers/timeRenderer/timeRenderer.js +31 -0
  402. package/renderers/timeRenderer/timeRenderer.mjs +20 -0
  403. package/selection/highlight/visualSelection.js +94 -220
  404. package/selection/highlight/visualSelection.mjs +91 -213
  405. package/selection/mouseEventHandler.js +15 -10
  406. package/selection/mouseEventHandler.mjs +15 -9
  407. package/selection/range.js +4 -5
  408. package/selection/range.mjs +4 -5
  409. package/selection/selection.js +35 -22
  410. package/selection/selection.mjs +35 -20
  411. package/selection/transformation.js +4 -6
  412. package/selection/transformation.mjs +4 -5
  413. package/settings.d.ts +3 -1
  414. package/shortcuts/context.d.ts +20 -0
  415. package/shortcuts/context.js +296 -0
  416. package/shortcuts/context.mjs +268 -0
  417. package/shortcuts/index.d.ts +1 -0
  418. package/shortcuts/index.js +8 -0
  419. package/shortcuts/index.mjs +1 -0
  420. package/shortcuts/keyObserver.js +67 -0
  421. package/shortcuts/keyObserver.mjs +58 -0
  422. package/shortcuts/manager.d.ts +10 -0
  423. package/shortcuts/manager.js +185 -0
  424. package/shortcuts/manager.mjs +176 -0
  425. package/shortcuts/recorder.js +192 -0
  426. package/shortcuts/recorder.mjs +180 -0
  427. package/shortcuts/utils.js +77 -0
  428. package/shortcuts/utils.mjs +54 -0
  429. package/tableView.js +164 -84
  430. package/tableView.mjs +164 -74
  431. package/translations/changesObservable/observer.js +0 -1
  432. package/translations/changesObservable/observer.mjs +0 -1
  433. package/translations/indexMapper.d.ts +3 -1
  434. package/translations/indexMapper.js +89 -11
  435. package/translations/indexMapper.mjs +91 -20
  436. package/translations/mapCollections/aggregatedCollection.js +2 -2
  437. package/translations/mapCollections/aggregatedCollection.mjs +2 -2
  438. package/translations/maps/hidingMap.js +4 -2
  439. package/translations/maps/hidingMap.mjs +4 -2
  440. package/translations/maps/indexMap.js +2 -0
  441. package/translations/maps/indexMap.mjs +2 -0
  442. package/translations/maps/indexesSequence.js +5 -3
  443. package/translations/maps/indexesSequence.mjs +5 -3
  444. package/translations/maps/linkedPhysicalIndexToValueMap.js +5 -3
  445. package/translations/maps/linkedPhysicalIndexToValueMap.mjs +5 -3
  446. package/translations/maps/physicalIndexToValueMap.js +5 -3
  447. package/translations/maps/physicalIndexToValueMap.mjs +5 -3
  448. package/translations/maps/trimmingMap.js +4 -2
  449. package/translations/maps/trimmingMap.mjs +4 -2
  450. package/utils/dataStructures/uniqueMap.js +14 -1
  451. package/utils/dataStructures/uniqueMap.mjs +14 -1
  452. package/utils/dataStructures/uniqueSet.js +9 -0
  453. package/utils/dataStructures/uniqueSet.mjs +9 -0
  454. package/utils/ghostTable.js +1 -1
  455. package/utils/ghostTable.mjs +1 -1
  456. package/3rdparty/walkontable/src/core.js +0 -309
  457. package/3rdparty/walkontable/src/core.mjs +0 -293
  458. package/3rdparty/walkontable/src/overlay/registerer.js +0 -70
  459. package/3rdparty/walkontable/src/overlay/registerer.mjs +0 -57
  460. package/utils/keyStateObserver.js +0 -121
  461. package/utils/keyStateObserver.mjs +0 -103
@@ -2,6 +2,10 @@
2
2
 
3
3
  function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4
4
 
5
+ require("core-js/modules/es.object.set-prototype-of.js");
6
+
7
+ require("core-js/modules/es.object.get-prototype-of.js");
8
+
5
9
  require("core-js/modules/es.object.to-string.js");
6
10
 
7
11
  require("core-js/modules/es.reflect.construct.js");
@@ -35,20 +39,16 @@ require("core-js/modules/es.weak-map.js");
35
39
  exports.__esModule = true;
36
40
  exports.PLUGIN_PRIORITY = exports.PLUGIN_KEY = exports.CustomBorders = void 0;
37
41
 
42
+ require("core-js/modules/es.array.concat.js");
43
+
38
44
  require("core-js/modules/es.object.keys.js");
39
45
 
40
46
  require("core-js/modules/es.object.assign.js");
41
47
 
42
- require("core-js/modules/es.object.values.js");
43
-
44
48
  require("core-js/modules/es.array.index-of.js");
45
49
 
46
50
  require("core-js/modules/es.array.splice.js");
47
51
 
48
- require("core-js/modules/es.object.set-prototype-of.js");
49
-
50
- require("core-js/modules/es.object.get-prototype-of.js");
51
-
52
52
  var _base = require("../base");
53
53
 
54
54
  var _object = require("../../helpers/object");
@@ -57,8 +57,6 @@ var _number = require("../../helpers/number");
57
57
 
58
58
  var _array = require("../../helpers/array");
59
59
 
60
- var _src = require("../../3rdparty/walkontable/src");
61
-
62
60
  var C = _interopRequireWildcard(require("../../i18n/constants"));
63
61
 
64
62
  var _contextMenuItem = require("./contextMenuItem");
@@ -89,13 +87,13 @@ function _defineProperties(target, props) { for (var i = 0; i < props.length; i+
89
87
 
90
88
  function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
91
89
 
92
- 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); }
90
+ 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); }
93
91
 
94
92
  function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }
95
93
 
96
94
  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); }
97
95
 
98
- function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
96
+ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
99
97
 
100
98
  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); }; }
101
99
 
@@ -105,11 +103,15 @@ function _assertThisInitialized(self) { if (self === void 0) { throw new Referen
105
103
 
106
104
  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; } }
107
105
 
108
- function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
106
+ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
107
+
108
+ 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; }
109
109
 
110
110
  var PLUGIN_KEY = 'customBorders';
111
111
  exports.PLUGIN_KEY = PLUGIN_KEY;
112
112
  var PLUGIN_PRIORITY = 90;
113
+ /* eslint-disable jsdoc/require-description-complete-sentence */
114
+
113
115
  /**
114
116
  * @plugin CustomBorders
115
117
  * @class CustomBorders
@@ -121,7 +123,8 @@ var PLUGIN_PRIORITY = 90;
121
123
  * To initialize Handsontable with predefined custom borders, provide cell coordinates and border styles in a form
122
124
  * of an array.
123
125
  *
124
- * See [Custom Borders](@/guides/cell-features/formatting-cells.md#custom-cell-borders) demo for more examples.
126
+ * See [`customBorders` configuration option](@/api/options.md#customBorders) or go to
127
+ * [Custom cell borders demo](@/guides/cell-features/formatting-cells.md#custom-cell-borders) for more examples.
125
128
  *
126
129
  * @example
127
130
  * ```js
@@ -137,8 +140,8 @@ var PLUGIN_PRIORITY = 90;
137
140
  * col: 4
138
141
  * },
139
142
  * },
140
- * left: {},
141
- * right: {},
143
+ * start: {},
144
+ * end: {},
142
145
  * top: {},
143
146
  * bottom: {},
144
147
  * },
@@ -148,11 +151,11 @@ var PLUGIN_PRIORITY = 90;
148
151
  * customBorders: [
149
152
  * { row: 2,
150
153
  * col: 2,
151
- * left: {
154
+ * start: {
152
155
  * width: 2,
153
156
  * color: 'red',
154
157
  * },
155
- * right: {
158
+ * end: {
156
159
  * width: 1,
157
160
  * color: 'green',
158
161
  * },
@@ -170,33 +173,32 @@ var CustomBorders = /*#__PURE__*/function (_BasePlugin) {
170
173
 
171
174
  var _super = _createSuper(CustomBorders);
172
175
 
173
- function CustomBorders(hotInstance) {
176
+ function CustomBorders() {
174
177
  var _this;
175
178
 
176
179
  _classCallCheck(this, CustomBorders);
177
180
 
178
- _this = _super.call(this, hotInstance);
179
- /**
180
- * Saved borders.
181
- *
182
- * @private
183
- * @type {Array}
184
- */
181
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
182
+ args[_key] = arguments[_key];
183
+ }
184
+
185
+ _this = _super.call.apply(_super, [this].concat(args));
186
+
187
+ _defineProperty(_assertThisInitialized(_this), "savedBorders", []);
185
188
 
186
- _this.savedBorders = [];
187
189
  return _this;
188
190
  }
189
- /**
190
- * Checks if the plugin is enabled in the handsontable settings. This method is executed in {@link Hooks#beforeInit}
191
- * hook and if it returns `true` than the {@link CustomBorders#enablePlugin} method is called.
192
- *
193
- * @returns {boolean}
194
- */
195
-
196
191
 
197
192
  _createClass(CustomBorders, [{
198
193
  key: "isEnabled",
199
- value: function isEnabled() {
194
+ value:
195
+ /**
196
+ * Checks if the plugin is enabled in the handsontable settings. This method is executed in {@link Hooks#beforeInit}
197
+ * hook and if it returns `true` than the {@link CustomBorders#enablePlugin} method is called.
198
+ *
199
+ * @returns {boolean}
200
+ */
201
+ function isEnabled() {
200
202
  return !!this.hot.getSettings()[PLUGIN_KEY];
201
203
  }
202
204
  /**
@@ -233,7 +235,10 @@ var CustomBorders = /*#__PURE__*/function (_BasePlugin) {
233
235
  _get(_getPrototypeOf(CustomBorders.prototype), "disablePlugin", this).call(this);
234
236
  }
235
237
  /**
236
- * Updates the plugin state. This method is executed when {@link Core#updateSettings} is invoked.
238
+ * Updates the plugin's state.
239
+ *
240
+ * This method is executed when [`updateSettings()`](@/api/core.md#updatesettings) is invoked with any of the following configuration options:
241
+ * - [`customBorders`](@/api/options.md#customborders)
237
242
  */
238
243
 
239
244
  }, {
@@ -253,17 +258,17 @@ var CustomBorders = /*#__PURE__*/function (_BasePlugin) {
253
258
  * const customBordersPlugin = hot.getPlugin('customBorders');
254
259
  *
255
260
  * // Using an array of arrays (produced by `.getSelected()` method).
256
- * customBordersPlugin.setBorders([[1, 1, 2, 2], [6, 2, 0, 2]], {left: {width: 2, color: 'blue'}});
261
+ * customBordersPlugin.setBorders([[1, 1, 2, 2], [6, 2, 0, 2]], {start: {width: 2, color: 'blue'}});
257
262
  *
258
263
  * // Using an array of CellRange objects (produced by `.getSelectedRange()` method).
259
264
  * // Selecting a cell range.
260
265
  * hot.selectCell(0, 0, 2, 2);
261
266
  * // Returning selected cells' range with the getSelectedRange method.
262
- * customBordersPlugin.setBorders(hot.getSelectedRange(), {left: {hide: false, width: 2, color: 'blue'}});
267
+ * customBordersPlugin.setBorders(hot.getSelectedRange(), {start: {hide: false, width: 2, color: 'blue'}});
263
268
  * ```
264
269
  *
265
270
  * @param {Array[]|CellRange[]} selectionRanges Array of selection ranges.
266
- * @param {object} borderObject Object with `top`, `right`, `bottom` and `left` properties.
271
+ * @param {object} borderObject Object with `top`, `right`, `bottom` and `start` properties.
267
272
  */
268
273
 
269
274
  }, {
@@ -271,8 +276,15 @@ var CustomBorders = /*#__PURE__*/function (_BasePlugin) {
271
276
  value: function setBorders(selectionRanges, borderObject) {
272
277
  var _this3 = this;
273
278
 
274
- var defaultBorderKeys = ['top', 'right', 'bottom', 'left'];
275
- var borderKeys = borderObject ? Object.keys(borderObject) : defaultBorderKeys;
279
+ var borderKeys = ['top', 'bottom', 'start', 'end'];
280
+ var normBorder = null;
281
+
282
+ if (borderObject) {
283
+ this.checkSettingsCohesion([borderObject]);
284
+ borderKeys = Object.keys(borderObject);
285
+ normBorder = (0, _utils.normalizeBorder)(borderObject);
286
+ }
287
+
276
288
  var selectionType = (0, _selection.detectSelectionType)(selectionRanges);
277
289
  var selectionSchemaNormalizer = (0, _selection.normalizeSelectionFactory)(selectionType);
278
290
  (0, _array.arrayEach)(selectionRanges, function (selection) {
@@ -286,7 +298,7 @@ var CustomBorders = /*#__PURE__*/function (_BasePlugin) {
286
298
  var _loop = function _loop(row) {
287
299
  var _loop2 = function _loop2(col) {
288
300
  (0, _array.arrayEach)(borderKeys, function (borderKey) {
289
- _this3.prepareBorderFromCustomAdded(row, col, borderObject, borderKey);
301
+ _this3.prepareBorderFromCustomAdded(row, col, normBorder, (0, _utils.toInlinePropName)(borderKey));
290
302
  });
291
303
  };
292
304
 
@@ -353,7 +365,7 @@ var CustomBorders = /*#__PURE__*/function (_BasePlugin) {
353
365
  var _loop4 = function _loop4(col) {
354
366
  (0, _array.arrayEach)(_this4.savedBorders, function (border) {
355
367
  if (border.row === row && border.col === col) {
356
- selectedBorders.push(border);
368
+ selectedBorders.push((0, _utils.denormalizeBorder)(border));
357
369
  }
358
370
  });
359
371
  };
@@ -409,8 +421,8 @@ var CustomBorders = /*#__PURE__*/function (_BasePlugin) {
409
421
  * Insert WalkontableSelection instance into Walkontable settings.
410
422
  *
411
423
  * @private
412
- * @param {object} border Object with `row` and `col`, `left`, `right`, `top` and `bottom`, `id` and `border` ({Object} with `color`, `width` and `cornerVisible` property) properties.
413
- * @param {string} place Coordinate where add/remove border - `top`, `bottom`, `left`, `right`.
424
+ * @param {object} border Object with `row` and `col`, `start`, `end`, `top` and `bottom`, `id` and `border` ({Object} with `color`, `width` and `cornerVisible` property) properties.
425
+ * @param {string} [place] Coordinate where add/remove border - `top`, `bottom`, `start`, `end`.
414
426
  */
415
427
 
416
428
  }, {
@@ -422,7 +434,8 @@ var CustomBorders = /*#__PURE__*/function (_BasePlugin) {
422
434
  this.savedBorders.push(border);
423
435
  }
424
436
 
425
- var visualCellRange = new _src.CellRange(new _src.CellCoords(border.row, border.col));
437
+ var visualCellRange = this.hot._createCellRange(this.hot._createCellCoords(border.row, border.col));
438
+
426
439
  var hasCustomSelections = this.checkCustomSelections(border, visualCellRange, place);
427
440
 
428
441
  if (!hasCustomSelections) {
@@ -438,8 +451,8 @@ var CustomBorders = /*#__PURE__*/function (_BasePlugin) {
438
451
  * @private
439
452
  * @param {number} row Visual row index.
440
453
  * @param {number} column Visual column index.
441
- * @param {object} borderDescriptor Object with `row` and `col`, `left`, `right`, `top` and `bottom` properties.
442
- * @param {string} place Coordinate where add/remove border - `top`, `bottom`, `left`, `right`.
454
+ * @param {object} borderDescriptor Object with `row` and `col`, `start`, `end`, `top` and `bottom` properties.
455
+ * @param {string} [place] Coordinate where add/remove border - `top`, `bottom`, `start`, `end`.
443
456
  */
444
457
 
445
458
  }, {
@@ -460,31 +473,31 @@ var CustomBorders = /*#__PURE__*/function (_BasePlugin) {
460
473
  if (border.id === customSelection.settings.id) {
461
474
  Object.assign(customSelection.settings, borderDescriptor);
462
475
  border.id = customSelection.settings.id;
463
- border.left = customSelection.settings.left;
464
- border.right = customSelection.settings.right;
465
476
  border.top = customSelection.settings.top;
466
477
  border.bottom = customSelection.settings.bottom;
478
+ border.start = customSelection.settings.start;
479
+ border.end = customSelection.settings.end;
467
480
  return false; // breaks forAll
468
481
  }
469
482
  });
470
483
  }
471
484
 
472
- this.hot.setCellMeta(row, column, 'borders', border);
485
+ this.hot.setCellMeta(row, column, 'borders', (0, _utils.denormalizeBorder)(border));
473
486
  this.insertBorderIntoSettings(border, place);
474
487
  }
475
488
  /**
476
489
  * Prepare borders from setting (object).
477
490
  *
478
491
  * @private
479
- * @param {object} rowDecriptor Object with `range`, `left`, `right`, `top` and `bottom` properties.
492
+ * @param {object} range {CellRange} The CellRange object.
493
+ * @param {object} customBorder Object with `start`, `end`, `top` and `bottom` properties.
480
494
  */
481
495
 
482
496
  }, {
483
497
  key: "prepareBorderFromCustomAddedRange",
484
- value: function prepareBorderFromCustomAddedRange(rowDecriptor) {
498
+ value: function prepareBorderFromCustomAddedRange(range, customBorder) {
485
499
  var _this6 = this;
486
500
 
487
- var range = rowDecriptor.range;
488
501
  var lastRowIndex = Math.min(range.to.row, this.hot.countRows() - 1);
489
502
  var lastColumnIndex = Math.min(range.to.col, this.hot.countCols() - 1);
490
503
  (0, _number.rangeEach)(range.from.row, lastRowIndex, function (rowIndex) {
@@ -493,37 +506,37 @@ var CustomBorders = /*#__PURE__*/function (_BasePlugin) {
493
506
  var add = 0;
494
507
 
495
508
  if (rowIndex === range.from.row) {
496
- if ((0, _object.hasOwnProperty)(rowDecriptor, 'top')) {
509
+ if ((0, _object.hasOwnProperty)(customBorder, 'top')) {
497
510
  add += 1;
498
- border.top = rowDecriptor.top;
511
+ border.top = customBorder.top;
499
512
  }
500
513
  } // Please keep in mind that `range.to.row` may be beyond the table boundaries. The border won't be rendered.
501
514
 
502
515
 
503
516
  if (rowIndex === range.to.row) {
504
- if ((0, _object.hasOwnProperty)(rowDecriptor, 'bottom')) {
517
+ if ((0, _object.hasOwnProperty)(customBorder, 'bottom')) {
505
518
  add += 1;
506
- border.bottom = rowDecriptor.bottom;
519
+ border.bottom = customBorder.bottom;
507
520
  }
508
521
  }
509
522
 
510
523
  if (colIndex === range.from.col) {
511
- if ((0, _object.hasOwnProperty)(rowDecriptor, 'left')) {
524
+ if ((0, _object.hasOwnProperty)(customBorder, 'start')) {
512
525
  add += 1;
513
- border.left = rowDecriptor.left;
526
+ border.start = customBorder.start;
514
527
  }
515
528
  } // Please keep in mind that `range.to.col` may be beyond the table boundaries. The border won't be rendered.
516
529
 
517
530
 
518
531
  if (colIndex === range.to.col) {
519
- if ((0, _object.hasOwnProperty)(rowDecriptor, 'right')) {
532
+ if ((0, _object.hasOwnProperty)(customBorder, 'end')) {
520
533
  add += 1;
521
- border.right = rowDecriptor.right;
534
+ border.end = customBorder.end;
522
535
  }
523
536
  }
524
537
 
525
538
  if (add > 0) {
526
- _this6.hot.setCellMeta(rowIndex, colIndex, 'borders', border);
539
+ _this6.hot.setCellMeta(rowIndex, colIndex, 'borders', (0, _utils.denormalizeBorder)(border));
527
540
 
528
541
  _this6.insertBorderIntoSettings(border);
529
542
  } else {// TODO sometimes it enters here. Why?
@@ -554,7 +567,7 @@ var CustomBorders = /*#__PURE__*/function (_BasePlugin) {
554
567
  * @private
555
568
  * @param {number} row Visual row index.
556
569
  * @param {number} column Visual column index.
557
- * @param {string} place Coordinate where add/remove border - `top`, `bottom`, `left`, `right` and `noBorders`.
570
+ * @param {string} place Coordinate where add/remove border - `top`, `bottom`, `start`, `end` and `noBorders`.
558
571
  * @param {boolean} remove True when remove borders, and false when add borders.
559
572
  */
560
573
 
@@ -565,6 +578,8 @@ var CustomBorders = /*#__PURE__*/function (_BasePlugin) {
565
578
 
566
579
  if (!bordersMeta || bordersMeta.border === void 0) {
567
580
  bordersMeta = (0, _utils.createEmptyBorders)(row, column);
581
+ } else {
582
+ bordersMeta = (0, _utils.normalizeBorder)(bordersMeta);
568
583
  }
569
584
 
570
585
  if (remove) {
@@ -580,7 +595,7 @@ var CustomBorders = /*#__PURE__*/function (_BasePlugin) {
580
595
  this.insertBorderIntoSettings(bordersMeta);
581
596
  }
582
597
 
583
- this.hot.setCellMeta(row, column, 'borders', bordersMeta);
598
+ this.hot.setCellMeta(row, column, 'borders', (0, _utils.denormalizeBorder)(bordersMeta));
584
599
  }
585
600
  } else {
586
601
  bordersMeta[place] = (0, _utils.createDefaultCustomBorder)();
@@ -591,7 +606,7 @@ var CustomBorders = /*#__PURE__*/function (_BasePlugin) {
591
606
  this.insertBorderIntoSettings(bordersMeta);
592
607
  }
593
608
 
594
- this.hot.setCellMeta(row, column, 'borders', bordersMeta);
609
+ this.hot.setCellMeta(row, column, 'borders', (0, _utils.denormalizeBorder)(bordersMeta));
595
610
  }
596
611
  }
597
612
  /**
@@ -634,21 +649,21 @@ var CustomBorders = /*#__PURE__*/function (_BasePlugin) {
634
649
  });
635
650
  break;
636
651
 
637
- case 'right':
638
- (0, _number.rangeEach)(start.row, end.row, function (rowRight) {
639
- _this7.setBorder(rowRight, end.col, place, remove);
640
- });
641
- break;
642
-
643
652
  case 'bottom':
644
653
  (0, _number.rangeEach)(start.col, end.col, function (bottomCol) {
645
654
  _this7.setBorder(end.row, bottomCol, place, remove);
646
655
  });
647
656
  break;
648
657
 
649
- case 'left':
650
- (0, _number.rangeEach)(start.row, end.row, function (rowLeft) {
651
- _this7.setBorder(rowLeft, start.col, place, remove);
658
+ case 'start':
659
+ (0, _number.rangeEach)(start.row, end.row, function (rowStart) {
660
+ _this7.setBorder(rowStart, start.col, place, remove);
661
+ });
662
+ break;
663
+
664
+ case 'end':
665
+ (0, _number.rangeEach)(start.row, end.row, function (rowEnd) {
666
+ _this7.setBorder(rowEnd, end.col, place, remove);
652
667
  });
653
668
  break;
654
669
 
@@ -662,7 +677,7 @@ var CustomBorders = /*#__PURE__*/function (_BasePlugin) {
662
677
  * Create borders from settings.
663
678
  *
664
679
  * @private
665
- * @param {Array} customBorders Object with `row` and `col`, `left`, `right`, `top` and `bottom` properties.
680
+ * @param {Array} customBorders Object with `row` and `col`, `start`, `end`, `top` and `bottom` properties.
666
681
  */
667
682
 
668
683
  }, {
@@ -671,10 +686,12 @@ var CustomBorders = /*#__PURE__*/function (_BasePlugin) {
671
686
  var _this8 = this;
672
687
 
673
688
  (0, _array.arrayEach)(customBorders, function (customBorder) {
689
+ var normCustomBorder = (0, _utils.normalizeBorder)(customBorder);
690
+
674
691
  if (customBorder.range) {
675
- _this8.prepareBorderFromCustomAddedRange(customBorder);
692
+ _this8.prepareBorderFromCustomAddedRange(customBorder.range, normCustomBorder);
676
693
  } else {
677
- _this8.prepareBorderFromCustomAdded(customBorder.row, customBorder.col, customBorder);
694
+ _this8.prepareBorderFromCustomAdded(customBorder.row, customBorder.col, normCustomBorder);
678
695
  }
679
696
  });
680
697
  }
@@ -682,18 +699,23 @@ var CustomBorders = /*#__PURE__*/function (_BasePlugin) {
682
699
  * Count hide property in border object.
683
700
  *
684
701
  * @private
685
- * @param {object} border Object with `row` and `col`, `left`, `right`, `top` and `bottom`, `id` and `border` ({Object} with `color`, `width` and `cornerVisible` property) properties.
702
+ * @param {object} border Object with `row` and `col`, `start`, `end`, `top` and `bottom`, `id` and
703
+ * `border` ({Object} with `color`, `width` and `cornerVisible` property) properties.
686
704
  * @returns {number}
687
705
  */
688
706
 
689
707
  }, {
690
708
  key: "countHide",
691
709
  value: function countHide(border) {
692
- var values = Object.values(border);
710
+ var top = border.top,
711
+ bottom = border.bottom,
712
+ start = border.start,
713
+ end = border.end;
714
+ var values = [top, bottom, start, end];
693
715
  return (0, _array.arrayReduce)(values, function (accumulator, value) {
694
716
  var result = accumulator;
695
717
 
696
- if (value.hide) {
718
+ if (value && value.hide) {
697
719
  result += 1;
698
720
  }
699
721
 
@@ -778,7 +800,8 @@ var CustomBorders = /*#__PURE__*/function (_BasePlugin) {
778
800
  * Check if an border already exists in the savedBorders array, and if true update border in savedBorders.
779
801
  *
780
802
  * @private
781
- * @param {object} border Object with `row` and `col`, `left`, `right`, `top` and `bottom`, `id` and `border` ({Object} with `color`, `width` and `cornerVisible` property) properties.
803
+ * @param {object} border Object with `row` and `col`, `start`, `end`, `top` and `bottom`, `id` and
804
+ * `border` ({Object} with `color`, `width` and `cornerVisible` property) properties.
782
805
  *
783
806
  * @returns {boolean}
784
807
  */
@@ -810,8 +833,9 @@ var CustomBorders = /*#__PURE__*/function (_BasePlugin) {
810
833
  * Check if an border already exists in the customSelections, and if true call toggleHiddenClass method.
811
834
  *
812
835
  * @private
813
- * @param {object} border Object with `row` and `col`, `left`, `right`, `top` and `bottom`, `id` and `border` ({Object} with `color`, `width` and `cornerVisible` property) properties.
814
- * @param {string} place Coordinate where add/remove border - `top`, `bottom`, `left`, `right` and `noBorders`.
836
+ * @param {object} border Object with `row` and `col`, `start`, `end`, `top` and `bottom`, `id` and
837
+ * `border` ({Object} with `color`, `width` and `cornerVisible` property) properties.
838
+ * @param {string} place Coordinate where add/remove border - `top`, `bottom`, `start`, `end` and `noBorders`.
815
839
  * @param {boolean} remove True when remove borders, and false when add borders.
816
840
  *
817
841
  * @returns {boolean}
@@ -836,9 +860,10 @@ var CustomBorders = /*#__PURE__*/function (_BasePlugin) {
836
860
  * Check if an border already exists in the customSelections, and if true reset cellRange.
837
861
  *
838
862
  * @private
839
- * @param {object} border Object with `row` and `col`, `left`, `right`, `top` and `bottom`, `id` and `border` ({Object} with `color`, `width` and `cornerVisible` property) properties.
863
+ * @param {object} border Object with `row` and `col`, `start`, `end`, `top` and `bottom`, `id` and
864
+ * `border` ({Object} with `color`, `width` and `cornerVisible` property) properties.
840
865
  * @param {CellRange} cellRange The selection range to check.
841
- * @param {string} place Coordinate where add/remove border - `top`, `bottom`, `left`, `right`.
866
+ * @param {string} [place] Coordinate where add/remove border - `top`, `bottom`, `start`, `end`.
842
867
  * @returns {boolean}
843
868
  */
844
869
 
@@ -883,15 +908,40 @@ var CustomBorders = /*#__PURE__*/function (_BasePlugin) {
883
908
  var customBorders = this.hot.getSettings()[PLUGIN_KEY];
884
909
 
885
910
  if (Array.isArray(customBorders)) {
886
- if (!customBorders.length) {
887
- this.savedBorders = customBorders;
911
+ var bordersClone = (0, _object.deepClone)(customBorders);
912
+ this.checkSettingsCohesion(bordersClone);
913
+
914
+ if (!bordersClone.length) {
915
+ this.savedBorders = bordersClone;
888
916
  }
889
917
 
890
- this.createCustomBorders(customBorders);
918
+ this.createCustomBorders(bordersClone);
891
919
  } else if (customBorders !== void 0) {
892
920
  this.createCustomBorders(this.savedBorders);
893
921
  }
894
922
  }
923
+ /**
924
+ * Checks the settings cohesion. The properties such like "left"/"right" are supported only
925
+ * in the LTR mode and the "left"/"right" options can not be used together with "start"/"end" properties.
926
+ *
927
+ * @private
928
+ * @param {object[]} customBorders The user defined custom border objects array.
929
+ */
930
+
931
+ }, {
932
+ key: "checkSettingsCohesion",
933
+ value: function checkSettingsCohesion(customBorders) {
934
+ var hasLeftOrRight = (0, _utils.hasLeftRightTypeOptions)(customBorders);
935
+ var hasStartOrEnd = (0, _utils.hasStartEndTypeOptions)(customBorders);
936
+
937
+ if (hasLeftOrRight && hasStartOrEnd) {
938
+ throw new Error('The "left"/"right" and "start"/"end" options should not be used together. ' + 'Please use only the option "start"/"end".');
939
+ }
940
+
941
+ if (this.hot.isRtl() && hasLeftOrRight) {
942
+ throw new Error('The "left"/"right" properties are not supported for RTL. Please use option "start"/"end".');
943
+ }
944
+ }
895
945
  /**
896
946
  * Add border options to context menu.
897
947
  *
@@ -951,6 +1001,13 @@ var CustomBorders = /*#__PURE__*/function (_BasePlugin) {
951
1001
  get: function get() {
952
1002
  return PLUGIN_PRIORITY;
953
1003
  }
1004
+ /**
1005
+ * Saved borders.
1006
+ *
1007
+ * @private
1008
+ * @type {Array}
1009
+ */
1010
+
954
1011
  }]);
955
1012
 
956
1013
  return CustomBorders;