handsontable 18.0.0 → 18.1.0-rc7

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 (1128) hide show
  1. package/3rdparty/walkontable/src/axisSizing/axisSizeSource.d.mts +1 -0
  2. package/3rdparty/walkontable/src/axisSizing/axisSizeSource.d.ts +55 -0
  3. package/3rdparty/walkontable/src/axisSizing/axisSizeSource.js +15 -0
  4. package/3rdparty/walkontable/src/axisSizing/axisSizeSource.mjs +14 -0
  5. package/3rdparty/walkontable/src/axisSizing/boxModel.d.mts +1 -0
  6. package/3rdparty/walkontable/src/axisSizing/boxModel.d.ts +32 -0
  7. package/3rdparty/walkontable/src/axisSizing/boxModel.js +45 -0
  8. package/3rdparty/walkontable/src/axisSizing/boxModel.mjs +33 -0
  9. package/3rdparty/walkontable/src/axisSizing/columnUtils.d.mts +2 -0
  10. package/3rdparty/walkontable/src/{utils/column.d.ts → axisSizing/columnUtils.d.ts} +12 -10
  11. package/3rdparty/walkontable/src/axisSizing/columnUtils.js +147 -0
  12. package/3rdparty/walkontable/src/axisSizing/columnUtils.mjs +142 -0
  13. package/3rdparty/walkontable/src/axisSizing/defaultSizeSource.d.mts +1 -0
  14. package/3rdparty/walkontable/src/axisSizing/defaultSizeSource.d.ts +58 -0
  15. package/3rdparty/walkontable/src/axisSizing/defaultSizeSource.js +129 -0
  16. package/3rdparty/walkontable/src/axisSizing/defaultSizeSource.mjs +119 -0
  17. package/3rdparty/walkontable/src/axisSizing/oversizedRows.d.mts +1 -0
  18. package/3rdparty/walkontable/src/axisSizing/oversizedRows.d.ts +162 -0
  19. package/3rdparty/walkontable/src/axisSizing/oversizedRows.js +424 -0
  20. package/3rdparty/walkontable/src/axisSizing/oversizedRows.mjs +522 -0
  21. package/3rdparty/walkontable/src/axisSizing/positionCache/index.d.ts +130 -0
  22. package/3rdparty/walkontable/src/axisSizing/positionCache/index.js +256 -0
  23. package/3rdparty/walkontable/src/axisSizing/positionCache/index.mjs +262 -0
  24. package/3rdparty/walkontable/src/axisSizing/positionCache/prefixSumStrategy.d.mts +1 -0
  25. package/3rdparty/walkontable/src/axisSizing/positionCache/prefixSumStrategy.d.ts +51 -0
  26. package/3rdparty/walkontable/src/axisSizing/positionCache/prefixSumStrategy.js +121 -0
  27. package/3rdparty/walkontable/src/axisSizing/positionCache/prefixSumStrategy.mjs +117 -0
  28. package/3rdparty/walkontable/src/axisSizing/positionCache/sparseStrategy.d.mts +1 -0
  29. package/3rdparty/walkontable/src/axisSizing/positionCache/sparseStrategy.d.ts +53 -0
  30. package/3rdparty/walkontable/src/axisSizing/positionCache/sparseStrategy.js +206 -0
  31. package/3rdparty/walkontable/src/axisSizing/positionCache/sparseStrategy.mjs +203 -0
  32. package/3rdparty/walkontable/src/axisSizing/positionCache/strategy.d.mts +1 -0
  33. package/3rdparty/walkontable/src/axisSizing/positionCache/strategy.d.ts +53 -0
  34. package/3rdparty/walkontable/src/axisSizing/positionCache/strategy.js +40 -0
  35. package/3rdparty/walkontable/src/axisSizing/positionCache/strategy.mjs +41 -0
  36. package/3rdparty/walkontable/src/axisSizing/positionCache/uniformStrategy.d.mts +1 -0
  37. package/3rdparty/walkontable/src/axisSizing/positionCache/uniformStrategy.d.ts +47 -0
  38. package/3rdparty/walkontable/src/axisSizing/positionCache/uniformStrategy.js +121 -0
  39. package/3rdparty/walkontable/src/axisSizing/positionCache/uniformStrategy.mjs +115 -0
  40. package/3rdparty/walkontable/src/axisSizing/rowUtils.d.mts +2 -0
  41. package/3rdparty/walkontable/src/{utils/row.d.ts → axisSizing/rowUtils.d.ts} +11 -9
  42. package/3rdparty/walkontable/src/axisSizing/rowUtils.js +111 -0
  43. package/3rdparty/walkontable/src/axisSizing/rowUtils.mjs +106 -0
  44. package/3rdparty/walkontable/src/axisSizing/sizeGetters.d.mts +2 -0
  45. package/3rdparty/walkontable/src/axisSizing/sizeGetters.d.ts +84 -0
  46. package/3rdparty/walkontable/src/axisSizing/sizeGetters.js +102 -0
  47. package/3rdparty/walkontable/src/axisSizing/sizeGetters.mjs +92 -0
  48. package/3rdparty/walkontable/src/calculator/axisCalculation.d.ts +1 -1
  49. package/3rdparty/walkontable/src/calculator/calculationType/renderedColumns.d.ts +10 -0
  50. package/3rdparty/walkontable/src/calculator/calculationType/renderedColumns.js +10 -1
  51. package/3rdparty/walkontable/src/calculator/calculationType/renderedColumns.mjs +10 -1
  52. package/3rdparty/walkontable/src/calculator/calculationType/renderedRows.d.ts +9 -0
  53. package/3rdparty/walkontable/src/calculator/calculationType/renderedRows.js +9 -1
  54. package/3rdparty/walkontable/src/calculator/calculationType/renderedRows.mjs +9 -1
  55. package/3rdparty/walkontable/src/calculator/viewportColumns.d.ts +1 -1
  56. package/3rdparty/walkontable/src/calculator/viewportRows.d.ts +1 -1
  57. package/3rdparty/walkontable/src/cell/range.d.ts +10 -0
  58. package/3rdparty/walkontable/src/cell/range.js +14 -3
  59. package/3rdparty/walkontable/src/cell/range.mjs +11 -0
  60. package/3rdparty/walkontable/src/core/_base.d.ts +21 -21
  61. package/3rdparty/walkontable/src/core/_base.js +58 -147
  62. package/3rdparty/walkontable/src/core/_base.mjs +17 -147
  63. package/3rdparty/walkontable/src/core/clone.d.ts +4 -14
  64. package/3rdparty/walkontable/src/core/clone.js +51 -5
  65. package/3rdparty/walkontable/src/core/clone.mjs +10 -5
  66. package/3rdparty/walkontable/src/core/core.d.ts +1 -5
  67. package/3rdparty/walkontable/src/core/core.js +52 -47
  68. package/3rdparty/walkontable/src/core/core.mjs +12 -48
  69. package/3rdparty/walkontable/src/domMeasure/geometryReader.d.mts +1 -0
  70. package/3rdparty/walkontable/src/domMeasure/geometryReader.d.ts +172 -0
  71. package/3rdparty/walkontable/src/domMeasure/geometryReader.js +19 -0
  72. package/3rdparty/walkontable/src/domMeasure/geometryReader.mjs +16 -0
  73. package/3rdparty/walkontable/src/domMeasure/liveGeometryReader.d.mts +1 -0
  74. package/3rdparty/walkontable/src/domMeasure/liveGeometryReader.d.ts +134 -0
  75. package/3rdparty/walkontable/src/domMeasure/liveGeometryReader.js +200 -0
  76. package/3rdparty/walkontable/src/domMeasure/liveGeometryReader.mjs +198 -0
  77. package/3rdparty/walkontable/src/event.d.ts +25 -12
  78. package/3rdparty/walkontable/src/event.js +91 -224
  79. package/3rdparty/walkontable/src/event.mjs +90 -224
  80. package/3rdparty/walkontable/src/facade/core.d.ts +6 -6
  81. package/3rdparty/walkontable/src/index.d.ts +1 -1
  82. package/3rdparty/walkontable/src/index.js +2 -2
  83. package/3rdparty/walkontable/src/index.mjs +1 -1
  84. package/3rdparty/walkontable/src/overlay/index.d.ts +6 -6
  85. package/3rdparty/walkontable/src/overlay/index.js +11 -11
  86. package/3rdparty/walkontable/src/overlay/index.mjs +6 -6
  87. package/3rdparty/walkontable/src/overlay/overlays.d.ts +375 -0
  88. package/3rdparty/walkontable/src/overlay/overlays.js +612 -0
  89. package/3rdparty/walkontable/src/overlay/overlays.mjs +601 -0
  90. package/3rdparty/walkontable/src/overlay/{_base.d.ts → regions/_base.d.ts} +65 -16
  91. package/3rdparty/walkontable/src/overlay/{_base.js → regions/_base.js} +160 -50
  92. package/3rdparty/walkontable/src/overlay/{_base.mjs → regions/_base.mjs} +163 -47
  93. package/3rdparty/walkontable/src/overlay/regions/bottomInlineStartCornerOverlay.d.mts +1 -0
  94. package/3rdparty/walkontable/src/overlay/{bottomInlineStartCorner.d.ts → regions/bottomInlineStartCornerOverlay.d.ts} +5 -10
  95. package/3rdparty/walkontable/src/overlay/{bottomInlineStartCorner.js → regions/bottomInlineStartCornerOverlay.js} +18 -20
  96. package/3rdparty/walkontable/src/overlay/{bottomInlineStartCorner.mjs → regions/bottomInlineStartCornerOverlay.mjs} +18 -20
  97. package/3rdparty/walkontable/src/overlay/regions/bottomOverlay.d.mts +1 -0
  98. package/3rdparty/walkontable/src/overlay/{bottom.d.ts → regions/bottomOverlay.d.ts} +16 -11
  99. package/3rdparty/walkontable/src/overlay/{bottom.js → regions/bottomOverlay.js} +113 -66
  100. package/3rdparty/walkontable/src/overlay/{bottom.mjs → regions/bottomOverlay.mjs} +113 -66
  101. package/3rdparty/walkontable/src/overlay/regions/inlineStartOverlay.d.mts +1 -0
  102. package/3rdparty/walkontable/src/overlay/{inlineStart.d.ts → regions/inlineStartOverlay.d.ts} +17 -11
  103. package/3rdparty/walkontable/src/overlay/{inlineStart.js → regions/inlineStartOverlay.js} +122 -67
  104. package/3rdparty/walkontable/src/overlay/{inlineStart.mjs → regions/inlineStartOverlay.mjs} +122 -67
  105. package/3rdparty/walkontable/src/overlay/regions/topInlineStartCornerOverlay.d.mts +1 -0
  106. package/3rdparty/walkontable/src/overlay/{topInlineStartCorner.d.ts → regions/topInlineStartCornerOverlay.d.ts} +5 -10
  107. package/3rdparty/walkontable/src/overlay/{topInlineStartCorner.js → regions/topInlineStartCornerOverlay.js} +13 -16
  108. package/3rdparty/walkontable/src/overlay/{topInlineStartCorner.mjs → regions/topInlineStartCornerOverlay.mjs} +13 -16
  109. package/3rdparty/walkontable/src/overlay/regions/topOverlay.d.mts +1 -0
  110. package/3rdparty/walkontable/src/overlay/{top.d.ts → regions/topOverlay.d.ts} +32 -11
  111. package/3rdparty/walkontable/src/overlay/{top.js → regions/topOverlay.js} +163 -77
  112. package/3rdparty/walkontable/src/overlay/{top.mjs → regions/topOverlay.mjs} +163 -77
  113. package/3rdparty/walkontable/src/overlay/resizeMonitor.d.mts +1 -0
  114. package/3rdparty/walkontable/src/overlay/resizeMonitor.d.ts +49 -0
  115. package/3rdparty/walkontable/src/overlay/resizeMonitor.js +154 -0
  116. package/3rdparty/walkontable/src/overlay/resizeMonitor.mjs +153 -0
  117. package/3rdparty/walkontable/src/overlay/scroll/nativeScrollInput.d.mts +1 -0
  118. package/3rdparty/walkontable/src/overlay/scroll/nativeScrollInput.d.ts +62 -0
  119. package/3rdparty/walkontable/src/overlay/scroll/nativeScrollInput.js +290 -0
  120. package/3rdparty/walkontable/src/overlay/scroll/nativeScrollInput.mjs +295 -0
  121. package/3rdparty/walkontable/src/overlay/scroll/scrollSync.d.mts +1 -0
  122. package/3rdparty/walkontable/src/overlay/scroll/scrollSync.d.ts +176 -0
  123. package/3rdparty/walkontable/src/overlay/scroll/scrollSync.js +549 -0
  124. package/3rdparty/walkontable/src/overlay/scroll/scrollSync.mjs +557 -0
  125. package/3rdparty/walkontable/src/overlay/spreaderSize.d.mts +1 -0
  126. package/3rdparty/walkontable/src/overlay/spreaderSize.d.ts +67 -0
  127. package/3rdparty/walkontable/src/overlay/spreaderSize.js +178 -0
  128. package/3rdparty/walkontable/src/overlay/spreaderSize.mjs +179 -0
  129. package/3rdparty/walkontable/src/{stickyScrollStrategy.d.ts → overlay/strategies/stickyScrollStrategy.d.ts} +33 -21
  130. package/3rdparty/walkontable/src/{stickyScrollStrategy.js → overlay/strategies/stickyScrollStrategy.js} +60 -41
  131. package/3rdparty/walkontable/src/{stickyScrollStrategy.mjs → overlay/strategies/stickyScrollStrategy.mjs} +58 -38
  132. package/3rdparty/walkontable/src/ports.d.mts +1 -0
  133. package/3rdparty/walkontable/src/ports.d.ts +54 -0
  134. package/3rdparty/walkontable/src/ports.js +23 -0
  135. package/3rdparty/walkontable/src/ports.mjs +24 -0
  136. package/3rdparty/walkontable/src/{renderer → render}/_base.d.ts +1 -1
  137. package/3rdparty/walkontable/src/{renderer → render}/cells.js +1 -1
  138. package/3rdparty/walkontable/src/{renderer → render}/cells.mjs +1 -1
  139. package/3rdparty/walkontable/src/{renderer → render}/columnHeaders.d.ts +1 -0
  140. package/3rdparty/walkontable/src/{renderer → render}/columnHeaders.js +43 -1
  141. package/3rdparty/walkontable/src/{renderer → render}/columnHeaders.mjs +44 -2
  142. package/3rdparty/walkontable/src/render/index.d.mts +1 -0
  143. package/3rdparty/walkontable/src/{renderer → render}/index.d.ts +11 -3
  144. package/3rdparty/walkontable/src/{renderer → render}/index.js +13 -3
  145. package/3rdparty/walkontable/src/{renderer → render}/index.mjs +11 -1
  146. package/3rdparty/walkontable/src/{renderer → render}/rows.js +1 -1
  147. package/3rdparty/walkontable/src/{renderer → render}/rows.mjs +1 -1
  148. package/3rdparty/walkontable/src/render/tableRenderer.d.mts +1 -0
  149. package/3rdparty/walkontable/src/{renderer/table.d.ts → render/tableRenderer.d.ts} +12 -2
  150. package/3rdparty/walkontable/src/render/tableRenderer.js +382 -0
  151. package/3rdparty/walkontable/src/{renderer/table.mjs → render/tableRenderer.mjs} +159 -6
  152. package/3rdparty/walkontable/src/{scroll.d.ts → scroll/scroll.d.ts} +27 -10
  153. package/3rdparty/walkontable/src/{scroll.js → scroll/scroll.js} +108 -32
  154. package/3rdparty/walkontable/src/{scroll.mjs → scroll/scroll.mjs} +106 -29
  155. package/3rdparty/walkontable/src/selection/border/border.d.ts +313 -5
  156. package/3rdparty/walkontable/src/selection/border/border.js +861 -51
  157. package/3rdparty/walkontable/src/selection/border/border.mjs +863 -53
  158. package/3rdparty/walkontable/src/selection/border/types.d.ts +30 -0
  159. package/3rdparty/walkontable/src/selection/manager.js +237 -0
  160. package/3rdparty/walkontable/src/selection/manager.mjs +238 -1
  161. package/3rdparty/walkontable/src/settings/accessor.d.mts +2 -0
  162. package/3rdparty/walkontable/src/settings/accessor.d.ts +74 -0
  163. package/3rdparty/walkontable/src/settings/accessor.js +78 -0
  164. package/3rdparty/walkontable/src/settings/accessor.mjs +71 -0
  165. package/3rdparty/walkontable/src/settings/defaults.d.mts +1 -0
  166. package/3rdparty/walkontable/src/{settings.d.ts → settings/defaults.d.ts} +16 -77
  167. package/3rdparty/walkontable/src/settings/defaults.js +146 -0
  168. package/3rdparty/walkontable/src/settings/defaults.mjs +225 -0
  169. package/3rdparty/walkontable/src/settings/index.d.mts +1 -0
  170. package/3rdparty/walkontable/src/settings/index.d.ts +6 -0
  171. package/3rdparty/walkontable/src/settings/index.js +20 -0
  172. package/3rdparty/walkontable/src/settings/index.mjs +5 -0
  173. package/3rdparty/walkontable/src/table/baseTable.d.mts +2 -0
  174. package/3rdparty/walkontable/src/table/baseTable.d.ts +284 -0
  175. package/3rdparty/walkontable/src/table/baseTable.js +295 -0
  176. package/3rdparty/walkontable/src/table/baseTable.mjs +283 -0
  177. package/3rdparty/walkontable/src/table/cellAccess.d.mts +1 -0
  178. package/3rdparty/walkontable/src/table/cellAccess.d.ts +101 -0
  179. package/3rdparty/walkontable/src/table/cellAccess.js +238 -0
  180. package/3rdparty/walkontable/src/table/cellAccess.mjs +229 -0
  181. package/3rdparty/walkontable/src/table/domScaffold.d.mts +1 -0
  182. package/3rdparty/walkontable/src/table/domScaffold.d.ts +37 -0
  183. package/3rdparty/walkontable/src/table/domScaffold.js +145 -0
  184. package/3rdparty/walkontable/src/table/domScaffold.mjs +136 -0
  185. package/3rdparty/walkontable/src/table/drawCycle.d.mts +1 -0
  186. package/3rdparty/walkontable/src/table/drawCycle.d.ts +16 -0
  187. package/3rdparty/walkontable/src/table/drawCycle.js +405 -0
  188. package/3rdparty/walkontable/src/table/drawCycle.mjs +403 -0
  189. package/3rdparty/walkontable/src/table/rangeQuery/renderedRange.d.mts +1 -0
  190. package/3rdparty/walkontable/src/table/rangeQuery/renderedRange.d.ts +38 -0
  191. package/3rdparty/walkontable/src/table/rangeQuery/renderedRange.js +15 -0
  192. package/3rdparty/walkontable/src/table/rangeQuery/renderedRange.mjs +14 -0
  193. package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyColumnsStart.d.ts +1 -1
  194. package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyColumnsStart.js +1 -1
  195. package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyColumnsStart.mjs +1 -1
  196. package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyRowsBottom.d.ts +1 -1
  197. package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyRowsTop.d.ts +1 -1
  198. package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyRowsTop.js +1 -1
  199. package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyRowsTop.mjs +1 -1
  200. package/3rdparty/walkontable/src/table/rangeQuery/viewportPredicates.d.mts +2 -0
  201. package/3rdparty/walkontable/src/table/rangeQuery/viewportPredicates.d.ts +226 -0
  202. package/3rdparty/walkontable/src/table/rangeQuery/viewportPredicates.js +251 -0
  203. package/3rdparty/walkontable/src/table/rangeQuery/viewportPredicates.mjs +241 -0
  204. package/3rdparty/walkontable/src/table/rangeQuery/virtualRange.d.mts +1 -0
  205. package/3rdparty/walkontable/src/table/rangeQuery/virtualRange.d.ts +14 -0
  206. package/3rdparty/walkontable/src/table/rangeQuery/virtualRange.js +196 -0
  207. package/3rdparty/walkontable/src/table/rangeQuery/virtualRange.mjs +179 -0
  208. package/3rdparty/walkontable/src/table/regions/bottomInlineStartCornerTable.d.mts +2 -0
  209. package/3rdparty/walkontable/src/table/regions/bottomInlineStartCornerTable.d.ts +16 -0
  210. package/3rdparty/walkontable/src/table/{bottomInlineStartCorner.js → regions/bottomInlineStartCornerTable.js} +9 -12
  211. package/3rdparty/walkontable/src/table/regions/bottomInlineStartCornerTable.mjs +21 -0
  212. package/3rdparty/walkontable/src/table/regions/bottomTable.d.mts +2 -0
  213. package/3rdparty/walkontable/src/table/regions/bottomTable.d.ts +15 -0
  214. package/3rdparty/walkontable/src/table/regions/bottomTable.js +35 -0
  215. package/3rdparty/walkontable/src/table/regions/bottomTable.mjs +20 -0
  216. package/3rdparty/walkontable/src/table/regions/inlineStartTable.d.mts +2 -0
  217. package/3rdparty/walkontable/src/table/regions/inlineStartTable.d.ts +12 -0
  218. package/3rdparty/walkontable/src/table/regions/inlineStartTable.js +32 -0
  219. package/3rdparty/walkontable/src/table/regions/inlineStartTable.mjs +17 -0
  220. package/3rdparty/walkontable/src/table/regions/masterTable.d.mts +2 -0
  221. package/3rdparty/walkontable/src/table/{master.d.ts → regions/masterTable.d.ts} +4 -13
  222. package/3rdparty/walkontable/src/table/{master.js → regions/masterTable.js} +23 -48
  223. package/3rdparty/walkontable/src/table/{master.mjs → regions/masterTable.mjs} +22 -47
  224. package/3rdparty/walkontable/src/table/regions/topInlineStartCornerTable.d.mts +2 -0
  225. package/3rdparty/walkontable/src/table/regions/topInlineStartCornerTable.d.ts +16 -0
  226. package/3rdparty/walkontable/src/table/{topInlineStartCorner.js → regions/topInlineStartCornerTable.js} +9 -12
  227. package/3rdparty/walkontable/src/table/regions/topInlineStartCornerTable.mjs +21 -0
  228. package/3rdparty/walkontable/src/table/regions/topTable.d.mts +2 -0
  229. package/3rdparty/walkontable/src/table/regions/topTable.d.ts +15 -0
  230. package/3rdparty/walkontable/src/table/regions/topTable.js +35 -0
  231. package/3rdparty/walkontable/src/table/regions/topTable.mjs +20 -0
  232. package/3rdparty/walkontable/src/types.d.ts +7 -69
  233. package/3rdparty/walkontable/src/types.mjs +2 -1
  234. package/3rdparty/walkontable/src/utils/pointerToCoords.d.mts +1 -0
  235. package/3rdparty/walkontable/src/utils/{cellCoords.d.ts → pointerToCoords.d.ts} +24 -0
  236. package/3rdparty/walkontable/src/utils/pointerToCoords.js +181 -0
  237. package/3rdparty/walkontable/src/utils/pointerToCoords.mjs +186 -0
  238. package/3rdparty/walkontable/src/viewport/boxLayout/gatherLayoutInput.d.mts +1 -0
  239. package/3rdparty/walkontable/src/viewport/boxLayout/gatherLayoutInput.d.ts +40 -0
  240. package/3rdparty/walkontable/src/viewport/boxLayout/gatherLayoutInput.js +139 -0
  241. package/3rdparty/walkontable/src/viewport/boxLayout/gatherLayoutInput.mjs +131 -0
  242. package/3rdparty/walkontable/src/viewport/boxLayout/layoutSnapshot.d.mts +1 -0
  243. package/3rdparty/walkontable/src/viewport/boxLayout/layoutSnapshot.d.ts +133 -0
  244. package/3rdparty/walkontable/src/viewport/boxLayout/layoutSnapshot.js +18 -0
  245. package/3rdparty/walkontable/src/viewport/boxLayout/layoutSnapshot.mjs +18 -0
  246. package/3rdparty/walkontable/src/viewport/boxLayout/resolveLayout.d.mts +1 -0
  247. package/3rdparty/walkontable/src/viewport/boxLayout/resolveLayout.d.ts +17 -0
  248. package/3rdparty/walkontable/src/viewport/boxLayout/resolveLayout.js +104 -0
  249. package/3rdparty/walkontable/src/viewport/boxLayout/resolveLayout.mjs +99 -0
  250. package/3rdparty/walkontable/src/viewport/calculatorFactory.d.mts +1 -0
  251. package/3rdparty/walkontable/src/viewport/calculatorFactory.d.ts +84 -0
  252. package/3rdparty/walkontable/src/viewport/calculatorFactory.js +588 -0
  253. package/3rdparty/walkontable/src/viewport/calculatorFactory.mjs +601 -0
  254. package/3rdparty/walkontable/src/viewport/viewport.d.ts +267 -0
  255. package/3rdparty/walkontable/src/viewport/viewport.js +368 -0
  256. package/3rdparty/walkontable/src/viewport/viewport.mjs +360 -0
  257. package/3rdparty/walkontable/src/viewport/workspaceSize.d.mts +1 -0
  258. package/3rdparty/walkontable/src/viewport/workspaceSize.d.ts +59 -0
  259. package/3rdparty/walkontable/src/viewport/workspaceSize.js +284 -0
  260. package/3rdparty/walkontable/src/viewport/workspaceSize.mjs +282 -0
  261. package/3rdparty/walkontable/src/wire.d.mts +1 -0
  262. package/3rdparty/walkontable/src/wire.d.ts +81 -0
  263. package/3rdparty/walkontable/src/wire.js +56 -0
  264. package/3rdparty/walkontable/src/wire.mjs +56 -0
  265. package/CHANGELOG.md +114 -1
  266. package/LICENSE.txt +1 -1
  267. package/README.md +2 -2
  268. package/base.d.ts +13 -4
  269. package/base.js +2 -2
  270. package/base.mjs +2 -2
  271. package/cellTypes/checkboxType/accessors/valueSetter.d.ts +1 -1
  272. package/cellTypes/checkboxType/accessors/valueSetter.js +3 -1
  273. package/cellTypes/checkboxType/accessors/valueSetter.mjs +3 -1
  274. package/cellTypes/index.d.ts +3 -2
  275. package/cellTypes/index.js +9 -0
  276. package/cellTypes/index.mjs +5 -2
  277. package/cellTypes/intlDatetimeType/index.d.mts +1 -0
  278. package/cellTypes/intlDatetimeType/index.d.ts +1 -0
  279. package/cellTypes/intlDatetimeType/index.js +19 -0
  280. package/cellTypes/intlDatetimeType/index.mjs +1 -0
  281. package/cellTypes/intlDatetimeType/intlDatetimeType.d.mts +1 -0
  282. package/cellTypes/intlDatetimeType/intlDatetimeType.d.ts +16 -0
  283. package/cellTypes/intlDatetimeType/intlDatetimeType.js +31 -0
  284. package/cellTypes/intlDatetimeType/intlDatetimeType.mjs +15 -0
  285. package/cellTypes/multiSelectType/index.d.ts +1 -1
  286. package/cellTypes/multiSelectType/index.js +3 -0
  287. package/cellTypes/multiSelectType/index.mjs +1 -1
  288. package/cellTypes/multiSelectType/multiSelectType.d.ts +1 -0
  289. package/cellTypes/multiSelectType/multiSelectType.js +4 -0
  290. package/cellTypes/multiSelectType/multiSelectType.mjs +1 -0
  291. package/cellTypes/numericType/accessors/valueSetter.js +30 -2
  292. package/cellTypes/numericType/accessors/valueSetter.mjs +31 -3
  293. package/core/hooks/bucket.d.ts +40 -6
  294. package/core/hooks/bucket.js +108 -72
  295. package/core/hooks/bucket.mjs +113 -72
  296. package/core/hooks/constants.js +254 -16
  297. package/core/hooks/constants.mjs +254 -16
  298. package/core/hooks/index.js +27 -22
  299. package/core/hooks/index.mjs +27 -22
  300. package/core/layout/constants.d.ts +11 -0
  301. package/core/layout/constants.js +6 -0
  302. package/core/layout/constants.mjs +12 -0
  303. package/core/layout/domSlot.d.ts +3 -1
  304. package/core/layout/domSlot.js +16 -2
  305. package/core/layout/domSlot.mjs +16 -2
  306. package/core/layout/index.d.ts +2 -2
  307. package/core/layout/index.js +6 -0
  308. package/core/layout/index.mjs +2 -2
  309. package/core/layout/layoutManager.d.ts +13 -0
  310. package/core/layout/layoutManager.js +21 -4
  311. package/core/layout/layoutManager.mjs +22 -2
  312. package/core/settings.d.ts +102 -6
  313. package/core/types.d.ts +15 -1
  314. package/core/types.mjs +9 -0
  315. package/core.js +534 -88
  316. package/core.mjs +537 -91
  317. package/dataMap/dataMap.d.ts +3 -13
  318. package/dataMap/dataMap.js +100 -41
  319. package/dataMap/dataMap.mjs +101 -42
  320. package/dataMap/dataSource.js +4 -1
  321. package/dataMap/dataSource.mjs +4 -1
  322. package/dataMap/metaManager/index.d.ts +62 -8
  323. package/dataMap/metaManager/index.js +66 -0
  324. package/dataMap/metaManager/index.mjs +66 -0
  325. package/dataMap/metaManager/lazyFactoryMap.d.ts +68 -43
  326. package/dataMap/metaManager/lazyFactoryMap.js +497 -110
  327. package/dataMap/metaManager/lazyFactoryMap.mjs +511 -111
  328. package/dataMap/metaManager/metaLayers/cellMeta.d.ts +55 -8
  329. package/dataMap/metaManager/metaLayers/cellMeta.js +108 -8
  330. package/dataMap/metaManager/metaLayers/cellMeta.mjs +108 -8
  331. package/dataMap/metaManager/metaLayers/columnMeta.d.ts +2 -1
  332. package/dataMap/metaManager/metaLayers/columnMeta.js +1 -0
  333. package/dataMap/metaManager/metaLayers/columnMeta.mjs +1 -0
  334. package/dataMap/metaManager/metaSchema.js +759 -39
  335. package/dataMap/metaManager/metaSchema.mjs +759 -39
  336. package/dataMap/metaManager/mods/dynamicCellMeta.d.ts +24 -10
  337. package/dataMap/metaManager/mods/dynamicCellMeta.js +252 -28
  338. package/dataMap/metaManager/mods/dynamicCellMeta.mjs +253 -29
  339. package/dataMap/sourceDataValidator.d.ts +13 -21
  340. package/dataMap/sourceDataValidator.js +39 -29
  341. package/dataMap/sourceDataValidator.mjs +50 -33
  342. package/dist/handsontable.full.js +30027 -11261
  343. package/dist/handsontable.full.min.js +168 -112
  344. package/dist/handsontable.js +32468 -13762
  345. package/dist/handsontable.min.js +172 -116
  346. package/dist/languages/all.js +2 -1
  347. package/dist/languages/all.min.js +1 -1
  348. package/dist/languages/fa-IR.js +2 -1
  349. package/dist/languages/fa-IR.min.js +1 -1
  350. package/dist/themes/classic.js +9 -3
  351. package/dist/themes/classic.min.js +4 -4
  352. package/dist/themes/horizon.js +9 -3
  353. package/dist/themes/horizon.min.js +4 -4
  354. package/dist/themes/main.js +9 -3
  355. package/dist/themes/main.min.js +4 -4
  356. package/dist/themes/static/variables/colors/ant.js +3 -3
  357. package/dist/themes/static/variables/colors/ant.min.js +3 -3
  358. package/dist/themes/static/variables/colors/classic.js +3 -3
  359. package/dist/themes/static/variables/colors/classic.min.js +3 -3
  360. package/dist/themes/static/variables/colors/horizon.js +3 -3
  361. package/dist/themes/static/variables/colors/horizon.min.js +3 -3
  362. package/dist/themes/static/variables/colors/main.js +3 -3
  363. package/dist/themes/static/variables/colors/main.min.js +3 -3
  364. package/dist/themes/static/variables/colors/material.js +3 -3
  365. package/dist/themes/static/variables/colors/material.min.js +3 -3
  366. package/dist/themes/static/variables/colors/shadcn.js +3 -3
  367. package/dist/themes/static/variables/colors/shadcn.min.js +3 -3
  368. package/dist/themes/static/variables/density.js +3 -3
  369. package/dist/themes/static/variables/density.min.js +3 -3
  370. package/dist/themes/static/variables/helpers/iconsMap.js +4 -9
  371. package/dist/themes/static/variables/helpers/iconsMap.min.js +4 -9
  372. package/dist/themes/static/variables/icons/horizon.js +3 -3
  373. package/dist/themes/static/variables/icons/horizon.min.js +3 -3
  374. package/dist/themes/static/variables/icons/main.js +3 -3
  375. package/dist/themes/static/variables/icons/main.min.js +3 -3
  376. package/dist/themes/static/variables/sizing.js +3 -3
  377. package/dist/themes/static/variables/sizing.min.js +3 -3
  378. package/dist/themes/static/variables/tokens/classic.js +9 -3
  379. package/dist/themes/static/variables/tokens/classic.min.js +4 -4
  380. package/dist/themes/static/variables/tokens/horizon.js +9 -3
  381. package/dist/themes/static/variables/tokens/horizon.min.js +4 -4
  382. package/dist/themes/static/variables/tokens/main.js +9 -3
  383. package/dist/themes/static/variables/tokens/main.min.js +4 -4
  384. package/editorManager.js +152 -3
  385. package/editorManager.mjs +152 -3
  386. package/editors/autocompleteEditor/autocompleteEditor.js +58 -11
  387. package/editors/autocompleteEditor/autocompleteEditor.mjs +59 -12
  388. package/editors/baseEditor/baseEditor.d.ts +15 -3
  389. package/editors/baseEditor/baseEditor.js +5 -3
  390. package/editors/baseEditor/baseEditor.mjs +15 -3
  391. package/editors/factory.js +5 -2
  392. package/editors/factory.mjs +5 -2
  393. package/editors/index.d.ts +3 -2
  394. package/editors/index.js +8 -0
  395. package/editors/index.mjs +3 -1
  396. package/editors/intlDatetimeEditor/index.d.mts +1 -0
  397. package/editors/intlDatetimeEditor/index.d.ts +1 -0
  398. package/editors/intlDatetimeEditor/index.js +19 -0
  399. package/editors/intlDatetimeEditor/index.mjs +1 -0
  400. package/editors/intlDatetimeEditor/intlDatetimeEditor.d.mts +1 -0
  401. package/editors/intlDatetimeEditor/intlDatetimeEditor.d.ts +42 -0
  402. package/editors/intlDatetimeEditor/intlDatetimeEditor.js +108 -0
  403. package/editors/intlDatetimeEditor/intlDatetimeEditor.mjs +93 -0
  404. package/editors/multiSelectEditor/multiSelectEditor.js +11 -9
  405. package/editors/multiSelectEditor/multiSelectEditor.mjs +12 -10
  406. package/editors/selectEditor/selectEditor.js +2 -1
  407. package/editors/selectEditor/selectEditor.mjs +2 -1
  408. package/editors/textEditor/textEditor.js +1 -1
  409. package/editors/textEditor/textEditor.mjs +2 -2
  410. package/eventManager.d.ts +3 -3
  411. package/focusManager/grid.d.ts +28 -0
  412. package/focusManager/grid.js +85 -2
  413. package/focusManager/grid.mjs +81 -3
  414. package/focusManager/scopeManager.js +1 -1
  415. package/focusManager/scopeManager.mjs +2 -2
  416. package/handsontable-non-commercial-license.pdf +0 -0
  417. package/helpers/array.d.ts +25 -0
  418. package/helpers/array.js +41 -4
  419. package/helpers/array.mjs +56 -4
  420. package/helpers/console.d.ts +25 -3
  421. package/helpers/console.js +40 -7
  422. package/helpers/console.mjs +52 -7
  423. package/helpers/dateTime.d.ts +14 -0
  424. package/helpers/dateTime.js +74 -2
  425. package/helpers/dateTime.mjs +73 -2
  426. package/helpers/dom/cellCoords.js +156 -13
  427. package/helpers/dom/cellCoords.mjs +156 -13
  428. package/helpers/dom/element.d.ts +47 -8
  429. package/helpers/dom/element.js +104 -18
  430. package/helpers/dom/element.mjs +132 -23
  431. package/helpers/dom/event.d.ts +58 -0
  432. package/helpers/dom/event.js +39 -0
  433. package/helpers/dom/event.mjs +63 -0
  434. package/helpers/errors.d.ts +5 -0
  435. package/helpers/errors.js +10 -6
  436. package/helpers/errors.mjs +10 -6
  437. package/helpers/feature.d.ts +19 -0
  438. package/helpers/feature.js +21 -0
  439. package/helpers/feature.mjs +30 -0
  440. package/helpers/function.d.ts +1 -1
  441. package/helpers/function.js +4 -1
  442. package/helpers/function.mjs +4 -1
  443. package/helpers/mixed.d.ts +103 -0
  444. package/helpers/mixed.js +373 -4
  445. package/helpers/mixed.mjs +413 -4
  446. package/helpers/moves.js +2 -1
  447. package/helpers/moves.mjs +2 -1
  448. package/helpers/number.d.ts +22 -0
  449. package/helpers/number.js +49 -0
  450. package/helpers/number.mjs +66 -0
  451. package/helpers/string.d.ts +14 -10
  452. package/helpers/string.js +17 -9
  453. package/helpers/string.mjs +27 -17
  454. package/helpers/templateString.d.mts +1 -0
  455. package/helpers/templateString.d.ts +13 -0
  456. package/helpers/templateString.js +29 -0
  457. package/helpers/templateString.mjs +19 -0
  458. package/helpers/uiButton.d.mts +1 -0
  459. package/helpers/uiButton.d.ts +21 -0
  460. package/helpers/uiButton.js +37 -0
  461. package/helpers/uiButton.mjs +31 -0
  462. package/i18n/languages/fa-IR.d.ts +1 -0
  463. package/i18n/languages/fa-IR.js +1 -0
  464. package/i18n/languages/fa-IR.mjs +1 -0
  465. package/index.d.ts +3 -3
  466. package/languages/all.js +2 -1
  467. package/languages/fa-IR.js +2 -1
  468. package/languages/fa-IR.mjs +1 -0
  469. package/languages/index.js +2 -1
  470. package/package.json +61 -1
  471. package/plugins/autoColumnSize/autoColumnSize.d.ts +24 -1
  472. package/plugins/autoColumnSize/autoColumnSize.js +501 -82
  473. package/plugins/autoColumnSize/autoColumnSize.mjs +508 -83
  474. package/plugins/autoRowSize/autoRowSize.d.ts +40 -5
  475. package/plugins/autoRowSize/autoRowSize.js +68 -24
  476. package/plugins/autoRowSize/autoRowSize.mjs +98 -29
  477. package/plugins/autofill/autofill.js +30 -12
  478. package/plugins/autofill/autofill.mjs +30 -12
  479. package/plugins/base/base.d.ts +10 -0
  480. package/plugins/collapsibleColumns/collapsibleColumns.d.ts +4 -0
  481. package/plugins/collapsibleColumns/collapsibleColumns.js +89 -8
  482. package/plugins/collapsibleColumns/collapsibleColumns.mjs +93 -8
  483. package/plugins/columnSorting/columnSorting.d.ts +31 -2
  484. package/plugins/columnSorting/columnSorting.js +151 -24
  485. package/plugins/columnSorting/columnSorting.mjs +153 -26
  486. package/plugins/columnSorting/columnStatesManager.d.ts +1 -1
  487. package/plugins/columnSorting/columnStatesManager.js +1 -7
  488. package/plugins/columnSorting/columnStatesManager.mjs +1 -7
  489. package/plugins/columnSorting/domHelpers.d.ts +3 -0
  490. package/plugins/columnSorting/domHelpers.js +9 -0
  491. package/plugins/columnSorting/domHelpers.mjs +3 -3
  492. package/plugins/columnSorting/rootComparator.js +21 -16
  493. package/plugins/columnSorting/rootComparator.mjs +21 -16
  494. package/plugins/columnSorting/sortFunction/checkbox.js +7 -5
  495. package/plugins/columnSorting/sortFunction/checkbox.mjs +7 -5
  496. package/plugins/columnSorting/sortFunction/default.js +15 -4
  497. package/plugins/columnSorting/sortFunction/default.mjs +15 -4
  498. package/plugins/columnSorting/sortFunction/intlDatetime.d.mts +1 -0
  499. package/plugins/columnSorting/sortFunction/intlDatetime.d.ts +10 -0
  500. package/plugins/columnSorting/sortFunction/intlDatetime.js +23 -0
  501. package/plugins/columnSorting/sortFunction/intlDatetime.mjs +12 -0
  502. package/plugins/columnSorting/sortService/registry.js +2 -0
  503. package/plugins/columnSorting/sortService/registry.mjs +2 -0
  504. package/plugins/columnSorting/utils.d.ts +8 -0
  505. package/plugins/columnSorting/utils.js +37 -45
  506. package/plugins/columnSorting/utils.mjs +42 -47
  507. package/plugins/columnSummary/columnSummary.js +9 -5
  508. package/plugins/columnSummary/columnSummary.mjs +9 -5
  509. package/plugins/columnSummary/endpoints.d.ts +69 -2
  510. package/plugins/columnSummary/endpoints.js +181 -29
  511. package/plugins/columnSummary/endpoints.mjs +181 -29
  512. package/plugins/comments/commentEditor.js +1 -1
  513. package/plugins/comments/commentEditor.mjs +2 -2
  514. package/plugins/contextMenu/contextMenu.d.ts +12 -1
  515. package/plugins/contextMenu/contextMenu.js +30 -6
  516. package/plugins/contextMenu/contextMenu.mjs +30 -6
  517. package/plugins/contextMenu/index.d.ts +1 -1
  518. package/plugins/contextMenu/menu/menu.d.ts +22 -1
  519. package/plugins/contextMenu/menu/menu.js +211 -3
  520. package/plugins/contextMenu/menu/menu.mjs +212 -4
  521. package/plugins/contextMenu/menu/menuItemRenderer.js +2 -2
  522. package/plugins/contextMenu/menu/menuItemRenderer.mjs +2 -2
  523. package/plugins/contextMenu/predefinedItems/alignment.js +14 -14
  524. package/plugins/contextMenu/predefinedItems/alignment.mjs +14 -14
  525. package/plugins/contextMenu/predefinedItems/clearColumn.js +1 -1
  526. package/plugins/contextMenu/predefinedItems/clearColumn.mjs +1 -1
  527. package/plugins/contextMenu/predefinedItems/readOnly.js +3 -3
  528. package/plugins/contextMenu/predefinedItems/readOnly.mjs +3 -3
  529. package/plugins/contextMenu/utils.js +1 -1
  530. package/plugins/contextMenu/utils.mjs +1 -1
  531. package/plugins/copyPaste/copyPaste.js +70 -16
  532. package/plugins/copyPaste/copyPaste.mjs +71 -17
  533. package/plugins/copyPaste/copyableRanges.js +6 -2
  534. package/plugins/copyPaste/copyableRanges.mjs +6 -2
  535. package/plugins/copyPaste/pasteEvent.d.ts +1 -1
  536. package/plugins/customBorders/customBorders.d.ts +21 -40
  537. package/plugins/customBorders/customBorders.js +1080 -201
  538. package/plugins/customBorders/customBorders.mjs +1082 -203
  539. package/plugins/customBorders/utils.d.ts +71 -0
  540. package/plugins/customBorders/utils.js +63 -0
  541. package/plugins/customBorders/utils.mjs +101 -0
  542. package/plugins/dataProvider/dataProvider.d.ts +2 -1
  543. package/plugins/dataProvider/dataProvider.js +22 -7
  544. package/plugins/dataProvider/dataProvider.mjs +22 -7
  545. package/plugins/dataProvider/query/crud.js +1 -1
  546. package/plugins/dataProvider/query/crud.mjs +1 -1
  547. package/plugins/dialog/dialog.js +14 -9
  548. package/plugins/dialog/dialog.mjs +14 -9
  549. package/plugins/dialog/templates/confirm.d.ts +1 -1
  550. package/plugins/dialog/templates/confirm.js +2 -1
  551. package/plugins/dialog/templates/confirm.mjs +2 -1
  552. package/plugins/dialog/ui.d.ts +5 -3
  553. package/plugins/dialog/ui.js +12 -4
  554. package/plugins/dialog/ui.mjs +12 -4
  555. package/plugins/dragToScroll/dragToScroll.d.ts +2 -2
  556. package/plugins/dragToScroll/dragToScroll.js +150 -14
  557. package/plugins/dragToScroll/dragToScroll.mjs +151 -15
  558. package/plugins/dropdownMenu/dropdownMenu.d.ts +5 -1
  559. package/plugins/dropdownMenu/dropdownMenu.js +45 -3
  560. package/plugins/dropdownMenu/dropdownMenu.mjs +46 -4
  561. package/plugins/dropdownMenu/index.d.ts +1 -0
  562. package/plugins/emptyDataState/emptyDataState.js +4 -6
  563. package/plugins/emptyDataState/emptyDataState.mjs +4 -6
  564. package/plugins/emptyDataState/ui.js +2 -1
  565. package/plugins/emptyDataState/ui.mjs +2 -1
  566. package/plugins/exportFile/dataProvider.js +7 -9
  567. package/plugins/exportFile/dataProvider.mjs +7 -9
  568. package/plugins/exportFile/exportFile.d.ts +10 -3
  569. package/plugins/exportFile/types/_base.js +4 -10
  570. package/plugins/exportFile/types/_base.mjs +4 -10
  571. package/plugins/exportFile/types/xlsx/cell-style.js +4 -2
  572. package/plugins/exportFile/types/xlsx/cell-style.mjs +4 -2
  573. package/plugins/exportFile/types/xlsx/date-utils.d.ts +15 -0
  574. package/plugins/exportFile/types/xlsx/date-utils.js +31 -0
  575. package/plugins/exportFile/types/xlsx/date-utils.mjs +36 -0
  576. package/plugins/exportFile/types/xlsx.js +13 -9
  577. package/plugins/exportFile/types/xlsx.mjs +14 -10
  578. package/plugins/exportFile/utils.d.ts +9 -1
  579. package/plugins/exportFile/utils.js +27 -4
  580. package/plugins/exportFile/utils.mjs +40 -2
  581. package/plugins/filters/component/_base.d.ts +1 -2
  582. package/plugins/filters/component/_base.js +1 -2
  583. package/plugins/filters/component/_base.mjs +1 -2
  584. package/plugins/filters/component/condition.d.ts +1 -0
  585. package/plugins/filters/component/condition.js +2 -0
  586. package/plugins/filters/component/condition.mjs +2 -0
  587. package/plugins/filters/component/value.d.ts +5 -6
  588. package/plugins/filters/component/value.js +53 -34
  589. package/plugins/filters/component/value.mjs +54 -35
  590. package/plugins/filters/condition/date/after.js +2 -1
  591. package/plugins/filters/condition/date/after.mjs +2 -1
  592. package/plugins/filters/condition/date/afterOrEqual.js +2 -1
  593. package/plugins/filters/condition/date/afterOrEqual.mjs +2 -1
  594. package/plugins/filters/condition/date/before.js +2 -1
  595. package/plugins/filters/condition/date/before.mjs +2 -1
  596. package/plugins/filters/condition/date/beforeOrEqual.js +2 -1
  597. package/plugins/filters/condition/date/beforeOrEqual.mjs +2 -1
  598. package/plugins/filters/condition/equal.d.ts +7 -0
  599. package/plugins/filters/condition/equal.js +4 -0
  600. package/plugins/filters/condition/equal.mjs +10 -0
  601. package/plugins/filters/condition/intlDatetime/after.d.mts +1 -0
  602. package/plugins/filters/condition/intlDatetime/after.d.ts +18 -0
  603. package/plugins/filters/condition/intlDatetime/after.js +77 -0
  604. package/plugins/filters/condition/intlDatetime/after.mjs +22 -0
  605. package/plugins/filters/condition/intlDatetime/afterOrEqual.d.mts +1 -0
  606. package/plugins/filters/condition/intlDatetime/afterOrEqual.d.ts +18 -0
  607. package/plugins/filters/condition/intlDatetime/afterOrEqual.js +77 -0
  608. package/plugins/filters/condition/intlDatetime/afterOrEqual.mjs +22 -0
  609. package/plugins/filters/condition/intlDatetime/before.d.mts +1 -0
  610. package/plugins/filters/condition/intlDatetime/before.d.ts +18 -0
  611. package/plugins/filters/condition/intlDatetime/before.js +77 -0
  612. package/plugins/filters/condition/intlDatetime/before.mjs +22 -0
  613. package/plugins/filters/condition/intlDatetime/beforeOrEqual.d.mts +1 -0
  614. package/plugins/filters/condition/intlDatetime/beforeOrEqual.d.ts +18 -0
  615. package/plugins/filters/condition/intlDatetime/beforeOrEqual.js +77 -0
  616. package/plugins/filters/condition/intlDatetime/beforeOrEqual.mjs +22 -0
  617. package/plugins/filters/condition/intlDatetime/between.d.mts +1 -0
  618. package/plugins/filters/condition/intlDatetime/between.d.ts +18 -0
  619. package/plugins/filters/condition/intlDatetime/between.js +78 -0
  620. package/plugins/filters/condition/intlDatetime/between.mjs +23 -0
  621. package/plugins/filters/condition/intlDatetime/today.d.mts +1 -0
  622. package/plugins/filters/condition/intlDatetime/today.d.ts +17 -0
  623. package/plugins/filters/condition/intlDatetime/today.js +76 -0
  624. package/plugins/filters/condition/intlDatetime/today.mjs +20 -0
  625. package/plugins/filters/condition/intlDatetime/tomorrow.d.mts +1 -0
  626. package/plugins/filters/condition/intlDatetime/tomorrow.d.ts +17 -0
  627. package/plugins/filters/condition/intlDatetime/tomorrow.js +77 -0
  628. package/plugins/filters/condition/intlDatetime/tomorrow.mjs +21 -0
  629. package/plugins/filters/condition/intlDatetime/yesterday.d.mts +1 -0
  630. package/plugins/filters/condition/intlDatetime/yesterday.d.ts +17 -0
  631. package/plugins/filters/condition/intlDatetime/yesterday.js +77 -0
  632. package/plugins/filters/condition/intlDatetime/yesterday.mjs +21 -0
  633. package/plugins/filters/conditionCollection.js +4 -7
  634. package/plugins/filters/conditionCollection.mjs +4 -7
  635. package/plugins/filters/conditionUpdateObserver.d.ts +2 -2
  636. package/plugins/filters/conditionUpdateObserver.js +148 -49
  637. package/plugins/filters/conditionUpdateObserver.mjs +148 -49
  638. package/plugins/filters/constants.d.ts +1 -0
  639. package/plugins/filters/constants.js +31 -0
  640. package/plugins/filters/constants.mjs +28 -0
  641. package/plugins/filters/dataFilter.d.ts +4 -12
  642. package/plugins/filters/dataFilter.js +7 -19
  643. package/plugins/filters/dataFilter.mjs +8 -20
  644. package/plugins/filters/filters.d.ts +33 -9
  645. package/plugins/filters/filters.js +91 -31
  646. package/plugins/filters/filters.mjs +92 -32
  647. package/plugins/filters/sortComparators.d.ts +9 -2
  648. package/plugins/filters/sortComparators.js +34 -1
  649. package/plugins/filters/sortComparators.mjs +38 -3
  650. package/plugins/filters/ui/input.d.ts +4 -0
  651. package/plugins/filters/ui/input.js +18 -6
  652. package/plugins/filters/ui/input.mjs +18 -6
  653. package/plugins/filters/ui/multipleSelect.js +27 -4
  654. package/plugins/filters/ui/multipleSelect.mjs +27 -4
  655. package/plugins/filters/ui/select.js +1 -1
  656. package/plugins/filters/ui/select.mjs +1 -1
  657. package/plugins/formulas/engine/register.d.ts +5 -4
  658. package/plugins/formulas/engine/register.js +5 -2
  659. package/plugins/formulas/engine/register.mjs +9 -5
  660. package/plugins/formulas/engine/settings.d.ts +2 -6
  661. package/plugins/formulas/engine/settings.js +29 -4
  662. package/plugins/formulas/engine/settings.mjs +29 -4
  663. package/plugins/formulas/engine/types.d.ts +12 -2
  664. package/plugins/formulas/formulas.d.ts +39 -0
  665. package/plugins/formulas/formulas.js +789 -47
  666. package/plugins/formulas/formulas.mjs +793 -49
  667. package/plugins/formulas/hyperlinkUrl.d.mts +1 -0
  668. package/plugins/formulas/hyperlinkUrl.d.ts +12 -0
  669. package/plugins/formulas/hyperlinkUrl.js +32 -0
  670. package/plugins/formulas/hyperlinkUrl.mjs +32 -0
  671. package/plugins/formulas/indexSyncer/axisSyncer.d.ts +1 -0
  672. package/plugins/formulas/indexSyncer/axisSyncer.js +72 -15
  673. package/plugins/formulas/indexSyncer/axisSyncer.mjs +72 -15
  674. package/plugins/formulas/utils.d.ts +9 -0
  675. package/plugins/formulas/utils.js +21 -0
  676. package/plugins/formulas/utils.mjs +25 -0
  677. package/plugins/hiddenColumns/contextMenuItem/showColumn.js +6 -1
  678. package/plugins/hiddenColumns/contextMenuItem/showColumn.mjs +6 -1
  679. package/plugins/hiddenColumns/hiddenColumns.js +6 -3
  680. package/plugins/hiddenColumns/hiddenColumns.mjs +6 -3
  681. package/plugins/hiddenRows/contextMenuItem/showRow.js +6 -1
  682. package/plugins/hiddenRows/contextMenuItem/showRow.mjs +6 -1
  683. package/plugins/hiddenRows/hiddenRows.js +6 -3
  684. package/plugins/hiddenRows/hiddenRows.mjs +6 -3
  685. package/plugins/index.d.ts +5 -1
  686. package/plugins/index.js +10 -0
  687. package/plugins/index.mjs +5 -1
  688. package/plugins/loading/content.d.ts +5 -3
  689. package/plugins/loading/content.js +3 -2
  690. package/plugins/loading/content.mjs +8 -5
  691. package/plugins/loading/loading.d.ts +5 -2
  692. package/plugins/loading/loading.mjs +5 -2
  693. package/plugins/manualColumnMove/manualColumnMove.d.ts +10 -0
  694. package/plugins/manualColumnMove/manualColumnMove.js +122 -20
  695. package/plugins/manualColumnMove/manualColumnMove.mjs +123 -21
  696. package/plugins/manualColumnResize/manualColumnResize.d.ts +20 -7
  697. package/plugins/manualColumnResize/manualColumnResize.js +33 -13
  698. package/plugins/manualColumnResize/manualColumnResize.mjs +34 -14
  699. package/plugins/manualRowResize/manualRowResize.d.ts +21 -8
  700. package/plugins/manualRowResize/manualRowResize.js +34 -14
  701. package/plugins/manualRowResize/manualRowResize.mjs +35 -15
  702. package/plugins/mergeCells/cellCoords.d.ts +8 -0
  703. package/plugins/mergeCells/cellCoords.js +11 -0
  704. package/plugins/mergeCells/cellCoords.mjs +11 -0
  705. package/plugins/mergeCells/cellsCollection.d.ts +46 -2
  706. package/plugins/mergeCells/cellsCollection.js +189 -68
  707. package/plugins/mergeCells/cellsCollection.mjs +189 -68
  708. package/plugins/mergeCells/focusOrder.d.ts +26 -20
  709. package/plugins/mergeCells/focusOrder.js +358 -177
  710. package/plugins/mergeCells/focusOrder.mjs +363 -172
  711. package/plugins/mergeCells/mergeCells.d.ts +13 -8
  712. package/plugins/mergeCells/mergeCells.js +322 -64
  713. package/plugins/mergeCells/mergeCells.mjs +322 -64
  714. package/plugins/moveCells/helpers.d.mts +1 -0
  715. package/plugins/moveCells/helpers.d.ts +21 -0
  716. package/plugins/moveCells/helpers.js +20 -0
  717. package/plugins/moveCells/helpers.mjs +15 -0
  718. package/plugins/moveCells/index.d.mts +1 -0
  719. package/plugins/moveCells/index.d.ts +1 -0
  720. package/plugins/moveCells/index.js +22 -0
  721. package/plugins/moveCells/index.mjs +1 -0
  722. package/plugins/moveCells/moveCells.d.mts +1 -0
  723. package/plugins/moveCells/moveCells.d.ts +80 -0
  724. package/plugins/moveCells/moveCells.js +602 -0
  725. package/plugins/moveCells/moveCells.mjs +587 -0
  726. package/plugins/multiColumnSorting/multiColumnSorting.d.ts +8 -8
  727. package/plugins/multiColumnSorting/multiColumnSorting.js +11 -16
  728. package/plugins/multiColumnSorting/multiColumnSorting.mjs +11 -16
  729. package/plugins/multiColumnSorting/rootComparator.js +26 -19
  730. package/plugins/multiColumnSorting/rootComparator.mjs +26 -19
  731. package/plugins/multipleSelectionHandles/multipleSelectionHandles.d.ts +19 -4
  732. package/plugins/multipleSelectionHandles/multipleSelectionHandles.js +273 -58
  733. package/plugins/multipleSelectionHandles/multipleSelectionHandles.mjs +273 -58
  734. package/plugins/nestedHeaders/nestedHeaders.d.ts +10 -1
  735. package/plugins/nestedHeaders/nestedHeaders.js +222 -23
  736. package/plugins/nestedHeaders/nestedHeaders.mjs +222 -23
  737. package/plugins/nestedHeaders/stateManager/columnArrangement.d.mts +1 -0
  738. package/plugins/nestedHeaders/stateManager/columnArrangement.d.ts +37 -0
  739. package/plugins/nestedHeaders/stateManager/columnArrangement.js +35 -0
  740. package/plugins/nestedHeaders/stateManager/columnArrangement.mjs +30 -0
  741. package/plugins/nestedHeaders/stateManager/deriveSettings.d.mts +1 -0
  742. package/plugins/nestedHeaders/stateManager/deriveSettings.d.ts +57 -0
  743. package/plugins/nestedHeaders/stateManager/deriveSettings.js +115 -0
  744. package/plugins/nestedHeaders/stateManager/deriveSettings.mjs +135 -0
  745. package/plugins/nestedHeaders/stateManager/headersTree.d.ts +14 -1
  746. package/plugins/nestedHeaders/stateManager/index.d.ts +76 -13
  747. package/plugins/nestedHeaders/stateManager/index.js +381 -38
  748. package/plugins/nestedHeaders/stateManager/index.mjs +382 -39
  749. package/plugins/nestedHeaders/stateManager/matrixGenerator.js +3 -2
  750. package/plugins/nestedHeaders/stateManager/matrixGenerator.mjs +3 -2
  751. package/plugins/nestedHeaders/stateManager/settingsNormalizer.js +5 -1
  752. package/plugins/nestedHeaders/stateManager/settingsNormalizer.mjs +5 -1
  753. package/plugins/nestedHeaders/stateManager/sourceSettings.d.ts +23 -6
  754. package/plugins/nestedHeaders/stateManager/sourceSettings.js +20 -4
  755. package/plugins/nestedHeaders/stateManager/sourceSettings.mjs +20 -4
  756. package/plugins/nestedHeaders/stateManager/utils.d.ts +17 -1
  757. package/plugins/nestedHeaders/stateManager/utils.js +6 -1
  758. package/plugins/nestedHeaders/stateManager/utils.mjs +6 -1
  759. package/plugins/nestedHeaders/utils/ghostTable.js +21 -8
  760. package/plugins/nestedHeaders/utils/ghostTable.mjs +21 -8
  761. package/plugins/nestedRows/data/dataManager.d.ts +4 -1
  762. package/plugins/nestedRows/data/dataManager.js +10 -4
  763. package/plugins/nestedRows/data/dataManager.mjs +10 -4
  764. package/plugins/nestedRows/nestedRows.d.ts +127 -1
  765. package/plugins/nestedRows/nestedRows.js +330 -8
  766. package/plugins/nestedRows/nestedRows.mjs +330 -8
  767. package/plugins/nestedRows/ui/collapsing.d.ts +58 -0
  768. package/plugins/nestedRows/ui/collapsing.js +236 -40
  769. package/plugins/nestedRows/ui/collapsing.mjs +236 -40
  770. package/plugins/notification/notification.d.ts +2 -1
  771. package/plugins/notification/notification.js +6 -3
  772. package/plugins/notification/notification.mjs +6 -3
  773. package/plugins/notification/ui.d.ts +8 -5
  774. package/plugins/notification/ui.js +18 -6
  775. package/plugins/notification/ui.mjs +18 -6
  776. package/plugins/pagination/pagination.js +2 -2
  777. package/plugins/pagination/pagination.mjs +2 -2
  778. package/plugins/search/search.js +23 -2
  779. package/plugins/search/search.mjs +23 -2
  780. package/plugins/selectionHandles/helpers.d.mts +1 -0
  781. package/plugins/selectionHandles/helpers.d.ts +17 -0
  782. package/plugins/selectionHandles/helpers.js +16 -0
  783. package/plugins/selectionHandles/helpers.mjs +11 -0
  784. package/plugins/selectionHandles/index.d.mts +1 -0
  785. package/plugins/selectionHandles/index.d.ts +1 -0
  786. package/plugins/selectionHandles/index.js +22 -0
  787. package/plugins/selectionHandles/index.mjs +1 -0
  788. package/plugins/selectionHandles/selectionHandles.d.mts +1 -0
  789. package/plugins/selectionHandles/selectionHandles.d.ts +52 -0
  790. package/plugins/selectionHandles/selectionHandles.js +342 -0
  791. package/plugins/selectionHandles/selectionHandles.mjs +323 -0
  792. package/plugins/trimRows/trimRows.d.ts +1 -1
  793. package/plugins/trimRows/trimRows.js +6 -2
  794. package/plugins/trimRows/trimRows.mjs +6 -2
  795. package/plugins/types.d.ts +4 -0
  796. package/plugins/undoRedo/actions/cellAlignment.js +1 -1
  797. package/plugins/undoRedo/actions/cellAlignment.mjs +1 -1
  798. package/plugins/undoRedo/actions/createColumn.js +4 -1
  799. package/plugins/undoRedo/actions/createColumn.mjs +4 -1
  800. package/plugins/undoRedo/actions/createRow.js +4 -1
  801. package/plugins/undoRedo/actions/createRow.mjs +4 -1
  802. package/plugins/undoRedo/actions/fixedCounts.d.mts +1 -0
  803. package/plugins/undoRedo/actions/fixedCounts.d.ts +36 -0
  804. package/plugins/undoRedo/actions/fixedCounts.js +63 -0
  805. package/plugins/undoRedo/actions/fixedCounts.mjs +62 -0
  806. package/plugins/undoRedo/actions/index.js +2 -0
  807. package/plugins/undoRedo/actions/index.mjs +2 -0
  808. package/plugins/undoRedo/actions/moveCells.d.mts +1 -0
  809. package/plugins/undoRedo/actions/moveCells.d.ts +104 -0
  810. package/plugins/undoRedo/actions/moveCells.js +225 -0
  811. package/plugins/undoRedo/actions/moveCells.mjs +227 -0
  812. package/plugins/undoRedo/actions/removeColumn.d.ts +18 -2
  813. package/plugins/undoRedo/actions/removeColumn.js +11 -4
  814. package/plugins/undoRedo/actions/removeColumn.mjs +12 -5
  815. package/plugins/undoRedo/actions/removeRow.js +2 -57
  816. package/plugins/undoRedo/actions/removeRow.mjs +2 -57
  817. package/plugins/undoRedo/undoRedo.d.ts +26 -0
  818. package/plugins/undoRedo/undoRedo.js +36 -2
  819. package/plugins/undoRedo/undoRedo.mjs +36 -2
  820. package/plugins/undoRedo/utils.d.ts +29 -0
  821. package/plugins/undoRedo/utils.js +55 -3
  822. package/plugins/undoRedo/utils.mjs +59 -0
  823. package/renderSizeProbe.d.mts +1 -0
  824. package/renderSizeProbe.d.ts +60 -0
  825. package/renderSizeProbe.js +163 -0
  826. package/renderSizeProbe.mjs +176 -0
  827. package/renderers/checkboxRenderer/checkboxRenderer.js +9 -4
  828. package/renderers/checkboxRenderer/checkboxRenderer.mjs +9 -4
  829. package/renderers/index.d.ts +3 -2
  830. package/renderers/index.js +8 -0
  831. package/renderers/index.mjs +3 -1
  832. package/renderers/intlDatetimeRenderer/index.d.mts +1 -0
  833. package/renderers/intlDatetimeRenderer/index.d.ts +1 -0
  834. package/renderers/intlDatetimeRenderer/index.js +22 -0
  835. package/renderers/intlDatetimeRenderer/index.mjs +1 -0
  836. package/renderers/intlDatetimeRenderer/intlDatetimeRenderer.d.mts +1 -0
  837. package/renderers/intlDatetimeRenderer/intlDatetimeRenderer.d.ts +26 -0
  838. package/renderers/intlDatetimeRenderer/intlDatetimeRenderer.js +82 -0
  839. package/renderers/intlDatetimeRenderer/intlDatetimeRenderer.mjs +67 -0
  840. package/renderers/multiSelectRenderer/multiSelectRenderer.js +2 -3
  841. package/renderers/multiSelectRenderer/multiSelectRenderer.mjs +2 -3
  842. package/renderers/multiSelectRenderer/utils/utils.d.ts +1 -1
  843. package/renderers/multiSelectRenderer/utils/utils.js +11 -8
  844. package/renderers/multiSelectRenderer/utils/utils.mjs +11 -8
  845. package/renderers/passwordRenderer/passwordRenderer.js +6 -1
  846. package/renderers/passwordRenderer/passwordRenderer.mjs +6 -1
  847. package/renderers/renderCell.d.mts +1 -0
  848. package/renderers/renderCell.d.ts +37 -0
  849. package/renderers/renderCell.js +43 -0
  850. package/renderers/renderCell.mjs +48 -0
  851. package/selection/highlight/types/areaLayered.d.ts +3 -1
  852. package/selection/highlight/types/areaLayered.js +4 -2
  853. package/selection/highlight/types/areaLayered.mjs +6 -2
  854. package/selection/highlight/types/focus.d.ts +3 -1
  855. package/selection/highlight/types/focus.js +3 -2
  856. package/selection/highlight/types/focus.mjs +5 -2
  857. package/selection/mouseEventHandler.js +29 -26
  858. package/selection/mouseEventHandler.mjs +29 -26
  859. package/selection/moveCells.d.mts +1 -0
  860. package/selection/moveCells.d.ts +15 -0
  861. package/selection/moveCells.js +13 -0
  862. package/selection/moveCells.mjs +9 -0
  863. package/selection/selection.d.ts +56 -2
  864. package/selection/selection.js +149 -5
  865. package/selection/selection.mjs +149 -5
  866. package/selection/types.d.ts +3 -0
  867. package/settings.d.ts +24 -3
  868. package/shortcuts/context.d.ts +4 -0
  869. package/shortcuts/context.js +16 -8
  870. package/shortcuts/context.mjs +20 -8
  871. package/shortcuts/contexts/commands/populateSelectedCellsData.js +1 -1
  872. package/shortcuts/contexts/commands/populateSelectedCellsData.mjs +1 -1
  873. package/styles/handsontable.css +504 -158
  874. package/styles/handsontable.min.css +4 -4
  875. package/styles/handsontableStyles.d.mts +2 -0
  876. package/styles/handsontableStyles.d.ts +2 -0
  877. package/styles/handsontableStyles.js +1 -1
  878. package/styles/handsontableStyles.mjs +1 -1
  879. package/styles/ht-icons-horizon.css +1 -10
  880. package/styles/ht-icons-horizon.min.css +4 -4
  881. package/styles/ht-icons-main.css +1 -10
  882. package/styles/ht-icons-main.min.css +4 -4
  883. package/styles/ht-theme-classic-no-icons.css +6 -0
  884. package/styles/ht-theme-classic-no-icons.min.css +4 -4
  885. package/styles/ht-theme-classic.css +7 -10
  886. package/styles/ht-theme-classic.min.css +4 -4
  887. package/styles/ht-theme-horizon-no-icons.css +6 -0
  888. package/styles/ht-theme-horizon-no-icons.min.css +4 -4
  889. package/styles/ht-theme-horizon.css +7 -10
  890. package/styles/ht-theme-horizon.min.css +4 -4
  891. package/styles/ht-theme-main-no-icons.css +6 -0
  892. package/styles/ht-theme-main-no-icons.min.css +4 -4
  893. package/styles/ht-theme-main.css +7 -10
  894. package/styles/ht-theme-main.min.css +4 -4
  895. package/tableView.d.ts +17 -4
  896. package/tableView.js +208 -42
  897. package/tableView.mjs +209 -43
  898. package/themes/engine/index.d.ts +2 -1
  899. package/themes/engine/index.js +3 -0
  900. package/themes/engine/index.mjs +1 -1
  901. package/themes/engine/manager.d.ts +75 -3
  902. package/themes/engine/manager.js +242 -6
  903. package/themes/engine/manager.mjs +249 -6
  904. package/themes/engine/utils/cssVariables.d.ts +18 -1
  905. package/themes/engine/utils/cssVariables.js +27 -11
  906. package/themes/engine/utils/cssVariables.mjs +28 -11
  907. package/themes/engine/utils/validation.js +7 -0
  908. package/themes/engine/utils/validation.mjs +7 -0
  909. package/themes/static/variables/helpers/iconsMap.js +1 -6
  910. package/themes/static/variables/helpers/iconsMap.mjs +1 -6
  911. package/themes/static/variables/tokens/classic.js +6 -0
  912. package/themes/static/variables/tokens/classic.mjs +6 -0
  913. package/themes/static/variables/tokens/horizon.js +6 -0
  914. package/themes/static/variables/tokens/horizon.mjs +6 -0
  915. package/themes/static/variables/tokens/main.js +6 -0
  916. package/themes/static/variables/tokens/main.mjs +6 -0
  917. package/themes/types.d.ts +1 -1
  918. package/translations/indexMapper.d.ts +14 -9
  919. package/translations/indexMapper.js +104 -43
  920. package/translations/indexMapper.mjs +104 -43
  921. package/translations/mapCollections/aggregatedCollection.js +20 -35
  922. package/translations/mapCollections/aggregatedCollection.mjs +20 -35
  923. package/translations/mapCollections/mapCollection.d.ts +10 -4
  924. package/translations/mapCollections/mapCollection.js +2 -2
  925. package/translations/mapCollections/mapCollection.mjs +2 -2
  926. package/translations/maps/booleanMap.d.mts +1 -0
  927. package/translations/maps/booleanMap.d.ts +86 -0
  928. package/translations/maps/booleanMap.js +300 -0
  929. package/translations/maps/booleanMap.mjs +308 -0
  930. package/translations/maps/hidingMap.d.ts +5 -2
  931. package/translations/maps/hidingMap.js +8 -3
  932. package/translations/maps/hidingMap.mjs +8 -3
  933. package/translations/maps/index.d.ts +5 -2
  934. package/translations/maps/index.js +7 -3
  935. package/translations/maps/index.mjs +10 -2
  936. package/translations/maps/indexMap.d.ts +26 -2
  937. package/translations/maps/indexMap.js +78 -6
  938. package/translations/maps/indexMap.mjs +78 -6
  939. package/translations/maps/indexesSequence.d.ts +53 -2
  940. package/translations/maps/indexesSequence.js +225 -3
  941. package/translations/maps/indexesSequence.mjs +233 -3
  942. package/translations/maps/trimmingMap.d.ts +5 -2
  943. package/translations/maps/trimmingMap.js +8 -3
  944. package/translations/maps/trimmingMap.mjs +8 -3
  945. package/translations/maps/utils/actionsOnIndexes.js +20 -1
  946. package/translations/maps/utils/actionsOnIndexes.mjs +20 -1
  947. package/translations/maps/utils/indexesSequence.js +12 -3
  948. package/translations/maps/utils/indexesSequence.mjs +12 -3
  949. package/translations/maps/utils/physicallyIndexed.js +12 -1
  950. package/translations/maps/utils/physicallyIndexed.mjs +12 -1
  951. package/utils/entitlementLicenseKey/classify.d.mts +1 -0
  952. package/utils/entitlementLicenseKey/classify.d.ts +34 -0
  953. package/utils/entitlementLicenseKey/classify.js +97 -0
  954. package/utils/entitlementLicenseKey/classify.mjs +96 -0
  955. package/utils/entitlementLicenseKey/constants.d.mts +1 -0
  956. package/utils/entitlementLicenseKey/constants.d.ts +69 -0
  957. package/utils/entitlementLicenseKey/constants.js +54 -0
  958. package/utils/entitlementLicenseKey/constants.mjs +66 -0
  959. package/utils/entitlementLicenseKey/detectFormat.d.mts +1 -0
  960. package/utils/entitlementLicenseKey/detectFormat.d.ts +23 -0
  961. package/utils/entitlementLicenseKey/detectFormat.js +60 -0
  962. package/utils/entitlementLicenseKey/detectFormat.mjs +60 -0
  963. package/utils/entitlementLicenseKey/encoding.d.mts +1 -0
  964. package/utils/entitlementLicenseKey/encoding.d.ts +58 -0
  965. package/utils/entitlementLicenseKey/encoding.js +161 -0
  966. package/utils/entitlementLicenseKey/encoding.mjs +172 -0
  967. package/utils/entitlementLicenseKey/extractKeyData.d.mts +1 -0
  968. package/utils/entitlementLicenseKey/extractKeyData.d.ts +47 -0
  969. package/utils/entitlementLicenseKey/extractKeyData.js +213 -0
  970. package/utils/entitlementLicenseKey/extractKeyData.mjs +232 -0
  971. package/utils/entitlementLicenseKey/grants.d.mts +1 -0
  972. package/utils/entitlementLicenseKey/grants.d.ts +54 -0
  973. package/utils/entitlementLicenseKey/grants.js +68 -0
  974. package/utils/entitlementLicenseKey/grants.mjs +84 -0
  975. package/utils/entitlementLicenseKey/index.d.mts +1 -0
  976. package/utils/entitlementLicenseKey/index.d.ts +8 -0
  977. package/utils/entitlementLicenseKey/index.js +53 -0
  978. package/utils/entitlementLicenseKey/index.mjs +6 -0
  979. package/utils/entitlementLicenseKey/sha512.d.mts +1 -0
  980. package/utils/entitlementLicenseKey/sha512.d.ts +11 -0
  981. package/utils/entitlementLicenseKey/sha512.js +328 -0
  982. package/utils/entitlementLicenseKey/sha512.mjs +327 -0
  983. package/utils/entitlementLicenseKey/types.d.mts +1 -0
  984. package/utils/entitlementLicenseKey/types.d.ts +84 -0
  985. package/utils/entitlementLicenseKey/types.js +8 -0
  986. package/utils/entitlementLicenseKey/types.mjs +10 -0
  987. package/utils/ghostTable.d.ts +1 -0
  988. package/utils/ghostTable.js +60 -11
  989. package/utils/ghostTable.mjs +60 -11
  990. package/utils/licenseBranding/badge.d.mts +1 -0
  991. package/utils/licenseBranding/badge.d.ts +21 -0
  992. package/utils/licenseBranding/badge.js +237 -0
  993. package/utils/licenseBranding/badge.mjs +244 -0
  994. package/utils/licenseBranding/content.d.mts +1 -0
  995. package/utils/licenseBranding/content.d.ts +54 -0
  996. package/utils/licenseBranding/content.js +93 -0
  997. package/utils/licenseBranding/content.mjs +79 -0
  998. package/utils/licenseBranding/index.d.mts +1 -0
  999. package/utils/licenseBranding/index.d.ts +14 -0
  1000. package/utils/licenseBranding/index.js +55 -0
  1001. package/utils/licenseBranding/index.mjs +56 -0
  1002. package/utils/licenseBranding/lockScreen.d.mts +1 -0
  1003. package/utils/licenseBranding/lockScreen.d.ts +23 -0
  1004. package/utils/licenseBranding/lockScreen.js +150 -0
  1005. package/utils/licenseBranding/lockScreen.mjs +159 -0
  1006. package/utils/licenseNotification.d.ts +19 -0
  1007. package/utils/licenseNotification.js +56 -29
  1008. package/utils/licenseNotification.mjs +61 -29
  1009. package/utils/movableMeta.d.mts +1 -0
  1010. package/utils/movableMeta.d.ts +40 -0
  1011. package/utils/movableMeta.js +47 -0
  1012. package/utils/movableMeta.mjs +46 -0
  1013. package/utils/parseTable.js +16 -7
  1014. package/utils/parseTable.mjs +16 -7
  1015. package/utils/samplesGenerator.d.ts +41 -14
  1016. package/utils/samplesGenerator.js +114 -42
  1017. package/utils/samplesGenerator.mjs +114 -42
  1018. package/utils/sanitizer.d.mts +1 -0
  1019. package/utils/sanitizer.d.ts +47 -0
  1020. package/utils/sanitizer.js +43 -0
  1021. package/utils/sanitizer.mjs +55 -0
  1022. package/utils/stylesHandler.d.ts +13 -0
  1023. package/utils/stylesHandler.js +55 -2
  1024. package/utils/stylesHandler.mjs +55 -2
  1025. package/validators/autocompleteValidator/autocompleteValidator.js +3 -0
  1026. package/validators/autocompleteValidator/autocompleteValidator.mjs +3 -0
  1027. package/validators/index.d.ts +3 -2
  1028. package/validators/index.js +8 -0
  1029. package/validators/index.mjs +3 -1
  1030. package/validators/intlDatetimeValidator/index.d.mts +1 -0
  1031. package/validators/intlDatetimeValidator/index.d.ts +1 -0
  1032. package/validators/intlDatetimeValidator/index.js +25 -0
  1033. package/validators/intlDatetimeValidator/index.mjs +1 -0
  1034. package/validators/intlDatetimeValidator/intlDatetimeValidator.d.mts +1 -0
  1035. package/validators/intlDatetimeValidator/intlDatetimeValidator.d.ts +28 -0
  1036. package/validators/intlDatetimeValidator/intlDatetimeValidator.js +49 -0
  1037. package/validators/intlDatetimeValidator/intlDatetimeValidator.mjs +37 -0
  1038. package/3rdparty/walkontable/src/overlay/bottom.d.mts +0 -1
  1039. package/3rdparty/walkontable/src/overlay/bottomInlineStartCorner.d.mts +0 -1
  1040. package/3rdparty/walkontable/src/overlay/inlineStart.d.mts +0 -1
  1041. package/3rdparty/walkontable/src/overlay/top.d.mts +0 -1
  1042. package/3rdparty/walkontable/src/overlay/topInlineStartCorner.d.mts +0 -1
  1043. package/3rdparty/walkontable/src/overlays.d.ts +0 -329
  1044. package/3rdparty/walkontable/src/overlays.js +0 -870
  1045. package/3rdparty/walkontable/src/overlays.mjs +0 -860
  1046. package/3rdparty/walkontable/src/renderer/table.d.mts +0 -1
  1047. package/3rdparty/walkontable/src/renderer/table.js +0 -229
  1048. package/3rdparty/walkontable/src/settings.d.mts +0 -2
  1049. package/3rdparty/walkontable/src/settings.js +0 -196
  1050. package/3rdparty/walkontable/src/settings.mjs +0 -263
  1051. package/3rdparty/walkontable/src/table/bottom.d.mts +0 -2
  1052. package/3rdparty/walkontable/src/table/bottom.d.ts +0 -19
  1053. package/3rdparty/walkontable/src/table/bottom.js +0 -38
  1054. package/3rdparty/walkontable/src/table/bottom.mjs +0 -23
  1055. package/3rdparty/walkontable/src/table/bottomInlineStartCorner.d.mts +0 -2
  1056. package/3rdparty/walkontable/src/table/bottomInlineStartCorner.d.ts +0 -20
  1057. package/3rdparty/walkontable/src/table/bottomInlineStartCorner.mjs +0 -24
  1058. package/3rdparty/walkontable/src/table/inlineStart.d.mts +0 -2
  1059. package/3rdparty/walkontable/src/table/inlineStart.d.ts +0 -16
  1060. package/3rdparty/walkontable/src/table/inlineStart.js +0 -35
  1061. package/3rdparty/walkontable/src/table/inlineStart.mjs +0 -20
  1062. package/3rdparty/walkontable/src/table/master.d.mts +0 -2
  1063. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.d.mts +0 -2
  1064. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.d.ts +0 -75
  1065. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +0 -122
  1066. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +0 -112
  1067. package/3rdparty/walkontable/src/table/mixin/calculatedRows.d.mts +0 -2
  1068. package/3rdparty/walkontable/src/table/mixin/calculatedRows.d.ts +0 -75
  1069. package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +0 -122
  1070. package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +0 -112
  1071. package/3rdparty/walkontable/src/table/top.d.mts +0 -2
  1072. package/3rdparty/walkontable/src/table/top.d.ts +0 -19
  1073. package/3rdparty/walkontable/src/table/top.js +0 -38
  1074. package/3rdparty/walkontable/src/table/top.mjs +0 -23
  1075. package/3rdparty/walkontable/src/table/topInlineStartCorner.d.mts +0 -2
  1076. package/3rdparty/walkontable/src/table/topInlineStartCorner.d.ts +0 -20
  1077. package/3rdparty/walkontable/src/table/topInlineStartCorner.mjs +0 -24
  1078. package/3rdparty/walkontable/src/table.d.mts +0 -2
  1079. package/3rdparty/walkontable/src/table.d.ts +0 -741
  1080. package/3rdparty/walkontable/src/table.js +0 -1120
  1081. package/3rdparty/walkontable/src/table.mjs +0 -1105
  1082. package/3rdparty/walkontable/src/utils/cellCoords.d.mts +0 -1
  1083. package/3rdparty/walkontable/src/utils/cellCoords.js +0 -54
  1084. package/3rdparty/walkontable/src/utils/cellCoords.mjs +0 -54
  1085. package/3rdparty/walkontable/src/utils/column.d.mts +0 -2
  1086. package/3rdparty/walkontable/src/utils/column.js +0 -75
  1087. package/3rdparty/walkontable/src/utils/column.mjs +0 -70
  1088. package/3rdparty/walkontable/src/utils/positionCache.d.mts +0 -1
  1089. package/3rdparty/walkontable/src/utils/positionCache.d.ts +0 -91
  1090. package/3rdparty/walkontable/src/utils/positionCache.js +0 -193
  1091. package/3rdparty/walkontable/src/utils/positionCache.mjs +0 -194
  1092. package/3rdparty/walkontable/src/utils/row.d.mts +0 -2
  1093. package/3rdparty/walkontable/src/utils/row.js +0 -46
  1094. package/3rdparty/walkontable/src/utils/row.mjs +0 -41
  1095. package/3rdparty/walkontable/src/viewport.d.ts +0 -254
  1096. package/3rdparty/walkontable/src/viewport.js +0 -533
  1097. package/3rdparty/walkontable/src/viewport.mjs +0 -523
  1098. /package/3rdparty/walkontable/src/{renderer → axisSizing/positionCache}/index.d.mts +0 -0
  1099. /package/3rdparty/walkontable/src/{overlays.d.mts → overlay/overlays.d.mts} +0 -0
  1100. /package/3rdparty/walkontable/src/overlay/{_base.d.mts → regions/_base.d.mts} +0 -0
  1101. /package/3rdparty/walkontable/src/{stickyScrollStrategy.d.mts → overlay/strategies/stickyScrollStrategy.d.mts} +0 -0
  1102. /package/3rdparty/walkontable/src/{renderer → render}/_base.d.mts +0 -0
  1103. /package/3rdparty/walkontable/src/{renderer → render}/_base.js +0 -0
  1104. /package/3rdparty/walkontable/src/{renderer → render}/_base.mjs +0 -0
  1105. /package/3rdparty/walkontable/src/{renderer → render}/cells.d.mts +0 -0
  1106. /package/3rdparty/walkontable/src/{renderer → render}/cells.d.ts +0 -0
  1107. /package/3rdparty/walkontable/src/{renderer → render}/colGroup.d.mts +0 -0
  1108. /package/3rdparty/walkontable/src/{renderer → render}/colGroup.d.ts +0 -0
  1109. /package/3rdparty/walkontable/src/{renderer → render}/colGroup.js +0 -0
  1110. /package/3rdparty/walkontable/src/{renderer → render}/colGroup.mjs +0 -0
  1111. /package/3rdparty/walkontable/src/{renderer → render}/columnHeaderRows.d.mts +0 -0
  1112. /package/3rdparty/walkontable/src/{renderer → render}/columnHeaderRows.d.ts +0 -0
  1113. /package/3rdparty/walkontable/src/{renderer → render}/columnHeaderRows.js +0 -0
  1114. /package/3rdparty/walkontable/src/{renderer → render}/columnHeaderRows.mjs +0 -0
  1115. /package/3rdparty/walkontable/src/{renderer → render}/columnHeaders.d.mts +0 -0
  1116. /package/3rdparty/walkontable/src/{renderer → render}/rowHeaders.d.mts +0 -0
  1117. /package/3rdparty/walkontable/src/{renderer → render}/rowHeaders.d.ts +0 -0
  1118. /package/3rdparty/walkontable/src/{renderer → render}/rowHeaders.js +0 -0
  1119. /package/3rdparty/walkontable/src/{renderer → render}/rowHeaders.mjs +0 -0
  1120. /package/3rdparty/walkontable/src/{renderer → render}/rows.d.mts +0 -0
  1121. /package/3rdparty/walkontable/src/{renderer → render}/rows.d.ts +0 -0
  1122. /package/3rdparty/walkontable/src/{scroll.d.mts → scroll/scroll.d.mts} +0 -0
  1123. /package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyColumnsStart.d.mts +0 -0
  1124. /package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyRowsBottom.d.mts +0 -0
  1125. /package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyRowsBottom.js +0 -0
  1126. /package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyRowsBottom.mjs +0 -0
  1127. /package/3rdparty/walkontable/src/table/{mixin → rangeQuery}/stickyRowsTop.d.mts +0 -0
  1128. /package/3rdparty/walkontable/src/{viewport.d.mts → viewport/viewport.d.mts} +0 -0
@@ -35,6 +35,41 @@ function _check_private_redeclaration(obj, privateCollection) {
35
35
  throw new TypeError("Cannot initialize the same private elements twice on an object");
36
36
  }
37
37
  }
38
+ function _class_apply_descriptor_get(receiver, descriptor) {
39
+ if (descriptor.get) {
40
+ return descriptor.get.call(receiver);
41
+ }
42
+ return descriptor.value;
43
+ }
44
+ function _class_apply_descriptor_set(receiver, descriptor, value) {
45
+ if (descriptor.set) {
46
+ descriptor.set.call(receiver, value);
47
+ } else {
48
+ if (!descriptor.writable) {
49
+ throw new TypeError("attempted to set read only private field");
50
+ }
51
+ descriptor.value = value;
52
+ }
53
+ }
54
+ function _class_extract_field_descriptor(receiver, privateMap, action) {
55
+ if (!privateMap.has(receiver)) {
56
+ throw new TypeError("attempted to " + action + " private field on non-instance");
57
+ }
58
+ return privateMap.get(receiver);
59
+ }
60
+ function _class_private_field_get(receiver, privateMap) {
61
+ var descriptor = _class_extract_field_descriptor(receiver, privateMap, "get");
62
+ return _class_apply_descriptor_get(receiver, descriptor);
63
+ }
64
+ function _class_private_field_init(obj, privateMap, value) {
65
+ _check_private_redeclaration(obj, privateMap);
66
+ privateMap.set(obj, value);
67
+ }
68
+ function _class_private_field_set(receiver, privateMap, value) {
69
+ var descriptor = _class_extract_field_descriptor(receiver, privateMap, "set");
70
+ _class_apply_descriptor_set(receiver, descriptor, value);
71
+ return value;
72
+ }
38
73
  function _class_private_method_get(receiver, privateSet, fn) {
39
74
  if (!privateSet.has(receiver)) {
40
75
  throw new TypeError("attempted to get private field on non-instance");
@@ -112,31 +147,373 @@ const PLUGIN_PRIORITY = 90;
112
147
  */ function isCellCoord(value) {
113
148
  return isRecord(value) && typeof value.row === 'number' && typeof value.col === 'number';
114
149
  }
115
- /**
116
- * Type guard returning true when the string is a valid border side name.
117
- *
118
- * @param {string} value The string to test.
119
- * @returns {boolean}
120
- */ function isBorderSide(value) {
121
- return value === 'top' || value === 'bottom' || value === 'start' || value === 'end';
122
- }
123
150
  const SUPPORTED_STYLES = [
124
151
  'dashed',
125
152
  'dotted',
126
153
  'solid'
127
154
  ];
155
+ /**
156
+ * Default number of border configuration entries applied per background batch when
157
+ * `customBordersProgressive` is enabled. Sized so a batch stays within a frame budget.
158
+ */ const DEFAULT_PROGRESSIVE_CHUNK_SIZE = 5000;
128
159
  var /**
160
+ * Positions of the saved borders in the `savedBorders` array, keyed by the border id.
161
+ * Lets bulk border operations locate an existing border in O(1) instead of scanning the array.
162
+ */ _savedBordersIndex = /*#__PURE__*/ new WeakMap(), /**
163
+ * Cache of the plugin-created custom selections keyed by the border id. Under viewport
164
+ * virtualization this holds only the selections currently in the rendered range.
165
+ */ _customSelectionsCache = /*#__PURE__*/ new WeakMap(), /**
166
+ * Visual-row index of the saved borders: maps a visual row to the borders on that row. Lets the
167
+ * viewport sync collect only the borders inside the rendered range in O(viewport) instead of
168
+ * scanning every saved border each render. Rebuilt lazily from `savedBorders` when marked stale.
169
+ */ _bordersByRow = /*#__PURE__*/ new WeakMap(), /**
170
+ * When `true`, `#bordersByRow` is stale and rebuilt on the next viewport sync. Set whenever the
171
+ * `savedBorders` model changes; keeps the per-frame sync cost bounded by the viewport, not the
172
+ * total border count.
173
+ */ _bordersByRowDirty = /*#__PURE__*/ new WeakMap(), /**
174
+ * During a `createCustomBorders` pass, holds the `row,col` keys already written in this pass, so a
175
+ * cell touched for the first time can skip the existing-meta merge read (there is nothing to merge
176
+ * on a fresh cell - the pass starts after the previous borders' meta is cleared). Only cells hit by
177
+ * an overlapping range are re-read. Outside a config pass this is `null`, so every other code path
178
+ * (e.g. `setBorders`) keeps reading existing meta and merges as before. Cuts a full O(N)
179
+ * `getCellMeta` pass out of applying a large, non-overlapping `customBorders` config.
180
+ *
181
+ * A progressive load keeps the Set alive across its batches (see {@link #inConfigPass} for why
182
+ * that does not leak the skip into the gaps between them).
183
+ */ _configPassTouched = /*#__PURE__*/ new WeakMap(), /**
184
+ * `true` only while `createCustomBorders` is running. A progressive load must keep
185
+ * {@link #configPassTouched} alive across all of its batches, so that ranges overlapping across a
186
+ * batch boundary still merge - but the Set alone cannot gate the first-touch skip, because the
187
+ * batches are separated by timeouts during which application code can call the public API. Without
188
+ * this flag a `setBorders` call landing in such a gap would treat the cell as a first touch, skip
189
+ * the existing-meta read, and silently drop the sides already on that cell.
190
+ */ _inConfigPass = /*#__PURE__*/ new WeakMap(), /**
191
+ * Guards the plugin's own `borders` cell-meta writes so the `afterSetCellMeta` /
192
+ * `afterRemoveCellMeta` listeners react only to external writes (UndoRedo restoring meta, user
193
+ * code calling `setCellMeta` directly). Without it every internal write would re-enter the model
194
+ * upsert it originated from.
195
+ */ _isInternalMetaWrite = /*#__PURE__*/ new WeakMap(), /**
196
+ * Whether a render following external `borders` cell-meta writes is already scheduled. External
197
+ * writes arrive one cell at a time (UndoRedo restores the meta of an undone row/column removal
198
+ * cell by cell), so the render is coalesced into a single pass for the whole synchronous batch
199
+ * instead of one full render per cell.
200
+ */ _isMetaSyncRenderScheduled = /*#__PURE__*/ new WeakMap(), /**
201
+ * Pending border configuration entries for a progressive (background-batched) application, or
202
+ * `null` when no progressive load is in flight. Set when `customBordersProgressive` is enabled.
203
+ */ _progressiveQueue = /*#__PURE__*/ new WeakMap(), /**
204
+ * Index of the next entry in `#progressiveQueue` to apply.
205
+ */ _progressiveIndex = /*#__PURE__*/ new WeakMap(), /**
206
+ * Number of entries applied per progressive batch.
207
+ */ _progressiveChunkSize = /*#__PURE__*/ new WeakMap(), /**
208
+ * Monotonic generation token for the active progressive load. Bumped on start, finish, flush, and
209
+ * cancel; a scheduled batch aborts if its captured token no longer matches, so stale timers become
210
+ * no-ops without needing to track and clear individual timeout handles.
211
+ */ _progressiveToken = /*#__PURE__*/ new WeakMap(), /**
212
+ * Physical row index of each saved border captured before a row move, parallel to `savedBorders`.
213
+ * Used to re-derive each border's visual row after the move reorders the visual index mapping.
214
+ * `null` when no move is in progress.
215
+ */ _rowMoveSnapshot = /*#__PURE__*/ new WeakMap(), /**
216
+ * Physical column index of each saved border captured before a column move, parallel to
217
+ * `savedBorders`. Used to re-derive each border's visual column after the move reorders the
218
+ * visual index mapping. `null` when no move is in progress.
219
+ */ _columnMoveSnapshot = /*#__PURE__*/ new WeakMap(), /**
220
+ * Reads the cell's existing borders for a merge, unless this is the first time the cell is touched
221
+ * within a `createCustomBorders` pass - in which case the cell is known to be border-free (the pass
222
+ * runs after the previous borders' meta is cleared), so the read is skipped and `undefined` is
223
+ * returned. Outside a config pass (`#configPassTouched` is `null`) it always reads, preserving the
224
+ * merge behavior of `setBorders` and other callers. Skipping the first-touch read removes a full
225
+ * O(N) `getCellMeta` pass from applying a large, non-overlapping config.
226
+ *
227
+ * @param {number} row Visual row index.
228
+ * @param {number} column Visual column index.
229
+ * @returns {unknown} The existing `borders` meta value, or `undefined` when the read is skipped.
230
+ */ _readExistingBordersForMerge = /*#__PURE__*/ new WeakSet(), /**
231
+ * Writes or removes the plugin-owned `borders` cell meta with the re-entrancy guard raised, so
232
+ * the external-write listeners ignore it. Pass `null` to remove the meta.
233
+ *
234
+ * Both `setCellMeta` and `removeCellMeta` are vetoable - a `beforeSetCellMeta` /
235
+ * `beforeRemoveCellMeta` listener returning `false` makes them a no-op (an app blocking border
236
+ * edits on locked cells, for example). The write is therefore verified against the resulting meta
237
+ * and reported back, so callers can leave the border model untouched instead of recording a border
238
+ * that has no cell meta behind it. The verification only runs when a matching `before*` listener
239
+ * is registered - without one no veto is possible, and skipping the read keeps the
240
+ * config-application path free of a per-border `getCellMeta` resolution.
241
+ *
242
+ * The removal is verified against the own property, not the resolved value: a `borders` key
243
+ * cascading from the grid or column level survives `removeCellMeta` (which deletes the own key
244
+ * only), so a resolved read would report a veto that never happened. The check covers the
245
+ * cascade; a `borders` key supplied by a `cells` function is written back as an own property and
246
+ * is unsupported - such values are not plugin-owned and never enter the border model.
247
+ *
248
+ * @param {number} row Visual row index.
249
+ * @param {number} column Visual column index.
250
+ * @param {object|null} value The denormalized border object, or `null` to remove.
251
+ * @returns {boolean} `true` when the meta now matches the requested write, `false` when it was vetoed.
252
+ */ _writeBordersMeta = /*#__PURE__*/ new WeakSet(), /**
253
+ * Builds the border object for a single cell of a range configuration. The cell's existing
254
+ * borders are merged first, so a cell touched by several overlapping ranges keeps every side.
255
+ * Each side that lies on a range edge is resolved through {@link resolveRangeBorderSide}, so an
256
+ * empty side inherits the range-level `border` style instead of the default.
257
+ *
258
+ * @param {number} rowIndex Visual row index of the cell.
259
+ * @param {number} colIndex Visual column index of the cell.
260
+ * @param {object} customBorder The range configuration object.
261
+ * @param {object} range The `{ from, to }` range the configuration applies to.
262
+ * @returns {object} The merged border and the number of sides applied to this cell.
263
+ */ _buildRangeCellBorder = /*#__PURE__*/ new WeakSet(), /**
264
+ * Destroys every plugin-owned custom selection and clears the rendered working set. Selections
265
+ * added to `highlight.customSelections` by other code are left untouched - the plugin only owns
266
+ * the entries tracked in its working-set cache. Does not touch the `savedBorders` model.
267
+ */ _destroyAllSelections = /*#__PURE__*/ new WeakSet(), /**
268
+ * Clears the entire border model and its rendered working set: cancels any in-flight progressive
269
+ * load, removes the `borders` meta from every previously bordered cell, empties `savedBorders` and
270
+ * its indexes, and destroys the rendered selections. Shared by `clearBorders()` (clear all) and
271
+ * `changeBorderSettings()` (a fresh array config / `updateSettings` replace). Does not render.
272
+ */ _resetBorderModel = /*#__PURE__*/ new WeakSet(), /**
273
+ * Rebuilds the visual-row index (`#bordersByRow`) from `savedBorders`. Runs at most once per model
274
+ * change (guarded by `#bordersByRowDirty`), never per render, so the per-frame viewport sync stays
275
+ * bounded by the viewport rather than the total border count.
276
+ */ _rebuildBordersByRow = /*#__PURE__*/ new WeakSet(), /**
277
+ * Patches a single border into the visual-row index, replacing any entry the row bucket already
278
+ * holds for the same id (a style edit re-inserts a fresh border object for the same cell). Runs
279
+ * only when the index is current - while it is dirty the next sync rebuilds it from scratch, so
280
+ * patching it would be wasted work.
281
+ *
282
+ * @param {object} border The border to index.
283
+ */ _indexBorderByRow = /*#__PURE__*/ new WeakSet(), /**
284
+ * Drops a single border from the visual-row index. Runs only when the index is current, for the
285
+ * same reason as {@link #indexBorderByRow}.
286
+ *
287
+ * @param {number} row Visual row index the border sits on.
288
+ * @param {string} borderId The id of the border to drop.
289
+ */ _unindexBorderByRow = /*#__PURE__*/ new WeakSet(), /**
290
+ * Synchronizes the rendered custom selections with the current viewport. Creates selections for
291
+ * bordered cells that entered the rendered range and destroys those that left it, so the selection
292
+ * manager only ever iterates and draws O(viewport) borders regardless of how many are configured.
293
+ * Called on every view render (`beforeViewRender`), before the selection borders are drawn.
294
+ */ _syncViewportSelections = /*#__PURE__*/ new WeakSet(), /**
295
+ * Creates and registers a rendered custom selection for a single border, keyed by its id in the
296
+ * working-set cache. The `Border` DOM itself is created lazily by the selection manager when the
297
+ * cell is inside the overlay's rendered range.
298
+ *
299
+ * @param {object} border The border model to render.
300
+ */ _addSelectionForBorder = /*#__PURE__*/ new WeakSet(), /**
301
+ * Rebuilds the id-to-position index of the saved borders after positions have shifted.
302
+ */ _rebuildSavedBordersIndex = /*#__PURE__*/ new WeakSet(), /**
303
+ * Reads and normalizes the `customBordersProgressive` setting.
304
+ *
305
+ * @returns {{ enabled: boolean, chunkSize: number }}
306
+ */ _resolveProgressiveSetting = /*#__PURE__*/ new WeakSet(), /**
307
+ * Starts a progressive (background-batched) application of a border configuration. The first batch
308
+ * is scheduled asynchronously so the initial grid render is not blocked.
309
+ *
310
+ * @param {Array} borders The border configuration entries to apply.
311
+ * @param {number} chunkSize The number of entries to apply per batch.
312
+ */ _startProgressiveApply = /*#__PURE__*/ new WeakSet(), /**
313
+ * Schedules the next progressive batch on a timeout so the browser can paint between batches.
314
+ * `_registerTimeout` auto-clears on `destroy`; the generation token guards against stale runs.
315
+ *
316
+ * @param {number} token The generation token captured when the load started.
317
+ */ _scheduleProgressiveChunk = /*#__PURE__*/ new WeakSet(), /**
318
+ * Applies one progressive batch, renders so the newly in-viewport borders appear, then schedules
319
+ * the next batch or finishes. Aborts if the load was cancelled/superseded (token mismatch).
320
+ *
321
+ * @param {number} token The generation token captured when the load started.
322
+ */ _processProgressiveChunk = /*#__PURE__*/ new WeakSet(), /**
323
+ * Applies all remaining progressive batches synchronously and finishes. Used when the border model
324
+ * must be complete immediately - e.g. before a structural change remaps coordinates.
325
+ */ _flushProgressiveApply = /*#__PURE__*/ new WeakSet(), /**
326
+ * Finalizes a progressive load: clears the queue and pass state, invalidates any pending batch
327
+ * (token bump), and fires `afterCustomBordersUpdate` to signal the borders are complete.
328
+ */ _finishProgressiveApply = /*#__PURE__*/ new WeakSet(), /**
329
+ * Cancels an in-flight progressive load without firing the completion hook (the borders are being
330
+ * discarded/replaced). Invalidates pending batches via the token bump.
331
+ */ _cancelProgressiveApply = /*#__PURE__*/ new WeakSet(), /**
129
332
  * Validate the style settings. If the style value is not supported, the property is removed from the configuration.
130
333
  *
131
334
  * @private
132
335
  * @param {object[]} customBorders The user defined custom border objects array.
133
336
  */ _validateStyleSettings = /*#__PURE__*/ new WeakSet(), /**
337
+ * Re-synchronizes the saved borders and their rendered custom selections after rows or columns
338
+ * are inserted or removed. Each saved border's coordinate on the given axis is passed through
339
+ * `mapIndex`; a result of `-1` means the border's cell no longer exists and the border is dropped,
340
+ * otherwise the border moves to the new coordinate. The cell meta is left untouched - Handsontable
341
+ * already shifts it, and this method only realigns the plugin's own bookkeeping to that meta.
342
+ *
343
+ * @param {string} axis The coordinate axis to shift - `'row'` or `'col'`.
344
+ * @param {Function} mapIndex Maps an old visual index to its new index, or `-1` when removed.
345
+ */ _shiftBorders = /*#__PURE__*/ new WeakSet(), /**
346
+ * Re-synchronizes the saved borders and their rendered custom selections after a row or column
347
+ * move. Each border's new visual index on the given axis is derived from the physical index
348
+ * captured before the move, so the border follows the cell it was applied to.
349
+ *
350
+ * @param {string} axis The coordinate axis to remap - `'row'` or `'col'`.
351
+ * @param {Array} snapshot Physical indexes captured before the move, parallel to `savedBorders`.
352
+ * @param {Function} toVisualIndex Translates a physical index to its current visual index.
353
+ */ _applyMoveSnapshot = /*#__PURE__*/ new WeakSet(), /**
354
+ * Reindexes the model after a structural change has rewritten border coordinates and ids, then
355
+ * drops and re-renders the working set so the viewport sync rebuilds it from the updated model.
356
+ * Tearing the selections down first also avoids transient id collisions (a shifted border's new id
357
+ * can equal another border's not-yet-shifted old id). Shared by `#shiftBorders` and
358
+ * `#applyMoveSnapshot`.
359
+ *
360
+ * @param {boolean} [render=true] If `true`, a render is forced so `#syncViewportSelections`
361
+ * rebuilds the working set. Pass `false` when the caller runs inside an operation that renders on
362
+ * its own afterwards - rendering from within such an operation paints a half-updated grid.
363
+ */ _rebuildWorkingSetFromModel = /*#__PURE__*/ new WeakSet(), /**
364
+ * Destroys the custom selection for the given border id and removes it from the highlight
365
+ * collection and the id cache. Used when a border's cell is removed from the table.
366
+ *
367
+ * @param {string} borderId The id of the border whose selection should be destroyed.
368
+ */ _destroyBorderSelection = /*#__PURE__*/ new WeakSet(), /**
134
369
  * Add border options to context menu.
135
370
  *
136
371
  * @param {object} defaultOptions Context menu items.
137
372
  */ _onAfterContextMenuDefaultOptions = /*#__PURE__*/ new WeakSet(), /**
138
- * `afterInit` hook callback.
139
- */ _onAfterInit = /*#__PURE__*/ new WeakSet();
373
+ * `init` hook callback. Builds the border model without forcing a render: the `init` hook fires
374
+ * right before the core's first render, and a render forced from here would paint the grid
375
+ * before later-priority plugins (e.g. NestedHeaders) run their own `init` setup, leaving
376
+ * corrupted header DOM behind (#11031 regression). The core's first render syncs and draws the
377
+ * master overlay's borders; the freshly-bootstrapped overlay clones need one more selection
378
+ * pass, so that render is scheduled for `afterInit` - still inside the same synchronous init
379
+ * sequence, but after every plugin finished its initialization.
380
+ */ _onAfterInit = /*#__PURE__*/ new WeakSet(), /**
381
+ * `beforeViewRender` hook callback. Synchronizes the rendered custom-border selections with the
382
+ * current viewport so only visible borders are materialized and drawn.
383
+ *
384
+ * The sync runs *before* the draw, not after it. The draw resolves the new rendered range
385
+ * (`createCalculators`) before firing `beforeViewRender`, so the range this reads is already the
386
+ * one about to be painted; the overlay clones then draw their selections, and the master draws
387
+ * its own at the end of the same cycle. Syncing from `afterViewRender` instead would land between
388
+ * those two, so a selection created there reached the master but missed the clones - a border
389
+ * scrolled back into a frozen row or column stayed invisible until an unrelated render.
390
+ */ _onBeforeViewRender = /*#__PURE__*/ new WeakMap(), /**
391
+ * `afterSetCellMeta` hook callback. Follows an external write of the `borders` cell meta (e.g.
392
+ * UndoRedo restoring the meta of an undone row/column removal, or user code calling
393
+ * `setCellMeta` directly) by upserting the matching entry in the border model, so the model and
394
+ * the meta cannot diverge. The plugin's own writes are excluded by the re-entrancy guard.
395
+ *
396
+ * @param {number} row Visual row index.
397
+ * @param {number} column Visual column index.
398
+ * @param {string} key The meta key that was written.
399
+ * @param {*} value The written value.
400
+ */ _onAfterSetCellMeta = /*#__PURE__*/ new WeakMap(), /**
401
+ * Schedules a single render for a batch of external `borders` cell-meta writes.
402
+ *
403
+ * The writes arrive per cell (`setCellMetaObject` fans a restored meta object out into one
404
+ * `setCellMeta` call per key, and UndoRedo replays one entry per removed cell), so rendering
405
+ * from the listener itself would run a full render for every bordered cell of the restored
406
+ * range. The microtask runs after the synchronous write batch but before the browser can paint,
407
+ * so the borders are still rebuilt within the same frame - no intermediate blank state. The
408
+ * microtask is registered through the core, which cancels pending ones on `destroy`.
409
+ */ _scheduleMetaSyncRender = /*#__PURE__*/ new WeakSet(), /**
410
+ * `afterRemoveCellMeta` hook callback. Follows an external removal of the `borders` cell meta by
411
+ * dropping the matching entry from the border model and its rendered selection.
412
+ *
413
+ * @param {number} row Visual row index.
414
+ * @param {number} column Visual column index.
415
+ * @param {string} key The removed meta key.
416
+ */ _onAfterRemoveCellMeta = /*#__PURE__*/ new WeakMap(), /**
417
+ * Applies any in-flight progressive load synchronously, so the border model is complete and its
418
+ * coordinates still describe the grid as the configuration meant them. Every structural change
419
+ * runs this from its `before*` hook: the core shifts the cell meta before firing the matching
420
+ * `after*` hook, so a queue drained from there would write its `borders` meta onto cells the
421
+ * configuration never targeted, leaving the meta and the model permanently out of step. The
422
+ * row/column move handlers flush from their `before*` hooks for the same reason.
423
+ *
424
+ * Auto-inserted rows and columns (`minSpareRows` / `minSpareCols`) append at the end and shift
425
+ * nothing, so they keep the load progressive instead of forcing it to complete.
426
+ *
427
+ * The `before*` hooks are vetoable, and the flush runs before the veto outcome is known - a
428
+ * later listener may still cancel the operation. A vetoed attempt therefore completes the load:
429
+ * nothing shifts, so the flushed model stays correct, but the remaining configuration is applied
430
+ * synchronously in that call. This is a deliberate trade-off - draining from the `after*` side
431
+ * corrupts the meta coordinates (the reason the flush lives here), and an already-applied queue
432
+ * cannot be re-armed.
433
+ *
434
+ * @param {string} [source] Source that triggered the structural change.
435
+ */ _flushBeforeStructuralChange = /*#__PURE__*/ new WeakSet(), /**
436
+ * `beforeCreateRow` hook callback.
437
+ *
438
+ * @param {number} index Visual index of the first row about to be created.
439
+ * @param {number} amount Number of rows about to be created.
440
+ * @param {string} [source] Source that triggered the row creation.
441
+ */ _onBeforeCreateRow = /*#__PURE__*/ new WeakMap(), /**
442
+ * `beforeRemoveRow` hook callback.
443
+ *
444
+ * @param {number} index Visual index of the first row about to be removed.
445
+ * @param {number} amount Number of rows about to be removed.
446
+ * @param {Array} physicalRows Physical indexes of the rows about to be removed.
447
+ * @param {string} [source] Source that triggered the row removal.
448
+ */ _onBeforeRemoveRow = /*#__PURE__*/ new WeakMap(), /**
449
+ * `beforeCreateCol` hook callback.
450
+ *
451
+ * @param {number} index Visual index of the first column about to be created.
452
+ * @param {number} amount Number of columns about to be created.
453
+ * @param {string} [source] Source that triggered the column creation.
454
+ */ _onBeforeCreateCol = /*#__PURE__*/ new WeakMap(), /**
455
+ * `beforeRemoveCol` hook callback.
456
+ *
457
+ * @param {number} index Visual index of the first column about to be removed.
458
+ * @param {number} amount Number of columns about to be removed.
459
+ * @param {Array} physicalColumns Physical indexes of the columns about to be removed.
460
+ * @param {string} [source] Source that triggered the column removal.
461
+ */ _onBeforeRemoveCol = /*#__PURE__*/ new WeakMap(), /**
462
+ * `afterCreateRow` hook callback. Shifts every border at or below the insertion point down.
463
+ *
464
+ * @param {number} index Visual index of the first newly created row.
465
+ * @param {number} amount Number of created rows.
466
+ * @param {string} [source] Source that triggered the row creation.
467
+ */ _onAfterCreateRow = /*#__PURE__*/ new WeakMap(), /**
468
+ * `afterRemoveRow` hook callback. Drops borders on removed rows and shifts the rest up.
469
+ *
470
+ * @param {number} index Visual index of the first removed row.
471
+ * @param {number} amount Number of removed rows.
472
+ */ _onAfterRemoveRow = /*#__PURE__*/ new WeakMap(), /**
473
+ * `afterCreateCol` hook callback. Shifts every border at or after the insertion point right.
474
+ *
475
+ * @param {number} index Visual index of the first newly created column.
476
+ * @param {number} amount Number of created columns.
477
+ * @param {string} [source] Source that triggered the column creation.
478
+ */ _onAfterCreateCol = /*#__PURE__*/ new WeakMap(), /**
479
+ * `afterRemoveCol` hook callback. Drops borders on removed columns and shifts the rest left.
480
+ *
481
+ * @param {number} index Visual index of the first removed column.
482
+ * @param {number} amount Number of removed columns.
483
+ */ _onAfterRemoveCol = /*#__PURE__*/ new WeakMap(), /**
484
+ * `beforeRowMove` hook callback. Snapshots each saved border's physical row so it can be
485
+ * re-derived after the move reorders the visual index mapping.
486
+ *
487
+ * @param {Array} movedRows Visual row indexes being moved.
488
+ * @param {number} finalIndex Target start index for the moved rows.
489
+ * @param {number|undefined} dropIndex Drop index of the move.
490
+ * @param {boolean} movePossible Whether the move is possible.
491
+ */ _onBeforeRowMove = /*#__PURE__*/ new WeakMap(), /**
492
+ * `afterRowMove` hook callback. Re-derives each border's visual row from the pre-move snapshot.
493
+ *
494
+ * @param {Array} movedRows Visual row indexes that were moved.
495
+ * @param {number} finalIndex Target start index for the moved rows.
496
+ * @param {number|undefined} dropIndex Drop index of the move.
497
+ * @param {boolean} movePossible Whether the move was possible.
498
+ * @param {boolean} orderChanged Whether the move changed the row order.
499
+ */ _onAfterRowMove = /*#__PURE__*/ new WeakMap(), /**
500
+ * `beforeColumnMove` hook callback. Snapshots each saved border's physical column so it can be
501
+ * re-derived after the move reorders the visual index mapping.
502
+ *
503
+ * @param {Array} movedColumns Visual column indexes being moved.
504
+ * @param {number} finalIndex Target start index for the moved columns.
505
+ * @param {number|undefined} dropIndex Drop index of the move.
506
+ * @param {boolean} movePossible Whether the move is possible.
507
+ */ _onBeforeColumnMove = /*#__PURE__*/ new WeakMap(), /**
508
+ * `afterColumnMove` hook callback. Re-derives each border's visual column from the pre-move
509
+ * snapshot.
510
+ *
511
+ * @param {Array} movedColumns Visual column indexes that were moved.
512
+ * @param {number} finalIndex Target start index for the moved columns.
513
+ * @param {number|undefined} dropIndex Drop index of the move.
514
+ * @param {boolean} movePossible Whether the move was possible.
515
+ * @param {boolean} orderChanged Whether the move changed the column order.
516
+ */ _onAfterColumnMove = /*#__PURE__*/ new WeakMap();
140
517
  class CustomBorders extends _base.BasePlugin {
141
518
  /**
142
519
  * Returns the plugin key used to identify this plugin in Handsontable settings.
@@ -149,6 +526,17 @@ class CustomBorders extends _base.BasePlugin {
149
526
  return PLUGIN_PRIORITY;
150
527
  }
151
528
  /**
529
+ * Returns the settings keys that trigger the plugin update on `updateSettings()`. Beside the
530
+ * plugin key itself this covers `customBordersProgressive`, which changes how the very same
531
+ * configuration is applied - without it, switching only that option would stay inert until some
532
+ * unrelated `customBorders` update happened to come along.
533
+ */ static get SETTING_KEYS() {
534
+ return [
535
+ PLUGIN_KEY,
536
+ 'customBordersProgressive'
537
+ ];
538
+ }
539
+ /**
152
540
  * Checks if the plugin is enabled in the handsontable settings. This method is executed in {@link Hooks#beforeInit}
153
541
  * hook and if it returns `true` then the {@link CustomBorders#enablePlugin} method is called.
154
542
  *
@@ -164,11 +552,27 @@ class CustomBorders extends _base.BasePlugin {
164
552
  }
165
553
  this.addHook('afterContextMenuDefaultOptions', (options)=>_class_private_method_get(this, _onAfterContextMenuDefaultOptions, onAfterContextMenuDefaultOptions).call(this, options));
166
554
  this.addHook('init', ()=>_class_private_method_get(this, _onAfterInit, onAfterInit).call(this));
555
+ this.addHook('beforeCreateRow', _class_private_field_get(this, _onBeforeCreateRow));
556
+ this.addHook('afterCreateRow', _class_private_field_get(this, _onAfterCreateRow));
557
+ this.addHook('beforeRemoveRow', _class_private_field_get(this, _onBeforeRemoveRow));
558
+ this.addHook('afterRemoveRow', _class_private_field_get(this, _onAfterRemoveRow));
559
+ this.addHook('beforeCreateCol', _class_private_field_get(this, _onBeforeCreateCol));
560
+ this.addHook('afterCreateCol', _class_private_field_get(this, _onAfterCreateCol));
561
+ this.addHook('beforeRemoveCol', _class_private_field_get(this, _onBeforeRemoveCol));
562
+ this.addHook('afterRemoveCol', _class_private_field_get(this, _onAfterRemoveCol));
563
+ this.addHook('beforeRowMove', _class_private_field_get(this, _onBeforeRowMove));
564
+ this.addHook('afterRowMove', _class_private_field_get(this, _onAfterRowMove));
565
+ this.addHook('beforeColumnMove', _class_private_field_get(this, _onBeforeColumnMove));
566
+ this.addHook('afterColumnMove', _class_private_field_get(this, _onAfterColumnMove));
567
+ this.addHook('beforeViewRender', _class_private_field_get(this, _onBeforeViewRender));
568
+ this.addHook('afterSetCellMeta', _class_private_field_get(this, _onAfterSetCellMeta));
569
+ this.addHook('afterRemoveCellMeta', _class_private_field_get(this, _onAfterRemoveCellMeta));
167
570
  super.enablePlugin();
168
571
  }
169
572
  /**
170
573
  * Disables the plugin functionality for this Handsontable instance.
171
574
  */ disablePlugin() {
575
+ _class_private_method_get(this, _cancelProgressiveApply, cancelProgressiveApply).call(this);
172
576
  this.hideBorders();
173
577
  super.disablePlugin();
174
578
  }
@@ -201,7 +605,12 @@ class CustomBorders extends _base.BasePlugin {
201
605
  * ```
202
606
  *
203
607
  * @param {Array[]|CellRange[]} selectionRanges Array of selection ranges.
204
- * @param {object} borderObject Object with `top`, `right`, `bottom` and `start` properties.
608
+ * @param {object} borderObject Object with `top`, `bottom`, `start`, and `end` properties.
609
+ * Each side object can include:
610
+ * - `width` (`number`) Border width in pixels (default: `1`).
611
+ * - `color` (`string`) CSS border color value (default: `'#000'`).
612
+ * - `hide` (`boolean`) Hides a border side when set to `true`.
613
+ * Legacy aliases `left` and `right` are also supported and are normalized to `start` and `end`.
205
614
  */ setBorders(selectionRanges, borderObject) {
206
615
  let borderKeys = [
207
616
  'top',
@@ -231,15 +640,11 @@ class CustomBorders extends _base.BasePlugin {
231
640
  });
232
641
  });
233
642
  /*
234
- The line below triggers a re-render of Handsontable. This will be a "fastDraw"
235
- render, because that is the default for the TableView class.
236
-
237
- The re-render is needed for borders on cells that did not have a border before.
238
- The way this call works is that it calls Table.refreshSelections, which calls
239
- Selection.getBorder, which creates a new instance of Border.
240
-
241
- Seems wise to keep this single-direction flow of creating new Borders
242
- */ this.hot.view.render();
643
+ A forced render is used (not a fast `view.render()`) so the `beforeViewRender` hook fires and
644
+ `#syncViewportSelections` materializes the custom selections for the just-changed, in-viewport
645
+ borders before the selection borders are drawn. A fast draw can be skipped when Walkontable
646
+ detects no cell/viewport change, which would leave the new border model unrendered.
647
+ */ this.hot.render();
243
648
  }
244
649
  /**
245
650
  * Get custom borders.
@@ -300,12 +705,8 @@ class CustomBorders extends _base.BasePlugin {
300
705
  if (selectionRanges) {
301
706
  this.setBorders(selectionRanges);
302
707
  } else {
303
- (0, _array.arrayEach)(this.savedBorders, (border)=>{
304
- this.clearBordersFromSelectionSettings(border.id);
305
- this.clearNullCellRange();
306
- this.hot.removeCellMeta(border.row, border.col, 'borders');
307
- });
308
- this.savedBorders.length = 0;
708
+ _class_private_method_get(this, _resetBorderModel, resetBorderModel).call(this);
709
+ this.hot.render();
309
710
  }
310
711
  }
311
712
  /**
@@ -318,16 +719,25 @@ class CustomBorders extends _base.BasePlugin {
318
719
  const hasSavedBorders = this.checkSavedBorders(border);
319
720
  if (!hasSavedBorders) {
320
721
  this.savedBorders.push(border);
722
+ _class_private_field_get(this, _savedBordersIndex).set(border.id, this.savedBorders.length - 1);
321
723
  }
322
- const borderCoords = this.hot._createCellCoords(border.row, border.col);
323
- const visualCellRange = this.hot._createCellRange(borderCoords, borderCoords, borderCoords);
324
- const hasCustomSelections = this.checkCustomSelections(border, visualCellRange, place);
325
- if (!hasCustomSelections) {
326
- this.hot.selection.highlight.addCustomSelection({
327
- border,
328
- visualCellRange
329
- });
330
- }
724
+ // Only the model is updated here; the rendered custom selection is created (or refreshed) by
725
+ // `#syncViewportSelections` on the next view render, and only if the border is inside the
726
+ // rendered range. This is what makes the plugin scale: selections and their border DOM are
727
+ // materialized for the viewport, not for every bordered cell. `place` is accepted for backward
728
+ // compatibility but no longer drives an incremental per-side toggle - the sync rebuilds the
729
+ // visible selection from the (already updated) border model, which carries the final side styles.
730
+ //
731
+ // The row index is patched for this one border rather than invalidated wholesale. Marking it
732
+ // dirty would make the next render rebuild it from the whole of `savedBorders`, so a progressive
733
+ // load - which renders once per batch - would rebuild a growing array once per batch and cost
734
+ // O(borders² / chunkSize) over the load, in the exact path the batching exists to speed up.
735
+ _class_private_method_get(this, _indexBorderByRow, indexBorderByRow).call(this, border);
736
+ // Drop any selection currently rendering this cell so the sync recreates it from the updated
737
+ // border object. The border id is coordinate-based and unchanged by a style edit, so without this
738
+ // the sync would keep the stale selection (it only adds/removes by id). No-op during bulk config
739
+ // load, when nothing is rendered yet.
740
+ _class_private_method_get(this, _destroyBorderSelection, destroyBorderSelection).call(this, border.id);
331
741
  }
332
742
  /**
333
743
  * Prepare borders from setting (single cell).
@@ -345,22 +755,34 @@ class CustomBorders extends _base.BasePlugin {
345
755
  }
346
756
  let border = (0, _utils.createEmptyBorders)(row, column);
347
757
  if (borderDescriptor) {
758
+ // A descriptor means "update these sides": start from the cell's existing borders so the
759
+ // sides it does not mention are kept, then layer the descriptor on top. With no descriptor
760
+ // the border stays all-hidden, which is the "clear this cell" intent handled below.
761
+ const existing = _class_private_method_get(this, _readExistingBordersForMerge, readExistingBordersForMerge).call(this, row, column);
762
+ if (isBorderObject(existing)) {
763
+ border = (0, _utils.normalizeBorder)((0, _object.deepClone)(existing));
764
+ // The merge base describes THIS cell regardless of the bookkeeping fields the stored meta
765
+ // carries - they can be stale when the meta is a detached snapshot (e.g. UndoRedo restoring
766
+ // borders captured at pre-shift coordinates).
767
+ border.row = row;
768
+ border.col = column;
769
+ border.id = (0, _utils.createId)(row, column);
770
+ }
348
771
  border = (0, _utils.extendDefaultBorder)(border, borderDescriptor);
349
- (0, _array.arrayEach)(this.hot.selection.highlight.customSelections, (customSelection)=>{
350
- const { settings } = customSelection;
351
- if (border.id === settings.id) {
352
- Object.assign(settings, borderDescriptor);
353
- const s = settings;
354
- border.id = s.id;
355
- border.top = s.top;
356
- border.bottom = s.bottom;
357
- border.start = s.start;
358
- border.end = s.end;
359
- return false; // breaks forAll
360
- }
361
- });
362
772
  }
363
- this.hot.setCellMeta(row, column, 'borders', (0, _utils.denormalizeBorder)(border));
773
+ // When every side is hidden (e.g. `setBorders(range)` with no style object, used to clear a
774
+ // cell) the border is removed entirely - dropped from the model and its cell meta - rather than
775
+ // stored as an all-hidden object. The rendered selection is reconciled by the viewport sync.
776
+ if (this.countHide(border) === 4) {
777
+ this.removeAllBorders(row, column);
778
+ return;
779
+ }
780
+ // A vetoed meta write must not reach the model - otherwise `getBorders()` would report a border
781
+ // that `getCellMeta().borders` knows nothing about, and clearing the model later would try to
782
+ // remove a meta key that was never written.
783
+ if (!_class_private_method_get(this, _writeBordersMeta, writeBordersMeta).call(this, row, column, (0, _utils.denormalizeBorder)(border))) {
784
+ return;
785
+ }
364
786
  this.insertBorderIntoSettings(border, place);
365
787
  }
366
788
  /**
@@ -374,39 +796,13 @@ class CustomBorders extends _base.BasePlugin {
374
796
  const lastColumnIndex = Math.min(range.to.col, this.hot.countCols() - 1);
375
797
  (0, _number.rangeEach)(range.from.row, lastRowIndex, (rowIndex)=>{
376
798
  (0, _number.rangeEach)(range.from.col, lastColumnIndex, (colIndex)=>{
377
- const border = (0, _utils.createEmptyBorders)(rowIndex, colIndex);
378
- let add = 0;
379
- if (rowIndex === range.from.row) {
380
- if ((0, _object.hasOwnProperty)(customBorder, 'top')) {
381
- add += 1;
382
- border.top = customBorder.top;
383
- }
384
- }
385
- // Please keep in mind that `range.to.row` may be beyond the table boundaries. The border won't be rendered.
386
- if (rowIndex === range.to.row) {
387
- if ((0, _object.hasOwnProperty)(customBorder, 'bottom')) {
388
- add += 1;
389
- border.bottom = customBorder.bottom;
390
- }
391
- }
392
- if (colIndex === range.from.col) {
393
- if ((0, _object.hasOwnProperty)(customBorder, 'start')) {
394
- add += 1;
395
- border.start = customBorder.start;
396
- }
397
- }
398
- // Please keep in mind that `range.to.col` may be beyond the table boundaries. The border won't be rendered.
399
- if (colIndex === range.to.col) {
400
- if ((0, _object.hasOwnProperty)(customBorder, 'end')) {
401
- add += 1;
402
- border.end = customBorder.end;
403
- }
404
- }
405
- if (add > 0) {
406
- this.hot.setCellMeta(rowIndex, colIndex, 'borders', (0, _utils.denormalizeBorder)(border));
799
+ const { border, add } = _class_private_method_get(this, _buildRangeCellBorder, buildRangeCellBorder).call(this, rowIndex, colIndex, customBorder, range);
800
+ // `#buildRangeCellBorder` already merged this cell's existing borders, so overlapping
801
+ // ranges accumulate their sides in the model. The rendered selection is (re)built from the
802
+ // merged model by `#syncViewportSelections` on the next view render. A cell whose meta
803
+ // write is vetoed is skipped entirely, so the model never gets ahead of the meta.
804
+ if (add > 0 && _class_private_method_get(this, _writeBordersMeta, writeBordersMeta).call(this, rowIndex, colIndex, (0, _utils.denormalizeBorder)(border))) {
407
805
  this.insertBorderIntoSettings(border, undefined);
408
- } else {
409
- // TODO sometimes it enters here. Why?
410
806
  }
411
807
  });
412
808
  });
@@ -418,11 +814,18 @@ class CustomBorders extends _base.BasePlugin {
418
814
  * @param {number} row Visual row index.
419
815
  * @param {number} column Visual column index.
420
816
  */ removeAllBorders(row, column) {
817
+ // The meta removal is vetoable, so it runs first: when a `beforeRemoveCellMeta` listener blocks
818
+ // it the cell keeps its `borders` meta, and dropping the border from the model anyway would
819
+ // leave `getBorders()` and `getCellMeta().borders` disagreeing.
820
+ if (!_class_private_method_get(this, _writeBordersMeta, writeBordersMeta).call(this, row, column, null)) {
821
+ return;
822
+ }
421
823
  const borderId = (0, _utils.createId)(row, column);
422
824
  this.spliceBorder(borderId);
423
- this.clearBordersFromSelectionSettings(borderId);
424
- this.clearNullCellRange();
425
- this.hot.removeCellMeta(row, column, 'borders');
825
+ _class_private_method_get(this, _unindexBorderByRow, unindexBorderByRow).call(this, row, borderId);
826
+ // Destroy the rendered selection if this border is currently in the viewport working set; if it
827
+ // is off-screen there is nothing rendered to remove.
828
+ _class_private_method_get(this, _destroyBorderSelection, destroyBorderSelection).call(this, borderId);
426
829
  }
427
830
  /**
428
831
  * Set borders for each cell re. To border position.
@@ -445,20 +848,15 @@ class CustomBorders extends _base.BasePlugin {
445
848
  const hideCount = this.countHide(bordersMeta);
446
849
  if (hideCount === 4) {
447
850
  this.removeAllBorders(row, column);
448
- } else {
449
- const customSelectionsChecker = this.checkCustomSelectionsFromContextMenu(bordersMeta, place, remove);
450
- if (!customSelectionsChecker) {
451
- this.insertBorderIntoSettings(bordersMeta, undefined);
452
- }
453
- this.hot.setCellMeta(row, column, 'borders', (0, _utils.denormalizeBorder)(bordersMeta));
851
+ } else if (_class_private_method_get(this, _writeBordersMeta, writeBordersMeta).call(this, row, column, (0, _utils.denormalizeBorder)(bordersMeta))) {
852
+ this.insertBorderIntoSettings(bordersMeta, undefined);
454
853
  }
455
854
  } else {
456
855
  bordersMeta[place] = (0, _utils.createDefaultCustomBorder)();
457
- const customSelectionsChecker = this.checkCustomSelectionsFromContextMenu(bordersMeta, place, remove);
458
- if (!customSelectionsChecker) {
856
+ // The meta is written first so a vetoed write leaves the model untouched.
857
+ if (_class_private_method_get(this, _writeBordersMeta, writeBordersMeta).call(this, row, column, (0, _utils.denormalizeBorder)(bordersMeta))) {
459
858
  this.insertBorderIntoSettings(bordersMeta, undefined);
460
859
  }
461
- this.hot.setCellMeta(row, column, 'borders', (0, _utils.denormalizeBorder)(bordersMeta));
462
860
  }
463
861
  }
464
862
  /**
@@ -517,6 +915,9 @@ class CustomBorders extends _base.BasePlugin {
517
915
  }
518
916
  }
519
917
  });
918
+ // Border changes above only updated the model; render so `#syncViewportSelections` materializes
919
+ // the visible selections for the changed cells.
920
+ this.hot.render();
520
921
  }
521
922
  /**
522
923
  * Create borders from settings.
@@ -524,14 +925,30 @@ class CustomBorders extends _base.BasePlugin {
524
925
  * @private
525
926
  * @param {Array} customBorders Object with `row` and `col`, `start`, `end`, `top` and `bottom` properties.
526
927
  */ createCustomBorders(customBorders) {
527
- (0, _array.arrayEach)(customBorders, (customBorder)=>{
528
- const normCustomBorder = (0, _utils.normalizeBorder)(customBorder);
529
- if (normCustomBorder.range) {
530
- this.prepareBorderFromCustomAddedRange(normCustomBorder.range, normCustomBorder);
531
- } else {
532
- this.prepareBorderFromCustomAdded(normCustomBorder.row ?? 0, normCustomBorder.col ?? 0, normCustomBorder, undefined);
928
+ // Own the first-touch tracking Set only when one is not already active. A progressive load keeps
929
+ // a single Set across all its batches (so overlapping ranges split across batches still merge
930
+ // correctly); a plain synchronous call owns and clears it here.
931
+ const ownsPass = _class_private_field_get(this, _configPassTouched) === null;
932
+ const wasInConfigPass = _class_private_field_get(this, _inConfigPass);
933
+ if (ownsPass) {
934
+ _class_private_field_set(this, _configPassTouched, new Set());
935
+ }
936
+ _class_private_field_set(this, _inConfigPass, true);
937
+ try {
938
+ (0, _array.arrayEach)(customBorders, (customBorder)=>{
939
+ const normCustomBorder = (0, _utils.normalizeBorder)(customBorder);
940
+ if (normCustomBorder.range) {
941
+ this.prepareBorderFromCustomAddedRange(normCustomBorder.range, normCustomBorder);
942
+ } else {
943
+ this.prepareBorderFromCustomAdded(normCustomBorder.row ?? 0, normCustomBorder.col ?? 0, normCustomBorder, undefined);
944
+ }
945
+ });
946
+ } finally{
947
+ _class_private_field_set(this, _inConfigPass, wasInConfigPass);
948
+ if (ownsPass) {
949
+ _class_private_field_set(this, _configPassTouched, null);
533
950
  }
534
- });
951
+ }
535
952
  }
536
953
  /**
537
954
  * Count hide property in border object.
@@ -557,38 +974,12 @@ class CustomBorders extends _base.BasePlugin {
557
974
  }, 0);
558
975
  }
559
976
  /**
560
- * Clear borders settings from custom selections.
561
- *
562
- * @private
563
- * @param {string} borderId Border id name as string.
564
- */ clearBordersFromSelectionSettings(borderId) {
565
- const index = (0, _array.arrayMap)(this.hot.selection.highlight.customSelections, (customSelection)=>customSelection.settings.id).indexOf(borderId);
566
- if (index > -1) {
567
- this.hot.selection.highlight.customSelections[index].clear();
568
- }
569
- }
570
- /**
571
- * Clear cellRange with null value.
572
- *
573
- * @private
574
- */ clearNullCellRange() {
575
- (0, _array.arrayEach)(this.hot.selection.highlight.customSelections, (customSelection, index)=>{
576
- if (customSelection.cellRange === null) {
577
- customSelection.destroy();
578
- this.hot.selection.highlight.customSelections.splice(index, 1);
579
- return false; // breaks forAll
580
- }
581
- });
582
- }
583
- /**
584
- * Hide custom borders.
977
+ * Hide custom borders. Destroys the rendered working-set selections; the `savedBorders` model is
978
+ * kept so the borders can be re-materialized if the plugin is re-enabled.
585
979
  *
586
980
  * @private
587
981
  */ hideBorders() {
588
- (0, _array.arrayEach)(this.savedBorders, (border)=>{
589
- this.clearBordersFromSelectionSettings(border.id);
590
- this.clearNullCellRange();
591
- });
982
+ _class_private_method_get(this, _destroyAllSelections, destroyAllSelections).call(this);
592
983
  }
593
984
  /**
594
985
  * Splice border from savedBorders.
@@ -596,9 +987,10 @@ class CustomBorders extends _base.BasePlugin {
596
987
  * @private
597
988
  * @param {string} borderId Border id name as string.
598
989
  */ spliceBorder(borderId) {
599
- const index = (0, _array.arrayMap)(this.savedBorders, (border)=>border.id).indexOf(borderId);
990
+ const index = _class_private_field_get(this, _savedBordersIndex).get(borderId) ?? -1;
600
991
  if (index > -1) {
601
992
  this.savedBorders.splice(index, 1);
993
+ _class_private_method_get(this, _rebuildSavedBordersIndex, rebuildSavedBordersIndex).call(this);
602
994
  }
603
995
  }
604
996
  /**
@@ -616,73 +1008,11 @@ class CustomBorders extends _base.BasePlugin {
616
1008
  this.spliceBorder(border.id);
617
1009
  check = true;
618
1010
  } else {
619
- (0, _array.arrayEach)(this.savedBorders, (savedBorder, index)=>{
620
- if (border.id === savedBorder.id) {
621
- this.savedBorders[index] = border;
622
- check = true;
623
- return false; // breaks forAll
624
- }
625
- });
626
- }
627
- return check;
628
- }
629
- /**
630
- * Check if an border already exists in the customSelections, and if true call toggleHiddenClass method.
631
- *
632
- * @private
633
- * @param {object} border Object with `row` and `col`, `start`, `end`, `top` and `bottom`, `id` and
634
- * `border` ({Object} with `color`, `width` and `cornerVisible` property) properties.
635
- * @param {string} place Coordinate where add/remove border - `top`, `bottom`, `start`, `end` and `noBorders`.
636
- * @param {boolean} remove True when remove borders, and false when add borders.
637
- *
638
- * @returns {boolean}
639
- */ checkCustomSelectionsFromContextMenu(border, place, remove) {
640
- let check = false;
641
- const customSelections = this.hot.selection.highlight.customSelections;
642
- (0, _array.arrayEach)(customSelections, (customSelection)=>{
643
- if (border.id === customSelection.settings.id) {
644
- const borders = this.hot.view._wt.selectionManager.getBorderInstances(customSelection);
645
- if (isBorderSide(place)) {
646
- (0, _array.arrayEach)(borders, (borderObject)=>{
647
- borderObject.toggleHiddenClass(place, remove ?? false);
648
- });
649
- }
1011
+ const index = _class_private_field_get(this, _savedBordersIndex).get(border.id);
1012
+ if (index !== undefined) {
1013
+ this.savedBorders[index] = border;
650
1014
  check = true;
651
- return false; // breaks forAll
652
1015
  }
653
- });
654
- return check;
655
- }
656
- /**
657
- * Check if an border already exists in the customSelections, and if true reset cellRange.
658
- *
659
- * @private
660
- * @param {object} border Object with `row` and `col`, `start`, `end`, `top` and `bottom`, `id` and
661
- * `border` ({Object} with `color`, `width` and `cornerVisible` property) properties.
662
- * @param {CellRange} cellRange The selection range to check.
663
- * @param {string} [place] Coordinate where add/remove border - `top`, `bottom`, `start`, `end`.
664
- * @returns {boolean}
665
- */ checkCustomSelections(border, cellRange, place) {
666
- const hideCount = this.countHide(border);
667
- let check = false;
668
- if (hideCount === 4) {
669
- this.removeAllBorders(border.row, border.col);
670
- check = true;
671
- } else {
672
- (0, _array.arrayEach)(this.hot.selection.highlight.customSelections, (customSelection)=>{
673
- if (border.id === customSelection.settings.id) {
674
- customSelection.visualCellRange = cellRange;
675
- customSelection.commit();
676
- if (place && isBorderSide(place)) {
677
- const borders = this.hot.view._wt.selectionManager.getBorderInstances(customSelection);
678
- (0, _array.arrayEach)(borders, (borderObject)=>{
679
- borderObject.changeBorderStyle(place, border);
680
- });
681
- }
682
- check = true;
683
- return false; // breaks forAll
684
- }
685
- });
686
1016
  }
687
1017
  return check;
688
1018
  }
@@ -690,18 +1020,38 @@ class CustomBorders extends _base.BasePlugin {
690
1020
  * Change borders from settings.
691
1021
  *
692
1022
  * @private
693
- */ changeBorderSettings() {
1023
+ * @param {boolean} [render=true] If `true`, a render is forced after the border model is rebuilt
1024
+ * so `#syncViewportSelections` materializes the visible selections. Pass `false` on the `init`
1025
+ * path: the `init` hook fires before the core's own first render, so that render performs the
1026
+ * sync - and rendering here would paint the grid before later-priority plugins (e.g.
1027
+ * NestedHeaders) finish their `init` setup, leaving corrupted header DOM behind.
1028
+ */ changeBorderSettings(render = true) {
694
1029
  const customBorders = this.hot.getSettings()[PLUGIN_KEY];
695
1030
  if (Array.isArray(customBorders)) {
696
1031
  const bordersClone = (0, _object.deepClone)(customBorders.filter(isRecord));
697
1032
  this.checkSettingsCohesion(bordersClone);
698
- if (!bordersClone.length) {
699
- this.savedBorders = [];
1033
+ // A fresh array config replaces the previous borders (this is also the `updateSettings` path).
1034
+ // Reset the model and clear the previous cells' meta first so `prepareBorderFromCustomAdded`
1035
+ // starts from a clean slate instead of merging the new config onto stale meta.
1036
+ _class_private_method_get(this, _resetBorderModel, resetBorderModel).call(this);
1037
+ const progressive = _class_private_method_get(this, _resolveProgressiveSetting, resolveProgressiveSetting).call(this);
1038
+ if (progressive.enabled && bordersClone.length > 0) {
1039
+ // Apply borders in background batches: render the (border-less) grid now so it is
1040
+ // interactive immediately; batches fill in and `afterCustomBordersUpdate` fires on drain.
1041
+ _class_private_method_get(this, _startProgressiveApply, startProgressiveApply).call(this, bordersClone, progressive.chunkSize);
1042
+ if (render) {
1043
+ this.hot.render();
1044
+ }
1045
+ return;
700
1046
  }
701
1047
  this.createCustomBorders(bordersClone);
702
1048
  } else if (customBorders !== undefined) {
703
1049
  this.createCustomBorders(this.savedBorders);
704
1050
  }
1051
+ if (render) {
1052
+ this.hot.render();
1053
+ }
1054
+ this.hot.runHooks('afterCustomBordersUpdate');
705
1055
  }
706
1056
  /**
707
1057
  * Checks the settings cohesion. The properties such like "left"/"right" are supported only
@@ -723,17 +1073,467 @@ class CustomBorders extends _base.BasePlugin {
723
1073
  /**
724
1074
  * Destroys the plugin instance.
725
1075
  */ destroy() {
1076
+ // Cancel any in-flight progressive load and release the border model / working-set graphs so a
1077
+ // destroyed instance does not retain them for the page lifetime.
1078
+ _class_private_method_get(this, _cancelProgressiveApply, cancelProgressiveApply).call(this);
1079
+ this.savedBorders = [];
1080
+ _class_private_field_get(this, _savedBordersIndex).clear();
1081
+ _class_private_field_get(this, _bordersByRow).clear();
1082
+ _class_private_field_get(this, _customSelectionsCache).clear();
1083
+ _class_private_field_set(this, _rowMoveSnapshot, null);
1084
+ _class_private_field_set(this, _columnMoveSnapshot, null);
726
1085
  super.destroy();
727
1086
  }
728
1087
  constructor(...args){
729
- super(...args), _class_private_method_init(this, _validateStyleSettings), _class_private_method_init(this, _onAfterContextMenuDefaultOptions), _class_private_method_init(this, _onAfterInit), /**
1088
+ super(...args), _class_private_method_init(this, _readExistingBordersForMerge), _class_private_method_init(this, _writeBordersMeta), _class_private_method_init(this, _buildRangeCellBorder), _class_private_method_init(this, _destroyAllSelections), _class_private_method_init(this, _resetBorderModel), _class_private_method_init(this, _rebuildBordersByRow), _class_private_method_init(this, _indexBorderByRow), _class_private_method_init(this, _unindexBorderByRow), _class_private_method_init(this, _syncViewportSelections), _class_private_method_init(this, _addSelectionForBorder), _class_private_method_init(this, _rebuildSavedBordersIndex), _class_private_method_init(this, _resolveProgressiveSetting), _class_private_method_init(this, _startProgressiveApply), _class_private_method_init(this, _scheduleProgressiveChunk), _class_private_method_init(this, _processProgressiveChunk), _class_private_method_init(this, _flushProgressiveApply), _class_private_method_init(this, _finishProgressiveApply), _class_private_method_init(this, _cancelProgressiveApply), _class_private_method_init(this, _validateStyleSettings), _class_private_method_init(this, _shiftBorders), _class_private_method_init(this, _applyMoveSnapshot), _class_private_method_init(this, _rebuildWorkingSetFromModel), _class_private_method_init(this, _destroyBorderSelection), _class_private_method_init(this, _onAfterContextMenuDefaultOptions), _class_private_method_init(this, _onAfterInit), _class_private_method_init(this, _scheduleMetaSyncRender), _class_private_method_init(this, _flushBeforeStructuralChange), _class_private_field_init(this, _savedBordersIndex, {
1089
+ writable: true,
1090
+ value: void 0
1091
+ }), _class_private_field_init(this, _customSelectionsCache, {
1092
+ writable: true,
1093
+ value: void 0
1094
+ }), _class_private_field_init(this, _bordersByRow, {
1095
+ writable: true,
1096
+ value: void 0
1097
+ }), _class_private_field_init(this, _bordersByRowDirty, {
1098
+ writable: true,
1099
+ value: void 0
1100
+ }), _class_private_field_init(this, _configPassTouched, {
1101
+ writable: true,
1102
+ value: void 0
1103
+ }), _class_private_field_init(this, _inConfigPass, {
1104
+ writable: true,
1105
+ value: void 0
1106
+ }), _class_private_field_init(this, _isInternalMetaWrite, {
1107
+ writable: true,
1108
+ value: void 0
1109
+ }), _class_private_field_init(this, _isMetaSyncRenderScheduled, {
1110
+ writable: true,
1111
+ value: void 0
1112
+ }), _class_private_field_init(this, _progressiveQueue, {
1113
+ writable: true,
1114
+ value: void 0
1115
+ }), _class_private_field_init(this, _progressiveIndex, {
1116
+ writable: true,
1117
+ value: void 0
1118
+ }), _class_private_field_init(this, _progressiveChunkSize, {
1119
+ writable: true,
1120
+ value: void 0
1121
+ }), _class_private_field_init(this, _progressiveToken, {
1122
+ writable: true,
1123
+ value: void 0
1124
+ }), _class_private_field_init(this, _rowMoveSnapshot, {
1125
+ writable: true,
1126
+ value: void 0
1127
+ }), _class_private_field_init(this, _columnMoveSnapshot, {
1128
+ writable: true,
1129
+ value: void 0
1130
+ }), _class_private_field_init(this, _onBeforeViewRender, {
1131
+ writable: true,
1132
+ value: void 0
1133
+ }), _class_private_field_init(this, _onAfterSetCellMeta, {
1134
+ writable: true,
1135
+ value: void 0
1136
+ }), _class_private_field_init(this, _onAfterRemoveCellMeta, {
1137
+ writable: true,
1138
+ value: void 0
1139
+ }), _class_private_field_init(this, _onBeforeCreateRow, {
1140
+ writable: true,
1141
+ value: void 0
1142
+ }), _class_private_field_init(this, _onBeforeRemoveRow, {
1143
+ writable: true,
1144
+ value: void 0
1145
+ }), _class_private_field_init(this, _onBeforeCreateCol, {
1146
+ writable: true,
1147
+ value: void 0
1148
+ }), _class_private_field_init(this, _onBeforeRemoveCol, {
1149
+ writable: true,
1150
+ value: void 0
1151
+ }), _class_private_field_init(this, _onAfterCreateRow, {
1152
+ writable: true,
1153
+ value: void 0
1154
+ }), _class_private_field_init(this, _onAfterRemoveRow, {
1155
+ writable: true,
1156
+ value: void 0
1157
+ }), _class_private_field_init(this, _onAfterCreateCol, {
1158
+ writable: true,
1159
+ value: void 0
1160
+ }), _class_private_field_init(this, _onAfterRemoveCol, {
1161
+ writable: true,
1162
+ value: void 0
1163
+ }), _class_private_field_init(this, _onBeforeRowMove, {
1164
+ writable: true,
1165
+ value: void 0
1166
+ }), _class_private_field_init(this, _onAfterRowMove, {
1167
+ writable: true,
1168
+ value: void 0
1169
+ }), _class_private_field_init(this, _onBeforeColumnMove, {
1170
+ writable: true,
1171
+ value: void 0
1172
+ }), _class_private_field_init(this, _onAfterColumnMove, {
1173
+ writable: true,
1174
+ value: void 0
1175
+ }), /**
730
1176
  * Saved borders.
731
1177
  *
732
1178
  * @private
733
1179
  * @type {Array}
734
- */ this.savedBorders = [];
1180
+ */ this.savedBorders = [], _class_private_field_set(this, _savedBordersIndex, new Map()), _class_private_field_set(this, _customSelectionsCache, new Map()), _class_private_field_set(this, _bordersByRow, new Map()), _class_private_field_set(this, _bordersByRowDirty, true), _class_private_field_set(this, _configPassTouched, null), _class_private_field_set(this, _inConfigPass, false), _class_private_field_set(this, _isInternalMetaWrite, false), _class_private_field_set(this, _isMetaSyncRenderScheduled, false), _class_private_field_set(this, _progressiveQueue, null), _class_private_field_set(this, _progressiveIndex, 0), _class_private_field_set(this, _progressiveChunkSize, DEFAULT_PROGRESSIVE_CHUNK_SIZE), _class_private_field_set(this, _progressiveToken, 0), _class_private_field_set(this, _rowMoveSnapshot, null), _class_private_field_set(this, _columnMoveSnapshot, null), _class_private_field_set(this, _onBeforeViewRender, ()=>{
1181
+ _class_private_method_get(this, _syncViewportSelections, syncViewportSelections).call(this);
1182
+ }), _class_private_field_set(this, _onAfterSetCellMeta, (row, column, key, value)=>{
1183
+ if (_class_private_field_get(this, _isInternalMetaWrite) || key !== 'borders' || !isRecord(value)) {
1184
+ return;
1185
+ }
1186
+ // The written value may be a complete plugin-shaped border object (UndoRedo restoring the meta
1187
+ // of an undone removal) or a partial user-authored one (e.g. `{ top: { width: 2 } }` passed to
1188
+ // `setCellMeta` directly), so it must not be required to carry the internal `id`/`row`/`col`
1189
+ // bookkeeping fields. Routing it through `prepareBorderFromCustomAdded` treats it as a border
1190
+ // descriptor for the write's coordinates. The meta key was already replaced by this write (the
1191
+ // previous sides are gone), so the descriptor defines the cell's borders: the canonical
1192
+ // (complete, denormalized) object is written back to the meta, an all-hidden result clears the
1193
+ // cell, and the model entry is upserted - so meta and model cannot diverge.
1194
+ this.prepareBorderFromCustomAdded(row, column, (0, _utils.normalizeBorder)((0, _object.deepClone)(value)), undefined);
1195
+ // `setCellMeta` does not render, and the model update above dropped the cell's previous rendered
1196
+ // selection so the viewport sync can rebuild it. Without a render the old border DOM is gone
1197
+ // and the new one waits for some unrelated render - the cell would appear to lose its border.
1198
+ _class_private_method_get(this, _scheduleMetaSyncRender, scheduleMetaSyncRender).call(this);
1199
+ }), _class_private_field_set(this, _onAfterRemoveCellMeta, (row, column, key)=>{
1200
+ if (_class_private_field_get(this, _isInternalMetaWrite) || key !== 'borders') {
1201
+ return;
1202
+ }
1203
+ const borderId = (0, _utils.createId)(row, column);
1204
+ this.spliceBorder(borderId);
1205
+ _class_private_method_get(this, _unindexBorderByRow, unindexBorderByRow).call(this, row, borderId);
1206
+ _class_private_method_get(this, _destroyBorderSelection, destroyBorderSelection).call(this, borderId);
1207
+ }), _class_private_field_set(this, _onBeforeCreateRow, (index, amount, source)=>{
1208
+ _class_private_method_get(this, _flushBeforeStructuralChange, flushBeforeStructuralChange).call(this, source);
1209
+ }), _class_private_field_set(this, _onBeforeRemoveRow, (index, amount, physicalRows, source)=>{
1210
+ _class_private_method_get(this, _flushBeforeStructuralChange, flushBeforeStructuralChange).call(this, source);
1211
+ }), _class_private_field_set(this, _onBeforeCreateCol, (index, amount, source)=>{
1212
+ _class_private_method_get(this, _flushBeforeStructuralChange, flushBeforeStructuralChange).call(this, source);
1213
+ }), _class_private_field_set(this, _onBeforeRemoveCol, (index, amount, physicalColumns, source)=>{
1214
+ _class_private_method_get(this, _flushBeforeStructuralChange, flushBeforeStructuralChange).call(this, source);
1215
+ }), _class_private_field_set(this, _onAfterCreateRow, (index, amount, source)=>{
1216
+ if (source === 'auto') {
1217
+ return;
1218
+ }
1219
+ _class_private_method_get(this, _shiftBorders, shiftBorders).call(this, 'row', (currentIndex)=>(0, _utils.getShiftedIndexAfterInsert)(currentIndex, index, amount));
1220
+ }), _class_private_field_set(this, _onAfterRemoveRow, (index, amount)=>{
1221
+ _class_private_method_get(this, _shiftBorders, shiftBorders).call(this, 'row', (currentIndex)=>(0, _utils.getShiftedIndexAfterRemove)(currentIndex, index, amount));
1222
+ }), _class_private_field_set(this, _onAfterCreateCol, (index, amount, source)=>{
1223
+ // Auto-inserted columns (e.g. `minSpareCols`) append at the end and, like auto rows, do NOT
1224
+ // shift cell meta in the core (`DataMap#createCol` skips `metaManager.createColumn` for
1225
+ // `source === 'auto'`). Shifting the border model here would then diverge from the meta, so skip
1226
+ // it - mirrors `#onAfterCreateRow`.
1227
+ if (source === 'auto') {
1228
+ return;
1229
+ }
1230
+ _class_private_method_get(this, _shiftBorders, shiftBorders).call(this, 'col', (currentIndex)=>(0, _utils.getShiftedIndexAfterInsert)(currentIndex, index, amount));
1231
+ }), _class_private_field_set(this, _onAfterRemoveCol, (index, amount)=>{
1232
+ _class_private_method_get(this, _shiftBorders, shiftBorders).call(this, 'col', (currentIndex)=>(0, _utils.getShiftedIndexAfterRemove)(currentIndex, index, amount));
1233
+ }), _class_private_field_set(this, _onBeforeRowMove, (movedRows, finalIndex, dropIndex, movePossible)=>{
1234
+ // Snapshot needs the complete model; finish any in-flight progressive load first.
1235
+ _class_private_method_get(this, _flushProgressiveApply, flushProgressiveApply).call(this);
1236
+ _class_private_field_set(this, _rowMoveSnapshot, movePossible ? this.savedBorders.map((border)=>this.hot.toPhysicalRow(border.row)) : null);
1237
+ }), _class_private_field_set(this, _onAfterRowMove, (movedRows, finalIndex, dropIndex, movePossible, orderChanged)=>{
1238
+ const snapshot = _class_private_field_get(this, _rowMoveSnapshot);
1239
+ _class_private_field_set(this, _rowMoveSnapshot, null);
1240
+ if (!snapshot || !orderChanged) {
1241
+ return;
1242
+ }
1243
+ _class_private_method_get(this, _applyMoveSnapshot, applyMoveSnapshot).call(this, 'row', snapshot, (physicalIndex)=>this.hot.toVisualRow(physicalIndex));
1244
+ }), _class_private_field_set(this, _onBeforeColumnMove, (movedColumns, finalIndex, dropIndex, movePossible)=>{
1245
+ // Snapshot needs the complete model; finish any in-flight progressive load first.
1246
+ _class_private_method_get(this, _flushProgressiveApply, flushProgressiveApply).call(this);
1247
+ _class_private_field_set(this, _columnMoveSnapshot, movePossible ? this.savedBorders.map((border)=>this.hot.toPhysicalColumn(border.col)) : null);
1248
+ }), _class_private_field_set(this, _onAfterColumnMove, (movedColumns, finalIndex, dropIndex, movePossible, orderChanged)=>{
1249
+ const snapshot = _class_private_field_get(this, _columnMoveSnapshot);
1250
+ _class_private_field_set(this, _columnMoveSnapshot, null);
1251
+ if (!snapshot || !orderChanged) {
1252
+ return;
1253
+ }
1254
+ _class_private_method_get(this, _applyMoveSnapshot, applyMoveSnapshot).call(this, 'col', snapshot, (physicalIndex)=>this.hot.toVisualColumn(physicalIndex));
1255
+ });
1256
+ }
1257
+ }
1258
+ function readExistingBordersForMerge(row, column) {
1259
+ const seen = _class_private_field_get(this, _configPassTouched);
1260
+ if (seen === null || !_class_private_field_get(this, _inConfigPass)) {
1261
+ return this.hot.getCellMeta(row, column).borders;
1262
+ }
1263
+ const key = `${row},${column}`;
1264
+ const shouldRead = seen.has(key);
1265
+ seen.add(key);
1266
+ return shouldRead ? this.hot.getCellMeta(row, column).borders : undefined;
1267
+ }
1268
+ function writeBordersMeta(row, column, value) {
1269
+ // Sampled before the write: a `runOnce` veto listener removes itself the moment it fires, so
1270
+ // probing afterwards would read `false` for a write that was in fact vetoed.
1271
+ const isVetoable = this.hot.hasHook(value === null ? 'beforeRemoveCellMeta' : 'beforeSetCellMeta');
1272
+ _class_private_field_set(this, _isInternalMetaWrite, true);
1273
+ try {
1274
+ if (value === null) {
1275
+ this.hot.removeCellMeta(row, column, 'borders');
1276
+ } else {
1277
+ this.hot.setCellMeta(row, column, 'borders', value);
1278
+ }
1279
+ } finally{
1280
+ _class_private_field_set(this, _isInternalMetaWrite, false);
1281
+ }
1282
+ if (!isVetoable) {
1283
+ return true;
1284
+ }
1285
+ // Same effective resolution as `getCellMeta`; the cell already holds stored meta after the
1286
+ // write above, so the transient read returns that stored object with its own properties
1287
+ // observable.
1288
+ const written = this.hot.getCellMetaTransient(row, column);
1289
+ return value === null ? !(0, _object.hasOwnProperty)(written, 'borders') : written.borders === value;
1290
+ }
1291
+ function buildRangeCellBorder(rowIndex, colIndex, customBorder, range) {
1292
+ const existing = _class_private_method_get(this, _readExistingBordersForMerge, readExistingBordersForMerge).call(this, rowIndex, colIndex);
1293
+ const border = isBorderObject(existing) ? (0, _utils.normalizeBorder)((0, _object.deepClone)(existing)) : (0, _utils.createEmptyBorders)(rowIndex, colIndex);
1294
+ let add = 0;
1295
+ const applyEdge = (isEdge, sideKey)=>{
1296
+ // `range.to.row`/`range.to.col` may lie beyond the table; those cells are never iterated.
1297
+ if (isEdge && (0, _object.hasOwnProperty)(customBorder, sideKey)) {
1298
+ border[sideKey] = (0, _utils.resolveRangeBorderSide)(customBorder[sideKey], customBorder.border);
1299
+ add += 1;
1300
+ }
1301
+ };
1302
+ applyEdge(rowIndex === range.from.row, 'top');
1303
+ applyEdge(rowIndex === range.to.row, 'bottom');
1304
+ applyEdge(colIndex === range.from.col, 'start');
1305
+ applyEdge(colIndex === range.to.col, 'end');
1306
+ if (isRecord(customBorder.border)) {
1307
+ border.border = customBorder.border;
1308
+ }
1309
+ return {
1310
+ border,
1311
+ add
1312
+ };
1313
+ }
1314
+ function destroyAllSelections() {
1315
+ const { customSelections } = this.hot.selection.highlight;
1316
+ const owned = new Set(_class_private_field_get(this, _customSelectionsCache).values());
1317
+ for(let index = customSelections.length - 1; index >= 0; index--){
1318
+ if (owned.has(customSelections[index])) {
1319
+ customSelections[index].destroy();
1320
+ customSelections.splice(index, 1);
1321
+ }
1322
+ }
1323
+ _class_private_field_get(this, _customSelectionsCache).clear();
1324
+ }
1325
+ function resetBorderModel() {
1326
+ _class_private_method_get(this, _cancelProgressiveApply, cancelProgressiveApply).call(this);
1327
+ // A `beforeRemoveCellMeta` listener can veto the removal. Those cells keep their `borders` meta,
1328
+ // so they keep their model entry too - clearing the model around them would leave `getBorders()`
1329
+ // and `getCellMeta().borders` disagreeing.
1330
+ const kept = [];
1331
+ (0, _array.arrayEach)(this.savedBorders, (border)=>{
1332
+ if (!_class_private_method_get(this, _writeBordersMeta, writeBordersMeta).call(this, border.row, border.col, null)) {
1333
+ kept.push(border);
1334
+ }
1335
+ });
1336
+ this.savedBorders = kept;
1337
+ _class_private_method_get(this, _rebuildSavedBordersIndex, rebuildSavedBordersIndex).call(this);
1338
+ _class_private_field_get(this, _bordersByRow).clear();
1339
+ _class_private_field_set(this, _bordersByRowDirty, true);
1340
+ _class_private_method_get(this, _destroyAllSelections, destroyAllSelections).call(this);
1341
+ }
1342
+ function rebuildBordersByRow() {
1343
+ _class_private_field_get(this, _bordersByRow).clear();
1344
+ (0, _array.arrayEach)(this.savedBorders, (border)=>{
1345
+ const rowBorders = _class_private_field_get(this, _bordersByRow).get(border.row);
1346
+ if (rowBorders) {
1347
+ rowBorders.push(border);
1348
+ } else {
1349
+ _class_private_field_get(this, _bordersByRow).set(border.row, [
1350
+ border
1351
+ ]);
1352
+ }
1353
+ });
1354
+ _class_private_field_set(this, _bordersByRowDirty, false);
1355
+ }
1356
+ function indexBorderByRow(border) {
1357
+ if (_class_private_field_get(this, _bordersByRowDirty)) {
1358
+ return;
1359
+ }
1360
+ // A border removed by `checkSavedBorders` (all four sides hidden) is no longer in the model, so
1361
+ // it must leave the index rather than enter it.
1362
+ if (!_class_private_field_get(this, _savedBordersIndex).has(border.id)) {
1363
+ _class_private_method_get(this, _unindexBorderByRow, unindexBorderByRow).call(this, border.row, border.id);
1364
+ return;
1365
+ }
1366
+ const rowBorders = _class_private_field_get(this, _bordersByRow).get(border.row);
1367
+ if (!rowBorders) {
1368
+ _class_private_field_get(this, _bordersByRow).set(border.row, [
1369
+ border
1370
+ ]);
1371
+ return;
1372
+ }
1373
+ const at = rowBorders.findIndex((indexed)=>indexed.id === border.id);
1374
+ if (at === -1) {
1375
+ rowBorders.push(border);
1376
+ } else {
1377
+ rowBorders[at] = border;
1378
+ }
1379
+ }
1380
+ function unindexBorderByRow(row, borderId) {
1381
+ if (_class_private_field_get(this, _bordersByRowDirty)) {
1382
+ return;
1383
+ }
1384
+ const rowBorders = _class_private_field_get(this, _bordersByRow).get(row);
1385
+ if (!rowBorders) {
1386
+ return;
1387
+ }
1388
+ const at = rowBorders.findIndex((indexed)=>indexed.id === borderId);
1389
+ if (at === -1) {
1390
+ return;
1391
+ }
1392
+ rowBorders.splice(at, 1);
1393
+ if (rowBorders.length === 0) {
1394
+ _class_private_field_get(this, _bordersByRow).delete(row);
1395
+ }
1396
+ }
1397
+ function syncViewportSelections() {
1398
+ if (_class_private_field_get(this, _bordersByRowDirty)) {
1399
+ _class_private_method_get(this, _rebuildBordersByRow, rebuildBordersByRow).call(this);
1400
+ }
1401
+ const view = this.hot.view;
1402
+ const firstRow = view.getFirstRenderedVisibleRow();
1403
+ const lastRow = view.getLastRenderedVisibleRow();
1404
+ const firstColumn = view.getFirstRenderedVisibleColumn();
1405
+ const lastColumn = view.getLastRenderedVisibleColumn();
1406
+ // Nothing rendered (e.g. detached table or headers only) - drop the whole working set.
1407
+ if (firstRow === null || lastRow === null || firstColumn === null || lastColumn === null) {
1408
+ if (_class_private_field_get(this, _customSelectionsCache).size > 0) {
1409
+ _class_private_method_get(this, _destroyAllSelections, destroyAllSelections).call(this);
1410
+ }
1411
+ return;
1412
+ }
1413
+ // Frozen rows/columns are rendered by the overlay clones even when the master rendered range
1414
+ // excludes them, so the working window is the union of the frozen areas and the master range.
1415
+ const settings = this.hot.getSettings();
1416
+ const fixedRowsTop = Number(settings.fixedRowsTop) || 0;
1417
+ const fixedRowsBottom = Number(settings.fixedRowsBottom) || 0;
1418
+ const fixedColumnsStart = Number(settings.fixedColumnsStart) || 0;
1419
+ const totalRows = this.hot.countRows();
1420
+ const totalColumns = this.hot.countCols();
1421
+ const rowRanges = (0, _utils.getViewportUnionRanges)(firstRow, lastRow, fixedRowsTop, fixedRowsBottom, totalRows);
1422
+ const shouldBeVisible = new Set();
1423
+ (0, _array.arrayEach)(rowRanges, ([fromRow, toRow])=>{
1424
+ for(let row = fromRow; row <= toRow; row++){
1425
+ const rowBorders = _class_private_field_get(this, _bordersByRow).get(row);
1426
+ if (!rowBorders) {
1427
+ continue; // eslint-disable-line no-continue
1428
+ }
1429
+ (0, _array.arrayEach)(rowBorders, (border)=>{
1430
+ if ((0, _utils.isIndexInViewportUnion)(border.col, firstColumn, lastColumn, fixedColumnsStart, 0, totalColumns)) {
1431
+ shouldBeVisible.add(border.id);
1432
+ if (!_class_private_field_get(this, _customSelectionsCache).has(border.id)) {
1433
+ _class_private_method_get(this, _addSelectionForBorder, addSelectionForBorder).call(this, border);
1434
+ }
1435
+ }
1436
+ });
1437
+ }
1438
+ });
1439
+ // Remove selections that scrolled out of the rendered range.
1440
+ (0, _array.arrayEach)(Array.from(_class_private_field_get(this, _customSelectionsCache).keys()), (borderId)=>{
1441
+ if (!shouldBeVisible.has(borderId)) {
1442
+ _class_private_method_get(this, _destroyBorderSelection, destroyBorderSelection).call(this, borderId);
1443
+ }
1444
+ });
1445
+ }
1446
+ function addSelectionForBorder(border) {
1447
+ const borderCoords = this.hot._createCellCoords(border.row, border.col);
1448
+ const visualCellRange = this.hot._createCellRange(borderCoords, borderCoords, borderCoords);
1449
+ const { customSelections } = this.hot.selection.highlight;
1450
+ this.hot.selection.highlight.addCustomSelection({
1451
+ border,
1452
+ visualCellRange
1453
+ });
1454
+ _class_private_field_get(this, _customSelectionsCache).set(border.id, customSelections[customSelections.length - 1]);
1455
+ }
1456
+ function rebuildSavedBordersIndex() {
1457
+ _class_private_field_get(this, _savedBordersIndex).clear();
1458
+ (0, _array.arrayEach)(this.savedBorders, (border, index)=>{
1459
+ _class_private_field_get(this, _savedBordersIndex).set(border.id, index);
1460
+ });
1461
+ }
1462
+ function resolveProgressiveSetting() {
1463
+ const setting = this.hot.getSettings().customBordersProgressive;
1464
+ if (setting === true) {
1465
+ return {
1466
+ enabled: true,
1467
+ chunkSize: DEFAULT_PROGRESSIVE_CHUNK_SIZE
1468
+ };
1469
+ }
1470
+ if (isRecord(setting)) {
1471
+ const size = typeof setting.chunkSize === 'number' && setting.chunkSize > 0 ? Math.floor(setting.chunkSize) : DEFAULT_PROGRESSIVE_CHUNK_SIZE;
1472
+ return {
1473
+ enabled: true,
1474
+ chunkSize: size
1475
+ };
1476
+ }
1477
+ return {
1478
+ enabled: false,
1479
+ chunkSize: DEFAULT_PROGRESSIVE_CHUNK_SIZE
1480
+ };
1481
+ }
1482
+ function startProgressiveApply(borders, chunkSize) {
1483
+ _class_private_field_set(this, _progressiveToken, _class_private_field_get(this, _progressiveToken) + 1);
1484
+ _class_private_field_set(this, _progressiveQueue, borders);
1485
+ _class_private_field_set(this, _progressiveIndex, 0);
1486
+ _class_private_field_set(this, _progressiveChunkSize, chunkSize);
1487
+ // One first-touch tracking Set shared across every batch (overlap-merge correctness).
1488
+ _class_private_field_set(this, _configPassTouched, new Set());
1489
+ _class_private_method_get(this, _scheduleProgressiveChunk, scheduleProgressiveChunk).call(this, _class_private_field_get(this, _progressiveToken));
1490
+ }
1491
+ function scheduleProgressiveChunk(token) {
1492
+ this.hot._registerTimeout(()=>_class_private_method_get(this, _processProgressiveChunk, processProgressiveChunk).call(this, token), 0);
1493
+ }
1494
+ function processProgressiveChunk(token) {
1495
+ if (token !== _class_private_field_get(this, _progressiveToken) || _class_private_field_get(this, _progressiveQueue) === null) {
1496
+ return;
1497
+ }
1498
+ const queue = _class_private_field_get(this, _progressiveQueue);
1499
+ const end = Math.min(_class_private_field_get(this, _progressiveIndex) + _class_private_field_get(this, _progressiveChunkSize), queue.length);
1500
+ this.createCustomBorders(queue.slice(_class_private_field_get(this, _progressiveIndex), end));
1501
+ _class_private_field_set(this, _progressiveIndex, end);
1502
+ this.hot.render();
1503
+ if (_class_private_field_get(this, _progressiveIndex) >= queue.length) {
1504
+ _class_private_method_get(this, _finishProgressiveApply, finishProgressiveApply).call(this);
1505
+ } else {
1506
+ _class_private_method_get(this, _scheduleProgressiveChunk, scheduleProgressiveChunk).call(this, token);
735
1507
  }
736
1508
  }
1509
+ function flushProgressiveApply() {
1510
+ if (_class_private_field_get(this, _progressiveQueue) === null) {
1511
+ return;
1512
+ }
1513
+ const queue = _class_private_field_get(this, _progressiveQueue);
1514
+ while(_class_private_field_get(this, _progressiveIndex) < queue.length){
1515
+ const end = Math.min(_class_private_field_get(this, _progressiveIndex) + _class_private_field_get(this, _progressiveChunkSize), queue.length);
1516
+ this.createCustomBorders(queue.slice(_class_private_field_get(this, _progressiveIndex), end));
1517
+ _class_private_field_set(this, _progressiveIndex, end);
1518
+ }
1519
+ _class_private_method_get(this, _finishProgressiveApply, finishProgressiveApply).call(this);
1520
+ }
1521
+ function finishProgressiveApply() {
1522
+ _class_private_field_set(this, _progressiveToken, _class_private_field_get(this, _progressiveToken) + 1);
1523
+ _class_private_field_set(this, _progressiveQueue, null);
1524
+ _class_private_field_set(this, _progressiveIndex, 0);
1525
+ _class_private_field_set(this, _configPassTouched, null);
1526
+ this.hot.runHooks('afterCustomBordersUpdate');
1527
+ }
1528
+ function cancelProgressiveApply() {
1529
+ if (_class_private_field_get(this, _progressiveQueue) === null) {
1530
+ return;
1531
+ }
1532
+ _class_private_field_set(this, _progressiveToken, _class_private_field_get(this, _progressiveToken) + 1);
1533
+ _class_private_field_set(this, _progressiveQueue, null);
1534
+ _class_private_field_set(this, _progressiveIndex, 0);
1535
+ _class_private_field_set(this, _configPassTouched, null);
1536
+ }
737
1537
  function validateStyleSettings(customBorders) {
738
1538
  customBorders.forEach((customBorder)=>{
739
1539
  Object.keys(customBorder).forEach((key)=>{
@@ -754,6 +1554,66 @@ The border style will be ignored.`);
754
1554
  });
755
1555
  });
756
1556
  }
1557
+ function shiftBorders(axis, mapIndex) {
1558
+ // The in-flight progressive load was already flushed from the matching `before*` hook, while the
1559
+ // queue's coordinates still matched the grid. Flushing here instead would be too late: the core
1560
+ // shifts the cell meta before it fires the `after*` hooks, so the flushed entries would write
1561
+ // their `borders` meta onto post-shift cells the configuration never targeted.
1562
+ const survivors = [];
1563
+ (0, _array.arrayEach)(this.savedBorders, (border)=>{
1564
+ const nextIndex = mapIndex(border[axis]);
1565
+ if (nextIndex === -1) {
1566
+ return;
1567
+ }
1568
+ border[axis] = nextIndex;
1569
+ border.id = (0, _utils.createId)(border.row, border.col);
1570
+ survivors.push(border);
1571
+ });
1572
+ this.savedBorders.length = 0;
1573
+ (0, _array.arrayEach)(survivors, (border)=>this.savedBorders.push(border));
1574
+ // No render here: the `afterCreate*`/`afterRemove*` hooks fire from inside `alter()`, before it
1575
+ // finishes rewriting the column/row headers, and `alter()` renders once it is done. Forcing a
1576
+ // render mid-`alter()` paints a header row the closing render then treats as up to date, so the
1577
+ // labels stay bound to their pre-insert columns while the new column is appended at the end -
1578
+ // clicking a header then selects a different column than the one the label sits on (#11031).
1579
+ _class_private_method_get(this, _rebuildWorkingSetFromModel, rebuildWorkingSetFromModel).call(this, false);
1580
+ }
1581
+ function applyMoveSnapshot(axis, snapshot, toVisualIndex) {
1582
+ (0, _array.arrayEach)(this.savedBorders, (border, index)=>{
1583
+ const physicalIndex = snapshot[index];
1584
+ if (typeof physicalIndex !== 'number') {
1585
+ return;
1586
+ }
1587
+ const visualIndex = toVisualIndex(physicalIndex);
1588
+ if (typeof visualIndex !== 'number') {
1589
+ return;
1590
+ }
1591
+ border[axis] = visualIndex;
1592
+ border.id = (0, _utils.createId)(border.row, border.col);
1593
+ });
1594
+ _class_private_method_get(this, _rebuildWorkingSetFromModel, rebuildWorkingSetFromModel).call(this);
1595
+ }
1596
+ function rebuildWorkingSetFromModel(render = true) {
1597
+ _class_private_method_get(this, _rebuildSavedBordersIndex, rebuildSavedBordersIndex).call(this);
1598
+ _class_private_field_set(this, _bordersByRowDirty, true);
1599
+ _class_private_method_get(this, _destroyAllSelections, destroyAllSelections).call(this);
1600
+ if (render) {
1601
+ this.hot.render();
1602
+ }
1603
+ }
1604
+ function destroyBorderSelection(borderId) {
1605
+ const customSelection = _class_private_field_get(this, _customSelectionsCache).get(borderId);
1606
+ if (!customSelection) {
1607
+ return;
1608
+ }
1609
+ const { customSelections } = this.hot.selection.highlight;
1610
+ const index = customSelections.indexOf(customSelection);
1611
+ if (index > -1) {
1612
+ customSelections.splice(index, 1);
1613
+ }
1614
+ customSelection.destroy();
1615
+ _class_private_field_get(this, _customSelectionsCache).delete(borderId);
1616
+ }
757
1617
  function onAfterContextMenuDefaultOptions(rawOptions) {
758
1618
  if (!this.hot.getSettings()[PLUGIN_KEY]) {
759
1619
  return;
@@ -795,5 +1655,24 @@ function onAfterContextMenuDefaultOptions(rawOptions) {
795
1655
  });
796
1656
  }
797
1657
  function onAfterInit() {
798
- this.changeBorderSettings();
1658
+ this.changeBorderSettings(false);
1659
+ if (this.savedBorders.length > 0) {
1660
+ this.hot.addHookOnce('afterInit', ()=>this.hot.render());
1661
+ }
1662
+ }
1663
+ function scheduleMetaSyncRender() {
1664
+ if (_class_private_field_get(this, _isMetaSyncRenderScheduled)) {
1665
+ return;
1666
+ }
1667
+ _class_private_field_set(this, _isMetaSyncRenderScheduled, true);
1668
+ this.hot._registerMicrotask(()=>{
1669
+ _class_private_field_set(this, _isMetaSyncRenderScheduled, false);
1670
+ this.hot.render();
1671
+ });
1672
+ }
1673
+ function flushBeforeStructuralChange(source) {
1674
+ if (source === 'auto') {
1675
+ return;
1676
+ }
1677
+ _class_private_method_get(this, _flushProgressiveApply, flushProgressiveApply).call(this);
799
1678
  }