@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
@@ -2,8 +2,7 @@
2
2
  * Built by Revolist OU ❤️
3
3
  */
4
4
  import { h, Host } from "@stencil/core";
5
- import DataStore from "../../store/dataSource/data.store";
6
- import ViewportStore from "../../store/viewport/viewport.store";
5
+ import { ViewportStore, DataStore } from "../../store/index";
7
6
  import { ROW_HEADER_TYPE } from "../../utils/consts";
8
7
  import { RowHeaderRender } from "./row-header-render";
9
8
  import { calculateRowHeaderSize } from "../../utils/row-header-utils";
@@ -37,7 +36,7 @@ export class RevogrRowHeaders {
37
36
  const colData = new DataStore('colPinStart');
38
37
  const column = Object.assign({ cellTemplate: RowHeaderRender(totalLength) }, this.rowHeaderColumn);
39
38
  colData.updateData([column]);
40
- dataViews.push(h("revogr-data", Object.assign({}, data, { colType: 'rowHeaders', jobsBeforeRender: this.jobsBeforeRender, rowClass: this.rowClass, dataStore: dataStore.store, colData: colData.store, viewportCol: viewport.store, readonly: true, range: false })));
39
+ dataViews.push(h("revogr-data", Object.assign({}, data, { colType: "rowHeaders", jobsBeforeRender: this.jobsBeforeRender, rowClass: this.rowClass, dataStore: dataStore.store, colData: colData.store, viewportCol: viewport.store, readonly: true, range: false })));
41
40
  totalLength += itemCount;
42
41
  }
43
42
  const colSize = calculateRowHeaderSize(totalLength, this.rowHeaderColumn);
@@ -64,7 +63,7 @@ export class RevogrRowHeaders {
64
63
  const viewportHeader = Object.assign(Object.assign({}, this.headerProp), { colData: typeof this.rowHeaderColumn === 'object' ? [this.rowHeaderColumn] : [], viewportCol: viewport.store, canResize: false, type: ROW_HEADER_TYPE,
65
64
  // parent,
66
65
  slot: HEADER_SLOT });
67
- return (h(Host, { class: { [ROW_HEADER_TYPE]: true }, key: ROW_HEADER_TYPE }, h("revogr-viewport-scroll", Object.assign({ key: '53de708aa9a00a2ce363d8323b10d85aee070171' }, viewportScroll, { "row-header": true }), h("revogr-header", Object.assign({ key: '72e73ae122bb25f011422d3d044ccf7df613520c' }, viewportHeader)), dataViews)));
66
+ return (h(Host, { class: { [ROW_HEADER_TYPE]: true }, key: ROW_HEADER_TYPE }, h("revogr-viewport-scroll", Object.assign({ key: 'efaaa386cb5ea8b848d42e3407dbde8ad99d1db8' }, viewportScroll, { "row-header": true }), h("revogr-header", Object.assign({ key: '57fb6d08cd094f9b19145ff65c3ab805992fbb68' }, viewportHeader)), dataViews)));
68
67
  }
69
68
  static get is() { return "revogr-row-headers"; }
70
69
  static get properties() {
@@ -95,8 +94,8 @@ export class RevogrRowHeaders {
95
94
  "references": {
96
95
  "ViewportData": {
97
96
  "location": "import",
98
- "path": "../../types/viewport.interfaces",
99
- "id": "src/types/viewport.interfaces.ts::ViewportData"
97
+ "path": "@type",
98
+ "id": "src/types/index.ts::ViewportData"
100
99
  }
101
100
  }
102
101
  },
@@ -170,8 +169,8 @@ export class RevogrRowHeaders {
170
169
  "references": {
171
170
  "RowHeaders": {
172
171
  "location": "import",
173
- "path": "../../types/interfaces",
174
- "id": "src/types/interfaces.ts::RowHeaders"
172
+ "path": "@type",
173
+ "id": "src/types/index.ts::RowHeaders"
175
174
  }
176
175
  }
177
176
  },
@@ -239,8 +238,8 @@ export class RevogrRowHeaders {
239
238
  "references": {
240
239
  "ViewPortScrollEvent": {
241
240
  "location": "import",
242
- "path": "../../types/interfaces",
243
- "id": "src/types/interfaces.ts::ViewPortScrollEvent"
241
+ "path": "@type",
242
+ "id": "src/types/index.ts::ViewPortScrollEvent"
244
243
  }
245
244
  }
246
245
  }
@@ -260,8 +259,8 @@ export class RevogrRowHeaders {
260
259
  "references": {
261
260
  "ElementScroll": {
262
261
  "location": "import",
263
- "path": "../../types/viewport.interfaces",
264
- "id": "src/types/viewport.interfaces.ts::ElementScroll"
262
+ "path": "@type",
263
+ "id": "src/types/index.ts::ElementScroll"
265
264
  }
266
265
  }
267
266
  }
@@ -1 +1 @@
1
- {"version":3,"file":"revogr-row-headers.js","sourceRoot":"","sources":["../../../src/components/rowHeaders/revogr-row-headers.tsx"],"names":[],"mappings":"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","sourcesContent":["import { h, Host, Component, Prop, Event, EventEmitter } from '@stencil/core';\nimport { JSXBase } from '@stencil/core/internal';\n\nimport DataStore from '../../store/dataSource/data.store';\nimport ViewportStore from '../../store/viewport/viewport.store';\nimport { ROW_HEADER_TYPE } from '../../utils/consts';\nimport { RowHeaderRender } from './row-header-render';\nimport { calculateRowHeaderSize } from '../../utils/row-header-utils';\nimport { HEADER_SLOT } from '../revoGrid/viewport.helpers';\nimport { DimensionRows, DimensionCols } from '../../types/dimension';\nimport {\n RowHeaders,\n ViewPortScrollEvent,\n DataType,\n ColumnRegular,\n} from '../../types/interfaces';\nimport { ViewportData, ElementScroll } from '../../types/viewport.interfaces';\nimport { JSX } from '../..';\n\n/**\n * Row headers component\n * Visible on the left side of the table\n */\n\n@Component({ tag: 'revogr-row-headers' })\nexport class RevogrRowHeaders {\n // #region Properties\n /**\n * Header height to setup row headers\n */\n @Prop() height: number;\n\n /**\n * Viewport data\n */\n @Prop() dataPorts: ViewportData[];\n /**\n * Header props\n */\n @Prop() headerProp: Record<string, any>;\n\n /**\n * Row class\n */\n @Prop() rowClass: string;\n\n /**\n * Enable resize\n */\n @Prop() resize: boolean;\n /**\n * Row header column\n */\n @Prop() rowHeaderColumn: RowHeaders;\n /**\n * Additional data to pass to renderer\n */\n @Prop() additionalData: any;\n /**\n * Prevent rendering until job is done.\n * Can be used for initial rendering performance improvement.\n * When several plugins require initial rendering this will prevent double initial rendering.\n */\n @Prop() jobsBeforeRender: Promise<any>[] = [];\n // #endregion\n\n /**\n * Scroll viewport\n */\n @Event({ eventName: 'scrollview', bubbles: false })\n scrollViewport: EventEmitter<ViewPortScrollEvent>;\n /**\n * Register element to scroll\n */\n @Event({ eventName: 'ref', bubbles: false })\n elementToScroll: EventEmitter<ElementScroll>;\n\n render() {\n const dataViews: HTMLElement[] = [];\n const viewport = new ViewportStore('colPinStart');\n\n /** render viewports rows */\n let totalLength = 1;\n // todo: this part could be optimized to avoid to often re-render dataPorts can be cached\n for (let data of this.dataPorts) {\n const itemCount = data.dataStore.get('items').length;\n\n // initiate row data\n const dataStore = new DataStore<DataType, DimensionRows>(data.type, {\n ...data.dataStore.state,\n });\n\n // initiate column data\n const colData = new DataStore<ColumnRegular, DimensionCols>(\n 'colPinStart',\n );\n const column: ColumnRegular = {\n cellTemplate: RowHeaderRender(totalLength),\n ...this.rowHeaderColumn,\n };\n colData.updateData([column]);\n dataViews.push(\n <revogr-data\n {...data}\n colType='rowHeaders'\n jobsBeforeRender={this.jobsBeforeRender}\n rowClass={this.rowClass}\n dataStore={dataStore.store}\n colData={colData.store}\n viewportCol={viewport.store}\n readonly={true}\n range={false}\n />,\n );\n totalLength += itemCount;\n }\n\n const colSize = calculateRowHeaderSize(totalLength, this.rowHeaderColumn);\n viewport.setViewport({\n realCount: 1,\n virtualSize: 0,\n items: [\n {\n size: colSize,\n start: 0,\n end: colSize,\n itemIndex: 0,\n },\n ],\n });\n\n const viewportScroll: JSX.RevogrViewportScroll &\n JSXBase.HTMLAttributes<HTMLRevogrViewportScrollElement> = {\n contentHeight: this.height,\n contentWidth: 0,\n style: { minWidth: `${colSize}px` },\n colType: 'rowHeaders',\n ref: (el: ElementScroll) => this.elementToScroll.emit(el),\n onScrollviewport: (e: CustomEvent) => this.scrollViewport.emit(e.detail),\n };\n const viewportHeader: JSX.RevogrHeader & { slot: string } = {\n ...this.headerProp,\n colData:\n typeof this.rowHeaderColumn === 'object' ? [this.rowHeaderColumn] : [],\n viewportCol: viewport.store,\n canResize: false,\n type: ROW_HEADER_TYPE,\n // parent,\n slot: HEADER_SLOT,\n };\n return (\n <Host class={{ [ROW_HEADER_TYPE]: true }} key={ROW_HEADER_TYPE}>\n <revogr-viewport-scroll {...viewportScroll} row-header={true}>\n <revogr-header {...viewportHeader} />\n {dataViews}\n </revogr-viewport-scroll>\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"revogr-row-headers.js","sourceRoot":"","sources":["../../../src/components/rowHeaders/revogr-row-headers.tsx"],"names":[],"mappings":"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","sourcesContent":["import { h, Host, Component, Prop, Event, EventEmitter } from '@stencil/core';\nimport { JSXBase } from '@stencil/core/internal';\n\nimport { ViewportStore, DataStore } from '@store';\n\nimport { ROW_HEADER_TYPE } from '../../utils/consts';\nimport { RowHeaderRender } from './row-header-render';\nimport { calculateRowHeaderSize } from '../../utils/row-header-utils';\nimport { HEADER_SLOT } from '../revoGrid/viewport.helpers';\nimport {\n RowHeaders,\n ViewPortScrollEvent,\n DataType,\n ColumnRegular,\n ViewportData,\n ElementScroll,\n DimensionRows,\n DimensionCols,\n} from '@type';\nimport { JSX } from '../../components';\n\n/**\n * Row headers component\n * Visible on the left side of the table\n */\n\n@Component({ tag: 'revogr-row-headers' })\nexport class RevogrRowHeaders {\n // #region Properties\n /**\n * Header height to setup row headers\n */\n @Prop() height: number;\n\n /**\n * Viewport data\n */\n @Prop() dataPorts: ViewportData[];\n /**\n * Header props\n */\n @Prop() headerProp: Record<string, any>;\n\n /**\n * Row class\n */\n @Prop() rowClass: string;\n\n /**\n * Enable resize\n */\n @Prop() resize: boolean;\n /**\n * Row header column\n */\n @Prop() rowHeaderColumn: RowHeaders;\n /**\n * Additional data to pass to renderer\n */\n @Prop() additionalData: any;\n /**\n * Prevent rendering until job is done.\n * Can be used for initial rendering performance improvement.\n * When several plugins require initial rendering this will prevent double initial rendering.\n */\n @Prop() jobsBeforeRender: Promise<any>[] = [];\n // #endregion\n\n /**\n * Scroll viewport\n */\n @Event({ eventName: 'scrollview', bubbles: false })\n scrollViewport: EventEmitter<ViewPortScrollEvent>;\n /**\n * Register element to scroll\n */\n @Event({ eventName: 'ref', bubbles: false })\n elementToScroll: EventEmitter<ElementScroll>;\n\n render() {\n const dataViews: HTMLElement[] = [];\n const viewport = new ViewportStore('colPinStart');\n\n /** render viewports rows */\n let totalLength = 1;\n // todo: this part could be optimized to avoid to often re-render dataPorts can be cached\n for (let data of this.dataPorts) {\n const itemCount = data.dataStore.get('items').length;\n\n // initiate row data\n const dataStore = new DataStore<DataType, DimensionRows>(data.type, {\n ...data.dataStore.state,\n });\n\n // initiate column data\n const colData = new DataStore<ColumnRegular, DimensionCols>(\n 'colPinStart',\n );\n const column: ColumnRegular = {\n cellTemplate: RowHeaderRender(totalLength),\n ...this.rowHeaderColumn,\n };\n colData.updateData([column]);\n dataViews.push(\n <revogr-data\n {...data}\n colType=\"rowHeaders\"\n jobsBeforeRender={this.jobsBeforeRender}\n rowClass={this.rowClass}\n dataStore={dataStore.store}\n colData={colData.store}\n viewportCol={viewport.store}\n readonly={true}\n range={false}\n />,\n );\n totalLength += itemCount;\n }\n\n const colSize = calculateRowHeaderSize(totalLength, this.rowHeaderColumn);\n viewport.setViewport({\n realCount: 1,\n virtualSize: 0,\n items: [\n {\n size: colSize,\n start: 0,\n end: colSize,\n itemIndex: 0,\n },\n ],\n });\n\n const viewportScroll: JSX.RevogrViewportScroll &\n JSXBase.HTMLAttributes<HTMLRevogrViewportScrollElement> = {\n contentHeight: this.height,\n contentWidth: 0,\n style: { minWidth: `${colSize}px` },\n colType: 'rowHeaders',\n ref: (el: ElementScroll) => this.elementToScroll.emit(el),\n onScrollviewport: (e: CustomEvent) => this.scrollViewport.emit(e.detail),\n };\n const viewportHeader: JSX.RevogrHeader & { slot: string } = {\n ...this.headerProp,\n colData:\n typeof this.rowHeaderColumn === 'object' ? [this.rowHeaderColumn] : [],\n viewportCol: viewport.store,\n canResize: false,\n type: ROW_HEADER_TYPE,\n // parent,\n slot: HEADER_SLOT,\n };\n return (\n <Host class={{ [ROW_HEADER_TYPE]: true }} key={ROW_HEADER_TYPE}>\n <revogr-viewport-scroll {...viewportScroll} row-header={true}>\n <revogr-header {...viewportHeader} />\n {dataViews}\n </revogr-viewport-scroll>\n </Host>\n );\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"row-header-render.js","sourceRoot":"","sources":["../../../src/components/rowHeaders/row-header-render.tsx"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,eAAe,GAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC","sourcesContent":["import { VNode } from '@stencil/core';\nimport { HyperFunc } from '../../types/interfaces';\n\ntype HeaderRender = {\n (start: number): (h: HyperFunc<VNode>, e: { rowIndex: number }) => number;\n};\nexport const RowHeaderRender: HeaderRender = s => (__, { rowIndex: i }) => s + i;\n"]}
1
+ {"version":3,"file":"row-header-render.js","sourceRoot":"","sources":["../../../src/components/rowHeaders/row-header-render.tsx"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,eAAe,GAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC","sourcesContent":["import { VNode } from '@stencil/core';\nimport { HyperFunc } from '@type';\n\ntype HeaderRender = {\n (start: number): (h: HyperFunc<VNode>, e: { rowIndex: number }) => number;\n};\nexport const RowHeaderRender: HeaderRender = s => (__, { rowIndex: i }) => s + i;\n"]}
@@ -202,7 +202,7 @@ export class RevogrViewportScroll {
202
202
  this.setScrollVisibility('rgCol', this.horizontalScroll.clientWidth, this.contentWidth);
203
203
  }
204
204
  render() {
205
- return (h(Host, { key: '6a0fe25ddee66c2f940a487a62cd449ffcdc5dbb', onWheel: this.horizontalMouseWheel, onScroll: (e) => this.applyScroll('rgCol', e) }, h("div", { key: '709628164413e82c226fcc1912166f52f393f3a6', class: "inner-content-table", style: { width: `${this.contentWidth}px` } }, h("div", { key: 'bc57d5cbfeded428a08621c1ac6e88a5c92926ab', class: "header-wrapper", ref: e => (this.header = e) }, h("slot", { key: '40ea612e8977ec422af7b569f1247a79617a4ea9', name: HEADER_SLOT })), h("div", { key: 'd50aff782206dbe259b4c7dc10c07b4b9bd045fe', class: "vertical-inner", ref: el => (this.verticalScroll = el), onWheel: this.verticalMouseWheel, onScroll: (e) => this.applyScroll('rgRow', e) }, h("div", { key: '0db87895530659a70c78fd07b4c74c55d7c3fd86', class: "content-wrapper", style: { height: `${this.contentHeight}px` } }, h("slot", { key: 'b6a5053abaf4fee2b76af2a1e27f70b674a796fa', name: CONTENT_SLOT }))), h("div", { key: 'd75b963be5dd0ec1b96e9a1386adf5cb1d2f6aa9', class: "footer-wrapper", ref: e => (this.footer = e) }, h("slot", { key: 'fb232888a34885305301b811b9abb0e70db6bb6a', name: FOOTER_SLOT })))));
205
+ return (h(Host, { key: 'f7bd78e3f05aae8d8d8a6a93502f99ace0f35823', onWheel: this.horizontalMouseWheel, onScroll: (e) => this.applyScroll('rgCol', e) }, h("div", { key: '2d7aa9dbbcf2003aec46c6c127e172e45f2ffe1f', class: "inner-content-table", style: { width: `${this.contentWidth}px` } }, h("div", { key: 'ba3d83de41d30c58ba6bc4c167e45ccbb36bb9a7', class: "header-wrapper", ref: e => (this.header = e) }, h("slot", { key: '857a54cba6e79dac4d1ff93246c839e661f69977', name: HEADER_SLOT })), h("div", { key: '47b20a22b88fdbdc82e12d4a4fb649410fd24d6d', class: "vertical-inner", ref: el => (this.verticalScroll = el), onWheel: this.verticalMouseWheel, onScroll: (e) => this.applyScroll('rgRow', e) }, h("div", { key: 'ee01a566cc1f8a688d329cbb68f87ca2db480dcf', class: "content-wrapper", style: { height: `${this.contentHeight}px` } }, h("slot", { key: '9c23e4a846eda6a5edd21bc7e5fda04d118008a2', name: CONTENT_SLOT }))), h("div", { key: '48fceef2ad3b425b1c37ff51f7774094ef7a40b4', class: "footer-wrapper", ref: e => (this.footer = e) }, h("slot", { key: 'eb71ecef7b1ca911e25360082d0f7706f67e3c9f', name: FOOTER_SLOT })))));
206
206
  }
207
207
  /**
208
208
  * Extra layer for scroll event monitoring, where MouseWheel event is not passing
@@ -339,8 +339,8 @@ export class RevogrViewportScroll {
339
339
  "references": {
340
340
  "DimensionCols": {
341
341
  "location": "import",
342
- "path": "../../types/dimension",
343
- "id": "src/types/dimension.ts::DimensionCols"
342
+ "path": "@type",
343
+ "id": "src/types/index.ts::DimensionCols"
344
344
  }
345
345
  }
346
346
  },
@@ -372,8 +372,8 @@ export class RevogrViewportScroll {
372
372
  "references": {
373
373
  "ViewPortScrollEvent": {
374
374
  "location": "import",
375
- "path": "../../types/interfaces",
376
- "id": "src/types/interfaces.ts::ViewPortScrollEvent"
375
+ "path": "@type",
376
+ "id": "src/types/index.ts::ViewPortScrollEvent"
377
377
  }
378
378
  }
379
379
  }
@@ -393,8 +393,8 @@ export class RevogrViewportScroll {
393
393
  "references": {
394
394
  "ViewPortResizeEvent": {
395
395
  "location": "import",
396
- "path": "../../types/interfaces",
397
- "id": "src/types/interfaces.ts::ViewPortResizeEvent"
396
+ "path": "@type",
397
+ "id": "src/types/index.ts::ViewPortResizeEvent"
398
398
  }
399
399
  }
400
400
  }
@@ -414,8 +414,8 @@ export class RevogrViewportScroll {
414
414
  "references": {
415
415
  "DimensionType": {
416
416
  "location": "import",
417
- "path": "../../types/dimension",
418
- "id": "src/types/dimension.ts::DimensionType"
417
+ "path": "@type",
418
+ "id": "src/types/index.ts::DimensionType"
419
419
  }
420
420
  }
421
421
  }
@@ -435,8 +435,8 @@ export class RevogrViewportScroll {
435
435
  "references": {
436
436
  "ViewPortScrollEvent": {
437
437
  "location": "import",
438
- "path": "../../types/interfaces",
439
- "id": "src/types/interfaces.ts::ViewPortScrollEvent"
438
+ "path": "@type",
439
+ "id": "src/types/index.ts::ViewPortScrollEvent"
440
440
  }
441
441
  }
442
442
  }
@@ -459,8 +459,8 @@ export class RevogrViewportScroll {
459
459
  },
460
460
  "ViewPortScrollEvent": {
461
461
  "location": "import",
462
- "path": "../../types/interfaces",
463
- "id": "src/types/interfaces.ts::ViewPortScrollEvent"
462
+ "path": "@type",
463
+ "id": "src/types/index.ts::ViewPortScrollEvent"
464
464
  }
465
465
  },
466
466
  "return": "Promise<void>"
@@ -489,8 +489,8 @@ export class RevogrViewportScroll {
489
489
  },
490
490
  "ViewPortScrollEvent": {
491
491
  "location": "import",
492
- "path": "../../types/interfaces",
493
- "id": "src/types/interfaces.ts::ViewPortScrollEvent"
492
+ "path": "@type",
493
+ "id": "src/types/index.ts::ViewPortScrollEvent"
494
494
  }
495
495
  },
496
496
  "return": "Promise<ViewPortScrollEvent>"
@@ -522,8 +522,8 @@ export class RevogrViewportScroll {
522
522
  },
523
523
  "DimensionType": {
524
524
  "location": "import",
525
- "path": "../../types/dimension",
526
- "id": "src/types/dimension.ts::DimensionType"
525
+ "path": "@type",
526
+ "id": "src/types/index.ts::DimensionType"
527
527
  },
528
528
  "UIEvent": {
529
529
  "location": "global",
@@ -1 +1 @@
1
- {"version":3,"file":"revogr-viewport-scroll.js","sourceRoot":"","sources":["../../../src/components/scroll/revogr-viewport-scroll.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Event,\n EventEmitter,\n h,\n Method,\n Element,\n Prop,\n Host,\n Listen,\n} from '@stencil/core';\nimport each from 'lodash/each';\n\nimport GridResizeService from '../revoGrid/viewport.resize.service';\nimport LocalScrollService from '../../services/local.scroll.service';\nimport { LocalScrollTimer } from '../../services/local.scroll.timer';\nimport {\n CONTENT_SLOT,\n FOOTER_SLOT,\n HEADER_SLOT,\n} from '../revoGrid/viewport.helpers';\nimport { DimensionCols, DimensionType } from '../../types/dimension';\nimport { ScrollCoordinateEvent, ViewPortResizeEvent, ViewPortScrollEvent } from '../../types/interfaces';\n\ntype Delta = 'deltaX' | 'deltaY';\ntype LocalScrollEvent = {\n preventDefault(): void;\n} & { [x in Delta]: number };\n\n/**\n * Viewport scroll component for RevoGrid\n * @slot - content\n * @slot header - header\n * @slot footer - footer\n */\n@Component({\n tag: 'revogr-viewport-scroll',\n styleUrl: 'revogr-viewport-scroll-style.scss',\n})\nexport class RevogrViewportScroll {\n /**\n * Enable row header\n */\n @Prop() readonly rowHeader: boolean;\n\n /**\n * Width of inner content\n */\n @Prop() contentWidth = 0;\n /**\n * Height of inner content\n */\n @Prop() contentHeight = 0;\n\n @Prop() colType!: DimensionCols | 'rowHeaders';\n\n /**\n * Before scroll event\n */\n @Event({ eventName: 'scrollviewport', bubbles: true }) scrollViewport: EventEmitter<ViewPortScrollEvent>;\n /**\n * Viewport resize\n */\n @Event({ eventName: 'resizeviewport' }) resizeViewport: EventEmitter<ViewPortResizeEvent>;\n\n /**\n * Triggered on scroll change, can be used to get information about scroll visibility\n */\n @Event() scrollchange: EventEmitter<{\n type: DimensionType;\n hasScroll: boolean;\n }>;\n\n /**\n * Silently scroll to coordinate\n * Made to align negative coordinates for mobile devices\n */\n @Event({ eventName: 'scrollviewportsilent' }) silentScroll: EventEmitter<ViewPortScrollEvent>;\n\n @Element() horizontalScroll: HTMLElement;\n\n private oldValY = this.contentHeight;\n private oldValX = this.contentWidth;\n\n private verticalScroll: HTMLElement;\n private header: HTMLElement;\n private footer: HTMLElement;\n\n /**\n * Static functions to bind wheel change\n */\n private horizontalMouseWheel: (e: Partial<LocalScrollEvent>) => void;\n private verticalMouseWheel: (e: Partial<LocalScrollEvent>) => void;\n\n private resizeService: GridResizeService;\n private localScrollService: LocalScrollService;\n private localScrollTimer: LocalScrollTimer;\n\n\n @Method() async setScroll(e: ViewPortScrollEvent) {\n this.localScrollTimer.latestScrollUpdate(e.dimension);\n this.localScrollService?.setScroll(e);\n }\n\n /**\n * update on delta in case we don't know existing position or external change\n * @param e\n */\n @Method() async changeScroll(\n e: ViewPortScrollEvent,\n silent = false,\n ) {\n if (silent) {\n if (e.coordinate) {\n switch (e.dimension) {\n // for mobile devices to skip negative scroll loop. only on vertical scroll\n case 'rgRow':\n this.verticalScroll.style.transform = `translateY(${-1 * e.coordinate}px)`;\n break;\n }\n }\n return null;\n }\n if (e.delta) {\n switch (e.dimension) {\n case 'rgCol':\n e.coordinate = this.horizontalScroll.scrollLeft + e.delta;\n break;\n case 'rgRow':\n e.coordinate = this.verticalScroll.scrollTop + e.delta;\n break;\n }\n this.setScroll(e);\n }\n return e;\n }\n\n /**\n * Dispatch this event to trigger vertical mouse wheel from plugins\n */\n @Listen('mousewheel-vertical') mousewheelVertical({\n detail: e,\n }: CustomEvent<LocalScrollEvent>) {\n this.verticalMouseWheel(e);\n }\n /**\n * Dispatch this event to trigger horizontal mouse wheel from plugins\n */\n @Listen('mousewheel-horizontal') mousewheelHorizontal({\n detail: e,\n }: CustomEvent<LocalScrollEvent>) {\n this.horizontalMouseWheel(e);\n }\n /**\n * Allows to use outside listener\n */\n @Listen('scroll-coordinate') scrollApply({\n detail: { type, coordinate },\n }: CustomEvent<ScrollCoordinateEvent>) {\n this.applyOnScroll(type, coordinate, true);\n }\n\n connectedCallback() {\n /**\n * Bind scroll functions for farther usage\n */\n // allow mousewheel for all devices including mobile\n this.verticalMouseWheel = this.onVerticalMouseWheel.bind(\n this,\n 'rgRow',\n 'deltaY',\n );\n this.horizontalMouseWheel = this.onHorizontalMouseWheel.bind(\n this,\n 'rgCol',\n 'deltaX',\n );\n this.localScrollTimer = new LocalScrollTimer('ontouchstart' in document.documentElement ? 0 : 10);\n /**\n * Create local scroll service\n */\n this.localScrollService = new LocalScrollService({\n // to improve safari smoothnes on scroll\n // skipAnimationFrame: isSafariDesktop(),\n runScroll: e => this.scrollViewport.emit(e),\n applyScroll: e => {\n this.localScrollTimer.setCoordinate(e);\n switch (e.dimension) {\n case 'rgCol':\n // this will trigger on scroll event\n this.horizontalScroll.scrollLeft = e.coordinate;\n break;\n case 'rgRow':\n // this will trigger on scroll event\n this.verticalScroll.scrollTop = e.coordinate;\n // for mobile devices to skip negative scroll loop. only on vertical scroll\n if (this.verticalScroll.style.transform) {\n this.verticalScroll.style.transform = '';\n }\n break;\n }\n },\n });\n }\n\n componentDidLoad() {\n // track horizontal viewport resize\n this.resizeService = new GridResizeService(this.horizontalScroll, {\n resize: entries => {\n let height = entries[0]?.contentRect.height || 0;\n if (height) {\n height -= this.header.clientHeight + this.footer.clientHeight;\n }\n const els = {\n rgRow: {\n size: height,\n contentSize: this.contentHeight,\n scroll: this.verticalScroll.scrollTop,\n noScroll: false,\n },\n rgCol: {\n size: entries[0]?.contentRect.width || 0,\n contentSize: this.contentWidth,\n scroll: this.horizontalScroll.scrollLeft,\n noScroll: this.colType !== 'rgCol' ? true : false,\n },\n };\n each(els, (item, dimension: DimensionType) => {\n this.resizeViewport.emit({ dimension, size: item.size, rowHeader: this.rowHeader });\n if (item.noScroll) {\n return;\n }\n this.localScrollService?.scroll(item.scroll, dimension, true);\n // track scroll visibility on outer element change\n this.setScrollVisibility(dimension, item.size, item.contentSize);\n });\n },\n });\n }\n\n /**\n * Check if scroll present or not per type\n * Trigger this method on inner content size change or on outer element size change\n * If inner content bigger then outer size then scroll is present and mousewheel binding required\n * @param type - dimension type 'rgRow/y' or 'rgCol/x'\n * @param size - outer content size\n * @param innerContentSize - inner content size\n */\n setScrollVisibility(\n type: DimensionType,\n size: number,\n innerContentSize: number,\n ) {\n // test if scroll present\n const hasScroll = size < innerContentSize;\n let el: HTMLElement;\n // event reference for binding\n switch (type) {\n case 'rgCol':\n el = this.horizontalScroll;\n break;\n case 'rgRow':\n el = this.verticalScroll;\n break;\n }\n // based on scroll visibility assign or remove class and event\n if (hasScroll) {\n el.classList.add(`scroll-${type}`);\n } else {\n el.classList.remove(`scroll-${type}`);\n }\n this.scrollchange.emit({ type, hasScroll });\n }\n\n disconnectedCallback() {\n this.resizeService.destroy();\n }\n\n async componentDidRender() {\n // scroll update if number of rows changed\n if (this.contentHeight < this.oldValY && this.verticalScroll) {\n this.verticalScroll.scrollTop += this.contentHeight - this.oldValY;\n }\n this.oldValY = this.contentHeight;\n\n // scroll update if number of cols changed\n if (this.contentWidth < this.oldValX) {\n this.horizontalScroll.scrollLeft += this.contentWidth - this.oldValX;\n }\n this.oldValX = this.contentWidth;\n\n this.localScrollService.setParams(\n {\n contentSize: this.contentHeight,\n clientSize: this.verticalScroll.clientHeight,\n virtualSize: 0,\n },\n 'rgRow',\n );\n\n this.localScrollService.setParams(\n {\n contentSize: this.contentWidth,\n clientSize: this.horizontalScroll.clientWidth,\n virtualSize: 0,\n },\n 'rgCol',\n );\n this.setScrollVisibility(\n 'rgRow',\n this.verticalScroll.clientHeight,\n this.contentHeight,\n );\n this.setScrollVisibility(\n 'rgCol',\n this.horizontalScroll.clientWidth,\n this.contentWidth,\n );\n }\n\n render() {\n return (\n <Host\n onWheel={this.horizontalMouseWheel}\n onScroll={(e: UIEvent) => this.applyScroll('rgCol', e)}\n >\n <div\n class=\"inner-content-table\"\n style={{ width: `${this.contentWidth}px` }}\n >\n <div class=\"header-wrapper\" ref={e => (this.header = e)}>\n <slot name={HEADER_SLOT} />\n </div>\n <div\n class=\"vertical-inner\"\n ref={el => (this.verticalScroll = el)}\n onWheel={this.verticalMouseWheel}\n onScroll={(e: MouseEvent) => this.applyScroll('rgRow', e)}\n >\n <div\n class=\"content-wrapper\"\n style={{ height: `${this.contentHeight}px` }}\n >\n <slot name={CONTENT_SLOT} />\n </div>\n </div>\n <div class=\"footer-wrapper\" ref={e => (this.footer = e)}>\n <slot name={FOOTER_SLOT} />\n </div>\n </div>\n </Host>\n );\n }\n /**\n * Extra layer for scroll event monitoring, where MouseWheel event is not passing\n * We need to trigger scroll event in case there is no mousewheel event\n */\n @Method() async applyScroll(type: DimensionType, e: UIEvent) {\n if (!(e.target instanceof HTMLElement)) {\n return;\n }\n let scroll = 0;\n switch (type) {\n case 'rgCol':\n scroll = e.target.scrollLeft;\n break;\n case 'rgRow':\n scroll = e.target.scrollTop;\n break;\n }\n\n // for mobile devices to skip negative scroll loop\n if (scroll < 0) {\n this.silentScroll.emit({ dimension: type, coordinate: scroll });\n return;\n }\n this.applyOnScroll(type, scroll);\n }\n\n /**\n * Applies change on scroll event only if mousewheel event happened some time ago\n */\n private applyOnScroll(\n type: DimensionType,\n coordinate: number,\n outside = false,\n ) {\n // apply after throttling\n if (this.localScrollTimer.isReady(type, coordinate)) {\n this.localScrollService?.scroll(\n coordinate,\n type,\n undefined,\n undefined,\n outside,\n );\n }\n }\n\n /**\n * On vertical mousewheel event\n * @param type\n * @param delta\n * @param e\n */\n private onVerticalMouseWheel(\n type: DimensionType,\n delta: Delta,\n e: LocalScrollEvent,\n ) {\n e.preventDefault?.();\n const pos = this.verticalScroll.scrollTop + e[delta];\n this.localScrollService?.scroll(pos, type, undefined, e[delta]);\n this.localScrollTimer.latestScrollUpdate(type);\n }\n\n /**\n * On horizontal mousewheel event\n * @param type\n * @param delta\n * @param e\n */\n private onHorizontalMouseWheel(\n type: DimensionType,\n delta: Delta,\n e: LocalScrollEvent,\n ) {\n e.preventDefault?.();\n const pos = this.horizontalScroll.scrollLeft + e[delta];\n this.localScrollService?.scroll(pos, type, undefined, e[delta]);\n this.localScrollTimer.latestScrollUpdate(type);\n }\n}\n"]}
1
+ {"version":3,"file":"revogr-viewport-scroll.js","sourceRoot":"","sources":["../../../src/components/scroll/revogr-viewport-scroll.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Event,\n EventEmitter,\n h,\n Method,\n Element,\n Prop,\n Host,\n Listen,\n} from '@stencil/core';\nimport each from 'lodash/each';\n\nimport GridResizeService from '../revoGrid/viewport.resize.service';\nimport LocalScrollService from '../../services/local.scroll.service';\nimport { LocalScrollTimer } from '../../services/local.scroll.timer';\nimport {\n CONTENT_SLOT,\n FOOTER_SLOT,\n HEADER_SLOT,\n} from '../revoGrid/viewport.helpers';\nimport { DimensionCols, DimensionType } from '@type';\nimport { ScrollCoordinateEvent, ViewPortResizeEvent, ViewPortScrollEvent } from '@type';\n\ntype Delta = 'deltaX' | 'deltaY';\ntype LocalScrollEvent = {\n preventDefault(): void;\n} & { [x in Delta]: number };\n\n/**\n * Viewport scroll component for RevoGrid\n * @slot - content\n * @slot header - header\n * @slot footer - footer\n */\n@Component({\n tag: 'revogr-viewport-scroll',\n styleUrl: 'revogr-viewport-scroll-style.scss',\n})\nexport class RevogrViewportScroll {\n /**\n * Enable row header\n */\n @Prop() readonly rowHeader: boolean;\n\n /**\n * Width of inner content\n */\n @Prop() contentWidth = 0;\n /**\n * Height of inner content\n */\n @Prop() contentHeight = 0;\n\n @Prop() colType!: DimensionCols | 'rowHeaders';\n\n /**\n * Before scroll event\n */\n @Event({ eventName: 'scrollviewport', bubbles: true }) scrollViewport: EventEmitter<ViewPortScrollEvent>;\n /**\n * Viewport resize\n */\n @Event({ eventName: 'resizeviewport' }) resizeViewport: EventEmitter<ViewPortResizeEvent>;\n\n /**\n * Triggered on scroll change, can be used to get information about scroll visibility\n */\n @Event() scrollchange: EventEmitter<{\n type: DimensionType;\n hasScroll: boolean;\n }>;\n\n /**\n * Silently scroll to coordinate\n * Made to align negative coordinates for mobile devices\n */\n @Event({ eventName: 'scrollviewportsilent' }) silentScroll: EventEmitter<ViewPortScrollEvent>;\n\n @Element() horizontalScroll: HTMLElement;\n\n private oldValY = this.contentHeight;\n private oldValX = this.contentWidth;\n\n private verticalScroll: HTMLElement;\n private header: HTMLElement;\n private footer: HTMLElement;\n\n /**\n * Static functions to bind wheel change\n */\n private horizontalMouseWheel: (e: Partial<LocalScrollEvent>) => void;\n private verticalMouseWheel: (e: Partial<LocalScrollEvent>) => void;\n\n private resizeService: GridResizeService;\n private localScrollService: LocalScrollService;\n private localScrollTimer: LocalScrollTimer;\n\n\n @Method() async setScroll(e: ViewPortScrollEvent) {\n this.localScrollTimer.latestScrollUpdate(e.dimension);\n this.localScrollService?.setScroll(e);\n }\n\n /**\n * update on delta in case we don't know existing position or external change\n * @param e\n */\n @Method() async changeScroll(\n e: ViewPortScrollEvent,\n silent = false,\n ) {\n if (silent) {\n if (e.coordinate) {\n switch (e.dimension) {\n // for mobile devices to skip negative scroll loop. only on vertical scroll\n case 'rgRow':\n this.verticalScroll.style.transform = `translateY(${-1 * e.coordinate}px)`;\n break;\n }\n }\n return null;\n }\n if (e.delta) {\n switch (e.dimension) {\n case 'rgCol':\n e.coordinate = this.horizontalScroll.scrollLeft + e.delta;\n break;\n case 'rgRow':\n e.coordinate = this.verticalScroll.scrollTop + e.delta;\n break;\n }\n this.setScroll(e);\n }\n return e;\n }\n\n /**\n * Dispatch this event to trigger vertical mouse wheel from plugins\n */\n @Listen('mousewheel-vertical') mousewheelVertical({\n detail: e,\n }: CustomEvent<LocalScrollEvent>) {\n this.verticalMouseWheel(e);\n }\n /**\n * Dispatch this event to trigger horizontal mouse wheel from plugins\n */\n @Listen('mousewheel-horizontal') mousewheelHorizontal({\n detail: e,\n }: CustomEvent<LocalScrollEvent>) {\n this.horizontalMouseWheel(e);\n }\n /**\n * Allows to use outside listener\n */\n @Listen('scroll-coordinate') scrollApply({\n detail: { type, coordinate },\n }: CustomEvent<ScrollCoordinateEvent>) {\n this.applyOnScroll(type, coordinate, true);\n }\n\n connectedCallback() {\n /**\n * Bind scroll functions for farther usage\n */\n // allow mousewheel for all devices including mobile\n this.verticalMouseWheel = this.onVerticalMouseWheel.bind(\n this,\n 'rgRow',\n 'deltaY',\n );\n this.horizontalMouseWheel = this.onHorizontalMouseWheel.bind(\n this,\n 'rgCol',\n 'deltaX',\n );\n this.localScrollTimer = new LocalScrollTimer('ontouchstart' in document.documentElement ? 0 : 10);\n /**\n * Create local scroll service\n */\n this.localScrollService = new LocalScrollService({\n // to improve safari smoothnes on scroll\n // skipAnimationFrame: isSafariDesktop(),\n runScroll: e => this.scrollViewport.emit(e),\n applyScroll: e => {\n this.localScrollTimer.setCoordinate(e);\n switch (e.dimension) {\n case 'rgCol':\n // this will trigger on scroll event\n this.horizontalScroll.scrollLeft = e.coordinate;\n break;\n case 'rgRow':\n // this will trigger on scroll event\n this.verticalScroll.scrollTop = e.coordinate;\n // for mobile devices to skip negative scroll loop. only on vertical scroll\n if (this.verticalScroll.style.transform) {\n this.verticalScroll.style.transform = '';\n }\n break;\n }\n },\n });\n }\n\n componentDidLoad() {\n // track horizontal viewport resize\n this.resizeService = new GridResizeService(this.horizontalScroll, {\n resize: entries => {\n let height = entries[0]?.contentRect.height || 0;\n if (height) {\n height -= this.header.clientHeight + this.footer.clientHeight;\n }\n const els = {\n rgRow: {\n size: height,\n contentSize: this.contentHeight,\n scroll: this.verticalScroll.scrollTop,\n noScroll: false,\n },\n rgCol: {\n size: entries[0]?.contentRect.width || 0,\n contentSize: this.contentWidth,\n scroll: this.horizontalScroll.scrollLeft,\n noScroll: this.colType !== 'rgCol' ? true : false,\n },\n };\n each(els, (item, dimension: DimensionType) => {\n this.resizeViewport.emit({ dimension, size: item.size, rowHeader: this.rowHeader });\n if (item.noScroll) {\n return;\n }\n this.localScrollService?.scroll(item.scroll, dimension, true);\n // track scroll visibility on outer element change\n this.setScrollVisibility(dimension, item.size, item.contentSize);\n });\n },\n });\n }\n\n /**\n * Check if scroll present or not per type\n * Trigger this method on inner content size change or on outer element size change\n * If inner content bigger then outer size then scroll is present and mousewheel binding required\n * @param type - dimension type 'rgRow/y' or 'rgCol/x'\n * @param size - outer content size\n * @param innerContentSize - inner content size\n */\n setScrollVisibility(\n type: DimensionType,\n size: number,\n innerContentSize: number,\n ) {\n // test if scroll present\n const hasScroll = size < innerContentSize;\n let el: HTMLElement;\n // event reference for binding\n switch (type) {\n case 'rgCol':\n el = this.horizontalScroll;\n break;\n case 'rgRow':\n el = this.verticalScroll;\n break;\n }\n // based on scroll visibility assign or remove class and event\n if (hasScroll) {\n el.classList.add(`scroll-${type}`);\n } else {\n el.classList.remove(`scroll-${type}`);\n }\n this.scrollchange.emit({ type, hasScroll });\n }\n\n disconnectedCallback() {\n this.resizeService.destroy();\n }\n\n async componentDidRender() {\n // scroll update if number of rows changed\n if (this.contentHeight < this.oldValY && this.verticalScroll) {\n this.verticalScroll.scrollTop += this.contentHeight - this.oldValY;\n }\n this.oldValY = this.contentHeight;\n\n // scroll update if number of cols changed\n if (this.contentWidth < this.oldValX) {\n this.horizontalScroll.scrollLeft += this.contentWidth - this.oldValX;\n }\n this.oldValX = this.contentWidth;\n\n this.localScrollService.setParams(\n {\n contentSize: this.contentHeight,\n clientSize: this.verticalScroll.clientHeight,\n virtualSize: 0,\n },\n 'rgRow',\n );\n\n this.localScrollService.setParams(\n {\n contentSize: this.contentWidth,\n clientSize: this.horizontalScroll.clientWidth,\n virtualSize: 0,\n },\n 'rgCol',\n );\n this.setScrollVisibility(\n 'rgRow',\n this.verticalScroll.clientHeight,\n this.contentHeight,\n );\n this.setScrollVisibility(\n 'rgCol',\n this.horizontalScroll.clientWidth,\n this.contentWidth,\n );\n }\n\n render() {\n return (\n <Host\n onWheel={this.horizontalMouseWheel}\n onScroll={(e: UIEvent) => this.applyScroll('rgCol', e)}\n >\n <div\n class=\"inner-content-table\"\n style={{ width: `${this.contentWidth}px` }}\n >\n <div class=\"header-wrapper\" ref={e => (this.header = e)}>\n <slot name={HEADER_SLOT} />\n </div>\n <div\n class=\"vertical-inner\"\n ref={el => (this.verticalScroll = el)}\n onWheel={this.verticalMouseWheel}\n onScroll={(e: MouseEvent) => this.applyScroll('rgRow', e)}\n >\n <div\n class=\"content-wrapper\"\n style={{ height: `${this.contentHeight}px` }}\n >\n <slot name={CONTENT_SLOT} />\n </div>\n </div>\n <div class=\"footer-wrapper\" ref={e => (this.footer = e)}>\n <slot name={FOOTER_SLOT} />\n </div>\n </div>\n </Host>\n );\n }\n /**\n * Extra layer for scroll event monitoring, where MouseWheel event is not passing\n * We need to trigger scroll event in case there is no mousewheel event\n */\n @Method() async applyScroll(type: DimensionType, e: UIEvent) {\n if (!(e.target instanceof HTMLElement)) {\n return;\n }\n let scroll = 0;\n switch (type) {\n case 'rgCol':\n scroll = e.target.scrollLeft;\n break;\n case 'rgRow':\n scroll = e.target.scrollTop;\n break;\n }\n\n // for mobile devices to skip negative scroll loop\n if (scroll < 0) {\n this.silentScroll.emit({ dimension: type, coordinate: scroll });\n return;\n }\n this.applyOnScroll(type, scroll);\n }\n\n /**\n * Applies change on scroll event only if mousewheel event happened some time ago\n */\n private applyOnScroll(\n type: DimensionType,\n coordinate: number,\n outside = false,\n ) {\n // apply after throttling\n if (this.localScrollTimer.isReady(type, coordinate)) {\n this.localScrollService?.scroll(\n coordinate,\n type,\n undefined,\n undefined,\n outside,\n );\n }\n }\n\n /**\n * On vertical mousewheel event\n * @param type\n * @param delta\n * @param e\n */\n private onVerticalMouseWheel(\n type: DimensionType,\n delta: Delta,\n e: LocalScrollEvent,\n ) {\n e.preventDefault?.();\n const pos = this.verticalScroll.scrollTop + e[delta];\n this.localScrollService?.scroll(pos, type, undefined, e[delta]);\n this.localScrollTimer.latestScrollUpdate(type);\n }\n\n /**\n * On horizontal mousewheel event\n * @param type\n * @param delta\n * @param e\n */\n private onHorizontalMouseWheel(\n type: DimensionType,\n delta: Delta,\n e: LocalScrollEvent,\n ) {\n e.preventDefault?.();\n const pos = this.horizontalScroll.scrollLeft + e[delta];\n this.localScrollService?.scroll(pos, type, undefined, e[delta]);\n this.localScrollTimer.latestScrollUpdate(type);\n }\n}\n"]}
@@ -112,7 +112,7 @@ export class RevogrScrollVirtual {
112
112
  }
113
113
  render() {
114
114
  const sizeType = this.dimension === 'rgRow' ? 'height' : 'width';
115
- return (h(Host, { key: '648f7c565364722ee80475ca00ce44fb00c3a042', onScroll: (e) => this.onScroll(e) }, h("div", { key: '8aca236453e97e0f79d35946daa81c5be049fc26', style: {
115
+ return (h(Host, { key: '9d672a8992b1c13814270537389142ef53d322f9', onScroll: (e) => this.onScroll(e) }, h("div", { key: '250886ee28842f087d815d66cbb046b38c466ebf', style: {
116
116
  [sizeType]: `${getContentSize(this.dimensionStore.get('realSize'), this.size, this.viewportStore.get('virtualSize'))}px`,
117
117
  } })));
118
118
  }
@@ -138,8 +138,8 @@ export class RevogrScrollVirtual {
138
138
  "references": {
139
139
  "DimensionType": {
140
140
  "location": "import",
141
- "path": "../../types/dimension",
142
- "id": "src/types/dimension.ts::DimensionType"
141
+ "path": "@type",
142
+ "id": "src/types/index.ts::DimensionType"
143
143
  }
144
144
  }
145
145
  },
@@ -162,13 +162,13 @@ export class RevogrScrollVirtual {
162
162
  "references": {
163
163
  "Observable": {
164
164
  "location": "import",
165
- "path": "../../types/interfaces",
166
- "id": "src/types/interfaces.ts::Observable"
165
+ "path": "@type",
166
+ "id": "src/types/index.ts::Observable"
167
167
  },
168
168
  "ViewportState": {
169
169
  "location": "import",
170
- "path": "../../types/interfaces",
171
- "id": "src/types/interfaces.ts::ViewportState"
170
+ "path": "@type",
171
+ "id": "src/types/index.ts::ViewportState"
172
172
  }
173
173
  }
174
174
  },
@@ -188,13 +188,13 @@ export class RevogrScrollVirtual {
188
188
  "references": {
189
189
  "Observable": {
190
190
  "location": "import",
191
- "path": "../../types/interfaces",
192
- "id": "src/types/interfaces.ts::Observable"
191
+ "path": "@type",
192
+ "id": "src/types/index.ts::Observable"
193
193
  },
194
194
  "DimensionSettingsState": {
195
195
  "location": "import",
196
- "path": "../../types/interfaces",
197
- "id": "src/types/interfaces.ts::DimensionSettingsState"
196
+ "path": "@type",
197
+ "id": "src/types/index.ts::DimensionSettingsState"
198
198
  }
199
199
  }
200
200
  },
@@ -224,8 +224,8 @@ export class RevogrScrollVirtual {
224
224
  "references": {
225
225
  "ViewPortScrollEvent": {
226
226
  "location": "import",
227
- "path": "../../types/interfaces",
228
- "id": "src/types/interfaces.ts::ViewPortScrollEvent"
227
+ "path": "@type",
228
+ "id": "src/types/index.ts::ViewPortScrollEvent"
229
229
  }
230
230
  }
231
231
  }
@@ -248,8 +248,8 @@ export class RevogrScrollVirtual {
248
248
  },
249
249
  "ViewPortScrollEvent": {
250
250
  "location": "import",
251
- "path": "../../types/interfaces",
252
- "id": "src/types/interfaces.ts::ViewPortScrollEvent"
251
+ "path": "@type",
252
+ "id": "src/types/index.ts::ViewPortScrollEvent"
253
253
  }
254
254
  },
255
255
  "return": "Promise<void>"
@@ -274,8 +274,8 @@ export class RevogrScrollVirtual {
274
274
  },
275
275
  "ViewPortScrollEvent": {
276
276
  "location": "import",
277
- "path": "../../types/interfaces",
278
- "id": "src/types/interfaces.ts::ViewPortScrollEvent"
277
+ "path": "@type",
278
+ "id": "src/types/index.ts::ViewPortScrollEvent"
279
279
  }
280
280
  },
281
281
  "return": "Promise<ViewPortScrollEvent>"
@@ -1 +1 @@
1
- {"version":3,"file":"revogr-scroll-virtual.js","sourceRoot":"","sources":["../../../src/components/scrollable/revogr-scroll-virtual.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Element as StencilElement,\n Event,\n EventEmitter,\n h,\n Host,\n Method,\n Prop,\n} from '@stencil/core';\nimport LocalScrollService, { getContentSize } from '../../services/local.scroll.service';\nimport { getScrollbarSize } from '../../utils';\nimport { DimensionType } from '../../types/dimension';\nimport {\n Observable,\n ViewportState,\n DimensionSettingsState,\n ViewPortScrollEvent,\n} from '../../types/interfaces';\nimport { AutohideScrollPlugin } from './autohide-scroll.plugin';\nimport { LocalScrollTimer } from '../../services/local.scroll.timer';\n\n/**\n * Virtual scroll component\n */\n@Component({\n tag: 'revogr-scroll-virtual',\n styleUrl: 'revogr-scroll-style.scss',\n})\nexport class RevogrScrollVirtual {\n /**\n * Scroll dimension (`X` - `rgCol` or `Y` - `rgRow`)\n */\n @Prop() dimension: DimensionType = 'rgRow';\n\n /**\n * Viewport\n */\n @Prop() viewportStore!: Observable<ViewportState>;\n /**\n * Dimensions\n */\n @Prop() dimensionStore!: Observable<DimensionSettingsState>;\n\n /**\n * Scroll event\n */\n @Event({ eventName: 'scrollvirtual' })\n scrollVirtual: EventEmitter<ViewPortScrollEvent>;\n\n @StencilElement() element: HTMLElement;\n private autohideScrollPlugin: AutohideScrollPlugin;\n private scrollSize = 0;\n private localScrollService: LocalScrollService;\n private localScrollTimer: LocalScrollTimer;\n\n @Method()\n async setScroll(e: ViewPortScrollEvent): Promise<void> {\n if (this.dimension !== e.dimension) {\n return;\n }\n this.localScrollTimer.latestScrollUpdate(e.dimension);\n this.localScrollService?.setScroll(e);\n if (e.coordinate) {\n this.autohideScrollPlugin.checkScroll({\n scrollSize: this.scrollSize,\n contentSize: this.dimensionStore.get('realSize'),\n virtualSize: this.viewportStore.get('virtualSize'),\n });\n }\n }\n\n /**\n * Update if `delta` exists in case we don't know current position or if it's external change\n */\n @Method()\n async changeScroll(e: ViewPortScrollEvent): Promise<ViewPortScrollEvent> {\n if (e.delta) {\n switch (e.dimension) {\n case 'rgCol':\n e.coordinate = this.element.scrollLeft + e.delta;\n break;\n case 'rgRow':\n e.coordinate = this.element.scrollTop + e.delta;\n break;\n }\n this.setScroll(e);\n }\n return e;\n }\n\n set size(s: number) {\n this.autohideScrollPlugin.setScrollSize(s);\n if (this.dimension === 'rgRow') {\n this.element.style.minWidth = `${s}px`;\n return;\n }\n this.element.style.minHeight = `${s}px`;\n }\n\n get size(): number {\n if (this.dimension === 'rgRow') {\n return this.element.clientHeight;\n }\n return this.element.clientWidth;\n }\n\n connectedCallback() {\n this.autohideScrollPlugin = new AutohideScrollPlugin(this.element);\n this.localScrollTimer = new LocalScrollTimer('ontouchstart' in document.documentElement ? 0 : 10);\n this.localScrollService = new LocalScrollService({\n runScroll: e => this.scrollVirtual.emit(e),\n applyScroll: e => {\n this.localScrollTimer.setCoordinate(e);\n const type = e.dimension === 'rgRow' ? 'scrollTop' : 'scrollLeft';\n // this will trigger on scroll event\n this.element[type] = e.coordinate;\n },\n });\n }\n\n disconnectedCallback() {\n this.autohideScrollPlugin.clear();\n }\n\n componentWillLoad() {\n this.scrollSize = getScrollbarSize(document);\n }\n\n componentDidRender() {\n const type = this.dimension === 'rgRow' ? 'scrollHeight' : 'scrollWidth';\n if (this.element[type] > this.size) {\n this.size = this.scrollSize;\n } else {\n this.size = 0;\n }\n this.localScrollService.setParams(\n {\n contentSize: this.dimensionStore.get('realSize'),\n clientSize: this.size,\n virtualSize: this.viewportStore.get('virtualSize'),\n },\n this.dimension,\n );\n }\n\n onScroll(e: MouseEvent) {\n if (!(e.target instanceof Element)) {\n return;\n }\n const target = e.target;\n let type: 'scrollLeft' | 'scrollTop' = 'scrollLeft';\n if (this.dimension === 'rgRow') {\n type = 'scrollTop';\n }\n // apply after throttling\n if (this.localScrollTimer.isReady(this.dimension, target[type] || 0)) {\n this.localScrollService?.scroll(target[type] || 0, this.dimension);\n }\n }\n\n render() {\n const sizeType = this.dimension === 'rgRow' ? 'height' : 'width';\n return (\n <Host onScroll={(e: MouseEvent) => this.onScroll(e)}>\n <div\n style={{\n [sizeType]: `${\n getContentSize(\n this.dimensionStore.get('realSize'),\n this.size,\n this.viewportStore.get('virtualSize')\n )}px`,\n }}\n />\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"revogr-scroll-virtual.js","sourceRoot":"","sources":["../../../src/components/scrollable/revogr-scroll-virtual.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Element as StencilElement,\n Event,\n EventEmitter,\n h,\n Host,\n Method,\n Prop,\n} from '@stencil/core';\nimport LocalScrollService, { getContentSize } from '../../services/local.scroll.service';\nimport { getScrollbarSize } from '../../utils';\nimport { DimensionType } from '@type';\nimport {\n Observable,\n ViewportState,\n DimensionSettingsState,\n ViewPortScrollEvent,\n} from '@type';\nimport { AutohideScrollPlugin } from './autohide-scroll.plugin';\nimport { LocalScrollTimer } from '../../services/local.scroll.timer';\n\n/**\n * Virtual scroll component\n */\n@Component({\n tag: 'revogr-scroll-virtual',\n styleUrl: 'revogr-scroll-style.scss',\n})\nexport class RevogrScrollVirtual {\n /**\n * Scroll dimension (`X` - `rgCol` or `Y` - `rgRow`)\n */\n @Prop() dimension: DimensionType = 'rgRow';\n\n /**\n * Viewport\n */\n @Prop() viewportStore!: Observable<ViewportState>;\n /**\n * Dimensions\n */\n @Prop() dimensionStore!: Observable<DimensionSettingsState>;\n\n /**\n * Scroll event\n */\n @Event({ eventName: 'scrollvirtual' })\n scrollVirtual: EventEmitter<ViewPortScrollEvent>;\n\n @StencilElement() element: HTMLElement;\n private autohideScrollPlugin: AutohideScrollPlugin;\n private scrollSize = 0;\n private localScrollService: LocalScrollService;\n private localScrollTimer: LocalScrollTimer;\n\n @Method()\n async setScroll(e: ViewPortScrollEvent): Promise<void> {\n if (this.dimension !== e.dimension) {\n return;\n }\n this.localScrollTimer.latestScrollUpdate(e.dimension);\n this.localScrollService?.setScroll(e);\n if (e.coordinate) {\n this.autohideScrollPlugin.checkScroll({\n scrollSize: this.scrollSize,\n contentSize: this.dimensionStore.get('realSize'),\n virtualSize: this.viewportStore.get('virtualSize'),\n });\n }\n }\n\n /**\n * Update if `delta` exists in case we don't know current position or if it's external change\n */\n @Method()\n async changeScroll(e: ViewPortScrollEvent): Promise<ViewPortScrollEvent> {\n if (e.delta) {\n switch (e.dimension) {\n case 'rgCol':\n e.coordinate = this.element.scrollLeft + e.delta;\n break;\n case 'rgRow':\n e.coordinate = this.element.scrollTop + e.delta;\n break;\n }\n this.setScroll(e);\n }\n return e;\n }\n\n set size(s: number) {\n this.autohideScrollPlugin.setScrollSize(s);\n if (this.dimension === 'rgRow') {\n this.element.style.minWidth = `${s}px`;\n return;\n }\n this.element.style.minHeight = `${s}px`;\n }\n\n get size(): number {\n if (this.dimension === 'rgRow') {\n return this.element.clientHeight;\n }\n return this.element.clientWidth;\n }\n\n connectedCallback() {\n this.autohideScrollPlugin = new AutohideScrollPlugin(this.element);\n this.localScrollTimer = new LocalScrollTimer('ontouchstart' in document.documentElement ? 0 : 10);\n this.localScrollService = new LocalScrollService({\n runScroll: e => this.scrollVirtual.emit(e),\n applyScroll: e => {\n this.localScrollTimer.setCoordinate(e);\n const type = e.dimension === 'rgRow' ? 'scrollTop' : 'scrollLeft';\n // this will trigger on scroll event\n this.element[type] = e.coordinate;\n },\n });\n }\n\n disconnectedCallback() {\n this.autohideScrollPlugin.clear();\n }\n\n componentWillLoad() {\n this.scrollSize = getScrollbarSize(document);\n }\n\n componentDidRender() {\n const type = this.dimension === 'rgRow' ? 'scrollHeight' : 'scrollWidth';\n if (this.element[type] > this.size) {\n this.size = this.scrollSize;\n } else {\n this.size = 0;\n }\n this.localScrollService.setParams(\n {\n contentSize: this.dimensionStore.get('realSize'),\n clientSize: this.size,\n virtualSize: this.viewportStore.get('virtualSize'),\n },\n this.dimension,\n );\n }\n\n onScroll(e: MouseEvent) {\n if (!(e.target instanceof Element)) {\n return;\n }\n const target = e.target;\n let type: 'scrollLeft' | 'scrollTop' = 'scrollLeft';\n if (this.dimension === 'rgRow') {\n type = 'scrollTop';\n }\n // apply after throttling\n if (this.localScrollTimer.isReady(this.dimension, target[type] || 0)) {\n this.localScrollService?.scroll(target[type] || 0, this.dimension);\n }\n }\n\n render() {\n const sizeType = this.dimension === 'rgRow' ? 'height' : 'width';\n return (\n <Host onScroll={(e: MouseEvent) => this.onScroll(e)}>\n <div\n style={{\n [sizeType]: `${\n getContentSize(\n this.dimensionStore.get('realSize'),\n this.size,\n this.viewportStore.get('virtualSize')\n )}px`,\n }}\n />\n </Host>\n );\n }\n}\n"]}