@revolist/revogrid 4.0.11 → 4.0.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (378) hide show
  1. package/dist/cjs/app-globals-53fde1aa.js.map +1 -1
  2. package/dist/cjs/base.plugin-32f80cb5.js +219 -0
  3. package/dist/cjs/base.plugin-32f80cb5.js.map +1 -0
  4. package/dist/cjs/{column.service-e83d9809.js → column.service-52b4cac9.js} +28 -12
  5. package/dist/cjs/column.service-52b4cac9.js.map +1 -0
  6. package/dist/cjs/dimension.helpers-ee39d6c4.js.map +1 -1
  7. package/dist/cjs/events-b28cc194.js +52 -0
  8. package/dist/cjs/events-b28cc194.js.map +1 -0
  9. package/dist/cjs/filter.button-db6cbd2e.js.map +1 -1
  10. package/dist/cjs/{header-cell-renderer-8ba9b56d.js → header-cell-renderer-a3f202a1.js} +2 -2
  11. package/dist/cjs/{header-cell-renderer-8ba9b56d.js.map → header-cell-renderer-a3f202a1.js.map} +1 -1
  12. package/dist/cjs/{index-73c149e3.js → index-a9f1b728.js} +3 -4
  13. package/dist/cjs/index-a9f1b728.js.map +1 -0
  14. package/dist/cjs/index.cjs.js +26 -23
  15. package/dist/cjs/index.cjs.js.map +1 -1
  16. package/dist/cjs/{key.utils-59b9b528.js → key.utils-ee3d9eab.js} +2 -2
  17. package/dist/cjs/{key.utils-59b9b528.js.map → key.utils-ee3d9eab.js.map} +1 -1
  18. package/dist/cjs/revo-grid.cjs.entry.js +74 -164
  19. package/dist/cjs/revo-grid.cjs.entry.js.map +1 -1
  20. package/dist/cjs/revogr-attribution_6.cjs.entry.js +193 -142
  21. package/dist/cjs/revogr-attribution_6.cjs.entry.js.map +1 -1
  22. package/dist/cjs/revogr-clipboard_3.cjs.entry.js +2 -2
  23. package/dist/cjs/revogr-clipboard_3.cjs.entry.js.map +1 -1
  24. package/dist/cjs/revogr-data_4.cjs.entry.js +9 -9
  25. package/dist/cjs/revogr-data_4.cjs.entry.js.map +1 -1
  26. package/dist/cjs/revogr-filter-panel.cjs.entry.js.map +1 -1
  27. package/dist/cjs/{selection.store-2e110a67.js → selection.helpers-32abb2a9.js} +77 -75
  28. package/dist/cjs/selection.helpers-32abb2a9.js.map +1 -0
  29. package/dist/cjs/{throttle-f7aee21b.js → throttle-46478b04.js} +2 -2
  30. package/dist/cjs/{throttle-f7aee21b.js.map → throttle-46478b04.js.map} +1 -1
  31. package/dist/cjs/{viewport.helpers-6670177c.js → viewport.store-2ab4e166.js} +186 -1
  32. package/dist/cjs/viewport.store-2ab4e166.js.map +1 -0
  33. package/dist/collection/components/clipboard/revogr-clipboard.js +2 -2
  34. package/dist/collection/components/clipboard/revogr-clipboard.js.map +1 -1
  35. package/dist/collection/components/data/cell-renderer.js.map +1 -1
  36. package/dist/collection/components/data/column.service.js +2 -2
  37. package/dist/collection/components/data/column.service.js.map +1 -1
  38. package/dist/collection/components/data/revogr-data.js +46 -46
  39. package/dist/collection/components/data/revogr-data.js.map +1 -1
  40. package/dist/collection/components/data/row-highlight.plugin.js.map +1 -1
  41. package/dist/collection/components/editors/edit.utils.js.map +1 -1
  42. package/dist/collection/components/editors/revogr-edit.js +9 -9
  43. package/dist/collection/components/editors/revogr-edit.js.map +1 -1
  44. package/dist/collection/components/editors/text-editor.js.map +1 -1
  45. package/dist/collection/components/header/header-cell-renderer.js.map +1 -1
  46. package/dist/collection/components/header/header-renderer.js.map +1 -1
  47. package/dist/collection/components/header/revogr-header.js +28 -28
  48. package/dist/collection/components/header/revogr-header.js.map +1 -1
  49. package/dist/collection/components/order/order-renderer.js.map +1 -1
  50. package/dist/collection/components/order/order-row.service.js +1 -1
  51. package/dist/collection/components/order/order-row.service.js.map +1 -1
  52. package/dist/collection/components/order/revogr-order-editor.js +31 -28
  53. package/dist/collection/components/order/revogr-order-editor.js.map +1 -1
  54. package/dist/collection/components/overlay/autofill.service.js +37 -26
  55. package/dist/collection/components/overlay/autofill.service.js.map +1 -1
  56. package/dist/collection/components/overlay/keyboard.service.js +8 -8
  57. package/dist/collection/components/overlay/keyboard.service.js.map +1 -1
  58. package/dist/collection/components/overlay/revogr-overlay-selection.js +141 -93
  59. package/dist/collection/components/overlay/revogr-overlay-selection.js.map +1 -1
  60. package/dist/collection/components/overlay/selection.utils.js +37 -9
  61. package/dist/collection/components/overlay/selection.utils.js.map +1 -1
  62. package/dist/collection/components/revoGrid/grid.helpers.js.map +1 -1
  63. package/dist/collection/components/revoGrid/revo-grid-style.css +8 -3
  64. package/dist/collection/components/revoGrid/revo-grid.js +150 -135
  65. package/dist/collection/components/revoGrid/revo-grid.js.map +1 -1
  66. package/dist/collection/components/revoGrid/viewport.helpers.js +22 -8
  67. package/dist/collection/components/revoGrid/viewport.helpers.js.map +1 -1
  68. package/dist/collection/components/revoGrid/viewport.scrolling.service.js +4 -2
  69. package/dist/collection/components/revoGrid/viewport.scrolling.service.js.map +1 -1
  70. package/dist/collection/components/revoGrid/viewport.service.js +2 -2
  71. package/dist/collection/components/revoGrid/viewport.service.js.map +1 -1
  72. package/dist/collection/components/rowHeaders/revogr-row-headers.js +11 -12
  73. package/dist/collection/components/rowHeaders/revogr-row-headers.js.map +1 -1
  74. package/dist/collection/components/rowHeaders/row-header-render.js.map +1 -1
  75. package/dist/collection/components/scroll/revogr-viewport-scroll.js +17 -17
  76. package/dist/collection/components/scroll/revogr-viewport-scroll.js.map +1 -1
  77. package/dist/collection/components/scrollable/revogr-scroll-virtual.js +17 -17
  78. package/dist/collection/components/scrollable/revogr-scroll-virtual.js.map +1 -1
  79. package/dist/collection/components/selectionFocus/revogr-focus.js +44 -43
  80. package/dist/collection/components/selectionFocus/revogr-focus.js.map +1 -1
  81. package/dist/collection/components/selectionTempRange/revogr-temp-range.js +12 -12
  82. package/dist/collection/components/selectionTempRange/revogr-temp-range.js.map +1 -1
  83. package/dist/collection/components/vnode/vnode.utils.js.map +1 -1
  84. package/dist/collection/index.js +2 -12
  85. package/dist/collection/index.js.map +1 -1
  86. package/dist/collection/plugins/column.auto-size.plugin.js +3 -4
  87. package/dist/collection/plugins/column.auto-size.plugin.js.map +1 -1
  88. package/dist/collection/plugins/export/export.plugin.js +1 -1
  89. package/dist/collection/plugins/export/export.plugin.js.map +1 -1
  90. package/dist/collection/plugins/export/types.js.map +1 -1
  91. package/dist/collection/plugins/filter/filter.button.js.map +1 -1
  92. package/dist/collection/plugins/filter/filter.plugin.js.map +1 -1
  93. package/dist/collection/plugins/filter/filter.pop.js +4 -4
  94. package/dist/collection/plugins/filter/filter.pop.js.map +1 -1
  95. package/dist/collection/plugins/groupingColumn/columnGroupsRenderer.js +1 -1
  96. package/dist/collection/plugins/groupingColumn/columnGroupsRenderer.js.map +1 -1
  97. package/dist/collection/plugins/groupingColumn/grouping.col.plugin.js.map +1 -1
  98. package/dist/collection/plugins/groupingColumn/headerGroupRenderer.js.map +1 -1
  99. package/dist/collection/plugins/groupingRow/grouping.row.expand.service.js.map +1 -1
  100. package/dist/collection/plugins/groupingRow/grouping.row.plugin.js +1 -2
  101. package/dist/collection/plugins/groupingRow/grouping.row.plugin.js.map +1 -1
  102. package/dist/collection/plugins/groupingRow/grouping.row.renderer.js.map +1 -1
  103. package/dist/collection/plugins/groupingRow/grouping.row.types.js.map +1 -1
  104. package/dist/collection/plugins/groupingRow/grouping.service.js.map +1 -1
  105. package/dist/collection/plugins/groupingRow/grouping.trimmed.service.js +1 -1
  106. package/dist/collection/plugins/groupingRow/grouping.trimmed.service.js.map +1 -1
  107. package/dist/collection/plugins/moveColumn/column.drag.plugin.js +1 -1
  108. package/dist/collection/plugins/moveColumn/column.drag.plugin.js.map +1 -1
  109. package/dist/collection/plugins/sorting/sorting.plugin.js +2 -2
  110. package/dist/collection/plugins/sorting/sorting.plugin.js.map +1 -1
  111. package/dist/collection/plugins/sorting/sorting.sign.js.map +1 -1
  112. package/dist/collection/serve/controller.js +86 -18
  113. package/dist/collection/services/column.data.provider.js +1 -2
  114. package/dist/collection/services/column.data.provider.js.map +1 -1
  115. package/dist/collection/services/data.provider.js +1 -2
  116. package/dist/collection/services/data.provider.js.map +1 -1
  117. package/dist/collection/services/dimension.provider.js +3 -5
  118. package/dist/collection/services/dimension.provider.js.map +1 -1
  119. package/dist/collection/services/selection.store.connector.js +1 -2
  120. package/dist/collection/services/selection.store.connector.js.map +1 -1
  121. package/dist/collection/services/viewport.provider.js +1 -2
  122. package/dist/collection/services/viewport.provider.js.map +1 -1
  123. package/dist/collection/store/dataSource/data.proxy.js.map +1 -1
  124. package/dist/collection/store/dataSource/data.store.js +1 -1
  125. package/dist/collection/store/dataSource/data.store.js.map +1 -1
  126. package/dist/collection/store/dataSource/trimmed.plugin.js.map +1 -1
  127. package/dist/collection/store/dimension/dimension.helpers.js.map +1 -1
  128. package/dist/collection/store/dimension/dimension.store.js +1 -1
  129. package/dist/collection/store/dimension/dimension.store.js.map +1 -1
  130. package/dist/collection/store/{storeTypes.js → index.js} +5 -1
  131. package/dist/collection/store/index.js.map +1 -0
  132. package/dist/collection/store/selection/index.js +0 -1
  133. package/dist/collection/store/selection/index.js.map +1 -1
  134. package/dist/collection/store/selection/selection.helpers.js.map +1 -1
  135. package/dist/collection/store/selection/selection.store.js +1 -1
  136. package/dist/collection/store/selection/selection.store.js.map +1 -1
  137. package/dist/collection/store/vp/index.js.map +1 -0
  138. package/dist/collection/store/vp/viewport.helpers.js.map +1 -0
  139. package/dist/collection/store/{viewport → vp}/viewport.store.js +4 -7
  140. package/dist/collection/store/vp/viewport.store.js.map +1 -0
  141. package/dist/collection/types/index.js +11 -0
  142. package/dist/collection/types/index.js.map +1 -0
  143. package/dist/collection/types/interfaces.js +4 -0
  144. package/dist/collection/types/interfaces.js.map +1 -1
  145. package/dist/collection/types/viewport.interfaces.js.map +1 -1
  146. package/dist/collection/utils/events.js +11 -1
  147. package/dist/collection/utils/events.js.map +1 -1
  148. package/dist/collection/utils/index.js +0 -1
  149. package/dist/collection/utils/index.js.map +1 -1
  150. package/dist/collection/utils/row-header-utils.js +2 -2
  151. package/dist/collection/utils/row-header-utils.js.map +1 -1
  152. package/dist/collection/utils/store.utils.js.map +1 -1
  153. package/dist/esm/app-globals-ef1fca59.js.map +1 -1
  154. package/dist/esm/base.plugin-d0e589d8.js +213 -0
  155. package/dist/esm/base.plugin-d0e589d8.js.map +1 -0
  156. package/dist/esm/{column.service-f4922a8d.js → column.service-a826bbd6.js} +27 -11
  157. package/dist/esm/column.service-a826bbd6.js.map +1 -0
  158. package/dist/esm/dimension.helpers-a3065cb1.js.map +1 -1
  159. package/dist/esm/events-77b43b40.js +48 -0
  160. package/dist/esm/events-77b43b40.js.map +1 -0
  161. package/dist/esm/filter.button-46ce4f80.js.map +1 -1
  162. package/dist/esm/{header-cell-renderer-ac962570.js → header-cell-renderer-19738045.js} +2 -2
  163. package/dist/esm/{header-cell-renderer-ac962570.js.map → header-cell-renderer-19738045.js.map} +1 -1
  164. package/dist/esm/{index-98fd0168.js → index-5a722722.js} +3 -4
  165. package/dist/esm/index-5a722722.js.map +1 -0
  166. package/dist/esm/index.js +4 -4
  167. package/dist/esm/{key.utils-2836e8ae.js → key.utils-7c5d91dd.js} +2 -2
  168. package/dist/esm/{key.utils-2836e8ae.js.map → key.utils-7c5d91dd.js.map} +1 -1
  169. package/dist/esm/revo-grid.entry.js +42 -132
  170. package/dist/esm/revo-grid.entry.js.map +1 -1
  171. package/dist/esm/revogr-attribution_6.entry.js +187 -136
  172. package/dist/esm/revogr-attribution_6.entry.js.map +1 -1
  173. package/dist/esm/revogr-clipboard_3.entry.js +2 -2
  174. package/dist/esm/revogr-clipboard_3.entry.js.map +1 -1
  175. package/dist/esm/revogr-data_4.entry.js +9 -9
  176. package/dist/esm/revogr-data_4.entry.js.map +1 -1
  177. package/dist/esm/revogr-filter-panel.entry.js.map +1 -1
  178. package/dist/esm/{selection.store-2577ddf9.js → selection.helpers-883ce6bc.js} +77 -75
  179. package/dist/esm/selection.helpers-883ce6bc.js.map +1 -0
  180. package/dist/esm/{throttle-cfd527d6.js → throttle-eeca0062.js} +2 -2
  181. package/dist/esm/{throttle-cfd527d6.js.map → throttle-eeca0062.js.map} +1 -1
  182. package/dist/esm/{viewport.helpers-6591d423.js → viewport.store-d9e291c5.js} +187 -3
  183. package/dist/esm/viewport.store-d9e291c5.js.map +1 -0
  184. package/dist/revo-grid/app-globals-ef1fca59.js.map +1 -1
  185. package/dist/revo-grid/base.plugin-d0e589d8.js +5 -0
  186. package/dist/revo-grid/base.plugin-d0e589d8.js.map +1 -0
  187. package/dist/revo-grid/column.service-a826bbd6.js +5 -0
  188. package/dist/revo-grid/column.service-a826bbd6.js.map +1 -0
  189. package/dist/revo-grid/dimension.helpers-a3065cb1.js.map +1 -1
  190. package/dist/revo-grid/events-77b43b40.js +5 -0
  191. package/dist/revo-grid/events-77b43b40.js.map +1 -0
  192. package/dist/revo-grid/filter.button-46ce4f80.js.map +1 -1
  193. package/dist/revo-grid/{header-cell-renderer-ac962570.js → header-cell-renderer-19738045.js} +2 -2
  194. package/dist/revo-grid/{header-cell-renderer-ac962570.js.map → header-cell-renderer-19738045.js.map} +1 -1
  195. package/dist/revo-grid/index-5a722722.js +5 -0
  196. package/dist/{esm/index-98fd0168.js.map → revo-grid/index-5a722722.js.map} +1 -1
  197. package/dist/revo-grid/index.esm.js +1 -1
  198. package/dist/revo-grid/{key.utils-2836e8ae.js → key.utils-7c5d91dd.js} +2 -2
  199. package/dist/revo-grid/key.utils-7c5d91dd.js.map +1 -0
  200. package/dist/revo-grid/revo-grid.entry.js +1 -1
  201. package/dist/revo-grid/revo-grid.entry.js.map +1 -1
  202. package/dist/revo-grid/revogr-attribution_6.entry.js +1 -1
  203. package/dist/revo-grid/revogr-attribution_6.entry.js.map +1 -1
  204. package/dist/revo-grid/revogr-clipboard_3.entry.js +1 -1
  205. package/dist/revo-grid/revogr-clipboard_3.entry.js.map +1 -1
  206. package/dist/revo-grid/revogr-data_4.entry.js +1 -1
  207. package/dist/revo-grid/revogr-data_4.entry.js.map +1 -1
  208. package/dist/revo-grid/revogr-filter-panel.entry.js.map +1 -1
  209. package/dist/revo-grid/selection.helpers-883ce6bc.js +5 -0
  210. package/dist/revo-grid/selection.helpers-883ce6bc.js.map +1 -0
  211. package/dist/revo-grid/{throttle-cfd527d6.js → throttle-eeca0062.js} +2 -2
  212. package/dist/revo-grid/viewport.store-d9e291c5.js +5 -0
  213. package/dist/revo-grid/viewport.store-d9e291c5.js.map +1 -0
  214. package/dist/types/components/clipboard/revogr-clipboard.d.ts +1 -1
  215. package/dist/types/components/data/cell-renderer.d.ts +1 -1
  216. package/dist/types/components/data/column.service.d.ts +5 -5
  217. package/dist/types/components/data/revogr-data.d.ts +4 -4
  218. package/dist/types/components/data/row-highlight.plugin.d.ts +1 -1
  219. package/dist/types/components/editors/edit.utils.d.ts +1 -1
  220. package/dist/types/components/editors/revogr-edit.d.ts +2 -2
  221. package/dist/types/components/editors/text-editor.d.ts +2 -2
  222. package/dist/types/components/header/header-cell-renderer.d.ts +1 -1
  223. package/dist/types/components/header/header-renderer.d.ts +2 -2
  224. package/dist/types/components/header/revogr-header.d.ts +4 -4
  225. package/dist/types/components/order/order-renderer.d.ts +2 -2
  226. package/dist/types/components/order/order-row.service.d.ts +1 -2
  227. package/dist/types/components/order/revogr-order-editor.d.ts +7 -4
  228. package/dist/types/components/overlay/autofill.service.d.ts +11 -10
  229. package/dist/types/components/overlay/keyboard.service.d.ts +4 -5
  230. package/dist/types/components/overlay/revogr-overlay-selection.d.ts +42 -19
  231. package/dist/types/components/overlay/selection.utils.d.ts +13 -6
  232. package/dist/types/components/revoGrid/grid.helpers.d.ts +1 -1
  233. package/dist/types/components/revoGrid/revo-grid.d.ts +10 -7
  234. package/dist/types/components/revoGrid/viewport.helpers.d.ts +14 -5
  235. package/dist/types/components/revoGrid/viewport.scrolling.service.d.ts +1 -3
  236. package/dist/types/components/revoGrid/viewport.service.d.ts +1 -4
  237. package/dist/types/components/rowHeaders/revogr-row-headers.d.ts +1 -2
  238. package/dist/types/components/rowHeaders/row-header-render.d.ts +1 -1
  239. package/dist/types/components/scroll/revogr-viewport-scroll.d.ts +2 -2
  240. package/dist/types/components/scrollable/revogr-scroll-virtual.d.ts +2 -2
  241. package/dist/types/components/selectionFocus/revogr-focus.d.ts +3 -5
  242. package/dist/types/components/selectionTempRange/revogr-temp-range.d.ts +2 -2
  243. package/dist/types/components/vnode/vnode.utils.d.ts +1 -1
  244. package/dist/types/components.d.ts +30 -16
  245. package/dist/types/index.d.ts +2 -12
  246. package/dist/types/plugins/export/export.plugin.d.ts +1 -1
  247. package/dist/types/plugins/export/types.d.ts +1 -1
  248. package/dist/types/plugins/filter/filter.button.d.ts +1 -1
  249. package/dist/types/plugins/filter/filter.plugin.d.ts +2 -2
  250. package/dist/types/plugins/filter/filter.pop.d.ts +1 -1
  251. package/dist/types/plugins/groupingColumn/columnGroupsRenderer.d.ts +3 -4
  252. package/dist/types/plugins/groupingColumn/grouping.col.plugin.d.ts +3 -3
  253. package/dist/types/plugins/groupingColumn/headerGroupRenderer.d.ts +2 -2
  254. package/dist/types/plugins/groupingRow/grouping.row.expand.service.d.ts +1 -1
  255. package/dist/types/plugins/groupingRow/grouping.row.plugin.d.ts +2 -2
  256. package/dist/types/plugins/groupingRow/grouping.row.renderer.d.ts +1 -1
  257. package/dist/types/plugins/groupingRow/grouping.row.types.d.ts +1 -1
  258. package/dist/types/plugins/groupingRow/grouping.service.d.ts +1 -1
  259. package/dist/types/plugins/groupingRow/grouping.trimmed.service.d.ts +1 -1
  260. package/dist/types/plugins/moveColumn/column.drag.plugin.d.ts +1 -3
  261. package/dist/types/plugins/sorting/sorting.plugin.d.ts +1 -3
  262. package/dist/types/plugins/sorting/sorting.sign.d.ts +1 -1
  263. package/dist/types/services/column.data.provider.d.ts +2 -3
  264. package/dist/types/services/data.provider.d.ts +2 -5
  265. package/dist/types/services/dimension.provider.d.ts +2 -4
  266. package/dist/types/services/selection.store.connector.d.ts +2 -3
  267. package/dist/types/services/viewport.provider.d.ts +3 -3
  268. package/dist/types/store/dataSource/data.proxy.d.ts +2 -2
  269. package/dist/types/store/dataSource/data.store.d.ts +3 -3
  270. package/dist/types/store/dataSource/trimmed.plugin.d.ts +1 -1
  271. package/dist/types/store/dimension/dimension.helpers.d.ts +1 -1
  272. package/dist/types/store/dimension/dimension.store.d.ts +4 -5
  273. package/dist/types/store/{storeTypes.d.ts → index.d.ts} +5 -1
  274. package/dist/types/store/selection/index.d.ts +0 -1
  275. package/dist/types/store/selection/selection.helpers.d.ts +1 -1
  276. package/dist/types/store/selection/selection.store.d.ts +2 -2
  277. package/dist/types/store/vp/index.d.ts +7 -0
  278. package/dist/types/store/{viewport → vp}/viewport.helpers.d.ts +1 -1
  279. package/dist/types/store/{viewport → vp}/viewport.store.d.ts +3 -7
  280. package/dist/types/types/index.d.ts +7 -0
  281. package/dist/types/types/interfaces.d.ts +444 -23
  282. package/dist/types/types/viewport.interfaces.d.ts +5 -8
  283. package/dist/types/utils/events.d.ts +4 -1
  284. package/dist/types/utils/index.d.ts +0 -1
  285. package/dist/types/utils/row-header-utils.d.ts +1 -1
  286. package/dist/types/utils/store.utils.d.ts +1 -1
  287. package/hydrate/index.js +3224 -3126
  288. package/package.json +7 -8
  289. package/standalone/_baseIteratee.js +1104 -13
  290. package/standalone/_baseIteratee.js.map +1 -1
  291. package/standalone/_nodeUtil.js +260 -0
  292. package/standalone/_nodeUtil.js.map +1 -0
  293. package/standalone/column.service.js +78 -74
  294. package/standalone/column.service.js.map +1 -1
  295. package/standalone/data.store.js +2 -4
  296. package/standalone/data.store.js.map +1 -1
  297. package/standalone/debounce.js +2 -2
  298. package/standalone/dimension.helpers.js +1 -1
  299. package/standalone/dimension.helpers.js.map +1 -1
  300. package/standalone/filter.button.js.map +1 -1
  301. package/standalone/identity.js +42 -2
  302. package/standalone/identity.js.map +1 -1
  303. package/standalone/index.js +5 -7
  304. package/standalone/index.js.map +1 -1
  305. package/standalone/index2.js +2 -3
  306. package/standalone/index2.js.map +1 -1
  307. package/standalone/isObjectLike.js +1 -34
  308. package/standalone/isObjectLike.js.map +1 -1
  309. package/standalone/revo-grid.js +125 -106
  310. package/standalone/revo-grid.js.map +1 -1
  311. package/standalone/revogr-clipboard2.js.map +1 -1
  312. package/standalone/revogr-data2.js +3 -0
  313. package/standalone/revogr-data2.js.map +1 -1
  314. package/standalone/revogr-edit2.js +1 -1
  315. package/standalone/revogr-edit2.js.map +1 -1
  316. package/standalone/revogr-filter-panel.js.map +1 -1
  317. package/standalone/revogr-focus2.js +7 -3
  318. package/standalone/revogr-focus2.js.map +1 -1
  319. package/standalone/revogr-header2.js +5 -4
  320. package/standalone/revogr-header2.js.map +1 -1
  321. package/standalone/revogr-order-editor2.js +3 -0
  322. package/standalone/revogr-order-editor2.js.map +1 -1
  323. package/standalone/revogr-overlay-selection2.js +143 -143
  324. package/standalone/revogr-overlay-selection2.js.map +1 -1
  325. package/standalone/revogr-row-headers2.js +7 -7
  326. package/standalone/revogr-row-headers2.js.map +1 -1
  327. package/standalone/revogr-scroll-virtual2.js +1 -1
  328. package/standalone/revogr-scroll-virtual2.js.map +1 -1
  329. package/standalone/revogr-temp-range2.js +1 -1
  330. package/standalone/revogr-temp-range2.js.map +1 -1
  331. package/standalone/revogr-viewport-scroll2.js +23 -9
  332. package/standalone/revogr-viewport-scroll2.js.map +1 -1
  333. package/standalone/selection.utils.js +76 -9
  334. package/standalone/selection.utils.js.map +1 -1
  335. package/standalone/throttle.js +1 -1
  336. package/standalone/toNumber.js +35 -2
  337. package/standalone/toNumber.js.map +1 -1
  338. package/dist/cjs/column.service-e83d9809.js.map +0 -1
  339. package/dist/cjs/events-7ccd6894.js +0 -233
  340. package/dist/cjs/events-7ccd6894.js.map +0 -1
  341. package/dist/cjs/index-73c149e3.js.map +0 -1
  342. package/dist/cjs/selection.store-2e110a67.js.map +0 -1
  343. package/dist/cjs/storeTypes-b3f924b2.js +0 -106
  344. package/dist/cjs/storeTypes-b3f924b2.js.map +0 -1
  345. package/dist/cjs/viewport.helpers-6670177c.js.map +0 -1
  346. package/dist/collection/store/selection/selection.store.service.js +0 -39
  347. package/dist/collection/store/selection/selection.store.service.js.map +0 -1
  348. package/dist/collection/store/storeTypes.js.map +0 -1
  349. package/dist/collection/store/viewport/index.js.map +0 -1
  350. package/dist/collection/store/viewport/viewport.helpers.js.map +0 -1
  351. package/dist/collection/store/viewport/viewport.store.js.map +0 -1
  352. package/dist/esm/column.service-f4922a8d.js.map +0 -1
  353. package/dist/esm/events-3dd8ee7c.js +0 -228
  354. package/dist/esm/events-3dd8ee7c.js.map +0 -1
  355. package/dist/esm/selection.store-2577ddf9.js.map +0 -1
  356. package/dist/esm/storeTypes-f2647985.js +0 -101
  357. package/dist/esm/storeTypes-f2647985.js.map +0 -1
  358. package/dist/esm/viewport.helpers-6591d423.js.map +0 -1
  359. package/dist/revo-grid/column.service-f4922a8d.js +0 -5
  360. package/dist/revo-grid/column.service-f4922a8d.js.map +0 -1
  361. package/dist/revo-grid/events-3dd8ee7c.js +0 -5
  362. package/dist/revo-grid/events-3dd8ee7c.js.map +0 -1
  363. package/dist/revo-grid/index-98fd0168.js +0 -5
  364. package/dist/revo-grid/index-98fd0168.js.map +0 -1
  365. package/dist/revo-grid/key.utils-2836e8ae.js.map +0 -1
  366. package/dist/revo-grid/selection.store-2577ddf9.js +0 -5
  367. package/dist/revo-grid/selection.store-2577ddf9.js.map +0 -1
  368. package/dist/revo-grid/storeTypes-f2647985.js +0 -5
  369. package/dist/revo-grid/storeTypes-f2647985.js.map +0 -1
  370. package/dist/revo-grid/viewport.helpers-6591d423.js +0 -5
  371. package/dist/revo-grid/viewport.helpers-6591d423.js.map +0 -1
  372. package/dist/types/store/selection/selection.store.service.d.ts +0 -17
  373. package/dist/types/store/viewport/index.d.ts +0 -2
  374. package/standalone/_stringToPath.js +0 -1389
  375. package/standalone/_stringToPath.js.map +0 -1
  376. /package/dist/collection/store/{viewport → vp}/index.js +0 -0
  377. /package/dist/collection/store/{viewport → vp}/viewport.helpers.js +0 -0
  378. /package/dist/revo-grid/{throttle-cfd527d6.js.map → throttle-eeca0062.js.map} +0 -0
@@ -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":"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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';\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
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sorting.plugin.js","sourceRoot":"","sources":["../../../src/plugins/sorting/sorting.plugin.ts"],"names":[],"mappings":"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","sourcesContent":["import size from 'lodash/size';\nimport debounce from 'lodash/debounce';\nimport range from 'lodash/range';\n\nimport { setStore } from '../../utils/store.utils';\nimport ColumnDataProvider from '../../services/column.data.provider';\nimport { BasePlugin } from '../base.plugin';\nimport {\n ColumnProp,\n Order,\n CellCompareFunc,\n ColumnRegular,\n InitialHeaderClick,\n DataType,\n} from '../..';\nimport { DimensionRows } from '../..';\nimport { PluginProviders } from '../../';\n\nexport type SortingOrder = Record<ColumnProp, Order>;\ntype SortingOrderFunction = Record<ColumnProp, CellCompareFunc | undefined>;\ntype ColumnSetEvent = {\n order: SortingOrder;\n};\n\n/**\n * Lifecycle\n * 1. @event `beforesorting` - Triggered when sorting just starts. Nothing has happened yet. This can be triggered from a column or from the source. If the type is from rows, the column will be undefined.\n * 2. @method `updateColumnSorting` - Updates the column sorting icon on the grid and the column itself, but the data remains untouched.\n * 3. @event `beforesortingapply` - Triggered before the sorting data is applied to the data source. You can prevent this event, and the data will not be sorted. This event is only called from a column sorting click.\n * 4. @event `aftersortingapply` - Triggered after sorting has been applied and completed. This event occurs for both row and column sorting.\n *\n * Note: If you prevent an event, it will not proceed to the subsequent steps.\n */\n\nexport default class SortingPlugin extends BasePlugin {\n // sorting order per column\n private sorting: SortingOrder | null = null;\n\n // sorting function per column, multiple columns sorting supported\n private sortingFunc: SortingOrderFunction | null = null;\n private sortingPromise: (() => void) | null = null;\n private postponeSort = debounce(\n async (order: SortingOrder, comparison: SortingOrderFunction) => this.runSorting(order, comparison),\n 50,\n );\n\n private async runSorting(order: SortingOrder, comparison: SortingOrderFunction) {\n await this.sort(order, comparison);\n this.sortingPromise?.();\n this.sortingPromise = null;\n }\n\n constructor(\n protected revogrid: HTMLRevoGridElement,\n providers: PluginProviders,\n ) {\n super(revogrid, providers);\n\n const beforeanysource = async ({\n detail: { type, },\n }: CustomEvent<{\n type: DimensionRows;\n source: any[];\n }>) => {\n // if sorting was provided - sort data\n if (!!this.sorting && this.sortingFunc) {\n const beforeEvent = this.emit('beforesorting', { type });\n if (beforeEvent.defaultPrevented) {\n return;\n }\n this.startSorting(this.sorting, this.sortingFunc);\n }\n };\n const aftercolumnsset = async ({\n detail: { order },\n }: CustomEvent<ColumnSetEvent>) => {\n const columns = await this.revogrid.getColumns();\n const sortingFunc: SortingOrderFunction = {};\n\n for (let prop in order) {\n const cmp = this.getComparer(\n ColumnDataProvider.getColumnByProp(columns, prop),\n order[prop],\n );\n sortingFunc[prop] = cmp;\n }\n this.runSorting(order, sortingFunc);\n };\n const headerclick = async (e: CustomEvent<InitialHeaderClick>) => {\n if (e.defaultPrevented) {\n return;\n }\n\n if (!e.detail.column.sortable) {\n return;\n }\n\n this.headerclick(\n e.detail.column,\n e.detail.index,\n e.detail?.originalEvent?.shiftKey,\n );\n };\n\n this.addEventListener('beforeanysource', beforeanysource);\n this.addEventListener('aftercolumnsset', aftercolumnsset);\n this.addEventListener('beforeheaderclick', headerclick);\n }\n\n private startSorting(order: SortingOrder, sortingFunc: SortingOrderFunction) {\n if (!this.sortingPromise) {\n this.revogrid.jobsBeforeRender.push(new Promise<void>((resolve) => {\n this.sortingPromise = resolve;\n }));\n }\n this.postponeSort(order, sortingFunc);\n }\n\n private getComparer(column: ColumnRegular, order: Order): CellCompareFunc {\n const cellCmp: CellCompareFunc =\n column?.cellCompare?.bind({ order }) || this.defaultCellCompare;\n if (order == 'asc') {\n return cellCmp;\n }\n if (order == 'desc') {\n return this.descCellCompare(cellCmp);\n }\n return undefined;\n }\n\n /**\n * Apply sorting to data on header click\n * If additive - add to existing sorting, multiple columns can be sorted\n */\n async headerclick(column: ColumnRegular, index: number, additive: boolean) {\n let order: Order = this.getNextOrder(column.order);\n const beforeEvent = this.emit('beforesorting', { column, order, additive });\n if (beforeEvent.defaultPrevented) {\n return;\n }\n order = beforeEvent.detail.order;\n const newCol = await this.revogrid.updateColumnSorting(\n beforeEvent.detail.column,\n index,\n order,\n additive,\n );\n\n // apply sort data\n const beforeApplyEvent = this.emit('beforesortingapply', {\n column: newCol,\n order,\n additive,\n });\n if (beforeApplyEvent.defaultPrevented) {\n return;\n }\n order = beforeApplyEvent.detail.order;\n const cmp = this.getComparer(column, order);\n\n if (additive && this.sorting) {\n const sorting: SortingOrder = {};\n const sortingFunc: SortingOrderFunction = {};\n\n this.sorting = {\n ...this.sorting,\n ...sorting,\n };\n // extend sorting function with new sorting for multiple columns sorting\n this.sortingFunc = {\n ...this.sortingFunc,\n ...sortingFunc,\n };\n\n if (column.prop in sorting && size(sorting) > 1 && order === undefined) {\n delete sorting[column.prop];\n delete sortingFunc[column.prop];\n } else {\n sorting[column.prop] = order;\n sortingFunc[column.prop] = cmp;\n }\n } else {\n if (order) {\n // reset sorting\n this.sorting = { [column.prop]: order };\n this.sortingFunc = { [column.prop]: cmp };\n } else {\n delete this.sorting[column.prop];\n delete this.sortingFunc[column.prop];\n }\n }\n\n this.startSorting(this.sorting, this.sortingFunc);\n }\n\n /**\n * Sort items by sorting function\n * @requires proxyItems applied to row store\n * @requires source applied to row store\n *\n * @param sorting - per column sorting\n * @param data - this.stores['rgRow'].store.get('source')\n */\n async sort(\n sorting: SortingOrder,\n sortingFunc: SortingOrderFunction,\n types: DimensionRows[] = ['rgRow', 'rowPinStart', 'rowPinEnd'],\n ) {\n // if no sorting - reset\n if (!size(sorting)) {\n this.sorting = null;\n this.sortingFunc = null;\n\n for (let type of types) {\n const store = await this.revogrid.getSourceStore(type);\n // row data\n const source = store.get('source');\n // row indexes\n const proxyItems = range(0, source.length);\n setStore(store, {\n proxyItems,\n source: [...source],\n });\n }\n } else {\n // set sorting\n this.sorting = sorting;\n this.sortingFunc = sortingFunc;\n\n // by default it'll sort by rgRow store\n // todo: support multiple stores\n for (let type of types) {\n const store = await this.revogrid.getSourceStore(type);\n // row data\n const source = store.get('source');\n // row indexes\n const proxyItems = store.get('proxyItems');\n const data = this.sortIndexByItems(\n [...proxyItems],\n source,\n sortingFunc,\n );\n setStore(store, {\n proxyItems: data,\n source: [...source],\n });\n }\n }\n this.emit('aftersortingapply');\n }\n\n defaultCellCompare(prop: ColumnProp, a: DataType, b: DataType) {\n const av = a[prop]?.toString().toLowerCase();\n const bv = b[prop]?.toString().toLowerCase();\n\n return av == bv ? 0 : av > bv ? 1 : -1;\n }\n\n descCellCompare(cmp: CellCompareFunc) {\n return (prop: ColumnProp, a: DataType, b: DataType): number => {\n return -1 * cmp(prop, a, b);\n };\n }\n\n sortIndexByItems(\n indexes: number[],\n source: DataType[],\n sortingFunc: SortingOrderFunction,\n ): number[] {\n // if no sorting - return unsorted indexes\n if (Object.entries(sortingFunc).length === 0) {\n // Unsort indexes\n return [...Array(indexes.length).keys()];\n }\n //\n /**\n * go through all indexes and align in new order\n * performs a multi-level sorting by applying multiple comparison functions to determine the order of the items based on different properties.\n */\n return indexes.sort((a, b) => {\n for (const [prop, cmp] of Object.entries(sortingFunc)) {\n const itemA = source[a];\n const itemB = source[b];\n\n /**\n * If the comparison function returns a non-zero value (sorted), it means that the items should be sorted based on the given property. In such a case, the function immediately returns the sorted value, indicating the order in which the items should be arranged.\n * If none of the comparison functions result in a non-zero value, indicating that the items are equal or should remain in the same order, the function eventually returns 0.\n */\n const sorted = cmp(prop, itemA, itemB);\n if (sorted) {\n return sorted;\n }\n }\n return 0;\n });\n }\n\n getNextOrder(currentOrder: Order): Order {\n switch (currentOrder) {\n case undefined:\n return 'asc';\n case 'asc':\n return 'desc';\n case 'desc':\n return undefined;\n }\n }\n}\n"]}
1
+ {"version":3,"file":"sorting.plugin.js","sourceRoot":"","sources":["../../../src/plugins/sorting/sorting.plugin.ts"],"names":[],"mappings":"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","sourcesContent":["import size from 'lodash/size';\nimport debounce from 'lodash/debounce';\nimport range from 'lodash/range';\n\nimport { setStore } from '../../utils/store.utils';\nimport ColumnDataProvider from '../../services/column.data.provider';\nimport { BasePlugin } from '../base.plugin';\nimport {\n ColumnProp,\n Order,\n CellCompareFunc,\n ColumnRegular,\n InitialHeaderClick,\n DataType,\n DimensionRows,\n PluginProviders,\n} from '@type';\n\nexport type SortingOrder = Record<ColumnProp, Order>;\ntype SortingOrderFunction = Record<ColumnProp, CellCompareFunc | undefined>;\ntype ColumnSetEvent = {\n order: SortingOrder;\n};\n\n/**\n * Lifecycle\n * 1. @event `beforesorting` - Triggered when sorting just starts. Nothing has happened yet. This can be triggered from a column or from the source. If the type is from rows, the column will be undefined.\n * 2. @method `updateColumnSorting` - Updates the column sorting icon on the grid and the column itself, but the data remains untouched.\n * 3. @event `beforesortingapply` - Triggered before the sorting data is applied to the data source. You can prevent this event, and the data will not be sorted. This event is only called from a column sorting click.\n * 4. @event `aftersortingapply` - Triggered after sorting has been applied and completed. This event occurs for both row and column sorting.\n *\n * Note: If you prevent an event, it will not proceed to the subsequent steps.\n */\n\nexport default class SortingPlugin extends BasePlugin {\n // sorting order per column\n private sorting: SortingOrder | null = null;\n\n // sorting function per column, multiple columns sorting supported\n private sortingFunc: SortingOrderFunction | null = null;\n private sortingPromise: (() => void) | null = null;\n private postponeSort = debounce(\n async (order: SortingOrder, comparison: SortingOrderFunction) =>\n this.runSorting(order, comparison),\n 50,\n );\n\n private async runSorting(\n order: SortingOrder,\n comparison: SortingOrderFunction,\n ) {\n await this.sort(order, comparison);\n this.sortingPromise?.();\n this.sortingPromise = null;\n }\n\n constructor(\n protected revogrid: HTMLRevoGridElement,\n providers: PluginProviders,\n ) {\n super(revogrid, providers);\n\n const beforeanysource = async ({\n detail: { type },\n }: CustomEvent<{\n type: DimensionRows;\n source: any[];\n }>) => {\n // if sorting was provided - sort data\n if (!!this.sorting && this.sortingFunc) {\n const beforeEvent = this.emit('beforesorting', { type });\n if (beforeEvent.defaultPrevented) {\n return;\n }\n this.startSorting(this.sorting, this.sortingFunc);\n }\n };\n const aftercolumnsset = async ({\n detail: { order },\n }: CustomEvent<ColumnSetEvent>) => {\n const columns = await this.revogrid.getColumns();\n const sortingFunc: SortingOrderFunction = {};\n\n for (let prop in order) {\n const cmp = this.getComparer(\n ColumnDataProvider.getColumnByProp(columns, prop),\n order[prop],\n );\n sortingFunc[prop] = cmp;\n }\n this.runSorting(order, sortingFunc);\n };\n const headerclick = async (e: CustomEvent<InitialHeaderClick>) => {\n if (e.defaultPrevented) {\n return;\n }\n\n if (!e.detail.column.sortable) {\n return;\n }\n\n this.headerclick(\n e.detail.column,\n e.detail.index,\n e.detail?.originalEvent?.shiftKey,\n );\n };\n\n this.addEventListener('beforeanysource', beforeanysource);\n this.addEventListener('aftercolumnsset', aftercolumnsset);\n this.addEventListener('beforeheaderclick', headerclick);\n }\n\n private startSorting(order: SortingOrder, sortingFunc: SortingOrderFunction) {\n if (!this.sortingPromise) {\n this.revogrid.jobsBeforeRender.push(\n new Promise<void>(resolve => {\n this.sortingPromise = resolve;\n }),\n );\n }\n this.postponeSort(order, sortingFunc);\n }\n\n private getComparer(column: ColumnRegular, order: Order): CellCompareFunc {\n const cellCmp: CellCompareFunc =\n column?.cellCompare?.bind({ order }) || this.defaultCellCompare;\n if (order == 'asc') {\n return cellCmp;\n }\n if (order == 'desc') {\n return this.descCellCompare(cellCmp);\n }\n return undefined;\n }\n\n /**\n * Apply sorting to data on header click\n * If additive - add to existing sorting, multiple columns can be sorted\n */\n async headerclick(column: ColumnRegular, index: number, additive: boolean) {\n let order: Order = this.getNextOrder(column.order);\n const beforeEvent = this.emit('beforesorting', { column, order, additive });\n if (beforeEvent.defaultPrevented) {\n return;\n }\n order = beforeEvent.detail.order;\n const newCol = await this.revogrid.updateColumnSorting(\n beforeEvent.detail.column,\n index,\n order,\n additive,\n );\n\n // apply sort data\n const beforeApplyEvent = this.emit('beforesortingapply', {\n column: newCol,\n order,\n additive,\n });\n if (beforeApplyEvent.defaultPrevented) {\n return;\n }\n order = beforeApplyEvent.detail.order;\n const cmp = this.getComparer(column, order);\n\n if (additive && this.sorting) {\n const sorting: SortingOrder = {};\n const sortingFunc: SortingOrderFunction = {};\n\n this.sorting = {\n ...this.sorting,\n ...sorting,\n };\n // extend sorting function with new sorting for multiple columns sorting\n this.sortingFunc = {\n ...this.sortingFunc,\n ...sortingFunc,\n };\n\n if (column.prop in sorting && size(sorting) > 1 && order === undefined) {\n delete sorting[column.prop];\n delete sortingFunc[column.prop];\n } else {\n sorting[column.prop] = order;\n sortingFunc[column.prop] = cmp;\n }\n } else {\n if (order) {\n // reset sorting\n this.sorting = { [column.prop]: order };\n this.sortingFunc = { [column.prop]: cmp };\n } else {\n delete this.sorting[column.prop];\n delete this.sortingFunc[column.prop];\n }\n }\n\n this.startSorting(this.sorting, this.sortingFunc);\n }\n\n /**\n * Sort items by sorting function\n * @requires proxyItems applied to row store\n * @requires source applied to row store\n *\n * @param sorting - per column sorting\n * @param data - this.stores['rgRow'].store.get('source')\n */\n async sort(\n sorting: SortingOrder,\n sortingFunc: SortingOrderFunction,\n types: DimensionRows[] = ['rgRow', 'rowPinStart', 'rowPinEnd'],\n ) {\n // if no sorting - reset\n if (!size(sorting)) {\n this.sorting = null;\n this.sortingFunc = null;\n\n for (let type of types) {\n const store = await this.revogrid.getSourceStore(type);\n // row data\n const source = store.get('source');\n // row indexes\n const proxyItems = range(0, source.length);\n setStore(store, {\n proxyItems,\n source: [...source],\n });\n }\n } else {\n // set sorting\n this.sorting = sorting;\n this.sortingFunc = sortingFunc;\n\n // by default it'll sort by rgRow store\n // todo: support multiple stores\n for (let type of types) {\n const store = await this.revogrid.getSourceStore(type);\n // row data\n const source = store.get('source');\n // row indexes\n const proxyItems = store.get('proxyItems');\n const data = this.sortIndexByItems(\n [...proxyItems],\n source,\n sortingFunc,\n );\n setStore(store, {\n proxyItems: data,\n source: [...source],\n });\n }\n }\n this.emit('aftersortingapply');\n }\n\n defaultCellCompare(prop: ColumnProp, a: DataType, b: DataType) {\n const av = a[prop]?.toString().toLowerCase();\n const bv = b[prop]?.toString().toLowerCase();\n\n return av == bv ? 0 : av > bv ? 1 : -1;\n }\n\n descCellCompare(cmp: CellCompareFunc) {\n return (prop: ColumnProp, a: DataType, b: DataType): number => {\n return -1 * cmp(prop, a, b);\n };\n }\n\n sortIndexByItems(\n indexes: number[],\n source: DataType[],\n sortingFunc: SortingOrderFunction,\n ): number[] {\n // if no sorting - return unsorted indexes\n if (Object.entries(sortingFunc).length === 0) {\n // Unsort indexes\n return [...Array(indexes.length).keys()];\n }\n //\n /**\n * go through all indexes and align in new order\n * performs a multi-level sorting by applying multiple comparison functions to determine the order of the items based on different properties.\n */\n return indexes.sort((a, b) => {\n for (const [prop, cmp] of Object.entries(sortingFunc)) {\n const itemA = source[a];\n const itemB = source[b];\n\n /**\n * If the comparison function returns a non-zero value (sorted), it means that the items should be sorted based on the given property. In such a case, the function immediately returns the sorted value, indicating the order in which the items should be arranged.\n * If none of the comparison functions result in a non-zero value, indicating that the items are equal or should remain in the same order, the function eventually returns 0.\n */\n const sorted = cmp(prop, itemA, itemB);\n if (sorted) {\n return sorted;\n }\n }\n return 0;\n });\n }\n\n getNextOrder(currentOrder: Order): Order {\n switch (currentOrder) {\n case undefined:\n return 'asc';\n case 'asc':\n return 'desc';\n case 'desc':\n return undefined;\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"sorting.sign.js","sourceRoot":"","sources":["../../../src/plugins/sorting/sorting.sign.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAGlC,MAAM,CAAC,MAAM,mBAAmB,GAAG,WAAW,CAAC;AAC/C,MAAM,CAAC,MAAM,oBAAoB,GAAG,QAAQ,CAAC;AAK7C,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAAE,MAAM,EAAS,EAAE,EAAE;IAC/C,OAAO,SAAG,KAAK,EAAE,MAAM,CAAC,KAAK,GAAI,CAAC;AACpC,CAAC,CAAC","sourcesContent":["import { h } from '@stencil/core';\nimport { ColumnRegular } from '../../types/interfaces';\n\nexport const FILTER_BUTTON_CLASS = 'rv-filter';\nexport const FILTER_BUTTON_ACTIVE = 'active';\n\ntype Props = {\n column: ColumnRegular;\n};\nexport const SortingSign = ({ column }: Props) => {\n return <i class={column.order} />;\n};\n"]}
1
+ {"version":3,"file":"sorting.sign.js","sourceRoot":"","sources":["../../../src/plugins/sorting/sorting.sign.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAGlC,MAAM,CAAC,MAAM,mBAAmB,GAAG,WAAW,CAAC;AAC/C,MAAM,CAAC,MAAM,oBAAoB,GAAG,QAAQ,CAAC;AAK7C,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAAE,MAAM,EAAS,EAAE,EAAE;IAC/C,OAAO,SAAG,KAAK,EAAE,MAAM,CAAC,KAAK,GAAI,CAAC;AACpC,CAAC,CAAC","sourcesContent":["import { h } from '@stencil/core';\nimport { ColumnRegular } from '@type';\n\nexport const FILTER_BUTTON_CLASS = 'rv-filter';\nexport const FILTER_BUTTON_ACTIVE = 'active';\n\ntype Props = {\n column: ColumnRegular;\n};\nexport const SortingSign = ({ column }: Props) => {\n return <i class={column.order} />;\n};\n"]}
@@ -1,44 +1,84 @@
1
1
  import { generateFakeDataObject } from './data.js';
2
2
 
3
+ /**
4
+ * Map of prevented events
5
+ */
3
6
  window.eventsPrevented = {};
7
+
8
+ /**
9
+ * Toggle row headers visibility
10
+ * @param {boolean} isShow - Show row headers if true, hide otherwise
11
+ */
4
12
  window.showRowHeaders = function (isShow) {
5
13
  const grid = document.querySelector('revo-grid');
6
14
  grid.rowHeaders = isShow;
7
15
  };
16
+
17
+ /**
18
+ * Toggle column grouping visibility
19
+ * @param {boolean} isShow - Show column grouping if true, hide otherwise
20
+ */
8
21
  window.showColGrouping = function (isShow) {
9
22
  setData({
10
23
  groupedHeader: isShow,
11
24
  });
12
25
  };
26
+
27
+ /**
28
+ * Set row size
29
+ * @param {number} s - Row size
30
+ */
13
31
  window.setRowSize = function (s) {
14
32
  const grid = document.querySelector('revo-grid');
15
33
  grid.rowSize = s;
16
34
  };
35
+
36
+ /**
37
+ * Start editing cell
38
+ * @param {number} rgRow - Row index
39
+ * @param {string} prop - Column property
40
+ */
17
41
  window.setEdit = function (rgRow, prop) {
18
42
  const grid = document.querySelector('revo-grid');
19
43
  grid.setCellEdit(rgRow, prop);
20
44
  };
45
+
46
+ /**
47
+ * Scroll to column
48
+ * @param {number} [x=30] - Column index
49
+ */
21
50
  window.scrollToCol = function (x = 30) {
22
51
  const grid = document.querySelector('revo-grid');
23
52
  grid.scrollToColumnProp(x);
24
53
  };
54
+
55
+ /**
56
+ * Clear grouping
57
+ */
25
58
  window.clearGrouping = function () {
26
59
  const grid = document.querySelector('revo-grid');
27
60
  grid.grouping = {};
28
61
  };
29
62
 
30
- // Row group
31
- window.setGrouping = function (
32
- props = [],
33
- expandedAll = false,
34
- ) {
63
+ /**
64
+ * Set row grouping
65
+ * @param {Array} props - Array of properties to group by
66
+ * @param {boolean} expandedAll - Expand all groups if true, collapse otherwise
67
+ */
68
+ window.setGrouping = function (props = [], expandedAll = false) {
35
69
  const grid = document.querySelector('revo-grid');
36
70
  grid.grouping = {
37
71
  props,
38
72
  expandedAll,
39
- groupLabelTemplate: (createElement, { name, depth }) => createElement('span', null, ` ${props[depth]}: ${name}`),
73
+ groupLabelTemplate: (createElement, { name, depth }) =>
74
+ createElement('span', null, ` ${props[depth]}: ${name}`),
40
75
  };
41
76
  };
77
+
78
+ /**
79
+ * Set trimmed rows
80
+ * @param {Array} rows - Array of row indexes to trim
81
+ */
42
82
  window.setTrimmed = function (rows = []) {
43
83
  const grid = document.querySelector('revo-grid');
44
84
  grid.trimmedRows = rows.reduce((r, v) => {
@@ -47,6 +87,10 @@ window.setTrimmed = function (rows = []) {
47
87
  }, {});
48
88
  };
49
89
 
90
+ /**
91
+ * Export grid
92
+ * @param {string} [filename='new file'] - File name
93
+ */
50
94
  window.exportGrid = function (filename = 'new file') {
51
95
  const grid = document.querySelector('revo-grid');
52
96
  grid.getPlugins().then(plugins => {
@@ -66,9 +110,12 @@ let defaultData = {
66
110
  bottomPinned: [],
67
111
  colPinEnd: [],
68
112
  colPinStart: [],
69
- // groupedHeader: true,
70
- // order: 5
71
113
  };
114
+
115
+ /**
116
+ * Set data
117
+ * @param {Object} [config={}] - Data configuration
118
+ */
72
119
  window.setData = function (config = {}) {
73
120
  defaultData = { ...defaultData, ...config };
74
121
  const $loader = document.querySelector('.loader');
@@ -85,6 +132,12 @@ window.setData = function (config = {}) {
85
132
  $loader.style.display = 'none';
86
133
  }, 0);
87
134
  };
135
+
136
+ /**
137
+ * Set pinned rows/columns
138
+ * @param {string} type - Type of pinned rows/columns
139
+ * @param {boolean} checked - True if rows/columns are pinned, false otherwise
140
+ */
88
141
  window.setPinned = function (type, checked) {
89
142
  const val = [];
90
143
  if (checked) {
@@ -108,12 +161,22 @@ window.setPinned = function (type, checked) {
108
161
  });
109
162
  };
110
163
 
111
- // prevent event debug
164
+ /**
165
+ * Prevent event debug
166
+ * @param {string} name - Event name
167
+ * @param {boolean} checked - True if event should be prevented, false otherwise
168
+ */
112
169
  window.preventEvent = function (name, checked) {
113
170
  eventsPrevented[name] = checked;
114
171
  };
172
+
115
173
  let keys = 2;
116
174
  let attrs = {};
175
+
176
+ /**
177
+ * Toggle visibility of grid
178
+ * @param {boolean} checked - True if grid is visible, false otherwise
179
+ */
117
180
  window.toggleVisibility = function (checked) {
118
181
  if (!checked) {
119
182
  const grid = document.querySelector('revo-grid');
@@ -141,6 +204,12 @@ window.toggleVisibility = function (checked) {
141
204
  };
142
205
 
143
206
  let timerUpdateInterval;
207
+
208
+ /**
209
+ * Toggle timer update
210
+ * @param {boolean} checked - True if timer should be updated, false otherwise
211
+ * @param {number} [inteval=3] - Update interval in seconds
212
+ */
144
213
  window.timerUpdate = function (checked, inteval = 3) {
145
214
  clearInterval(timerUpdateInterval);
146
215
  if (checked) {
@@ -151,6 +220,10 @@ window.timerUpdate = function (checked, inteval = 3) {
151
220
  }
152
221
  };
153
222
 
223
+ /**
224
+ * Set theme
225
+ * @param {string} theme - Theme name
226
+ */
154
227
  window.theme = function (theme) {
155
228
  const grid = document.querySelector('revo-grid');
156
229
  if (theme && theme.indexOf('dark') > -1) {
@@ -163,6 +236,9 @@ window.theme = function (theme) {
163
236
 
164
237
  window.onload = onLoad;
165
238
 
239
+ /**
240
+ * On load function
241
+ */
166
242
  function onLoad() {
167
243
  const grid = document.querySelector('revo-grid');
168
244
 
@@ -199,21 +275,13 @@ function onLoad() {
199
275
  grid.filter = true;
200
276
  grid.exporting = true;
201
277
  grid.rowHeaders = true;
202
- grid.rowDefinitions = [
203
- {
204
- type: 'rgRow',
205
- index: 1,
206
- size: 100,
207
- },
208
- ];
209
- grid.rowClass = 'row-style';
210
278
  // grid.stretch = true;
211
279
  /*
212
280
  grid.autoSizeColumn = {
213
281
  mode: 'autoSizeAll',
214
282
  };*/
215
283
  // default
216
- setData({ rows: 1000, cols: 1000 });
284
+ setData({ rows: 100, cols: 2 });
217
285
 
218
286
  // events testing
219
287
  // 'beforerange', 'setRange', 'beforefocuslost', 'beforecellfocus', 'afterfocus', 'beforeedit', 'aftercolumnresize'
@@ -4,8 +4,7 @@
4
4
  import reduce from "lodash/reduce";
5
5
  import each from "lodash/each";
6
6
  import find from "lodash/find";
7
- import DataStore, { getSourceItem, getSourceItemVirtualIndexByProp, setSourceByVirtualIndex, } from "../store/dataSource/data.store";
8
- import { columnTypes } from "../store/storeTypes";
7
+ import { columnTypes, DataStore, getSourceItem, getSourceItemVirtualIndexByProp, setSourceByVirtualIndex, } from "../store/index";
9
8
  import GroupingColumnPlugin, { isColGrouping, } from "../plugins/groupingColumn/grouping.col.plugin";
10
9
  export default class ColumnDataProvider {
11
10
  get order() {
@@ -1 +1 @@
1
- {"version":3,"file":"column.data.provider.js","sourceRoot":"","sources":["../../src/services/column.data.provider.ts"],"names":[],"mappings":"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","sourcesContent":["import reduce from 'lodash/reduce';\nimport each from 'lodash/each';\nimport find from 'lodash/find';\n\nimport DataStore, {\n getSourceItem,\n getSourceItemVirtualIndexByProp,\n Groups,\n setSourceByVirtualIndex,\n} from '../store/dataSource/data.store';\nimport { columnTypes } from '../store/storeTypes';\nimport GroupingColumnPlugin, {\n ColumnGroupingCollection,\n isColGrouping,\n} from '../plugins/groupingColumn/grouping.col.plugin';\nimport { ColumnData, ColumnDataSchema, ColumnProp, ColumnRegular, ColumnTypes, ViewSettingSizeProp } from '..';\nimport { DimensionCols, DimensionColPin } from '..';\n\nexport type ColumnCollection = {\n columns: Record<DimensionCols, ColumnRegular[]>;\n columnByProp: Record<ColumnProp, ColumnRegular[]>;\n columnGrouping: ColumnGroupingCollection;\n maxLevel: number;\n sort: Record<ColumnProp, ColumnRegular>;\n};\n\nexport type ColumnDataSources = Record<\n DimensionCols,\n DataStore<ColumnRegular, DimensionCols>\n>;\ntype Sorting = Record<ColumnProp, ColumnRegular>;\ntype SortingOrder = Record<ColumnProp, 'asc' | 'desc'>;\n\nexport default class ColumnDataProvider {\n readonly dataSources: ColumnDataSources;\n sorting: Sorting | null = null;\n\n get order() {\n return reduce(\n this.sorting,\n (r: SortingOrder, c, prop) => {\n r[prop] = c.order;\n return r;\n },\n {},\n );\n }\n\n get stores() {\n return this.dataSources;\n }\n constructor() {\n this.dataSources = reduce(\n columnTypes,\n (sources: Partial<ColumnDataSources>, k: DimensionCols) => {\n sources[k] = new DataStore(k);\n return sources;\n },\n {},\n ) as ColumnDataSources;\n }\n\n column(\n c: number,\n pin?: DimensionColPin,\n ): ColumnRegular | undefined {\n return this.getColumn(c, pin || 'rgCol');\n }\n\n getColumn(\n virtualIndex: number,\n type: DimensionCols,\n ): ColumnRegular | undefined {\n return getSourceItem(this.dataSources[type].store, virtualIndex);\n }\n\n getRawColumns() {\n return reduce(\n this.dataSources,\n (\n result: Record<DimensionCols, ColumnRegular[]>,\n item,\n type: DimensionCols,\n ) => {\n result[type] = item.store.get('source');\n return result;\n },\n {\n rgCol: [],\n colPinStart: [],\n colPinEnd: [],\n },\n );\n }\n\n getColumns(type: DimensionCols | 'all' = 'all') {\n if (type !== 'all') {\n return this.dataSources[type].store.get('source');\n }\n return columnTypes.reduce((r: ColumnRegular[], t) => {\n r.push(...this.dataSources[t].store.get('source'));\n return r;\n }, []);\n }\n\n getColumnIndexByProp(\n prop: ColumnProp,\n type: DimensionCols,\n ): number {\n return getSourceItemVirtualIndexByProp(this.dataSources[type].store, prop);\n }\n\n getColumnByProp(\n prop: ColumnProp,\n type: DimensionCols,\n ): ColumnRegular | undefined {\n const items = this.dataSources[type].store.get('source');\n return find(items, { prop });\n }\n\n refreshByType(type: DimensionCols) {\n this.dataSources[type].refresh();\n }\n\n setColumns(data: ColumnCollection): ColumnCollection {\n columnTypes.forEach(k => {\n // set columns data\n this.dataSources[k].updateData(data.columns[k], {\n // max depth level\n depth: data.maxLevel,\n\n // groups\n groups: data.columnGrouping[k].reduce((res: Groups, g) => {\n if (!res[g.level]) {\n res[g.level] = [];\n }\n res[g.level].push(g);\n return res;\n },\n {},\n ),\n });\n });\n this.sorting = data.sort;\n return data;\n }\n\n updateColumns(cols: ColumnRegular[]) {\n // collect column by type and propert\n const columnByKey: Partial<\n Record<\n DimensionCols,\n Record<ColumnProp, ColumnRegular>\n >\n > = cols.reduce(\n (\n res: Partial<\n Record<\n DimensionCols,\n Record<ColumnProp, ColumnRegular>\n >\n >,\n c,\n ) => {\n const type = ColumnDataProvider.getColumnType(c);\n if (!res[type]) {\n res[type] = {};\n }\n res[type][c.prop] = c;\n return res;\n },\n {},\n );\n\n // find indexes in source\n const colByIndex: Partial<\n Record<DimensionCols, Record<number, ColumnRegular>>\n > = {};\n each(columnByKey, (colsToUpdate, type: DimensionCols) => {\n const items = this.dataSources[type].store.get('source');\n colByIndex[type] = items.reduce(\n (result: Record<number, ColumnRegular>, rgCol, index) => {\n const colToUpdateIfExists = colsToUpdate[rgCol.prop];\n if (colToUpdateIfExists) {\n result[index] = colToUpdateIfExists;\n }\n return result;\n },\n {},\n );\n });\n each(colByIndex, (colsToUpdate, type: DimensionCols) =>\n setSourceByVirtualIndex(this.dataSources[type].store, colsToUpdate),\n );\n }\n\n updateColumn(column: ColumnRegular, index: number) {\n const type = ColumnDataProvider.getColumnType(column);\n setSourceByVirtualIndex(this.dataSources[type].store, { [index]: column });\n }\n\n updateColumnSorting(\n column: ColumnRegular,\n index: number,\n sorting: 'asc' | 'desc',\n additive: boolean,\n ): ColumnRegular {\n if (!additive) {\n this.clearSorting();\n }\n column.order = sorting;\n this.sorting[column.prop] = column;\n this.updateColumn(column, index);\n return column;\n }\n\n clearSorting() {\n const types = reduce(\n this.sorting,\n (\n r: { [key in Partial<DimensionCols>]: boolean },\n c: ColumnRegular,\n ) => {\n const k = ColumnDataProvider.getColumnType(c);\n r[k] = true;\n return r;\n },\n {} as { [key in Partial<DimensionCols>]: boolean },\n );\n each(types, (_, type: DimensionCols) => {\n const cols = this.dataSources[type].store.get('source');\n each(cols, (c: ColumnRegular) => (c.order = undefined));\n this.dataSources[type].setData({ source: [...cols] });\n });\n\n this.sorting = {};\n }\n\n static getSizes(\n cols: ColumnRegular[],\n ): ViewSettingSizeProp {\n return reduce(\n cols,\n (\n res: ViewSettingSizeProp,\n c: ColumnRegular,\n i: number,\n ) => {\n if (c.size) {\n res[i] = c.size;\n }\n return res;\n },\n {},\n );\n }\n\n static getColumnByProp(\n columns: ColumnData,\n prop: ColumnProp,\n ): ColumnRegular | undefined {\n return find(columns, c => {\n if (isColGrouping(c)) {\n return ColumnDataProvider.getColumnByProp(c.children, prop);\n }\n return c.prop === prop;\n }) as ColumnRegular | undefined;\n }\n\n // columns processing\n static getColumns(\n columns: ColumnData,\n level = 0,\n types?: ColumnTypes,\n ): ColumnCollection {\n const collection: ColumnCollection = {\n // columns as they are in stores per type\n columns: {\n rgCol: [],\n colPinStart: [],\n colPinEnd: [],\n },\n // columns grouped by prop for quick access\n columnByProp: {},\n // column grouping\n columnGrouping: {\n rgCol: [],\n colPinStart: [],\n colPinEnd: [],\n },\n // max depth level for column grouping\n maxLevel: level,\n // sorting\n sort: {},\n };\n\n return reduce(\n columns,\n (res: ColumnCollection, colData: ColumnDataSchema) => {\n // Grouped column\n if (isColGrouping(colData)) {\n return GroupingColumnPlugin.gatherGroup(\n res,\n colData,\n ColumnDataProvider.getColumns(colData.children, level + 1, types),\n level,\n );\n }\n // Regular column\n const regularColumn = {\n ...(colData.columnType && types && types[colData.columnType]),\n ...colData,\n };\n // Regular column, no Pin\n if (!regularColumn.pin) {\n res.columns.rgCol.push(regularColumn);\n // Pin\n } else {\n res.columns[regularColumn.pin].push(regularColumn);\n }\n if (regularColumn.order) {\n res.sort[regularColumn.prop] = regularColumn;\n }\n // technically it's possible that some columns have same prop, but better to avoid it\n if (!res.columnByProp[regularColumn.prop]) {\n res.columnByProp[regularColumn.prop] = [];\n }\n res.columnByProp[regularColumn.prop].push(regularColumn);\n\n // trigger setup hook if present\n regularColumn.beforeSetup && regularColumn.beforeSetup(regularColumn);\n return res;\n },\n collection,\n );\n }\n\n static getColumnType(rgCol: ColumnRegular): DimensionCols {\n if (rgCol.pin) {\n return rgCol.pin;\n }\n return 'rgCol';\n }\n}\n"]}
1
+ {"version":3,"file":"column.data.provider.js","sourceRoot":"","sources":["../../src/services/column.data.provider.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,eAAe,CAAC;AACnC,OAAO,IAAI,MAAM,aAAa,CAAC;AAC/B,OAAO,IAAI,MAAM,aAAa,CAAC;AAE/B,OAAO,EACL,WAAW,EACX,SAAS,EACT,aAAa,EACb,+BAA+B,EAE/B,uBAAuB,GACxB,MAAM,QAAQ,CAAC;AAChB,OAAO,oBAAoB,EAAE,EAE3B,aAAa,GACd,MAAM,+CAA+C,CAAC;AA2BvD,MAAM,CAAC,OAAO,OAAO,kBAAkB;IAIrC,IAAI,KAAK;QACP,OAAO,MAAM,CACX,IAAI,CAAC,OAAO,EACZ,CAAC,CAAe,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;YAC3B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;YAClB,OAAO,CAAC,CAAC;QACX,CAAC,EACD,EAAE,CACH,CAAC;IACJ,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IACD;QAhBA,YAAO,GAAmB,IAAI,CAAC;QAiB7B,IAAI,CAAC,WAAW,GAAG,MAAM,CACvB,WAAW,EACX,CAAC,OAAmC,EAAE,CAAgB,EAAE,EAAE;YACxD,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC;YAC9B,OAAO,OAAO,CAAC;QACjB,CAAC,EACD,EAAE,CACkB,CAAC;IACzB,CAAC;IAED,MAAM,CAAC,CAAS,EAAE,GAAqB;QACrC,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,IAAI,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,SAAS,CACP,YAAoB,EACpB,IAAmB;QAEnB,OAAO,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IACnE,CAAC;IAED,aAAa;QACX,OAAO,MAAM,CACX,IAAI,CAAC,WAAW,EAChB,CACE,MAA8C,EAC9C,IAAI,EACJ,IAAmB,EACnB,EAAE;YACF,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACxC,OAAO,MAAM,CAAC;QAChB,CAAC,EACD;YACE,KAAK,EAAE,EAAE;YACT,WAAW,EAAE,EAAE;YACf,SAAS,EAAE,EAAE;SACd,CACF,CAAC;IACJ,CAAC;IAED,UAAU,CAAC,OAA8B,KAAK;QAC5C,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,CAAkB,EAAE,CAAC,EAAE,EAAE;YAClD,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;YACnD,OAAO,CAAC,CAAC;QACX,CAAC,EAAE,EAAE,CAAC,CAAC;IACT,CAAC;IAED,oBAAoB,CAAC,IAAgB,EAAE,IAAmB;QACxD,OAAO,+BAA+B,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC7E,CAAC;IAED,eAAe,CACb,IAAgB,EAChB,IAAmB;QAEnB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/B,CAAC;IAED,aAAa,CAAC,IAAmB;QAC/B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;IACnC,CAAC;IAED,UAAU,CAAC,IAAsB;QAC/B,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACtB,mBAAmB;YACnB,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBAC9C,kBAAkB;gBAClB,KAAK,EAAE,IAAI,CAAC,QAAQ;gBAEpB,SAAS;gBACT,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAW,EAAE,CAAC,EAAE,EAAE;oBACvD,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;wBAClB,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;oBACpB,CAAC;oBACD,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBACrB,OAAO,GAAG,CAAC;gBACb,CAAC,EAAE,EAAE,CAAC;aACP,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,aAAa,CAAC,IAAqB;QACjC,qCAAqC;QACrC,MAAM,WAAW,GAEb,IAAI,CAAC,MAAM,CACb,CACE,GAAsE,EACtE,CAAC,EACD,EAAE;YACF,MAAM,IAAI,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YACjD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACf,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACjB,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACtB,OAAO,GAAG,CAAC;QACb,CAAC,EACD,EAAE,CACH,CAAC;QAEF,yBAAyB;QACzB,MAAM,UAAU,GAEZ,EAAE,CAAC;QACP,IAAI,CAAC,WAAW,EAAE,CAAC,YAAY,EAAE,IAAmB,EAAE,EAAE;YACtD,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACzD,UAAU,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAC7B,CAAC,MAAqC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;gBACtD,MAAM,mBAAmB,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACrD,IAAI,mBAAmB,EAAE,CAAC;oBACxB,MAAM,CAAC,KAAK,CAAC,GAAG,mBAAmB,CAAC;gBACtC,CAAC;gBACD,OAAO,MAAM,CAAC;YAChB,CAAC,EACD,EAAE,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,EAAE,CAAC,YAAY,EAAE,IAAmB,EAAE,EAAE,CACrD,uBAAuB,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,YAAY,CAAC,CACpE,CAAC;IACJ,CAAC;IAED,YAAY,CAAC,MAAqB,EAAE,KAAa;QAC/C,MAAM,IAAI,GAAG,kBAAkB,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACtD,uBAAuB,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED,mBAAmB,CACjB,MAAqB,EACrB,KAAa,EACb,OAAuB,EACvB,QAAiB;QAEjB,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,CAAC;QACD,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;QACnC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACjC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,YAAY;QACV,MAAM,KAAK,GAAG,MAAM,CAClB,IAAI,CAAC,OAAO,EACZ,CAAC,CAA+C,EAAE,CAAgB,EAAE,EAAE;YACpE,MAAM,CAAC,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YAC9C,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YACZ,OAAO,CAAC,CAAC;QACX,CAAC,EACD,EAAkD,CACnD,CAAC;QACF,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,IAAmB,EAAE,EAAE;YACrC,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACxD,IAAI,CAAC,IAAI,EAAE,CAAC,CAAgB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC;YACxD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;IACpB,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,IAAqB;QACnC,OAAO,MAAM,CACX,IAAI,EACJ,CAAC,GAAwB,EAAE,CAAgB,EAAE,CAAS,EAAE,EAAE;YACxD,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;gBACX,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YAClB,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC,EACD,EAAE,CACH,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,eAAe,CACpB,OAAmB,EACnB,IAAgB;QAEhB,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE;YACvB,IAAI,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrB,OAAO,kBAAkB,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC9D,CAAC;YACD,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC;QACzB,CAAC,CAA8B,CAAC;IAClC,CAAC;IAED,qBAAqB;IACrB,MAAM,CAAC,UAAU,CACf,OAAmB,EACnB,KAAK,GAAG,CAAC,EACT,KAAmB;QAEnB,MAAM,UAAU,GAAqB;YACnC,yCAAyC;YACzC,OAAO,EAAE;gBACP,KAAK,EAAE,EAAE;gBACT,WAAW,EAAE,EAAE;gBACf,SAAS,EAAE,EAAE;aACd;YACD,2CAA2C;YAC3C,YAAY,EAAE,EAAE;YAChB,kBAAkB;YAClB,cAAc,EAAE;gBACd,KAAK,EAAE,EAAE;gBACT,WAAW,EAAE,EAAE;gBACf,SAAS,EAAE,EAAE;aACd;YACD,sCAAsC;YACtC,QAAQ,EAAE,KAAK;YACf,UAAU;YACV,IAAI,EAAE,EAAE;SACT,CAAC;QAEF,OAAO,MAAM,CACX,OAAO,EACP,CAAC,GAAqB,EAAE,OAAyB,EAAE,EAAE;YACnD,iBAAiB;YACjB,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3B,OAAO,oBAAoB,CAAC,WAAW,CACrC,GAAG,EACH,OAAO,EACP,kBAAkB,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,CAAC,EACjE,KAAK,CACN,CAAC;YACJ,CAAC;YACD,iBAAiB;YACjB,MAAM,aAAa,mCACd,CAAC,OAAO,CAAC,UAAU,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,GAC1D,OAAO,CACX,CAAC;YACF,yBAAyB;YACzB,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC;gBACvB,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBACtC,MAAM;YACR,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACrD,CAAC;YACD,IAAI,aAAa,CAAC,KAAK,EAAE,CAAC;gBACxB,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC;YAC/C,CAAC;YACD,qFAAqF;YACrF,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1C,GAAG,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YAC5C,CAAC;YACD,GAAG,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAEzD,gCAAgC;YAChC,aAAa,CAAC,WAAW,IAAI,aAAa,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;YACtE,OAAO,GAAG,CAAC;QACb,CAAC,EACD,UAAU,CACX,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,KAAoB;QACvC,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,KAAK,CAAC,GAAG,CAAC;QACnB,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;CACF","sourcesContent":["import reduce from 'lodash/reduce';\nimport each from 'lodash/each';\nimport find from 'lodash/find';\n\nimport {\n columnTypes,\n DataStore,\n getSourceItem,\n getSourceItemVirtualIndexByProp,\n Groups,\n setSourceByVirtualIndex,\n} from '@store';\nimport GroupingColumnPlugin, {\n ColumnGroupingCollection,\n isColGrouping,\n} from '../plugins/groupingColumn/grouping.col.plugin';\nimport {\n ColumnData,\n ColumnDataSchema,\n ColumnProp,\n ColumnRegular,\n ColumnTypes,\n ViewSettingSizeProp,\n DimensionCols,\n DimensionColPin,\n} from '@type';\n\nexport type ColumnCollection = {\n columns: Record<DimensionCols, ColumnRegular[]>;\n columnByProp: Record<ColumnProp, ColumnRegular[]>;\n columnGrouping: ColumnGroupingCollection;\n maxLevel: number;\n sort: Record<ColumnProp, ColumnRegular>;\n};\n\nexport type ColumnDataSources = Record<\n DimensionCols,\n DataStore<ColumnRegular, DimensionCols>\n>;\ntype Sorting = Record<ColumnProp, ColumnRegular>;\ntype SortingOrder = Record<ColumnProp, 'asc' | 'desc'>;\n\nexport default class ColumnDataProvider {\n readonly dataSources: ColumnDataSources;\n sorting: Sorting | null = null;\n\n get order() {\n return reduce(\n this.sorting,\n (r: SortingOrder, c, prop) => {\n r[prop] = c.order;\n return r;\n },\n {},\n );\n }\n\n get stores() {\n return this.dataSources;\n }\n constructor() {\n this.dataSources = reduce(\n columnTypes,\n (sources: Partial<ColumnDataSources>, k: DimensionCols) => {\n sources[k] = new DataStore(k);\n return sources;\n },\n {},\n ) as ColumnDataSources;\n }\n\n column(c: number, pin?: DimensionColPin): ColumnRegular | undefined {\n return this.getColumn(c, pin || 'rgCol');\n }\n\n getColumn(\n virtualIndex: number,\n type: DimensionCols,\n ): ColumnRegular | undefined {\n return getSourceItem(this.dataSources[type].store, virtualIndex);\n }\n\n getRawColumns() {\n return reduce(\n this.dataSources,\n (\n result: Record<DimensionCols, ColumnRegular[]>,\n item,\n type: DimensionCols,\n ) => {\n result[type] = item.store.get('source');\n return result;\n },\n {\n rgCol: [],\n colPinStart: [],\n colPinEnd: [],\n },\n );\n }\n\n getColumns(type: DimensionCols | 'all' = 'all'): ColumnRegular[] {\n if (type !== 'all') {\n return this.dataSources[type].store.get('source');\n }\n return columnTypes.reduce((r: ColumnRegular[], t) => {\n r.push(...this.dataSources[t].store.get('source'));\n return r;\n }, []);\n }\n\n getColumnIndexByProp(prop: ColumnProp, type: DimensionCols): number {\n return getSourceItemVirtualIndexByProp(this.dataSources[type].store, prop);\n }\n\n getColumnByProp(\n prop: ColumnProp,\n type: DimensionCols,\n ): ColumnRegular | undefined {\n const items = this.dataSources[type].store.get('source');\n return find(items, { prop });\n }\n\n refreshByType(type: DimensionCols) {\n this.dataSources[type].refresh();\n }\n\n setColumns(data: ColumnCollection): ColumnCollection {\n columnTypes.forEach(k => {\n // set columns data\n this.dataSources[k].updateData(data.columns[k], {\n // max depth level\n depth: data.maxLevel,\n\n // groups\n groups: data.columnGrouping[k].reduce((res: Groups, g) => {\n if (!res[g.level]) {\n res[g.level] = [];\n }\n res[g.level].push(g);\n return res;\n }, {}),\n });\n });\n this.sorting = data.sort;\n return data;\n }\n\n updateColumns(cols: ColumnRegular[]) {\n // collect column by type and propert\n const columnByKey: Partial<\n Record<DimensionCols, Record<ColumnProp, ColumnRegular>>\n > = cols.reduce(\n (\n res: Partial<Record<DimensionCols, Record<ColumnProp, ColumnRegular>>>,\n c,\n ) => {\n const type = ColumnDataProvider.getColumnType(c);\n if (!res[type]) {\n res[type] = {};\n }\n res[type][c.prop] = c;\n return res;\n },\n {},\n );\n\n // find indexes in source\n const colByIndex: Partial<\n Record<DimensionCols, Record<number, ColumnRegular>>\n > = {};\n each(columnByKey, (colsToUpdate, type: DimensionCols) => {\n const items = this.dataSources[type].store.get('source');\n colByIndex[type] = items.reduce(\n (result: Record<number, ColumnRegular>, rgCol, index) => {\n const colToUpdateIfExists = colsToUpdate[rgCol.prop];\n if (colToUpdateIfExists) {\n result[index] = colToUpdateIfExists;\n }\n return result;\n },\n {},\n );\n });\n each(colByIndex, (colsToUpdate, type: DimensionCols) =>\n setSourceByVirtualIndex(this.dataSources[type].store, colsToUpdate),\n );\n }\n\n updateColumn(column: ColumnRegular, index: number) {\n const type = ColumnDataProvider.getColumnType(column);\n setSourceByVirtualIndex(this.dataSources[type].store, { [index]: column });\n }\n\n updateColumnSorting(\n column: ColumnRegular,\n index: number,\n sorting: 'asc' | 'desc',\n additive: boolean,\n ): ColumnRegular {\n if (!additive) {\n this.clearSorting();\n }\n column.order = sorting;\n this.sorting[column.prop] = column;\n this.updateColumn(column, index);\n return column;\n }\n\n clearSorting() {\n const types = reduce(\n this.sorting,\n (r: { [key in Partial<DimensionCols>]: boolean }, c: ColumnRegular) => {\n const k = ColumnDataProvider.getColumnType(c);\n r[k] = true;\n return r;\n },\n {} as { [key in Partial<DimensionCols>]: boolean },\n );\n each(types, (_, type: DimensionCols) => {\n const cols = this.dataSources[type].store.get('source');\n each(cols, (c: ColumnRegular) => (c.order = undefined));\n this.dataSources[type].setData({ source: [...cols] });\n });\n\n this.sorting = {};\n }\n\n static getSizes(cols: ColumnRegular[]): ViewSettingSizeProp {\n return reduce(\n cols,\n (res: ViewSettingSizeProp, c: ColumnRegular, i: number) => {\n if (c.size) {\n res[i] = c.size;\n }\n return res;\n },\n {},\n );\n }\n\n static getColumnByProp(\n columns: ColumnData,\n prop: ColumnProp,\n ): ColumnRegular | undefined {\n return find(columns, c => {\n if (isColGrouping(c)) {\n return ColumnDataProvider.getColumnByProp(c.children, prop);\n }\n return c.prop === prop;\n }) as ColumnRegular | undefined;\n }\n\n // columns processing\n static getColumns(\n columns: ColumnData,\n level = 0,\n types?: ColumnTypes,\n ): ColumnCollection {\n const collection: ColumnCollection = {\n // columns as they are in stores per type\n columns: {\n rgCol: [],\n colPinStart: [],\n colPinEnd: [],\n },\n // columns grouped by prop for quick access\n columnByProp: {},\n // column grouping\n columnGrouping: {\n rgCol: [],\n colPinStart: [],\n colPinEnd: [],\n },\n // max depth level for column grouping\n maxLevel: level,\n // sorting\n sort: {},\n };\n\n return reduce(\n columns,\n (res: ColumnCollection, colData: ColumnDataSchema) => {\n // Grouped column\n if (isColGrouping(colData)) {\n return GroupingColumnPlugin.gatherGroup(\n res,\n colData,\n ColumnDataProvider.getColumns(colData.children, level + 1, types),\n level,\n );\n }\n // Regular column\n const regularColumn = {\n ...(colData.columnType && types && types[colData.columnType]),\n ...colData,\n };\n // Regular column, no Pin\n if (!regularColumn.pin) {\n res.columns.rgCol.push(regularColumn);\n // Pin\n } else {\n res.columns[regularColumn.pin].push(regularColumn);\n }\n if (regularColumn.order) {\n res.sort[regularColumn.prop] = regularColumn;\n }\n // technically it's possible that some columns have same prop, but better to avoid it\n if (!res.columnByProp[regularColumn.prop]) {\n res.columnByProp[regularColumn.prop] = [];\n }\n res.columnByProp[regularColumn.prop].push(regularColumn);\n\n // trigger setup hook if present\n regularColumn.beforeSetup && regularColumn.beforeSetup(regularColumn);\n return res;\n },\n collection,\n );\n }\n\n static getColumnType(rgCol: ColumnRegular): DimensionCols {\n if (rgCol.pin) {\n return rgCol.pin;\n }\n return 'rgCol';\n }\n}\n"]}
@@ -2,8 +2,7 @@
2
2
  * Built by Revolist OU ❤️
3
3
  */
4
4
  import reduce from "lodash/reduce";
5
- import DataStore, { getSourceItem, getVisibleSourceItem, setSourceByVirtualIndex, } from "../store/dataSource/data.store";
6
- import { isRowType, rowTypes } from "../store/storeTypes";
5
+ import { isRowType, rowTypes, DataStore, getSourceItem, getVisibleSourceItem, setSourceByVirtualIndex, } from "../store/index";
7
6
  /**
8
7
  * Data source provider
9
8
  */
@@ -1 +1 @@
1
- {"version":3,"file":"data.provider.js","sourceRoot":"","sources":["../../src/services/data.provider.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,eAAe,CAAC;AAEnC,OAAO,SAAS,EAAE,EAChB,aAAa,EACb,oBAAoB,EAEpB,uBAAuB,GACxB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAY1D;;GAEG;AAEH,MAAM,OAAO,YAAY;IAEvB,YAAoB,iBAAoC;QAApC,sBAAiB,GAAjB,iBAAiB,CAAmB;QACtD,IAAI,CAAC,MAAM,GAAG,MAAM,CAClB,QAAQ,EACR,CAAC,OAAgC,EAAE,CAAgB,EAAE,EAAE;YACrD,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC;YAC9B,OAAO,OAAO,CAAC;QACjB,CAAC,EACD,EAAE,CACe,CAAC;IACtB,CAAC;IAED,OAAO,CACL,IAAgB,EAChB,OAAsB,OAAO,EAC7B,kBAAkB,GAAG,KAAK,EAC1B,QAIC,EACD,MAAM,GAAG,KAAK;QAEd,iBAAiB;QACjB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QAE1D,sCAAsC;QACtC,MAAM,SAAS,GAAG,IAAI,KAAK,OAAO,IAAI,kBAAkB,CAAC;QACzD,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ,CAAC,YAAoB,EAAE,OAAsB,OAAO;QAC1D,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;QACtC,OAAO,aAAa,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IAC5C,CAAC;IAED,WAAW,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAyB,EAAE,MAAM,GAAG,IAAI;QAC7E,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC5C,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;QAClB,uBAAuB;QACvB,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,EAAE,MAAM,CAAC,CAAC;IAClF,CAAC;IAED,YAAY,CAAC,IAAgB,EAAE,IAAmB;QAChD,MAAM,KAAK,GAA6B,EAAE,CAAC;QAC3C,KAAK,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;YAC1B,MAAM,QAAQ,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,aAAa,CAC/C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EACvB,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CACvB,CAAC,CAAC;YACH,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,SAAS;YACX,CAAC;YACD,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAChC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;QACD,uBAAuB;QACvB,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO,CAAC,OAA8B,KAAK;QACzC,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YACpB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QACD,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAgB,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,YAAY,CAAC,OAAsB,OAAO;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACnD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,WAAW,CAAC,EAAE,KAAK,EAAqB,EAAE,OAAsB,OAAO;QACrE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,UAAU,CAAC,OAAyB,EAAE,OAAsB,OAAO;QACjE,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAChC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC1B,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACjD,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACrB,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAC5B,oBAAoB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,EACxC,IAAI,CACL,CAAC;QACJ,CAAC;IACH,CAAC;CACF","sourcesContent":["import reduce from 'lodash/reduce';\n\nimport DataStore, {\n getSourceItem,\n getVisibleSourceItem,\n Groups,\n setSourceByVirtualIndex,\n} from '../store/dataSource/data.store';\nimport { isRowType, rowTypes } from '../store/storeTypes';\nimport DimensionProvider from './dimension.provider';\nimport { Trimmed } from '../store/dataSource/trimmed.plugin';\nimport { GroupLabelTemplateFunc } from '../plugins/groupingRow/grouping.row.types';\nimport { DataLookup, DimensionRows } from '..';\nimport { DataType } from '..';\nimport { BeforeSaveDataDetails } from '..';\n\nexport type RowDataSources = {\n [T in DimensionRows]: DataStore<DataType, DimensionRows>;\n};\n\n/**\n * Data source provider\n */\n\nexport class DataProvider {\n public readonly stores: RowDataSources;\n constructor(private dimensionProvider: DimensionProvider) {\n this.stores = reduce(\n rowTypes,\n (sources: Partial<RowDataSources>, k: DimensionRows) => {\n sources[k] = new DataStore(k);\n return sources;\n },\n {},\n ) as RowDataSources;\n }\n\n setData(\n data: DataType[],\n type: DimensionRows = 'rgRow',\n disableVirtualRows = false,\n grouping?: {\n depth: number;\n groups?: Groups;\n customRenderer?: GroupLabelTemplateFunc;\n },\n silent = false,\n ): DataType[] {\n // set rgRow data\n this.stores[type].updateData([...data], grouping, silent);\n\n // for pinned row no need virtual data\n const noVirtual = type !== 'rgRow' || disableVirtualRows;\n this.dimensionProvider.setData(data.length, type, noVirtual);\n return data;\n }\n\n getModel(virtualIndex: number, type: DimensionRows = 'rgRow') {\n const store = this.stores[type].store;\n return getSourceItem(store, virtualIndex);\n }\n\n setCellData({ type, rowIndex, prop, val }: BeforeSaveDataDetails, mutate = true) {\n const model = this.getModel(rowIndex, type);\n model[prop] = val;\n // apply data to source\n setSourceByVirtualIndex(this.stores[type].store, { [rowIndex]: model }, mutate);\n }\n\n setRangeData(data: DataLookup, type: DimensionRows) {\n const items: Record<number, DataType> = {};\n for (let rowIndex in data) {\n const oldModel = (items[rowIndex] = getSourceItem(\n this.stores[type].store,\n parseInt(rowIndex, 10),\n ));\n if (!oldModel) {\n continue;\n }\n for (let prop in data[rowIndex]) {\n oldModel[prop] = data[rowIndex][prop];\n }\n }\n // apply data to source\n setSourceByVirtualIndex(this.stores[type].store, items);\n }\n\n refresh(type: DimensionRows | 'all' = 'all') {\n if (isRowType(type)) {\n this.refreshItems(type);\n }\n rowTypes.forEach((t: DimensionRows) => this.refreshItems(t));\n }\n\n refreshItems(type: DimensionRows = 'rgRow') {\n const items = this.stores[type].store.get('items');\n this.stores[type].setData({ items: [...items] });\n }\n\n setGrouping({ depth }: { depth: number }, type: DimensionRows = 'rgRow') {\n this.stores[type].setData({ groupingDepth: depth });\n }\n\n setTrimmed(trimmed: Partial<Trimmed>, type: DimensionRows = 'rgRow') {\n const store = this.stores[type];\n store.addTrimmed(trimmed);\n this.dimensionProvider.setTrimmed(trimmed, type);\n if (type === 'rgRow') {\n this.dimensionProvider.setData(\n getVisibleSourceItem(store.store).length,\n type,\n );\n }\n }\n}\n"]}
1
+ {"version":3,"file":"data.provider.js","sourceRoot":"","sources":["../../src/services/data.provider.ts"],"names":[],"mappings":"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","sourcesContent":["import reduce from 'lodash/reduce';\n\nimport {\n isRowType,\n rowTypes,\n DataStore,\n getSourceItem,\n getVisibleSourceItem,\n Groups,\n setSourceByVirtualIndex,\n Trimmed,\n} from '@store';\nimport DimensionProvider from './dimension.provider';\nimport { GroupLabelTemplateFunc } from '../plugins/groupingRow/grouping.row.types';\nimport {\n DataLookup,\n DimensionRows,\n DataType,\n BeforeSaveDataDetails,\n} from '@type';\n\nexport type RowDataSources = {\n [T in DimensionRows]: DataStore<DataType, DimensionRows>;\n};\n\n/**\n * Data source provider\n */\n\nexport class DataProvider {\n public readonly stores: RowDataSources;\n constructor(private dimensionProvider: DimensionProvider) {\n this.stores = reduce(\n rowTypes,\n (sources: Partial<RowDataSources>, k: DimensionRows) => {\n sources[k] = new DataStore(k);\n return sources;\n },\n {},\n ) as RowDataSources;\n }\n\n setData(\n data: DataType[],\n type: DimensionRows = 'rgRow',\n disableVirtualRows = false,\n grouping?: {\n depth: number;\n groups?: Groups;\n customRenderer?: GroupLabelTemplateFunc;\n },\n silent = false,\n ): DataType[] {\n // set rgRow data\n this.stores[type].updateData([...data], grouping, silent);\n\n // for pinned row no need virtual data\n const noVirtual = type !== 'rgRow' || disableVirtualRows;\n this.dimensionProvider.setData(data.length, type, noVirtual);\n return data;\n }\n\n getModel(virtualIndex: number, type: DimensionRows = 'rgRow') {\n const store = this.stores[type].store;\n return getSourceItem(store, virtualIndex);\n }\n\n setCellData(\n { type, rowIndex, prop, val }: BeforeSaveDataDetails,\n mutate = true,\n ) {\n const model = this.getModel(rowIndex, type);\n model[prop] = val;\n // apply data to source\n setSourceByVirtualIndex(\n this.stores[type].store,\n { [rowIndex]: model },\n mutate,\n );\n }\n\n setRangeData(data: DataLookup, type: DimensionRows) {\n const items: Record<number, DataType> = {};\n for (let rowIndex in data) {\n const oldModel = (items[rowIndex] = getSourceItem(\n this.stores[type].store,\n parseInt(rowIndex, 10),\n ));\n if (!oldModel) {\n continue;\n }\n for (let prop in data[rowIndex]) {\n oldModel[prop] = data[rowIndex][prop];\n }\n }\n // apply data to source\n setSourceByVirtualIndex(this.stores[type].store, items);\n }\n\n refresh(type: DimensionRows | 'all' = 'all') {\n if (isRowType(type)) {\n this.refreshItems(type);\n }\n rowTypes.forEach((t: DimensionRows) => this.refreshItems(t));\n }\n\n refreshItems(type: DimensionRows = 'rgRow') {\n const items = this.stores[type].store.get('items');\n this.stores[type].setData({ items: [...items] });\n }\n\n setGrouping({ depth }: { depth: number }, type: DimensionRows = 'rgRow') {\n this.stores[type].setData({ groupingDepth: depth });\n }\n\n setTrimmed(trimmed: Partial<Trimmed>, type: DimensionRows = 'rgRow') {\n const store = this.stores[type];\n store.addTrimmed(trimmed);\n this.dimensionProvider.setTrimmed(trimmed, type);\n if (type === 'rgRow') {\n this.dimensionProvider.setData(\n getVisibleSourceItem(store.store).length,\n type,\n );\n }\n }\n}\n"]}
@@ -3,12 +3,10 @@
3
3
  */
4
4
  import reduce from "lodash/reduce";
5
5
  import debounce from "lodash/debounce";
6
- import { columnTypes, rowTypes } from "../store/storeTypes";
7
- import DimensionStore from "../store/dimension/dimension.store";
8
- import { getItemByIndex } from "../store/dimension/dimension.helpers";
9
- import { gatherTrimmedItems, } from "../store/dataSource/trimmed.plugin";
10
- import { RESIZE_INTERVAL } from "../utils/consts";
11
6
  import ColumnDataProvider from "../services/column.data.provider";
7
+ import { columnTypes, rowTypes, DimensionStore, gatherTrimmedItems, } from "../store/index";
8
+ import { RESIZE_INTERVAL } from "../utils/consts";
9
+ import { getItemByIndex } from "../store/dimension/dimension.helpers";
12
10
  /**
13
11
  * Dimension provider
14
12
  * Stores dimension information and custom sizes