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
@@ -0,0 +1,159 @@
1
+ import { html } from '../../helpers/templateLiteralTag.mjs';
2
+ // The lock reuses the confirm Dialog's CSS by wearing its class names. The stylesheet ships in full
3
+ // regardless of which JS plugins are bundled, so borrowing the classes inherits the dialog's whole
4
+ // look and sizing for free - while the JS below is a minimal, self-contained copy that never
5
+ // imports the (optional) Dialog plugin. Keep these names in sync with `plugins/dialog/constants.ts`
6
+ // and the confirm template.
7
+ const DIALOG_CLASS = 'ht-dialog';
8
+ const LOCK_CLASS = 'ht-license-lock';
9
+ const SCOPE_ID = 'licenseLock';
10
+ const SHORTCUTS_CONTEXT_NAME = `plugin:${SCOPE_ID}`;
11
+ const SHORTCUTS_GROUP = SCOPE_ID;
12
+ /**
13
+ * Mounts the license lock screen: a blocking, non-dismissable overlay covering the grid.
14
+ * It looks and sizes itself exactly like a confirm Dialog by wearing the dialog's own CSS class
15
+ * names (the stylesheet is always shipped in full, so the styling is inherited without duplicating
16
+ * it), but it is a self-contained Core-owned element - it never touches the Dialog PLUGIN, which is
17
+ * optional (it may be absent from a bundle) and, being a single shared surface an app uses for its
18
+ * own dialogs, could not tell its own lifecycle apart from the lock's. This lock owns its element,
19
+ * so showing it is unambiguous.
20
+ *
21
+ * Only the copy and behavior differ from a confirm dialog: it cannot be dismissed (no Close button,
22
+ * no Escape shortcut - the hard stop is final), and it sits above app dialogs. Its width is pinned
23
+ * to the table's workspace width on every render (the `.ht-dialog` box is otherwise `width: 100%`,
24
+ * which would span the whole root wrapper, not the grid - a minimal copy of the plugin's own
25
+ * sizing); its height is the grid box. It integrates with the focus manager as a modal scope and
26
+ * routes its Tab focus trap through the shortcut manager, exactly like the Dialog plugin.
27
+ *
28
+ * @param {HotInstance} hotInstance The root Handsontable instance.
29
+ * @param {LockContent} content The lock copy.
30
+ * @returns {void}
31
+ */ export function mountLicenseLock(hotInstance, content) {
32
+ const host = hotInstance.rootOverlaysElement;
33
+ if (!host) {
34
+ return;
35
+ }
36
+ const focusScopeManager = hotInstance.getFocusScopeManager();
37
+ const shortcutManager = hotInstance.getShortcutManager();
38
+ const isRtl = hotInstance.isRtl();
39
+ const titleId = `${hotInstance.guid}-license-lock-title`;
40
+ const descriptionId = `${hotInstance.guid}-license-lock-description`;
41
+ // The exact class set the plugin's confirm dialog carries when shown, plus `ht-license-lock`.
42
+ const lockClassName = `${DIALOG_CLASS} ${DIALOG_CLASS}--confirm handsontable ${LOCK_CLASS} ` + `${DIALOG_CLASS}--background-solid ${DIALOG_CLASS}--show`;
43
+ // The confirm-dialog DOM, rebuilt with the dialog's class names (`ht-dialog--confirm`,
44
+ // `__content-wrapper`, `__content`, `__title`, `__description`, `__buttons`, `ht-button`) plus the
45
+ // `handsontable` class the dialog carries (the `.ht-button` base rules are scoped under it). The
46
+ // copy is assigned through `textContent` below, never interpolated into the markup.
47
+ const { refs } = html`
48
+ <div data-ref="lock" class="${lockClassName}"
49
+ role="alertdialog" aria-modal="true"
50
+ aria-labelledby="${titleId}" aria-describedby="${descriptionId}"
51
+ tabindex="-1" dir="${isRtl ? 'rtl' : 'ltr'}" style="display: block;">
52
+ <div class="${DIALOG_CLASS}__content-wrapper">
53
+ <div data-ref="inner" tabindex="-1" class="${DIALOG_CLASS}__content-wrapper-inner">
54
+ <div class="${DIALOG_CLASS}__content">
55
+ <h2 data-ref="title" id="${titleId}" class="${DIALOG_CLASS}__title"></h2>
56
+ <p data-ref="description" id="${descriptionId}" class="${DIALOG_CLASS}__description"></p>
57
+ </div>
58
+ <div class="${DIALOG_CLASS}__buttons">
59
+ <a data-ref="contactButton" class="ht-button ht-button--secondary" rel="noopener"></a>
60
+ </div>
61
+ </div>
62
+ </div>
63
+ </div>
64
+ `;
65
+ const lock = refs.lock;
66
+ refs.title.textContent = content.title;
67
+ refs.description.textContent = content.description;
68
+ // A real ANCHOR wearing the button classes, not a button with a click handler. The action is a
69
+ // `mailto:` address, and neither scripted route is safe for one: `window.open(..., '_blank')`
70
+ // leaves an empty tab behind on Firefox and Safari once the mail client takes over, and assigning
71
+ // `location.href` is treated as a real navigation by several browsers when no mail handler is
72
+ // registered - which would unload the app, or the iframe, from under a lock that cannot be
73
+ // dismissed. A same-window anchor click is the one path browsers special-case, and it is what the
74
+ // bottom bar and the badge popover already use for the same addresses.
75
+ refs.contactButton.textContent = content.action.text;
76
+ // `setAttribute`, because the template's refs are plain `HTMLElement`s - no cast needed for one
77
+ // attribute.
78
+ refs.contactButton.setAttribute('href', content.action.href);
79
+ // Built as nodes, never interpolated: the copy is authored here, but keeping it out of `innerHTML`
80
+ // means no license sentence can ever become markup. The anchor joins the Tab trap for free -
81
+ // `getFocusableControls` below collects `a[href]` too.
82
+ if (content.docsLink) {
83
+ const link = hotInstance.rootDocument.createElement('a');
84
+ link.href = content.docsLink.href;
85
+ link.target = '_blank';
86
+ link.rel = 'noopener';
87
+ link.textContent = content.docsLink.text;
88
+ refs.description.appendChild(link);
89
+ refs.description.appendChild(hotInstance.rootDocument.createTextNode(content.docsLink.trailingText));
90
+ }
91
+ // Collects the action anchor and the optional documentation link, in document order.
92
+ const getFocusableControls = ()=>Array.from(lock.querySelectorAll('a[href], button'));
93
+ // Match the dialog's sizing: the `.ht-dialog` box is `width: 100%` of the root wrapper, so it is
94
+ // pinned to the table's workspace width on every render (a minimal copy of the plugin's
95
+ // `#onAfterViewRender`); the height is the grid box via the CSS `height: 100%`.
96
+ const syncWidth = ()=>{
97
+ const { view } = hotInstance;
98
+ const width = view.isHorizontallyScrollableByWindow() ? view.getTotalTableWidth() : view.getWorkspaceWidth();
99
+ lock.style.width = `${width}px`;
100
+ };
101
+ hotInstance.addHook('afterViewRender', syncWidth);
102
+ const shortcutsContext = shortcutManager.getContext(SHORTCUTS_CONTEXT_NAME) ?? shortcutManager.addContext(SHORTCUTS_CONTEXT_NAME);
103
+ // The modal focus trap: Tab cycles through the lock's own controls and never leaves. The focus
104
+ // scope switches the manager to this context while focus is inside the lock, so these shortcuts
105
+ // never fire for the grid and the grid's shortcuts never fire under the lock.
106
+ shortcutsContext.addShortcut({
107
+ keys: [
108
+ [
109
+ 'Tab'
110
+ ],
111
+ [
112
+ 'Shift',
113
+ 'Tab'
114
+ ]
115
+ ],
116
+ callback: (event)=>{
117
+ const controls = getFocusableControls();
118
+ const index = controls.indexOf(hotInstance.rootDocument.activeElement);
119
+ const delta = event.shiftKey ? -1 : 1;
120
+ controls[(index + delta + controls.length) % controls.length]?.focus();
121
+ },
122
+ group: SHORTCUTS_GROUP
123
+ });
124
+ focusScopeManager.registerScope(SCOPE_ID, lock, {
125
+ shortcutsContextName: SHORTCUTS_CONTEXT_NAME,
126
+ type: 'modal',
127
+ onActivate: (focusSource)=>{
128
+ const controls = getFocusableControls();
129
+ if (focusSource === 'tab_from_below') {
130
+ controls[controls.length - 1]?.focus();
131
+ } else {
132
+ // The ACTION, not the first control in document order: where a lock carries a documentation
133
+ // link, that link sits inside the description and so comes first in the DOM. Tab still
134
+ // cycles in document order - only the landing point is the button.
135
+ refs.contactButton.focus();
136
+ }
137
+ }
138
+ });
139
+ host.appendChild(lock);
140
+ // The lock mounts during `init()`, before the grid's first render, so its width sync waits for
141
+ // `afterInit`.
142
+ //
143
+ // It does NOT take focus here. A grid can initialize while the user is typing somewhere else on the
144
+ // page (a login form above it, another grid), and grabbing the keyboard at construction would pull
145
+ // focus out of that field, scroll the page down to the lock, and - because `listen()` un-listens
146
+ // every other instance - take the keyboard away from a licensed grid too. Two blocked grids would
147
+ // fight over it. The Dialog plugin guards its own focus grab the same way, on whether the grid was
148
+ // already listening.
149
+ //
150
+ // Nothing is lost by waiting: the focus scope manager activates a scope, and calls `listen()`
151
+ // itself, on the first focusin or click inside the scope element. So the Tab trap engages the moment
152
+ // the user actually reaches the lock - by clicking it (it covers the whole grid) or by tabbing in
153
+ // through a focus catcher - and not one moment earlier.
154
+ hotInstance.addHookOnce('afterInit', ()=>{
155
+ syncWidth();
156
+ // The grid underneath is unusable, so it must not look selected. This moves no focus.
157
+ hotInstance.deselectCell();
158
+ });
159
+ }
@@ -1,4 +1,23 @@
1
1
  import type { HotInstance } from '../core/types';
2
+ export declare const LICENSE_INFO_CLASS = "hot-display-license-info";
3
+ /**
4
+ * Mounts a license bar as the last element of the bottom slot and registers a focus scope so
5
+ * keyboard navigation (Tab/Shift+Tab) includes its links. Its one caller is the built-in
6
+ * notification below (a missing, invalid or expired key, and a soft-stopped trial).
7
+ *
8
+ * The bar is intentionally a foreign node, NOT registered with the LayoutManager: registering it would
9
+ * expose it to the user's `layout` setting (reorder/remove) and to `DomSlot.clear()`, but a license
10
+ * notice must always sit last and must not be user-removable. It carries the slot-item class and
11
+ * refreshes the slot-filled state by hand, exactly as the layout module documents foreign nodes do.
12
+ *
13
+ * At most one license bar exists at a time - a key is in exactly one lifecycle state - so the single
14
+ * `licenseNotification` scope is never contended.
15
+ *
16
+ * @param {HotInstance} hotInstance The root Handsontable instance.
17
+ * @param {HTMLElement} barElement The license bar element to mount into the bottom slot.
18
+ * @returns {void}
19
+ */
20
+ export declare function mountBottomLicenseBar(hotInstance: HotInstance, barElement: HTMLElement): void;
2
21
  /**
3
22
  * Initializes the built-in license notification: injects the product info message as the last
4
23
  * element of the bottom slot when the license is invalid, expired, or missing, and registers
@@ -2,14 +2,26 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
- Object.defineProperty(exports, "initLicenseNotification", {
6
- enumerable: true,
7
- get: function() {
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: Object.getOwnPropertyDescriptor(all, name).get
9
+ });
10
+ }
11
+ _export(exports, {
12
+ get LICENSE_INFO_CLASS () {
13
+ return LICENSE_INFO_CLASS;
14
+ },
15
+ get initLicenseNotification () {
8
16
  return initLicenseNotification;
17
+ },
18
+ get mountBottomLicenseBar () {
19
+ return mountBottomLicenseBar;
9
20
  }
10
21
  });
11
22
  const _mixed = require("../helpers/mixed");
12
23
  const _constants = require("../core/layout/constants");
24
+ const _layoutManager = require("../core/layout/layoutManager");
13
25
  const SCOPE_ID = 'licenseNotification';
14
26
  const SHORTCUTS_CONTEXT_NAME = `plugin:${SCOPE_ID}`;
15
27
  const LICENSE_INFO_CLASS = 'hot-display-license-info';
@@ -33,46 +45,61 @@ const LICENSE_INFO_CLASS = 'hot-display-license-info';
33
45
  }
34
46
  return Array.from(notification.querySelectorAll('a[href]'));
35
47
  }
36
- function initLicenseNotification(hotInstance) {
48
+ function mountBottomLicenseBar(hotInstance, barElement) {
37
49
  const container = hotInstance.rootSlotBottomElement;
38
50
  if (!container) {
39
51
  return;
40
52
  }
41
- const licenseKey = hotInstance.getSettings().licenseKey;
42
- const releaseDate = typeof process !== 'undefined' && process.env?.HOT_RELEASE_DATE ? "30/06/2026" : '';
43
- const notificationElement = (0, _mixed._injectProductInfo)({
44
- className: LICENSE_INFO_CLASS,
45
- key: licenseKey,
46
- element: container,
47
- releaseDate
48
- });
49
- if (!notificationElement) {
50
- return;
51
- }
52
- // `_injectProductInfo` appended this element into the bottom slot element and returned it. The
53
- // notification is intentionally NOT registered with the LayoutManager: it must always sit last in
54
- // the bottom slot and must not be removable or reorderable through the `layout` setting or
55
- // `getLayoutManager().unregister`. Re-append it so it is the last child, and carry the shared
56
- // slot-item class so it gets the same separator styling as registered slot items. Because it is a
57
- // foreign (unregistered) node, `DomSlot` always inserts registered items before it, keeping it last
58
- // as other contributors (for example pagination) register or reorder.
59
- notificationElement.classList.add(_constants.SLOT_ITEM_CLASS);
60
- container.appendChild(notificationElement);
61
- // The scope is intentionally never unregistered: the license notification is created once during
62
- // init, cannot be disabled, and lives for the whole instance lifetime. It is cleaned up when
53
+ // Append as the last child and carry the shared slot-item class so it gets the same separator
54
+ // styling as registered slot items. Because it is a foreign (unregistered) node, `DomSlot` always
55
+ // inserts registered items before it, keeping it last as other contributors (for example pagination)
56
+ // register or reorder.
57
+ barElement.classList.add(_constants.SLOT_ITEM_CLASS);
58
+ container.appendChild(barElement);
59
+ // The bar bypasses `DomSlot`, so the wrapper's slot-filled state class (kept in sync by the
60
+ // `LayoutManager` for registered items) has to be refreshed here explicitly.
61
+ (0, _layoutManager.refreshSlotFilledState)(_constants.LAYOUT_SLOTS.BOTTOM, container);
62
+ // The scope is intentionally never unregistered: the license bar is created once during init,
63
+ // cannot be disabled, and lives for the whole instance lifetime. It is cleaned up when
63
64
  // `getFocusScopeManager().destroy()` runs on `hot.destroy()`.
64
- hotInstance.getFocusScopeManager().registerScope(SCOPE_ID, notificationElement, {
65
+ hotInstance.getFocusScopeManager().registerScope(SCOPE_ID, barElement, {
65
66
  shortcutsContextName: SHORTCUTS_CONTEXT_NAME,
66
67
  runOnlyIf: ()=>getNotificationElement(hotInstance) !== null,
67
68
  onActivate: (focusSource)=>{
68
69
  const focusableElements = getFocusableElements(hotInstance);
69
70
  if (focusableElements.length > 0) {
70
71
  if (focusSource === 'tab_from_above') {
71
- focusableElements.at(0)?.focus();
72
+ focusableElements[0]?.focus();
72
73
  } else if (focusSource === 'tab_from_below') {
73
- focusableElements.at(-1)?.focus();
74
+ focusableElements[focusableElements.length - 1]?.focus();
74
75
  }
75
76
  }
76
77
  }
77
78
  });
78
79
  }
80
+ function initLicenseNotification(hotInstance) {
81
+ const container = hotInstance.rootSlotBottomElement;
82
+ if (!container) {
83
+ return;
84
+ }
85
+ const licenseKey = hotInstance.getSettings().licenseKey;
86
+ // DO NOT wrap this in a `typeof process` guard (or any `process` existence check). The bundler
87
+ // replaces the whole `"28/08/2026"` expression with a string literal at build time,
88
+ // so the bare read never touches a runtime `process` object and cannot crash. A guard is NOT
89
+ // inlined - it survives as `typeof process !== 'undefined' && "..."`, which is `false` in every
90
+ // browser bundle, blanks the release date, and silently kills expired-key detection. That was the
91
+ // 18.0.0 regression this read restores; re-adding the guard reintroduces it.
92
+ const releaseDate = "28/08/2026" || '';
93
+ const notificationElement = (0, _mixed._injectProductInfo)({
94
+ className: LICENSE_INFO_CLASS,
95
+ key: licenseKey,
96
+ element: container,
97
+ releaseDate
98
+ });
99
+ if (!notificationElement) {
100
+ return;
101
+ }
102
+ // `_injectProductInfo` already appended this element into the bottom slot and returned it;
103
+ // `mountBottomLicenseBar` re-appends it as the last child and wires the focus scope.
104
+ mountBottomLicenseBar(hotInstance, notificationElement);
105
+ }
@@ -1,8 +1,9 @@
1
1
  import { _injectProductInfo } from '../helpers/mixed.mjs';
2
- import { SLOT_ITEM_CLASS } from '../core/layout/constants.mjs';
2
+ import { LAYOUT_SLOTS, SLOT_ITEM_CLASS } from '../core/layout/constants.mjs';
3
+ import { refreshSlotFilledState } from '../core/layout/layoutManager.mjs';
3
4
  const SCOPE_ID = 'licenseNotification';
4
5
  const SHORTCUTS_CONTEXT_NAME = `plugin:${SCOPE_ID}`;
5
- const LICENSE_INFO_CLASS = 'hot-display-license-info';
6
+ export const LICENSE_INFO_CLASS = 'hot-display-license-info';
6
7
  /**
7
8
  * Returns the license notification DOM element when present.
8
9
  *
@@ -23,6 +24,54 @@ const LICENSE_INFO_CLASS = 'hot-display-license-info';
23
24
  }
24
25
  return Array.from(notification.querySelectorAll('a[href]'));
25
26
  }
27
+ /**
28
+ * Mounts a license bar as the last element of the bottom slot and registers a focus scope so
29
+ * keyboard navigation (Tab/Shift+Tab) includes its links. Its one caller is the built-in
30
+ * notification below (a missing, invalid or expired key, and a soft-stopped trial).
31
+ *
32
+ * The bar is intentionally a foreign node, NOT registered with the LayoutManager: registering it would
33
+ * expose it to the user's `layout` setting (reorder/remove) and to `DomSlot.clear()`, but a license
34
+ * notice must always sit last and must not be user-removable. It carries the slot-item class and
35
+ * refreshes the slot-filled state by hand, exactly as the layout module documents foreign nodes do.
36
+ *
37
+ * At most one license bar exists at a time - a key is in exactly one lifecycle state - so the single
38
+ * `licenseNotification` scope is never contended.
39
+ *
40
+ * @param {HotInstance} hotInstance The root Handsontable instance.
41
+ * @param {HTMLElement} barElement The license bar element to mount into the bottom slot.
42
+ * @returns {void}
43
+ */ export function mountBottomLicenseBar(hotInstance, barElement) {
44
+ const container = hotInstance.rootSlotBottomElement;
45
+ if (!container) {
46
+ return;
47
+ }
48
+ // Append as the last child and carry the shared slot-item class so it gets the same separator
49
+ // styling as registered slot items. Because it is a foreign (unregistered) node, `DomSlot` always
50
+ // inserts registered items before it, keeping it last as other contributors (for example pagination)
51
+ // register or reorder.
52
+ barElement.classList.add(SLOT_ITEM_CLASS);
53
+ container.appendChild(barElement);
54
+ // The bar bypasses `DomSlot`, so the wrapper's slot-filled state class (kept in sync by the
55
+ // `LayoutManager` for registered items) has to be refreshed here explicitly.
56
+ refreshSlotFilledState(LAYOUT_SLOTS.BOTTOM, container);
57
+ // The scope is intentionally never unregistered: the license bar is created once during init,
58
+ // cannot be disabled, and lives for the whole instance lifetime. It is cleaned up when
59
+ // `getFocusScopeManager().destroy()` runs on `hot.destroy()`.
60
+ hotInstance.getFocusScopeManager().registerScope(SCOPE_ID, barElement, {
61
+ shortcutsContextName: SHORTCUTS_CONTEXT_NAME,
62
+ runOnlyIf: ()=>getNotificationElement(hotInstance) !== null,
63
+ onActivate: (focusSource)=>{
64
+ const focusableElements = getFocusableElements(hotInstance);
65
+ if (focusableElements.length > 0) {
66
+ if (focusSource === 'tab_from_above') {
67
+ focusableElements[0]?.focus();
68
+ } else if (focusSource === 'tab_from_below') {
69
+ focusableElements[focusableElements.length - 1]?.focus();
70
+ }
71
+ }
72
+ }
73
+ });
74
+ }
26
75
  /**
27
76
  * Initializes the built-in license notification: injects the product info message as the last
28
77
  * element of the bottom slot when the license is invalid, expired, or missing, and registers
@@ -38,7 +87,13 @@ const LICENSE_INFO_CLASS = 'hot-display-license-info';
38
87
  return;
39
88
  }
40
89
  const licenseKey = hotInstance.getSettings().licenseKey;
41
- const releaseDate = typeof process !== 'undefined' && process.env?.HOT_RELEASE_DATE ? "30/06/2026" : '';
90
+ // DO NOT wrap this in a `typeof process` guard (or any `process` existence check). The bundler
91
+ // replaces the whole `"28/08/2026"` expression with a string literal at build time,
92
+ // so the bare read never touches a runtime `process` object and cannot crash. A guard is NOT
93
+ // inlined - it survives as `typeof process !== 'undefined' && "..."`, which is `false` in every
94
+ // browser bundle, blanks the release date, and silently kills expired-key detection. That was the
95
+ // 18.0.0 regression this read restores; re-adding the guard reintroduces it.
96
+ const releaseDate = "28/08/2026" || '';
42
97
  const notificationElement = _injectProductInfo({
43
98
  className: LICENSE_INFO_CLASS,
44
99
  key: licenseKey,
@@ -48,30 +103,7 @@ const LICENSE_INFO_CLASS = 'hot-display-license-info';
48
103
  if (!notificationElement) {
49
104
  return;
50
105
  }
51
- // `_injectProductInfo` appended this element into the bottom slot element and returned it. The
52
- // notification is intentionally NOT registered with the LayoutManager: it must always sit last in
53
- // the bottom slot and must not be removable or reorderable through the `layout` setting or
54
- // `getLayoutManager().unregister`. Re-append it so it is the last child, and carry the shared
55
- // slot-item class so it gets the same separator styling as registered slot items. Because it is a
56
- // foreign (unregistered) node, `DomSlot` always inserts registered items before it, keeping it last
57
- // as other contributors (for example pagination) register or reorder.
58
- notificationElement.classList.add(SLOT_ITEM_CLASS);
59
- container.appendChild(notificationElement);
60
- // The scope is intentionally never unregistered: the license notification is created once during
61
- // init, cannot be disabled, and lives for the whole instance lifetime. It is cleaned up when
62
- // `getFocusScopeManager().destroy()` runs on `hot.destroy()`.
63
- hotInstance.getFocusScopeManager().registerScope(SCOPE_ID, notificationElement, {
64
- shortcutsContextName: SHORTCUTS_CONTEXT_NAME,
65
- runOnlyIf: ()=>getNotificationElement(hotInstance) !== null,
66
- onActivate: (focusSource)=>{
67
- const focusableElements = getFocusableElements(hotInstance);
68
- if (focusableElements.length > 0) {
69
- if (focusSource === 'tab_from_above') {
70
- focusableElements.at(0)?.focus();
71
- } else if (focusSource === 'tab_from_below') {
72
- focusableElements.at(-1)?.focus();
73
- }
74
- }
75
- }
76
- });
106
+ // `_injectProductInfo` already appended this element into the bottom slot and returned it;
107
+ // `mountBottomLicenseBar` re-appends it as the last child and wires the focus scope.
108
+ mountBottomLicenseBar(hotInstance, notificationElement);
77
109
  }
@@ -0,0 +1 @@
1
+ export * from './movableMeta.js';
@@ -0,0 +1,40 @@
1
+ import type { HotInstance } from '../core/types';
2
+ /**
3
+ * The cell-meta keys that travel with a cell moved by the `moveCells` feature. Shared between the
4
+ * MoveCells plugin (which moves the meta) and the UndoRedo `MoveCellsAction` (which must restore
5
+ * exactly this set — a key added in one place but missed in the other would silently stop being
6
+ * undone). It lives outside both plugins so that neither imports the other — registering just one
7
+ * of them through the tree-shakeable `base.ts` entry must not pull the other in.
8
+ */
9
+ export declare const MOVABLE_META_KEYS: ReadonlyArray<string>;
10
+ /**
11
+ * A sparse record of one cell's own movable meta: the cell's visual coordinates plus only the
12
+ * movable keys the cell carries as its own properties.
13
+ */
14
+ export interface MovableMetaEntry {
15
+ /**
16
+ * The visual row index of the cell.
17
+ */
18
+ row: number;
19
+ /**
20
+ * The visual column index of the cell.
21
+ */
22
+ col: number;
23
+ /**
24
+ * The cell's own movable meta keys and their values.
25
+ */
26
+ meta: Record<string, unknown>;
27
+ }
28
+ /**
29
+ * Collects the cells of a visual region that carry their own movable meta keys. The result is
30
+ * sparse — cells without any own movable key produce no entry — so a move allocates
31
+ * proportionally to the number of styled cells, not to the range area.
32
+ *
33
+ * @param {HotInstance} hot The Handsontable instance.
34
+ * @param {number} fromRow The visual top row of the region.
35
+ * @param {number} fromCol The visual start column of the region.
36
+ * @param {number} toRow The visual bottom row of the region.
37
+ * @param {number} toCol The visual end column of the region.
38
+ * @returns {MovableMetaEntry[]}
39
+ */
40
+ export declare function collectMovableMeta(hot: HotInstance, fromRow: number, fromCol: number, toRow: number, toCol: number): MovableMetaEntry[];
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: Object.getOwnPropertyDescriptor(all, name).get
9
+ });
10
+ }
11
+ _export(exports, {
12
+ get MOVABLE_META_KEYS () {
13
+ return MOVABLE_META_KEYS;
14
+ },
15
+ get collectMovableMeta () {
16
+ return collectMovableMeta;
17
+ }
18
+ });
19
+ const _object = require("../helpers/object");
20
+ const MOVABLE_META_KEYS = [
21
+ 'className'
22
+ ];
23
+ function collectMovableMeta(hot, fromRow, fromCol, toRow, toCol) {
24
+ const entries = [];
25
+ for(let row = fromRow; row <= toRow; row++){
26
+ for(let col = fromCol; col <= toCol; col++){
27
+ // Transient: only the movable keys are copied out below and the meta object is discarded, so
28
+ // materializing one per visited cell would retain memory the viewport cannot evict.
29
+ const cellMeta = hot.getCellMetaTransient(row, col);
30
+ let meta = null;
31
+ for (const key of MOVABLE_META_KEYS){
32
+ if ((0, _object.hasOwnProperty)(cellMeta, key)) {
33
+ meta = meta ?? {};
34
+ meta[key] = cellMeta[key];
35
+ }
36
+ }
37
+ if (meta !== null) {
38
+ entries.push({
39
+ row,
40
+ col,
41
+ meta
42
+ });
43
+ }
44
+ }
45
+ }
46
+ return entries;
47
+ }
@@ -0,0 +1,46 @@
1
+ import { hasOwnProperty } from '../helpers/object.mjs';
2
+ /**
3
+ * The cell-meta keys that travel with a cell moved by the `moveCells` feature. Shared between the
4
+ * MoveCells plugin (which moves the meta) and the UndoRedo `MoveCellsAction` (which must restore
5
+ * exactly this set — a key added in one place but missed in the other would silently stop being
6
+ * undone). It lives outside both plugins so that neither imports the other — registering just one
7
+ * of them through the tree-shakeable `base.ts` entry must not pull the other in.
8
+ */ export const MOVABLE_META_KEYS = [
9
+ 'className'
10
+ ];
11
+ /**
12
+ * Collects the cells of a visual region that carry their own movable meta keys. The result is
13
+ * sparse — cells without any own movable key produce no entry — so a move allocates
14
+ * proportionally to the number of styled cells, not to the range area.
15
+ *
16
+ * @param {HotInstance} hot The Handsontable instance.
17
+ * @param {number} fromRow The visual top row of the region.
18
+ * @param {number} fromCol The visual start column of the region.
19
+ * @param {number} toRow The visual bottom row of the region.
20
+ * @param {number} toCol The visual end column of the region.
21
+ * @returns {MovableMetaEntry[]}
22
+ */ export function collectMovableMeta(hot, fromRow, fromCol, toRow, toCol) {
23
+ const entries = [];
24
+ for(let row = fromRow; row <= toRow; row++){
25
+ for(let col = fromCol; col <= toCol; col++){
26
+ // Transient: only the movable keys are copied out below and the meta object is discarded, so
27
+ // materializing one per visited cell would retain memory the viewport cannot evict.
28
+ const cellMeta = hot.getCellMetaTransient(row, col);
29
+ let meta = null;
30
+ for (const key of MOVABLE_META_KEYS){
31
+ if (hasOwnProperty(cellMeta, key)) {
32
+ meta = meta ?? {};
33
+ meta[key] = cellMeta[key];
34
+ }
35
+ }
36
+ if (meta !== null) {
37
+ entries.push({
38
+ row,
39
+ col,
40
+ meta
41
+ });
42
+ }
43
+ }
44
+ }
45
+ return entries;
46
+ }
@@ -76,7 +76,7 @@ function instanceToHTML(instance) {
76
76
  cell = `<th>${instance.getRowHeader(row - columnModifier)}</th>`;
77
77
  } else {
78
78
  const cellData = data[row][column];
79
- const { hidden, rowspan, colspan } = instance.getCellMeta(row - columnModifier, column - rowModifier);
79
+ const { hidden, rowspan, colspan } = instance.getCellMetaTransient(row - columnModifier, column - rowModifier);
80
80
  if (!hidden) {
81
81
  const attrs = [];
82
82
  if (rowspan) {
@@ -215,21 +215,30 @@ function replaceTdCellsWithTextContent(html) {
215
215
  }
216
216
  function htmlToGridSettings(element, rootDocument = document) {
217
217
  const settingsObj = {};
218
- const fragment = rootDocument.createDocumentFragment();
219
- const tempElem = rootDocument.createElement('div');
220
- fragment.appendChild(tempElem);
221
218
  let checkElement = element;
219
+ // Root the sibling-node lookups below (currently only the generator `<meta>`) at the parsed
220
+ // markup. Stays `null` when a live element is passed in, which is what the previous
221
+ // implementation effectively did - the scratch element it searched was empty in that case.
222
+ let parsedRoot = null;
222
223
  if (typeof checkElement === 'string') {
223
224
  // Use replaceTdCellsWithTextContent so nested <td> (e.g. Excel shape cells) are matched correctly
224
225
  const normalizedHTML = replaceTdCellsWithTextContent(checkElement);
225
- tempElem.insertAdjacentHTML('afterbegin', normalizedHTML);
226
- checkElement = tempElem.querySelector('table');
226
+ // `DOMParser` builds a document with no browsing context, so reading the pasted markup cannot
227
+ // run any of it: no image fetch, no `onerror`, no script. Writing the same string into a
228
+ // detached element of `rootDocument` does run it - the element is detached, but the document
229
+ // owning it is not inert, which is how an `<img src=x onerror>` in a paste payload executed.
230
+ // The parsed nodes are only ever read from here. Importing them into `rootDocument` would
231
+ // make them live again, so never do that.
232
+ // eslint-disable-next-line no-restricted-globals
233
+ const Parser = rootDocument.defaultView?.DOMParser ?? DOMParser;
234
+ parsedRoot = new Parser().parseFromString(normalizedHTML, 'text/html');
235
+ checkElement = parsedRoot.querySelector('table');
227
236
  }
228
237
  if (!checkElement || !isHTMLTable(checkElement)) {
229
238
  return;
230
239
  }
231
240
  const el = checkElement;
232
- const generator = tempElem.querySelector('meta[name$="enerator"]');
241
+ const generator = parsedRoot?.querySelector('meta[name$="enerator"]') ?? null;
233
242
  const hasRowHeaders = el.querySelector('tbody th') !== null;
234
243
  const trElement = el.querySelector('tr');
235
244
  const countCols = !trElement ? 0 : Array.from(trElement.cells).reduce((cols, cell)=>cols + cell.colSpan, 0) - (hasRowHeaders ? 1 : 0);
@@ -57,7 +57,7 @@ const regEscapedChars = new RegExp(Object.keys(ESCAPED_HTML_CHARS).map((key)=>`(
57
57
  cell = `<th>${instance.getRowHeader(row - columnModifier)}</th>`;
58
58
  } else {
59
59
  const cellData = data[row][column];
60
- const { hidden, rowspan, colspan } = instance.getCellMeta(row - columnModifier, column - rowModifier);
60
+ const { hidden, rowspan, colspan } = instance.getCellMetaTransient(row - columnModifier, column - rowModifier);
61
61
  if (!hidden) {
62
62
  const attrs = [];
63
63
  if (rowspan) {
@@ -217,21 +217,30 @@ const paragraphRegexp = /<p.*?>/g;
217
217
  */ // eslint-disable-next-line no-restricted-globals
218
218
  export function htmlToGridSettings(element, rootDocument = document) {
219
219
  const settingsObj = {};
220
- const fragment = rootDocument.createDocumentFragment();
221
- const tempElem = rootDocument.createElement('div');
222
- fragment.appendChild(tempElem);
223
220
  let checkElement = element;
221
+ // Root the sibling-node lookups below (currently only the generator `<meta>`) at the parsed
222
+ // markup. Stays `null` when a live element is passed in, which is what the previous
223
+ // implementation effectively did - the scratch element it searched was empty in that case.
224
+ let parsedRoot = null;
224
225
  if (typeof checkElement === 'string') {
225
226
  // Use replaceTdCellsWithTextContent so nested <td> (e.g. Excel shape cells) are matched correctly
226
227
  const normalizedHTML = replaceTdCellsWithTextContent(checkElement);
227
- tempElem.insertAdjacentHTML('afterbegin', normalizedHTML);
228
- checkElement = tempElem.querySelector('table');
228
+ // `DOMParser` builds a document with no browsing context, so reading the pasted markup cannot
229
+ // run any of it: no image fetch, no `onerror`, no script. Writing the same string into a
230
+ // detached element of `rootDocument` does run it - the element is detached, but the document
231
+ // owning it is not inert, which is how an `<img src=x onerror>` in a paste payload executed.
232
+ // The parsed nodes are only ever read from here. Importing them into `rootDocument` would
233
+ // make them live again, so never do that.
234
+ // eslint-disable-next-line no-restricted-globals
235
+ const Parser = rootDocument.defaultView?.DOMParser ?? DOMParser;
236
+ parsedRoot = new Parser().parseFromString(normalizedHTML, 'text/html');
237
+ checkElement = parsedRoot.querySelector('table');
229
238
  }
230
239
  if (!checkElement || !isHTMLTable(checkElement)) {
231
240
  return;
232
241
  }
233
242
  const el = checkElement;
234
- const generator = tempElem.querySelector('meta[name$="enerator"]');
243
+ const generator = parsedRoot?.querySelector('meta[name$="enerator"]') ?? null;
235
244
  const hasRowHeaders = el.querySelector('tbody th') !== null;
236
245
  const trElement = el.querySelector('tr');
237
246
  const countCols = !trElement ? 0 : Array.from(trElement.cells).reduce((cols, cell)=>cols + cell.colSpan, 0) - (hasRowHeaders ? 1 : 0);