@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
@@ -1 +1 @@
1
- {"version":3,"file":"filter.pop.js","sourceRoot":"","sources":["../../../src/plugins/filter/filter.pop.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, h, Host, Listen, Prop, State, Event, EventEmitter, VNode, Method } from '@stencil/core';\nimport { FilterType } from './filter.service';\nimport { AndOrButton, isFilterBtn, TrashButton } from './filter.button';\nimport '../../utils/closest.polifill';\nimport { LogicFunction } from './filter.types';\nimport { FilterCaptions } from './filter.plugin';\nimport debounce from 'lodash/debounce';\nimport { ColumnProp } from '../../types/interfaces';\n\nexport type FilterItem = {\n // column id\n prop?: ColumnProp;\n // filter type definition\n type?: FilterType;\n // value for additional filtering, text value or some id\n value?: any;\n};\n\nexport type FilterData = {\n id: number;\n type: FilterType;\n value?: any;\n relation: 'and' | 'or';\n};\n\nexport type MultiFilterItem = {\n [prop: string]: FilterData[];\n};\n\nexport type ShowData = {\n x: number;\n y: number;\n} & FilterItem;\n\nconst defaultType: FilterType = 'none';\n\nconst FILTER_LIST_CLASS = 'multi-filter-list';\nconst FILTER_LIST_CLASS_ACTION = 'multi-filter-list-action';\n\n/**\n * Filter panel for editing filters\n */\n/**\n * @internal\n */\n@Component({\n tag: 'revogr-filter-panel',\n styleUrl: 'filter.style.scss',\n})\nexport class FilterPanel {\n private filterCaptionsInternal: FilterCaptions = {\n title: 'Filter by',\n save: 'Save',\n // drops the filter\n reset: 'Cancel',\n cancel: 'Close',\n };\n @State() isFilterIdSet = false;\n @State() filterId = 0;\n @State() currentFilterId = -1;\n @State() currentFilterType: FilterType = defaultType;\n @State() changes: ShowData | undefined;\n @Prop({ mutable: true, reflect: true }) uuid: string;\n @Prop() filterItems: MultiFilterItem = {};\n @Prop() filterTypes: Record<string, string[]> = {};\n @Prop() filterNames: Record<string, string> = {};\n @Prop() filterEntities: Record<string, LogicFunction> = {};\n @Prop() filterCaptions: FilterCaptions | undefined;\n @Prop() disableDynamicFiltering = false;\n @Event() filterChange: EventEmitter<MultiFilterItem>;\n @Listen('mousedown', { target: 'document' }) onMouseDown(e: MouseEvent) {\n if (this.changes && !e.defaultPrevented) {\n const el = e.target as HTMLElement;\n if (this.isOutside(el) && !isFilterBtn(el)) {\n this.changes = undefined;\n }\n }\n }\n @Method() async show(newEntity?: ShowData) {\n this.changes = newEntity;\n if (this.changes) {\n this.changes.type = this.changes.type || defaultType;\n }\n }\n\n @Method() async getChanges() {\n return this.changes;\n }\n\n componentWillRender() {\n if (!this.isFilterIdSet) {\n this.isFilterIdSet = true;\n const filterItems = Object.keys(this.filterItems);\n for (const prop of filterItems) {\n // we set the proper filterId so there won't be any conflict when removing filters\n this.filterId += this.filterItems[prop].length;\n }\n }\n }\n\n renderSelectOptions(type: FilterType, isDefaultTypeRemoved = false) {\n const options: VNode[] = [];\n const prop = this.changes?.prop;\n\n if (!isDefaultTypeRemoved) {\n options.push(\n <option selected={this.currentFilterType === defaultType} value={defaultType}>\n {prop && this.filterItems[prop] && this.filterItems[prop].length > 0 ? 'Add more condition...' : this.filterNames[defaultType]}\n </option>,\n );\n }\n\n for (let gIndex in this.filterTypes) {\n options.push(\n ...this.filterTypes[gIndex].map(k => (\n <option value={k} selected={type === k}>\n {this.filterNames[k]}\n </option>\n )),\n );\n options.push(<option disabled></option>);\n }\n return options;\n }\n\n renderExtra(prop: ColumnProp, index: number) {\n const currentFilter = this.filterItems[prop];\n\n if (!currentFilter) return '';\n\n if (this.filterEntities[currentFilter[index].type].extra !== 'input') return '';\n\n return (\n <input\n id={`filter-input-${currentFilter[index].id}`}\n placeholder=\"Enter value...\"\n type=\"text\"\n value={currentFilter[index].value}\n onInput={this.onUserInput.bind(this, index, prop)}\n onKeyDown={e => this.onKeyDown(e)}\n />\n );\n }\n\n getFilterItemsList() {\n const prop = this.changes?.prop;\n if (!(prop || prop === 0)) return '';\n\n const propFilters = this.filterItems[prop] || [];\n return (\n <div key={this.filterId}>\n {propFilters.map((d, index) => {\n let andOrButton;\n\n // hide toggle button if there is only one filter and the last one\n if (index !== this.filterItems[prop].length - 1) {\n andOrButton = (\n <div onClick={() => this.toggleFilterAndOr(d.id)}>\n <AndOrButton isAnd={d.relation === 'and'} />\n </div>\n );\n }\n\n return (\n <div key={d.id} class={FILTER_LIST_CLASS}>\n <div class={{ 'select-input': true }}>\n <select class=\"select-css select-filter\" onChange={e => this.onFilterTypeChange(e, prop, index)}>\n {this.renderSelectOptions(this.filterItems[prop][index].type, true)}\n </select>\n <div class={FILTER_LIST_CLASS_ACTION}>{andOrButton}</div>\n <div onClick={() => this.onRemoveFilter(d.id)}>\n <TrashButton />\n </div>\n </div>\n <div>{this.renderExtra(prop, index)}</div>\n </div>\n );\n })}\n\n {propFilters.length > 0 ? <div class=\"add-filter-divider\"/> : ''}\n </div>\n );\n }\n \n render() {\n if (!this.changes) {\n return <Host style={{ display: 'none' }}></Host>;\n }\n const style = {\n display: 'block',\n left: `${this.changes.x}px`,\n top: `${this.changes.y}px`,\n };\n\n const capts = Object.assign(this.filterCaptionsInternal, this.filterCaptions);\n\n return (\n <Host style={style}>\n <label>{capts.title}</label>\n <div class=\"filter-holder\">{this.getFilterItemsList()}</div>\n\n <div class=\"add-filter\">\n <select id=\"add-filter\" class=\"select-css\" onChange={e => this.onAddNewFilter(e)}>\n {this.renderSelectOptions(this.currentFilterType)}\n </select>\n </div>\n <div class=\"filter-actions\">\n {this.disableDynamicFiltering &&\n <button class=\"revo-button green save\" onClick={() => this.onSave()}>\n {capts.save}\n </button>\n }\n <button class=\"revo-button light reset\" onClick={() => this.onReset()}>\n {capts.reset}\n </button>\n <button class=\"revo-button light cancel\" onClick={() => this.onCancel()}>\n {capts.cancel}\n </button>\n </div>\n </Host>\n );\n }\n\n private onFilterTypeChange(e: Event, prop: ColumnProp, index: number) {\n const el = e.target as HTMLSelectElement;\n const type = el.value as FilterType;\n\n this.filterItems[prop][index].type = type;\n\n // this re-renders the input to know if we need extra input\n this.filterId++;\n\n // adding setTimeout will wait for the next tick DOM update then focus on input\n setTimeout(() => {\n const input = document.getElementById('filter-input-' + this.filterItems[prop][index].id) as HTMLInputElement;\n if (input) input.focus();\n }, 0);\n\n if (!this.disableDynamicFiltering) this.debouncedApplyFilter();\n }\n\n private debouncedApplyFilter = debounce(() => {\n this.filterChange.emit(this.filterItems);\n }, 400);\n\n private onAddNewFilter(e: Event) {\n const el = e.target as HTMLSelectElement;\n const type = el.value as FilterType;\n\n this.currentFilterType = type;\n this.addNewFilterToProp();\n\n // reset value after adding new filter\n const select = document.getElementById('add-filter') as HTMLSelectElement;\n if (select) {\n select.value = defaultType;\n this.currentFilterType = defaultType;\n }\n\n if (!this.disableDynamicFiltering) this.debouncedApplyFilter();\n }\n\n private addNewFilterToProp() {\n const prop = this.changes?.prop;\n if (!(prop || prop === 0)) return;\n\n if (!this.filterItems[prop]) {\n this.filterItems[prop] = [];\n }\n\n if (this.currentFilterType === 'none') return;\n\n this.filterId++;\n this.currentFilterId = this.filterId;\n\n this.filterItems[prop].push({\n id: this.currentFilterId,\n type: this.currentFilterType,\n value: '',\n relation: 'and',\n });\n\n // adding setTimeout will wait for the next tick DOM update then focus on input\n setTimeout(() => {\n const input = document.getElementById('filter-input-' + this.currentFilterId) as HTMLInputElement;\n if (input) input.focus();\n }, 0);\n }\n\n private onUserInput(index: number, prop: ColumnProp, event: Event) {\n // update the value of the filter item\n this.filterItems[prop][index].value = (event.target as HTMLInputElement).value;\n\n if (!this.disableDynamicFiltering) this.debouncedApplyFilter();\n }\n\n private onKeyDown(e: KeyboardEvent) {\n if (e.key.toLowerCase() === 'enter') {\n const select = document.getElementById('add-filter') as HTMLSelectElement;\n if (select) {\n select.value = defaultType;\n this.currentFilterType = defaultType;\n this.addNewFilterToProp();\n select.focus();\n }\n return;\n }\n // keep event local, don't escalate farther to dom\n e.stopPropagation();\n }\n\n private onSave() {\n this.filterChange.emit(this.filterItems);\n }\n\n private onCancel() {\n this.changes = undefined;\n }\n\n private onReset() {\n this.assertChanges();\n\n delete this.filterItems[this.changes.prop];\n\n // this updates the DOM which is used by getFilterItemsList() key\n this.filterId++;\n\n this.filterChange.emit(this.filterItems);\n }\n\n private onRemoveFilter(id: number) {\n this.assertChanges();\n\n // this is for reactivity issues for getFilterItemsList()\n this.filterId++;\n\n const prop = this.changes.prop;\n\n const items = this.filterItems[prop];\n if (!items) return;\n\n const index = items.findIndex(d => d.id === id);\n if (index === -1) return;\n items.splice(index, 1);\n\n // let's remove the prop if no more filters so the filter icon will be removed\n if (items.length === 0) delete this.filterItems[prop];\n\n if (!this.disableDynamicFiltering) this.debouncedApplyFilter();\n }\n\n private toggleFilterAndOr(id: number) {\n this.assertChanges();\n\n // this is for reactivity issues for getFilterItemsList()\n this.filterId++;\n\n const prop = this.changes.prop;\n\n const items = this.filterItems[prop];\n if (!items) return;\n\n const index = items.findIndex(d => d.id === id);\n if (index === -1) return;\n\n items[index].relation = items[index].relation === 'and' ? 'or' : 'and';\n if (!this.disableDynamicFiltering) this.debouncedApplyFilter();\n }\n\n private assertChanges() {\n if (!this.changes) {\n throw new Error('Changes required per edit');\n }\n }\n\n private isOutside(e: HTMLElement | null) {\n const select = document.getElementById('add-filter') as HTMLSelectElement;\n if (select) select.value = defaultType;\n\n this.currentFilterType = defaultType;\n this.changes.type = defaultType;\n this.currentFilterId = -1;\n if (e.classList.contains(`[uuid=\"${this.uuid}\"]`)) {\n return false;\n }\n return !e?.closest(`[uuid=\"${this.uuid}\"]`);\n }\n}\n"]}
1
+ {"version":3,"file":"filter.pop.js","sourceRoot":"","sources":["../../../src/plugins/filter/filter.pop.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, h, Host, Listen, Prop, State, Event, EventEmitter, VNode, Method } from '@stencil/core';\nimport { FilterType } from './filter.service';\nimport { AndOrButton, isFilterBtn, TrashButton } from './filter.button';\nimport '../../utils/closest.polifill';\nimport { LogicFunction } from './filter.types';\nimport { FilterCaptions } from './filter.plugin';\nimport debounce from 'lodash/debounce';\nimport { ColumnProp } from '@type';\n\nexport type FilterItem = {\n // column id\n prop?: ColumnProp;\n // filter type definition\n type?: FilterType;\n // value for additional filtering, text value or some id\n value?: any;\n};\n\nexport type FilterData = {\n id: number;\n type: FilterType;\n value?: any;\n relation: 'and' | 'or';\n};\n\nexport type MultiFilterItem = {\n [prop: string]: FilterData[];\n};\n\nexport type ShowData = {\n x: number;\n y: number;\n} & FilterItem;\n\nconst defaultType: FilterType = 'none';\n\nconst FILTER_LIST_CLASS = 'multi-filter-list';\nconst FILTER_LIST_CLASS_ACTION = 'multi-filter-list-action';\n\n/**\n * Filter panel for editing filters\n */\n/**\n * @internal\n */\n@Component({\n tag: 'revogr-filter-panel',\n styleUrl: 'filter.style.scss',\n})\nexport class FilterPanel {\n private filterCaptionsInternal: FilterCaptions = {\n title: 'Filter by',\n save: 'Save',\n // drops the filter\n reset: 'Cancel',\n cancel: 'Close',\n };\n @State() isFilterIdSet = false;\n @State() filterId = 0;\n @State() currentFilterId = -1;\n @State() currentFilterType: FilterType = defaultType;\n @State() changes: ShowData | undefined;\n @Prop({ mutable: true, reflect: true }) uuid: string;\n @Prop() filterItems: MultiFilterItem = {};\n @Prop() filterTypes: Record<string, string[]> = {};\n @Prop() filterNames: Record<string, string> = {};\n @Prop() filterEntities: Record<string, LogicFunction> = {};\n @Prop() filterCaptions: FilterCaptions | undefined;\n @Prop() disableDynamicFiltering = false;\n @Event() filterChange: EventEmitter<MultiFilterItem>;\n @Listen('mousedown', { target: 'document' }) onMouseDown(e: MouseEvent) {\n if (this.changes && !e.defaultPrevented) {\n const el = e.target as HTMLElement;\n if (this.isOutside(el) && !isFilterBtn(el)) {\n this.changes = undefined;\n }\n }\n }\n @Method() async show(newEntity?: ShowData) {\n this.changes = newEntity;\n if (this.changes) {\n this.changes.type = this.changes.type || defaultType;\n }\n }\n\n @Method() async getChanges() {\n return this.changes;\n }\n\n componentWillRender() {\n if (!this.isFilterIdSet) {\n this.isFilterIdSet = true;\n const filterItems = Object.keys(this.filterItems);\n for (const prop of filterItems) {\n // we set the proper filterId so there won't be any conflict when removing filters\n this.filterId += this.filterItems[prop].length;\n }\n }\n }\n\n renderSelectOptions(type: FilterType, isDefaultTypeRemoved = false) {\n const options: VNode[] = [];\n const prop = this.changes?.prop;\n\n if (!isDefaultTypeRemoved) {\n options.push(\n <option selected={this.currentFilterType === defaultType} value={defaultType}>\n {prop && this.filterItems[prop] && this.filterItems[prop].length > 0 ? 'Add more condition...' : this.filterNames[defaultType]}\n </option>,\n );\n }\n\n for (let gIndex in this.filterTypes) {\n options.push(\n ...this.filterTypes[gIndex].map(k => (\n <option value={k} selected={type === k}>\n {this.filterNames[k]}\n </option>\n )),\n );\n options.push(<option disabled></option>);\n }\n return options;\n }\n\n renderExtra(prop: ColumnProp, index: number) {\n const currentFilter = this.filterItems[prop];\n\n if (!currentFilter) return '';\n\n if (this.filterEntities[currentFilter[index].type].extra !== 'input') return '';\n\n return (\n <input\n id={`filter-input-${currentFilter[index].id}`}\n placeholder=\"Enter value...\"\n type=\"text\"\n value={currentFilter[index].value}\n onInput={this.onUserInput.bind(this, index, prop)}\n onKeyDown={e => this.onKeyDown(e)}\n />\n );\n }\n\n getFilterItemsList() {\n const prop = this.changes?.prop;\n if (!(prop || prop === 0)) return '';\n\n const propFilters = this.filterItems[prop] || [];\n return (\n <div key={this.filterId}>\n {propFilters.map((d, index) => {\n let andOrButton;\n\n // hide toggle button if there is only one filter and the last one\n if (index !== this.filterItems[prop].length - 1) {\n andOrButton = (\n <div onClick={() => this.toggleFilterAndOr(d.id)}>\n <AndOrButton isAnd={d.relation === 'and'} />\n </div>\n );\n }\n\n return (\n <div key={d.id} class={FILTER_LIST_CLASS}>\n <div class={{ 'select-input': true }}>\n <select class=\"select-css select-filter\" onChange={e => this.onFilterTypeChange(e, prop, index)}>\n {this.renderSelectOptions(this.filterItems[prop][index].type, true)}\n </select>\n <div class={FILTER_LIST_CLASS_ACTION}>{andOrButton}</div>\n <div onClick={() => this.onRemoveFilter(d.id)}>\n <TrashButton />\n </div>\n </div>\n <div>{this.renderExtra(prop, index)}</div>\n </div>\n );\n })}\n\n {propFilters.length > 0 ? <div class=\"add-filter-divider\"/> : ''}\n </div>\n );\n }\n \n render() {\n if (!this.changes) {\n return <Host style={{ display: 'none' }}></Host>;\n }\n const style = {\n display: 'block',\n left: `${this.changes.x}px`,\n top: `${this.changes.y}px`,\n };\n\n const capts = Object.assign(this.filterCaptionsInternal, this.filterCaptions);\n\n return (\n <Host style={style}>\n <label>{capts.title}</label>\n <div class=\"filter-holder\">{this.getFilterItemsList()}</div>\n\n <div class=\"add-filter\">\n <select id=\"add-filter\" class=\"select-css\" onChange={e => this.onAddNewFilter(e)}>\n {this.renderSelectOptions(this.currentFilterType)}\n </select>\n </div>\n <div class=\"filter-actions\">\n {this.disableDynamicFiltering &&\n <button class=\"revo-button green save\" onClick={() => this.onSave()}>\n {capts.save}\n </button>\n }\n <button class=\"revo-button light reset\" onClick={() => this.onReset()}>\n {capts.reset}\n </button>\n <button class=\"revo-button light cancel\" onClick={() => this.onCancel()}>\n {capts.cancel}\n </button>\n </div>\n </Host>\n );\n }\n\n private onFilterTypeChange(e: Event, prop: ColumnProp, index: number) {\n const el = e.target as HTMLSelectElement;\n const type = el.value as FilterType;\n\n this.filterItems[prop][index].type = type;\n\n // this re-renders the input to know if we need extra input\n this.filterId++;\n\n // adding setTimeout will wait for the next tick DOM update then focus on input\n setTimeout(() => {\n const input = document.getElementById('filter-input-' + this.filterItems[prop][index].id) as HTMLInputElement;\n if (input) input.focus();\n }, 0);\n\n if (!this.disableDynamicFiltering) this.debouncedApplyFilter();\n }\n\n private debouncedApplyFilter = debounce(() => {\n this.filterChange.emit(this.filterItems);\n }, 400);\n\n private onAddNewFilter(e: Event) {\n const el = e.target as HTMLSelectElement;\n const type = el.value as FilterType;\n\n this.currentFilterType = type;\n this.addNewFilterToProp();\n\n // reset value after adding new filter\n const select = document.getElementById('add-filter') as HTMLSelectElement;\n if (select) {\n select.value = defaultType;\n this.currentFilterType = defaultType;\n }\n\n if (!this.disableDynamicFiltering) this.debouncedApplyFilter();\n }\n\n private addNewFilterToProp() {\n const prop = this.changes?.prop;\n if (!(prop || prop === 0)) return;\n\n if (!this.filterItems[prop]) {\n this.filterItems[prop] = [];\n }\n\n if (this.currentFilterType === 'none') return;\n\n this.filterId++;\n this.currentFilterId = this.filterId;\n\n this.filterItems[prop].push({\n id: this.currentFilterId,\n type: this.currentFilterType,\n value: '',\n relation: 'and',\n });\n\n // adding setTimeout will wait for the next tick DOM update then focus on input\n setTimeout(() => {\n const input = document.getElementById('filter-input-' + this.currentFilterId) as HTMLInputElement;\n if (input) input.focus();\n }, 0);\n }\n\n private onUserInput(index: number, prop: ColumnProp, event: Event) {\n // update the value of the filter item\n this.filterItems[prop][index].value = (event.target as HTMLInputElement).value;\n\n if (!this.disableDynamicFiltering) this.debouncedApplyFilter();\n }\n\n private onKeyDown(e: KeyboardEvent) {\n if (e.key.toLowerCase() === 'enter') {\n const select = document.getElementById('add-filter') as HTMLSelectElement;\n if (select) {\n select.value = defaultType;\n this.currentFilterType = defaultType;\n this.addNewFilterToProp();\n select.focus();\n }\n return;\n }\n // keep event local, don't escalate farther to dom\n e.stopPropagation();\n }\n\n private onSave() {\n this.filterChange.emit(this.filterItems);\n }\n\n private onCancel() {\n this.changes = undefined;\n }\n\n private onReset() {\n this.assertChanges();\n\n delete this.filterItems[this.changes.prop];\n\n // this updates the DOM which is used by getFilterItemsList() key\n this.filterId++;\n\n this.filterChange.emit(this.filterItems);\n }\n\n private onRemoveFilter(id: number) {\n this.assertChanges();\n\n // this is for reactivity issues for getFilterItemsList()\n this.filterId++;\n\n const prop = this.changes.prop;\n\n const items = this.filterItems[prop];\n if (!items) return;\n\n const index = items.findIndex(d => d.id === id);\n if (index === -1) return;\n items.splice(index, 1);\n\n // let's remove the prop if no more filters so the filter icon will be removed\n if (items.length === 0) delete this.filterItems[prop];\n\n if (!this.disableDynamicFiltering) this.debouncedApplyFilter();\n }\n\n private toggleFilterAndOr(id: number) {\n this.assertChanges();\n\n // this is for reactivity issues for getFilterItemsList()\n this.filterId++;\n\n const prop = this.changes.prop;\n\n const items = this.filterItems[prop];\n if (!items) return;\n\n const index = items.findIndex(d => d.id === id);\n if (index === -1) return;\n\n items[index].relation = items[index].relation === 'and' ? 'or' : 'and';\n if (!this.disableDynamicFiltering) this.debouncedApplyFilter();\n }\n\n private assertChanges() {\n if (!this.changes) {\n throw new Error('Changes required per edit');\n }\n }\n\n private isOutside(e: HTMLElement | null) {\n const select = document.getElementById('add-filter') as HTMLSelectElement;\n if (select) select.value = defaultType;\n\n this.currentFilterType = defaultType;\n this.changes.type = defaultType;\n this.currentFilterId = -1;\n if (e.classList.contains(`[uuid=\"${this.uuid}\"]`)) {\n return false;\n }\n return !e?.closest(`[uuid=\"${this.uuid}\"]`);\n }\n}\n"]}
@@ -3,7 +3,7 @@
3
3
  */
4
4
  import { h } from "@stencil/core";
5
5
  import findIndex from "lodash/findIndex";
6
- import { getItemByIndex } from "../../store/dimension/dimension.helpers";
6
+ import { getItemByIndex } from "../../store/index";
7
7
  import { HEADER_ROW_CLASS } from "../../utils/consts";
8
8
  import GroupHeaderRenderer from "./headerGroupRenderer";
9
9
  const ColumnGroupsRenderer = ({ additionalData, providers, depth, groups, visibleProps, dimensionCol, canResize, active, onResize }) => {
@@ -1 +1 @@
1
- {"version":3,"file":"columnGroupsRenderer.js","sourceRoot":"","sources":["../../../src/plugins/groupingColumn/columnGroupsRenderer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAS,MAAM,eAAe,CAAC;AACzC,OAAO,SAAS,MAAM,kBAAkB,CAAC;AAEzC,OAAO,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;AAgBxD,MAAM,oBAAoB,GAAG,CAAC,EAC5B,cAAc,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAC7D,EAAW,EAAE;IACjD,uBAAuB;IACvB,MAAM,QAAQ,GAAY,EAAE,CAAC;IAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YACd,KAAK,IAAI,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5B,4BAA4B;gBAC5B,yDAAyD;gBACzD,MAAM,oBAAoB,GAAuB,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,YAAY,CAAC,EAAE,CAAC,KAAK,QAAQ,CAAC,CAAC;gBAClH,IAAI,oBAAoB,GAAG,CAAC,CAAC,EAAE,CAAC;oBAC9B,MAAM,eAAe,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,mBAAmB;oBAC1F,MAAM,eAAe,GAAG,eAAe,GAAG,oBAAoB,CAAC,CAAC,8BAA8B;oBAC9F,MAAM,aAAa,GAAG,eAAe,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,6BAA6B;oBAE3F,cAAc;oBACd,MAAM,UAAU,GAAG,cAAc,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC,KAAK,CAAC;oBACvE,MAAM,QAAQ,GAAG,cAAc,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC,GAAG,CAAC;oBACjE,QAAQ,CAAC,IAAI,CACX,EAAC,mBAAmB,IAClB,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,UAAU,EACjB,GAAG,EAAE,QAAQ,EACb,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,eAAe,EAAE,aAAa,CAAC,EACnE,cAAc,EAAE,cAAc,GAC9B,CACH,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,WAAK,KAAK,EAAE,GAAG,gBAAgB,QAAQ,GAAI,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,eAAe,oBAAoB,CAAC","sourcesContent":["import { h, VNode } from '@stencil/core';\nimport findIndex from 'lodash/findIndex';\nimport { Group } from '../../store/dataSource/data.store';\nimport { getItemByIndex } from '../../store/dimension/dimension.helpers';\nimport { HEADER_ROW_CLASS } from '../../utils/consts';\nimport GroupHeaderRenderer from './headerGroupRenderer';\nimport { DimensionSettingsState, Providers } from '../../types/interfaces';\nimport { ResizeProps } from '../..';\nimport { DimensionCols } from '../../components';\n\ntype Props<T> = {\n visibleProps: { [prop: string]: number };\n groups: Record<number, Group[]>;\n dimensionCol: Pick<DimensionSettingsState, 'indexes' | 'originItemSize' | 'indexToItem'>;\n depth: number;\n canResize: boolean;\n providers: Providers<T>;\n additionalData: any;\n onResize(changedX: number, startIndex: number, endIndex: number): void;\n} & Partial<Pick<ResizeProps, 'active'>>;\n\nconst ColumnGroupsRenderer = ({\n additionalData, providers, depth, groups, visibleProps, dimensionCol, canResize, active, onResize\n}: Props<DimensionCols | 'rowHeaders'>): VNode[] => {\n // render group columns\n const groupRow: VNode[] = [];\n for (let i = 0; i < depth; i++) {\n if (groups[i]) {\n for (let group of groups[i]) {\n // if group in visible range\n // find first visible group prop in visible columns range\n const indexFirstVisibleCol: number | undefined = findIndex(group.ids, id => typeof visibleProps[id] === 'number');\n if (indexFirstVisibleCol > -1) {\n const colVisibleIndex = visibleProps[group.ids[indexFirstVisibleCol]]; // get column index\n const groupStartIndex = colVisibleIndex - indexFirstVisibleCol; // first column index in group\n const groupEndIndex = groupStartIndex + group.ids.length - 1; // last column index in group\n\n // coordinates\n const groupStart = getItemByIndex(dimensionCol, groupStartIndex).start;\n const groupEnd = getItemByIndex(dimensionCol, groupEndIndex).end;\n groupRow.push(\n <GroupHeaderRenderer\n providers={providers}\n start={groupStart}\n end={groupEnd}\n group={group}\n active={active}\n canResize={canResize}\n onResize={e => onResize(e.changedX, groupStartIndex, groupEndIndex)}\n additionalData={additionalData}\n />,\n );\n }\n }\n }\n groupRow.push(<div class={`${HEADER_ROW_CLASS} group`} />);\n }\n return groupRow;\n};\n\nexport default ColumnGroupsRenderer;\n"]}
1
+ {"version":3,"file":"columnGroupsRenderer.js","sourceRoot":"","sources":["../../../src/plugins/groupingColumn/columnGroupsRenderer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAS,MAAM,eAAe,CAAC;AACzC,OAAO,SAAS,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAS,cAAc,EAAE,MAAM,QAAQ,CAAC;AAE/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;AAcxD,MAAM,oBAAoB,GAAG,CAAC,EAC5B,cAAc,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAC7D,EAAW,EAAE;IACjD,uBAAuB;IACvB,MAAM,QAAQ,GAAY,EAAE,CAAC;IAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YACd,KAAK,IAAI,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5B,4BAA4B;gBAC5B,yDAAyD;gBACzD,MAAM,oBAAoB,GAAuB,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,YAAY,CAAC,EAAE,CAAC,KAAK,QAAQ,CAAC,CAAC;gBAClH,IAAI,oBAAoB,GAAG,CAAC,CAAC,EAAE,CAAC;oBAC9B,MAAM,eAAe,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,mBAAmB;oBAC1F,MAAM,eAAe,GAAG,eAAe,GAAG,oBAAoB,CAAC,CAAC,8BAA8B;oBAC9F,MAAM,aAAa,GAAG,eAAe,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,6BAA6B;oBAE3F,cAAc;oBACd,MAAM,UAAU,GAAG,cAAc,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC,KAAK,CAAC;oBACvE,MAAM,QAAQ,GAAG,cAAc,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC,GAAG,CAAC;oBACjE,QAAQ,CAAC,IAAI,CACX,EAAC,mBAAmB,IAClB,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,UAAU,EACjB,GAAG,EAAE,QAAQ,EACb,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,eAAe,EAAE,aAAa,CAAC,EACnE,cAAc,EAAE,cAAc,GAC9B,CACH,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,WAAK,KAAK,EAAE,GAAG,gBAAgB,QAAQ,GAAI,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,eAAe,oBAAoB,CAAC","sourcesContent":["import { h, VNode } from '@stencil/core';\nimport findIndex from 'lodash/findIndex';\nimport { Group, getItemByIndex } from '@store';\nimport { DimensionSettingsState, Providers, DimensionCols } from '@type';\nimport { HEADER_ROW_CLASS } from '../../utils/consts';\nimport GroupHeaderRenderer from './headerGroupRenderer';\nimport { ResizeProps } from '../../services/resizable.directive';\n\ntype Props<T> = {\n visibleProps: { [prop: string]: number };\n groups: Record<number, Group[]>;\n dimensionCol: Pick<DimensionSettingsState, 'indexes' | 'originItemSize' | 'indexToItem'>;\n depth: number;\n canResize: boolean;\n providers: Providers<T>;\n additionalData: any;\n onResize(changedX: number, startIndex: number, endIndex: number): void;\n} & Partial<Pick<ResizeProps, 'active'>>;\n\nconst ColumnGroupsRenderer = ({\n additionalData, providers, depth, groups, visibleProps, dimensionCol, canResize, active, onResize\n}: Props<DimensionCols | 'rowHeaders'>): VNode[] => {\n // render group columns\n const groupRow: VNode[] = [];\n for (let i = 0; i < depth; i++) {\n if (groups[i]) {\n for (let group of groups[i]) {\n // if group in visible range\n // find first visible group prop in visible columns range\n const indexFirstVisibleCol: number | undefined = findIndex(group.ids, id => typeof visibleProps[id] === 'number');\n if (indexFirstVisibleCol > -1) {\n const colVisibleIndex = visibleProps[group.ids[indexFirstVisibleCol]]; // get column index\n const groupStartIndex = colVisibleIndex - indexFirstVisibleCol; // first column index in group\n const groupEndIndex = groupStartIndex + group.ids.length - 1; // last column index in group\n\n // coordinates\n const groupStart = getItemByIndex(dimensionCol, groupStartIndex).start;\n const groupEnd = getItemByIndex(dimensionCol, groupEndIndex).end;\n groupRow.push(\n <GroupHeaderRenderer\n providers={providers}\n start={groupStart}\n end={groupEnd}\n group={group}\n active={active}\n canResize={canResize}\n onResize={e => onResize(e.changedX, groupStartIndex, groupEndIndex)}\n additionalData={additionalData}\n />,\n );\n }\n }\n }\n groupRow.push(<div class={`${HEADER_ROW_CLASS} group`} />);\n }\n return groupRow;\n};\n\nexport default ColumnGroupsRenderer;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"grouping.col.plugin.js","sourceRoot":"","sources":["../../../src/plugins/groupingColumn/grouping.col.plugin.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,gBAAgB,CAAC;AACrC,OAAO,GAAG,MAAM,YAAY,CAAC;AAI7B,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAQ5C,MAAM,CAAC,OAAO,OAAO,oBAAqB,SAAQ,UAAU;IAC1D,MAAM,CAAC,WAAW,CAA6B,GAAM,EAAE,OAAuB,EAAE,UAAa,EAAE,KAAK,GAAG,CAAC;QACtG,iBAAiB;QACjB,MAAM,KAAK,mCACN,OAAO,KACV,KAAK,EACL,GAAG,EAAE,EAAE,GACR,CAAC;QAEF,2BAA2B;QAC3B,KAAK,IAAI,CAAC,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;YACjC,MAAM,GAAG,GAAG,CAAsB,CAAC;YACnC,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACpC,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAE/C,iBAAiB;YACjB,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;gBACnD,eAAe;gBACf,UAAU,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC;gBAEnC,gBAAgB;gBAChB,IAAI,cAAc,CAAC,MAAM,EAAE,CAAC;oBAC1B,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,iCACvB,KAAK,KACR,GAAG,EAAE,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,IAChC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QACD,yBAAyB;QACzB,KAAK,IAAI,CAAC,IAAI,UAAU,CAAC,cAAc,EAAE,CAAC;YACxC,MAAM,GAAG,GAAG,CAAkB,CAAC;YAC/B,MAAM,cAAc,GAAG,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;YACtD,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC;QAClD,CAAC;QACD,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC3D,GAAG,CAAC,IAAI,mCAAQ,GAAG,CAAC,IAAI,GAAK,UAAU,CAAC,IAAI,CAAE,CAAC;QAC/C,OAAO,GAAG,CAAC;IACb,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,OAAuC;IACnE,OAAO,CAAC,CAAE,OAA0B,CAAC,QAAQ,CAAC;AAChD,CAAC","sourcesContent":["import isArray from 'lodash/isArray';\nimport map from 'lodash/map';\nimport { ColumnCollection } from '../../services/column.data.provider';\nimport { ColumnItems } from '../../services/dimension.provider';\nimport { Group as StoreGroup } from '../../store/dataSource/data.store';\nimport { BasePlugin } from '../base.plugin';\nimport { DimensionCols } from '../..';\nimport { ColumnGrouping, ColumnRegular } from '../..';\ninterface Group extends StoreGroup {\n level: number;\n}\nexport type ColumnGroupingCollection = Record<DimensionCols, Group[]>;\n\nexport default class GroupingColumnPlugin extends BasePlugin {\n static gatherGroup<T extends ColumnCollection>(res: T, colData: ColumnGrouping, collection: T, level = 0): T {\n // group template\n const group: Group = {\n ...colData,\n level,\n ids: [],\n };\n\n // check columns for update\n for (let k in collection.columns) {\n const key = k as keyof ColumnItems;\n const resultItem = res.columns[key];\n const collectionItem = collection.columns[key];\n\n // if column data\n if (isArray(resultItem) && isArray(collectionItem)) {\n // fill columns\n resultItem.push(...collectionItem);\n\n // fill grouping\n if (collectionItem.length) {\n res.columnGrouping[key].push({\n ...group,\n ids: map(collectionItem, 'prop'),\n });\n }\n }\n }\n // merge column groupings\n for (let k in collection.columnGrouping) {\n const key = k as DimensionCols;\n const collectionItem = collection.columnGrouping[key];\n res.columnGrouping[key].push(...collectionItem);\n }\n res.maxLevel = Math.max(res.maxLevel, collection.maxLevel);\n res.sort = { ...res.sort, ...collection.sort };\n return res;\n }\n}\n\n/**\n * Check if column is grouping column\n */\nexport function isColGrouping(colData: ColumnGrouping | ColumnRegular): colData is ColumnGrouping {\n return !!(colData as ColumnGrouping).children;\n}\n"]}
1
+ {"version":3,"file":"grouping.col.plugin.js","sourceRoot":"","sources":["../../../src/plugins/groupingColumn/grouping.col.plugin.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,gBAAgB,CAAC;AACrC,OAAO,GAAG,MAAM,YAAY,CAAC;AAI7B,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAQ5C,MAAM,CAAC,OAAO,OAAO,oBAAqB,SAAQ,UAAU;IAC1D,MAAM,CAAC,WAAW,CAA6B,GAAM,EAAE,OAAuB,EAAE,UAAa,EAAE,KAAK,GAAG,CAAC;QACtG,iBAAiB;QACjB,MAAM,KAAK,mCACN,OAAO,KACV,KAAK,EACL,GAAG,EAAE,EAAE,GACR,CAAC;QAEF,2BAA2B;QAC3B,KAAK,IAAI,CAAC,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;YACjC,MAAM,GAAG,GAAG,CAAsB,CAAC;YACnC,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACpC,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAE/C,iBAAiB;YACjB,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;gBACnD,eAAe;gBACf,UAAU,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC;gBAEnC,gBAAgB;gBAChB,IAAI,cAAc,CAAC,MAAM,EAAE,CAAC;oBAC1B,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,iCACvB,KAAK,KACR,GAAG,EAAE,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,IAChC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QACD,yBAAyB;QACzB,KAAK,IAAI,CAAC,IAAI,UAAU,CAAC,cAAc,EAAE,CAAC;YACxC,MAAM,GAAG,GAAG,CAAkB,CAAC;YAC/B,MAAM,cAAc,GAAG,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;YACtD,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC;QAClD,CAAC;QACD,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC3D,GAAG,CAAC,IAAI,mCAAQ,GAAG,CAAC,IAAI,GAAK,UAAU,CAAC,IAAI,CAAE,CAAC;QAC/C,OAAO,GAAG,CAAC;IACb,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,OAAuC;IACnE,OAAO,CAAC,CAAE,OAA0B,CAAC,QAAQ,CAAC;AAChD,CAAC","sourcesContent":["import isArray from 'lodash/isArray';\nimport map from 'lodash/map';\nimport { ColumnCollection } from '../../services/column.data.provider';\nimport { ColumnItems } from '../../services/dimension.provider';\nimport { Group as StoreGroup } from '@store';\nimport { BasePlugin } from '../base.plugin';\nimport { DimensionCols } from '@type';\nimport { ColumnGrouping, ColumnRegular } from '@type';\ninterface Group extends StoreGroup {\n level: number;\n}\nexport type ColumnGroupingCollection = Record<DimensionCols, Group[]>;\n\nexport default class GroupingColumnPlugin extends BasePlugin {\n static gatherGroup<T extends ColumnCollection>(res: T, colData: ColumnGrouping, collection: T, level = 0): T {\n // group template\n const group: Group = {\n ...colData,\n level,\n ids: [],\n };\n\n // check columns for update\n for (let k in collection.columns) {\n const key = k as keyof ColumnItems;\n const resultItem = res.columns[key];\n const collectionItem = collection.columns[key];\n\n // if column data\n if (isArray(resultItem) && isArray(collectionItem)) {\n // fill columns\n resultItem.push(...collectionItem);\n\n // fill grouping\n if (collectionItem.length) {\n res.columnGrouping[key].push({\n ...group,\n ids: map(collectionItem, 'prop'),\n });\n }\n }\n }\n // merge column groupings\n for (let k in collection.columnGrouping) {\n const key = k as DimensionCols;\n const collectionItem = collection.columnGrouping[key];\n res.columnGrouping[key].push(...collectionItem);\n }\n res.maxLevel = Math.max(res.maxLevel, collection.maxLevel);\n res.sort = { ...res.sort, ...collection.sort };\n return res;\n }\n}\n\n/**\n * Check if column is grouping column\n */\nexport function isColGrouping(colData: ColumnGrouping | ColumnRegular): colData is ColumnGrouping {\n return !!(colData as ColumnGrouping).children;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"headerGroupRenderer.js","sourceRoot":"","sources":["../../../src/plugins/groupingColumn/headerGroupRenderer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAS,MAAM,eAAe,CAAC;AAGzC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,8CAA8C,CAAC;AAclF,MAAM,mBAAmB,GAAG,CAAC,CAAQ,EAAW,EAAE;IAChD,MAAM,UAAU,GAAqC;QACnD,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,YAAY;QAC3C,QAAQ,EAAE,CAAC;QAEX,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC;QACzB,KAAK,EAAE;YACL,CAAC,YAAY,CAAC,EAAE,IAAI;SACrB;QACD,KAAK,EAAE;YACL,SAAS,EAAE,cAAc,CAAC,CAAC,KAAK,KAAK;YACrC,KAAK,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,IAAI;SAC9B;QACD,QAAQ,EAAE,CAAC,CAAC,QAAQ;KACrB,CAAC;IACF,OAAO,CACL,EAAC,kBAAkB,IACjB,IAAI,kCACC,CAAC,CAAC,KAAK,KACV,IAAI,EAAE,EAAE,EACR,SAAS,EAAE,CAAC,CAAC,SAAS,EACtB,KAAK,EAAE,CAAC,CAAC,KAAK,KAEhB,KAAK,EAAE,UAAU,EACjB,cAAc,EAAE,CAAC,CAAC,cAAc,GAChC,CACH,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,mBAAmB,CAAC","sourcesContent":["import { h, VNode } from '@stencil/core';\nimport { ResizeEvent, ResizeProps } from '../../services/resizable.directive';\nimport { Group } from '../../store/dataSource/data.store';\nimport { HEADER_CLASS, MIN_COL_SIZE } from '../../utils/consts';\nimport { HeaderCellRenderer } from '../../components/header/header-cell-renderer';\nimport { DimensionCols } from '../../components';\nimport { CellProps, Providers } from '../../types/interfaces';\n\ntype Props = {\n start: number;\n end: number;\n group: Group;\n providers: Providers<DimensionCols | 'rowHeaders'>;\n additionalData: any;\n canResize?: boolean;\n onResize?(e: ResizeEvent): void;\n} & Partial<Pick<ResizeProps, 'active'>>;\n\nconst GroupHeaderRenderer = (p: Props): VNode[] => {\n const groupProps: CellProps & Partial<ResizeProps> = {\n canResize: p.canResize,\n minWidth: p.group.ids.length * MIN_COL_SIZE,\n maxWidth: 0,\n\n active: p.active || ['r'],\n class: {\n [HEADER_CLASS]: true,\n },\n style: {\n transform: `translateX(${p.start}px)`,\n width: `${p.end - p.start}px`,\n },\n onResize: p.onResize,\n };\n return (\n <HeaderCellRenderer\n data={{\n ...p.group,\n prop: '',\n providers: p.providers,\n index: p.start,\n }}\n props={groupProps}\n additionalData={p.additionalData}\n />\n );\n};\n\nexport default GroupHeaderRenderer;\n"]}
1
+ {"version":3,"file":"headerGroupRenderer.js","sourceRoot":"","sources":["../../../src/plugins/groupingColumn/headerGroupRenderer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAS,MAAM,eAAe,CAAC;AAIzC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,8CAA8C,CAAC;AAalF,MAAM,mBAAmB,GAAG,CAAC,CAAQ,EAAW,EAAE;IAChD,MAAM,UAAU,GAAqC;QACnD,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,YAAY;QAC3C,QAAQ,EAAE,CAAC;QAEX,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC;QACzB,KAAK,EAAE;YACL,CAAC,YAAY,CAAC,EAAE,IAAI;SACrB;QACD,KAAK,EAAE;YACL,SAAS,EAAE,cAAc,CAAC,CAAC,KAAK,KAAK;YACrC,KAAK,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,IAAI;SAC9B;QACD,QAAQ,EAAE,CAAC,CAAC,QAAQ;KACrB,CAAC;IACF,OAAO,CACL,EAAC,kBAAkB,IACjB,IAAI,kCACC,CAAC,CAAC,KAAK,KACV,IAAI,EAAE,EAAE,EACR,SAAS,EAAE,CAAC,CAAC,SAAS,EACtB,KAAK,EAAE,CAAC,CAAC,KAAK,KAEhB,KAAK,EAAE,UAAU,EACjB,cAAc,EAAE,CAAC,CAAC,cAAc,GAChC,CACH,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,mBAAmB,CAAC","sourcesContent":["import { h, VNode } from '@stencil/core';\nimport { Group } from '@store';\nimport { CellProps, Providers } from '@type';\nimport { ResizeEvent, ResizeProps } from '../../services/resizable.directive';\nimport { HEADER_CLASS, MIN_COL_SIZE } from '../../utils/consts';\nimport { HeaderCellRenderer } from '../../components/header/header-cell-renderer';\nimport { DimensionCols } from '../../components';\n\ntype Props = {\n start: number;\n end: number;\n group: Group;\n providers: Providers<DimensionCols | 'rowHeaders'>;\n additionalData: any;\n canResize?: boolean;\n onResize?(e: ResizeEvent): void;\n} & Partial<Pick<ResizeProps, 'active'>>;\n\nconst GroupHeaderRenderer = (p: Props): VNode[] => {\n const groupProps: CellProps & Partial<ResizeProps> = {\n canResize: p.canResize,\n minWidth: p.group.ids.length * MIN_COL_SIZE,\n maxWidth: 0,\n\n active: p.active || ['r'],\n class: {\n [HEADER_CLASS]: true,\n },\n style: {\n transform: `translateX(${p.start}px)`,\n width: `${p.end - p.start}px`,\n },\n onResize: p.onResize,\n };\n return (\n <HeaderCellRenderer\n data={{\n ...p.group,\n prop: '',\n providers: p.providers,\n index: p.start,\n }}\n props={groupProps}\n additionalData={p.additionalData}\n />\n );\n};\n\nexport default GroupHeaderRenderer;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"grouping.row.expand.service.js","sourceRoot":"","sources":["../../../src/plugins/groupingRow/grouping.row.expand.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { DataType } from '../..';\nimport { PSEUDO_GROUP_ITEM_ID, PSEUDO_GROUP_ITEM_VALUE, GROUP_EXPANDED, GROUP_DEPTH } from './grouping.const';\nimport { isGrouping, getParsedGroup, isSameGroup } from './grouping.service';\n\n// provide collapse data\nexport function doCollapse(pIndex: number, source: DataType[]) {\n const model = source[pIndex];\n const collapseValue = model[PSEUDO_GROUP_ITEM_VALUE];\n const trimmed: Record<number, boolean> = {};\n let i = pIndex + 1;\n const total = source.length;\n while (i < total) {\n const currentModel = source[i];\n if (isGrouping(currentModel)) {\n const currentValue = currentModel[PSEUDO_GROUP_ITEM_VALUE];\n if (!currentValue.length || !currentValue.startsWith(collapseValue + ',')) {\n break;\n }\n currentModel[GROUP_EXPANDED] = false;\n }\n trimmed[i++] = true;\n }\n model[GROUP_EXPANDED] = false;\n return { trimmed };\n}\n\n/**\n *\n * @param pIndex - physical index\n * @param vIndex - virtual index, need to update item collection\n * @param source - data source\n * @param rowItemsIndexes - rgRow indexes\n */\nexport function doExpand(vIndex: number, source: DataType[], rowItemsIndexes: number[]) {\n const physicalIndex = rowItemsIndexes[vIndex];\n const model = source[physicalIndex];\n const currentGroup = getParsedGroup(model[PSEUDO_GROUP_ITEM_ID]);\n const trimmed: Record<number, boolean> = {};\n\n // no group found\n if (!currentGroup) {\n return { trimmed };\n }\n\n const groupItems: number[] = [];\n model[GROUP_EXPANDED] = true;\n let i = physicalIndex + 1;\n const total = source.length;\n let groupLevelOnly = 0;\n\n // go through all rows\n while (i < total) {\n const currentModel = source[i];\n const isGroup = isGrouping(currentModel);\n // group found\n if (isGroup) {\n if (!isSameGroup(currentGroup, model, currentModel)) {\n break;\n } else if (!groupLevelOnly) {\n // if get group first it's group only level\n groupLevelOnly = currentModel[GROUP_DEPTH];\n }\n }\n // level 0 or same depth\n if (!groupLevelOnly || (isGroup && groupLevelOnly === currentModel[GROUP_DEPTH])) {\n trimmed[i] = false;\n groupItems.push(i);\n }\n i++;\n }\n const result: {\n trimmed: Record<number, boolean>;\n items?: number[];\n } = {\n trimmed,\n };\n if (groupItems.length) {\n const items = [...rowItemsIndexes];\n items.splice(vIndex + 1, 0, ...groupItems);\n result.items = items;\n }\n return result;\n}\n"]}
1
+ {"version":3,"file":"grouping.row.expand.service.js","sourceRoot":"","sources":["../../../src/plugins/groupingRow/grouping.row.expand.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { DataType } from '@type';\nimport { PSEUDO_GROUP_ITEM_ID, PSEUDO_GROUP_ITEM_VALUE, GROUP_EXPANDED, GROUP_DEPTH } from './grouping.const';\nimport { isGrouping, getParsedGroup, isSameGroup } from './grouping.service';\n\n// provide collapse data\nexport function doCollapse(pIndex: number, source: DataType[]) {\n const model = source[pIndex];\n const collapseValue = model[PSEUDO_GROUP_ITEM_VALUE];\n const trimmed: Record<number, boolean> = {};\n let i = pIndex + 1;\n const total = source.length;\n while (i < total) {\n const currentModel = source[i];\n if (isGrouping(currentModel)) {\n const currentValue = currentModel[PSEUDO_GROUP_ITEM_VALUE];\n if (!currentValue.length || !currentValue.startsWith(collapseValue + ',')) {\n break;\n }\n currentModel[GROUP_EXPANDED] = false;\n }\n trimmed[i++] = true;\n }\n model[GROUP_EXPANDED] = false;\n return { trimmed };\n}\n\n/**\n *\n * @param pIndex - physical index\n * @param vIndex - virtual index, need to update item collection\n * @param source - data source\n * @param rowItemsIndexes - rgRow indexes\n */\nexport function doExpand(vIndex: number, source: DataType[], rowItemsIndexes: number[]) {\n const physicalIndex = rowItemsIndexes[vIndex];\n const model = source[physicalIndex];\n const currentGroup = getParsedGroup(model[PSEUDO_GROUP_ITEM_ID]);\n const trimmed: Record<number, boolean> = {};\n\n // no group found\n if (!currentGroup) {\n return { trimmed };\n }\n\n const groupItems: number[] = [];\n model[GROUP_EXPANDED] = true;\n let i = physicalIndex + 1;\n const total = source.length;\n let groupLevelOnly = 0;\n\n // go through all rows\n while (i < total) {\n const currentModel = source[i];\n const isGroup = isGrouping(currentModel);\n // group found\n if (isGroup) {\n if (!isSameGroup(currentGroup, model, currentModel)) {\n break;\n } else if (!groupLevelOnly) {\n // if get group first it's group only level\n groupLevelOnly = currentModel[GROUP_DEPTH];\n }\n }\n // level 0 or same depth\n if (!groupLevelOnly || (isGroup && groupLevelOnly === currentModel[GROUP_DEPTH])) {\n trimmed[i] = false;\n groupItems.push(i);\n }\n i++;\n }\n const result: {\n trimmed: Record<number, boolean>;\n items?: number[];\n } = {\n trimmed,\n };\n if (groupItems.length) {\n const items = [...rowItemsIndexes];\n items.splice(vIndex + 1, 0, ...groupItems);\n result.items = items;\n }\n return result;\n}\n"]}
@@ -1,8 +1,7 @@
1
1
  /*!
2
2
  * Built by Revolist OU ❤️
3
3
  */
4
- import { getPhysical, setItems } from "../../store/dataSource/data.store";
5
- import { columnTypes } from "../../store/storeTypes";
4
+ import { getPhysical, setItems, columnTypes } from "../../store/index";
6
5
  import { BasePlugin } from "../base.plugin";
7
6
  import { FILTER_TRIMMED_TYPE } from "../filter/filter.plugin";
8
7
  import { GROUPING_ROW_TYPE, GROUP_EXPANDED, GROUP_EXPAND_EVENT, PSEUDO_GROUP_COLUMN, PSEUDO_GROUP_ITEM_VALUE, } from "./grouping.const";
@@ -1 +1 @@
1
- {"version":3,"file":"grouping.row.plugin.js","sourceRoot":"","sources":["../../../src/plugins/groupingRow/grouping.row.plugin.ts"],"names":[],"mappings":"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","sourcesContent":["import { ColumnCollection } from '../../services/column.data.provider';\nimport { getPhysical, setItems } from '../../store/dataSource/data.store';\nimport { columnTypes } from '../../store/storeTypes';\nimport { BasePlugin } from '../base.plugin';\nimport { FILTER_TRIMMED_TYPE } from '../filter/filter.plugin';\nimport { TrimmedEntity } from '../../store/dataSource/trimmed.plugin';\nimport {\n GROUPING_ROW_TYPE,\n GROUP_EXPANDED,\n GROUP_EXPAND_EVENT,\n PSEUDO_GROUP_COLUMN,\n PSEUDO_GROUP_ITEM_VALUE,\n} from './grouping.const';\nimport { doExpand, doCollapse } from './grouping.row.expand.service';\nimport {\n BeforeSourceSetEvent,\n GroupingOptions,\n OnExpandEvent,\n SourceGather,\n} from './grouping.row.types';\nimport {\n ExpandedOptions,\n gatherGrouping,\n isGrouping,\n isGroupingColumn,\n} from './grouping.service';\nimport {\n processDoubleConversionTrimmed,\n TRIMMED_GROUPING,\n} from './grouping.trimmed.service';\nimport { BeforeSaveDataDetails } from '../..';\nimport { ColumnRegular } from '../..';\nimport { PluginProviders } from '../../';\n\nexport default class GroupingRowPlugin extends BasePlugin {\n private options: GroupingOptions | undefined;\n\n get hasProps() {\n return this.options?.props && this.options?.props?.length;\n }\n\n get store() {\n return this.providers.data.stores[GROUPING_ROW_TYPE].store;\n }\n\n // proxy for items get\n get rowItems() {\n return this.store.get('items');\n }\n\n get trimmed() {\n return this.store.get('trimmed');\n }\n\n constructor(\n protected revogrid: HTMLRevoGridElement,\n protected providers: PluginProviders,\n ) {\n super(revogrid, providers);\n }\n\n // befoce cell focus\n private onFocus(e: CustomEvent<BeforeSaveDataDetails>) {\n if (isGrouping(e.detail.model)) {\n e.preventDefault();\n }\n }\n\n // expand event triggered\n private onExpand({ virtualIndex }: OnExpandEvent) {\n const { source } = this.getSource();\n let newTrimmed = this.trimmed[TRIMMED_GROUPING];\n\n let i = getPhysical(this.store, virtualIndex);\n const model = source[i];\n const prevExpanded = model[GROUP_EXPANDED];\n if (!prevExpanded) {\n const { trimmed, items } = doExpand(virtualIndex, source, this.rowItems);\n newTrimmed = { ...newTrimmed, ...trimmed };\n if (items) {\n setItems(this.store, items);\n }\n } else {\n const { trimmed } = doCollapse(i, source);\n newTrimmed = { ...newTrimmed, ...trimmed };\n this.revogrid.clearFocus();\n }\n\n this.store.set('source', source);\n this.revogrid.addTrimmed(newTrimmed, TRIMMED_GROUPING);\n }\n\n // get source based on proxy item collection to preserve rgRow order\n private getSource(withoutGrouping = false) {\n const source = this.store.get('source');\n const items = this.store.get('proxyItems');\n let index = 0;\n // order important here, expected parent is first, then others\n return items.reduce(\n (result: SourceGather, i) => {\n const model = source[i];\n if (!withoutGrouping) {\n result.source.push(model);\n return result;\n }\n\n // grouping filter\n if (!isGrouping(model)) {\n result.source.push(model);\n result.oldNewIndexes[i] = index;\n index++;\n } else {\n if (model[GROUP_EXPANDED]) {\n result.prevExpanded[model[PSEUDO_GROUP_ITEM_VALUE]] = true;\n }\n }\n return result;\n },\n {\n source: [],\n prevExpanded: {},\n oldNewIndexes: {},\n },\n );\n }\n\n private setColumnGrouping(cols?: ColumnRegular[]) {\n // if 0 column as holder\n if (cols?.length) {\n cols[0][PSEUDO_GROUP_COLUMN] = true;\n return true;\n }\n return false;\n }\n\n private setColumns({ columns }: ColumnCollection) {\n for (let type of columnTypes) {\n if (this.setColumnGrouping(columns[type])) {\n break;\n }\n }\n }\n\n // evaluate drag between groups\n private onDrag(e: CustomEvent<{ from: number; to: number }>) {\n const { from, to } = e.detail;\n const isDown = to - from >= 0;\n const { source } = this.getSource();\n const items = this.rowItems;\n let i = isDown ? from : to;\n const end = isDown ? to : from;\n for (; i < end; i++) {\n const model = source[items[i]];\n const isGroup = isGrouping(model);\n if (isGroup) {\n e.preventDefault();\n return;\n }\n }\n }\n\n private beforeTrimmedApply(trimmed: Record<number, boolean>, type: string) {\n /** Before filter apply remove grouping filtering */\n if (type === FILTER_TRIMMED_TYPE) {\n const source = this.store.get('source');\n for (let index in trimmed) {\n if (trimmed[index] && isGrouping(source[index])) {\n trimmed[index] = false;\n }\n }\n }\n }\n\n // subscribe to grid events to process them accordingly\n private subscribe() {\n /** if grouping present and new data source arrived */\n this.addEventListener(\n 'beforesourceset',\n ({ detail }: CustomEvent<BeforeSourceSetEvent>) => this.onDataSet(detail),\n );\n this.addEventListener(\n 'beforecolumnsset',\n ({ detail }: CustomEvent<ColumnCollection>) => this.setColumns(detail),\n );\n\n /**\n * filter applied need to clear grouping and apply again\n * based on new results can be new grouping\n */\n this.addEventListener(\n 'beforetrimmed',\n ({ detail: { trimmed, trimmedType } }) =>\n this.beforeTrimmedApply(trimmed, trimmedType),\n );\n /**\n * sorting applied need to clear grouping and apply again\n * based on new results whole grouping order will changed\n */\n this.addEventListener('aftersortingapply', () =>\n this.doSourceUpdate({ ...this.options }),\n );\n\n /**\n * Apply logic for focus inside of grouping\n * We can't focus on grouping rows, navigation only inside of groups for now\n */\n this.addEventListener('beforecellfocus', e => this.onFocus(e));\n /**\n * Prevent rgRow drag outside the group\n */\n this.addEventListener('roworderchanged', e => this.onDrag(e));\n\n /**\n * When grouping expand icon was clicked\n */\n this.addEventListener(\n GROUP_EXPAND_EVENT,\n ({ detail }: CustomEvent<OnExpandEvent>) => this.onExpand(detail),\n );\n }\n\n /**\n * Starts global source update with group clearing and applying new one\n * Initiated when need to reapply grouping\n */\n private doSourceUpdate(options?: ExpandedOptions) {\n if (!this.hasProps) {\n return;\n }\n /**\n * Get source without grouping\n * @param newOldIndexMap - provides us mapping with new indexes vs old indexes, we would use it for trimmed mapping\n */\n const { source, prevExpanded, oldNewIndexes } = this.getSource(true);\n /**\n * Group again\n * @param oldNewIndexMap - provides us mapping with new indexes vs old indexes\n */\n const {\n sourceWithGroups,\n depth,\n trimmed,\n oldNewIndexMap,\n childrenByGroup,\n } = gatherGrouping(source, this.options?.props || [], {\n prevExpanded,\n ...options,\n });\n\n // setup source\n this.providers.data.setData(\n sourceWithGroups,\n GROUPING_ROW_TYPE,\n this.revogrid.disableVirtualY,\n { depth, customRenderer: options?.groupLabelTemplate },\n true,\n );\n this.updateTrimmed(trimmed, childrenByGroup, oldNewIndexes, oldNewIndexMap);\n }\n\n /**\n * Apply grouping on data set\n * Clear grouping from source\n * If source came from other plugin\n */\n private onDataSet(data: BeforeSourceSetEvent) {\n if (!this.hasProps || !data?.source || !data.source.length) {\n return;\n }\n const source = data.source.filter(s => !isGrouping(s));\n const expanded = this.revogrid.grouping || {};\n const {\n sourceWithGroups,\n depth,\n trimmed,\n oldNewIndexMap,\n childrenByGroup,\n } = gatherGrouping(source, this.options?.props || [], {\n ...(expanded || {}),\n });\n data.source = sourceWithGroups;\n this.providers.data.setGrouping({ depth });\n this.updateTrimmed(trimmed, childrenByGroup, oldNewIndexMap);\n }\n\n // apply grouping\n setGrouping(options: GroupingOptions) {\n // unsubscribe from all events when group applied\n this.clearSubscriptions();\n this.options = options;\n // clear props, no grouping exists\n if (!options.props || !Object.keys(options.props).length) {\n this.clearGrouping();\n return;\n }\n // props exist and source inited\n const { source } = this.getSource();\n if (source.length) {\n this.doSourceUpdate({ ...options });\n }\n // props exist and columns inited\n for (let t of columnTypes) {\n if (this.setColumnGrouping(this.providers.column.getColumns(t))) {\n this.providers.column.refreshByType(t);\n break;\n }\n }\n\n // if has any grouping subscribe to events again\n this.subscribe();\n }\n\n // clear grouping\n clearGrouping() {\n // clear columns\n columnTypes.forEach(t => {\n const cols = this.providers.column.getColumns(t);\n let deleted = false;\n cols.forEach(c => {\n if (isGroupingColumn(c)) {\n delete c[PSEUDO_GROUP_COLUMN];\n deleted = true;\n }\n });\n // if column store had grouping clear and refresh\n if (deleted) {\n this.providers.column.refreshByType(t);\n }\n });\n // clear rows\n const { source, oldNewIndexes } = this.getSource(true);\n this.providers.data.setData(\n source,\n GROUPING_ROW_TYPE,\n this.revogrid.disableVirtualY,\n undefined,\n true,\n );\n this.updateTrimmed(undefined, undefined, oldNewIndexes);\n }\n\n private updateTrimmed(\n trimmedGroup: TrimmedEntity = {},\n _childrenByGroup: Record<number, number[]> = {},\n firstLevelMap: Record<number, number>,\n secondLevelMap?: Record<number, number>,\n ) {\n // map previously trimmed data\n const trimemedOptionsToUpgrade = processDoubleConversionTrimmed(\n this.trimmed,\n firstLevelMap,\n secondLevelMap,\n );\n for (let type in trimemedOptionsToUpgrade) {\n this.revogrid.addTrimmed(trimemedOptionsToUpgrade[type], type);\n }\n\n // const emptyGroups = this.filterOutEmptyGroups(trimemedOptionsToUpgrade, childrenByGroup);\n\n // setup trimmed data for grouping\n this.revogrid.addTrimmed({ ...trimmedGroup }, TRIMMED_GROUPING);\n }\n}\n"]}
1
+ {"version":3,"file":"grouping.row.plugin.js","sourceRoot":"","sources":["../../../src/plugins/groupingRow/grouping.row.plugin.ts"],"names":[],"mappings":"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","sourcesContent":["import { ColumnCollection } from '../../services/column.data.provider';\nimport { getPhysical, setItems, columnTypes, TrimmedEntity } from '@store';\nimport { BasePlugin } from '../base.plugin';\nimport { FILTER_TRIMMED_TYPE } from '../filter/filter.plugin';\nimport {\n GROUPING_ROW_TYPE,\n GROUP_EXPANDED,\n GROUP_EXPAND_EVENT,\n PSEUDO_GROUP_COLUMN,\n PSEUDO_GROUP_ITEM_VALUE,\n} from './grouping.const';\nimport { doExpand, doCollapse } from './grouping.row.expand.service';\nimport {\n BeforeSourceSetEvent,\n GroupingOptions,\n OnExpandEvent,\n SourceGather,\n} from './grouping.row.types';\nimport {\n ExpandedOptions,\n gatherGrouping,\n isGrouping,\n isGroupingColumn,\n} from './grouping.service';\nimport {\n processDoubleConversionTrimmed,\n TRIMMED_GROUPING,\n} from './grouping.trimmed.service';\nimport { BeforeSaveDataDetails, ColumnRegular, PluginProviders } from '@type';\n\nexport default class GroupingRowPlugin extends BasePlugin {\n private options: GroupingOptions | undefined;\n\n get hasProps() {\n return this.options?.props && this.options?.props?.length;\n }\n\n get store() {\n return this.providers.data.stores[GROUPING_ROW_TYPE].store;\n }\n\n // proxy for items get\n get rowItems() {\n return this.store.get('items');\n }\n\n get trimmed() {\n return this.store.get('trimmed');\n }\n\n constructor(\n protected revogrid: HTMLRevoGridElement,\n protected providers: PluginProviders,\n ) {\n super(revogrid, providers);\n }\n\n // befoce cell focus\n private onFocus(e: CustomEvent<BeforeSaveDataDetails>) {\n if (isGrouping(e.detail.model)) {\n e.preventDefault();\n }\n }\n\n // expand event triggered\n private onExpand({ virtualIndex }: OnExpandEvent) {\n const { source } = this.getSource();\n let newTrimmed = this.trimmed[TRIMMED_GROUPING];\n\n let i = getPhysical(this.store, virtualIndex);\n const model = source[i];\n const prevExpanded = model[GROUP_EXPANDED];\n if (!prevExpanded) {\n const { trimmed, items } = doExpand(virtualIndex, source, this.rowItems);\n newTrimmed = { ...newTrimmed, ...trimmed };\n if (items) {\n setItems(this.store, items);\n }\n } else {\n const { trimmed } = doCollapse(i, source);\n newTrimmed = { ...newTrimmed, ...trimmed };\n this.revogrid.clearFocus();\n }\n\n this.store.set('source', source);\n this.revogrid.addTrimmed(newTrimmed, TRIMMED_GROUPING);\n }\n\n // get source based on proxy item collection to preserve rgRow order\n private getSource(withoutGrouping = false) {\n const source = this.store.get('source');\n const items = this.store.get('proxyItems');\n let index = 0;\n // order important here, expected parent is first, then others\n return items.reduce(\n (result: SourceGather, i) => {\n const model = source[i];\n if (!withoutGrouping) {\n result.source.push(model);\n return result;\n }\n\n // grouping filter\n if (!isGrouping(model)) {\n result.source.push(model);\n result.oldNewIndexes[i] = index;\n index++;\n } else {\n if (model[GROUP_EXPANDED]) {\n result.prevExpanded[model[PSEUDO_GROUP_ITEM_VALUE]] = true;\n }\n }\n return result;\n },\n {\n source: [],\n prevExpanded: {},\n oldNewIndexes: {},\n },\n );\n }\n\n private setColumnGrouping(cols?: ColumnRegular[]) {\n // if 0 column as holder\n if (cols?.length) {\n cols[0][PSEUDO_GROUP_COLUMN] = true;\n return true;\n }\n return false;\n }\n\n private setColumns({ columns }: ColumnCollection) {\n for (let type of columnTypes) {\n if (this.setColumnGrouping(columns[type])) {\n break;\n }\n }\n }\n\n // evaluate drag between groups\n private onDrag(e: CustomEvent<{ from: number; to: number }>) {\n const { from, to } = e.detail;\n const isDown = to - from >= 0;\n const { source } = this.getSource();\n const items = this.rowItems;\n let i = isDown ? from : to;\n const end = isDown ? to : from;\n for (; i < end; i++) {\n const model = source[items[i]];\n const isGroup = isGrouping(model);\n if (isGroup) {\n e.preventDefault();\n return;\n }\n }\n }\n\n private beforeTrimmedApply(trimmed: Record<number, boolean>, type: string) {\n /** Before filter apply remove grouping filtering */\n if (type === FILTER_TRIMMED_TYPE) {\n const source = this.store.get('source');\n for (let index in trimmed) {\n if (trimmed[index] && isGrouping(source[index])) {\n trimmed[index] = false;\n }\n }\n }\n }\n\n // subscribe to grid events to process them accordingly\n private subscribe() {\n /** if grouping present and new data source arrived */\n this.addEventListener(\n 'beforesourceset',\n ({ detail }: CustomEvent<BeforeSourceSetEvent>) => this.onDataSet(detail),\n );\n this.addEventListener(\n 'beforecolumnsset',\n ({ detail }: CustomEvent<ColumnCollection>) => this.setColumns(detail),\n );\n\n /**\n * filter applied need to clear grouping and apply again\n * based on new results can be new grouping\n */\n this.addEventListener(\n 'beforetrimmed',\n ({ detail: { trimmed, trimmedType } }) =>\n this.beforeTrimmedApply(trimmed, trimmedType),\n );\n /**\n * sorting applied need to clear grouping and apply again\n * based on new results whole grouping order will changed\n */\n this.addEventListener('aftersortingapply', () =>\n this.doSourceUpdate({ ...this.options }),\n );\n\n /**\n * Apply logic for focus inside of grouping\n * We can't focus on grouping rows, navigation only inside of groups for now\n */\n this.addEventListener('beforecellfocus', e => this.onFocus(e));\n /**\n * Prevent rgRow drag outside the group\n */\n this.addEventListener('roworderchanged', e => this.onDrag(e));\n\n /**\n * When grouping expand icon was clicked\n */\n this.addEventListener(\n GROUP_EXPAND_EVENT,\n ({ detail }: CustomEvent<OnExpandEvent>) => this.onExpand(detail),\n );\n }\n\n /**\n * Starts global source update with group clearing and applying new one\n * Initiated when need to reapply grouping\n */\n private doSourceUpdate(options?: ExpandedOptions) {\n if (!this.hasProps) {\n return;\n }\n /**\n * Get source without grouping\n * @param newOldIndexMap - provides us mapping with new indexes vs old indexes, we would use it for trimmed mapping\n */\n const { source, prevExpanded, oldNewIndexes } = this.getSource(true);\n /**\n * Group again\n * @param oldNewIndexMap - provides us mapping with new indexes vs old indexes\n */\n const {\n sourceWithGroups,\n depth,\n trimmed,\n oldNewIndexMap,\n childrenByGroup,\n } = gatherGrouping(source, this.options?.props || [], {\n prevExpanded,\n ...options,\n });\n\n // setup source\n this.providers.data.setData(\n sourceWithGroups,\n GROUPING_ROW_TYPE,\n this.revogrid.disableVirtualY,\n { depth, customRenderer: options?.groupLabelTemplate },\n true,\n );\n this.updateTrimmed(trimmed, childrenByGroup, oldNewIndexes, oldNewIndexMap);\n }\n\n /**\n * Apply grouping on data set\n * Clear grouping from source\n * If source came from other plugin\n */\n private onDataSet(data: BeforeSourceSetEvent) {\n if (!this.hasProps || !data?.source || !data.source.length) {\n return;\n }\n const source = data.source.filter(s => !isGrouping(s));\n const expanded = this.revogrid.grouping || {};\n const {\n sourceWithGroups,\n depth,\n trimmed,\n oldNewIndexMap,\n childrenByGroup,\n } = gatherGrouping(source, this.options?.props || [], {\n ...(expanded || {}),\n });\n data.source = sourceWithGroups;\n this.providers.data.setGrouping({ depth });\n this.updateTrimmed(trimmed, childrenByGroup, oldNewIndexMap);\n }\n\n // apply grouping\n setGrouping(options: GroupingOptions) {\n // unsubscribe from all events when group applied\n this.clearSubscriptions();\n this.options = options;\n // clear props, no grouping exists\n if (!options.props || !Object.keys(options.props).length) {\n this.clearGrouping();\n return;\n }\n // props exist and source inited\n const { source } = this.getSource();\n if (source.length) {\n this.doSourceUpdate({ ...options });\n }\n // props exist and columns inited\n for (let t of columnTypes) {\n if (this.setColumnGrouping(this.providers.column.getColumns(t))) {\n this.providers.column.refreshByType(t);\n break;\n }\n }\n\n // if has any grouping subscribe to events again\n this.subscribe();\n }\n\n // clear grouping\n clearGrouping() {\n // clear columns\n columnTypes.forEach(t => {\n const cols = this.providers.column.getColumns(t);\n let deleted = false;\n cols.forEach(c => {\n if (isGroupingColumn(c)) {\n delete c[PSEUDO_GROUP_COLUMN];\n deleted = true;\n }\n });\n // if column store had grouping clear and refresh\n if (deleted) {\n this.providers.column.refreshByType(t);\n }\n });\n // clear rows\n const { source, oldNewIndexes } = this.getSource(true);\n this.providers.data.setData(\n source,\n GROUPING_ROW_TYPE,\n this.revogrid.disableVirtualY,\n undefined,\n true,\n );\n this.updateTrimmed(undefined, undefined, oldNewIndexes);\n }\n\n private updateTrimmed(\n trimmedGroup: TrimmedEntity = {},\n _childrenByGroup: Record<number, number[]> = {},\n firstLevelMap: Record<number, number>,\n secondLevelMap?: Record<number, number>,\n ) {\n // map previously trimmed data\n const trimemedOptionsToUpgrade = processDoubleConversionTrimmed(\n this.trimmed,\n firstLevelMap,\n secondLevelMap,\n );\n for (let type in trimemedOptionsToUpgrade) {\n this.revogrid.addTrimmed(trimemedOptionsToUpgrade[type], type);\n }\n\n // const emptyGroups = this.filterOutEmptyGroups(trimemedOptionsToUpgrade, childrenByGroup);\n\n // setup trimmed data for grouping\n this.revogrid.addTrimmed({ ...trimmedGroup }, TRIMMED_GROUPING);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"grouping.row.renderer.js","sourceRoot":"","sources":["../../../src/plugins/groupingRow/grouping.row.renderer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAClC,OAAO,WAAyB,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAWxH,SAAS,WAAW,CAAC,CAAa,EAAE,KAAe,EAAE,YAAoB;IACvE,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,kBAAkB,EAAE;QAChD,MAAM,EAAE;YACN,KAAK;YACL,YAAY;SACb;QACD,UAAU,EAAE,IAAI;QAChB,OAAO,EAAE,IAAI;KACd,CAAC,CAAC;IACH,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,mBAAmB,GAAG,CAAC,KAAY,EAAE,EAAE;IAC3C,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,sBAAsB,EAAE,GAAG,KAAK,CAAC;IACtE,MAAM,IAAI,GAAW,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;IACpD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,EAAC,WAAW,oBAAK,KAAK,IAAE,QAAQ,EAAC,aAAa,EAAC,KAAK,EAAE,KAAK,IAAI,CAAC;IACzE,CAAC;IAED,IAAI,sBAAsB,EAAE,CAAC;QAC3B,OAAO,CACL,EAAC,WAAW,oBAAK,KAAK,IAAE,QAAQ,EAAC,aAAa,EAAC,KAAK,EAAE,KAAK;YACzD,WAAK,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,IAChD,sBAAsB,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAC5D,CACM,CACf,CAAC;IACJ,CAAC;IAED,OAAO,CACL,EAAC,WAAW,oBAAK,KAAK,IAAE,QAAQ,EAAC,aAAa,EAAC,KAAK,EAAE,KAAK;QACzD,cAAQ,KAAK,EAAE,EAAE,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC;YACzF,0BAAiB,MAAM,EAAC,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,SAAS,EAAC,OAAO,EAAC,OAAO,EAAC,aAAa;gBACxH,YACE,IAAI,EAAC,cAAc,EACnB,CAAC,EAAC,yRAAyR,GACrR,CACJ,CACC;QACR,IAAI,CACO,CACf,CAAC;AACJ,CAAC,CAAC;AACF,eAAe,mBAAmB,CAAC","sourcesContent":["import { h } from '@stencil/core';\nimport RowRenderer, { RowProps } from '../../components/data/row-renderer';\nimport { GROUP_DEPTH, GROUP_EXPANDED, GROUP_EXPAND_BTN, GROUP_EXPAND_EVENT, PSEUDO_GROUP_ITEM } from './grouping.const';\nimport { GroupLabelTemplateFunc } from './grouping.row.types';\nimport { DataType, PositionItem } from '../../types/interfaces';\n\ninterface GroupRowPros extends RowProps {\n model: DataType;\n hasExpand: boolean;\n groupingCustomRenderer?: GroupLabelTemplateFunc;\n}\ntype Props = GroupRowPros & PositionItem;\n\nfunction expandEvent(e: MouseEvent, model: DataType, virtualIndex: number) {\n const event = new CustomEvent(GROUP_EXPAND_EVENT, {\n detail: {\n model,\n virtualIndex,\n },\n cancelable: true,\n bubbles: true,\n });\n e.target.dispatchEvent(event);\n}\n\nconst GroupingRowRenderer = (props: Props) => {\n const { model, itemIndex, hasExpand, groupingCustomRenderer } = props;\n const name: string = model[PSEUDO_GROUP_ITEM];\n const expanded = model[GROUP_EXPANDED];\n const depth = parseInt(model[GROUP_DEPTH], 10) || 0;\n if (!hasExpand) {\n return <RowRenderer {...props} rowClass=\"groupingRow\" depth={depth} />;\n }\n\n if (groupingCustomRenderer) {\n return (\n <RowRenderer {...props} rowClass=\"groupingRow\" depth={depth}>\n <div onClick={e => expandEvent(e, model, itemIndex)}>\n {groupingCustomRenderer(h, { name, itemIndex, expanded, depth })}\n </div>\n </RowRenderer>\n );\n }\n\n return (\n <RowRenderer {...props} rowClass=\"groupingRow\" depth={depth}>\n <button class={{ [GROUP_EXPAND_BTN]: true }} onClick={e => expandEvent(e, model, itemIndex)}>\n <svg aria-hidden=\"true\" style={{ transform: `rotate(${!expanded ? -90 : 0}deg)` }} focusable=\"false\" viewBox=\"0 0 448 512\">\n <path\n fill=\"currentColor\"\n d=\"M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z\"\n ></path>\n </svg>\n </button>\n {name}\n </RowRenderer>\n );\n};\nexport default GroupingRowRenderer;\n"]}
1
+ {"version":3,"file":"grouping.row.renderer.js","sourceRoot":"","sources":["../../../src/plugins/groupingRow/grouping.row.renderer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAClC,OAAO,WAAyB,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAWxH,SAAS,WAAW,CAAC,CAAa,EAAE,KAAe,EAAE,YAAoB;IACvE,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,kBAAkB,EAAE;QAChD,MAAM,EAAE;YACN,KAAK;YACL,YAAY;SACb;QACD,UAAU,EAAE,IAAI;QAChB,OAAO,EAAE,IAAI;KACd,CAAC,CAAC;IACH,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,mBAAmB,GAAG,CAAC,KAAY,EAAE,EAAE;IAC3C,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,sBAAsB,EAAE,GAAG,KAAK,CAAC;IACtE,MAAM,IAAI,GAAW,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;IACpD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,EAAC,WAAW,oBAAK,KAAK,IAAE,QAAQ,EAAC,aAAa,EAAC,KAAK,EAAE,KAAK,IAAI,CAAC;IACzE,CAAC;IAED,IAAI,sBAAsB,EAAE,CAAC;QAC3B,OAAO,CACL,EAAC,WAAW,oBAAK,KAAK,IAAE,QAAQ,EAAC,aAAa,EAAC,KAAK,EAAE,KAAK;YACzD,WAAK,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,IAChD,sBAAsB,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAC5D,CACM,CACf,CAAC;IACJ,CAAC;IAED,OAAO,CACL,EAAC,WAAW,oBAAK,KAAK,IAAE,QAAQ,EAAC,aAAa,EAAC,KAAK,EAAE,KAAK;QACzD,cAAQ,KAAK,EAAE,EAAE,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC;YACzF,0BAAiB,MAAM,EAAC,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,SAAS,EAAC,OAAO,EAAC,OAAO,EAAC,aAAa;gBACxH,YACE,IAAI,EAAC,cAAc,EACnB,CAAC,EAAC,yRAAyR,GACrR,CACJ,CACC;QACR,IAAI,CACO,CACf,CAAC;AACJ,CAAC,CAAC;AACF,eAAe,mBAAmB,CAAC","sourcesContent":["import { h } from '@stencil/core';\nimport RowRenderer, { RowProps } from '../../components/data/row-renderer';\nimport { GROUP_DEPTH, GROUP_EXPANDED, GROUP_EXPAND_BTN, GROUP_EXPAND_EVENT, PSEUDO_GROUP_ITEM } from './grouping.const';\nimport { GroupLabelTemplateFunc } from './grouping.row.types';\nimport { DataType, PositionItem } from '@type';\n\ninterface GroupRowPros extends RowProps {\n model: DataType;\n hasExpand: boolean;\n groupingCustomRenderer?: GroupLabelTemplateFunc;\n}\ntype Props = GroupRowPros & PositionItem;\n\nfunction expandEvent(e: MouseEvent, model: DataType, virtualIndex: number) {\n const event = new CustomEvent(GROUP_EXPAND_EVENT, {\n detail: {\n model,\n virtualIndex,\n },\n cancelable: true,\n bubbles: true,\n });\n e.target.dispatchEvent(event);\n}\n\nconst GroupingRowRenderer = (props: Props) => {\n const { model, itemIndex, hasExpand, groupingCustomRenderer } = props;\n const name: string = model[PSEUDO_GROUP_ITEM];\n const expanded = model[GROUP_EXPANDED];\n const depth = parseInt(model[GROUP_DEPTH], 10) || 0;\n if (!hasExpand) {\n return <RowRenderer {...props} rowClass=\"groupingRow\" depth={depth} />;\n }\n\n if (groupingCustomRenderer) {\n return (\n <RowRenderer {...props} rowClass=\"groupingRow\" depth={depth}>\n <div onClick={e => expandEvent(e, model, itemIndex)}>\n {groupingCustomRenderer(h, { name, itemIndex, expanded, depth })}\n </div>\n </RowRenderer>\n );\n }\n\n return (\n <RowRenderer {...props} rowClass=\"groupingRow\" depth={depth}>\n <button class={{ [GROUP_EXPAND_BTN]: true }} onClick={e => expandEvent(e, model, itemIndex)}>\n <svg aria-hidden=\"true\" style={{ transform: `rotate(${!expanded ? -90 : 0}deg)` }} focusable=\"false\" viewBox=\"0 0 448 512\">\n <path\n fill=\"currentColor\"\n d=\"M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z\"\n ></path>\n </svg>\n </button>\n {name}\n </RowRenderer>\n );\n};\nexport default GroupingRowRenderer;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"grouping.row.types.js","sourceRoot":"","sources":["../../../src/plugins/groupingRow/grouping.row.types.ts"],"names":[],"mappings":"","sourcesContent":["import { VNode } from '@stencil/core';\nimport { HyperFunc, ColumnProp, DimensionRows, DataType } from '../..';\n\nexport type GroupLabelTemplateFunc = (\n createElement: HyperFunc<VNode>,\n props: { name: string; itemIndex: number; expanded: boolean; depth: number; },\n) => any;\n\nexport type GroupingOptions = {\n // properties array to group\n props?: ColumnProp[];\n /** is expanded by default */\n expandedAll?: boolean;\n // custom group label\n groupLabelTemplate?: GroupLabelTemplateFunc;\n /** todo\n * choose column prop to which expand button will be applied\n * if not defined first column in grid\n */\n // applyToProp?: ColumnProp;\n /**\n * todo\n * choose if render cells in grouping rgRow\n * true by default\n */\n // fullRow?: boolean;\n};\n\nexport type BeforeSourceSetEvent = {\n type: DimensionRows;\n source: DataType[];\n};\n\nexport type OnExpandEvent = {\n model: DataType;\n virtualIndex: number;\n};\n\nexport type SourceGather = {\n source: DataType[];\n prevExpanded: Record<string, boolean>;\n oldNewIndexes?: Record<number, number>;\n};\n"]}
1
+ {"version":3,"file":"grouping.row.types.js","sourceRoot":"","sources":["../../../src/plugins/groupingRow/grouping.row.types.ts"],"names":[],"mappings":"","sourcesContent":["import { VNode } from '@stencil/core';\nimport { HyperFunc, ColumnProp, DimensionRows, DataType } from '@type';\n\nexport type GroupLabelTemplateFunc = (\n createElement: HyperFunc<VNode>,\n props: { name: string; itemIndex: number; expanded: boolean; depth: number; },\n) => any;\n\nexport type GroupingOptions = {\n // properties array to group\n props?: ColumnProp[];\n /** is expanded by default */\n expandedAll?: boolean;\n // custom group label\n groupLabelTemplate?: GroupLabelTemplateFunc;\n /** todo\n * choose column prop to which expand button will be applied\n * if not defined first column in grid\n */\n // applyToProp?: ColumnProp;\n /**\n * todo\n * choose if render cells in grouping rgRow\n * true by default\n */\n // fullRow?: boolean;\n};\n\nexport type BeforeSourceSetEvent = {\n type: DimensionRows;\n source: DataType[];\n};\n\nexport type OnExpandEvent = {\n model: DataType;\n virtualIndex: number;\n};\n\nexport type SourceGather = {\n source: DataType[];\n prevExpanded: Record<string, boolean>;\n oldNewIndexes?: Record<number, number>;\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"grouping.service.js","sourceRoot":"","sources":["../../../src/plugins/groupingRow/grouping.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { DataType, ColumnProp, ColumnRegular } from '../..';\nimport {\n GROUP_DEPTH,\n GROUP_EXPANDED,\n PSEUDO_GROUP_COLUMN,\n PSEUDO_GROUP_ITEM,\n PSEUDO_GROUP_ITEM_ID,\n PSEUDO_GROUP_ITEM_VALUE,\n GROUP_ORIGINAL_INDEX,\n} from './grouping.const';\nimport { GroupLabelTemplateFunc } from './grouping.row.types';\n\nexport type ExpandedOptions = {\n prevExpanded?: Record<string, boolean>;\n expandedAll?: boolean; // skip trim\n\n getGroupValue?(item: DataType, prop: string | number): any;\n groupLabelTemplate?: GroupLabelTemplateFunc;\n};\n\ntype GroupedData = Map<string, GroupedData | DataType[]>;\n\nfunction getGroupValueDefault(item: DataType, prop: string | number) {\n return item[prop] || null;\n}\n\n\n/**\n * Gather data for grouping\n * @param array - flat data array\n * @param groupIds - ids of groups\n * @param expanded - potentially expanded items if present\n */\nexport function gatherGrouping(\n array: DataType[],\n groupIds: ColumnProp[],\n { prevExpanded, expandedAll, getGroupValue = getGroupValueDefault }: ExpandedOptions,\n) {\n const groupedItems: GroupedData = new Map();\n array.forEach((item, originalIndex) => {\n const groupLevelValues = groupIds.map(groupId => getGroupValue(item, groupId));\n const lastLevelValue = groupLevelValues.pop();\n let currentGroupLevel = groupedItems;\n groupLevelValues.forEach(value => {\n if (!currentGroupLevel.has(value)) {\n currentGroupLevel.set(value, new Map());\n }\n currentGroupLevel = currentGroupLevel.get(value) as GroupedData;\n });\n if (!currentGroupLevel.has(lastLevelValue)) {\n currentGroupLevel.set(lastLevelValue, []);\n }\n const lastLevelItems = currentGroupLevel.get(\n lastLevelValue,\n ) as DataType[];\n lastLevelItems.push({\n ...item,\n [GROUP_ORIGINAL_INDEX]: originalIndex,\n });\n });\n\n let itemIndex = -1;\n const groupingDepth = groupIds.length;\n // collapse all groups in the beginning\n const trimmed: Record<number, boolean> = {};\n // index mapping\n const oldNewIndexMap: Record<number, number> = {};\n // check if group header exists\n const pseudoGroupTest: Record<string, number[]> = {};\n const sourceWithGroups: DataType[] = [];\n function flattenGroupMaps(\n groupedValues: GroupedData,\n parentIds: string[],\n isExpanded: boolean,\n ) {\n const depth = parentIds.length;\n groupedValues.forEach((innerGroupedValues, groupId) => {\n const levelIds = [...parentIds, groupId];\n const mergedIds = levelIds.join(',');\n const isGroupExpanded =\n isExpanded && (!!expandedAll || !!prevExpanded?.[mergedIds]);\n sourceWithGroups.push({\n [PSEUDO_GROUP_ITEM]: groupId,\n [GROUP_DEPTH]: depth,\n [PSEUDO_GROUP_ITEM_ID]: JSON.stringify(levelIds),\n [PSEUDO_GROUP_ITEM_VALUE]: mergedIds,\n [GROUP_EXPANDED]: isGroupExpanded,\n });\n itemIndex += 1;\n if (!isGroupExpanded && depth) {\n trimmed[itemIndex] = true;\n }\n if (Array.isArray(innerGroupedValues)) {\n innerGroupedValues.forEach(value => {\n itemIndex += 1;\n if (!isGroupExpanded) {\n trimmed[itemIndex] = true;\n }\n oldNewIndexMap[value[GROUP_ORIGINAL_INDEX]] = itemIndex;\n const pseudoGroupTestIds = levelIds.map((_value, index) =>\n levelIds.slice(0, index + 1).join(','),\n );\n pseudoGroupTestIds.forEach(pseudoGroupTestId => {\n if (!pseudoGroupTest[pseudoGroupTestId]) {\n pseudoGroupTest[pseudoGroupTestId] = [];\n }\n pseudoGroupTest[pseudoGroupTestId].push(itemIndex);\n });\n });\n sourceWithGroups.push(...innerGroupedValues);\n } else {\n flattenGroupMaps(innerGroupedValues, levelIds, isGroupExpanded);\n }\n });\n }\n flattenGroupMaps(groupedItems, [], true);\n\n return {\n sourceWithGroups, // updates source mirror\n depth: groupingDepth, // largest depth for grouping\n trimmed, // used for expand/collapse grouping values\n oldNewIndexMap, // used for mapping old values to new\n childrenByGroup: pseudoGroupTest, // used to get child items in group\n };\n}\n\nexport function getGroupingName(rgRow?: DataType) {\n return rgRow && rgRow[PSEUDO_GROUP_ITEM];\n}\n\nexport function isGrouping(rgRow?: DataType) {\n return rgRow && typeof rgRow[PSEUDO_GROUP_ITEM] !== 'undefined';\n}\n\nexport function isGroupingColumn(column?: ColumnRegular) {\n return column && typeof column[PSEUDO_GROUP_COLUMN] !== 'undefined';\n}\n\nexport function measureEqualDepth<T>(groupA: T[], groupB: T[]) {\n const ln = groupA.length;\n let i = 0;\n for (; i < ln; i++) {\n if (groupA[i] !== groupB[i]) {\n return i;\n }\n }\n return i;\n}\n\nexport function getParsedGroup(id: string): any[] {\n const parseGroup = JSON.parse(id);\n // extra precaution and type safe guard\n if (!Array.isArray(parseGroup)) {\n return null;\n }\n return parseGroup;\n}\n\n// check if items is child of current clicked group\nexport function isSameGroup(\n currentGroup: any[],\n currentModel: DataType,\n nextModel: DataType,\n) {\n const nextGroup = getParsedGroup(nextModel[PSEUDO_GROUP_ITEM_ID]);\n if (!nextGroup) {\n return false;\n }\n\n const depth = measureEqualDepth(currentGroup, nextGroup);\n return currentModel[GROUP_DEPTH] < depth;\n}\n"]}
1
+ {"version":3,"file":"grouping.service.js","sourceRoot":"","sources":["../../../src/plugins/groupingRow/grouping.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { DataType, ColumnProp, ColumnRegular } from '@type';\nimport {\n GROUP_DEPTH,\n GROUP_EXPANDED,\n PSEUDO_GROUP_COLUMN,\n PSEUDO_GROUP_ITEM,\n PSEUDO_GROUP_ITEM_ID,\n PSEUDO_GROUP_ITEM_VALUE,\n GROUP_ORIGINAL_INDEX,\n} from './grouping.const';\nimport { GroupLabelTemplateFunc } from './grouping.row.types';\n\nexport type ExpandedOptions = {\n prevExpanded?: Record<string, boolean>;\n expandedAll?: boolean; // skip trim\n\n getGroupValue?(item: DataType, prop: string | number): any;\n groupLabelTemplate?: GroupLabelTemplateFunc;\n};\n\ntype GroupedData = Map<string, GroupedData | DataType[]>;\n\nfunction getGroupValueDefault(item: DataType, prop: string | number) {\n return item[prop] || null;\n}\n\n\n/**\n * Gather data for grouping\n * @param array - flat data array\n * @param groupIds - ids of groups\n * @param expanded - potentially expanded items if present\n */\nexport function gatherGrouping(\n array: DataType[],\n groupIds: ColumnProp[],\n { prevExpanded, expandedAll, getGroupValue = getGroupValueDefault }: ExpandedOptions,\n) {\n const groupedItems: GroupedData = new Map();\n array.forEach((item, originalIndex) => {\n const groupLevelValues = groupIds.map(groupId => getGroupValue(item, groupId));\n const lastLevelValue = groupLevelValues.pop();\n let currentGroupLevel = groupedItems;\n groupLevelValues.forEach(value => {\n if (!currentGroupLevel.has(value)) {\n currentGroupLevel.set(value, new Map());\n }\n currentGroupLevel = currentGroupLevel.get(value) as GroupedData;\n });\n if (!currentGroupLevel.has(lastLevelValue)) {\n currentGroupLevel.set(lastLevelValue, []);\n }\n const lastLevelItems = currentGroupLevel.get(\n lastLevelValue,\n ) as DataType[];\n lastLevelItems.push({\n ...item,\n [GROUP_ORIGINAL_INDEX]: originalIndex,\n });\n });\n\n let itemIndex = -1;\n const groupingDepth = groupIds.length;\n // collapse all groups in the beginning\n const trimmed: Record<number, boolean> = {};\n // index mapping\n const oldNewIndexMap: Record<number, number> = {};\n // check if group header exists\n const pseudoGroupTest: Record<string, number[]> = {};\n const sourceWithGroups: DataType[] = [];\n function flattenGroupMaps(\n groupedValues: GroupedData,\n parentIds: string[],\n isExpanded: boolean,\n ) {\n const depth = parentIds.length;\n groupedValues.forEach((innerGroupedValues, groupId) => {\n const levelIds = [...parentIds, groupId];\n const mergedIds = levelIds.join(',');\n const isGroupExpanded =\n isExpanded && (!!expandedAll || !!prevExpanded?.[mergedIds]);\n sourceWithGroups.push({\n [PSEUDO_GROUP_ITEM]: groupId,\n [GROUP_DEPTH]: depth,\n [PSEUDO_GROUP_ITEM_ID]: JSON.stringify(levelIds),\n [PSEUDO_GROUP_ITEM_VALUE]: mergedIds,\n [GROUP_EXPANDED]: isGroupExpanded,\n });\n itemIndex += 1;\n if (!isGroupExpanded && depth) {\n trimmed[itemIndex] = true;\n }\n if (Array.isArray(innerGroupedValues)) {\n innerGroupedValues.forEach(value => {\n itemIndex += 1;\n if (!isGroupExpanded) {\n trimmed[itemIndex] = true;\n }\n oldNewIndexMap[value[GROUP_ORIGINAL_INDEX]] = itemIndex;\n const pseudoGroupTestIds = levelIds.map((_value, index) =>\n levelIds.slice(0, index + 1).join(','),\n );\n pseudoGroupTestIds.forEach(pseudoGroupTestId => {\n if (!pseudoGroupTest[pseudoGroupTestId]) {\n pseudoGroupTest[pseudoGroupTestId] = [];\n }\n pseudoGroupTest[pseudoGroupTestId].push(itemIndex);\n });\n });\n sourceWithGroups.push(...innerGroupedValues);\n } else {\n flattenGroupMaps(innerGroupedValues, levelIds, isGroupExpanded);\n }\n });\n }\n flattenGroupMaps(groupedItems, [], true);\n\n return {\n sourceWithGroups, // updates source mirror\n depth: groupingDepth, // largest depth for grouping\n trimmed, // used for expand/collapse grouping values\n oldNewIndexMap, // used for mapping old values to new\n childrenByGroup: pseudoGroupTest, // used to get child items in group\n };\n}\n\nexport function getGroupingName(rgRow?: DataType) {\n return rgRow && rgRow[PSEUDO_GROUP_ITEM];\n}\n\nexport function isGrouping(rgRow?: DataType) {\n return rgRow && typeof rgRow[PSEUDO_GROUP_ITEM] !== 'undefined';\n}\n\nexport function isGroupingColumn(column?: ColumnRegular) {\n return column && typeof column[PSEUDO_GROUP_COLUMN] !== 'undefined';\n}\n\nexport function measureEqualDepth<T>(groupA: T[], groupB: T[]) {\n const ln = groupA.length;\n let i = 0;\n for (; i < ln; i++) {\n if (groupA[i] !== groupB[i]) {\n return i;\n }\n }\n return i;\n}\n\nexport function getParsedGroup(id: string): any[] {\n const parseGroup = JSON.parse(id);\n // extra precaution and type safe guard\n if (!Array.isArray(parseGroup)) {\n return null;\n }\n return parseGroup;\n}\n\n// check if items is child of current clicked group\nexport function isSameGroup(\n currentGroup: any[],\n currentModel: DataType,\n nextModel: DataType,\n) {\n const nextGroup = getParsedGroup(nextModel[PSEUDO_GROUP_ITEM_ID]);\n if (!nextGroup) {\n return false;\n }\n\n const depth = measureEqualDepth(currentGroup, nextGroup);\n return currentModel[GROUP_DEPTH] < depth;\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * Built by Revolist OU ❤️
3
3
  */
4
- import { gatherTrimmedItems } from "../../store/dataSource/trimmed.plugin";
4
+ import { gatherTrimmedItems } from "../../store/index";
5
5
  export const TRIMMED_GROUPING = 'grouping';
6
6
  /**
7
7
  * Prepare trimming updated indexes for grouping
@@ -1 +1 @@
1
- {"version":3,"file":"grouping.trimmed.service.js","sourceRoot":"","sources":["../../../src/plugins/groupingRow/grouping.trimmed.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAA0B,MAAM,uCAAuC,CAAC;AAEnG,MAAM,CAAC,MAAM,gBAAgB,GAAG,UAAU,CAAC;AAE3C;;;;;GAKG;AACH,MAAM,UAAU,8BAA8B,CAAC,eAAwB,EAAE,aAAqC,EAAE,cAAuC;IACrJ,MAAM,wBAAwB,GAAY,EAAE,CAAC;IAC7C;;OAEG;IACH,KAAK,IAAI,IAAI,IAAI,eAAe,EAAE,CAAC;QACjC,IAAI,IAAI,KAAK,gBAAgB,EAAE,CAAC;YAC9B,SAAS;QACX,CAAC;QACD,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,QAAQ,GAAkB,EAAE,CAAC;QAEnC,KAAK,IAAI,YAAY,IAAI,KAAK,EAAE,CAAC;YAC/B;;;eAGG;YACH,IAAI,kBAAkB,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;YACrD,IAAI,cAAc,EAAE,CAAC;gBACnB,kBAAkB,GAAG,cAAc,CAAC,kBAAkB,CAAC,CAAC;YAC1D,CAAC;YAED;;;eAGG;YACH,IAAI,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;gBACxB,QAAQ,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAAC;gBACpC;;mBAEG;gBACH,IAAI,kBAAkB,KAAK,QAAQ,CAAC,YAAY,EAAE,EAAE,CAAC,EAAE,CAAC;oBACtD,wBAAwB,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC;gBAC5C,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,wBAAwB,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,gBAAyB,EAAE,kBAA4C,EAAE;IAC5G,MAAM,YAAY,GAAkB,EAAE,CAAC;IACvC,MAAM,UAAU,GAAG,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;IACxD,4BAA4B;IAC5B,KAAK,IAAI,UAAU,IAAI,eAAe,EAAE,CAAC;QACvC,MAAM,WAAW,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QACzG,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,YAAY,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;QAClC,CAAC;IACH,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC","sourcesContent":["import { gatherTrimmedItems, Trimmed, TrimmedEntity } from '../../store/dataSource/trimmed.plugin';\n\nexport const TRIMMED_GROUPING = 'grouping';\n\n/**\n * Prepare trimming updated indexes for grouping\n * @param initiallyTrimed\n * @param firstLevelMap\n * @param secondLevelMap\n */\nexport function processDoubleConversionTrimmed(initiallyTrimed: Trimmed, firstLevelMap: Record<number, number>, secondLevelMap?: Record<number, number>) {\n const trimemedOptionsToUpgrade: Trimmed = {};\n /**\n * go through all groups except grouping\n */\n for (let type in initiallyTrimed) {\n if (type === TRIMMED_GROUPING) {\n continue;\n }\n const items = initiallyTrimed[type];\n const newItems: TrimmedEntity = {};\n\n for (let initialIndex in items) {\n /**\n * if item exists we find it in collection\n * we support 2 level of conversions\n */\n let newConversionIndex = firstLevelMap[initialIndex];\n if (secondLevelMap) {\n newConversionIndex = secondLevelMap[newConversionIndex];\n }\n\n /**\n * if item was trimmed previously\n * trimming makes sense to apply\n */\n if (items[initialIndex]) {\n newItems[newConversionIndex] = true;\n /**\n * If changes present apply changes to new source\n */\n if (newConversionIndex !== parseInt(initialIndex, 10)) {\n trimemedOptionsToUpgrade[type] = newItems;\n }\n }\n }\n }\n return trimemedOptionsToUpgrade;\n}\n\nexport function filterOutEmptyGroups(allTrimmedGroups: Trimmed, childrenByGroup: Record<number, number[]> = {}) {\n const trimmedGroup: TrimmedEntity = {};\n const allTrimmed = gatherTrimmedItems(allTrimmedGroups);\n // find is groups are filled\n for (let groupIndex in childrenByGroup) {\n const hasChidlren = childrenByGroup[groupIndex].filter(childIndex => !allTrimmed[childIndex]).length > 0;\n if (!hasChidlren) {\n trimmedGroup[groupIndex] = true;\n }\n }\n return trimmedGroup;\n}\n"]}
1
+ {"version":3,"file":"grouping.trimmed.service.js","sourceRoot":"","sources":["../../../src/plugins/groupingRow/grouping.trimmed.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAA0B,MAAM,QAAQ,CAAC;AAEpE,MAAM,CAAC,MAAM,gBAAgB,GAAG,UAAU,CAAC;AAE3C;;;;;GAKG;AACH,MAAM,UAAU,8BAA8B,CAAC,eAAwB,EAAE,aAAqC,EAAE,cAAuC;IACrJ,MAAM,wBAAwB,GAAY,EAAE,CAAC;IAC7C;;OAEG;IACH,KAAK,IAAI,IAAI,IAAI,eAAe,EAAE,CAAC;QACjC,IAAI,IAAI,KAAK,gBAAgB,EAAE,CAAC;YAC9B,SAAS;QACX,CAAC;QACD,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,QAAQ,GAAkB,EAAE,CAAC;QAEnC,KAAK,IAAI,YAAY,IAAI,KAAK,EAAE,CAAC;YAC/B;;;eAGG;YACH,IAAI,kBAAkB,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;YACrD,IAAI,cAAc,EAAE,CAAC;gBACnB,kBAAkB,GAAG,cAAc,CAAC,kBAAkB,CAAC,CAAC;YAC1D,CAAC;YAED;;;eAGG;YACH,IAAI,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;gBACxB,QAAQ,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAAC;gBACpC;;mBAEG;gBACH,IAAI,kBAAkB,KAAK,QAAQ,CAAC,YAAY,EAAE,EAAE,CAAC,EAAE,CAAC;oBACtD,wBAAwB,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC;gBAC5C,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,wBAAwB,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,gBAAyB,EAAE,kBAA4C,EAAE;IAC5G,MAAM,YAAY,GAAkB,EAAE,CAAC;IACvC,MAAM,UAAU,GAAG,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;IACxD,4BAA4B;IAC5B,KAAK,IAAI,UAAU,IAAI,eAAe,EAAE,CAAC;QACvC,MAAM,WAAW,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QACzG,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,YAAY,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;QAClC,CAAC;IACH,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC","sourcesContent":["import { gatherTrimmedItems, Trimmed, TrimmedEntity } from '@store';\n\nexport const TRIMMED_GROUPING = 'grouping';\n\n/**\n * Prepare trimming updated indexes for grouping\n * @param initiallyTrimed\n * @param firstLevelMap\n * @param secondLevelMap\n */\nexport function processDoubleConversionTrimmed(initiallyTrimed: Trimmed, firstLevelMap: Record<number, number>, secondLevelMap?: Record<number, number>) {\n const trimemedOptionsToUpgrade: Trimmed = {};\n /**\n * go through all groups except grouping\n */\n for (let type in initiallyTrimed) {\n if (type === TRIMMED_GROUPING) {\n continue;\n }\n const items = initiallyTrimed[type];\n const newItems: TrimmedEntity = {};\n\n for (let initialIndex in items) {\n /**\n * if item exists we find it in collection\n * we support 2 level of conversions\n */\n let newConversionIndex = firstLevelMap[initialIndex];\n if (secondLevelMap) {\n newConversionIndex = secondLevelMap[newConversionIndex];\n }\n\n /**\n * if item was trimmed previously\n * trimming makes sense to apply\n */\n if (items[initialIndex]) {\n newItems[newConversionIndex] = true;\n /**\n * If changes present apply changes to new source\n */\n if (newConversionIndex !== parseInt(initialIndex, 10)) {\n trimemedOptionsToUpgrade[type] = newItems;\n }\n }\n }\n }\n return trimemedOptionsToUpgrade;\n}\n\nexport function filterOutEmptyGroups(allTrimmedGroups: Trimmed, childrenByGroup: Record<number, number[]> = {}) {\n const trimmedGroup: TrimmedEntity = {};\n const allTrimmed = gatherTrimmedItems(allTrimmedGroups);\n // find is groups are filled\n for (let groupIndex in childrenByGroup) {\n const hasChidlren = childrenByGroup[groupIndex].filter(childIndex => !allTrimmed[childIndex]).length > 0;\n if (!hasChidlren) {\n trimmedGroup[groupIndex] = true;\n }\n }\n return trimmedGroup;\n}\n"]}
@@ -6,7 +6,7 @@
6
6
  */
7
7
  import debounce from "lodash/debounce";
8
8
  import each from "lodash/each";
9
- import { getItemByPosition } from "../../store/dimension/dimension.helpers";
9
+ import { getItemByPosition } from "../../store/index";
10
10
  import { BasePlugin } from "../base.plugin";
11
11
  import { ColumnOrderHandler } from "./order-column.handler";
12
12
  import { dispatch } from "../dispatcher";
@@ -1 +1 @@
1
- {"version":3,"file":"column.drag.plugin.js","sourceRoot":"","sources":["../../../src/plugins/moveColumn/column.drag.plugin.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Plugin for column manual move\n */\nimport debounce from 'lodash/debounce';\nimport each from 'lodash/each';\nimport ColumnDataProvider from '../../services/column.data.provider';\nimport { DataProvider } from '../../services/data.provider';\nimport DimensionProvider from '../../services/dimension.provider';\nimport SelectionStoreConnector from '../../services/selection.store.connector';\nimport ViewportProvider from '../../services/viewport.provider';\nimport { getItemByPosition } from '../../store/dimension/dimension.helpers';\nimport { BasePlugin } from '../base.plugin';\nimport { ColumnOrderHandler } from './order-column.handler';\nimport { dispatch } from '../dispatcher';\nimport { isColGrouping } from '../groupingColumn/grouping.col.plugin';\nimport { ColumnPropProp, ColumnRegular, DimensionSettingsState, PositionItem } from '../..';\nimport { DimensionCols, MultiDimensionType } from '../..';\nimport { PluginProviders } from '../../';\nimport { ON_COLUMN_CLICK } from '../../components/header/header-cell-renderer';\n\nconst COLUMN_CLICK = ON_COLUMN_CLICK;\nconst MOVE = 'columndragmousemove';\nconst DRAG_END = 'columndragend';\nconst BEFORE_DRAG_END = 'beforecolumndragend';\n\n// use this event subscription to drop D&D for particular columns\nconst DRAG_START = 'columndragstart';\n\nexport type DragStartEventDetails = {\n event: MouseEvent;\n data: ColumnPropProp;\n};\n\nexport type Providers = {\n data: DataProvider;\n dimension: DimensionProvider;\n selection: SelectionStoreConnector;\n column: ColumnDataProvider;\n viewport: ViewportProvider;\n};\ntype StaticData = {\n startPos: number;\n startItem: PositionItem;\n data: ColumnRegular;\n dataEl: HTMLElement;\n scrollEl: Element;\n gridEl: HTMLElement;\n cols: DimensionSettingsState;\n};\n\ntype LocalSubscriptions = Record<string, LocalSubscription>;\ntype LocalSubscription = {\n target: Element | Document;\n callback(...params: any[]): void;\n};\nexport type EventData = {\n elRect: DOMRect;\n gridRect: DOMRect;\n scrollOffset: number;\n type: DimensionCols;\n};\nexport default class ColumnPlugin extends BasePlugin {\n private moveFunc = debounce((e: MouseEvent) => this.doMove(e), 5);\n private staticDragData: StaticData | null = null;\n private dragData: EventData | null = null;\n private readonly orderUi: ColumnOrderHandler;\n protected readonly localSubscriptions: LocalSubscriptions = {};\n constructor(protected revogrid: HTMLRevoGridElement, protected providers: PluginProviders) {\n super(revogrid, providers);\n this.orderUi = new ColumnOrderHandler();\n revogrid.appendChild(this.orderUi.render());\n revogrid.classList.add('column-draggable');\n\n // Register events\n this.localSubscriptions['mouseleave'] = {\n target: document,\n callback: (e: MouseEvent) => this.onMouseOut(e),\n };\n this.localSubscriptions['mouseup'] = {\n target: document,\n callback: (e: MouseEvent) => this.onMouseUp(e),\n };\n\n this.localSubscriptions['mousemove'] = {\n target: document,\n callback: (e: MouseEvent) => this.move(e),\n };\n\n this.addEventListener(COLUMN_CLICK, ({ detail }) => this.dragStart(detail));\n }\n\n dragStart({ event, data }: DragStartEventDetails) {\n if (event.defaultPrevented) {\n return;\n }\n const { defaultPrevented } = dispatch(this.revogrid, DRAG_START, data);\n // check if allowed to drag particulat column\n if (defaultPrevented) {\n return;\n }\n this.clearOrder();\n const { mouseleave, mouseup, mousemove } = this.localSubscriptions;\n mouseleave.target.addEventListener('mouseleave', mouseleave.callback);\n mouseup.target.addEventListener('mouseup', mouseup.callback);\n\n const dataEl = (event.target as HTMLElement).closest('revogr-header');\n const scrollEl = (event.target as HTMLElement).closest('revogr-viewport-scroll');\n if (!dataEl || !scrollEl) {\n return;\n }\n\n // no grouping drag and no row header column drag\n if (isColGrouping(data) || data.providers.type === 'rowHeaders') {\n return;\n }\n\n const cols = this.getDimension(data.pin || 'rgCol');\n const gridRect = this.revogrid.getBoundingClientRect();\n const elRect = dataEl.getBoundingClientRect();\n const startItem = getItemByPosition(\n cols,\n getLeftRelative(event.x, gridRect.left, elRect.left - gridRect.left));\n \n this.staticDragData = {\n startPos: event.x,\n startItem,\n data,\n dataEl,\n scrollEl,\n gridEl: this.revogrid,\n cols,\n };\n this.dragData = this.getData(this.staticDragData);\n mousemove.target.addEventListener('mousemove', mousemove.callback);\n this.orderUi.start(event, {\n ...this.dragData,\n ...this.staticDragData,\n });\n }\n\n doMove(e: MouseEvent) {\n if (!this.staticDragData) {\n return;\n }\n\n const dragData = (this.dragData = this.getData(this.staticDragData));\n if (!dragData) {\n return;\n }\n const start = this.staticDragData.startPos;\n if (Math.abs(start - e.x) > 10) {\n const x = getLeftRelative(e.x, this.dragData.gridRect.left, this.dragData.scrollOffset);\n const rgCol = getItemByPosition(this.staticDragData.cols, x);\n this.orderUi.autoscroll(x, dragData.elRect.width);\n this.orderUi.showHandler(\n rgCol.end + dragData.scrollOffset,\n dragData.gridRect.width\n );\n }\n }\n\n move(e: MouseEvent) {\n dispatch(this.revogrid, MOVE, e);\n // then do move\n this.moveFunc(e);\n }\n onMouseOut(_: MouseEvent) {\n this.clearOrder();\n }\n onMouseUp(e: MouseEvent) {\n // apply new positions\n if (this.dragData) {\n let relativePos = getLeftRelative(e.x, this.dragData.gridRect.left, this.dragData.scrollOffset);\n if (relativePos < 0) {\n relativePos = 0;\n }\n const newPosition = getItemByPosition(this.staticDragData.cols, relativePos);\n\n const store = this.providers.column.stores[this.dragData.type].store;\n const items = [...store.get('items')];\n\n // prevent position change if needed\n const { defaultPrevented: stopDrag } = dispatch(this.revogrid, BEFORE_DRAG_END, {\n ...this.staticDragData,\n startPosition: this.staticDragData.startItem,\n newPosition,\n newItem: store.get('source')[items[this.staticDragData.startItem.itemIndex]]\n });\n if (!stopDrag) {\n // todo: if move item out of group remove item from group\n const toMove = items.splice(this.staticDragData.startItem.itemIndex, 1);\n items.splice(newPosition.itemIndex, 0, ...toMove);\n store.set('items', items);\n }\n dispatch(this.revogrid, DRAG_END, this.dragData);\n }\n this.clearOrder();\n }\n\n private clearLocalSubscriptions() {\n each(this.localSubscriptions, ({ target, callback }, key) => target.removeEventListener(key, callback));\n }\n\n clearOrder() {\n this.staticDragData = null;\n this.dragData = null;\n this.clearLocalSubscriptions();\n this.orderUi.stop(this.revogrid);\n }\n /**\n * Clearing subscription\n */\n protected clearSubscriptions() {\n super.clearSubscriptions();\n this.clearLocalSubscriptions();\n }\n\n private getData({\n gridEl,\n dataEl,\n data,\n }: StaticData): EventData {\n const gridRect = gridEl.getBoundingClientRect();\n const elRect = dataEl.getBoundingClientRect();\n const scrollOffset = elRect.left - gridRect.left;\n return {\n elRect,\n gridRect,\n type: data.pin || 'rgCol',\n scrollOffset,\n };\n }\n private getDimension(type: MultiDimensionType) {\n return this.providers.dimension.stores[type].getCurrentState();\n }\n}\n\nexport function getLeftRelative(\n absoluteX: number,\n gridPos: number,\n offset: number\n): number {\n return absoluteX - gridPos - offset;\n}\n"]}
1
+ {"version":3,"file":"column.drag.plugin.js","sourceRoot":"","sources":["../../../src/plugins/moveColumn/column.drag.plugin.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,QAAQ,MAAM,iBAAiB,CAAC;AACvC,OAAO,IAAI,MAAM,aAAa,CAAC;AAM/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAEtE,OAAO,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAC;AAE/E,MAAM,YAAY,GAAG,eAAe,CAAC;AACrC,MAAM,IAAI,GAAG,qBAAqB,CAAC;AACnC,MAAM,QAAQ,GAAG,eAAe,CAAC;AACjC,MAAM,eAAe,GAAG,qBAAqB,CAAC;AAE9C,iEAAiE;AACjE,MAAM,UAAU,GAAG,iBAAiB,CAAC;AAmCrC,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,UAAU;IAMlD,YAAsB,QAA6B,EAAY,SAA0B;QACvF,KAAK,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QADP,aAAQ,GAAR,QAAQ,CAAqB;QAAY,cAAS,GAAT,SAAS,CAAiB;QALjF,aAAQ,GAAG,QAAQ,CAAC,CAAC,CAAa,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1D,mBAAc,GAAsB,IAAI,CAAC;QACzC,aAAQ,GAAqB,IAAI,CAAC;QAEvB,uBAAkB,GAAuB,EAAE,CAAC;QAG7D,IAAI,CAAC,OAAO,GAAG,IAAI,kBAAkB,EAAE,CAAC;QACxC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5C,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAE3C,kBAAkB;QAClB,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,GAAG;YACtC,MAAM,EAAE,QAAQ;YAChB,QAAQ,EAAE,CAAC,CAAa,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;SAChD,CAAC;QACF,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,GAAG;YACnC,MAAM,EAAE,QAAQ;YAChB,QAAQ,EAAE,CAAC,CAAa,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;SAC/C,CAAC;QAEF,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,GAAG;YACrC,MAAM,EAAE,QAAQ;YAChB,QAAQ,EAAE,CAAC,CAAa,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;SAC1C,CAAC;QAEF,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,EAAyB;QAC9C,IAAI,KAAK,CAAC,gBAAgB,EAAE,CAAC;YAC3B,OAAO;QACT,CAAC;QACD,MAAM,EAAE,gBAAgB,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;QACvE,6CAA6C;QAC7C,IAAI,gBAAgB,EAAE,CAAC;YACrB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC;QACnE,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,YAAY,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;QACtE,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE7D,MAAM,MAAM,GAAI,KAAK,CAAC,MAAsB,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QACtE,MAAM,QAAQ,GAAI,KAAK,CAAC,MAAsB,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;QACjF,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;YACzB,OAAO;QACT,CAAC;QAED,iDAAiD;QACjD,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAChE,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC;QACvD,MAAM,MAAM,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC;QAC9C,MAAM,SAAS,GAAG,iBAAiB,CACjC,IAAI,EACJ,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QAExE,IAAI,CAAC,cAAc,GAAG;YACpB,QAAQ,EAAE,KAAK,CAAC,CAAC;YACjB,SAAS;YACT,IAAI;YACJ,MAAM;YACN,QAAQ;YACR,MAAM,EAAE,IAAI,CAAC,QAAQ;YACrB,IAAI;SACL,CAAC;QACF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAClD,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;QACnE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,kCACnB,IAAI,CAAC,QAAQ,GACb,IAAI,CAAC,cAAc,EACtB,CAAC;IACL,CAAC;IAED,MAAM,CAAC,CAAa;QAClB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO;QACT,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;QAC3C,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;YAC/B,MAAM,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;YACxF,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAC7D,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAClD,IAAI,CAAC,OAAO,CAAC,WAAW,CACtB,KAAK,CAAC,GAAG,GAAG,QAAQ,CAAC,YAAY,EACjC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CACxB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,CAAC,CAAa;QAChB,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACjC,eAAe;QACf,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;IACD,UAAU,CAAC,CAAa;QACtB,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IACD,SAAS,CAAC,CAAa;QACrB,sBAAsB;QACtB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,WAAW,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;YAChG,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;gBACpB,WAAW,GAAG,CAAC,CAAC;YAClB,CAAC;YACD,MAAM,WAAW,GAAG,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YAE7E,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACrE,MAAM,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;YAEtC,oCAAoC;YACpC,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,eAAe,kCACzE,IAAI,CAAC,cAAc,KACtB,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,SAAS,EAC5C,WAAW,EACX,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,IAC5E,CAAC;YACH,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,yDAAyD;gBACzD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;gBACxE,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC;gBAClD,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAC5B,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnD,CAAC;QACD,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAEO,uBAAuB;QAC7B,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC1G,CAAC;IAED,UAAU;QACR,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACnC,CAAC;IACD;;OAEG;IACO,kBAAkB;QAC1B,KAAK,CAAC,kBAAkB,EAAE,CAAC;QAC3B,IAAI,CAAC,uBAAuB,EAAE,CAAC;IACjC,CAAC;IAEO,OAAO,CAAC,EACd,MAAM,EACN,MAAM,EACN,IAAI,GACO;QACX,MAAM,QAAQ,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC;QAChD,MAAM,MAAM,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC;QAC9C,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QACjD,OAAO;YACL,MAAM;YACN,QAAQ;YACR,IAAI,EAAE,IAAI,CAAC,GAAG,IAAI,OAAO;YACzB,YAAY;SACb,CAAC;IACJ,CAAC;IACO,YAAY,CAAC,IAAwB;QAC3C,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,CAAC;IACjE,CAAC;CACF;AAED,MAAM,UAAU,eAAe,CAC7B,SAAiB,EACjB,OAAe,EACf,MAAc;IAEd,OAAO,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AACtC,CAAC","sourcesContent":["/**\n * Plugin for column manual move\n */\nimport debounce from 'lodash/debounce';\nimport each from 'lodash/each';\nimport ColumnDataProvider from '../../services/column.data.provider';\nimport { DataProvider } from '../../services/data.provider';\nimport DimensionProvider from '../../services/dimension.provider';\nimport SelectionStoreConnector from '../../services/selection.store.connector';\nimport ViewportProvider from '../../services/viewport.provider';\nimport { getItemByPosition } from '@store';\nimport { BasePlugin } from '../base.plugin';\nimport { ColumnOrderHandler } from './order-column.handler';\nimport { dispatch } from '../dispatcher';\nimport { isColGrouping } from '../groupingColumn/grouping.col.plugin';\nimport { ColumnPropProp, ColumnRegular, DimensionSettingsState, PositionItem, DimensionCols, MultiDimensionType, PluginProviders } from '@type';\nimport { ON_COLUMN_CLICK } from '../../components/header/header-cell-renderer';\n\nconst COLUMN_CLICK = ON_COLUMN_CLICK;\nconst MOVE = 'columndragmousemove';\nconst DRAG_END = 'columndragend';\nconst BEFORE_DRAG_END = 'beforecolumndragend';\n\n// use this event subscription to drop D&D for particular columns\nconst DRAG_START = 'columndragstart';\n\nexport type DragStartEventDetails = {\n event: MouseEvent;\n data: ColumnPropProp;\n};\n\nexport type Providers = {\n data: DataProvider;\n dimension: DimensionProvider;\n selection: SelectionStoreConnector;\n column: ColumnDataProvider;\n viewport: ViewportProvider;\n};\ntype StaticData = {\n startPos: number;\n startItem: PositionItem;\n data: ColumnRegular;\n dataEl: HTMLElement;\n scrollEl: Element;\n gridEl: HTMLElement;\n cols: DimensionSettingsState;\n};\n\ntype LocalSubscriptions = Record<string, LocalSubscription>;\ntype LocalSubscription = {\n target: Element | Document;\n callback(...params: any[]): void;\n};\nexport type EventData = {\n elRect: DOMRect;\n gridRect: DOMRect;\n scrollOffset: number;\n type: DimensionCols;\n};\nexport default class ColumnPlugin extends BasePlugin {\n private moveFunc = debounce((e: MouseEvent) => this.doMove(e), 5);\n private staticDragData: StaticData | null = null;\n private dragData: EventData | null = null;\n private readonly orderUi: ColumnOrderHandler;\n protected readonly localSubscriptions: LocalSubscriptions = {};\n constructor(protected revogrid: HTMLRevoGridElement, protected providers: PluginProviders) {\n super(revogrid, providers);\n this.orderUi = new ColumnOrderHandler();\n revogrid.appendChild(this.orderUi.render());\n revogrid.classList.add('column-draggable');\n\n // Register events\n this.localSubscriptions['mouseleave'] = {\n target: document,\n callback: (e: MouseEvent) => this.onMouseOut(e),\n };\n this.localSubscriptions['mouseup'] = {\n target: document,\n callback: (e: MouseEvent) => this.onMouseUp(e),\n };\n\n this.localSubscriptions['mousemove'] = {\n target: document,\n callback: (e: MouseEvent) => this.move(e),\n };\n\n this.addEventListener(COLUMN_CLICK, ({ detail }) => this.dragStart(detail));\n }\n\n dragStart({ event, data }: DragStartEventDetails) {\n if (event.defaultPrevented) {\n return;\n }\n const { defaultPrevented } = dispatch(this.revogrid, DRAG_START, data);\n // check if allowed to drag particulat column\n if (defaultPrevented) {\n return;\n }\n this.clearOrder();\n const { mouseleave, mouseup, mousemove } = this.localSubscriptions;\n mouseleave.target.addEventListener('mouseleave', mouseleave.callback);\n mouseup.target.addEventListener('mouseup', mouseup.callback);\n\n const dataEl = (event.target as HTMLElement).closest('revogr-header');\n const scrollEl = (event.target as HTMLElement).closest('revogr-viewport-scroll');\n if (!dataEl || !scrollEl) {\n return;\n }\n\n // no grouping drag and no row header column drag\n if (isColGrouping(data) || data.providers.type === 'rowHeaders') {\n return;\n }\n\n const cols = this.getDimension(data.pin || 'rgCol');\n const gridRect = this.revogrid.getBoundingClientRect();\n const elRect = dataEl.getBoundingClientRect();\n const startItem = getItemByPosition(\n cols,\n getLeftRelative(event.x, gridRect.left, elRect.left - gridRect.left));\n \n this.staticDragData = {\n startPos: event.x,\n startItem,\n data,\n dataEl,\n scrollEl,\n gridEl: this.revogrid,\n cols,\n };\n this.dragData = this.getData(this.staticDragData);\n mousemove.target.addEventListener('mousemove', mousemove.callback);\n this.orderUi.start(event, {\n ...this.dragData,\n ...this.staticDragData,\n });\n }\n\n doMove(e: MouseEvent) {\n if (!this.staticDragData) {\n return;\n }\n\n const dragData = (this.dragData = this.getData(this.staticDragData));\n if (!dragData) {\n return;\n }\n const start = this.staticDragData.startPos;\n if (Math.abs(start - e.x) > 10) {\n const x = getLeftRelative(e.x, this.dragData.gridRect.left, this.dragData.scrollOffset);\n const rgCol = getItemByPosition(this.staticDragData.cols, x);\n this.orderUi.autoscroll(x, dragData.elRect.width);\n this.orderUi.showHandler(\n rgCol.end + dragData.scrollOffset,\n dragData.gridRect.width\n );\n }\n }\n\n move(e: MouseEvent) {\n dispatch(this.revogrid, MOVE, e);\n // then do move\n this.moveFunc(e);\n }\n onMouseOut(_: MouseEvent) {\n this.clearOrder();\n }\n onMouseUp(e: MouseEvent) {\n // apply new positions\n if (this.dragData) {\n let relativePos = getLeftRelative(e.x, this.dragData.gridRect.left, this.dragData.scrollOffset);\n if (relativePos < 0) {\n relativePos = 0;\n }\n const newPosition = getItemByPosition(this.staticDragData.cols, relativePos);\n\n const store = this.providers.column.stores[this.dragData.type].store;\n const items = [...store.get('items')];\n\n // prevent position change if needed\n const { defaultPrevented: stopDrag } = dispatch(this.revogrid, BEFORE_DRAG_END, {\n ...this.staticDragData,\n startPosition: this.staticDragData.startItem,\n newPosition,\n newItem: store.get('source')[items[this.staticDragData.startItem.itemIndex]]\n });\n if (!stopDrag) {\n // todo: if move item out of group remove item from group\n const toMove = items.splice(this.staticDragData.startItem.itemIndex, 1);\n items.splice(newPosition.itemIndex, 0, ...toMove);\n store.set('items', items);\n }\n dispatch(this.revogrid, DRAG_END, this.dragData);\n }\n this.clearOrder();\n }\n\n private clearLocalSubscriptions() {\n each(this.localSubscriptions, ({ target, callback }, key) => target.removeEventListener(key, callback));\n }\n\n clearOrder() {\n this.staticDragData = null;\n this.dragData = null;\n this.clearLocalSubscriptions();\n this.orderUi.stop(this.revogrid);\n }\n /**\n * Clearing subscription\n */\n protected clearSubscriptions() {\n super.clearSubscriptions();\n this.clearLocalSubscriptions();\n }\n\n private getData({\n gridEl,\n dataEl,\n data,\n }: StaticData): EventData {\n const gridRect = gridEl.getBoundingClientRect();\n const elRect = dataEl.getBoundingClientRect();\n const scrollOffset = elRect.left - gridRect.left;\n return {\n elRect,\n gridRect,\n type: data.pin || 'rgCol',\n scrollOffset,\n };\n }\n private getDimension(type: MultiDimensionType) {\n return this.providers.dimension.stores[type].getCurrentState();\n }\n}\n\nexport function getLeftRelative(\n absoluteX: number,\n gridPos: number,\n offset: number\n): number {\n return absoluteX - gridPos - offset;\n}\n"]}
@@ -32,7 +32,7 @@ export default class SortingPlugin extends BasePlugin {
32
32
  this.sortingFunc = null;
33
33
  this.sortingPromise = null;
34
34
  this.postponeSort = debounce(async (order, comparison) => this.runSorting(order, comparison), 50);
35
- const beforeanysource = async ({ detail: { type, }, }) => {
35
+ const beforeanysource = async ({ detail: { type }, }) => {
36
36
  // if sorting was provided - sort data
37
37
  if (!!this.sorting && this.sortingFunc) {
38
38
  const beforeEvent = this.emit('beforesorting', { type });
@@ -67,7 +67,7 @@ export default class SortingPlugin extends BasePlugin {
67
67
  }
68
68
  startSorting(order, sortingFunc) {
69
69
  if (!this.sortingPromise) {
70
- this.revogrid.jobsBeforeRender.push(new Promise((resolve) => {
70
+ this.revogrid.jobsBeforeRender.push(new Promise(resolve => {
71
71
  this.sortingPromise = resolve;
72
72
  }));
73
73
  }