@revolist/revogrid 4.0.11 → 4.0.14

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 (378) hide show
  1. package/dist/cjs/app-globals-53fde1aa.js.map +1 -1
  2. package/dist/cjs/base.plugin-32f80cb5.js +219 -0
  3. package/dist/cjs/base.plugin-32f80cb5.js.map +1 -0
  4. package/dist/cjs/{column.service-e83d9809.js → column.service-52b4cac9.js} +28 -12
  5. package/dist/cjs/column.service-52b4cac9.js.map +1 -0
  6. package/dist/cjs/dimension.helpers-ee39d6c4.js.map +1 -1
  7. package/dist/cjs/events-b28cc194.js +52 -0
  8. package/dist/cjs/events-b28cc194.js.map +1 -0
  9. package/dist/cjs/filter.button-db6cbd2e.js.map +1 -1
  10. package/dist/cjs/{header-cell-renderer-8ba9b56d.js → header-cell-renderer-a3f202a1.js} +2 -2
  11. package/dist/cjs/{header-cell-renderer-8ba9b56d.js.map → header-cell-renderer-a3f202a1.js.map} +1 -1
  12. package/dist/cjs/{index-73c149e3.js → index-a9f1b728.js} +3 -4
  13. package/dist/cjs/index-a9f1b728.js.map +1 -0
  14. package/dist/cjs/index.cjs.js +26 -23
  15. package/dist/cjs/index.cjs.js.map +1 -1
  16. package/dist/cjs/{key.utils-59b9b528.js → key.utils-ee3d9eab.js} +2 -2
  17. package/dist/cjs/{key.utils-59b9b528.js.map → key.utils-ee3d9eab.js.map} +1 -1
  18. package/dist/cjs/revo-grid.cjs.entry.js +74 -164
  19. package/dist/cjs/revo-grid.cjs.entry.js.map +1 -1
  20. package/dist/cjs/revogr-attribution_6.cjs.entry.js +193 -142
  21. package/dist/cjs/revogr-attribution_6.cjs.entry.js.map +1 -1
  22. package/dist/cjs/revogr-clipboard_3.cjs.entry.js +2 -2
  23. package/dist/cjs/revogr-clipboard_3.cjs.entry.js.map +1 -1
  24. package/dist/cjs/revogr-data_4.cjs.entry.js +9 -9
  25. package/dist/cjs/revogr-data_4.cjs.entry.js.map +1 -1
  26. package/dist/cjs/revogr-filter-panel.cjs.entry.js.map +1 -1
  27. package/dist/cjs/{selection.store-2e110a67.js → selection.helpers-32abb2a9.js} +77 -75
  28. package/dist/cjs/selection.helpers-32abb2a9.js.map +1 -0
  29. package/dist/cjs/{throttle-f7aee21b.js → throttle-46478b04.js} +2 -2
  30. package/dist/cjs/{throttle-f7aee21b.js.map → throttle-46478b04.js.map} +1 -1
  31. package/dist/cjs/{viewport.helpers-6670177c.js → viewport.store-2ab4e166.js} +186 -1
  32. package/dist/cjs/viewport.store-2ab4e166.js.map +1 -0
  33. package/dist/collection/components/clipboard/revogr-clipboard.js +2 -2
  34. package/dist/collection/components/clipboard/revogr-clipboard.js.map +1 -1
  35. package/dist/collection/components/data/cell-renderer.js.map +1 -1
  36. package/dist/collection/components/data/column.service.js +2 -2
  37. package/dist/collection/components/data/column.service.js.map +1 -1
  38. package/dist/collection/components/data/revogr-data.js +46 -46
  39. package/dist/collection/components/data/revogr-data.js.map +1 -1
  40. package/dist/collection/components/data/row-highlight.plugin.js.map +1 -1
  41. package/dist/collection/components/editors/edit.utils.js.map +1 -1
  42. package/dist/collection/components/editors/revogr-edit.js +9 -9
  43. package/dist/collection/components/editors/revogr-edit.js.map +1 -1
  44. package/dist/collection/components/editors/text-editor.js.map +1 -1
  45. package/dist/collection/components/header/header-cell-renderer.js.map +1 -1
  46. package/dist/collection/components/header/header-renderer.js.map +1 -1
  47. package/dist/collection/components/header/revogr-header.js +28 -28
  48. package/dist/collection/components/header/revogr-header.js.map +1 -1
  49. package/dist/collection/components/order/order-renderer.js.map +1 -1
  50. package/dist/collection/components/order/order-row.service.js +1 -1
  51. package/dist/collection/components/order/order-row.service.js.map +1 -1
  52. package/dist/collection/components/order/revogr-order-editor.js +31 -28
  53. package/dist/collection/components/order/revogr-order-editor.js.map +1 -1
  54. package/dist/collection/components/overlay/autofill.service.js +37 -26
  55. package/dist/collection/components/overlay/autofill.service.js.map +1 -1
  56. package/dist/collection/components/overlay/keyboard.service.js +8 -8
  57. package/dist/collection/components/overlay/keyboard.service.js.map +1 -1
  58. package/dist/collection/components/overlay/revogr-overlay-selection.js +141 -93
  59. package/dist/collection/components/overlay/revogr-overlay-selection.js.map +1 -1
  60. package/dist/collection/components/overlay/selection.utils.js +37 -9
  61. package/dist/collection/components/overlay/selection.utils.js.map +1 -1
  62. package/dist/collection/components/revoGrid/grid.helpers.js.map +1 -1
  63. package/dist/collection/components/revoGrid/revo-grid-style.css +8 -3
  64. package/dist/collection/components/revoGrid/revo-grid.js +150 -135
  65. package/dist/collection/components/revoGrid/revo-grid.js.map +1 -1
  66. package/dist/collection/components/revoGrid/viewport.helpers.js +22 -8
  67. package/dist/collection/components/revoGrid/viewport.helpers.js.map +1 -1
  68. package/dist/collection/components/revoGrid/viewport.scrolling.service.js +4 -2
  69. package/dist/collection/components/revoGrid/viewport.scrolling.service.js.map +1 -1
  70. package/dist/collection/components/revoGrid/viewport.service.js +2 -2
  71. package/dist/collection/components/revoGrid/viewport.service.js.map +1 -1
  72. package/dist/collection/components/rowHeaders/revogr-row-headers.js +11 -12
  73. package/dist/collection/components/rowHeaders/revogr-row-headers.js.map +1 -1
  74. package/dist/collection/components/rowHeaders/row-header-render.js.map +1 -1
  75. package/dist/collection/components/scroll/revogr-viewport-scroll.js +17 -17
  76. package/dist/collection/components/scroll/revogr-viewport-scroll.js.map +1 -1
  77. package/dist/collection/components/scrollable/revogr-scroll-virtual.js +17 -17
  78. package/dist/collection/components/scrollable/revogr-scroll-virtual.js.map +1 -1
  79. package/dist/collection/components/selectionFocus/revogr-focus.js +44 -43
  80. package/dist/collection/components/selectionFocus/revogr-focus.js.map +1 -1
  81. package/dist/collection/components/selectionTempRange/revogr-temp-range.js +12 -12
  82. package/dist/collection/components/selectionTempRange/revogr-temp-range.js.map +1 -1
  83. package/dist/collection/components/vnode/vnode.utils.js.map +1 -1
  84. package/dist/collection/index.js +2 -12
  85. package/dist/collection/index.js.map +1 -1
  86. package/dist/collection/plugins/column.auto-size.plugin.js +3 -4
  87. package/dist/collection/plugins/column.auto-size.plugin.js.map +1 -1
  88. package/dist/collection/plugins/export/export.plugin.js +1 -1
  89. package/dist/collection/plugins/export/export.plugin.js.map +1 -1
  90. package/dist/collection/plugins/export/types.js.map +1 -1
  91. package/dist/collection/plugins/filter/filter.button.js.map +1 -1
  92. package/dist/collection/plugins/filter/filter.plugin.js.map +1 -1
  93. package/dist/collection/plugins/filter/filter.pop.js +4 -4
  94. package/dist/collection/plugins/filter/filter.pop.js.map +1 -1
  95. package/dist/collection/plugins/groupingColumn/columnGroupsRenderer.js +1 -1
  96. package/dist/collection/plugins/groupingColumn/columnGroupsRenderer.js.map +1 -1
  97. package/dist/collection/plugins/groupingColumn/grouping.col.plugin.js.map +1 -1
  98. package/dist/collection/plugins/groupingColumn/headerGroupRenderer.js.map +1 -1
  99. package/dist/collection/plugins/groupingRow/grouping.row.expand.service.js.map +1 -1
  100. package/dist/collection/plugins/groupingRow/grouping.row.plugin.js +1 -2
  101. package/dist/collection/plugins/groupingRow/grouping.row.plugin.js.map +1 -1
  102. package/dist/collection/plugins/groupingRow/grouping.row.renderer.js.map +1 -1
  103. package/dist/collection/plugins/groupingRow/grouping.row.types.js.map +1 -1
  104. package/dist/collection/plugins/groupingRow/grouping.service.js.map +1 -1
  105. package/dist/collection/plugins/groupingRow/grouping.trimmed.service.js +1 -1
  106. package/dist/collection/plugins/groupingRow/grouping.trimmed.service.js.map +1 -1
  107. package/dist/collection/plugins/moveColumn/column.drag.plugin.js +1 -1
  108. package/dist/collection/plugins/moveColumn/column.drag.plugin.js.map +1 -1
  109. package/dist/collection/plugins/sorting/sorting.plugin.js +2 -2
  110. package/dist/collection/plugins/sorting/sorting.plugin.js.map +1 -1
  111. package/dist/collection/plugins/sorting/sorting.sign.js.map +1 -1
  112. package/dist/collection/serve/controller.js +86 -18
  113. package/dist/collection/services/column.data.provider.js +1 -2
  114. package/dist/collection/services/column.data.provider.js.map +1 -1
  115. package/dist/collection/services/data.provider.js +1 -2
  116. package/dist/collection/services/data.provider.js.map +1 -1
  117. package/dist/collection/services/dimension.provider.js +3 -5
  118. package/dist/collection/services/dimension.provider.js.map +1 -1
  119. package/dist/collection/services/selection.store.connector.js +1 -2
  120. package/dist/collection/services/selection.store.connector.js.map +1 -1
  121. package/dist/collection/services/viewport.provider.js +1 -2
  122. package/dist/collection/services/viewport.provider.js.map +1 -1
  123. package/dist/collection/store/dataSource/data.proxy.js.map +1 -1
  124. package/dist/collection/store/dataSource/data.store.js +1 -1
  125. package/dist/collection/store/dataSource/data.store.js.map +1 -1
  126. package/dist/collection/store/dataSource/trimmed.plugin.js.map +1 -1
  127. package/dist/collection/store/dimension/dimension.helpers.js.map +1 -1
  128. package/dist/collection/store/dimension/dimension.store.js +1 -1
  129. package/dist/collection/store/dimension/dimension.store.js.map +1 -1
  130. package/dist/collection/store/{storeTypes.js → index.js} +5 -1
  131. package/dist/collection/store/index.js.map +1 -0
  132. package/dist/collection/store/selection/index.js +0 -1
  133. package/dist/collection/store/selection/index.js.map +1 -1
  134. package/dist/collection/store/selection/selection.helpers.js.map +1 -1
  135. package/dist/collection/store/selection/selection.store.js +1 -1
  136. package/dist/collection/store/selection/selection.store.js.map +1 -1
  137. package/dist/collection/store/vp/index.js.map +1 -0
  138. package/dist/collection/store/vp/viewport.helpers.js.map +1 -0
  139. package/dist/collection/store/{viewport → vp}/viewport.store.js +4 -7
  140. package/dist/collection/store/vp/viewport.store.js.map +1 -0
  141. package/dist/collection/types/index.js +11 -0
  142. package/dist/collection/types/index.js.map +1 -0
  143. package/dist/collection/types/interfaces.js +4 -0
  144. package/dist/collection/types/interfaces.js.map +1 -1
  145. package/dist/collection/types/viewport.interfaces.js.map +1 -1
  146. package/dist/collection/utils/events.js +11 -1
  147. package/dist/collection/utils/events.js.map +1 -1
  148. package/dist/collection/utils/index.js +0 -1
  149. package/dist/collection/utils/index.js.map +1 -1
  150. package/dist/collection/utils/row-header-utils.js +2 -2
  151. package/dist/collection/utils/row-header-utils.js.map +1 -1
  152. package/dist/collection/utils/store.utils.js.map +1 -1
  153. package/dist/esm/app-globals-ef1fca59.js.map +1 -1
  154. package/dist/esm/base.plugin-d0e589d8.js +213 -0
  155. package/dist/esm/base.plugin-d0e589d8.js.map +1 -0
  156. package/dist/esm/{column.service-f4922a8d.js → column.service-a826bbd6.js} +27 -11
  157. package/dist/esm/column.service-a826bbd6.js.map +1 -0
  158. package/dist/esm/dimension.helpers-a3065cb1.js.map +1 -1
  159. package/dist/esm/events-77b43b40.js +48 -0
  160. package/dist/esm/events-77b43b40.js.map +1 -0
  161. package/dist/esm/filter.button-46ce4f80.js.map +1 -1
  162. package/dist/esm/{header-cell-renderer-ac962570.js → header-cell-renderer-19738045.js} +2 -2
  163. package/dist/esm/{header-cell-renderer-ac962570.js.map → header-cell-renderer-19738045.js.map} +1 -1
  164. package/dist/esm/{index-98fd0168.js → index-5a722722.js} +3 -4
  165. package/dist/esm/index-5a722722.js.map +1 -0
  166. package/dist/esm/index.js +4 -4
  167. package/dist/esm/{key.utils-2836e8ae.js → key.utils-7c5d91dd.js} +2 -2
  168. package/dist/esm/{key.utils-2836e8ae.js.map → key.utils-7c5d91dd.js.map} +1 -1
  169. package/dist/esm/revo-grid.entry.js +42 -132
  170. package/dist/esm/revo-grid.entry.js.map +1 -1
  171. package/dist/esm/revogr-attribution_6.entry.js +187 -136
  172. package/dist/esm/revogr-attribution_6.entry.js.map +1 -1
  173. package/dist/esm/revogr-clipboard_3.entry.js +2 -2
  174. package/dist/esm/revogr-clipboard_3.entry.js.map +1 -1
  175. package/dist/esm/revogr-data_4.entry.js +9 -9
  176. package/dist/esm/revogr-data_4.entry.js.map +1 -1
  177. package/dist/esm/revogr-filter-panel.entry.js.map +1 -1
  178. package/dist/esm/{selection.store-2577ddf9.js → selection.helpers-883ce6bc.js} +77 -75
  179. package/dist/esm/selection.helpers-883ce6bc.js.map +1 -0
  180. package/dist/esm/{throttle-cfd527d6.js → throttle-eeca0062.js} +2 -2
  181. package/dist/esm/{throttle-cfd527d6.js.map → throttle-eeca0062.js.map} +1 -1
  182. package/dist/esm/{viewport.helpers-6591d423.js → viewport.store-d9e291c5.js} +187 -3
  183. package/dist/esm/viewport.store-d9e291c5.js.map +1 -0
  184. package/dist/revo-grid/app-globals-ef1fca59.js.map +1 -1
  185. package/dist/revo-grid/base.plugin-d0e589d8.js +5 -0
  186. package/dist/revo-grid/base.plugin-d0e589d8.js.map +1 -0
  187. package/dist/revo-grid/column.service-a826bbd6.js +5 -0
  188. package/dist/revo-grid/column.service-a826bbd6.js.map +1 -0
  189. package/dist/revo-grid/dimension.helpers-a3065cb1.js.map +1 -1
  190. package/dist/revo-grid/events-77b43b40.js +5 -0
  191. package/dist/revo-grid/events-77b43b40.js.map +1 -0
  192. package/dist/revo-grid/filter.button-46ce4f80.js.map +1 -1
  193. package/dist/revo-grid/{header-cell-renderer-ac962570.js → header-cell-renderer-19738045.js} +2 -2
  194. package/dist/revo-grid/{header-cell-renderer-ac962570.js.map → header-cell-renderer-19738045.js.map} +1 -1
  195. package/dist/revo-grid/index-5a722722.js +5 -0
  196. package/dist/{esm/index-98fd0168.js.map → revo-grid/index-5a722722.js.map} +1 -1
  197. package/dist/revo-grid/index.esm.js +1 -1
  198. package/dist/revo-grid/{key.utils-2836e8ae.js → key.utils-7c5d91dd.js} +2 -2
  199. package/dist/revo-grid/key.utils-7c5d91dd.js.map +1 -0
  200. package/dist/revo-grid/revo-grid.entry.js +1 -1
  201. package/dist/revo-grid/revo-grid.entry.js.map +1 -1
  202. package/dist/revo-grid/revogr-attribution_6.entry.js +1 -1
  203. package/dist/revo-grid/revogr-attribution_6.entry.js.map +1 -1
  204. package/dist/revo-grid/revogr-clipboard_3.entry.js +1 -1
  205. package/dist/revo-grid/revogr-clipboard_3.entry.js.map +1 -1
  206. package/dist/revo-grid/revogr-data_4.entry.js +1 -1
  207. package/dist/revo-grid/revogr-data_4.entry.js.map +1 -1
  208. package/dist/revo-grid/revogr-filter-panel.entry.js.map +1 -1
  209. package/dist/revo-grid/selection.helpers-883ce6bc.js +5 -0
  210. package/dist/revo-grid/selection.helpers-883ce6bc.js.map +1 -0
  211. package/dist/revo-grid/{throttle-cfd527d6.js → throttle-eeca0062.js} +2 -2
  212. package/dist/revo-grid/viewport.store-d9e291c5.js +5 -0
  213. package/dist/revo-grid/viewport.store-d9e291c5.js.map +1 -0
  214. package/dist/types/components/clipboard/revogr-clipboard.d.ts +1 -1
  215. package/dist/types/components/data/cell-renderer.d.ts +1 -1
  216. package/dist/types/components/data/column.service.d.ts +5 -5
  217. package/dist/types/components/data/revogr-data.d.ts +4 -4
  218. package/dist/types/components/data/row-highlight.plugin.d.ts +1 -1
  219. package/dist/types/components/editors/edit.utils.d.ts +1 -1
  220. package/dist/types/components/editors/revogr-edit.d.ts +2 -2
  221. package/dist/types/components/editors/text-editor.d.ts +2 -2
  222. package/dist/types/components/header/header-cell-renderer.d.ts +1 -1
  223. package/dist/types/components/header/header-renderer.d.ts +2 -2
  224. package/dist/types/components/header/revogr-header.d.ts +4 -4
  225. package/dist/types/components/order/order-renderer.d.ts +2 -2
  226. package/dist/types/components/order/order-row.service.d.ts +1 -2
  227. package/dist/types/components/order/revogr-order-editor.d.ts +7 -4
  228. package/dist/types/components/overlay/autofill.service.d.ts +11 -10
  229. package/dist/types/components/overlay/keyboard.service.d.ts +4 -5
  230. package/dist/types/components/overlay/revogr-overlay-selection.d.ts +42 -19
  231. package/dist/types/components/overlay/selection.utils.d.ts +13 -6
  232. package/dist/types/components/revoGrid/grid.helpers.d.ts +1 -1
  233. package/dist/types/components/revoGrid/revo-grid.d.ts +10 -7
  234. package/dist/types/components/revoGrid/viewport.helpers.d.ts +14 -5
  235. package/dist/types/components/revoGrid/viewport.scrolling.service.d.ts +1 -3
  236. package/dist/types/components/revoGrid/viewport.service.d.ts +1 -4
  237. package/dist/types/components/rowHeaders/revogr-row-headers.d.ts +1 -2
  238. package/dist/types/components/rowHeaders/row-header-render.d.ts +1 -1
  239. package/dist/types/components/scroll/revogr-viewport-scroll.d.ts +2 -2
  240. package/dist/types/components/scrollable/revogr-scroll-virtual.d.ts +2 -2
  241. package/dist/types/components/selectionFocus/revogr-focus.d.ts +3 -5
  242. package/dist/types/components/selectionTempRange/revogr-temp-range.d.ts +2 -2
  243. package/dist/types/components/vnode/vnode.utils.d.ts +1 -1
  244. package/dist/types/components.d.ts +30 -16
  245. package/dist/types/index.d.ts +2 -12
  246. package/dist/types/plugins/export/export.plugin.d.ts +1 -1
  247. package/dist/types/plugins/export/types.d.ts +1 -1
  248. package/dist/types/plugins/filter/filter.button.d.ts +1 -1
  249. package/dist/types/plugins/filter/filter.plugin.d.ts +2 -2
  250. package/dist/types/plugins/filter/filter.pop.d.ts +1 -1
  251. package/dist/types/plugins/groupingColumn/columnGroupsRenderer.d.ts +3 -4
  252. package/dist/types/plugins/groupingColumn/grouping.col.plugin.d.ts +3 -3
  253. package/dist/types/plugins/groupingColumn/headerGroupRenderer.d.ts +2 -2
  254. package/dist/types/plugins/groupingRow/grouping.row.expand.service.d.ts +1 -1
  255. package/dist/types/plugins/groupingRow/grouping.row.plugin.d.ts +2 -2
  256. package/dist/types/plugins/groupingRow/grouping.row.renderer.d.ts +1 -1
  257. package/dist/types/plugins/groupingRow/grouping.row.types.d.ts +1 -1
  258. package/dist/types/plugins/groupingRow/grouping.service.d.ts +1 -1
  259. package/dist/types/plugins/groupingRow/grouping.trimmed.service.d.ts +1 -1
  260. package/dist/types/plugins/moveColumn/column.drag.plugin.d.ts +1 -3
  261. package/dist/types/plugins/sorting/sorting.plugin.d.ts +1 -3
  262. package/dist/types/plugins/sorting/sorting.sign.d.ts +1 -1
  263. package/dist/types/services/column.data.provider.d.ts +2 -3
  264. package/dist/types/services/data.provider.d.ts +2 -5
  265. package/dist/types/services/dimension.provider.d.ts +2 -4
  266. package/dist/types/services/selection.store.connector.d.ts +2 -3
  267. package/dist/types/services/viewport.provider.d.ts +3 -3
  268. package/dist/types/store/dataSource/data.proxy.d.ts +2 -2
  269. package/dist/types/store/dataSource/data.store.d.ts +3 -3
  270. package/dist/types/store/dataSource/trimmed.plugin.d.ts +1 -1
  271. package/dist/types/store/dimension/dimension.helpers.d.ts +1 -1
  272. package/dist/types/store/dimension/dimension.store.d.ts +4 -5
  273. package/dist/types/store/{storeTypes.d.ts → index.d.ts} +5 -1
  274. package/dist/types/store/selection/index.d.ts +0 -1
  275. package/dist/types/store/selection/selection.helpers.d.ts +1 -1
  276. package/dist/types/store/selection/selection.store.d.ts +2 -2
  277. package/dist/types/store/vp/index.d.ts +7 -0
  278. package/dist/types/store/{viewport → vp}/viewport.helpers.d.ts +1 -1
  279. package/dist/types/store/{viewport → vp}/viewport.store.d.ts +3 -7
  280. package/dist/types/types/index.d.ts +7 -0
  281. package/dist/types/types/interfaces.d.ts +444 -23
  282. package/dist/types/types/viewport.interfaces.d.ts +5 -8
  283. package/dist/types/utils/events.d.ts +4 -1
  284. package/dist/types/utils/index.d.ts +0 -1
  285. package/dist/types/utils/row-header-utils.d.ts +1 -1
  286. package/dist/types/utils/store.utils.d.ts +1 -1
  287. package/hydrate/index.js +3224 -3126
  288. package/package.json +7 -8
  289. package/standalone/_baseIteratee.js +1104 -13
  290. package/standalone/_baseIteratee.js.map +1 -1
  291. package/standalone/_nodeUtil.js +260 -0
  292. package/standalone/_nodeUtil.js.map +1 -0
  293. package/standalone/column.service.js +78 -74
  294. package/standalone/column.service.js.map +1 -1
  295. package/standalone/data.store.js +2 -4
  296. package/standalone/data.store.js.map +1 -1
  297. package/standalone/debounce.js +2 -2
  298. package/standalone/dimension.helpers.js +1 -1
  299. package/standalone/dimension.helpers.js.map +1 -1
  300. package/standalone/filter.button.js.map +1 -1
  301. package/standalone/identity.js +42 -2
  302. package/standalone/identity.js.map +1 -1
  303. package/standalone/index.js +5 -7
  304. package/standalone/index.js.map +1 -1
  305. package/standalone/index2.js +2 -3
  306. package/standalone/index2.js.map +1 -1
  307. package/standalone/isObjectLike.js +1 -34
  308. package/standalone/isObjectLike.js.map +1 -1
  309. package/standalone/revo-grid.js +125 -106
  310. package/standalone/revo-grid.js.map +1 -1
  311. package/standalone/revogr-clipboard2.js.map +1 -1
  312. package/standalone/revogr-data2.js +3 -0
  313. package/standalone/revogr-data2.js.map +1 -1
  314. package/standalone/revogr-edit2.js +1 -1
  315. package/standalone/revogr-edit2.js.map +1 -1
  316. package/standalone/revogr-filter-panel.js.map +1 -1
  317. package/standalone/revogr-focus2.js +7 -3
  318. package/standalone/revogr-focus2.js.map +1 -1
  319. package/standalone/revogr-header2.js +5 -4
  320. package/standalone/revogr-header2.js.map +1 -1
  321. package/standalone/revogr-order-editor2.js +3 -0
  322. package/standalone/revogr-order-editor2.js.map +1 -1
  323. package/standalone/revogr-overlay-selection2.js +143 -143
  324. package/standalone/revogr-overlay-selection2.js.map +1 -1
  325. package/standalone/revogr-row-headers2.js +7 -7
  326. package/standalone/revogr-row-headers2.js.map +1 -1
  327. package/standalone/revogr-scroll-virtual2.js +1 -1
  328. package/standalone/revogr-scroll-virtual2.js.map +1 -1
  329. package/standalone/revogr-temp-range2.js +1 -1
  330. package/standalone/revogr-temp-range2.js.map +1 -1
  331. package/standalone/revogr-viewport-scroll2.js +23 -9
  332. package/standalone/revogr-viewport-scroll2.js.map +1 -1
  333. package/standalone/selection.utils.js +76 -9
  334. package/standalone/selection.utils.js.map +1 -1
  335. package/standalone/throttle.js +1 -1
  336. package/standalone/toNumber.js +35 -2
  337. package/standalone/toNumber.js.map +1 -1
  338. package/dist/cjs/column.service-e83d9809.js.map +0 -1
  339. package/dist/cjs/events-7ccd6894.js +0 -233
  340. package/dist/cjs/events-7ccd6894.js.map +0 -1
  341. package/dist/cjs/index-73c149e3.js.map +0 -1
  342. package/dist/cjs/selection.store-2e110a67.js.map +0 -1
  343. package/dist/cjs/storeTypes-b3f924b2.js +0 -106
  344. package/dist/cjs/storeTypes-b3f924b2.js.map +0 -1
  345. package/dist/cjs/viewport.helpers-6670177c.js.map +0 -1
  346. package/dist/collection/store/selection/selection.store.service.js +0 -39
  347. package/dist/collection/store/selection/selection.store.service.js.map +0 -1
  348. package/dist/collection/store/storeTypes.js.map +0 -1
  349. package/dist/collection/store/viewport/index.js.map +0 -1
  350. package/dist/collection/store/viewport/viewport.helpers.js.map +0 -1
  351. package/dist/collection/store/viewport/viewport.store.js.map +0 -1
  352. package/dist/esm/column.service-f4922a8d.js.map +0 -1
  353. package/dist/esm/events-3dd8ee7c.js +0 -228
  354. package/dist/esm/events-3dd8ee7c.js.map +0 -1
  355. package/dist/esm/selection.store-2577ddf9.js.map +0 -1
  356. package/dist/esm/storeTypes-f2647985.js +0 -101
  357. package/dist/esm/storeTypes-f2647985.js.map +0 -1
  358. package/dist/esm/viewport.helpers-6591d423.js.map +0 -1
  359. package/dist/revo-grid/column.service-f4922a8d.js +0 -5
  360. package/dist/revo-grid/column.service-f4922a8d.js.map +0 -1
  361. package/dist/revo-grid/events-3dd8ee7c.js +0 -5
  362. package/dist/revo-grid/events-3dd8ee7c.js.map +0 -1
  363. package/dist/revo-grid/index-98fd0168.js +0 -5
  364. package/dist/revo-grid/index-98fd0168.js.map +0 -1
  365. package/dist/revo-grid/key.utils-2836e8ae.js.map +0 -1
  366. package/dist/revo-grid/selection.store-2577ddf9.js +0 -5
  367. package/dist/revo-grid/selection.store-2577ddf9.js.map +0 -1
  368. package/dist/revo-grid/storeTypes-f2647985.js +0 -5
  369. package/dist/revo-grid/storeTypes-f2647985.js.map +0 -1
  370. package/dist/revo-grid/viewport.helpers-6591d423.js +0 -5
  371. package/dist/revo-grid/viewport.helpers-6591d423.js.map +0 -1
  372. package/dist/types/store/selection/selection.store.service.d.ts +0 -17
  373. package/dist/types/store/viewport/index.d.ts +0 -2
  374. package/standalone/_stringToPath.js +0 -1389
  375. package/standalone/_stringToPath.js.map +0 -1
  376. /package/dist/collection/store/{viewport → vp}/index.js +0 -0
  377. /package/dist/collection/store/{viewport → vp}/viewport.helpers.js +0 -0
  378. /package/dist/revo-grid/{throttle-cfd527d6.js.map → throttle-eeca0062.js.map} +0 -0
@@ -6,51 +6,16 @@
6
6
  Object.defineProperty(exports, '__esModule', { value: true });
7
7
 
8
8
  const index = require('./index-84e32c2a.js');
9
- const index$1 = require('./index-73c149e3.js');
9
+ const index$1 = require('./index-a9f1b728.js');
10
10
  const dimension_helpers = require('./dimension.helpers-ee39d6c4.js');
11
- const column_service = require('./column.service-e83d9809.js');
12
- const selection_store = require('./selection.store-2e110a67.js');
13
- const key_utils = require('./key.utils-59b9b528.js');
14
- const debounce = require('./debounce-e2b7c6fb.js');
15
- const events = require('./events-7ccd6894.js');
16
- const throttle = require('./throttle-f7aee21b.js');
17
11
  require('./toNumber-838e6ff5.js');
18
- require('./viewport.helpers-6670177c.js');
19
-
20
- class SelectionStoreService {
21
- constructor(store, config) {
22
- this.store = store;
23
- this.config = config;
24
- this.store = store;
25
- }
26
- get edited() {
27
- return this.store.get('edit');
28
- }
29
- get focused() {
30
- return this.store.get('focus');
31
- }
32
- get ranged() {
33
- return this.store.get('range');
34
- }
35
- changeRange(range) {
36
- return this.config.changeRange(range);
37
- }
38
- focus(cell, isMulti = false) {
39
- if (!cell) {
40
- return false;
41
- }
42
- let end = cell;
43
- // range edit
44
- if (isMulti) {
45
- let start = this.store.get('focus');
46
- if (start) {
47
- return this.config.changeRange(selection_store.getRange(start, end));
48
- }
49
- }
50
- // single focus
51
- return this.config.focus(cell, end);
52
- }
53
- }
12
+ const events = require('./events-b28cc194.js');
13
+ const column_service = require('./column.service-52b4cac9.js');
14
+ const key_utils = require('./key.utils-ee3d9eab.js');
15
+ const selection_helpers = require('./selection.helpers-32abb2a9.js');
16
+ const debounce = require('./debounce-e2b7c6fb.js');
17
+ const viewport_store = require('./viewport.store-2ab4e166.js');
18
+ const throttle = require('./throttle-46478b04.js');
54
19
 
55
20
  const Attribution = class {
56
21
  constructor(hostRef) {
@@ -61,26 +26,50 @@ const Attribution = class {
61
26
  }
62
27
  };
63
28
 
64
- /** Calculate cell based on x, y position */
29
+ function getFocusCellBasedOnEvent(e, data) {
30
+ // If event default is prevented, return
31
+ if (e.defaultPrevented) {
32
+ return null;
33
+ }
34
+ // Get coordinates from event object
35
+ const x = events.getPropertyFromEvent(e, 'clientX');
36
+ const y = events.getPropertyFromEvent(e, 'clientY');
37
+ // If coordinates are not available, return
38
+ if (x === null || y === null) {
39
+ return null;
40
+ }
41
+ // Get current cell based on coordinates and data
42
+ const focusCell = getCurrentCell({ x, y }, data);
43
+ // If current cell is not available, return
44
+ if (isAfterLast(focusCell, data.lastCell)) {
45
+ return null;
46
+ }
47
+ return focusCell;
48
+ }
49
+ /**
50
+ * Calculate cell based on x, y position
51
+ */
65
52
  function getCurrentCell({ x, y }, { el, rows, cols }) {
53
+ // Get the bounding rectangle of the element
66
54
  const { top, left, height, width } = el.getBoundingClientRect();
55
+ // Calculate the cell position relative to the element
67
56
  let cellY = y - top;
68
- // limit to element height
57
+ let cellX = x - left;
58
+ // Limit the cell position to the element height
69
59
  if (cellY >= height) {
70
60
  cellY = height - 1;
71
61
  }
72
- let cellX = x - left;
73
- // limit to element width
62
+ // Limit the cell position to the element width
74
63
  if (cellX >= width) {
75
64
  cellX = width - 1;
76
65
  }
66
+ // Get the row and column items based on the cell position
77
67
  const rgRow = dimension_helpers.getItemByPosition(rows, cellY);
78
68
  const rgCol = dimension_helpers.getItemByPosition(cols, cellX);
79
- // before first
69
+ // Set the row and column index to 0 if they are before the first item
80
70
  if (rgCol.itemIndex < 0) {
81
71
  rgCol.itemIndex = 0;
82
72
  }
83
- // before first
84
73
  if (rgRow.itemIndex < 0) {
85
74
  rgRow.itemIndex = 0;
86
75
  }
@@ -102,8 +91,11 @@ function getCoordinate(range, focus, changes, isMulti = false) {
102
91
  }
103
92
  return null;
104
93
  }
105
- /** check if out of range */
106
- function isAfterLast({ x, y }, { lastCell }) {
94
+ /**
95
+ * Check if the x coordinate of the cell position is after or equal to the x coordinate of the last cell position
96
+ * or if the y coordinate of the cell position is after or equal to the y coordinate of the last cell position
97
+ */
98
+ function isAfterLast({ x, y }, lastCell) {
107
99
  return x >= lastCell.x || y >= lastCell.y;
108
100
  }
109
101
  /** check if out of range */
@@ -192,13 +184,14 @@ const RevogrFocus$1 = class {
192
184
  const column = dimension_helpers.getSourceItem(this.colData, focus.x);
193
185
  this.afterFocus.emit({
194
186
  model,
195
- column
187
+ column,
196
188
  });
197
189
  }
198
190
  componentDidRender() {
199
191
  var _a, _b;
200
192
  const currentFocus = this.selectionStore.get('focus');
201
- if (((_a = this.activeFocus) === null || _a === void 0 ? void 0 : _a.x) === (currentFocus === null || currentFocus === void 0 ? void 0 : currentFocus.x) && ((_b = this.activeFocus) === null || _b === void 0 ? void 0 : _b.y) === (currentFocus === null || currentFocus === void 0 ? void 0 : currentFocus.y)) {
193
+ if (((_a = this.activeFocus) === null || _a === void 0 ? void 0 : _a.x) === (currentFocus === null || currentFocus === void 0 ? void 0 : currentFocus.x) &&
194
+ ((_b = this.activeFocus) === null || _b === void 0 ? void 0 : _b.y) === (currentFocus === null || currentFocus === void 0 ? void 0 : currentFocus.y)) {
202
195
  return;
203
196
  }
204
197
  this.activeFocus = currentFocus;
@@ -244,9 +237,9 @@ class KeyboardService {
244
237
  constructor(sv) {
245
238
  this.sv = sv;
246
239
  }
247
- async keyDown(e, canRange) {
240
+ async keyDown(e, canRange, isEditMode, { range, focus }) {
248
241
  // IF EDIT MODE
249
- if (this.sv.selectionStoreService.edited) {
242
+ if (isEditMode) {
250
243
  switch (e.code) {
251
244
  case key_utils.codesLetter.ESCAPE:
252
245
  this.sv.cancel();
@@ -256,12 +249,12 @@ class KeyboardService {
256
249
  }
257
250
  // IF NOT EDIT MODE
258
251
  // pressed clear key
259
- if (this.sv.selectionStoreService.ranged && key_utils.isClear(e.code)) {
252
+ if (range && key_utils.isClear(e.code)) {
260
253
  this.sv.clearCell();
261
254
  return;
262
255
  }
263
256
  // below works with focus only
264
- if (!this.sv.selectionStoreService.focused) {
257
+ if (!focus) {
265
258
  return;
266
259
  }
267
260
  // tab key means same as arrow right
@@ -337,10 +330,10 @@ class KeyboardService {
337
330
  }
338
331
  if (isMulti) {
339
332
  const eData = this.sv.getData();
340
- if (isAfterLast(data.end, eData) || isBeforeFirst(data.start)) {
333
+ if (isAfterLast(data.end, eData.lastCell) || isBeforeFirst(data.start)) {
341
334
  return false;
342
335
  }
343
- const range = selection_store.getRange(data.start, data.end);
336
+ const range = selection_helpers.getRange(data.start, data.end);
344
337
  return this.sv.range(range);
345
338
  }
346
339
  return this.sv.focusNext(data.start, changes);
@@ -389,7 +382,10 @@ class AutoFillService {
389
382
  return (index.h("div", { class: {
390
383
  [index$1.CELL_HANDLER_CLASS]: true,
391
384
  [index$1.MOBILE_CLASS]: true,
392
- }, style: { left: `${handlerStyle.right}px`, top: `${handlerStyle.bottom}px` }, onMouseDown: (e) => this.autoFillHandler(e), onTouchStart: (e) => this.autoFillHandler(e) }));
385
+ }, style: {
386
+ left: `${handlerStyle.right}px`,
387
+ top: `${handlerStyle.bottom}px`,
388
+ }, onMouseDown: (e) => this.autoFillHandler(e), onTouchStart: (e) => this.autoFillHandler(e) }));
393
389
  }
394
390
  autoFillHandler(e, type = "AutoFill" /* AutoFillType.autoFill */) {
395
391
  let target = null;
@@ -405,7 +401,9 @@ class AutoFillService {
405
401
  get isAutoFill() {
406
402
  return !!this.autoFillType;
407
403
  }
408
- /** Process mouse move events */
404
+ /**
405
+ * Process mouse move events
406
+ */
409
407
  selectionMouseMove(e) {
410
408
  // initiate mouse move debounce if not present
411
409
  if (!this.onMouseMoveAutofill) {
@@ -415,9 +413,7 @@ class AutoFillService {
415
413
  this.onMouseMoveAutofill(e, this.sv.getData());
416
414
  }
417
415
  }
418
- getFocus() {
419
- let focus = this.sv.selectionStoreService.focused;
420
- const range = this.sv.selectionStoreService.ranged;
416
+ getFocus(focus, range) {
421
417
  // there was an issue that it was taking last cell from range but focus was out
422
418
  if (!focus && range) {
423
419
  focus = { x: range.x, y: range.y };
@@ -433,8 +429,8 @@ class AutoFillService {
433
429
  if (!this.autoFillInitial) {
434
430
  return;
435
431
  }
436
- const x = events.getFromEvent(event, 'clientX', index$1.MOBILE_CLASS);
437
- const y = events.getFromEvent(event, 'clientY', index$1.MOBILE_CLASS);
432
+ const x = events.getPropertyFromEvent(event, 'clientX', index$1.MOBILE_CLASS);
433
+ const y = events.getPropertyFromEvent(event, 'clientY', index$1.MOBILE_CLASS);
438
434
  // skip touch
439
435
  if (x === null || y === null) {
440
436
  return;
@@ -447,18 +443,19 @@ class AutoFillService {
447
443
  }
448
444
  }
449
445
  // check if not the latest, if latest - do nothing
450
- if (isAfterLast(current, data)) {
446
+ if (isAfterLast(current, data.lastCell)) {
451
447
  return;
452
448
  }
453
449
  this.autoFillLast = current;
454
- const isSame = current.x === this.autoFillInitial.x && current.y === this.autoFillInitial.y;
450
+ const isSame = current.x === this.autoFillInitial.x &&
451
+ current.y === this.autoFillInitial.y;
455
452
  // if same as initial - clear
456
453
  if (isSame) {
457
454
  this.sv.setTempRange(null);
458
455
  }
459
456
  else {
460
457
  this.sv.setTempRange({
461
- area: selection_store.getRange(this.autoFillInitial, this.autoFillLast),
458
+ area: selection_helpers.getRange(this.autoFillInitial, this.autoFillLast),
462
459
  type: this.autoFillType,
463
460
  });
464
461
  }
@@ -472,39 +469,48 @@ class AutoFillService {
472
469
  selectionStart(target, data, type = "Selection" /* AutoFillType.selection */) {
473
470
  /** Get cell by autofill element */
474
471
  const { top, left } = target.getBoundingClientRect();
475
- this.autoFillInitial = this.getFocus();
472
+ this.autoFillInitial = this.getFocus(data.focus, data.range);
476
473
  this.autoFillType = type;
477
474
  this.autoFillStart = getCurrentCell({ x: left, y: top }, data);
478
475
  }
479
476
  /**
480
- * Clear current range selection
481
- * on mouse up and mouse leave events
477
+ * Clear current range selection on mouse up and mouse leave events
482
478
  */
483
- clearAutoFillSelection() {
484
- // Apply autofill values on mouse up if present
479
+ clearAutoFillSelection(focus, oldRange) {
480
+ // If autofill was active, apply autofill values
485
481
  if (this.autoFillInitial) {
486
- // Get latest
487
- this.autoFillInitial = this.getFocus();
488
- // Apply range data if present
482
+ // Fetch latest focus
483
+ this.autoFillInitial = this.getFocus(focus, oldRange);
484
+ // Apply range data if autofill mode is active
489
485
  if (this.autoFillType === "AutoFill" /* AutoFillType.autoFill */) {
490
- const range = selection_store.getRange(this.autoFillInitial, this.autoFillLast);
486
+ const range = selection_helpers.getRange(this.autoFillInitial, this.autoFillLast);
487
+ // If range is present, apply data
491
488
  if (range) {
492
- const { defaultPrevented: stopApply, detail: { range: newRange } } = this.sv.clearRangeDataApply({
489
+ const { defaultPrevented: stopApply, detail: { range: newRange }, } = this.sv.clearRangeDataApply({
493
490
  range,
494
491
  });
492
+ // If data apply was not prevented, apply new range
495
493
  if (!stopApply) {
496
- this.applyRangeWithData(newRange);
494
+ this.applyRangeWithData(newRange, oldRange);
497
495
  }
498
496
  else {
499
- // if prevented - clear temp range
497
+ // If data apply was prevented, clear temporary range
500
498
  this.sv.setTempRange(null);
501
499
  }
502
500
  }
503
501
  }
504
502
  else {
503
+ // If not autofill mode, apply range only
505
504
  this.applyRangeOnly(this.autoFillInitial, this.autoFillLast);
506
505
  }
507
506
  }
507
+ // Reset autofill state
508
+ this.resetAutoFillState();
509
+ }
510
+ /**
511
+ * Reset autofill state
512
+ */
513
+ resetAutoFillState() {
508
514
  this.autoFillType = null;
509
515
  this.autoFillInitial = null;
510
516
  this.autoFillLast = null;
@@ -524,8 +530,7 @@ class AutoFillService {
524
530
  this.sv.setRange(range);
525
531
  }
526
532
  /** Apply range and copy data during range application */
527
- applyRangeWithData(newRange) {
528
- const oldRange = this.sv.selectionStoreService.ranged;
533
+ applyRangeWithData(newRange, oldRange) {
529
534
  const rangeData = {
530
535
  type: this.sv.dataStore.get('type'),
531
536
  colType: this.sv.columnService.type,
@@ -559,7 +564,7 @@ class AutoFillService {
559
564
  if (!start || !end) {
560
565
  return;
561
566
  }
562
- const newRange = selection_store.getRange(start, end);
567
+ const newRange = selection_helpers.getRange(start, end);
563
568
  this.sv.setRange(newRange);
564
569
  }
565
570
  }
@@ -614,44 +619,60 @@ const OverlaySelection = class {
614
619
  // #endregion
615
620
  // #region Listeners
616
621
  onMouseMove(e) {
617
- if (this.selectionStoreService.focused) {
622
+ if (this.selectionStore.get('focus')) {
618
623
  this.autoFillService.selectionMouseMove(e);
619
624
  }
620
625
  }
621
- /** Action finished inside of the document. */
622
- /** Pointer left document, clear any active operation. */
626
+ /**
627
+ * Action finished inside of the document.
628
+ * Pointer left document, clear any active operation.
629
+ */
623
630
  onMouseUp() {
624
- this.autoFillService.clearAutoFillSelection();
631
+ // Clear auto fill selection
632
+ // when pointer left document,
633
+ // clear any active operation.
634
+ this.autoFillService.clearAutoFillSelection(this.selectionStore.get('focus'), this.selectionStore.get('range'));
625
635
  }
626
- /** Row drag started. */
636
+ /**
637
+ * Row drag started.
638
+ * This event is fired when drag action started on cell.
639
+ */
627
640
  onCellDrag(e) {
628
641
  var _a;
642
+ // Invoke drag start on order editor.
629
643
  (_a = this.orderEditor) === null || _a === void 0 ? void 0 : _a.dragStart(e.detail);
630
644
  }
631
- /** Get keyboard down from element. */
645
+ /**
646
+ * Get keyboard down from element.
647
+ * This event is fired when keyboard key is released.
648
+ */
632
649
  onKeyUp(e) {
650
+ // Emit before key up event.
633
651
  this.beforeKeyUp.emit(e);
634
652
  }
635
- /** Get keyboard down from element. */
653
+ /**
654
+ * Get keyboard down from element.
655
+ * This event is fired when keyboard key is pressed.
656
+ */
636
657
  onKeyDown(e) {
637
658
  var _a;
659
+ // Emit before key down event and check if default prevention is set.
638
660
  const proxy = this.beforeKeyDown.emit(e);
639
661
  if (e.defaultPrevented || proxy.defaultPrevented) {
640
662
  return;
641
663
  }
642
- (_a = this.keyboardService) === null || _a === void 0 ? void 0 : _a.keyDown(e, this.range);
664
+ // Invoke key down on keyboard service.
665
+ (_a = this.keyboardService) === null || _a === void 0 ? void 0 : _a.keyDown(e, this.range, !!this.selectionStore.get('edit'), {
666
+ focus: this.selectionStore.get('focus'),
667
+ range: this.selectionStore.get('range'),
668
+ });
643
669
  }
644
670
  // #endregion
645
671
  /** Selection & Keyboard */
646
672
  selectionServiceSet(s) {
647
- this.selectionStoreService = new SelectionStoreService(s, {
648
- changeRange: range => this.triggerRangeEvent(range),
649
- focus: (focus, end) => this.doFocus(focus, end),
650
- });
651
673
  this.keyboardService = new KeyboardService({
652
- selectionStoreService: this.selectionStoreService,
653
674
  selectionStore: s,
654
- range: r => this.selectionStoreService.changeRange(r),
675
+ range: r => this.triggerRangeEvent(r),
655
676
  focusNext: (f, next) => this.doFocus(f, f, next),
656
677
  change: val => {
657
678
  if (this.readonly) {
@@ -673,7 +694,6 @@ const OverlaySelection = class {
673
694
  /** Autofill */
674
695
  createAutoFillService() {
675
696
  this.autoFillService = new AutoFillService({
676
- selectionStoreService: this.selectionStoreService,
677
697
  dimensionRow: this.dimensionRow,
678
698
  dimensionCol: this.dimensionCol,
679
699
  columnService: this.columnService,
@@ -749,10 +769,10 @@ const OverlaySelection = class {
749
769
  nodes.push(editCell);
750
770
  }
751
771
  else {
752
- const range = this.selectionStoreService.ranged;
753
- const selectionFocus = this.selectionStoreService.focused;
772
+ const range = this.selectionStore.get('range');
773
+ const focus = this.selectionStore.get('focus');
754
774
  // Clipboard
755
- if ((range || selectionFocus) && this.useClipboard) {
775
+ if ((range || focus) && this.useClipboard) {
756
776
  nodes.push(index.h("revogr-clipboard", { readonly: this.readonly, onCopyregion: e => this.onCopy(e.detail), onClearregion: () => !this.readonly && this.clearCell(), ref: e => (this.clipboard = e), onPasteregion: e => this.onPaste(e.detail) }));
757
777
  }
758
778
  // Range
@@ -760,23 +780,19 @@ const OverlaySelection = class {
760
780
  nodes.push(...this.renderRange(range));
761
781
  }
762
782
  // Autofill
763
- if (selectionFocus && !this.readonly && this.range) {
764
- nodes.push(this.autoFillService.renderAutofill(range, selectionFocus));
783
+ if (focus && !this.readonly && this.range) {
784
+ nodes.push(this.autoFillService.renderAutofill(range, focus));
765
785
  }
766
786
  // Order
767
787
  if (this.canDrag) {
768
788
  nodes.push(index.h("revogr-order-editor", { ref: e => (this.orderEditor = e), dataStore: this.dataStore, dimensionRow: this.dimensionRow, dimensionCol: this.dimensionCol, parent: this.element, onRowdragstartinit: e => this.rowDragStart(e) }));
769
789
  }
770
790
  }
771
- return (index.h(index.Host, { key: 'd20fcf63958e3d491f4fd881a4a5dd242cfdd9ac', class: { mobile: this.isMobileDevice },
772
- // Open Editor on DblClick
773
- onDblClick: (e) => {
774
- // DblClick prevented outside - Editor will not open
775
- if (!e.defaultPrevented) {
776
- this.doEdit();
777
- }
778
- }, onMouseDown: (e) => this.onElementMouseDown(e), onTouchStart: (e) => this.onElementMouseDown(e, true) }, nodes, index.h("slot", { key: '89b9bec7824739ea11fadeecbf3908ac74e85c96', name: "data" })));
791
+ return (index.h(index.Host, { key: '3d40ea4ca89197d464bc5b84354e859a7bb9e1fa', class: { mobile: this.isMobileDevice }, onDblClick: (e) => this.onElementDblClick(e), onMouseDown: (e) => this.onElementMouseDown(e), onTouchStart: (e) => this.onElementMouseDown(e, true) }, nodes, index.h("slot", { key: '0d318f6e73fe84efd8d3b621c463bb3700d11eed', name: "data" })));
779
792
  }
793
+ /**
794
+ * Executes the focus operation on the specified range of cells.
795
+ */
780
796
  doFocus(focus, end, next) {
781
797
  const { defaultPrevented } = this.beforeFocusCell.emit(this.columnService.getSaveData(focus.y, focus.x));
782
798
  if (defaultPrevented) {
@@ -810,31 +826,48 @@ const OverlaySelection = class {
810
826
  }
811
827
  return !e.defaultPrevented;
812
828
  }
829
+ /**
830
+ * Open Editor on DblClick
831
+ */
832
+ onElementDblClick(e) {
833
+ // DblClick prevented outside - Editor will not open
834
+ // Get data from the component
835
+ const data = this.getData();
836
+ const focusCell = getFocusCellBasedOnEvent(e, data);
837
+ if (!focusCell) {
838
+ return;
839
+ }
840
+ this.doEdit();
841
+ }
842
+ /**
843
+ * Handle mouse down event on Host element
844
+ */
813
845
  onElementMouseDown(e, touch = false) {
846
+ // Get the target element from the event object
847
+ const targetElement = e.target;
814
848
  // Ignore focus if clicked input
815
- if (key_utils.isEditInput(e.target)) {
849
+ if (key_utils.isEditInput(targetElement)) {
816
850
  return;
817
851
  }
852
+ // Get data from the component
818
853
  const data = this.getData();
819
- if (e.defaultPrevented) {
820
- return;
821
- }
822
- const x = events.getFromEvent(e, 'clientX');
823
- const y = events.getFromEvent(e, 'clientY');
824
- // skip touch
825
- if (x === null || y === null) {
854
+ const focusCell = getFocusCellBasedOnEvent(e, data);
855
+ if (!focusCell) {
826
856
  return;
827
857
  }
828
- // Regular cell click
829
- const focusCell = getCurrentCell({ x, y }, data);
830
- this.selectionStoreService.focus(focusCell, this.range && e.shiftKey);
858
+ // Set focus on the current cell
859
+ this.focus(focusCell, this.range && e.shiftKey);
831
860
  // Initiate autofill selection
832
861
  if (this.range) {
833
- this.autoFillService.selectionStart(e.target, data);
862
+ this.autoFillService.selectionStart(targetElement, this.getData());
863
+ // Prevent default behavior for mouse events,
864
+ // but only if target element is not a mobile input
834
865
  if (!touch) {
835
866
  e.preventDefault();
836
867
  }
837
868
  else if (events.verifyTouchTarget(e.touches[0], index$1.MOBILE_CLASS)) {
869
+ // Prevent default behavior for touch events
870
+ // if target element is a mobile input
838
871
  e.preventDefault();
839
872
  }
840
873
  }
@@ -845,8 +878,8 @@ const OverlaySelection = class {
845
878
  doEdit(val = '') {
846
879
  var _a;
847
880
  if (this.canEdit()) {
848
- const editCell = this.selectionStore.get('focus');
849
- const data = this.columnService.getSaveData(editCell.y, editCell.x);
881
+ const focus = this.selectionStore.get('focus');
882
+ const data = this.columnService.getSaveData(focus.y, focus.x);
850
883
  (_a = this.setEdit) === null || _a === void 0 ? void 0 : _a.emit(Object.assign(Object.assign({}, data), { val }));
851
884
  }
852
885
  }
@@ -869,10 +902,10 @@ const OverlaySelection = class {
869
902
  this.cellEditApply.emit(dataToSave);
870
903
  }
871
904
  getRegion() {
872
- const focus = this.selectionStoreService.focused;
873
- let range = this.selectionStoreService.ranged;
905
+ const focus = this.selectionStore.get('focus');
906
+ let range = this.selectionStore.get('range');
874
907
  if (!range) {
875
- range = selection_store.getRange(focus, focus);
908
+ range = selection_helpers.getRange(focus, focus);
876
909
  }
877
910
  return range;
878
911
  }
@@ -896,8 +929,8 @@ const OverlaySelection = class {
896
929
  return true;
897
930
  }
898
931
  onPaste(data) {
899
- const focus = this.selectionStoreService.focused;
900
- const isEditing = this.selectionStoreService.edited !== null;
932
+ const focus = this.selectionStore.get('focus');
933
+ const isEditing = this.selectionStore.get('edit') !== null;
901
934
  if (!focus || isEditing) {
902
935
  return;
903
936
  }
@@ -917,13 +950,13 @@ const OverlaySelection = class {
917
950
  }
918
951
  }
919
952
  clearCell() {
920
- if (this.selectionStoreService.ranged &&
921
- !selection_store.isRangeSingleCell(this.selectionStoreService.ranged)) {
922
- const data = this.columnService.getRangeStaticData(this.selectionStoreService.ranged, '');
923
- this.autoFillService.onRangeApply(data, this.selectionStoreService.ranged);
953
+ if (this.selectionStore.get('range') &&
954
+ !selection_helpers.isRangeSingleCell(this.selectionStore.get('range'))) {
955
+ const data = this.columnService.getRangeStaticData(this.selectionStore.get('range'), '');
956
+ this.autoFillService.onRangeApply(data, this.selectionStore.get('range'));
924
957
  }
925
958
  else if (this.canEdit()) {
926
- const focused = this.selectionStoreService.focused;
959
+ const focused = this.selectionStore.get('focus');
927
960
  const cell = this.columnService.getSaveData(focused.y, focused.x);
928
961
  this.cellEdit({
929
962
  rgRow: focused.y,
@@ -945,8 +978,24 @@ const OverlaySelection = class {
945
978
  if (this.readonly) {
946
979
  return false;
947
980
  }
948
- const editCell = this.selectionStoreService.focused;
949
- return editCell && !((_a = this.columnService) === null || _a === void 0 ? void 0 : _a.isReadOnly(editCell.y, editCell.x));
981
+ const focus = this.selectionStore.get('focus');
982
+ return focus && !((_a = this.columnService) === null || _a === void 0 ? void 0 : _a.isReadOnly(focus.y, focus.x));
983
+ }
984
+ get edited() {
985
+ return this.selectionStore.get('edit');
986
+ }
987
+ /**
988
+ * Sets the focus on a cell and optionally edits a range.
989
+ */
990
+ focus(cell, isRangeEdit = false) {
991
+ if (!cell)
992
+ return false;
993
+ const end = cell;
994
+ const start = this.selectionStore.get('focus');
995
+ if (isRangeEdit && start) {
996
+ return this.triggerRangeEvent(selection_helpers.getRange(start, end));
997
+ }
998
+ return this.doFocus(cell, end);
950
999
  }
951
1000
  get types() {
952
1001
  return {
@@ -963,6 +1012,8 @@ const OverlaySelection = class {
963
1012
  rows: this.dimensionRow.state,
964
1013
  cols: this.dimensionCol.state,
965
1014
  lastCell: this.lastCell,
1015
+ focus: this.selectionStore.get('focus'),
1016
+ range: this.selectionStore.get('range'),
966
1017
  };
967
1018
  }
968
1019
  get element() { return index.getElement(this); }
@@ -994,7 +1045,7 @@ const RevogrRowHeaders = class {
994
1045
  }
995
1046
  render() {
996
1047
  const dataViews = [];
997
- const viewport = new events.ViewportStore('colPinStart');
1048
+ const viewport = new viewport_store.ViewportStore('colPinStart');
998
1049
  /** render viewports rows */
999
1050
  let totalLength = 1;
1000
1051
  // todo: this part could be optimized to avoid to often re-render dataPorts can be cached
@@ -1006,7 +1057,7 @@ const RevogrRowHeaders = class {
1006
1057
  const colData = new dimension_helpers.DataStore('colPinStart');
1007
1058
  const column = Object.assign({ cellTemplate: RowHeaderRender(totalLength) }, this.rowHeaderColumn);
1008
1059
  colData.updateData([column]);
1009
- dataViews.push(index.h("revogr-data", Object.assign({}, data, { colType: 'rowHeaders', jobsBeforeRender: this.jobsBeforeRender, rowClass: this.rowClass, dataStore: dataStore.store, colData: colData.store, viewportCol: viewport.store, readonly: true, range: false })));
1060
+ dataViews.push(index.h("revogr-data", Object.assign({}, data, { colType: "rowHeaders", jobsBeforeRender: this.jobsBeforeRender, rowClass: this.rowClass, dataStore: dataStore.store, colData: colData.store, viewportCol: viewport.store, readonly: true, range: false })));
1010
1061
  totalLength += itemCount;
1011
1062
  }
1012
1063
  const colSize = events.calculateRowHeaderSize(totalLength, this.rowHeaderColumn);
@@ -1033,7 +1084,7 @@ const RevogrRowHeaders = class {
1033
1084
  const viewportHeader = Object.assign(Object.assign({}, this.headerProp), { colData: typeof this.rowHeaderColumn === 'object' ? [this.rowHeaderColumn] : [], viewportCol: viewport.store, canResize: false, type: index$1.ROW_HEADER_TYPE,
1034
1085
  // parent,
1035
1086
  slot: column_service.HEADER_SLOT });
1036
- return (index.h(index.Host, { class: { [index$1.ROW_HEADER_TYPE]: true }, key: index$1.ROW_HEADER_TYPE }, index.h("revogr-viewport-scroll", Object.assign({ key: '53de708aa9a00a2ce363d8323b10d85aee070171' }, viewportScroll, { "row-header": true }), index.h("revogr-header", Object.assign({ key: '72e73ae122bb25f011422d3d044ccf7df613520c' }, viewportHeader)), dataViews)));
1087
+ return (index.h(index.Host, { class: { [index$1.ROW_HEADER_TYPE]: true }, key: index$1.ROW_HEADER_TYPE }, index.h("revogr-viewport-scroll", Object.assign({ key: 'efaaa386cb5ea8b848d42e3407dbde8ad99d1db8' }, viewportScroll, { "row-header": true }), index.h("revogr-header", Object.assign({ key: '57fb6d08cd094f9b19145ff65c3ab805992fbb68' }, viewportHeader)), dataViews)));
1037
1088
  }
1038
1089
  };
1039
1090
 
@@ -1186,7 +1237,7 @@ const RevogrScrollVirtual = class {
1186
1237
  }
1187
1238
  render() {
1188
1239
  const sizeType = this.dimension === 'rgRow' ? 'height' : 'width';
1189
- return (index.h(index.Host, { key: '648f7c565364722ee80475ca00ce44fb00c3a042', onScroll: (e) => this.onScroll(e) }, index.h("div", { key: '8aca236453e97e0f79d35946daa81c5be049fc26', style: {
1240
+ return (index.h(index.Host, { key: '9d672a8992b1c13814270537389142ef53d322f9', onScroll: (e) => this.onScroll(e) }, index.h("div", { key: '250886ee28842f087d815d66cbb046b38c466ebf', style: {
1190
1241
  [sizeType]: `${throttle.getContentSize(this.dimensionStore.get('realSize'), this.size, this.viewportStore.get('virtualSize'))}px`,
1191
1242
  } })));
1192
1243
  }