handsontable 0.0.0-next-b66c79f-20230713 → 0.0.0-next-08765b9-20230714

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of handsontable might be problematic. Click here for more details.

Files changed (373) hide show
  1. package/3rdparty/walkontable/src/cell/coords.d.ts +6 -1
  2. package/3rdparty/walkontable/src/cell/coords.js +87 -33
  3. package/3rdparty/walkontable/src/cell/coords.mjs +87 -33
  4. package/3rdparty/walkontable/src/cell/range.d.ts +9 -2
  5. package/3rdparty/walkontable/src/cell/range.js +92 -46
  6. package/3rdparty/walkontable/src/cell/range.mjs +92 -46
  7. package/3rdparty/walkontable/src/core/_base.js +41 -33
  8. package/3rdparty/walkontable/src/core/_base.mjs +41 -33
  9. package/3rdparty/walkontable/src/core/clone.js +8 -5
  10. package/3rdparty/walkontable/src/core/clone.mjs +8 -5
  11. package/3rdparty/walkontable/src/core/core.js +3 -2
  12. package/3rdparty/walkontable/src/core/core.mjs +3 -2
  13. package/3rdparty/walkontable/src/event.js +9 -8
  14. package/3rdparty/walkontable/src/event.mjs +9 -8
  15. package/3rdparty/walkontable/src/facade/core.js +2 -2
  16. package/3rdparty/walkontable/src/facade/core.mjs +2 -2
  17. package/3rdparty/walkontable/src/index.js +10 -2
  18. package/3rdparty/walkontable/src/index.mjs +2 -2
  19. package/3rdparty/walkontable/src/overlay/_base.js +11 -9
  20. package/3rdparty/walkontable/src/overlay/_base.mjs +11 -9
  21. package/3rdparty/walkontable/src/overlay/bottom.js +10 -8
  22. package/3rdparty/walkontable/src/overlay/bottom.mjs +10 -8
  23. package/3rdparty/walkontable/src/overlay/inlineStart.js +2 -6
  24. package/3rdparty/walkontable/src/overlay/inlineStart.mjs +2 -6
  25. package/3rdparty/walkontable/src/overlay/top.js +12 -14
  26. package/3rdparty/walkontable/src/overlay/top.mjs +12 -14
  27. package/3rdparty/walkontable/src/overlay/topInlineStartCorner.js +16 -13
  28. package/3rdparty/walkontable/src/overlay/topInlineStartCorner.mjs +16 -13
  29. package/3rdparty/walkontable/src/overlays.js +75 -80
  30. package/3rdparty/walkontable/src/overlays.mjs +75 -80
  31. package/3rdparty/walkontable/src/scroll.js +27 -24
  32. package/3rdparty/walkontable/src/scroll.mjs +27 -24
  33. package/3rdparty/walkontable/src/{border.js → selection/border/border.js} +7 -12
  34. package/3rdparty/walkontable/src/{border.mjs → selection/border/border.mjs} +7 -12
  35. package/3rdparty/walkontable/src/selection/border/constants.js +16 -0
  36. package/3rdparty/walkontable/src/selection/border/constants.mjs +12 -0
  37. package/3rdparty/walkontable/src/selection/constants.js +62 -0
  38. package/3rdparty/walkontable/src/selection/constants.mjs +51 -0
  39. package/3rdparty/walkontable/src/selection/index.js +26 -0
  40. package/3rdparty/walkontable/src/selection/index.mjs +5 -0
  41. package/3rdparty/walkontable/src/selection/manager.js +259 -0
  42. package/3rdparty/walkontable/src/selection/manager.mjs +254 -0
  43. package/3rdparty/walkontable/src/selection/scanner.js +270 -0
  44. package/3rdparty/walkontable/src/selection/scanner.mjs +267 -0
  45. package/3rdparty/walkontable/src/selection/selection.js +101 -0
  46. package/3rdparty/walkontable/src/selection/selection.mjs +96 -0
  47. package/3rdparty/walkontable/src/settings.js +18 -17
  48. package/3rdparty/walkontable/src/settings.mjs +18 -17
  49. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +9 -0
  50. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +9 -0
  51. package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +9 -0
  52. package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +9 -0
  53. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.js +9 -0
  54. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.mjs +9 -0
  55. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +9 -0
  56. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +9 -0
  57. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +9 -0
  58. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +9 -0
  59. package/3rdparty/walkontable/src/table.js +48 -115
  60. package/3rdparty/walkontable/src/table.mjs +49 -116
  61. package/base.js +2 -2
  62. package/base.mjs +2 -2
  63. package/core/focusCatcher/focusDetector.js +58 -0
  64. package/core/focusCatcher/focusDetector.mjs +54 -0
  65. package/core/focusCatcher/index.js +142 -0
  66. package/core/focusCatcher/index.mjs +138 -0
  67. package/core/index.js +9 -0
  68. package/core/index.mjs +1 -0
  69. package/core.d.ts +6 -3
  70. package/core.js +181 -298
  71. package/core.mjs +181 -298
  72. package/dataMap/metaManager/metaLayers/cellMeta.js +2 -1
  73. package/dataMap/metaManager/metaLayers/cellMeta.mjs +2 -1
  74. package/dataMap/metaManager/metaLayers/globalMeta.js +1 -1
  75. package/dataMap/metaManager/metaLayers/globalMeta.mjs +1 -1
  76. package/dataMap/metaManager/metaSchema.js +41 -0
  77. package/dataMap/metaManager/metaSchema.mjs +41 -0
  78. package/dataMap/metaManager/mods/dynamicCellMeta.js +3 -2
  79. package/dataMap/metaManager/mods/dynamicCellMeta.mjs +3 -2
  80. package/dataMap/metaManager/utils.js +4 -2
  81. package/dataMap/metaManager/utils.mjs +4 -2
  82. package/dist/handsontable.css +19 -3
  83. package/dist/handsontable.full.css +19 -3
  84. package/dist/handsontable.full.js +10739 -7037
  85. package/dist/handsontable.full.min.css +3 -3
  86. package/dist/handsontable.full.min.js +25 -25
  87. package/dist/handsontable.js +24884 -21182
  88. package/dist/handsontable.min.css +3 -3
  89. package/dist/handsontable.min.js +19 -19
  90. package/editorManager.js +11 -75
  91. package/editorManager.mjs +11 -74
  92. package/editors/autocompleteEditor/autocompleteEditor.js +70 -67
  93. package/editors/autocompleteEditor/autocompleteEditor.mjs +70 -67
  94. package/editors/baseEditor/baseEditor.js +1 -1
  95. package/editors/baseEditor/baseEditor.mjs +1 -1
  96. package/editors/dateEditor/dateEditor.js +2 -1
  97. package/editors/dateEditor/dateEditor.mjs +2 -1
  98. package/editors/textEditor/textEditor.js +3 -11
  99. package/editors/textEditor/textEditor.mjs +4 -12
  100. package/helpers/mixed.js +1 -1
  101. package/helpers/mixed.mjs +1 -1
  102. package/helpers/number.d.ts +1 -0
  103. package/helpers/number.js +18 -0
  104. package/helpers/number.mjs +17 -0
  105. package/helpers/object.js +1 -0
  106. package/helpers/object.mjs +1 -0
  107. package/index.js +5 -5
  108. package/index.mjs +5 -5
  109. package/package.json +1 -1
  110. package/pluginHooks.d.ts +7 -1
  111. package/pluginHooks.js +106 -1
  112. package/pluginHooks.mjs +106 -1
  113. package/plugins/autoColumnSize/autoColumnSize.js +4 -1
  114. package/plugins/autoColumnSize/autoColumnSize.mjs +4 -1
  115. package/plugins/collapsibleColumns/collapsibleColumns.js +110 -40
  116. package/plugins/collapsibleColumns/collapsibleColumns.mjs +110 -40
  117. package/plugins/columnSorting/columnSorting.js +40 -1
  118. package/plugins/columnSorting/columnSorting.mjs +40 -3
  119. package/plugins/columnSorting/columnStatesManager.js +2 -1
  120. package/plugins/columnSorting/columnStatesManager.mjs +2 -1
  121. package/plugins/columnSorting/index.js +3 -1
  122. package/plugins/columnSorting/index.mjs +1 -1
  123. package/plugins/comments/commentEditor.js +1 -0
  124. package/plugins/comments/commentEditor.mjs +1 -0
  125. package/plugins/comments/comments.js +253 -191
  126. package/plugins/comments/comments.mjs +252 -192
  127. package/plugins/comments/contextMenuItem/addEditComment.js +41 -0
  128. package/plugins/comments/contextMenuItem/addEditComment.mjs +35 -0
  129. package/plugins/comments/contextMenuItem/readOnlyComment.js +49 -0
  130. package/plugins/comments/contextMenuItem/readOnlyComment.mjs +43 -0
  131. package/plugins/comments/contextMenuItem/removeComment.js +38 -0
  132. package/plugins/comments/contextMenuItem/removeComment.mjs +32 -0
  133. package/plugins/contextMenu/contextMenu.d.ts +1 -1
  134. package/plugins/contextMenu/contextMenu.js +72 -30
  135. package/plugins/contextMenu/contextMenu.mjs +73 -31
  136. package/plugins/contextMenu/predefinedItems/alignment.js +7 -0
  137. package/plugins/contextMenu/predefinedItems/alignment.mjs +7 -0
  138. package/plugins/contextMenu/predefinedItems/clearColumn.js +5 -3
  139. package/plugins/contextMenu/predefinedItems/clearColumn.mjs +5 -3
  140. package/plugins/contextMenu/predefinedItems/columnLeft.js +5 -3
  141. package/plugins/contextMenu/predefinedItems/columnLeft.mjs +5 -3
  142. package/plugins/contextMenu/predefinedItems/columnRight.js +5 -3
  143. package/plugins/contextMenu/predefinedItems/columnRight.mjs +5 -3
  144. package/plugins/contextMenu/predefinedItems/readOnly.js +7 -0
  145. package/plugins/contextMenu/predefinedItems/readOnly.mjs +7 -0
  146. package/plugins/contextMenu/predefinedItems/removeColumn.js +7 -5
  147. package/plugins/contextMenu/predefinedItems/removeColumn.mjs +5 -3
  148. package/plugins/contextMenu/predefinedItems/removeRow.js +7 -5
  149. package/plugins/contextMenu/predefinedItems/removeRow.mjs +5 -3
  150. package/plugins/contextMenu/predefinedItems/rowAbove.js +5 -3
  151. package/plugins/contextMenu/predefinedItems/rowAbove.mjs +5 -3
  152. package/plugins/contextMenu/predefinedItems/rowBelow.js +5 -3
  153. package/plugins/contextMenu/predefinedItems/rowBelow.mjs +5 -3
  154. package/plugins/contextMenu/utils.js +28 -16
  155. package/plugins/contextMenu/utils.mjs +27 -15
  156. package/plugins/copyPaste/contextMenuItem/copy.js +7 -0
  157. package/plugins/copyPaste/contextMenuItem/copy.mjs +7 -0
  158. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.js +9 -1
  159. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.mjs +9 -1
  160. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.js +9 -1
  161. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.mjs +9 -1
  162. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.js +9 -1
  163. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.mjs +9 -1
  164. package/plugins/copyPaste/contextMenuItem/cut.js +7 -0
  165. package/plugins/copyPaste/contextMenuItem/cut.mjs +7 -0
  166. package/plugins/copyPaste/copyPaste.js +12 -6
  167. package/plugins/copyPaste/copyPaste.mjs +12 -6
  168. package/plugins/customBorders/customBorders.js +36 -29
  169. package/plugins/customBorders/customBorders.mjs +37 -30
  170. package/plugins/customBorders/utils.js +3 -3
  171. package/plugins/customBorders/utils.mjs +3 -3
  172. package/plugins/dropdownMenu/dropdownMenu.d.ts +1 -1
  173. package/plugins/dropdownMenu/dropdownMenu.js +89 -32
  174. package/plugins/dropdownMenu/dropdownMenu.mjs +89 -32
  175. package/plugins/filters/conditionCollection.js +6 -5
  176. package/plugins/filters/conditionCollection.mjs +6 -5
  177. package/plugins/filters/filters.js +44 -21
  178. package/plugins/filters/filters.mjs +43 -20
  179. package/plugins/formulas/engine/register.js +3 -3
  180. package/plugins/formulas/engine/register.mjs +3 -3
  181. package/plugins/formulas/engine/settings.js +6 -3
  182. package/plugins/formulas/engine/settings.mjs +6 -3
  183. package/plugins/formulas/formulas.js +151 -143
  184. package/plugins/formulas/formulas.mjs +151 -143
  185. package/plugins/formulas/indexSyncer/axisSyncer.js +115 -79
  186. package/plugins/formulas/indexSyncer/axisSyncer.mjs +115 -79
  187. package/plugins/formulas/indexSyncer/index.js +100 -64
  188. package/plugins/formulas/indexSyncer/index.mjs +100 -64
  189. package/plugins/hiddenColumns/contextMenuItem/showColumn.js +2 -2
  190. package/plugins/hiddenColumns/contextMenuItem/showColumn.mjs +2 -2
  191. package/plugins/hiddenColumns/hiddenColumns.js +51 -34
  192. package/plugins/hiddenColumns/hiddenColumns.mjs +51 -34
  193. package/plugins/hiddenRows/contextMenuItem/showRow.js +2 -2
  194. package/plugins/hiddenRows/contextMenuItem/showRow.mjs +2 -2
  195. package/plugins/hiddenRows/hiddenRows.js +50 -33
  196. package/plugins/hiddenRows/hiddenRows.mjs +50 -33
  197. package/plugins/manualRowResize/manualRowResize.js +2 -1
  198. package/plugins/manualRowResize/manualRowResize.mjs +2 -1
  199. package/plugins/mergeCells/mergeCells.js +6 -17
  200. package/plugins/mergeCells/mergeCells.mjs +6 -17
  201. package/plugins/multiColumnSorting/multiColumnSorting.js +37 -2
  202. package/plugins/multiColumnSorting/multiColumnSorting.mjs +37 -2
  203. package/plugins/nestedHeaders/nestedHeaders.js +209 -75
  204. package/plugins/nestedHeaders/nestedHeaders.mjs +208 -74
  205. package/plugins/nestedHeaders/stateManager/headersTree.js +58 -38
  206. package/plugins/nestedHeaders/stateManager/headersTree.mjs +58 -38
  207. package/plugins/nestedHeaders/stateManager/index.js +107 -49
  208. package/plugins/nestedHeaders/stateManager/index.mjs +105 -47
  209. package/plugins/nestedHeaders/stateManager/nodeModifiers/collapse.js +1 -1
  210. package/plugins/nestedHeaders/stateManager/nodeModifiers/collapse.mjs +1 -1
  211. package/plugins/nestedHeaders/stateManager/sourceSettings.js +57 -37
  212. package/plugins/nestedHeaders/stateManager/sourceSettings.mjs +57 -37
  213. package/plugins/nestedHeaders/utils/ghostTable.js +39 -35
  214. package/plugins/nestedHeaders/utils/ghostTable.mjs +39 -35
  215. package/plugins/nestedRows/data/dataManager.js +4 -2
  216. package/plugins/nestedRows/data/dataManager.mjs +4 -2
  217. package/plugins/nestedRows/nestedRows.js +41 -0
  218. package/plugins/nestedRows/nestedRows.mjs +41 -0
  219. package/plugins/persistentState/storage.js +1 -0
  220. package/plugins/persistentState/storage.mjs +1 -0
  221. package/plugins/undoRedo/undoRedo.js +2 -1
  222. package/plugins/undoRedo/undoRedo.mjs +2 -1
  223. package/renderers/checkboxRenderer/checkboxRenderer.js +2 -2
  224. package/renderers/checkboxRenderer/checkboxRenderer.mjs +1 -1
  225. package/selection/highlight/highlight.js +256 -71
  226. package/selection/highlight/highlight.mjs +250 -71
  227. package/selection/highlight/types/activeHeader.js +10 -8
  228. package/selection/highlight/types/activeHeader.mjs +10 -8
  229. package/selection/highlight/types/area.js +6 -18
  230. package/selection/highlight/types/area.mjs +6 -18
  231. package/selection/highlight/types/areaLayered.js +31 -0
  232. package/selection/highlight/types/areaLayered.mjs +26 -0
  233. package/selection/highlight/types/column.js +27 -0
  234. package/selection/highlight/types/column.mjs +22 -0
  235. package/selection/highlight/types/customSelection.js +7 -9
  236. package/selection/highlight/types/customSelection.mjs +7 -9
  237. package/selection/highlight/types/fill.js +5 -7
  238. package/selection/highlight/types/fill.mjs +5 -7
  239. package/selection/highlight/types/{cell.js → focus.js} +5 -7
  240. package/selection/highlight/types/{cell.mjs → focus.mjs} +5 -7
  241. package/selection/highlight/types/header.js +9 -18
  242. package/selection/highlight/types/header.mjs +9 -18
  243. package/selection/highlight/types/row.js +27 -0
  244. package/selection/highlight/types/row.mjs +22 -0
  245. package/selection/highlight/visualSelection.js +41 -33
  246. package/selection/highlight/visualSelection.mjs +41 -33
  247. package/selection/index.js +4 -7
  248. package/selection/index.mjs +2 -3
  249. package/selection/mouseEventHandler.js +1 -1
  250. package/selection/mouseEventHandler.mjs +1 -1
  251. package/selection/range.js +8 -8
  252. package/selection/range.mjs +8 -8
  253. package/selection/selection.js +290 -154
  254. package/selection/selection.mjs +287 -153
  255. package/selection/transformation.js +232 -90
  256. package/selection/transformation.mjs +232 -90
  257. package/selection/utils.js +15 -21
  258. package/selection/utils.mjs +16 -21
  259. package/settings.d.ts +2 -0
  260. package/shortcutContexts/commands/editor/closeAndSave.js +12 -0
  261. package/shortcutContexts/commands/editor/closeAndSave.mjs +8 -0
  262. package/shortcutContexts/commands/editor/closeWithoutSaving.js +12 -0
  263. package/shortcutContexts/commands/editor/closeWithoutSaving.mjs +8 -0
  264. package/shortcutContexts/commands/editor/fastOpen.js +16 -0
  265. package/shortcutContexts/commands/editor/fastOpen.mjs +12 -0
  266. package/shortcutContexts/commands/editor/index.js +16 -0
  267. package/shortcutContexts/commands/editor/index.mjs +12 -0
  268. package/shortcutContexts/commands/editor/open.js +27 -0
  269. package/shortcutContexts/commands/editor/open.mjs +23 -0
  270. package/shortcutContexts/commands/emptySelectedCells.js +11 -0
  271. package/shortcutContexts/commands/emptySelectedCells.mjs +7 -0
  272. package/shortcutContexts/commands/extendCellsSelection/down.js +15 -0
  273. package/shortcutContexts/commands/extendCellsSelection/down.mjs +11 -0
  274. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +21 -0
  275. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +17 -0
  276. package/shortcutContexts/commands/extendCellsSelection/index.js +26 -0
  277. package/shortcutContexts/commands/extendCellsSelection/index.mjs +22 -0
  278. package/shortcutContexts/commands/extendCellsSelection/left.js +15 -0
  279. package/shortcutContexts/commands/extendCellsSelection/left.mjs +11 -0
  280. package/shortcutContexts/commands/extendCellsSelection/right.js +15 -0
  281. package/shortcutContexts/commands/extendCellsSelection/right.mjs +11 -0
  282. package/shortcutContexts/commands/extendCellsSelection/toColumns.js +19 -0
  283. package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +15 -0
  284. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +29 -0
  285. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +25 -0
  286. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +19 -0
  287. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +15 -0
  288. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +19 -0
  289. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +15 -0
  290. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +29 -0
  291. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +25 -0
  292. package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +29 -0
  293. package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +25 -0
  294. package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +29 -0
  295. package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +25 -0
  296. package/shortcutContexts/commands/extendCellsSelection/toRows.js +19 -0
  297. package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +15 -0
  298. package/shortcutContexts/commands/extendCellsSelection/up.js +15 -0
  299. package/shortcutContexts/commands/extendCellsSelection/up.mjs +11 -0
  300. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +21 -0
  301. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +17 -0
  302. package/shortcutContexts/commands/index.js +35 -0
  303. package/shortcutContexts/commands/index.mjs +31 -0
  304. package/shortcutContexts/commands/moveCellSelection/down.js +13 -0
  305. package/shortcutContexts/commands/moveCellSelection/down.mjs +9 -0
  306. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +31 -0
  307. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +27 -0
  308. package/shortcutContexts/commands/moveCellSelection/index.js +28 -0
  309. package/shortcutContexts/commands/moveCellSelection/index.mjs +24 -0
  310. package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +12 -0
  311. package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +8 -0
  312. package/shortcutContexts/commands/moveCellSelection/inlineStart.js +12 -0
  313. package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +8 -0
  314. package/shortcutContexts/commands/moveCellSelection/left.js +10 -0
  315. package/shortcutContexts/commands/moveCellSelection/left.mjs +6 -0
  316. package/shortcutContexts/commands/moveCellSelection/right.js +10 -0
  317. package/shortcutContexts/commands/moveCellSelection/right.mjs +6 -0
  318. package/shortcutContexts/commands/moveCellSelection/toMostBottom.js +17 -0
  319. package/shortcutContexts/commands/moveCellSelection/toMostBottom.mjs +13 -0
  320. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.js +18 -0
  321. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.mjs +14 -0
  322. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.js +14 -0
  323. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.mjs +10 -0
  324. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.js +17 -0
  325. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.mjs +13 -0
  326. package/shortcutContexts/commands/moveCellSelection/toMostLeft.js +19 -0
  327. package/shortcutContexts/commands/moveCellSelection/toMostLeft.mjs +15 -0
  328. package/shortcutContexts/commands/moveCellSelection/toMostRight.js +21 -0
  329. package/shortcutContexts/commands/moveCellSelection/toMostRight.mjs +17 -0
  330. package/shortcutContexts/commands/moveCellSelection/toMostTop.js +17 -0
  331. package/shortcutContexts/commands/moveCellSelection/toMostTop.mjs +13 -0
  332. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.js +19 -0
  333. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.mjs +15 -0
  334. package/shortcutContexts/commands/moveCellSelection/up.js +13 -0
  335. package/shortcutContexts/commands/moveCellSelection/up.mjs +9 -0
  336. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +31 -0
  337. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +27 -0
  338. package/shortcutContexts/commands/populateSelectedCellsData.js +29 -0
  339. package/shortcutContexts/commands/populateSelectedCellsData.mjs +25 -0
  340. package/shortcutContexts/commands/scrollToFocusedCell.js +36 -0
  341. package/shortcutContexts/commands/scrollToFocusedCell.mjs +32 -0
  342. package/shortcutContexts/commands/selectAll.js +10 -0
  343. package/shortcutContexts/commands/selectAll.mjs +6 -0
  344. package/shortcutContexts/constants.js +13 -0
  345. package/shortcutContexts/constants.mjs +8 -0
  346. package/shortcutContexts/editor.js +25 -0
  347. package/shortcutContexts/editor.mjs +21 -0
  348. package/shortcutContexts/grid.js +163 -0
  349. package/shortcutContexts/grid.mjs +159 -0
  350. package/shortcutContexts/index.js +24 -0
  351. package/shortcutContexts/index.mjs +11 -0
  352. package/shortcuts/manager.js +2 -0
  353. package/shortcuts/manager.mjs +2 -0
  354. package/shortcuts/recorder.js +2 -2
  355. package/shortcuts/recorder.mjs +2 -2
  356. package/shortcuts/utils.js +19 -5
  357. package/shortcuts/utils.mjs +18 -4
  358. package/tableView.js +163 -91
  359. package/tableView.mjs +163 -91
  360. package/translations/changesObservable/observable.js +82 -54
  361. package/translations/changesObservable/observable.mjs +82 -54
  362. package/translations/changesObservable/observer.js +24 -11
  363. package/translations/changesObservable/observer.mjs +24 -11
  364. package/translations/maps/linkedPhysicalIndexToValueMap.js +14 -8
  365. package/translations/maps/linkedPhysicalIndexToValueMap.mjs +14 -8
  366. package/utils/dataStructures/tree.js +21 -18
  367. package/utils/dataStructures/tree.mjs +21 -18
  368. package/3rdparty/walkontable/src/selection.js +0 -295
  369. package/3rdparty/walkontable/src/selection.mjs +0 -290
  370. package/selection/highlight/constants.js +0 -15
  371. package/selection/highlight/constants.mjs +0 -6
  372. package/selection/highlight/types/index.js +0 -35
  373. package/selection/highlight/types/index.mjs +0 -31
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Selection type that is visible only if the row or column header is clicked. If that happened
3
+ * all row or column header layers are highlighted.
4
+ *
5
+ * @type {string}
6
+ */
7
+ export const ACTIVE_HEADER_TYPE = 'active-header';
8
+ /**
9
+ * Selection type that is visible only if the a cell or cells are clicked. If that happened
10
+ * only the most closest to the cells row or column header is highlighted.
11
+ *
12
+ * @type {string}
13
+ */
14
+ export const HEADER_TYPE = 'header';
15
+ /**
16
+ * Selection type that is visible when a cell or cells are clicked. The selected cells are
17
+ * highlighted.
18
+ *
19
+ * @type {string}
20
+ */
21
+ export const AREA_TYPE = 'area';
22
+ /**
23
+ * Selection type defines a cell that follows the user (keyboard navigation).
24
+ *
25
+ * @type {string}
26
+ */
27
+ export const FOCUS_TYPE = 'focus';
28
+ /**
29
+ * Selection type defines borders for the autofill functionality.
30
+ *
31
+ * @type {string}
32
+ */
33
+ export const FILL_TYPE = 'fill';
34
+ /**
35
+ * Selection type defines highlights for the `currentRowClassName` option.
36
+ *
37
+ * @type {string}
38
+ */
39
+ export const ROW_TYPE = 'row';
40
+ /**
41
+ * Selection type defines highlights for the `currentColumnClassName` option.
42
+ *
43
+ * @type {string}
44
+ */
45
+ export const COLUMN_TYPE = 'column';
46
+ /**
47
+ * Selection type defines highlights managed by the CustomBorders plugin.
48
+ *
49
+ * @type {string}
50
+ */
51
+ export const CUSTOM_SELECTION_TYPE = 'custom-selection';
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ var _exportNames = {
5
+ SelectionManager: true,
6
+ Selection: true
7
+ };
8
+ var _selection = _interopRequireDefault(require("./selection"));
9
+ exports.Selection = _selection.default;
10
+ var _constants = require("./constants");
11
+ Object.keys(_constants).forEach(function (key) {
12
+ if (key === "default" || key === "__esModule") return;
13
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
14
+ if (key in exports && exports[key] === _constants[key]) return;
15
+ exports[key] = _constants[key];
16
+ });
17
+ var _constants2 = require("./border/constants");
18
+ Object.keys(_constants2).forEach(function (key) {
19
+ if (key === "default" || key === "__esModule") return;
20
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
21
+ if (key in exports && exports[key] === _constants2[key]) return;
22
+ exports[key] = _constants2[key];
23
+ });
24
+ var _manager = require("./manager");
25
+ exports.SelectionManager = _manager.SelectionManager;
26
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -0,0 +1,5 @@
1
+ import Selection from "./selection.mjs";
2
+ export * from "./constants.mjs";
3
+ export * from "./border/constants.mjs";
4
+ export { SelectionManager } from "./manager.mjs";
5
+ export { Selection };
@@ -0,0 +1,259 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ require("core-js/modules/es.array.unscopables.flat.js");
5
+ require("core-js/modules/es.error.cause.js");
6
+ var _element = require("../../../../helpers/dom/element");
7
+ var _scanner2 = require("./scanner");
8
+ var _border = _interopRequireDefault(require("./border/border"));
9
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
+ function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
11
+ function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
12
+ function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
13
+ function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; }
14
+ function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
15
+ function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
16
+ function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
17
+ function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
18
+ function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } }
19
+ /**
20
+ * Module responsible for rendering selections (CSS classes) and borders based on the
21
+ * collection of the Selection instances provided throughout the `selections` Walkontable
22
+ * setting.
23
+ *
24
+ * @private
25
+ */
26
+ var _activeOverlaysWot = /*#__PURE__*/new WeakMap();
27
+ var _selections = /*#__PURE__*/new WeakMap();
28
+ var _scanner = /*#__PURE__*/new WeakMap();
29
+ var _appliedClasses = /*#__PURE__*/new WeakMap();
30
+ var _destroyListeners = /*#__PURE__*/new WeakMap();
31
+ var _selectionBorders = /*#__PURE__*/new WeakMap();
32
+ var _resetCells = /*#__PURE__*/new WeakSet();
33
+ class SelectionManager {
34
+ constructor(selections) {
35
+ /**
36
+ * Resets the elements to their initial state (remove the CSS classes that are added in the
37
+ * previous render cycle).
38
+ */
39
+ _classPrivateMethodInitSpec(this, _resetCells);
40
+ /**
41
+ * The overlay's Walkontable instance that are currently processed.
42
+ *
43
+ * @type {Walkontable}
44
+ */
45
+ _classPrivateFieldInitSpec(this, _activeOverlaysWot, {
46
+ writable: true,
47
+ value: void 0
48
+ });
49
+ /**
50
+ * The Highlight instance that holds Selections instances within it.
51
+ *
52
+ * @type {Highlight|null}
53
+ */
54
+ _classPrivateFieldInitSpec(this, _selections, {
55
+ writable: true,
56
+ value: void 0
57
+ });
58
+ /**
59
+ * The SelectionScanner allows to scan and collect the cell and header elements that matches
60
+ * to the coords defined in the selections.
61
+ *
62
+ * @type {SelectionScanner}
63
+ */
64
+ _classPrivateFieldInitSpec(this, _scanner, {
65
+ writable: true,
66
+ value: new _scanner2.SelectionScanner()
67
+ });
68
+ /**
69
+ * The Map tracks applied CSS classes. It's used to reset the elements state to their initial state.
70
+ *
71
+ * @type {WeakMap}
72
+ */
73
+ _classPrivateFieldInitSpec(this, _appliedClasses, {
74
+ writable: true,
75
+ value: new WeakMap()
76
+ });
77
+ /**
78
+ * The Map tracks applied "destroy" listeners for Selection instances.
79
+ *
80
+ * @type {WeakMap}
81
+ */
82
+ _classPrivateFieldInitSpec(this, _destroyListeners, {
83
+ writable: true,
84
+ value: new WeakSet()
85
+ });
86
+ /**
87
+ * The Map holds references to Border classes for Selection instances which requires that when
88
+ * the "border" setting is defined.
89
+ *
90
+ * @type {Map}
91
+ */
92
+ _classPrivateFieldInitSpec(this, _selectionBorders, {
93
+ writable: true,
94
+ value: new Map()
95
+ });
96
+ _classPrivateFieldSet(this, _selections, selections);
97
+ }
98
+
99
+ /**
100
+ * Sets the active Walkontable instance.
101
+ *
102
+ * @param {Walkontable} activeWot The overlays or master Walkontable instance.
103
+ * @returns {SelectionManager}
104
+ */
105
+ setActiveOverlay(activeWot) {
106
+ _classPrivateFieldSet(this, _activeOverlaysWot, activeWot);
107
+ _classPrivateFieldGet(this, _scanner).setActiveOverlay(_classPrivateFieldGet(this, _activeOverlaysWot));
108
+ if (!_classPrivateFieldGet(this, _appliedClasses).has(_classPrivateFieldGet(this, _activeOverlaysWot))) {
109
+ _classPrivateFieldGet(this, _appliedClasses).set(_classPrivateFieldGet(this, _activeOverlaysWot), new Set());
110
+ }
111
+ return this;
112
+ }
113
+
114
+ /**
115
+ * Gets the Selection instance of the "focus" type.
116
+ *
117
+ * @returns {Selection|null}
118
+ */
119
+ getFocusSelection() {
120
+ return _classPrivateFieldGet(this, _selections) !== null ? _classPrivateFieldGet(this, _selections).getFocus() : null;
121
+ }
122
+
123
+ /**
124
+ * Gets the Selection instance of the "area" type.
125
+ *
126
+ * @returns {Selection|null}
127
+ */
128
+ getAreaSelection() {
129
+ return _classPrivateFieldGet(this, _selections) !== null ? _classPrivateFieldGet(this, _selections).createLayeredArea() : null;
130
+ }
131
+
132
+ /**
133
+ * Gets the Border instance associated with Selection instance.
134
+ *
135
+ * @param {Selection} selection The selection instance.
136
+ * @returns {Border|null} Returns the Border instance (new for each overlay Walkontable instance).
137
+ */
138
+ getBorderInstance(selection) {
139
+ if (!selection.settings.border) {
140
+ return null;
141
+ }
142
+ if (_classPrivateFieldGet(this, _selectionBorders).has(selection)) {
143
+ const borders = _classPrivateFieldGet(this, _selectionBorders).get(selection);
144
+ if (borders.has(_classPrivateFieldGet(this, _activeOverlaysWot))) {
145
+ return borders.get(_classPrivateFieldGet(this, _activeOverlaysWot));
146
+ }
147
+ const border = new _border.default(_classPrivateFieldGet(this, _activeOverlaysWot), selection.settings);
148
+ borders.set(_classPrivateFieldGet(this, _activeOverlaysWot), border);
149
+ return border;
150
+ }
151
+ const border = new _border.default(_classPrivateFieldGet(this, _activeOverlaysWot), selection.settings);
152
+ _classPrivateFieldGet(this, _selectionBorders).set(selection, new Map([[_classPrivateFieldGet(this, _activeOverlaysWot), border]]));
153
+ return border;
154
+ }
155
+
156
+ /**
157
+ * Gets all Border instances associated with Selection instance for all overlays.
158
+ *
159
+ * @param {Selection} selection The selection instance.
160
+ * @returns {Border[]}
161
+ */
162
+ getBorderInstances(selection) {
163
+ var _classPrivateFieldGet2, _classPrivateFieldGet3;
164
+ return Array.from((_classPrivateFieldGet2 = (_classPrivateFieldGet3 = _classPrivateFieldGet(this, _selectionBorders).get(selection)) === null || _classPrivateFieldGet3 === void 0 ? void 0 : _classPrivateFieldGet3.values()) !== null && _classPrivateFieldGet2 !== void 0 ? _classPrivateFieldGet2 : []);
165
+ }
166
+
167
+ /**
168
+ * Destroys the Border instance associated with Selection instance.
169
+ *
170
+ * @param {Selection} selection The selection instance.
171
+ */
172
+ destroyBorders(selection) {
173
+ _classPrivateFieldGet(this, _selectionBorders).get(selection).forEach(border => border.destroy());
174
+ _classPrivateFieldGet(this, _selectionBorders).delete(selection);
175
+ }
176
+
177
+ /**
178
+ * Renders all the selections (add CSS classes to cells and draw borders).
179
+ *
180
+ * @param {boolean} fastDraw Indicates the render cycle type (fast/slow).
181
+ */
182
+ render(fastDraw) {
183
+ if (_classPrivateFieldGet(this, _selections) === null) {
184
+ return;
185
+ }
186
+ if (fastDraw) {
187
+ // there was no rerender, so we need to remove classNames by ourselves
188
+ _classPrivateMethodGet(this, _resetCells, _resetCells2).call(this);
189
+ }
190
+ const selections = Array.from(_classPrivateFieldGet(this, _selections));
191
+ const classNamesMap = new Map();
192
+ for (let i = 0; i < selections.length; i++) {
193
+ const selection = selections[i];
194
+ const {
195
+ className,
196
+ createLayers,
197
+ selectionType
198
+ } = selection.settings;
199
+ if (!_classPrivateFieldGet(this, _destroyListeners).has(selection)) {
200
+ _classPrivateFieldGet(this, _destroyListeners).add(selection);
201
+ selection.addLocalHook('destroy', () => this.destroyBorders(selection));
202
+ }
203
+ const borderInstance = this.getBorderInstance(selection);
204
+ if (selection.isEmpty()) {
205
+ borderInstance === null || borderInstance === void 0 ? void 0 : borderInstance.disappear();
206
+ continue; // eslint-disable-line no-continue
207
+ }
208
+
209
+ if (className) {
210
+ const elements = _classPrivateFieldGet(this, _scanner).setActiveSelection(selection).scan();
211
+ elements.forEach(element => {
212
+ if (classNamesMap.has(element)) {
213
+ const classNamesLayers = classNamesMap.get(element);
214
+ if (classNamesLayers.has(className) && createLayers === true) {
215
+ classNamesLayers.set(className, classNamesLayers.get(className) + 1);
216
+ } else {
217
+ classNamesLayers.set(className, 1);
218
+ }
219
+ } else {
220
+ classNamesMap.set(element, new Map([[className, 1]]));
221
+ }
222
+ });
223
+ }
224
+ const corners = selection.getCorners();
225
+ _classPrivateFieldGet(this, _activeOverlaysWot).getSetting('onBeforeDrawBorders', corners, selectionType);
226
+ borderInstance === null || borderInstance === void 0 ? void 0 : borderInstance.appear(corners);
227
+ }
228
+ classNamesMap.forEach((classNamesLayers, element) => {
229
+ const classNames = Array.from(classNamesLayers).map(_ref => {
230
+ let [className, occurrenceCount] = _ref;
231
+ if (occurrenceCount === 1) {
232
+ return className;
233
+ }
234
+ return [className, ...Array.from({
235
+ length: occurrenceCount - 1
236
+ }, (_, i) => `${className}-${i + 1}`)];
237
+ }).flat();
238
+ classNames.forEach(className => _classPrivateFieldGet(this, _appliedClasses).get(_classPrivateFieldGet(this, _activeOverlaysWot)).add(className));
239
+ (0, _element.addClass)(element, classNames);
240
+ });
241
+ }
242
+ }
243
+ exports.SelectionManager = SelectionManager;
244
+ function _resetCells2() {
245
+ const appliedOverlaysClasses = _classPrivateFieldGet(this, _appliedClasses).get(_classPrivateFieldGet(this, _activeOverlaysWot));
246
+ const classesToRemove = _classPrivateFieldGet(this, _activeOverlaysWot).wtSettings.getSetting('onBeforeRemoveCellClassNames');
247
+ if (Array.isArray(classesToRemove)) {
248
+ for (let i = 0; i < classesToRemove.length; i++) {
249
+ appliedOverlaysClasses.add(classesToRemove[i]);
250
+ }
251
+ }
252
+ appliedOverlaysClasses.forEach(className => {
253
+ const nodes = _classPrivateFieldGet(this, _activeOverlaysWot).wtTable.TABLE.querySelectorAll(`.${className}`);
254
+ for (let i = 0, len = nodes.length; i < len; i++) {
255
+ (0, _element.removeClass)(nodes[i], className);
256
+ }
257
+ });
258
+ appliedOverlaysClasses.clear();
259
+ }
@@ -0,0 +1,254 @@
1
+ import "core-js/modules/es.array.unscopables.flat.js";
2
+ import "core-js/modules/es.error.cause.js";
3
+ function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
4
+ function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
5
+ function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
6
+ function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; }
7
+ function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
8
+ function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
9
+ function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
10
+ function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
11
+ function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } }
12
+ import { removeClass, addClass } from "../../../../helpers/dom/element.mjs";
13
+ import { SelectionScanner } from "./scanner.mjs";
14
+ import Border from "./border/border.mjs";
15
+ /**
16
+ * Module responsible for rendering selections (CSS classes) and borders based on the
17
+ * collection of the Selection instances provided throughout the `selections` Walkontable
18
+ * setting.
19
+ *
20
+ * @private
21
+ */
22
+ var _activeOverlaysWot = /*#__PURE__*/new WeakMap();
23
+ var _selections = /*#__PURE__*/new WeakMap();
24
+ var _scanner = /*#__PURE__*/new WeakMap();
25
+ var _appliedClasses = /*#__PURE__*/new WeakMap();
26
+ var _destroyListeners = /*#__PURE__*/new WeakMap();
27
+ var _selectionBorders = /*#__PURE__*/new WeakMap();
28
+ var _resetCells = /*#__PURE__*/new WeakSet();
29
+ export class SelectionManager {
30
+ constructor(selections) {
31
+ /**
32
+ * Resets the elements to their initial state (remove the CSS classes that are added in the
33
+ * previous render cycle).
34
+ */
35
+ _classPrivateMethodInitSpec(this, _resetCells);
36
+ /**
37
+ * The overlay's Walkontable instance that are currently processed.
38
+ *
39
+ * @type {Walkontable}
40
+ */
41
+ _classPrivateFieldInitSpec(this, _activeOverlaysWot, {
42
+ writable: true,
43
+ value: void 0
44
+ });
45
+ /**
46
+ * The Highlight instance that holds Selections instances within it.
47
+ *
48
+ * @type {Highlight|null}
49
+ */
50
+ _classPrivateFieldInitSpec(this, _selections, {
51
+ writable: true,
52
+ value: void 0
53
+ });
54
+ /**
55
+ * The SelectionScanner allows to scan and collect the cell and header elements that matches
56
+ * to the coords defined in the selections.
57
+ *
58
+ * @type {SelectionScanner}
59
+ */
60
+ _classPrivateFieldInitSpec(this, _scanner, {
61
+ writable: true,
62
+ value: new SelectionScanner()
63
+ });
64
+ /**
65
+ * The Map tracks applied CSS classes. It's used to reset the elements state to their initial state.
66
+ *
67
+ * @type {WeakMap}
68
+ */
69
+ _classPrivateFieldInitSpec(this, _appliedClasses, {
70
+ writable: true,
71
+ value: new WeakMap()
72
+ });
73
+ /**
74
+ * The Map tracks applied "destroy" listeners for Selection instances.
75
+ *
76
+ * @type {WeakMap}
77
+ */
78
+ _classPrivateFieldInitSpec(this, _destroyListeners, {
79
+ writable: true,
80
+ value: new WeakSet()
81
+ });
82
+ /**
83
+ * The Map holds references to Border classes for Selection instances which requires that when
84
+ * the "border" setting is defined.
85
+ *
86
+ * @type {Map}
87
+ */
88
+ _classPrivateFieldInitSpec(this, _selectionBorders, {
89
+ writable: true,
90
+ value: new Map()
91
+ });
92
+ _classPrivateFieldSet(this, _selections, selections);
93
+ }
94
+
95
+ /**
96
+ * Sets the active Walkontable instance.
97
+ *
98
+ * @param {Walkontable} activeWot The overlays or master Walkontable instance.
99
+ * @returns {SelectionManager}
100
+ */
101
+ setActiveOverlay(activeWot) {
102
+ _classPrivateFieldSet(this, _activeOverlaysWot, activeWot);
103
+ _classPrivateFieldGet(this, _scanner).setActiveOverlay(_classPrivateFieldGet(this, _activeOverlaysWot));
104
+ if (!_classPrivateFieldGet(this, _appliedClasses).has(_classPrivateFieldGet(this, _activeOverlaysWot))) {
105
+ _classPrivateFieldGet(this, _appliedClasses).set(_classPrivateFieldGet(this, _activeOverlaysWot), new Set());
106
+ }
107
+ return this;
108
+ }
109
+
110
+ /**
111
+ * Gets the Selection instance of the "focus" type.
112
+ *
113
+ * @returns {Selection|null}
114
+ */
115
+ getFocusSelection() {
116
+ return _classPrivateFieldGet(this, _selections) !== null ? _classPrivateFieldGet(this, _selections).getFocus() : null;
117
+ }
118
+
119
+ /**
120
+ * Gets the Selection instance of the "area" type.
121
+ *
122
+ * @returns {Selection|null}
123
+ */
124
+ getAreaSelection() {
125
+ return _classPrivateFieldGet(this, _selections) !== null ? _classPrivateFieldGet(this, _selections).createLayeredArea() : null;
126
+ }
127
+
128
+ /**
129
+ * Gets the Border instance associated with Selection instance.
130
+ *
131
+ * @param {Selection} selection The selection instance.
132
+ * @returns {Border|null} Returns the Border instance (new for each overlay Walkontable instance).
133
+ */
134
+ getBorderInstance(selection) {
135
+ if (!selection.settings.border) {
136
+ return null;
137
+ }
138
+ if (_classPrivateFieldGet(this, _selectionBorders).has(selection)) {
139
+ const borders = _classPrivateFieldGet(this, _selectionBorders).get(selection);
140
+ if (borders.has(_classPrivateFieldGet(this, _activeOverlaysWot))) {
141
+ return borders.get(_classPrivateFieldGet(this, _activeOverlaysWot));
142
+ }
143
+ const border = new Border(_classPrivateFieldGet(this, _activeOverlaysWot), selection.settings);
144
+ borders.set(_classPrivateFieldGet(this, _activeOverlaysWot), border);
145
+ return border;
146
+ }
147
+ const border = new Border(_classPrivateFieldGet(this, _activeOverlaysWot), selection.settings);
148
+ _classPrivateFieldGet(this, _selectionBorders).set(selection, new Map([[_classPrivateFieldGet(this, _activeOverlaysWot), border]]));
149
+ return border;
150
+ }
151
+
152
+ /**
153
+ * Gets all Border instances associated with Selection instance for all overlays.
154
+ *
155
+ * @param {Selection} selection The selection instance.
156
+ * @returns {Border[]}
157
+ */
158
+ getBorderInstances(selection) {
159
+ var _classPrivateFieldGet2, _classPrivateFieldGet3;
160
+ return Array.from((_classPrivateFieldGet2 = (_classPrivateFieldGet3 = _classPrivateFieldGet(this, _selectionBorders).get(selection)) === null || _classPrivateFieldGet3 === void 0 ? void 0 : _classPrivateFieldGet3.values()) !== null && _classPrivateFieldGet2 !== void 0 ? _classPrivateFieldGet2 : []);
161
+ }
162
+
163
+ /**
164
+ * Destroys the Border instance associated with Selection instance.
165
+ *
166
+ * @param {Selection} selection The selection instance.
167
+ */
168
+ destroyBorders(selection) {
169
+ _classPrivateFieldGet(this, _selectionBorders).get(selection).forEach(border => border.destroy());
170
+ _classPrivateFieldGet(this, _selectionBorders).delete(selection);
171
+ }
172
+
173
+ /**
174
+ * Renders all the selections (add CSS classes to cells and draw borders).
175
+ *
176
+ * @param {boolean} fastDraw Indicates the render cycle type (fast/slow).
177
+ */
178
+ render(fastDraw) {
179
+ if (_classPrivateFieldGet(this, _selections) === null) {
180
+ return;
181
+ }
182
+ if (fastDraw) {
183
+ // there was no rerender, so we need to remove classNames by ourselves
184
+ _classPrivateMethodGet(this, _resetCells, _resetCells2).call(this);
185
+ }
186
+ const selections = Array.from(_classPrivateFieldGet(this, _selections));
187
+ const classNamesMap = new Map();
188
+ for (let i = 0; i < selections.length; i++) {
189
+ const selection = selections[i];
190
+ const {
191
+ className,
192
+ createLayers,
193
+ selectionType
194
+ } = selection.settings;
195
+ if (!_classPrivateFieldGet(this, _destroyListeners).has(selection)) {
196
+ _classPrivateFieldGet(this, _destroyListeners).add(selection);
197
+ selection.addLocalHook('destroy', () => this.destroyBorders(selection));
198
+ }
199
+ const borderInstance = this.getBorderInstance(selection);
200
+ if (selection.isEmpty()) {
201
+ borderInstance === null || borderInstance === void 0 ? void 0 : borderInstance.disappear();
202
+ continue; // eslint-disable-line no-continue
203
+ }
204
+
205
+ if (className) {
206
+ const elements = _classPrivateFieldGet(this, _scanner).setActiveSelection(selection).scan();
207
+ elements.forEach(element => {
208
+ if (classNamesMap.has(element)) {
209
+ const classNamesLayers = classNamesMap.get(element);
210
+ if (classNamesLayers.has(className) && createLayers === true) {
211
+ classNamesLayers.set(className, classNamesLayers.get(className) + 1);
212
+ } else {
213
+ classNamesLayers.set(className, 1);
214
+ }
215
+ } else {
216
+ classNamesMap.set(element, new Map([[className, 1]]));
217
+ }
218
+ });
219
+ }
220
+ const corners = selection.getCorners();
221
+ _classPrivateFieldGet(this, _activeOverlaysWot).getSetting('onBeforeDrawBorders', corners, selectionType);
222
+ borderInstance === null || borderInstance === void 0 ? void 0 : borderInstance.appear(corners);
223
+ }
224
+ classNamesMap.forEach((classNamesLayers, element) => {
225
+ const classNames = Array.from(classNamesLayers).map(_ref => {
226
+ let [className, occurrenceCount] = _ref;
227
+ if (occurrenceCount === 1) {
228
+ return className;
229
+ }
230
+ return [className, ...Array.from({
231
+ length: occurrenceCount - 1
232
+ }, (_, i) => `${className}-${i + 1}`)];
233
+ }).flat();
234
+ classNames.forEach(className => _classPrivateFieldGet(this, _appliedClasses).get(_classPrivateFieldGet(this, _activeOverlaysWot)).add(className));
235
+ addClass(element, classNames);
236
+ });
237
+ }
238
+ }
239
+ function _resetCells2() {
240
+ const appliedOverlaysClasses = _classPrivateFieldGet(this, _appliedClasses).get(_classPrivateFieldGet(this, _activeOverlaysWot));
241
+ const classesToRemove = _classPrivateFieldGet(this, _activeOverlaysWot).wtSettings.getSetting('onBeforeRemoveCellClassNames');
242
+ if (Array.isArray(classesToRemove)) {
243
+ for (let i = 0; i < classesToRemove.length; i++) {
244
+ appliedOverlaysClasses.add(classesToRemove[i]);
245
+ }
246
+ }
247
+ appliedOverlaysClasses.forEach(className => {
248
+ const nodes = _classPrivateFieldGet(this, _activeOverlaysWot).wtTable.TABLE.querySelectorAll(`.${className}`);
249
+ for (let i = 0, len = nodes.length; i < len; i++) {
250
+ removeClass(nodes[i], className);
251
+ }
252
+ });
253
+ appliedOverlaysClasses.clear();
254
+ }