@revolist/revogrid 4.0.12 → 4.0.13

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 (360) 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-bc269420.js → column.service-52b4cac9.js} +6 -4
  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-57acd2f7.js → header-cell-renderer-a3f202a1.js} +2 -2
  11. package/dist/cjs/{header-cell-renderer-57acd2f7.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 +51 -157
  19. package/dist/cjs/revo-grid.cjs.entry.js.map +1 -1
  20. package/dist/cjs/revogr-attribution_6.cjs.entry.js +23 -22
  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 +45 -45
  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 +8 -8
  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 +27 -27
  53. package/dist/collection/components/order/revogr-order-editor.js.map +1 -1
  54. package/dist/collection/components/overlay/autofill.service.js +1 -2
  55. package/dist/collection/components/overlay/autofill.service.js.map +1 -1
  56. package/dist/collection/components/overlay/keyboard.service.js +1 -1
  57. package/dist/collection/components/overlay/keyboard.service.js.map +1 -1
  58. package/dist/collection/components/overlay/revogr-overlay-selection.js +36 -36
  59. package/dist/collection/components/overlay/revogr-overlay-selection.js.map +1 -1
  60. package/dist/collection/components/overlay/selection.utils.js +1 -1
  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.js +128 -128
  64. package/dist/collection/components/revoGrid/revo-grid.js.map +1 -1
  65. package/dist/collection/components/revoGrid/viewport.helpers.js.map +1 -1
  66. package/dist/collection/components/revoGrid/viewport.scrolling.service.js +4 -2
  67. package/dist/collection/components/revoGrid/viewport.scrolling.service.js.map +1 -1
  68. package/dist/collection/components/revoGrid/viewport.service.js +1 -2
  69. package/dist/collection/components/revoGrid/viewport.service.js.map +1 -1
  70. package/dist/collection/components/rowHeaders/revogr-row-headers.js +11 -12
  71. package/dist/collection/components/rowHeaders/revogr-row-headers.js.map +1 -1
  72. package/dist/collection/components/rowHeaders/row-header-render.js.map +1 -1
  73. package/dist/collection/components/scroll/revogr-viewport-scroll.js +17 -17
  74. package/dist/collection/components/scroll/revogr-viewport-scroll.js.map +1 -1
  75. package/dist/collection/components/scrollable/revogr-scroll-virtual.js +17 -17
  76. package/dist/collection/components/scrollable/revogr-scroll-virtual.js.map +1 -1
  77. package/dist/collection/components/selectionFocus/revogr-focus.js +44 -43
  78. package/dist/collection/components/selectionFocus/revogr-focus.js.map +1 -1
  79. package/dist/collection/components/selectionTempRange/revogr-temp-range.js +12 -12
  80. package/dist/collection/components/selectionTempRange/revogr-temp-range.js.map +1 -1
  81. package/dist/collection/components/vnode/vnode.utils.js.map +1 -1
  82. package/dist/collection/index.js +2 -12
  83. package/dist/collection/index.js.map +1 -1
  84. package/dist/collection/plugins/column.auto-size.plugin.js +3 -4
  85. package/dist/collection/plugins/column.auto-size.plugin.js.map +1 -1
  86. package/dist/collection/plugins/export/export.plugin.js +1 -1
  87. package/dist/collection/plugins/export/export.plugin.js.map +1 -1
  88. package/dist/collection/plugins/export/types.js.map +1 -1
  89. package/dist/collection/plugins/filter/filter.button.js.map +1 -1
  90. package/dist/collection/plugins/filter/filter.plugin.js.map +1 -1
  91. package/dist/collection/plugins/filter/filter.pop.js +4 -4
  92. package/dist/collection/plugins/filter/filter.pop.js.map +1 -1
  93. package/dist/collection/plugins/groupingColumn/columnGroupsRenderer.js +1 -1
  94. package/dist/collection/plugins/groupingColumn/columnGroupsRenderer.js.map +1 -1
  95. package/dist/collection/plugins/groupingColumn/grouping.col.plugin.js.map +1 -1
  96. package/dist/collection/plugins/groupingColumn/headerGroupRenderer.js.map +1 -1
  97. package/dist/collection/plugins/groupingRow/grouping.row.expand.service.js.map +1 -1
  98. package/dist/collection/plugins/groupingRow/grouping.row.plugin.js +1 -2
  99. package/dist/collection/plugins/groupingRow/grouping.row.plugin.js.map +1 -1
  100. package/dist/collection/plugins/groupingRow/grouping.row.renderer.js.map +1 -1
  101. package/dist/collection/plugins/groupingRow/grouping.row.types.js.map +1 -1
  102. package/dist/collection/plugins/groupingRow/grouping.service.js.map +1 -1
  103. package/dist/collection/plugins/groupingRow/grouping.trimmed.service.js +1 -1
  104. package/dist/collection/plugins/groupingRow/grouping.trimmed.service.js.map +1 -1
  105. package/dist/collection/plugins/moveColumn/column.drag.plugin.js +1 -1
  106. package/dist/collection/plugins/moveColumn/column.drag.plugin.js.map +1 -1
  107. package/dist/collection/plugins/sorting/sorting.plugin.js +2 -2
  108. package/dist/collection/plugins/sorting/sorting.plugin.js.map +1 -1
  109. package/dist/collection/plugins/sorting/sorting.sign.js.map +1 -1
  110. package/dist/collection/services/column.data.provider.js +1 -2
  111. package/dist/collection/services/column.data.provider.js.map +1 -1
  112. package/dist/collection/services/data.provider.js +1 -2
  113. package/dist/collection/services/data.provider.js.map +1 -1
  114. package/dist/collection/services/dimension.provider.js +3 -5
  115. package/dist/collection/services/dimension.provider.js.map +1 -1
  116. package/dist/collection/services/selection.store.connector.js +1 -2
  117. package/dist/collection/services/selection.store.connector.js.map +1 -1
  118. package/dist/collection/services/viewport.provider.js +1 -2
  119. package/dist/collection/services/viewport.provider.js.map +1 -1
  120. package/dist/collection/store/dataSource/data.proxy.js.map +1 -1
  121. package/dist/collection/store/dataSource/data.store.js +1 -1
  122. package/dist/collection/store/dataSource/data.store.js.map +1 -1
  123. package/dist/collection/store/dataSource/trimmed.plugin.js.map +1 -1
  124. package/dist/collection/store/dimension/dimension.helpers.js.map +1 -1
  125. package/dist/collection/store/dimension/dimension.store.js +1 -1
  126. package/dist/collection/store/dimension/dimension.store.js.map +1 -1
  127. package/dist/collection/store/{storeTypes.js → index.js} +5 -1
  128. package/dist/collection/store/index.js.map +1 -0
  129. package/dist/collection/store/selection/selection.helpers.js.map +1 -1
  130. package/dist/collection/store/selection/selection.store.js +1 -1
  131. package/dist/collection/store/selection/selection.store.js.map +1 -1
  132. package/dist/collection/store/vp/index.js.map +1 -0
  133. package/dist/collection/store/vp/viewport.helpers.js.map +1 -0
  134. package/dist/collection/store/{viewport → vp}/viewport.store.js +4 -7
  135. package/dist/collection/store/vp/viewport.store.js.map +1 -0
  136. package/dist/collection/types/index.js +11 -0
  137. package/dist/collection/types/index.js.map +1 -0
  138. package/dist/collection/types/viewport.interfaces.js.map +1 -1
  139. package/dist/collection/utils/index.js +0 -1
  140. package/dist/collection/utils/index.js.map +1 -1
  141. package/dist/collection/utils/store.utils.js.map +1 -1
  142. package/dist/esm/app-globals-ef1fca59.js.map +1 -1
  143. package/dist/esm/base.plugin-d0e589d8.js +213 -0
  144. package/dist/esm/base.plugin-d0e589d8.js.map +1 -0
  145. package/dist/esm/{column.service-195345ab.js → column.service-a826bbd6.js} +5 -3
  146. package/dist/esm/column.service-a826bbd6.js.map +1 -0
  147. package/dist/esm/dimension.helpers-a3065cb1.js.map +1 -1
  148. package/dist/esm/events-77b43b40.js +48 -0
  149. package/dist/esm/events-77b43b40.js.map +1 -0
  150. package/dist/esm/filter.button-46ce4f80.js.map +1 -1
  151. package/dist/esm/{header-cell-renderer-7c76465d.js → header-cell-renderer-19738045.js} +2 -2
  152. package/dist/esm/{header-cell-renderer-7c76465d.js.map → header-cell-renderer-19738045.js.map} +1 -1
  153. package/dist/esm/{index-98fd0168.js → index-5a722722.js} +3 -4
  154. package/dist/esm/index-5a722722.js.map +1 -0
  155. package/dist/esm/index.js +4 -4
  156. package/dist/esm/{key.utils-2836e8ae.js → key.utils-7c5d91dd.js} +2 -2
  157. package/dist/esm/{key.utils-2836e8ae.js.map → key.utils-7c5d91dd.js.map} +1 -1
  158. package/dist/esm/revo-grid.entry.js +19 -125
  159. package/dist/esm/revo-grid.entry.js.map +1 -1
  160. package/dist/esm/revogr-attribution_6.entry.js +15 -14
  161. package/dist/esm/revogr-attribution_6.entry.js.map +1 -1
  162. package/dist/esm/revogr-clipboard_3.entry.js +2 -2
  163. package/dist/esm/revogr-clipboard_3.entry.js.map +1 -1
  164. package/dist/esm/revogr-data_4.entry.js +9 -9
  165. package/dist/esm/revogr-data_4.entry.js.map +1 -1
  166. package/dist/esm/revogr-filter-panel.entry.js.map +1 -1
  167. package/dist/esm/{selection.store-2577ddf9.js → selection.helpers-883ce6bc.js} +77 -75
  168. package/dist/esm/selection.helpers-883ce6bc.js.map +1 -0
  169. package/dist/esm/{throttle-cfd527d6.js → throttle-eeca0062.js} +2 -2
  170. package/dist/esm/{throttle-cfd527d6.js.map → throttle-eeca0062.js.map} +1 -1
  171. package/dist/esm/{viewport.helpers-6591d423.js → viewport.store-d9e291c5.js} +187 -3
  172. package/dist/esm/viewport.store-d9e291c5.js.map +1 -0
  173. package/dist/revo-grid/app-globals-ef1fca59.js.map +1 -1
  174. package/dist/revo-grid/base.plugin-d0e589d8.js +5 -0
  175. package/dist/revo-grid/base.plugin-d0e589d8.js.map +1 -0
  176. package/dist/revo-grid/column.service-a826bbd6.js +5 -0
  177. package/dist/revo-grid/column.service-a826bbd6.js.map +1 -0
  178. package/dist/revo-grid/dimension.helpers-a3065cb1.js.map +1 -1
  179. package/dist/revo-grid/events-77b43b40.js +5 -0
  180. package/dist/revo-grid/events-77b43b40.js.map +1 -0
  181. package/dist/revo-grid/filter.button-46ce4f80.js.map +1 -1
  182. package/dist/revo-grid/{header-cell-renderer-7c76465d.js → header-cell-renderer-19738045.js} +2 -2
  183. package/dist/revo-grid/{header-cell-renderer-7c76465d.js.map → header-cell-renderer-19738045.js.map} +1 -1
  184. package/dist/revo-grid/index-5a722722.js +5 -0
  185. package/dist/{esm/index-98fd0168.js.map → revo-grid/index-5a722722.js.map} +1 -1
  186. package/dist/revo-grid/index.esm.js +1 -1
  187. package/dist/revo-grid/{key.utils-2836e8ae.js → key.utils-7c5d91dd.js} +2 -2
  188. package/dist/revo-grid/key.utils-7c5d91dd.js.map +1 -0
  189. package/dist/revo-grid/revo-grid.entry.js +1 -1
  190. package/dist/revo-grid/revo-grid.entry.js.map +1 -1
  191. package/dist/revo-grid/revogr-attribution_6.entry.js +1 -1
  192. package/dist/revo-grid/revogr-attribution_6.entry.js.map +1 -1
  193. package/dist/revo-grid/revogr-clipboard_3.entry.js +1 -1
  194. package/dist/revo-grid/revogr-clipboard_3.entry.js.map +1 -1
  195. package/dist/revo-grid/revogr-data_4.entry.js +1 -1
  196. package/dist/revo-grid/revogr-data_4.entry.js.map +1 -1
  197. package/dist/revo-grid/revogr-filter-panel.entry.js.map +1 -1
  198. package/dist/revo-grid/selection.helpers-883ce6bc.js +5 -0
  199. package/dist/revo-grid/selection.helpers-883ce6bc.js.map +1 -0
  200. package/dist/revo-grid/{throttle-cfd527d6.js → throttle-eeca0062.js} +2 -2
  201. package/dist/revo-grid/viewport.store-d9e291c5.js +5 -0
  202. package/dist/revo-grid/viewport.store-d9e291c5.js.map +1 -0
  203. package/dist/types/components/clipboard/revogr-clipboard.d.ts +1 -1
  204. package/dist/types/components/data/cell-renderer.d.ts +1 -1
  205. package/dist/types/components/data/column.service.d.ts +4 -4
  206. package/dist/types/components/data/revogr-data.d.ts +4 -4
  207. package/dist/types/components/data/row-highlight.plugin.d.ts +1 -1
  208. package/dist/types/components/editors/edit.utils.d.ts +1 -1
  209. package/dist/types/components/editors/revogr-edit.d.ts +2 -2
  210. package/dist/types/components/editors/text-editor.d.ts +2 -2
  211. package/dist/types/components/header/header-cell-renderer.d.ts +1 -1
  212. package/dist/types/components/header/header-renderer.d.ts +2 -2
  213. package/dist/types/components/header/revogr-header.d.ts +4 -4
  214. package/dist/types/components/order/order-renderer.d.ts +2 -2
  215. package/dist/types/components/order/order-row.service.d.ts +1 -2
  216. package/dist/types/components/order/revogr-order-editor.d.ts +4 -4
  217. package/dist/types/components/overlay/autofill.service.d.ts +2 -4
  218. package/dist/types/components/overlay/keyboard.service.d.ts +2 -2
  219. package/dist/types/components/overlay/revogr-overlay-selection.d.ts +5 -5
  220. package/dist/types/components/overlay/selection.utils.d.ts +1 -2
  221. package/dist/types/components/revoGrid/grid.helpers.d.ts +1 -1
  222. package/dist/types/components/revoGrid/revo-grid.d.ts +6 -6
  223. package/dist/types/components/revoGrid/viewport.helpers.d.ts +3 -3
  224. package/dist/types/components/revoGrid/viewport.scrolling.service.d.ts +1 -3
  225. package/dist/types/components/revoGrid/viewport.service.d.ts +1 -4
  226. package/dist/types/components/rowHeaders/revogr-row-headers.d.ts +1 -2
  227. package/dist/types/components/rowHeaders/row-header-render.d.ts +1 -1
  228. package/dist/types/components/scroll/revogr-viewport-scroll.d.ts +2 -2
  229. package/dist/types/components/scrollable/revogr-scroll-virtual.d.ts +2 -2
  230. package/dist/types/components/selectionFocus/revogr-focus.d.ts +3 -5
  231. package/dist/types/components/selectionTempRange/revogr-temp-range.d.ts +2 -2
  232. package/dist/types/components/vnode/vnode.utils.d.ts +1 -1
  233. package/dist/types/components.d.ts +4 -14
  234. package/dist/types/index.d.ts +2 -12
  235. package/dist/types/plugins/export/export.plugin.d.ts +1 -1
  236. package/dist/types/plugins/export/types.d.ts +1 -1
  237. package/dist/types/plugins/filter/filter.button.d.ts +1 -1
  238. package/dist/types/plugins/filter/filter.plugin.d.ts +2 -2
  239. package/dist/types/plugins/filter/filter.pop.d.ts +1 -1
  240. package/dist/types/plugins/groupingColumn/columnGroupsRenderer.d.ts +3 -4
  241. package/dist/types/plugins/groupingColumn/grouping.col.plugin.d.ts +3 -3
  242. package/dist/types/plugins/groupingColumn/headerGroupRenderer.d.ts +2 -2
  243. package/dist/types/plugins/groupingRow/grouping.row.expand.service.d.ts +1 -1
  244. package/dist/types/plugins/groupingRow/grouping.row.plugin.d.ts +2 -2
  245. package/dist/types/plugins/groupingRow/grouping.row.renderer.d.ts +1 -1
  246. package/dist/types/plugins/groupingRow/grouping.row.types.d.ts +1 -1
  247. package/dist/types/plugins/groupingRow/grouping.service.d.ts +1 -1
  248. package/dist/types/plugins/groupingRow/grouping.trimmed.service.d.ts +1 -1
  249. package/dist/types/plugins/moveColumn/column.drag.plugin.d.ts +1 -3
  250. package/dist/types/plugins/sorting/sorting.plugin.d.ts +1 -3
  251. package/dist/types/plugins/sorting/sorting.sign.d.ts +1 -1
  252. package/dist/types/services/column.data.provider.d.ts +2 -3
  253. package/dist/types/services/data.provider.d.ts +2 -5
  254. package/dist/types/services/dimension.provider.d.ts +2 -4
  255. package/dist/types/services/selection.store.connector.d.ts +2 -3
  256. package/dist/types/services/viewport.provider.d.ts +3 -3
  257. package/dist/types/store/dataSource/data.proxy.d.ts +2 -2
  258. package/dist/types/store/dataSource/data.store.d.ts +3 -3
  259. package/dist/types/store/dataSource/trimmed.plugin.d.ts +1 -1
  260. package/dist/types/store/dimension/dimension.helpers.d.ts +1 -1
  261. package/dist/types/store/dimension/dimension.store.d.ts +4 -5
  262. package/dist/types/store/{storeTypes.d.ts → index.d.ts} +5 -1
  263. package/dist/types/store/selection/selection.helpers.d.ts +1 -1
  264. package/dist/types/store/selection/selection.store.d.ts +2 -2
  265. package/dist/types/store/vp/index.d.ts +7 -0
  266. package/dist/types/store/{viewport → vp}/viewport.helpers.d.ts +1 -1
  267. package/dist/types/store/{viewport → vp}/viewport.store.d.ts +3 -7
  268. package/dist/types/types/index.d.ts +7 -0
  269. package/dist/types/types/viewport.interfaces.d.ts +5 -8
  270. package/dist/types/utils/index.d.ts +0 -1
  271. package/dist/types/utils/store.utils.d.ts +1 -1
  272. package/hydrate/index.js +3169 -3167
  273. package/package.json +5 -5
  274. package/readme.md +8 -8
  275. package/standalone/_baseIteratee.js +1104 -13
  276. package/standalone/_baseIteratee.js.map +1 -1
  277. package/standalone/_nodeUtil.js +260 -0
  278. package/standalone/_nodeUtil.js.map +1 -0
  279. package/standalone/column.service.js +78 -74
  280. package/standalone/column.service.js.map +1 -1
  281. package/standalone/data.store.js +2 -4
  282. package/standalone/data.store.js.map +1 -1
  283. package/standalone/debounce.js +2 -2
  284. package/standalone/dimension.helpers.js +1 -1
  285. package/standalone/dimension.helpers.js.map +1 -1
  286. package/standalone/filter.button.js.map +1 -1
  287. package/standalone/identity.js +42 -2
  288. package/standalone/identity.js.map +1 -1
  289. package/standalone/index.js +5 -7
  290. package/standalone/index.js.map +1 -1
  291. package/standalone/index2.js +2 -3
  292. package/standalone/index2.js.map +1 -1
  293. package/standalone/isObjectLike.js +1 -34
  294. package/standalone/isObjectLike.js.map +1 -1
  295. package/standalone/revo-grid.js +100 -98
  296. package/standalone/revo-grid.js.map +1 -1
  297. package/standalone/revogr-clipboard2.js.map +1 -1
  298. package/standalone/revogr-data2.js +3 -0
  299. package/standalone/revogr-data2.js.map +1 -1
  300. package/standalone/revogr-edit2.js +1 -1
  301. package/standalone/revogr-edit2.js.map +1 -1
  302. package/standalone/revogr-filter-panel.js.map +1 -1
  303. package/standalone/revogr-focus2.js +6 -2
  304. package/standalone/revogr-focus2.js.map +1 -1
  305. package/standalone/revogr-header2.js +5 -4
  306. package/standalone/revogr-header2.js.map +1 -1
  307. package/standalone/revogr-order-editor2.js +3 -0
  308. package/standalone/revogr-order-editor2.js.map +1 -1
  309. package/standalone/revogr-overlay-selection2.js +4 -1
  310. package/standalone/revogr-overlay-selection2.js.map +1 -1
  311. package/standalone/revogr-row-headers2.js +5 -5
  312. package/standalone/revogr-row-headers2.js.map +1 -1
  313. package/standalone/revogr-scroll-virtual2.js +1 -1
  314. package/standalone/revogr-scroll-virtual2.js.map +1 -1
  315. package/standalone/revogr-temp-range2.js.map +1 -1
  316. package/standalone/revogr-viewport-scroll2.js +1 -1
  317. package/standalone/revogr-viewport-scroll2.js.map +1 -1
  318. package/standalone/selection.utils.js +4 -0
  319. package/standalone/selection.utils.js.map +1 -1
  320. package/standalone/throttle.js +1 -1
  321. package/standalone/toNumber.js +35 -2
  322. package/standalone/toNumber.js.map +1 -1
  323. package/dist/cjs/column.service-bc269420.js.map +0 -1
  324. package/dist/cjs/events-f8893bba.js +0 -243
  325. package/dist/cjs/events-f8893bba.js.map +0 -1
  326. package/dist/cjs/index-73c149e3.js.map +0 -1
  327. package/dist/cjs/selection.store-2e110a67.js.map +0 -1
  328. package/dist/cjs/storeTypes-b3f924b2.js +0 -106
  329. package/dist/cjs/storeTypes-b3f924b2.js.map +0 -1
  330. package/dist/cjs/viewport.helpers-6670177c.js.map +0 -1
  331. package/dist/collection/store/storeTypes.js.map +0 -1
  332. package/dist/collection/store/viewport/index.js.map +0 -1
  333. package/dist/collection/store/viewport/viewport.helpers.js.map +0 -1
  334. package/dist/collection/store/viewport/viewport.store.js.map +0 -1
  335. package/dist/esm/column.service-195345ab.js.map +0 -1
  336. package/dist/esm/events-3e39de50.js +0 -238
  337. package/dist/esm/events-3e39de50.js.map +0 -1
  338. package/dist/esm/selection.store-2577ddf9.js.map +0 -1
  339. package/dist/esm/storeTypes-f2647985.js +0 -101
  340. package/dist/esm/storeTypes-f2647985.js.map +0 -1
  341. package/dist/esm/viewport.helpers-6591d423.js.map +0 -1
  342. package/dist/revo-grid/column.service-195345ab.js +0 -5
  343. package/dist/revo-grid/column.service-195345ab.js.map +0 -1
  344. package/dist/revo-grid/events-3e39de50.js +0 -5
  345. package/dist/revo-grid/events-3e39de50.js.map +0 -1
  346. package/dist/revo-grid/index-98fd0168.js +0 -5
  347. package/dist/revo-grid/index-98fd0168.js.map +0 -1
  348. package/dist/revo-grid/key.utils-2836e8ae.js.map +0 -1
  349. package/dist/revo-grid/selection.store-2577ddf9.js +0 -5
  350. package/dist/revo-grid/selection.store-2577ddf9.js.map +0 -1
  351. package/dist/revo-grid/storeTypes-f2647985.js +0 -5
  352. package/dist/revo-grid/storeTypes-f2647985.js.map +0 -1
  353. package/dist/revo-grid/viewport.helpers-6591d423.js +0 -5
  354. package/dist/revo-grid/viewport.helpers-6591d423.js.map +0 -1
  355. package/dist/types/store/viewport/index.d.ts +0 -2
  356. package/standalone/_stringToPath.js +0 -1389
  357. package/standalone/_stringToPath.js.map +0 -1
  358. /package/dist/collection/store/{viewport → vp}/index.js +0 -0
  359. /package/dist/collection/store/{viewport → vp}/viewport.helpers.js +0 -0
  360. /package/dist/revo-grid/{throttle-cfd527d6.js.map → throttle-eeca0062.js.map} +0 -0
@@ -5,7 +5,7 @@ import { h, Host, } from "@stencil/core";
5
5
  import ColumnService from "../data/column.service";
6
6
  import { codesLetter } from "../../utils/key.codes";
7
7
  import { MOBILE_CLASS, SELECTION_BORDER_CLASS } from "../../utils/consts";
8
- import { getRange, isRangeSingleCell, } from "../../store/selection/selection.helpers";
8
+ import { getRange, isRangeSingleCell, } from "../../store/index";
9
9
  import { getElStyle, getFocusCellBasedOnEvent, } from "./selection.utils";
10
10
  import { isEditInput } from "../editors/edit.utils";
11
11
  import { KeyboardService } from "./keyboard.service";
@@ -206,7 +206,7 @@ export class OverlaySelection {
206
206
  nodes.push(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) }));
207
207
  }
208
208
  }
209
- return (h(Host, { key: '9dbb6247aebf4ad00c1c8c78852191671be33a11', class: { mobile: this.isMobileDevice }, onDblClick: (e) => this.onElementDblClick(e), onMouseDown: (e) => this.onElementMouseDown(e), onTouchStart: (e) => this.onElementMouseDown(e, true) }, nodes, h("slot", { key: '7769092a5029c5a49da8c2d6f36eb9f17b461bc2', name: "data" })));
209
+ return (h(Host, { key: '3d40ea4ca89197d464bc5b84354e859a7bb9e1fa', class: { mobile: this.isMobileDevice }, onDblClick: (e) => this.onElementDblClick(e), onMouseDown: (e) => this.onElementMouseDown(e), onTouchStart: (e) => this.onElementMouseDown(e, true) }, nodes, h("slot", { key: '0d318f6e73fe84efd8d3b621c463bb3700d11eed', name: "data" })));
210
210
  }
211
211
  /**
212
212
  * Executes the focus operation on the specified range of cells.
@@ -607,8 +607,8 @@ export class OverlaySelection {
607
607
  },
608
608
  "DSourceState": {
609
609
  "location": "import",
610
- "path": "../../store/dataSource/data.store",
611
- "id": "src/store/dataSource/data.store.ts::DSourceState"
610
+ "path": "@store",
611
+ "id": "src/store/index.ts::DSourceState"
612
612
  },
613
613
  "DataType": {
614
614
  "location": "import",
@@ -643,8 +643,8 @@ export class OverlaySelection {
643
643
  },
644
644
  "DSourceState": {
645
645
  "location": "import",
646
- "path": "../../store/dataSource/data.store",
647
- "id": "src/store/dataSource/data.store.ts::DSourceState"
646
+ "path": "@store",
647
+ "id": "src/store/index.ts::DSourceState"
648
648
  },
649
649
  "ColumnRegular": {
650
650
  "location": "import",
@@ -695,8 +695,8 @@ export class OverlaySelection {
695
695
  "references": {
696
696
  "Editors": {
697
697
  "location": "import",
698
- "path": "../../types/selection",
699
- "id": "src/types/selection.ts::Editors"
698
+ "path": "@type",
699
+ "id": "src/types/index.ts::Editors"
700
700
  }
701
701
  }
702
702
  },
@@ -808,8 +808,8 @@ export class OverlaySelection {
808
808
  "references": {
809
809
  "BeforeSaveDataDetails": {
810
810
  "location": "import",
811
- "path": "../../types/selection",
812
- "id": "src/types/selection.ts::BeforeSaveDataDetails"
811
+ "path": "@type",
812
+ "id": "src/types/index.ts::BeforeSaveDataDetails"
813
813
  }
814
814
  }
815
815
  }
@@ -829,8 +829,8 @@ export class OverlaySelection {
829
829
  "references": {
830
830
  "BeforeSaveDataDetails": {
831
831
  "location": "import",
832
- "path": "../../types/selection",
833
- "id": "src/types/selection.ts::BeforeSaveDataDetails"
832
+ "path": "@type",
833
+ "id": "src/types/index.ts::BeforeSaveDataDetails"
834
834
  }
835
835
  }
836
836
  }
@@ -850,8 +850,8 @@ export class OverlaySelection {
850
850
  "references": {
851
851
  "BeforeEdit": {
852
852
  "location": "import",
853
- "path": "../../types/selection",
854
- "id": "src/types/selection.ts::BeforeEdit"
853
+ "path": "@type",
854
+ "id": "src/types/index.ts::BeforeEdit"
855
855
  }
856
856
  }
857
857
  }
@@ -871,8 +871,8 @@ export class OverlaySelection {
871
871
  "references": {
872
872
  "FocusRenderEvent": {
873
873
  "location": "import",
874
- "path": "../../types/interfaces",
875
- "id": "src/types/interfaces.ts::FocusRenderEvent"
874
+ "path": "@type",
875
+ "id": "src/types/index.ts::FocusRenderEvent"
876
876
  }
877
877
  }
878
878
  }
@@ -907,8 +907,8 @@ export class OverlaySelection {
907
907
  "references": {
908
908
  "FocusRenderEvent": {
909
909
  "location": "import",
910
- "path": "../../types/interfaces",
911
- "id": "src/types/interfaces.ts::FocusRenderEvent"
910
+ "path": "@type",
911
+ "id": "src/types/index.ts::FocusRenderEvent"
912
912
  }
913
913
  }
914
914
  }
@@ -928,13 +928,13 @@ export class OverlaySelection {
928
928
  "references": {
929
929
  "RangeArea": {
930
930
  "location": "import",
931
- "path": "../../types/selection",
932
- "id": "src/types/selection.ts::RangeArea"
931
+ "path": "@type",
932
+ "id": "src/types/index.ts::RangeArea"
933
933
  },
934
934
  "MultiDimensionType": {
935
935
  "location": "import",
936
- "path": "../../types/dimension",
937
- "id": "src/types/dimension.ts::MultiDimensionType"
936
+ "path": "@type",
937
+ "id": "src/types/index.ts::MultiDimensionType"
938
938
  }
939
939
  }
940
940
  }
@@ -984,8 +984,8 @@ export class OverlaySelection {
984
984
  "references": {
985
985
  "TempRange": {
986
986
  "location": "import",
987
- "path": "../../types/selection",
988
- "id": "src/types/selection.ts::TempRange"
987
+ "path": "@type",
988
+ "id": "src/types/index.ts::TempRange"
989
989
  }
990
990
  }
991
991
  }
@@ -1005,8 +1005,8 @@ export class OverlaySelection {
1005
1005
  "references": {
1006
1006
  "FocusRenderEvent": {
1007
1007
  "location": "import",
1008
- "path": "../../types/interfaces",
1009
- "id": "src/types/interfaces.ts::FocusRenderEvent"
1008
+ "path": "@type",
1009
+ "id": "src/types/index.ts::FocusRenderEvent"
1010
1010
  }
1011
1011
  }
1012
1012
  }
@@ -1026,8 +1026,8 @@ export class OverlaySelection {
1026
1026
  "references": {
1027
1027
  "ApplyFocusEvent": {
1028
1028
  "location": "import",
1029
- "path": "../../types/interfaces",
1030
- "id": "src/types/interfaces.ts::ApplyFocusEvent"
1029
+ "path": "@type",
1030
+ "id": "src/types/index.ts::ApplyFocusEvent"
1031
1031
  }
1032
1032
  }
1033
1033
  }
@@ -1047,8 +1047,8 @@ export class OverlaySelection {
1047
1047
  "references": {
1048
1048
  "FocusRenderEvent": {
1049
1049
  "location": "import",
1050
- "path": "../../types/interfaces",
1051
- "id": "src/types/interfaces.ts::FocusRenderEvent"
1050
+ "path": "@type",
1051
+ "id": "src/types/index.ts::FocusRenderEvent"
1052
1052
  }
1053
1053
  }
1054
1054
  }
@@ -1068,8 +1068,8 @@ export class OverlaySelection {
1068
1068
  "references": {
1069
1069
  "ChangedRange": {
1070
1070
  "location": "import",
1071
- "path": "../../types/selection",
1072
- "id": "src/types/selection.ts::ChangedRange"
1071
+ "path": "@type",
1072
+ "id": "src/types/index.ts::ChangedRange"
1073
1073
  }
1074
1074
  }
1075
1075
  }
@@ -1089,8 +1089,8 @@ export class OverlaySelection {
1089
1089
  "references": {
1090
1090
  "ChangedRange": {
1091
1091
  "location": "import",
1092
- "path": "../../types/selection",
1093
- "id": "src/types/selection.ts::ChangedRange"
1092
+ "path": "@type",
1093
+ "id": "src/types/index.ts::ChangedRange"
1094
1094
  }
1095
1095
  }
1096
1096
  }
@@ -1110,8 +1110,8 @@ export class OverlaySelection {
1110
1110
  "references": {
1111
1111
  "BeforeRangeSaveDataDetails": {
1112
1112
  "location": "import",
1113
- "path": "../../types/selection",
1114
- "id": "src/types/selection.ts::BeforeRangeSaveDataDetails"
1113
+ "path": "@type",
1114
+ "id": "src/types/index.ts::BeforeRangeSaveDataDetails"
1115
1115
  }
1116
1116
  }
1117
1117
  }
@@ -1 +1 @@
1
- {"version":3,"file":"revogr-overlay-selection.js","sourceRoot":"","sources":["../../../src/components/overlay/revogr-overlay-selection.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Event,\n EventEmitter,\n h,\n Host,\n Listen,\n Prop,\n VNode,\n Element,\n Watch,\n} from '@stencil/core';\nimport ColumnService from '../data/column.service';\nimport { codesLetter } from '../../utils/key.codes';\nimport { MOBILE_CLASS, SELECTION_BORDER_CLASS } from '../../utils/consts';\nimport { DSourceState } from '../../store/dataSource/data.store';\nimport {\n getRange,\n isRangeSingleCell,\n} from '../../store/selection/selection.helpers';\nimport {\n EventData,\n getElStyle,\n getFocusCellBasedOnEvent,\n} from './selection.utils';\nimport { isEditInput } from '../editors/edit.utils';\nimport { KeyboardService } from './keyboard.service';\nimport { AutoFillService } from './autofill.service';\nimport { verifyTouchTarget } from '../../utils/events';\nimport {\n Observable,\n SelectionStoreState,\n DimensionSettingsState,\n DataType,\n DimensionRows,\n ColumnRegular,\n DimensionCols,\n Cell,\n DragStartEvent,\n} from '../../components';\nimport { MultiDimensionType } from '../../types/dimension';\nimport {\n FocusRenderEvent,\n ApplyFocusEvent,\n AllDimensionType,\n DataFormat,\n} from '../../types/interfaces';\nimport {\n Editors,\n BeforeSaveDataDetails,\n BeforeEdit,\n RangeArea,\n TempRange,\n ChangedRange,\n BeforeRangeSaveDataDetails,\n SaveDataDetails,\n} from '../../types/selection';\n\n/**\n * Component for overlaying the grid with the selection.\n */\n@Component({\n tag: 'revogr-overlay-selection',\n styleUrl: 'revogr-overlay-style.scss',\n})\nexport class OverlaySelection {\n // #region Properties\n /**\n * Readonly mode.\n */\n @Prop() readonly: boolean;\n /**\n * Range selection allowed.\n */\n @Prop() range: boolean;\n /**\n * Enable revogr-order-editor component (read more in revogr-order-editor component).\n * Allows D&D.\n */\n @Prop() canDrag: boolean;\n\n /**\n * Enable revogr-clipboard component (read more in revogr-clipboard component).\n * Allows copy/paste.\n */\n @Prop() useClipboard: boolean;\n\n /** Stores */\n /** Selection, range, focus. */\n @Prop() selectionStore: Observable<SelectionStoreState>;\n /** Dimension settings Y. */\n @Prop() dimensionRow: Observable<DimensionSettingsState>;\n /** Dimension settings X. */\n @Prop() dimensionCol: Observable<DimensionSettingsState>;\n\n // --------------------------------------------------------------------------\n //\n // Static stores, not expected to change during component lifetime\n //\n // --------------------------------------------------------------------------\n\n /**\n * Row data store.\n */\n @Prop() dataStore: Observable<DSourceState<DataType, DimensionRows>>;\n\n /**\n * Column data store.\n */\n @Prop() colData: Observable<DSourceState<ColumnRegular, DimensionCols>>;\n /**\n * Last real coordinates positions + 1.\n */\n @Prop() lastCell: Cell;\n /**\n * Custom editors register.\n */\n @Prop() editors: Editors;\n /**\n * If true applys changes when cell closes if not Escape.\n */\n @Prop() applyChangesOnClose = false;\n /**\n * Additional data to pass to renderer.\n */\n @Prop() additionalData: any;\n\n /**\n * Is mobile view mode.\n */\n @Prop() isMobileDevice: boolean;\n\n // #endregion\n\n // #region Events\n /**\n * Before clipboard copy happened. Validate data before copy.\n * To prevent the default behavior of editing data and use your own implementation, call `e.preventDefault()`.\n */\n @Event({ eventName: 'beforecopyregion', cancelable: true })\n beforeCopyRegion: EventEmitter;\n /**\n * Before region paste happened.\n */\n @Event({ eventName: 'beforepasteregion', cancelable: true })\n beforeRegionPaste: EventEmitter;\n\n /**\n * Cell edit apply to the data source.\n * Triggers datasource edit on the root level.\n */\n @Event({ eventName: 'celleditapply', cancelable: true })\n cellEditApply: EventEmitter<BeforeSaveDataDetails>;\n\n /**\n * Before cell focus.\n */\n @Event({ eventName: 'beforecellfocusinit', cancelable: true })\n beforeFocusCell: EventEmitter<BeforeSaveDataDetails>;\n\n /**\n * Set edit cell.\n */\n @Event({ eventName: 'setedit' }) setEdit: EventEmitter<BeforeEdit>;\n\n /**\n * Before range applied.\n */\n @Event({ eventName: 'beforeapplyrange' })\n beforeApplyRange: EventEmitter<FocusRenderEvent>;\n /**\n * Before range selection applied.\n */\n @Event({ eventName: 'beforesetrange' }) beforeSetRange: EventEmitter;\n\n /**\n * Before editor render.\n */\n @Event({ eventName: 'beforeeditrender' })\n beforeEditRender: EventEmitter<FocusRenderEvent>;\n\n /**\n * Set range.\n */\n @Event({ eventName: 'setrange' }) setRange: EventEmitter<\n RangeArea & { type: MultiDimensionType }\n >;\n\n /** Select all. */\n @Event({ eventName: 'selectall' }) selectAll: EventEmitter;\n /**\n * Used for editors support when editor close requested.\n */\n @Event({ eventName: 'canceledit' }) cancelEdit: EventEmitter;\n\n /**\n * Set temp range area during autofill.\n */\n @Event({ eventName: 'settemprange' })\n setTempRange: EventEmitter<TempRange | null>;\n\n /**\n * Before cell get focused.\n * To prevent the default behavior of applying the edit data, you can call `e.preventDefault()`.\n */\n @Event({ eventName: 'applyfocus' })\n applyFocus: EventEmitter<FocusRenderEvent>;\n\n /**\n * Cell get focused.\n * To prevent the default behavior of applying the edit data, you can call `e.preventDefault()`.\n */\n @Event({ eventName: 'focuscell' }) focusCell: EventEmitter<ApplyFocusEvent>;\n /** Range data apply. */\n @Event({ eventName: 'beforerangedataapply' })\n beforeRangeDataApply: EventEmitter<FocusRenderEvent>;\n /** Selection range changed. */\n @Event({ eventName: 'selectionchangeinit', cancelable: true })\n selectionChange: EventEmitter<ChangedRange>;\n /** Before range copy. */\n @Event({ eventName: 'beforerangecopyapply', cancelable: true, bubbles: true })\n beforeRangeCopyApply: EventEmitter<ChangedRange>;\n\n /** Range data apply.\n * Triggers datasource edit on the root level.\n */\n @Event({ eventName: 'rangeeditapply', cancelable: true })\n rangeEditApply: EventEmitter<BeforeRangeSaveDataDetails>;\n /** Range copy. */\n @Event({ eventName: 'clipboardrangecopy', cancelable: true })\n rangeClipboardCopy: EventEmitter;\n @Event({ eventName: 'clipboardrangepaste', cancelable: true })\n rangeClipboardPaste: EventEmitter;\n\n /**\n * Before key up event proxy, used to prevent key up trigger.\n * If you have some custom behaviour event, use this event to check if it wasn't processed by internal logic.\n * Call preventDefault().\n */\n @Event({ eventName: 'beforekeydown' })\n beforeKeyDown: EventEmitter<KeyboardEvent>;\n /**\n * Before key down event proxy, used to prevent key down trigger.\n * If you have some custom behaviour event, use this event to check if it wasn't processed by internal logic.\n * Call preventDefault().\n */\n @Event({ eventName: 'beforekeyup' }) beforeKeyUp: EventEmitter<KeyboardEvent>;\n /**\n * Runs before cell save.\n * Can be used to override or cancel original save.\n */\n @Event({ eventName: 'beforecellsave', cancelable: true })\n beforeCellSave: EventEmitter;\n\n // #endregion\n\n // #region Private Properties\n @Element() element: HTMLElement;\n private clipboard: HTMLRevogrClipboardElement;\n\n protected columnService: ColumnService;\n private keyboardService: KeyboardService | null = null;\n private autoFillService: AutoFillService | null = null;\n private orderEditor: HTMLRevogrOrderEditorElement;\n private revogrEdit: HTMLRevogrEditElement | null = null;\n // #endregion\n\n // #region Listeners\n @Listen('touchmove', { target: 'document' })\n @Listen('mousemove', { target: 'document' })\n onMouseMove(e: MouseEvent | TouchEvent) {\n if (this.selectionStore.get('focus')) {\n this.autoFillService.selectionMouseMove(e);\n }\n }\n\n /**\n * Action finished inside of the document.\n * Pointer left document, clear any active operation.\n */\n @Listen('touchend', { target: 'document' })\n @Listen('mouseup', { target: 'document' })\n @Listen('mouseleave', { target: 'document' })\n onMouseUp() {\n // Clear auto fill selection\n // when pointer left document,\n // clear any active operation.\n this.autoFillService.clearAutoFillSelection(\n this.selectionStore.get('focus'),\n this.selectionStore.get('range'),\n );\n }\n\n /**\n * Row drag started.\n * This event is fired when drag action started on cell.\n */\n @Listen('dragstartcell') onCellDrag(e: CustomEvent<DragStartEvent>) {\n // Invoke drag start on order editor.\n this.orderEditor?.dragStart(e.detail);\n }\n\n /**\n * Get keyboard down from element.\n * This event is fired when keyboard key is released.\n */\n @Listen('keyup', { target: 'document' }) onKeyUp(e: KeyboardEvent) {\n // Emit before key up event.\n this.beforeKeyUp.emit(e);\n }\n\n /**\n * Get keyboard down from element.\n * This event is fired when keyboard key is pressed.\n */\n @Listen('keydown', { target: 'document' }) onKeyDown(e: KeyboardEvent) {\n // Emit before key down event and check if default prevention is set.\n const proxy = this.beforeKeyDown.emit(e);\n if (e.defaultPrevented || proxy.defaultPrevented) {\n return;\n }\n // Invoke key down on keyboard service.\n this.keyboardService?.keyDown(\n e,\n this.range,\n !!this.selectionStore.get('edit'),\n {\n focus: this.selectionStore.get('focus'),\n range: this.selectionStore.get('range'),\n },\n );\n }\n // #endregion\n\n /** Selection & Keyboard */\n @Watch('selectionStore') selectionServiceSet(\n s: Observable<SelectionStoreState>,\n ) {\n this.keyboardService = new KeyboardService({\n selectionStore: s,\n range: r => this.triggerRangeEvent(r),\n focusNext: (f, next) => this.doFocus(f, f, next),\n change: val => {\n if (this.readonly) {\n return;\n }\n this.doEdit(val);\n },\n cancel: async () => {\n await this.revogrEdit.cancelChanges();\n this.closeEdit();\n },\n clearCell: () => !this.readonly && this.clearCell(),\n internalPaste: () => !this.readonly && this.beforeRegionPaste.emit(),\n getData: () => this.getData(),\n selectAll: () => this.selectAll.emit(),\n });\n this.createAutoFillService();\n }\n /** Autofill */\n @Watch('dimensionRow')\n @Watch('dimensionCol')\n createAutoFillService() {\n this.autoFillService = new AutoFillService({\n dimensionRow: this.dimensionRow,\n dimensionCol: this.dimensionCol,\n columnService: this.columnService,\n dataStore: this.dataStore,\n\n clearRangeDataApply: e =>\n this.beforeRangeDataApply.emit({\n ...e,\n ...this.types,\n }),\n setTempRange: e => this.setTempRange.emit(e),\n selectionChanged: e => this.selectionChange.emit(e),\n\n rangeCopy: e => this.beforeRangeCopyApply.emit(e),\n rangeDataApply: e => this.rangeEditApply.emit(e),\n\n setRange: e => this.triggerRangeEvent(e),\n getData: () => this.getData(),\n });\n }\n\n /** Columns */\n @Watch('dataStore')\n @Watch('colData')\n columnServiceSet() {\n this.columnService?.destroy();\n this.columnService = new ColumnService(this.dataStore, this.colData);\n this.createAutoFillService();\n }\n\n connectedCallback() {\n this.columnServiceSet();\n this.selectionServiceSet(this.selectionStore);\n }\n\n disconnectedCallback() {\n this.columnService?.destroy();\n }\n\n async componentWillRender() {\n const editCell = this.selectionStore.get('edit');\n if (!editCell) {\n await this.revogrEdit?.beforeDisconnect?.();\n }\n }\n\n private renderRange(range: RangeArea) {\n const style = getElStyle(\n range,\n this.dimensionRow.state,\n this.dimensionCol.state,\n );\n return [\n <div class={SELECTION_BORDER_CLASS} style={style}>\n {this.isMobileDevice && (\n <div class=\"range-handlers\">\n <span class={MOBILE_CLASS}></span>\n <span class={MOBILE_CLASS}></span>\n </div>\n )}\n </div>,\n ];\n }\n\n private renderEditor() {\n // Check if edit access\n const editCell = this.selectionStore.get('edit');\n // Readonly or Editor closed\n if (this.readonly || !editCell) {\n return null;\n }\n const val =\n editCell.val || this.columnService.getCellData(editCell.y, editCell.x);\n const editable = {\n ...editCell,\n ...this.columnService.getSaveData(editCell.y, editCell.x, val),\n };\n const renderEvent = this.beforeEditRender.emit({\n range: {\n ...editCell,\n x1: editCell.x,\n y1: editCell.y,\n },\n ...this.types,\n });\n\n // Render prevented\n if (renderEvent.defaultPrevented) {\n return null;\n }\n\n const style = getElStyle(\n renderEvent.detail.range,\n this.dimensionRow.state,\n this.dimensionCol.state,\n );\n return (\n <revogr-edit\n style={style}\n ref={el => (this.revogrEdit = el)}\n additionalData={this.additionalData}\n editCell={editable}\n saveOnClose={this.applyChangesOnClose}\n column={this.columnService.rowDataModel(editCell.y, editCell.x)}\n editor={this.columnService.getCellEditor(\n editCell.y,\n editCell.x,\n this.editors,\n )}\n onCloseedit={e => this.closeEdit(e)}\n onCelledit={e => {\n const saveEv = this.beforeCellSave.emit(e.detail);\n if (!saveEv.defaultPrevented) {\n this.cellEdit(saveEv.detail);\n }\n\n // if not clear navigate to next cell after edit\n if (!saveEv.detail.preventFocus) {\n this.focusNext();\n }\n }}\n />\n );\n }\n\n render() {\n const nodes: VNode[] = [];\n const editCell = this.renderEditor();\n\n // Editor\n if (editCell) {\n nodes.push(editCell);\n } else {\n const range = this.selectionStore.get('range');\n const focus = this.selectionStore.get('focus');\n\n // Clipboard\n if ((range || focus) && this.useClipboard) {\n nodes.push(\n <revogr-clipboard\n readonly={this.readonly}\n onCopyregion={e => this.onCopy(e.detail)}\n onClearregion={() => !this.readonly && this.clearCell()}\n ref={e => (this.clipboard = e)}\n onPasteregion={e => this.onPaste(e.detail)}\n />,\n );\n }\n\n // Range\n if (range) {\n nodes.push(...this.renderRange(range));\n }\n // Autofill\n if (focus && !this.readonly && this.range) {\n nodes.push(this.autoFillService.renderAutofill(range, focus));\n }\n\n // Order\n if (this.canDrag) {\n nodes.push(\n <revogr-order-editor\n ref={e => (this.orderEditor = e)}\n dataStore={this.dataStore}\n dimensionRow={this.dimensionRow}\n dimensionCol={this.dimensionCol}\n parent={this.element}\n onRowdragstartinit={e => this.rowDragStart(e)}\n />,\n );\n }\n }\n return (\n <Host\n class={{ mobile: this.isMobileDevice }}\n onDblClick={(e: MouseEvent) => this.onElementDblClick(e)}\n onMouseDown={(e: MouseEvent) => this.onElementMouseDown(e)}\n onTouchStart={(e: TouchEvent) => this.onElementMouseDown(e, true)}\n >\n {nodes}\n <slot name=\"data\" />\n </Host>\n );\n }\n\n /**\n * Executes the focus operation on the specified range of cells.\n */\n private doFocus(focus: Cell, end: Cell, next?: Partial<Cell>) {\n const { defaultPrevented } = this.beforeFocusCell.emit(\n this.columnService.getSaveData(focus.y, focus.x),\n );\n if (defaultPrevented) {\n return false;\n }\n const evData = {\n range: {\n ...focus,\n x1: end.x,\n y1: end.y,\n },\n next,\n ...this.types,\n };\n const applyEvent = this.applyFocus.emit(evData);\n if (applyEvent.defaultPrevented) {\n return false;\n }\n const { range } = applyEvent.detail;\n return !this.focusCell.emit({\n focus: {\n x: range.x,\n y: range.y,\n },\n end: {\n x: range.x1,\n y: range.y1,\n },\n ...applyEvent.detail,\n }).defaultPrevented;\n }\n\n private triggerRangeEvent(range: RangeArea) {\n const type = this.types.rowType;\n const applyEvent = this.beforeApplyRange.emit({\n range: { ...range },\n ...this.types,\n });\n if (applyEvent.defaultPrevented) {\n return false;\n }\n const data = this.columnService.getRangeTransformedToProps(\n applyEvent.detail.range,\n this.dataStore,\n );\n let e = this.beforeSetRange.emit(data);\n e = this.setRange.emit({ ...applyEvent.detail.range, type });\n if (e.defaultPrevented) {\n return false;\n }\n return !e.defaultPrevented;\n }\n\n /**\n * Open Editor on DblClick\n */\n private onElementDblClick(e: MouseEvent) {\n // DblClick prevented outside - Editor will not open\n \n // Get data from the component\n const data = this.getData();\n const focusCell = getFocusCellBasedOnEvent(e, data);\n if (!focusCell) {\n return;\n }\n this.doEdit();\n }\n\n /**\n * Handle mouse down event on Host element\n */\n private onElementMouseDown(e: MouseEvent | TouchEvent, touch = false) {\n // Get the target element from the event object\n const targetElement = e.target as HTMLElement | undefined;\n // Ignore focus if clicked input\n if (isEditInput(targetElement)) {\n return;\n }\n\n // Get data from the component\n const data = this.getData();\n const focusCell = getFocusCellBasedOnEvent(e, data);\n if (!focusCell) {\n return;\n }\n\n // Set focus on the current cell\n this.focus(focusCell, this.range && e.shiftKey);\n\n // Initiate autofill selection\n if (this.range) {\n this.autoFillService.selectionStart(targetElement, this.getData());\n\n // Prevent default behavior for mouse events,\n // but only if target element is not a mobile input\n if (!touch) {\n e.preventDefault();\n } else if (\n verifyTouchTarget((e as TouchEvent).touches[0], MOBILE_CLASS)\n ) {\n // Prevent default behavior for touch events\n // if target element is a mobile input\n e.preventDefault();\n }\n }\n }\n\n /**\n * Start cell editing\n */\n protected doEdit(val = '') {\n if (this.canEdit()) {\n const focus = this.selectionStore.get('focus');\n\n const data = this.columnService.getSaveData(focus.y, focus.x);\n this.setEdit?.emit({\n ...data,\n val,\n });\n }\n }\n\n /**\n * Close editor event triggered\n * @param details - if requires focus next\n */\n private closeEdit(e?: CustomEvent<boolean>) {\n this.cancelEdit.emit();\n if (e?.detail) {\n this.focusNext();\n }\n }\n\n /**\n * Edit finished.\n * Close Editor and save.\n */\n protected cellEdit(e: SaveDataDetails) {\n const dataToSave = this.columnService.getSaveData(e.rgRow, e.rgCol, e.val);\n this.cellEditApply.emit(dataToSave);\n }\n\n private getRegion() {\n const focus = this.selectionStore.get('focus');\n let range = this.selectionStore.get('range');\n if (!range) {\n range = getRange(focus, focus);\n }\n return range;\n }\n private onCopy(e: DataTransfer) {\n const range = this.getRegion();\n const canCopyEvent = this.beforeCopyRegion.emit(range);\n if (canCopyEvent.defaultPrevented) {\n return false;\n }\n let rangeData: DataFormat[][] | undefined;\n\n if (range) {\n const { data, mapping } = this.columnService.copyRangeArray(\n range,\n this.dataStore,\n );\n const event = this.rangeClipboardCopy.emit({\n range,\n data,\n mapping,\n ...this.types,\n });\n if (!event.defaultPrevented) {\n rangeData = event.detail.data;\n }\n }\n\n this.clipboard.doCopy(e, rangeData);\n return true;\n }\n\n private onPaste(data: string[][]) {\n const focus = this.selectionStore.get('focus');\n const isEditing = this.selectionStore.get('edit') !== null;\n if (!focus || isEditing) {\n return;\n }\n let { changed, range } = this.columnService.getTransformedDataToApply(\n focus,\n data,\n );\n const { defaultPrevented: canPaste } = this.rangeClipboardPaste.emit({\n data: changed,\n range,\n ...this.types,\n });\n if (canPaste) {\n return;\n }\n this.autoFillService.onRangeApply(changed, range);\n }\n\n private async focusNext() {\n const canFocus = await this.keyboardService.keyChangeSelection(\n new KeyboardEvent('keydown', {\n code: codesLetter.ARROW_DOWN,\n }),\n this.range,\n );\n if (!canFocus) {\n this.closeEdit();\n }\n }\n\n protected clearCell() {\n if (\n this.selectionStore.get('range') &&\n !isRangeSingleCell(this.selectionStore.get('range'))\n ) {\n const data = this.columnService.getRangeStaticData(\n this.selectionStore.get('range'),\n '',\n );\n this.autoFillService.onRangeApply(data, this.selectionStore.get('range'));\n } else if (this.canEdit()) {\n const focused = this.selectionStore.get('focus');\n const cell = this.columnService.getSaveData(focused.y, focused.x);\n this.cellEdit({\n rgRow: focused.y,\n rgCol: focused.x,\n val: '',\n type: cell.type,\n prop: cell.prop,\n });\n }\n }\n\n private rowDragStart({ detail }: CustomEvent<{ cell: Cell; text: string }>) {\n detail.text = this.columnService.getCellData(detail.cell.y, detail.cell.x);\n }\n\n /**\n * Verify if edit allowed.\n */\n protected canEdit() {\n if (this.readonly) {\n return false;\n }\n const focus = this.selectionStore.get('focus');\n return focus && !this.columnService?.isReadOnly(focus.y, focus.x);\n }\n\n get edited() {\n return this.selectionStore.get('edit');\n }\n\n /**\n * Sets the focus on a cell and optionally edits a range.\n */\n focus(cell?: Cell, isRangeEdit = false) {\n if (!cell) return false;\n\n const end = cell;\n const start = this.selectionStore.get('focus');\n\n if (isRangeEdit && start) {\n return this.triggerRangeEvent(getRange(start, end));\n }\n\n return this.doFocus(cell, end);\n }\n\n get types(): AllDimensionType {\n return {\n rowType: this.dataStore.get('type'),\n colType: this.columnService.type,\n };\n }\n\n /**\n * Collect data\n */\n protected getData(): EventData {\n return {\n el: this.element,\n rows: this.dimensionRow.state,\n cols: this.dimensionCol.state,\n lastCell: this.lastCell,\n focus: this.selectionStore.get('focus'),\n range: this.selectionStore.get('range'),\n };\n }\n}\n"]}
1
+ {"version":3,"file":"revogr-overlay-selection.js","sourceRoot":"","sources":["../../../src/components/overlay/revogr-overlay-selection.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Event,\n EventEmitter,\n h,\n Host,\n Listen,\n Prop,\n VNode,\n Element,\n Watch,\n} from '@stencil/core';\nimport ColumnService from '../data/column.service';\nimport { codesLetter } from '../../utils/key.codes';\nimport { MOBILE_CLASS, SELECTION_BORDER_CLASS } from '../../utils/consts';\nimport { DSourceState } from '@store';\nimport {\n getRange,\n isRangeSingleCell,\n} from '@store';\nimport {\n EventData,\n getElStyle,\n getFocusCellBasedOnEvent,\n} from './selection.utils';\nimport { isEditInput } from '../editors/edit.utils';\nimport { KeyboardService } from './keyboard.service';\nimport { AutoFillService } from './autofill.service';\nimport { verifyTouchTarget } from '../../utils/events';\nimport {\n Observable,\n SelectionStoreState,\n DimensionSettingsState,\n DataType,\n DimensionRows,\n ColumnRegular,\n DimensionCols,\n Cell,\n DragStartEvent,\n} from '../../components';\nimport { MultiDimensionType } from '@type';\nimport {\n FocusRenderEvent,\n ApplyFocusEvent,\n AllDimensionType,\n DataFormat,\n} from '@type';\nimport {\n Editors,\n BeforeSaveDataDetails,\n BeforeEdit,\n RangeArea,\n TempRange,\n ChangedRange,\n BeforeRangeSaveDataDetails,\n SaveDataDetails,\n} from '@type';\n\n/**\n * Component for overlaying the grid with the selection.\n */\n@Component({\n tag: 'revogr-overlay-selection',\n styleUrl: 'revogr-overlay-style.scss',\n})\nexport class OverlaySelection {\n // #region Properties\n /**\n * Readonly mode.\n */\n @Prop() readonly: boolean;\n /**\n * Range selection allowed.\n */\n @Prop() range: boolean;\n /**\n * Enable revogr-order-editor component (read more in revogr-order-editor component).\n * Allows D&D.\n */\n @Prop() canDrag: boolean;\n\n /**\n * Enable revogr-clipboard component (read more in revogr-clipboard component).\n * Allows copy/paste.\n */\n @Prop() useClipboard: boolean;\n\n /** Stores */\n /** Selection, range, focus. */\n @Prop() selectionStore: Observable<SelectionStoreState>;\n /** Dimension settings Y. */\n @Prop() dimensionRow: Observable<DimensionSettingsState>;\n /** Dimension settings X. */\n @Prop() dimensionCol: Observable<DimensionSettingsState>;\n\n // --------------------------------------------------------------------------\n //\n // Static stores, not expected to change during component lifetime\n //\n // --------------------------------------------------------------------------\n\n /**\n * Row data store.\n */\n @Prop() dataStore: Observable<DSourceState<DataType, DimensionRows>>;\n\n /**\n * Column data store.\n */\n @Prop() colData: Observable<DSourceState<ColumnRegular, DimensionCols>>;\n /**\n * Last real coordinates positions + 1.\n */\n @Prop() lastCell: Cell;\n /**\n * Custom editors register.\n */\n @Prop() editors: Editors;\n /**\n * If true applys changes when cell closes if not Escape.\n */\n @Prop() applyChangesOnClose = false;\n /**\n * Additional data to pass to renderer.\n */\n @Prop() additionalData: any;\n\n /**\n * Is mobile view mode.\n */\n @Prop() isMobileDevice: boolean;\n\n // #endregion\n\n // #region Events\n /**\n * Before clipboard copy happened. Validate data before copy.\n * To prevent the default behavior of editing data and use your own implementation, call `e.preventDefault()`.\n */\n @Event({ eventName: 'beforecopyregion', cancelable: true })\n beforeCopyRegion: EventEmitter;\n /**\n * Before region paste happened.\n */\n @Event({ eventName: 'beforepasteregion', cancelable: true })\n beforeRegionPaste: EventEmitter;\n\n /**\n * Cell edit apply to the data source.\n * Triggers datasource edit on the root level.\n */\n @Event({ eventName: 'celleditapply', cancelable: true })\n cellEditApply: EventEmitter<BeforeSaveDataDetails>;\n\n /**\n * Before cell focus.\n */\n @Event({ eventName: 'beforecellfocusinit', cancelable: true })\n beforeFocusCell: EventEmitter<BeforeSaveDataDetails>;\n\n /**\n * Set edit cell.\n */\n @Event({ eventName: 'setedit' }) setEdit: EventEmitter<BeforeEdit>;\n\n /**\n * Before range applied.\n */\n @Event({ eventName: 'beforeapplyrange' })\n beforeApplyRange: EventEmitter<FocusRenderEvent>;\n /**\n * Before range selection applied.\n */\n @Event({ eventName: 'beforesetrange' }) beforeSetRange: EventEmitter;\n\n /**\n * Before editor render.\n */\n @Event({ eventName: 'beforeeditrender' })\n beforeEditRender: EventEmitter<FocusRenderEvent>;\n\n /**\n * Set range.\n */\n @Event({ eventName: 'setrange' }) setRange: EventEmitter<\n RangeArea & { type: MultiDimensionType }\n >;\n\n /** Select all. */\n @Event({ eventName: 'selectall' }) selectAll: EventEmitter;\n /**\n * Used for editors support when editor close requested.\n */\n @Event({ eventName: 'canceledit' }) cancelEdit: EventEmitter;\n\n /**\n * Set temp range area during autofill.\n */\n @Event({ eventName: 'settemprange' })\n setTempRange: EventEmitter<TempRange | null>;\n\n /**\n * Before cell get focused.\n * To prevent the default behavior of applying the edit data, you can call `e.preventDefault()`.\n */\n @Event({ eventName: 'applyfocus' })\n applyFocus: EventEmitter<FocusRenderEvent>;\n\n /**\n * Cell get focused.\n * To prevent the default behavior of applying the edit data, you can call `e.preventDefault()`.\n */\n @Event({ eventName: 'focuscell' }) focusCell: EventEmitter<ApplyFocusEvent>;\n /** Range data apply. */\n @Event({ eventName: 'beforerangedataapply' })\n beforeRangeDataApply: EventEmitter<FocusRenderEvent>;\n /** Selection range changed. */\n @Event({ eventName: 'selectionchangeinit', cancelable: true })\n selectionChange: EventEmitter<ChangedRange>;\n /** Before range copy. */\n @Event({ eventName: 'beforerangecopyapply', cancelable: true, bubbles: true })\n beforeRangeCopyApply: EventEmitter<ChangedRange>;\n\n /** Range data apply.\n * Triggers datasource edit on the root level.\n */\n @Event({ eventName: 'rangeeditapply', cancelable: true })\n rangeEditApply: EventEmitter<BeforeRangeSaveDataDetails>;\n /** Range copy. */\n @Event({ eventName: 'clipboardrangecopy', cancelable: true })\n rangeClipboardCopy: EventEmitter;\n @Event({ eventName: 'clipboardrangepaste', cancelable: true })\n rangeClipboardPaste: EventEmitter;\n\n /**\n * Before key up event proxy, used to prevent key up trigger.\n * If you have some custom behaviour event, use this event to check if it wasn't processed by internal logic.\n * Call preventDefault().\n */\n @Event({ eventName: 'beforekeydown' })\n beforeKeyDown: EventEmitter<KeyboardEvent>;\n /**\n * Before key down event proxy, used to prevent key down trigger.\n * If you have some custom behaviour event, use this event to check if it wasn't processed by internal logic.\n * Call preventDefault().\n */\n @Event({ eventName: 'beforekeyup' }) beforeKeyUp: EventEmitter<KeyboardEvent>;\n /**\n * Runs before cell save.\n * Can be used to override or cancel original save.\n */\n @Event({ eventName: 'beforecellsave', cancelable: true })\n beforeCellSave: EventEmitter;\n\n // #endregion\n\n // #region Private Properties\n @Element() element: HTMLElement;\n private clipboard: HTMLRevogrClipboardElement;\n\n protected columnService: ColumnService;\n private keyboardService: KeyboardService | null = null;\n private autoFillService: AutoFillService | null = null;\n private orderEditor: HTMLRevogrOrderEditorElement;\n private revogrEdit: HTMLRevogrEditElement | null = null;\n // #endregion\n\n // #region Listeners\n @Listen('touchmove', { target: 'document' })\n @Listen('mousemove', { target: 'document' })\n onMouseMove(e: MouseEvent | TouchEvent) {\n if (this.selectionStore.get('focus')) {\n this.autoFillService.selectionMouseMove(e);\n }\n }\n\n /**\n * Action finished inside of the document.\n * Pointer left document, clear any active operation.\n */\n @Listen('touchend', { target: 'document' })\n @Listen('mouseup', { target: 'document' })\n @Listen('mouseleave', { target: 'document' })\n onMouseUp() {\n // Clear auto fill selection\n // when pointer left document,\n // clear any active operation.\n this.autoFillService.clearAutoFillSelection(\n this.selectionStore.get('focus'),\n this.selectionStore.get('range'),\n );\n }\n\n /**\n * Row drag started.\n * This event is fired when drag action started on cell.\n */\n @Listen('dragstartcell') onCellDrag(e: CustomEvent<DragStartEvent>) {\n // Invoke drag start on order editor.\n this.orderEditor?.dragStart(e.detail);\n }\n\n /**\n * Get keyboard down from element.\n * This event is fired when keyboard key is released.\n */\n @Listen('keyup', { target: 'document' }) onKeyUp(e: KeyboardEvent) {\n // Emit before key up event.\n this.beforeKeyUp.emit(e);\n }\n\n /**\n * Get keyboard down from element.\n * This event is fired when keyboard key is pressed.\n */\n @Listen('keydown', { target: 'document' }) onKeyDown(e: KeyboardEvent) {\n // Emit before key down event and check if default prevention is set.\n const proxy = this.beforeKeyDown.emit(e);\n if (e.defaultPrevented || proxy.defaultPrevented) {\n return;\n }\n // Invoke key down on keyboard service.\n this.keyboardService?.keyDown(\n e,\n this.range,\n !!this.selectionStore.get('edit'),\n {\n focus: this.selectionStore.get('focus'),\n range: this.selectionStore.get('range'),\n },\n );\n }\n // #endregion\n\n /** Selection & Keyboard */\n @Watch('selectionStore') selectionServiceSet(\n s: Observable<SelectionStoreState>,\n ) {\n this.keyboardService = new KeyboardService({\n selectionStore: s,\n range: r => this.triggerRangeEvent(r),\n focusNext: (f, next) => this.doFocus(f, f, next),\n change: val => {\n if (this.readonly) {\n return;\n }\n this.doEdit(val);\n },\n cancel: async () => {\n await this.revogrEdit.cancelChanges();\n this.closeEdit();\n },\n clearCell: () => !this.readonly && this.clearCell(),\n internalPaste: () => !this.readonly && this.beforeRegionPaste.emit(),\n getData: () => this.getData(),\n selectAll: () => this.selectAll.emit(),\n });\n this.createAutoFillService();\n }\n /** Autofill */\n @Watch('dimensionRow')\n @Watch('dimensionCol')\n createAutoFillService() {\n this.autoFillService = new AutoFillService({\n dimensionRow: this.dimensionRow,\n dimensionCol: this.dimensionCol,\n columnService: this.columnService,\n dataStore: this.dataStore,\n\n clearRangeDataApply: e =>\n this.beforeRangeDataApply.emit({\n ...e,\n ...this.types,\n }),\n setTempRange: e => this.setTempRange.emit(e),\n selectionChanged: e => this.selectionChange.emit(e),\n\n rangeCopy: e => this.beforeRangeCopyApply.emit(e),\n rangeDataApply: e => this.rangeEditApply.emit(e),\n\n setRange: e => this.triggerRangeEvent(e),\n getData: () => this.getData(),\n });\n }\n\n /** Columns */\n @Watch('dataStore')\n @Watch('colData')\n columnServiceSet() {\n this.columnService?.destroy();\n this.columnService = new ColumnService(this.dataStore, this.colData);\n this.createAutoFillService();\n }\n\n connectedCallback() {\n this.columnServiceSet();\n this.selectionServiceSet(this.selectionStore);\n }\n\n disconnectedCallback() {\n this.columnService?.destroy();\n }\n\n async componentWillRender() {\n const editCell = this.selectionStore.get('edit');\n if (!editCell) {\n await this.revogrEdit?.beforeDisconnect?.();\n }\n }\n\n private renderRange(range: RangeArea) {\n const style = getElStyle(\n range,\n this.dimensionRow.state,\n this.dimensionCol.state,\n );\n return [\n <div class={SELECTION_BORDER_CLASS} style={style}>\n {this.isMobileDevice && (\n <div class=\"range-handlers\">\n <span class={MOBILE_CLASS}></span>\n <span class={MOBILE_CLASS}></span>\n </div>\n )}\n </div>,\n ];\n }\n\n private renderEditor() {\n // Check if edit access\n const editCell = this.selectionStore.get('edit');\n // Readonly or Editor closed\n if (this.readonly || !editCell) {\n return null;\n }\n const val =\n editCell.val || this.columnService.getCellData(editCell.y, editCell.x);\n const editable = {\n ...editCell,\n ...this.columnService.getSaveData(editCell.y, editCell.x, val),\n };\n const renderEvent = this.beforeEditRender.emit({\n range: {\n ...editCell,\n x1: editCell.x,\n y1: editCell.y,\n },\n ...this.types,\n });\n\n // Render prevented\n if (renderEvent.defaultPrevented) {\n return null;\n }\n\n const style = getElStyle(\n renderEvent.detail.range,\n this.dimensionRow.state,\n this.dimensionCol.state,\n );\n return (\n <revogr-edit\n style={style}\n ref={el => (this.revogrEdit = el)}\n additionalData={this.additionalData}\n editCell={editable}\n saveOnClose={this.applyChangesOnClose}\n column={this.columnService.rowDataModel(editCell.y, editCell.x)}\n editor={this.columnService.getCellEditor(\n editCell.y,\n editCell.x,\n this.editors,\n )}\n onCloseedit={e => this.closeEdit(e)}\n onCelledit={e => {\n const saveEv = this.beforeCellSave.emit(e.detail);\n if (!saveEv.defaultPrevented) {\n this.cellEdit(saveEv.detail);\n }\n\n // if not clear navigate to next cell after edit\n if (!saveEv.detail.preventFocus) {\n this.focusNext();\n }\n }}\n />\n );\n }\n\n render() {\n const nodes: VNode[] = [];\n const editCell = this.renderEditor();\n\n // Editor\n if (editCell) {\n nodes.push(editCell);\n } else {\n const range = this.selectionStore.get('range');\n const focus = this.selectionStore.get('focus');\n\n // Clipboard\n if ((range || focus) && this.useClipboard) {\n nodes.push(\n <revogr-clipboard\n readonly={this.readonly}\n onCopyregion={e => this.onCopy(e.detail)}\n onClearregion={() => !this.readonly && this.clearCell()}\n ref={e => (this.clipboard = e)}\n onPasteregion={e => this.onPaste(e.detail)}\n />,\n );\n }\n\n // Range\n if (range) {\n nodes.push(...this.renderRange(range));\n }\n // Autofill\n if (focus && !this.readonly && this.range) {\n nodes.push(this.autoFillService.renderAutofill(range, focus));\n }\n\n // Order\n if (this.canDrag) {\n nodes.push(\n <revogr-order-editor\n ref={e => (this.orderEditor = e)}\n dataStore={this.dataStore}\n dimensionRow={this.dimensionRow}\n dimensionCol={this.dimensionCol}\n parent={this.element}\n onRowdragstartinit={e => this.rowDragStart(e)}\n />,\n );\n }\n }\n return (\n <Host\n class={{ mobile: this.isMobileDevice }}\n onDblClick={(e: MouseEvent) => this.onElementDblClick(e)}\n onMouseDown={(e: MouseEvent) => this.onElementMouseDown(e)}\n onTouchStart={(e: TouchEvent) => this.onElementMouseDown(e, true)}\n >\n {nodes}\n <slot name=\"data\" />\n </Host>\n );\n }\n\n /**\n * Executes the focus operation on the specified range of cells.\n */\n private doFocus(focus: Cell, end: Cell, next?: Partial<Cell>) {\n const { defaultPrevented } = this.beforeFocusCell.emit(\n this.columnService.getSaveData(focus.y, focus.x),\n );\n if (defaultPrevented) {\n return false;\n }\n const evData = {\n range: {\n ...focus,\n x1: end.x,\n y1: end.y,\n },\n next,\n ...this.types,\n };\n const applyEvent = this.applyFocus.emit(evData);\n if (applyEvent.defaultPrevented) {\n return false;\n }\n const { range } = applyEvent.detail;\n return !this.focusCell.emit({\n focus: {\n x: range.x,\n y: range.y,\n },\n end: {\n x: range.x1,\n y: range.y1,\n },\n ...applyEvent.detail,\n }).defaultPrevented;\n }\n\n private triggerRangeEvent(range: RangeArea) {\n const type = this.types.rowType;\n const applyEvent = this.beforeApplyRange.emit({\n range: { ...range },\n ...this.types,\n });\n if (applyEvent.defaultPrevented) {\n return false;\n }\n const data = this.columnService.getRangeTransformedToProps(\n applyEvent.detail.range,\n this.dataStore,\n );\n let e = this.beforeSetRange.emit(data);\n e = this.setRange.emit({ ...applyEvent.detail.range, type });\n if (e.defaultPrevented) {\n return false;\n }\n return !e.defaultPrevented;\n }\n\n /**\n * Open Editor on DblClick\n */\n private onElementDblClick(e: MouseEvent) {\n // DblClick prevented outside - Editor will not open\n \n // Get data from the component\n const data = this.getData();\n const focusCell = getFocusCellBasedOnEvent(e, data);\n if (!focusCell) {\n return;\n }\n this.doEdit();\n }\n\n /**\n * Handle mouse down event on Host element\n */\n private onElementMouseDown(e: MouseEvent | TouchEvent, touch = false) {\n // Get the target element from the event object\n const targetElement = e.target as HTMLElement | undefined;\n // Ignore focus if clicked input\n if (isEditInput(targetElement)) {\n return;\n }\n\n // Get data from the component\n const data = this.getData();\n const focusCell = getFocusCellBasedOnEvent(e, data);\n if (!focusCell) {\n return;\n }\n\n // Set focus on the current cell\n this.focus(focusCell, this.range && e.shiftKey);\n\n // Initiate autofill selection\n if (this.range) {\n this.autoFillService.selectionStart(targetElement, this.getData());\n\n // Prevent default behavior for mouse events,\n // but only if target element is not a mobile input\n if (!touch) {\n e.preventDefault();\n } else if (\n verifyTouchTarget((e as TouchEvent).touches[0], MOBILE_CLASS)\n ) {\n // Prevent default behavior for touch events\n // if target element is a mobile input\n e.preventDefault();\n }\n }\n }\n\n /**\n * Start cell editing\n */\n protected doEdit(val = '') {\n if (this.canEdit()) {\n const focus = this.selectionStore.get('focus');\n\n const data = this.columnService.getSaveData(focus.y, focus.x);\n this.setEdit?.emit({\n ...data,\n val,\n });\n }\n }\n\n /**\n * Close editor event triggered\n * @param details - if requires focus next\n */\n private closeEdit(e?: CustomEvent<boolean>) {\n this.cancelEdit.emit();\n if (e?.detail) {\n this.focusNext();\n }\n }\n\n /**\n * Edit finished.\n * Close Editor and save.\n */\n protected cellEdit(e: SaveDataDetails) {\n const dataToSave = this.columnService.getSaveData(e.rgRow, e.rgCol, e.val);\n this.cellEditApply.emit(dataToSave);\n }\n\n private getRegion() {\n const focus = this.selectionStore.get('focus');\n let range = this.selectionStore.get('range');\n if (!range) {\n range = getRange(focus, focus);\n }\n return range;\n }\n private onCopy(e: DataTransfer) {\n const range = this.getRegion();\n const canCopyEvent = this.beforeCopyRegion.emit(range);\n if (canCopyEvent.defaultPrevented) {\n return false;\n }\n let rangeData: DataFormat[][] | undefined;\n\n if (range) {\n const { data, mapping } = this.columnService.copyRangeArray(\n range,\n this.dataStore,\n );\n const event = this.rangeClipboardCopy.emit({\n range,\n data,\n mapping,\n ...this.types,\n });\n if (!event.defaultPrevented) {\n rangeData = event.detail.data;\n }\n }\n\n this.clipboard.doCopy(e, rangeData);\n return true;\n }\n\n private onPaste(data: string[][]) {\n const focus = this.selectionStore.get('focus');\n const isEditing = this.selectionStore.get('edit') !== null;\n if (!focus || isEditing) {\n return;\n }\n let { changed, range } = this.columnService.getTransformedDataToApply(\n focus,\n data,\n );\n const { defaultPrevented: canPaste } = this.rangeClipboardPaste.emit({\n data: changed,\n range,\n ...this.types,\n });\n if (canPaste) {\n return;\n }\n this.autoFillService.onRangeApply(changed, range);\n }\n\n private async focusNext() {\n const canFocus = await this.keyboardService.keyChangeSelection(\n new KeyboardEvent('keydown', {\n code: codesLetter.ARROW_DOWN,\n }),\n this.range,\n );\n if (!canFocus) {\n this.closeEdit();\n }\n }\n\n protected clearCell() {\n if (\n this.selectionStore.get('range') &&\n !isRangeSingleCell(this.selectionStore.get('range'))\n ) {\n const data = this.columnService.getRangeStaticData(\n this.selectionStore.get('range'),\n '',\n );\n this.autoFillService.onRangeApply(data, this.selectionStore.get('range'));\n } else if (this.canEdit()) {\n const focused = this.selectionStore.get('focus');\n const cell = this.columnService.getSaveData(focused.y, focused.x);\n this.cellEdit({\n rgRow: focused.y,\n rgCol: focused.x,\n val: '',\n type: cell.type,\n prop: cell.prop,\n });\n }\n }\n\n private rowDragStart({ detail }: CustomEvent<{ cell: Cell; text: string }>) {\n detail.text = this.columnService.getCellData(detail.cell.y, detail.cell.x);\n }\n\n /**\n * Verify if edit allowed.\n */\n protected canEdit() {\n if (this.readonly) {\n return false;\n }\n const focus = this.selectionStore.get('focus');\n return focus && !this.columnService?.isReadOnly(focus.y, focus.x);\n }\n\n get edited() {\n return this.selectionStore.get('edit');\n }\n\n /**\n * Sets the focus on a cell and optionally edits a range.\n */\n focus(cell?: Cell, isRangeEdit = false) {\n if (!cell) return false;\n\n const end = cell;\n const start = this.selectionStore.get('focus');\n\n if (isRangeEdit && start) {\n return this.triggerRangeEvent(getRange(start, end));\n }\n\n return this.doFocus(cell, end);\n }\n\n get types(): AllDimensionType {\n return {\n rowType: this.dataStore.get('type'),\n colType: this.columnService.type,\n };\n }\n\n /**\n * Collect data\n */\n protected getData(): EventData {\n return {\n el: this.element,\n rows: this.dimensionRow.state,\n cols: this.dimensionCol.state,\n lastCell: this.lastCell,\n focus: this.selectionStore.get('focus'),\n range: this.selectionStore.get('range'),\n };\n }\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * Built by Revolist OU ❤️
3
3
  */
4
- import { getItemByIndex, getItemByPosition, } from "../../store/dimension/dimension.helpers";
4
+ import { getItemByIndex, getItemByPosition, } from "../../store/index";
5
5
  import { getPropertyFromEvent } from "../../utils/events";
6
6
  export function getFocusCellBasedOnEvent(e, data) {
7
7
  // If event default is prevented, return
@@ -1 +1 @@
1
- {"version":3,"file":"selection.utils.js","sourceRoot":"","sources":["../../../src/components/overlay/selection.utils.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n getItemByIndex,\n getItemByPosition,\n} from '../../store/dimension/dimension.helpers';\nimport { DimensionSettingsState } from '../..';\nimport { Cell, RangeArea, RangeAreaCss } from '../..';\nimport { getPropertyFromEvent } from '../../utils/events';\n\nexport type EventData = {\n el: HTMLElement;\n rows: DimensionSettingsState;\n cols: DimensionSettingsState;\n lastCell: Cell;\n focus: Cell;\n range: RangeArea;\n};\n\nexport function getFocusCellBasedOnEvent(\n e: MouseEvent | TouchEvent,\n data: EventData,\n): Cell | null {\n // If event default is prevented, return\n if (e.defaultPrevented) {\n return null;\n }\n\n // Get coordinates from event object\n const x = getPropertyFromEvent(e, 'clientX');\n const y = getPropertyFromEvent(e, 'clientY');\n\n // If coordinates are not available, return\n if (x === null || y === null) {\n return null;\n }\n\n // Get current cell based on coordinates and data\n const focusCell = getCurrentCell({ x, y }, data);\n // If current cell is not available, return\n if (isAfterLast(focusCell, data.lastCell)) {\n return null;\n }\n\n return focusCell;\n}\n\n/**\n * Calculate cell based on x, y position\n */\nexport function getCurrentCell(\n { x, y }: Cell,\n { el, rows, cols }: Pick<EventData, 'el' | 'rows' | 'cols'>,\n): Cell {\n // Get the bounding rectangle of the element\n const { top, left, height, width } = el.getBoundingClientRect();\n\n // Calculate the cell position relative to the element\n let cellY = y - top;\n let cellX = x - left;\n\n // Limit the cell position to the element height\n if (cellY >= height) {\n cellY = height - 1;\n }\n\n // Limit the cell position to the element width\n if (cellX >= width) {\n cellX = width - 1;\n }\n\n // Get the row and column items based on the cell position\n const rgRow = getItemByPosition(rows, cellY);\n const rgCol = getItemByPosition(cols, cellX);\n\n // Set the row and column index to 0 if they are before the first item\n if (rgCol.itemIndex < 0) {\n rgCol.itemIndex = 0;\n }\n\n if (rgRow.itemIndex < 0) {\n rgRow.itemIndex = 0;\n }\n\n return { x: rgCol.itemIndex, y: rgRow.itemIndex };\n}\n\nexport function getCoordinate(\n range: RangeArea,\n focus: Cell,\n changes: Partial<Cell>,\n isMulti = false,\n) {\n const updateCoordinate = (c: keyof Cell) => {\n const start = { x: range.x, y: range.y };\n const end = isMulti ? { x: range.x1, y: range.y1 } : start;\n const point = end[c] > focus[c] ? end : start;\n point[c] += changes[c];\n return { start, end };\n };\n\n if (changes.x) {\n return updateCoordinate('x');\n }\n if (changes.y) {\n return updateCoordinate('y');\n }\n return null;\n}\n\n/**\n * Check if the x coordinate of the cell position is after or equal to the x coordinate of the last cell position\n * or if the y coordinate of the cell position is after or equal to the y coordinate of the last cell position\n */\nexport function isAfterLast({ x, y }: Cell, lastCell: Cell) {\n return x >= lastCell.x || y >= lastCell.y;\n}\n\n/** check if out of range */\nexport function isBeforeFirst({ x, y }: Cell) {\n return x < 0 || y < 0;\n}\n\n/** Compare cells, only 1 coordinate difference is possible */\n// export function getDirectionCoordinate(initial: Cell, last: Cell): Partial<Cell> | null {\n// const c: (keyof Cell)[] = ['x', 'y'];\n// for (let k of c) {\n// if (initial[k] !== last[k]) {\n// return { [k]: 1 };\n// }\n// }\n// return null;\n// }\n\n// export function getLargestAxis(initial: Cell, last: Cell): Partial<Cell> | null {\n// const cell: Partial<Cell> = {};\n// const c: (keyof Cell)[] = ['x', 'y'];\n// for (let k of c) {\n// cell[k] = Math.abs(initial[k] - last[k]);\n// }\n// if (cell.x > cell.y) {\n// return { x: 1 };\n// }\n// if (cell.y > cell.x) {\n// return { y: 1 };\n// }\n// return null;\n// }\n\nfunction styleByCellProps(styles: { [key: string]: number }): RangeAreaCss {\n return {\n left: `${styles.left}px`,\n top: `${styles.top}px`,\n width: `${styles.width}px`,\n height: `${styles.height}px`,\n };\n}\n\nexport function getCell(\n { x, y, x1, y1 }: RangeArea,\n dimensionRow: DimensionSettingsState,\n dimensionCol: DimensionSettingsState,\n) {\n const top = getItemByIndex(dimensionRow, y).start;\n const left = getItemByIndex(dimensionCol, x).start;\n const bottom = getItemByIndex(dimensionRow, y1).end;\n const right = getItemByIndex(dimensionCol, x1).end;\n\n return {\n left,\n right,\n top,\n bottom,\n width: right - left,\n height: bottom - top,\n };\n}\n\nexport function getElStyle(\n range: RangeArea,\n dimensionRow: DimensionSettingsState,\n dimensionCol: DimensionSettingsState,\n): RangeAreaCss {\n const styles = getCell(range, dimensionRow, dimensionCol);\n return styleByCellProps(styles);\n}\n"]}
1
+ {"version":3,"file":"selection.utils.js","sourceRoot":"","sources":["../../../src/components/overlay/selection.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,iBAAiB,GAClB,MAAM,QAAQ,CAAC;AAEhB,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAW1D,MAAM,UAAU,wBAAwB,CACtC,CAA0B,EAC1B,IAAe;IAEf,wCAAwC;IACxC,IAAI,CAAC,CAAC,gBAAgB,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,oCAAoC;IACpC,MAAM,CAAC,GAAG,oBAAoB,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAC7C,MAAM,CAAC,GAAG,oBAAoB,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAE7C,2CAA2C;IAC3C,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,iDAAiD;IACjD,MAAM,SAAS,GAAG,cAAc,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IACjD,2CAA2C;IAC3C,IAAI,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAC5B,EAAE,CAAC,EAAE,CAAC,EAAQ,EACd,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAA2C;IAE3D,4CAA4C;IAC5C,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,qBAAqB,EAAE,CAAC;IAEhE,sDAAsD;IACtD,IAAI,KAAK,GAAG,CAAC,GAAG,GAAG,CAAC;IACpB,IAAI,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC;IAErB,gDAAgD;IAChD,IAAI,KAAK,IAAI,MAAM,EAAE,CAAC;QACpB,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC;IACrB,CAAC;IAED,+CAA+C;IAC/C,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;QACnB,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;IACpB,CAAC;IAED,0DAA0D;IAC1D,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAE7C,sEAAsE;IACtE,IAAI,KAAK,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;QACxB,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;IACtB,CAAC;IAED,IAAI,KAAK,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;QACxB,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;IACtB,CAAC;IAED,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,KAAgB,EAChB,KAAW,EACX,OAAsB,EACtB,OAAO,GAAG,KAAK;IAEf,MAAM,gBAAgB,GAAG,CAAC,CAAa,EAAE,EAAE;QACzC,MAAM,KAAK,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;QACzC,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;QAC3D,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;QAC9C,KAAK,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;QACvB,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;IACxB,CAAC,CAAC;IAEF,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC;QACd,OAAO,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IACD,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC;QACd,OAAO,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,EAAQ,EAAE,QAAc;IACxD,OAAO,CAAC,IAAI,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,4BAA4B;AAC5B,MAAM,UAAU,aAAa,CAAC,EAAE,CAAC,EAAE,CAAC,EAAQ;IAC1C,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxB,CAAC;AAED,8DAA8D;AAC9D,4FAA4F;AAC5F,0CAA0C;AAC1C,uBAAuB;AACvB,oCAAoC;AACpC,2BAA2B;AAC3B,QAAQ;AACR,MAAM;AACN,iBAAiB;AACjB,IAAI;AAEJ,oFAAoF;AACpF,oCAAoC;AACpC,0CAA0C;AAC1C,uBAAuB;AACvB,gDAAgD;AAChD,MAAM;AACN,2BAA2B;AAC3B,uBAAuB;AACvB,MAAM;AACN,2BAA2B;AAC3B,uBAAuB;AACvB,MAAM;AACN,iBAAiB;AACjB,IAAI;AAEJ,SAAS,gBAAgB,CAAC,MAAiC;IACzD,OAAO;QACL,IAAI,EAAE,GAAG,MAAM,CAAC,IAAI,IAAI;QACxB,GAAG,EAAE,GAAG,MAAM,CAAC,GAAG,IAAI;QACtB,KAAK,EAAE,GAAG,MAAM,CAAC,KAAK,IAAI;QAC1B,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,IAAI;KAC7B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,OAAO,CACrB,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAa,EAC3B,YAAoC,EACpC,YAAoC;IAEpC,MAAM,GAAG,GAAG,cAAc,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;IAClD,MAAM,IAAI,GAAG,cAAc,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;IACnD,MAAM,MAAM,GAAG,cAAc,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC;IACpD,MAAM,KAAK,GAAG,cAAc,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC;IAEnD,OAAO;QACL,IAAI;QACJ,KAAK;QACL,GAAG;QACH,MAAM;QACN,KAAK,EAAE,KAAK,GAAG,IAAI;QACnB,MAAM,EAAE,MAAM,GAAG,GAAG;KACrB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,UAAU,CACxB,KAAgB,EAChB,YAAoC,EACpC,YAAoC;IAEpC,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;IAC1D,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAClC,CAAC","sourcesContent":["import {\n getItemByIndex,\n getItemByPosition,\n} from '@store';\nimport { DimensionSettingsState, Cell, RangeArea, RangeAreaCss } from '@type';\nimport { getPropertyFromEvent } from '../../utils/events';\n\nexport type EventData = {\n el: HTMLElement;\n rows: DimensionSettingsState;\n cols: DimensionSettingsState;\n lastCell: Cell;\n focus: Cell;\n range: RangeArea;\n};\n\nexport function getFocusCellBasedOnEvent(\n e: MouseEvent | TouchEvent,\n data: EventData,\n): Cell | null {\n // If event default is prevented, return\n if (e.defaultPrevented) {\n return null;\n }\n\n // Get coordinates from event object\n const x = getPropertyFromEvent(e, 'clientX');\n const y = getPropertyFromEvent(e, 'clientY');\n\n // If coordinates are not available, return\n if (x === null || y === null) {\n return null;\n }\n\n // Get current cell based on coordinates and data\n const focusCell = getCurrentCell({ x, y }, data);\n // If current cell is not available, return\n if (isAfterLast(focusCell, data.lastCell)) {\n return null;\n }\n\n return focusCell;\n}\n\n/**\n * Calculate cell based on x, y position\n */\nexport function getCurrentCell(\n { x, y }: Cell,\n { el, rows, cols }: Pick<EventData, 'el' | 'rows' | 'cols'>,\n): Cell {\n // Get the bounding rectangle of the element\n const { top, left, height, width } = el.getBoundingClientRect();\n\n // Calculate the cell position relative to the element\n let cellY = y - top;\n let cellX = x - left;\n\n // Limit the cell position to the element height\n if (cellY >= height) {\n cellY = height - 1;\n }\n\n // Limit the cell position to the element width\n if (cellX >= width) {\n cellX = width - 1;\n }\n\n // Get the row and column items based on the cell position\n const rgRow = getItemByPosition(rows, cellY);\n const rgCol = getItemByPosition(cols, cellX);\n\n // Set the row and column index to 0 if they are before the first item\n if (rgCol.itemIndex < 0) {\n rgCol.itemIndex = 0;\n }\n\n if (rgRow.itemIndex < 0) {\n rgRow.itemIndex = 0;\n }\n\n return { x: rgCol.itemIndex, y: rgRow.itemIndex };\n}\n\nexport function getCoordinate(\n range: RangeArea,\n focus: Cell,\n changes: Partial<Cell>,\n isMulti = false,\n) {\n const updateCoordinate = (c: keyof Cell) => {\n const start = { x: range.x, y: range.y };\n const end = isMulti ? { x: range.x1, y: range.y1 } : start;\n const point = end[c] > focus[c] ? end : start;\n point[c] += changes[c];\n return { start, end };\n };\n\n if (changes.x) {\n return updateCoordinate('x');\n }\n if (changes.y) {\n return updateCoordinate('y');\n }\n return null;\n}\n\n/**\n * Check if the x coordinate of the cell position is after or equal to the x coordinate of the last cell position\n * or if the y coordinate of the cell position is after or equal to the y coordinate of the last cell position\n */\nexport function isAfterLast({ x, y }: Cell, lastCell: Cell) {\n return x >= lastCell.x || y >= lastCell.y;\n}\n\n/** check if out of range */\nexport function isBeforeFirst({ x, y }: Cell) {\n return x < 0 || y < 0;\n}\n\n/** Compare cells, only 1 coordinate difference is possible */\n// export function getDirectionCoordinate(initial: Cell, last: Cell): Partial<Cell> | null {\n// const c: (keyof Cell)[] = ['x', 'y'];\n// for (let k of c) {\n// if (initial[k] !== last[k]) {\n// return { [k]: 1 };\n// }\n// }\n// return null;\n// }\n\n// export function getLargestAxis(initial: Cell, last: Cell): Partial<Cell> | null {\n// const cell: Partial<Cell> = {};\n// const c: (keyof Cell)[] = ['x', 'y'];\n// for (let k of c) {\n// cell[k] = Math.abs(initial[k] - last[k]);\n// }\n// if (cell.x > cell.y) {\n// return { x: 1 };\n// }\n// if (cell.y > cell.x) {\n// return { y: 1 };\n// }\n// return null;\n// }\n\nfunction styleByCellProps(styles: { [key: string]: number }): RangeAreaCss {\n return {\n left: `${styles.left}px`,\n top: `${styles.top}px`,\n width: `${styles.width}px`,\n height: `${styles.height}px`,\n };\n}\n\nexport function getCell(\n { x, y, x1, y1 }: RangeArea,\n dimensionRow: DimensionSettingsState,\n dimensionCol: DimensionSettingsState,\n) {\n const top = getItemByIndex(dimensionRow, y).start;\n const left = getItemByIndex(dimensionCol, x).start;\n const bottom = getItemByIndex(dimensionRow, y1).end;\n const right = getItemByIndex(dimensionCol, x1).end;\n\n return {\n left,\n right,\n top,\n bottom,\n width: right - left,\n height: bottom - top,\n };\n}\n\nexport function getElStyle(\n range: RangeArea,\n dimensionRow: DimensionSettingsState,\n dimensionCol: DimensionSettingsState,\n): RangeAreaCss {\n const styles = getCell(range, dimensionRow, dimensionCol);\n return styleByCellProps(styles);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"grid.helpers.js","sourceRoot":"","sources":["../../../src/components/revoGrid/grid.helpers.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,eAAe,CAAC;AASnC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,SAA0B,EAAE,EAAE,EAAE;IAClE,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,CAAC,EAAE,EAAE;QACnC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YACf,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,CAAC;QACD,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;YACX,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;gBACrB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACvB,CAAC;YACD,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;QACpC,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC,EACD,EAAE,CACH,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,SAA0B,EAAE,EAAE,EAAE;IACxE,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC,CAAe,EAAE,CAAC,EAAE,EAAE;QACzC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YACf,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,CAAC;QACD,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;YACX,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC,EACD,EAAE,CACH,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import reduce from 'lodash/reduce';\nimport { RowDefinition, DimensionRows } from '../..';\n\ntype Result = Partial<{\n [T in DimensionRows]: { sizes?: Record<number, number>; };\n}>;\ntype RemoveResult = Partial<{\n [T in DimensionRows]: number[];\n}>;\nexport const rowDefinitionByType = (newVal: RowDefinition[] = []) => {\n return reduce(newVal, (r: Result, v) => {\n if (!r[v.type]) {\n r[v.type] = {};\n }\n if (v.size) {\n if (!r[v.type].sizes) {\n r[v.type].sizes = {};\n }\n r[v.type].sizes[v.index] = v.size;\n }\n return r;\n },\n {},\n );\n};\n\nexport const rowDefinitionRemoveByType = (oldVal: RowDefinition[] = []) => {\n return reduce(oldVal, (r: RemoveResult, v) => {\n if (!r[v.type]) {\n r[v.type] = [];\n }\n if (v.size) {\n r[v.type].push(v.index);\n }\n return r;\n },\n {},\n );\n};\n"]}
1
+ {"version":3,"file":"grid.helpers.js","sourceRoot":"","sources":["../../../src/components/revoGrid/grid.helpers.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,eAAe,CAAC;AASnC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,SAA0B,EAAE,EAAE,EAAE;IAClE,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,CAAC,EAAE,EAAE;QACnC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YACf,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,CAAC;QACD,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;YACX,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;gBACrB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACvB,CAAC;YACD,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;QACpC,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC,EACD,EAAE,CACH,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,SAA0B,EAAE,EAAE,EAAE;IACxE,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC,CAAe,EAAE,CAAC,EAAE,EAAE;QACzC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YACf,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,CAAC;QACD,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;YACX,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC,EACD,EAAE,CACH,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import reduce from 'lodash/reduce';\nimport { RowDefinition, DimensionRows } from '@type';\n\ntype Result = Partial<{\n [T in DimensionRows]: { sizes?: Record<number, number>; };\n}>;\ntype RemoveResult = Partial<{\n [T in DimensionRows]: number[];\n}>;\nexport const rowDefinitionByType = (newVal: RowDefinition[] = []) => {\n return reduce(newVal, (r: Result, v) => {\n if (!r[v.type]) {\n r[v.type] = {};\n }\n if (v.size) {\n if (!r[v.type].sizes) {\n r[v.type].sizes = {};\n }\n r[v.type].sizes[v.index] = v.size;\n }\n return r;\n },\n {},\n );\n};\n\nexport const rowDefinitionRemoveByType = (oldVal: RowDefinition[] = []) => {\n return reduce(oldVal, (r: RemoveResult, v) => {\n if (!r[v.type]) {\n r[v.type] = [];\n }\n if (v.size) {\n r[v.type].push(v.index);\n }\n return r;\n },\n {},\n );\n};\n"]}