@revolist/revogrid 4.9.1 → 4.9.3

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 (262) hide show
  1. package/dist/cjs/{base.plugin-d48d867d.js → base.plugin-bf5f43a0.js} +2 -2
  2. package/dist/cjs/{base.plugin-d48d867d.js.map → base.plugin-bf5f43a0.js.map} +1 -1
  3. package/dist/cjs/{column.service-6f691f50.js → column.service-01f4a6c7.js} +25 -6
  4. package/dist/cjs/column.service-01f4a6c7.js.map +1 -0
  5. package/dist/cjs/{dimension.helpers-e9d22516.js → dimension.helpers-a6788214.js} +10 -5
  6. package/dist/cjs/dimension.helpers-a6788214.js.map +1 -0
  7. package/dist/cjs/{header-cell-renderer-81a22b00.js → header-cell-renderer-3bc70679.js} +10 -8
  8. package/dist/cjs/header-cell-renderer-3bc70679.js.map +1 -0
  9. package/dist/cjs/index.cjs.js +4 -4
  10. package/dist/cjs/revo-grid.cjs.entry.js +81 -93
  11. package/dist/cjs/revo-grid.cjs.entry.js.map +1 -1
  12. package/dist/cjs/revogr-attribution_6.cjs.entry.js +71 -46
  13. package/dist/cjs/revogr-attribution_6.cjs.entry.js.map +1 -1
  14. package/dist/cjs/revogr-clipboard_3.cjs.entry.js +12 -7
  15. package/dist/cjs/revogr-clipboard_3.cjs.entry.js.map +1 -1
  16. package/dist/cjs/revogr-data_4.cjs.entry.js +45 -36
  17. package/dist/cjs/revogr-data_4.cjs.entry.js.map +1 -1
  18. package/dist/cjs/revogr-filter-panel.cjs.entry.js.map +1 -1
  19. package/dist/cjs/{selection.helpers-8fa19c04.js → selection.helpers-1a8c8d49.js} +32 -31
  20. package/dist/cjs/selection.helpers-1a8c8d49.js.map +1 -0
  21. package/dist/cjs/{throttle-bcc4740d.js → throttle-52be9e67.js} +4 -3
  22. package/dist/cjs/throttle-52be9e67.js.map +1 -0
  23. package/dist/cjs/{viewport.store-9cf01c71.js → viewport.store-35a3e7ee.js} +13 -9
  24. package/dist/cjs/viewport.store-35a3e7ee.js.map +1 -0
  25. package/dist/collection/components/clipboard/revogr-clipboard.js +68 -89
  26. package/dist/collection/components/clipboard/revogr-clipboard.js.map +1 -1
  27. package/dist/collection/components/data/cell-renderer.js +7 -4
  28. package/dist/collection/components/data/cell-renderer.js.map +1 -1
  29. package/dist/collection/components/data/column.service.js +1 -1
  30. package/dist/collection/components/data/column.service.js.map +1 -1
  31. package/dist/collection/components/data/revogr-data.js +1 -1
  32. package/dist/collection/components/data/revogr-data.js.map +1 -1
  33. package/dist/collection/components/editors/revogr-edit.js +6 -6
  34. package/dist/collection/components/editors/revogr-edit.js.map +1 -1
  35. package/dist/collection/components/editors/text-editor.js +3 -1
  36. package/dist/collection/components/editors/text-editor.js.map +1 -1
  37. package/dist/collection/components/header/header-renderer.js +2 -1
  38. package/dist/collection/components/header/header-renderer.js.map +1 -1
  39. package/dist/collection/components/header/resizable.directive.js +7 -5
  40. package/dist/collection/components/header/resizable.directive.js.map +1 -1
  41. package/dist/collection/components/header/resizable.element.js +1 -1
  42. package/dist/collection/components/header/resizable.element.js.map +1 -1
  43. package/dist/collection/components/overlay/autofill.service.js +11 -12
  44. package/dist/collection/components/overlay/autofill.service.js.map +1 -1
  45. package/dist/collection/components/overlay/keyboard.service.js.map +1 -1
  46. package/dist/collection/components/overlay/revogr-overlay-selection.js +74 -39
  47. package/dist/collection/components/overlay/revogr-overlay-selection.js.map +1 -1
  48. package/dist/collection/components/overlay/selection.utils.js +13 -5
  49. package/dist/collection/components/overlay/selection.utils.js.map +1 -1
  50. package/dist/collection/components/revoGrid/grid.helpers.js +10 -8
  51. package/dist/collection/components/revoGrid/grid.helpers.js.map +1 -1
  52. package/dist/collection/components/revoGrid/revo-grid.js +42 -42
  53. package/dist/collection/components/revoGrid/revo-grid.js.map +1 -1
  54. package/dist/collection/components/revoGrid/viewport.helpers.js +19 -0
  55. package/dist/collection/components/revoGrid/viewport.helpers.js.map +1 -1
  56. package/dist/collection/components/revoGrid/viewport.scrolling.service.js +4 -3
  57. package/dist/collection/components/revoGrid/viewport.scrolling.service.js.map +1 -1
  58. package/dist/collection/components/revoGrid/viewport.service.js +27 -37
  59. package/dist/collection/components/revoGrid/viewport.service.js.map +1 -1
  60. package/dist/collection/components/rowHeaders/revogr-row-headers.js +2 -2
  61. package/dist/collection/components/rowHeaders/revogr-row-headers.js.map +1 -1
  62. package/dist/collection/components/scroll/revogr-viewport-scroll.js +34 -29
  63. package/dist/collection/components/scroll/revogr-viewport-scroll.js.map +1 -1
  64. package/dist/collection/components/scrollable/autohide-scroll.plugin.js +1 -1
  65. package/dist/collection/components/scrollable/autohide-scroll.plugin.js.map +1 -1
  66. package/dist/collection/components/scrollable/revogr-scroll-virtual.js +3 -3
  67. package/dist/collection/components/selectionFocus/revogr-focus.js +1 -1
  68. package/dist/collection/components/selectionFocus/revogr-focus.js.map +1 -1
  69. package/dist/collection/components/selectionTempRange/revogr-temp-range.js.map +1 -1
  70. package/dist/collection/components/vnode/vnode-converter.js +6 -6
  71. package/dist/collection/components/vnode/vnode-converter.js.map +1 -1
  72. package/dist/collection/components/vnode/vnode.utils.js.map +1 -1
  73. package/dist/collection/global/global.js.map +1 -1
  74. package/dist/collection/plugins/export/export.plugin.js +2 -2
  75. package/dist/collection/plugins/export/export.plugin.js.map +1 -1
  76. package/dist/collection/plugins/filter/filter.panel.js +4 -4
  77. package/dist/collection/plugins/groupingColumn/columnGroupsRenderer.js +1 -1
  78. package/dist/collection/plugins/groupingColumn/columnGroupsRenderer.js.map +1 -1
  79. package/dist/collection/plugins/groupingRow/grouping.row.plugin.js +2 -2
  80. package/dist/collection/plugins/groupingRow/grouping.row.plugin.js.map +1 -1
  81. package/dist/collection/plugins/groupingRow/grouping.service.js +1 -1
  82. package/dist/collection/plugins/groupingRow/grouping.service.js.map +1 -1
  83. package/dist/collection/plugins/moveColumn/column.drag.plugin.js +1 -1
  84. package/dist/collection/plugins/moveColumn/column.drag.plugin.js.map +1 -1
  85. package/dist/collection/plugins/sorting/sorting.plugin.js +9 -12
  86. package/dist/collection/plugins/sorting/sorting.plugin.js.map +1 -1
  87. package/dist/collection/services/cell.helpers.js +3 -2
  88. package/dist/collection/services/cell.helpers.js.map +1 -1
  89. package/dist/collection/services/column.data.provider.js.map +1 -1
  90. package/dist/collection/services/data.provider.js.map +1 -1
  91. package/dist/collection/services/dimension.provider.js +2 -1
  92. package/dist/collection/services/dimension.provider.js.map +1 -1
  93. package/dist/collection/services/local.scroll.service.js +3 -2
  94. package/dist/collection/services/local.scroll.service.js.map +1 -1
  95. package/dist/collection/services/selection.store.connector.js +20 -16
  96. package/dist/collection/services/selection.store.connector.js.map +1 -1
  97. package/dist/collection/store/selection/selection.helpers.js +8 -12
  98. package/dist/collection/store/selection/selection.helpers.js.map +1 -1
  99. package/dist/collection/store/selection/selection.store.js +2 -1
  100. package/dist/collection/store/selection/selection.store.js.map +1 -1
  101. package/dist/collection/store/vp/viewport.helpers.js +10 -6
  102. package/dist/collection/store/vp/viewport.helpers.js.map +1 -1
  103. package/dist/collection/store/vp/viewport.store.js +1 -1
  104. package/dist/collection/store/vp/viewport.store.js.map +1 -1
  105. package/dist/collection/themeManager/theme.service.js +1 -1
  106. package/dist/collection/themeManager/theme.service.js.map +1 -1
  107. package/dist/collection/types/interfaces.js.map +1 -1
  108. package/dist/collection/types/selection.js.map +1 -1
  109. package/dist/collection/types/viewport.interfaces.js.map +1 -1
  110. package/dist/collection/utils/closest.polifill.js.map +1 -1
  111. package/dist/collection/utils/store.utils.js +9 -4
  112. package/dist/collection/utils/store.utils.js.map +1 -1
  113. package/dist/esm/{base.plugin-78393655.js → base.plugin-5e7a3c51.js} +2 -2
  114. package/dist/esm/{base.plugin-78393655.js.map → base.plugin-5e7a3c51.js.map} +1 -1
  115. package/dist/esm/{column.service-0e41057a.js → column.service-5d14e7e9.js} +25 -6
  116. package/dist/esm/column.service-5d14e7e9.js.map +1 -0
  117. package/dist/esm/{dimension.helpers-91398565.js → dimension.helpers-56298828.js} +10 -5
  118. package/dist/esm/dimension.helpers-56298828.js.map +1 -0
  119. package/dist/esm/{header-cell-renderer-6d8ac25d.js → header-cell-renderer-fc999784.js} +10 -8
  120. package/dist/esm/header-cell-renderer-fc999784.js.map +1 -0
  121. package/dist/esm/index.js +4 -4
  122. package/dist/esm/revo-grid.entry.js +81 -93
  123. package/dist/esm/revo-grid.entry.js.map +1 -1
  124. package/dist/esm/revogr-attribution_6.entry.js +71 -46
  125. package/dist/esm/revogr-attribution_6.entry.js.map +1 -1
  126. package/dist/esm/revogr-clipboard_3.entry.js +12 -7
  127. package/dist/esm/revogr-clipboard_3.entry.js.map +1 -1
  128. package/dist/esm/revogr-data_4.entry.js +45 -36
  129. package/dist/esm/revogr-data_4.entry.js.map +1 -1
  130. package/dist/esm/revogr-filter-panel.entry.js.map +1 -1
  131. package/dist/esm/{selection.helpers-50e9f09d.js → selection.helpers-accaad4a.js} +32 -31
  132. package/dist/esm/selection.helpers-accaad4a.js.map +1 -0
  133. package/dist/esm/{throttle-1b1dd9d2.js → throttle-7283692c.js} +4 -3
  134. package/dist/esm/throttle-7283692c.js.map +1 -0
  135. package/dist/esm/{viewport.store-bfd0b036.js → viewport.store-d8e03528.js} +13 -9
  136. package/dist/esm/viewport.store-d8e03528.js.map +1 -0
  137. package/dist/revo-grid/{base.plugin-78393655.js → base.plugin-5e7a3c51.js} +2 -2
  138. package/dist/revo-grid/column.service-5d14e7e9.js +5 -0
  139. package/dist/revo-grid/column.service-5d14e7e9.js.map +1 -0
  140. package/dist/revo-grid/{dimension.helpers-91398565.js → dimension.helpers-56298828.js} +2 -2
  141. package/dist/revo-grid/{dimension.helpers-91398565.js.map → dimension.helpers-56298828.js.map} +1 -1
  142. package/dist/revo-grid/header-cell-renderer-fc999784.js +5 -0
  143. package/dist/revo-grid/header-cell-renderer-fc999784.js.map +1 -0
  144. package/dist/revo-grid/index.esm.js +1 -1
  145. package/dist/revo-grid/revo-grid.entry.js +1 -1
  146. package/dist/revo-grid/revo-grid.entry.js.map +1 -1
  147. package/dist/revo-grid/revogr-attribution_6.entry.js +1 -1
  148. package/dist/revo-grid/revogr-attribution_6.entry.js.map +1 -1
  149. package/dist/revo-grid/revogr-clipboard_3.entry.js +1 -1
  150. package/dist/revo-grid/revogr-clipboard_3.entry.js.map +1 -1
  151. package/dist/revo-grid/revogr-data_4.entry.js +1 -1
  152. package/dist/revo-grid/revogr-data_4.entry.js.map +1 -1
  153. package/dist/revo-grid/revogr-filter-panel.entry.js.map +1 -1
  154. package/dist/revo-grid/selection.helpers-accaad4a.js +5 -0
  155. package/dist/revo-grid/selection.helpers-accaad4a.js.map +1 -0
  156. package/dist/revo-grid/{throttle-1b1dd9d2.js → throttle-7283692c.js} +2 -2
  157. package/dist/revo-grid/throttle-7283692c.js.map +1 -0
  158. package/dist/revo-grid/viewport.store-d8e03528.js +5 -0
  159. package/dist/revo-grid/viewport.store-d8e03528.js.map +1 -0
  160. package/dist/types/components/clipboard/revogr-clipboard.d.ts +32 -24
  161. package/dist/types/components/data/column.service.d.ts +1 -1
  162. package/dist/types/components/data/row-highlight.plugin.d.ts +1 -1
  163. package/dist/types/components/editors/revogr-edit.d.ts +1 -1
  164. package/dist/types/components/editors/text-editor.d.ts +3 -3
  165. package/dist/types/components/header/header-renderer.d.ts +2 -2
  166. package/dist/types/components/header/resizable.directive.d.ts +2 -2
  167. package/dist/types/components/overlay/autofill.service.d.ts +9 -7
  168. package/dist/types/components/overlay/keyboard.service.d.ts +4 -4
  169. package/dist/types/components/overlay/revogr-overlay-selection.d.ts +20 -11
  170. package/dist/types/components/overlay/selection.utils.d.ts +7 -4
  171. package/dist/types/components/revoGrid/revo-grid.d.ts +7 -6
  172. package/dist/types/components/revoGrid/viewport.helpers.d.ts +18 -3
  173. package/dist/types/components/revoGrid/viewport.scrolling.service.d.ts +1 -1
  174. package/dist/types/components/revoGrid/viewport.service.d.ts +2 -6
  175. package/dist/types/components/scroll/revogr-viewport-scroll.d.ts +6 -6
  176. package/dist/types/components/selectionTempRange/revogr-temp-range.d.ts +1 -1
  177. package/dist/types/components/vnode/vnode-converter.d.ts +1 -1
  178. package/dist/types/components/vnode/vnode.utils.d.ts +1 -1
  179. package/dist/types/components.d.ts +80 -54
  180. package/dist/types/plugins/column.auto-size.plugin.d.ts +2 -2
  181. package/dist/types/plugins/export/export.plugin.d.ts +3 -3
  182. package/dist/types/plugins/filter/filter.button.d.ts +1 -1
  183. package/dist/types/plugins/filter/filter.panel.d.ts +1 -1
  184. package/dist/types/plugins/groupingRow/grouping.row.plugin.d.ts +1 -1
  185. package/dist/types/plugins/groupingRow/grouping.service.d.ts +3 -3
  186. package/dist/types/plugins/sorting/sorting.plugin.d.ts +8 -8
  187. package/dist/types/services/column.data.provider.d.ts +1 -1
  188. package/dist/types/services/data.provider.d.ts +1 -1
  189. package/dist/types/services/dimension.provider.d.ts +3 -2
  190. package/dist/types/services/selection.store.connector.d.ts +9 -9
  191. package/dist/types/store/selection/selection.helpers.d.ts +1 -1
  192. package/dist/types/store/selection/selection.store.d.ts +4 -4
  193. package/dist/types/store/vp/viewport.helpers.d.ts +2 -2
  194. package/dist/types/themeManager/theme.service.d.ts +1 -1
  195. package/dist/types/types/interfaces.d.ts +18 -1
  196. package/dist/types/types/viewport.interfaces.d.ts +2 -2
  197. package/dist/types/utils/store.utils.d.ts +7 -4
  198. package/hydrate/index.js +274 -215
  199. package/hydrate/index.mjs +274 -215
  200. package/package.json +1 -1
  201. package/standalone/column.service.js +33 -33
  202. package/standalone/column.service.js.map +1 -1
  203. package/standalone/data.store.js +2959 -7
  204. package/standalone/data.store.js.map +1 -1
  205. package/standalone/debounce.js +1 -1
  206. package/standalone/dimension.helpers.js +2 -2
  207. package/standalone/index.js.map +1 -1
  208. package/standalone/local.scroll.timer.js +3 -2
  209. package/standalone/local.scroll.timer.js.map +1 -1
  210. package/standalone/revo-grid.js +77 -90
  211. package/standalone/revo-grid.js.map +1 -1
  212. package/standalone/revogr-clipboard2.js +6 -3
  213. package/standalone/revogr-clipboard2.js.map +1 -1
  214. package/standalone/revogr-data2.js +7 -5
  215. package/standalone/revogr-data2.js.map +1 -1
  216. package/standalone/revogr-edit2.js +5 -3
  217. package/standalone/revogr-edit2.js.map +1 -1
  218. package/standalone/revogr-filter-panel.js.map +1 -1
  219. package/standalone/revogr-focus2.js +0 -1
  220. package/standalone/revogr-focus2.js.map +1 -1
  221. package/standalone/revogr-header2.js +12 -10
  222. package/standalone/revogr-header2.js.map +1 -1
  223. package/standalone/revogr-order-editor2.js +0 -1
  224. package/standalone/revogr-order-editor2.js.map +1 -1
  225. package/standalone/revogr-overlay-selection2.js +54 -38
  226. package/standalone/revogr-overlay-selection2.js.map +1 -1
  227. package/standalone/revogr-row-headers2.js +12 -9
  228. package/standalone/revogr-row-headers2.js.map +1 -1
  229. package/standalone/revogr-scroll-virtual2.js +1 -1
  230. package/standalone/revogr-scroll-virtual2.js.map +1 -1
  231. package/standalone/revogr-temp-range2.js.map +1 -1
  232. package/standalone/revogr-viewport-scroll2.js +47 -23
  233. package/standalone/revogr-viewport-scroll2.js.map +1 -1
  234. package/standalone/selection.utils.js +14 -6
  235. package/standalone/selection.utils.js.map +1 -1
  236. package/standalone/toNumber.js +1 -1
  237. package/standalone/vnode-converter.js +3 -3
  238. package/standalone/vnode-converter.js.map +1 -1
  239. package/dist/cjs/column.service-6f691f50.js.map +0 -1
  240. package/dist/cjs/dimension.helpers-e9d22516.js.map +0 -1
  241. package/dist/cjs/header-cell-renderer-81a22b00.js.map +0 -1
  242. package/dist/cjs/selection.helpers-8fa19c04.js.map +0 -1
  243. package/dist/cjs/throttle-bcc4740d.js.map +0 -1
  244. package/dist/cjs/viewport.store-9cf01c71.js.map +0 -1
  245. package/dist/esm/column.service-0e41057a.js.map +0 -1
  246. package/dist/esm/dimension.helpers-91398565.js.map +0 -1
  247. package/dist/esm/header-cell-renderer-6d8ac25d.js.map +0 -1
  248. package/dist/esm/selection.helpers-50e9f09d.js.map +0 -1
  249. package/dist/esm/throttle-1b1dd9d2.js.map +0 -1
  250. package/dist/esm/viewport.store-bfd0b036.js.map +0 -1
  251. package/dist/revo-grid/column.service-0e41057a.js +0 -5
  252. package/dist/revo-grid/column.service-0e41057a.js.map +0 -1
  253. package/dist/revo-grid/header-cell-renderer-6d8ac25d.js +0 -5
  254. package/dist/revo-grid/header-cell-renderer-6d8ac25d.js.map +0 -1
  255. package/dist/revo-grid/selection.helpers-50e9f09d.js +0 -5
  256. package/dist/revo-grid/selection.helpers-50e9f09d.js.map +0 -1
  257. package/dist/revo-grid/throttle-1b1dd9d2.js.map +0 -1
  258. package/dist/revo-grid/viewport.store-bfd0b036.js +0 -5
  259. package/dist/revo-grid/viewport.store-bfd0b036.js.map +0 -1
  260. package/standalone/_baseIteratee.js +0 -2956
  261. package/standalone/_baseIteratee.js.map +0 -1
  262. /package/dist/revo-grid/{base.plugin-78393655.js.map → base.plugin-5e7a3c51.js.map} +0 -0
@@ -96,7 +96,7 @@ class LocalScrollService {
96
96
  if (c < 0) {
97
97
  return NO_COORDINATE;
98
98
  }
99
- if (c > param.maxSize) {
99
+ if (typeof param.maxSize === 'number' && c > param.maxSize) {
100
100
  return param.maxSize;
101
101
  }
102
102
  return c;
@@ -109,8 +109,9 @@ class LocalScrollService {
109
109
  }
110
110
  /* convert virtual to real and back, scale range */
111
111
  convert(pos, param, toReal = true) {
112
+ var _a;
112
113
  const minRange = param.clientSize;
113
- const from = [0, param.virtualContentSize - minRange];
114
+ const from = [0, ((_a = param.virtualContentSize) !== null && _a !== void 0 ? _a : minRange) - minRange];
114
115
  const to = [0, param.contentSize - param.virtualSize];
115
116
  if (toReal) {
116
117
  return scaleValue(pos, from, to);
@@ -1 +1 @@
1
- {"file":"local.scroll.timer.js","mappings":"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","names":[],"sources":["src/services/local.scroll.service.ts","src/services/local.scroll.timer.ts"],"sourcesContent":["import type { DimensionType, ViewPortScrollEvent } from '@type';\nimport { scaleValue } from '../utils';\n\ninterface Config {\n skipAnimationFrame?: boolean;\n // scroll event inited and direction cached\n // scrollingService.proxyScroll get tiggered\n // setScroll event called from scrollingService\n runScroll(e: ViewPortScrollEvent): void;\n // all operation finished, apply scroll values\n applyScroll(e: ViewPortScrollEvent): void;\n}\n\ntype Params = {\n contentSize: number;\n virtualContentSize?: number;\n clientSize: number;\n virtualSize: number;\n maxSize?: number;\n};\n\nconst initialParams: Params = {\n contentSize: 0,\n clientSize: 0,\n virtualSize: 0,\n maxSize: 0,\n};\nconst NO_COORDINATE = -1;\n\n/**\n * Based on content size, client size and virtual size\n * return full size\n */\nexport function getContentSize(\n contentSize: number,\n clientSize: number,\n virtualSize = 0,\n): number {\n return contentSize + (virtualSize ? clientSize - virtualSize : 0);\n}\n\nexport default class LocalScrollService {\n private preventArtificialScroll: Record<DimensionType, () => void | null> = {\n rgRow: null,\n rgCol: null,\n };\n // to check if scroll changed\n private previousScroll: Record<DimensionType, number> = {\n rgRow: NO_COORDINATE,\n rgCol: NO_COORDINATE,\n };\n private params: Record<DimensionType, Params> = {\n rgRow: { ...initialParams },\n rgCol: { ...initialParams },\n };\n\n constructor(private cfg: Config) {}\n\n setParams(params: Params, dimension: DimensionType) {\n const virtualContentSize = getContentSize(\n params.contentSize,\n params.clientSize,\n params.virtualSize,\n );\n this.params[dimension] = {\n ...params,\n maxSize: virtualContentSize - params.clientSize,\n virtualContentSize,\n };\n }\n\n // apply scroll values after scroll done\n async setScroll(e: ViewPortScrollEvent) {\n this.cancelScroll(e.dimension);\n\n // start frame animation\n const frameAnimation = new Promise<void>((resolve, reject) => {\n // for example safari desktop has issues with animation frame\n if (this.cfg.skipAnimationFrame) {\n return resolve();\n }\n const animationId = window.requestAnimationFrame(() => {\n resolve();\n });\n this.preventArtificialScroll[e.dimension] = reject.bind(\n null,\n animationId,\n );\n });\n\n try {\n await frameAnimation;\n const params = this.getParams(e.dimension);\n e.coordinate = Math.ceil(e.coordinate);\n this.previousScroll[e.dimension] = this.wrapCoordinate(\n e.coordinate,\n params,\n );\n this.preventArtificialScroll[e.dimension] = null;\n this.cfg.applyScroll({\n ...e,\n coordinate: params.virtualSize\n ? this.convert(e.coordinate, params, false)\n : e.coordinate,\n });\n } catch (id) {\n window.cancelAnimationFrame(id);\n }\n }\n\n /**\n * On scroll event started\n */\n scroll(\n coordinate: number,\n dimension: DimensionType,\n force = false,\n delta?: number,\n outside = false,\n ) {\n // cancel all previous scrolls for same dimension\n this.cancelScroll(dimension);\n\n // drop if no change\n if (!force && this.previousScroll[dimension] === coordinate) {\n this.previousScroll[dimension] = NO_COORDINATE;\n return;\n }\n\n const param = this.getParams(dimension);\n // let component know about scroll event started\n this.cfg.runScroll({\n dimension: dimension,\n coordinate: param.virtualSize\n ? this.convert(coordinate, param)\n : coordinate,\n delta,\n outside,\n });\n }\n\n private getParams(dimension: DimensionType): Params {\n return this.params[dimension];\n }\n\n // check if scroll outside of region to avoid looping\n private wrapCoordinate(c: number, param: Params): number {\n if (c < 0) {\n return NO_COORDINATE;\n }\n\n if (c > param.maxSize) {\n return param.maxSize;\n }\n return c;\n }\n\n // prevent already started scroll, performance optimization\n private cancelScroll(dimension: DimensionType) {\n this.preventArtificialScroll[dimension]?.();\n this.preventArtificialScroll[dimension] = null;\n }\n\n /* convert virtual to real and back, scale range */\n private convert(pos: number, param: Params, toReal = true): number {\n const minRange = param.clientSize;\n const from: [number, number] = [0, param.virtualContentSize - minRange];\n const to: [number, number] = [0, param.contentSize - param.virtualSize];\n if (toReal) {\n return scaleValue(pos, from, to);\n }\n return scaleValue(pos, to, from);\n }\n}\n","import type { DimensionType } from '@type';\n/**\n * Apply changes only if mousewheel event happened some time ago (scrollThrottling)\n */\nexport class LocalScrollTimer {\n /**\n * Last mw event time for trigger scroll function below\n * If mousewheel function was ignored we still need to trigger render\n */\n private mouseWheelScrollTimestamp: Record<DimensionType, number> = {\n rgCol: 0,\n rgRow: 0,\n };\n private lastKnownScrollCoordinate: Record<DimensionType, number> = {\n rgCol: 0,\n rgRow: 0,\n };\n\n constructor(private scrollThrottling = 10) {}\n\n setCoordinate(e: { dimension: DimensionType; coordinate: number }) {\n this.lastKnownScrollCoordinate[e.dimension] = e.coordinate;\n }\n\n /**\n * Remember last mw event time\n */\n latestScrollUpdate(dimension: DimensionType) {\n this.mouseWheelScrollTimestamp[dimension] = new Date().getTime();\n }\n\n /**\n * Check if scroll is ready to accept new value\n */\n isReady(type: DimensionType, coordinate: number) {\n const change = new Date().getTime() - this.mouseWheelScrollTimestamp[type];\n // apply after throttling\n return (\n change > this.scrollThrottling &&\n coordinate !== this.lastKnownScrollCoordinate[type]\n );\n }\n}\n"],"version":3}
1
+ {"file":"local.scroll.timer.js","mappings":"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","names":[],"sources":["src/services/local.scroll.service.ts","src/services/local.scroll.timer.ts"],"sourcesContent":["import type { DimensionType, ViewPortScrollEvent } from '@type';\nimport { scaleValue } from '../utils';\n\ninterface Config {\n skipAnimationFrame?: boolean;\n // scroll event inited and direction cached\n // scrollingService.proxyScroll get tiggered\n // setScroll event called from scrollingService\n runScroll(e: ViewPortScrollEvent): void;\n // all operation finished, apply scroll values\n applyScroll(e: ViewPortScrollEvent): void;\n}\n\ntype Params = {\n contentSize: number;\n virtualContentSize?: number;\n clientSize: number;\n virtualSize: number;\n maxSize?: number;\n};\n\nconst initialParams: Params = {\n contentSize: 0,\n clientSize: 0,\n virtualSize: 0,\n maxSize: 0,\n};\nconst NO_COORDINATE = -1;\n\n/**\n * Based on content size, client size and virtual size\n * return full size\n */\nexport function getContentSize(\n contentSize: number,\n clientSize: number,\n virtualSize = 0,\n): number {\n return contentSize + (virtualSize ? clientSize - virtualSize : 0);\n}\n\nexport default class LocalScrollService {\n private preventArtificialScroll: Record<DimensionType, (() => void) | null> = {\n rgRow: null,\n rgCol: null,\n };\n // to check if scroll changed\n private previousScroll: Record<DimensionType, number> = {\n rgRow: NO_COORDINATE,\n rgCol: NO_COORDINATE,\n };\n private params: Record<DimensionType, Params> = {\n rgRow: { ...initialParams },\n rgCol: { ...initialParams },\n };\n\n constructor(private cfg: Config) {}\n\n setParams(params: Params, dimension: DimensionType) {\n const virtualContentSize = getContentSize(\n params.contentSize,\n params.clientSize,\n params.virtualSize,\n );\n this.params[dimension] = {\n ...params,\n maxSize: virtualContentSize - params.clientSize,\n virtualContentSize,\n };\n }\n\n // apply scroll values after scroll done\n async setScroll(e: ViewPortScrollEvent) {\n this.cancelScroll(e.dimension);\n\n // start frame animation\n const frameAnimation = new Promise<void>((resolve, reject) => {\n // for example safari desktop has issues with animation frame\n if (this.cfg.skipAnimationFrame) {\n return resolve();\n }\n const animationId = window.requestAnimationFrame(() => {\n resolve();\n });\n this.preventArtificialScroll[e.dimension] = reject.bind(\n null,\n animationId,\n );\n });\n\n try {\n await frameAnimation;\n const params = this.getParams(e.dimension);\n e.coordinate = Math.ceil(e.coordinate);\n this.previousScroll[e.dimension] = this.wrapCoordinate(\n e.coordinate,\n params,\n );\n this.preventArtificialScroll[e.dimension] = null;\n this.cfg.applyScroll({\n ...e,\n coordinate: params.virtualSize\n ? this.convert(e.coordinate, params, false)\n : e.coordinate,\n });\n } catch (id) {\n window.cancelAnimationFrame(id);\n }\n }\n\n /**\n * On scroll event started\n */\n scroll(\n coordinate: number,\n dimension: DimensionType,\n force = false,\n delta?: number,\n outside = false,\n ) {\n // cancel all previous scrolls for same dimension\n this.cancelScroll(dimension);\n\n // drop if no change\n if (!force && this.previousScroll[dimension] === coordinate) {\n this.previousScroll[dimension] = NO_COORDINATE;\n return;\n }\n\n const param = this.getParams(dimension);\n // let component know about scroll event started\n this.cfg.runScroll({\n dimension: dimension,\n coordinate: param.virtualSize\n ? this.convert(coordinate, param)\n : coordinate,\n delta,\n outside,\n });\n }\n\n private getParams(dimension: DimensionType): Params {\n return this.params[dimension];\n }\n\n // check if scroll outside of region to avoid looping\n private wrapCoordinate(c: number, param: Params): number {\n if (c < 0) {\n return NO_COORDINATE;\n }\n\n if (typeof param.maxSize === 'number' && c > param.maxSize) {\n return param.maxSize;\n }\n return c;\n }\n\n // prevent already started scroll, performance optimization\n private cancelScroll(dimension: DimensionType) {\n this.preventArtificialScroll[dimension]?.();\n this.preventArtificialScroll[dimension] = null;\n }\n\n /* convert virtual to real and back, scale range */\n private convert(pos: number, param: Params, toReal = true): number {\n const minRange = param.clientSize;\n const from: [number, number] = [0, (param.virtualContentSize ?? minRange) - minRange];\n const to: [number, number] = [0, param.contentSize - param.virtualSize];\n if (toReal) {\n return scaleValue(pos, from, to);\n }\n return scaleValue(pos, to, from);\n }\n}\n","import type { DimensionType } from '@type';\n/**\n * Apply changes only if mousewheel event happened some time ago (scrollThrottling)\n */\nexport class LocalScrollTimer {\n /**\n * Last mw event time for trigger scroll function below\n * If mousewheel function was ignored we still need to trigger render\n */\n private mouseWheelScrollTimestamp: Record<DimensionType, number> = {\n rgCol: 0,\n rgRow: 0,\n };\n private lastKnownScrollCoordinate: Record<DimensionType, number> = {\n rgCol: 0,\n rgRow: 0,\n };\n\n constructor(private scrollThrottling = 10) {}\n\n setCoordinate(e: { dimension: DimensionType; coordinate: number }) {\n this.lastKnownScrollCoordinate[e.dimension] = e.coordinate;\n }\n\n /**\n * Remember last mw event time\n */\n latestScrollUpdate(dimension: DimensionType) {\n this.mouseWheelScrollTimestamp[dimension] = new Date().getTime();\n }\n\n /**\n * Check if scroll is ready to accept new value\n */\n isReady(type: DimensionType, coordinate: number) {\n const change = new Date().getTime() - this.mouseWheelScrollTimestamp[type];\n // apply after throttling\n return (\n change > this.scrollThrottling &&\n coordinate !== this.lastKnownScrollCoordinate[type]\n );\n }\n}\n"],"version":3}
@@ -3,8 +3,7 @@
3
3
  */
4
4
  import { h, proxyCustomElement, HTMLElement, createEvent, Host } from '@stencil/core/internal/client';
5
5
  import { r as reduce_1, c as calculateDimensionData, _ as _baseEach, e as each, a as getItemByIndex, g as getItemByPosition } from './dimension.helpers.js';
6
- import { _ as _baseIteratee, i as isArrayLike_1, k as keys_1, a as _arrayMap, b as isArray_1, c as _baseProperty, d as _baseKeys, e as _getTag } from './_baseIteratee.js';
7
- import { i as createStore, h as setStore, j as findIndex_1, D as DataStore, b as getSourceItem, e as getSourceItemVirtualIndexByProp, s as setSourceByVirtualIndex, a as getVisibleSourceItem, f as gatherTrimmedItems, r as range_1, k as toInteger_1, _ as _isIterateeCall, g as getPhysical, d as setItems } from './data.store.js';
6
+ import { i as createStore, h as setStore, _ as _baseIteratee, j as isArrayLike_1, k as keys_1, l as findIndex_1, m as _arrayMap, n as isArray_1, D as DataStore, b as getSourceItem, e as getSourceItemVirtualIndexByProp, s as setSourceByVirtualIndex, a as getVisibleSourceItem, f as gatherTrimmedItems, o as _baseProperty, q as _baseKeys, r as _getTag, u as range_1, v as toInteger_1, w as _isIterateeCall, g as getPhysical, d as setItems } from './data.store.js';
8
7
  import { _ as _baseGetTag, i as isObjectLike_1 } from './toNumber.js';
9
8
  import { b as isGrouping, d as getGroupingName, G as GROUP_EXPANDED, e as getParsedGroup, f as isSameGroup, h as GROUP_DEPTH, P as PSEUDO_GROUP_ITEM_VALUE, j as PSEUDO_GROUP_ITEM_ID, k as GROUPING_ROW_TYPE, l as PSEUDO_GROUP_COLUMN, m as GROUP_EXPAND_EVENT, o as gatherGrouping, p as isGroupingColumn, E as EMPTY_INDEX, q as SelectionStoreConnector } from './column.service.js';
10
9
  import { d as debounce_1 } from './debounce.js';
@@ -12,7 +11,7 @@ import { R as RESIZE_INTERVAL } from './consts.js';
12
11
  import { V as ViewportStore, f as calculateRowHeaderSize, h as defineCustomElement$6 } from './revogr-row-headers2.js';
13
12
  import { t as timeout, g as getScrollbarSize } from './index2.js';
14
13
  import { F as FILTER_PROP, i as isFilterBtn } from './filter.button.js';
15
- import { g as getLastCell, H as HEADER_SLOT, C as CONTENT_SLOT, F as FOOTER_SLOT, D as DATA_SLOT, d as defineCustomElement$3 } from './revogr-viewport-scroll2.js';
14
+ import { v as viewportDataPartition, H as HEADER_SLOT, C as CONTENT_SLOT, F as FOOTER_SLOT, D as DATA_SLOT, d as defineCustomElement$3 } from './revogr-viewport-scroll2.js';
16
15
  import { d as dispatch, O as ON_COLUMN_CLICK, b as defineCustomElement$9 } from './revogr-header2.js';
17
16
  import { g as getPropertyFromEvent } from './selection.utils.js';
18
17
  import { d as defineCustomElement$e } from './revogr-attribution2.js';
@@ -84,7 +83,7 @@ class ThemeService {
84
83
  }
85
84
  }
86
85
  static getTheme(theme) {
87
- if (allowedThemes.indexOf(theme) > -1) {
86
+ if (theme && allowedThemes.indexOf(theme) > -1) {
88
87
  return theme;
89
88
  }
90
89
  return DEFAULT_THEME;
@@ -799,8 +798,9 @@ class DimensionProvider {
799
798
  }
800
799
  /**
801
800
  * Sets dimension data and view port coordinate
802
- * @param items - data/column items
801
+ * @param itemCount
803
802
  * @param type - dimension type
803
+ * @param noVirtual - disable virtual data
804
804
  */
805
805
  setData(itemCount, type, noVirtual = false) {
806
806
  this.setItemCount(itemCount, type);
@@ -1745,10 +1745,6 @@ class SortingPlugin extends BasePlugin {
1745
1745
  constructor(revogrid, providers) {
1746
1746
  super(revogrid, providers);
1747
1747
  this.revogrid = revogrid;
1748
- // sorting order per column
1749
- this.sorting = null;
1750
- // sorting function per column, multiple columns sorting supported
1751
- this.sortingFunc = null;
1752
1748
  this.sortingPromise = null;
1753
1749
  this.postponeSort = debounce_1(async (order, comparison) => this.runSorting(order, comparison), 50);
1754
1750
  const beforeanysource = async ({ detail: { type }, }) => {
@@ -1762,7 +1758,7 @@ class SortingPlugin extends BasePlugin {
1762
1758
  }
1763
1759
  };
1764
1760
  const aftercolumnsset = async ({ detail: { order }, }) => {
1765
- const columns = await this.revogrid.getColumns();
1761
+ const columns = (await this.revogrid.getColumns());
1766
1762
  const sortingFunc = {};
1767
1763
  for (let prop in order) {
1768
1764
  const cmp = this.getComparer(ColumnDataProvider.getColumnByProp(columns, prop), order[prop]);
@@ -1808,6 +1804,7 @@ class SortingPlugin extends BasePlugin {
1808
1804
  * If additive - add to existing sorting, multiple columns can be sorted
1809
1805
  */
1810
1806
  async headerclick(column, index, additive) {
1807
+ var _a, _b;
1811
1808
  let order = this.getNextOrder(column.order);
1812
1809
  const beforeEvent = this.emit('beforesorting', { column, order, additive });
1813
1810
  if (beforeEvent.defaultPrevented) {
@@ -1848,8 +1845,8 @@ class SortingPlugin extends BasePlugin {
1848
1845
  this.sortingFunc = { [column.prop]: cmp };
1849
1846
  }
1850
1847
  else {
1851
- delete this.sorting[column.prop];
1852
- delete this.sortingFunc[column.prop];
1848
+ (_a = this.sorting) === null || _a === void 0 ? true : delete _a[column.prop];
1849
+ (_b = this.sortingFunc) === null || _b === void 0 ? true : delete _b[column.prop];
1853
1850
  }
1854
1851
  }
1855
1852
  this.startSorting(this.sorting, this.sortingFunc);
@@ -1865,8 +1862,8 @@ class SortingPlugin extends BasePlugin {
1865
1862
  async sort(sorting, sortingFunc, types = ['rgRow', 'rowPinStart', 'rowPinEnd']) {
1866
1863
  // if no sorting - reset
1867
1864
  if (!size_1(sorting)) {
1868
- this.sorting = null;
1869
- this.sortingFunc = null;
1865
+ this.sorting = undefined;
1866
+ this.sortingFunc = undefined;
1870
1867
  for (let type of types) {
1871
1868
  const store = await this.revogrid.getSourceStore(type);
1872
1869
  // row data
@@ -1911,10 +1908,10 @@ class SortingPlugin extends BasePlugin {
1911
1908
  return -1 * cmp(prop, a, b);
1912
1909
  };
1913
1910
  }
1914
- sortIndexByItems(indexes, source, sortingFunc) {
1911
+ sortIndexByItems(indexes, source, sortingFunc = {}) {
1915
1912
  // if no sorting - return unsorted indexes
1916
1913
  if (Object.entries(sortingFunc).length === 0) {
1917
- // Unsort indexes
1914
+ // Unsorted indexes
1918
1915
  return [...Array(indexes.length).keys()];
1919
1916
  }
1920
1917
  //
@@ -1930,7 +1927,7 @@ class SortingPlugin extends BasePlugin {
1930
1927
  * 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.
1931
1928
  * 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.
1932
1929
  */
1933
- const sorted = cmp(prop, itemA, itemB);
1930
+ const sorted = cmp === null || cmp === void 0 ? void 0 : cmp(prop, itemA, itemB);
1934
1931
  if (sorted) {
1935
1932
  return sorted;
1936
1933
  }
@@ -2180,13 +2177,13 @@ class ExportFilePlugin extends BasePlugin {
2180
2177
  /** Export file */
2181
2178
  async exportFile(options = {}, t = ExportTypes.csv) {
2182
2179
  const formatter = this.formatter(t, options);
2183
- const blob = await this.getBlob(formatter);
2184
2180
  // url
2185
2181
  const URL = window.URL || window.webkitURL;
2186
2182
  const a = document.createElement('a');
2187
2183
  const { filename, fileKind } = formatter.options;
2188
2184
  const name = `${filename}.${fileKind}`;
2189
- const url = URL.createObjectURL(blob);
2185
+ const blob = await this.getBlob(formatter);
2186
+ const url = blob ? URL.createObjectURL(blob) : '';
2190
2187
  a.style.display = 'none';
2191
2188
  a.setAttribute('href', url);
2192
2189
  a.setAttribute('download', name);
@@ -2611,7 +2608,7 @@ class GroupingRowPlugin extends BasePlugin {
2611
2608
  const { sourceWithGroups, depth, trimmed, oldNewIndexMap, childrenByGroup, } = gatherGrouping(source, ((_a = this.options) === null || _a === void 0 ? void 0 : _a.props) || [], Object.assign({ prevExpanded }, options));
2612
2609
  // setup source
2613
2610
  this.providers.data.setData(sourceWithGroups, GROUPING_ROW_TYPE, this.revogrid.disableVirtualY, { depth, customRenderer: options === null || options === void 0 ? void 0 : options.groupLabelTemplate }, true);
2614
- this.updateTrimmed(trimmed, childrenByGroup, oldNewIndexes, oldNewIndexMap);
2611
+ this.updateTrimmed(trimmed, childrenByGroup, oldNewIndexes !== null && oldNewIndexes !== void 0 ? oldNewIndexes : {}, oldNewIndexMap);
2615
2612
  }
2616
2613
  /**
2617
2614
  * Apply grouping on data set
@@ -2677,7 +2674,7 @@ class GroupingRowPlugin extends BasePlugin {
2677
2674
  this.providers.data.setData(source, GROUPING_ROW_TYPE, this.revogrid.disableVirtualY, undefined, true);
2678
2675
  this.updateTrimmed(undefined, undefined, oldNewIndexes);
2679
2676
  }
2680
- updateTrimmed(trimmedGroup = {}, _childrenByGroup = {}, firstLevelMap, secondLevelMap) {
2677
+ updateTrimmed(trimmedGroup = {}, _childrenByGroup = {}, firstLevelMap = {}, secondLevelMap) {
2681
2678
  // map previously trimmed data
2682
2679
  const trimemedOptionsToUpgrade = processDoubleConversionTrimmed(this.trimmed, firstLevelMap, secondLevelMap);
2683
2680
  for (let type in trimemedOptionsToUpgrade) {
@@ -2770,11 +2767,9 @@ class ViewportService {
2770
2767
  segmentSelection.setLastCell(rgRow.lastCell);
2771
2768
  // register selection store for Row
2772
2769
  const rowSelectionStore = this.registerRow(rgRow.position.y, rgRow.type);
2773
- const rowDef = Object.assign(Object.assign({}, rgRow), { rowSelectionStore, segmentSelectionStore: segmentSelection.store, ref: (e) => config.selectionStoreConnector.registerSection(e), onSetrange: e => {
2770
+ const rowDef = Object.assign(Object.assign({ colType: val }, rgRow), { rowSelectionStore, segmentSelectionStore: segmentSelection.store, ref: (e) => config.selectionStoreConnector.registerSection(e), onSetrange: e => {
2774
2771
  segmentSelection.setRangeArea(e.detail);
2775
- }, onSettemprange: e => {
2776
- segmentSelection.setTempArea(e.detail);
2777
- }, onFocuscell: e => {
2772
+ }, onSettemprange: e => segmentSelection.setTempArea(e.detail), onFocuscell: e => {
2778
2773
  // todo: multi focus
2779
2774
  segmentSelection.clearFocus();
2780
2775
  config.selectionStoreConnector.focus(segmentSelection, e.detail);
@@ -2824,43 +2819,27 @@ class ViewportService {
2824
2819
  };
2825
2820
  // y position for selection
2826
2821
  let y = 0;
2827
- return rowTypes.reduce((r, type) => {
2822
+ return rowTypes.reduce((result, type) => {
2828
2823
  // filter out empty sources, we still need to return source to keep slot working
2829
2824
  const isPresent = data.viewports[type].store.get('realCount') || type === 'rgRow';
2830
2825
  const rgCol = Object.assign(Object.assign({}, data), { position: Object.assign(Object.assign({}, data.position), { y: isPresent ? y : EMPTY_INDEX }) });
2831
- r.push(this.dataPartition(rgCol, type, slots[type], type !== 'rgRow'));
2826
+ const partition = viewportDataPartition(rgCol, type, slots[type], type !== 'rgRow');
2827
+ result.push(partition);
2832
2828
  if (isPresent) {
2833
2829
  y++;
2834
2830
  }
2835
- return r;
2831
+ return result;
2836
2832
  }, []);
2837
2833
  }
2838
- dataPartition(data, type, slot, fixed) {
2839
- return {
2840
- colData: data.colStore,
2841
- viewportCol: data.viewports[data.colType].store,
2842
- viewportRow: data.viewports[type].store,
2843
- // lastCell is the last real coordinate + 1
2844
- lastCell: getLastCell(data, type),
2845
- slot,
2846
- type,
2847
- canDrag: !fixed,
2848
- position: data.position,
2849
- dataStore: data.rowStores[type].store,
2850
- dimensionCol: data.dimensions[data.colType].store,
2851
- dimensionRow: data.dimensions[type].store,
2852
- style: fixed
2853
- ? { height: `${data.dimensions[type].store.get('realSize')}px` }
2854
- : undefined,
2855
- };
2856
- }
2857
2834
  scrollToCell(cell) {
2858
2835
  for (let key in cell) {
2859
2836
  const coordinate = cell[key];
2860
- this.config.scrollingService.proxyScroll({
2861
- dimension: key === 'x' ? 'rgCol' : 'rgRow',
2862
- coordinate,
2863
- });
2837
+ if (typeof coordinate === 'number') {
2838
+ this.config.scrollingService.proxyScroll({
2839
+ dimension: key === 'x' ? 'rgCol' : 'rgRow',
2840
+ coordinate,
2841
+ });
2842
+ }
2864
2843
  }
2865
2844
  }
2866
2845
  /**
@@ -2896,22 +2875,30 @@ class ViewportService {
2896
2875
  }
2897
2876
  getStoreCoordinateByType(colType, rowType) {
2898
2877
  const stores = this.config.selectionStoreConnector.storesByType;
2899
- const storeCoordinate = {
2878
+ if (typeof stores[colType] === 'undefined' || typeof stores[rowType] === 'undefined') {
2879
+ return;
2880
+ }
2881
+ return {
2900
2882
  x: stores[colType],
2901
2883
  y: stores[rowType],
2902
2884
  };
2903
- return storeCoordinate;
2904
2885
  }
2905
2886
  setFocus(colType, rowType, start, end) {
2906
2887
  var _a;
2907
- (_a = this.config.selectionStoreConnector) === null || _a === void 0 ? void 0 : _a.focusByCell(this.getStoreCoordinateByType(colType, rowType), start, end);
2888
+ const coordinate = this.getStoreCoordinateByType(colType, rowType);
2889
+ if (coordinate) {
2890
+ (_a = this.config.selectionStoreConnector) === null || _a === void 0 ? void 0 : _a.focusByCell(coordinate, start, end);
2891
+ }
2908
2892
  }
2909
2893
  getSelectedRange() {
2910
2894
  return this.config.selectionStoreConnector.selectedRange;
2911
2895
  }
2912
2896
  setEdit(rowIndex, colIndex, colType, rowType) {
2913
2897
  var _a;
2914
- (_a = this.config.selectionStoreConnector) === null || _a === void 0 ? void 0 : _a.setEditByCell(this.getStoreCoordinateByType(colType, rowType), { x: colIndex, y: rowIndex });
2898
+ const coordinate = this.getStoreCoordinateByType(colType, rowType);
2899
+ if (coordinate) {
2900
+ (_a = this.config.selectionStoreConnector) === null || _a === void 0 ? void 0 : _a.setEditByCell(coordinate, { x: colIndex, y: rowIndex });
2901
+ }
2915
2902
  }
2916
2903
  }
2917
2904
 
@@ -2922,7 +2909,7 @@ class GridScrollingService {
2922
2909
  }
2923
2910
  async proxyScroll(e, key) {
2924
2911
  var _a;
2925
- let newEvent;
2912
+ let newEventPromise;
2926
2913
  let event = e;
2927
2914
  for (let elKey in this.elements) {
2928
2915
  // skip
@@ -2936,7 +2923,7 @@ class GridScrollingService {
2936
2923
  }
2937
2924
  for (let el of this.elements[elKey]) {
2938
2925
  if (el.changeScroll) {
2939
- newEvent = el.changeScroll(e);
2926
+ newEventPromise = el.changeScroll(e);
2940
2927
  }
2941
2928
  }
2942
2929
  }
@@ -2946,8 +2933,9 @@ class GridScrollingService {
2946
2933
  }
2947
2934
  }
2948
2935
  }
2936
+ const newEvent = await newEventPromise;
2949
2937
  if (newEvent) {
2950
- event = await newEvent;
2938
+ event = newEvent;
2951
2939
  }
2952
2940
  this.setViewport(event);
2953
2941
  }
@@ -3141,14 +3129,15 @@ function isStretchPlugin(plugin) {
3141
3129
  const rowDefinitionByType = (newVal = []) => {
3142
3130
  const result = {};
3143
3131
  for (const v of newVal) {
3144
- if (!result[v.type]) {
3145
- result[v.type] = {};
3132
+ let rowDefs = result[v.type];
3133
+ if (!rowDefs) {
3134
+ rowDefs = result[v.type] = {};
3146
3135
  }
3147
3136
  if (v.size) {
3148
- if (!result[v.type].sizes) {
3149
- result[v.type].sizes = {};
3137
+ if (!rowDefs.sizes) {
3138
+ rowDefs.sizes = {};
3150
3139
  }
3151
- result[v.type].sizes[v.index] = v.size;
3140
+ rowDefs.sizes[v.index] = v.size;
3152
3141
  }
3153
3142
  }
3154
3143
  return result;
@@ -3156,11 +3145,12 @@ const rowDefinitionByType = (newVal = []) => {
3156
3145
  const rowDefinitionRemoveByType = (oldVal = []) => {
3157
3146
  const result = {};
3158
3147
  for (const v of oldVal) {
3159
- if (!result[v.type]) {
3160
- result[v.type] = [];
3148
+ let rowDefs = result[v.type];
3149
+ if (!rowDefs) {
3150
+ rowDefs = result[v.type] = [];
3161
3151
  }
3162
3152
  if (v.size) {
3163
- result[v.type].push(v.index);
3153
+ rowDefs.push(v.index);
3164
3154
  }
3165
3155
  }
3166
3156
  return result;
@@ -3333,7 +3323,7 @@ class ColumnPlugin extends BasePlugin {
3333
3323
  }
3334
3324
  onMouseUp(e) {
3335
3325
  // apply new positions
3336
- if (this.dragData) {
3326
+ if (this.dragData && this.staticDragData) {
3337
3327
  let relativePos = getLeftRelative(e.x, this.dragData.gridRect.left, this.dragData.scrollOffset);
3338
3328
  if (relativePos < 0) {
3339
3329
  relativePos = 0;
@@ -3435,9 +3425,6 @@ const RevoGridComponent = /*@__PURE__*/ proxyCustomElement(class RevoGridCompone
3435
3425
  this.aftergridinit = createEvent(this, "aftergridinit", 7);
3436
3426
  this.additionaldatachanged = createEvent(this, "additionaldatachanged", 7);
3437
3427
  this.afterthemechanged = createEvent(this, "afterthemechanged", 7);
3438
- // #endregion
3439
- // #region Listeners outside scope
3440
- this.clickTrackForFocusClear = null;
3441
3428
  this.extraElements = [];
3442
3429
  this.viewport = null;
3443
3430
  this.isInited = false;
@@ -3609,6 +3596,7 @@ const RevoGridComponent = /*@__PURE__*/ proxyCustomElement(class RevoGridCompone
3609
3596
  * @param column - full column details to update
3610
3597
  * @param index - virtual column index
3611
3598
  * @param order - order to apply
3599
+ * @param additive - if false will replace current order
3612
3600
  */
3613
3601
  async updateColumnSorting(column, index, order, additive) {
3614
3602
  return this.columnProvider.updateColumnSorting(column, index, order, additive);
@@ -3647,8 +3635,8 @@ const RevoGridComponent = /*@__PURE__*/ proxyCustomElement(class RevoGridCompone
3647
3635
  * Get the currently focused cell.
3648
3636
  */
3649
3637
  async getFocused() {
3650
- var _a;
3651
- return (_a = this.viewport) === null || _a === void 0 ? void 0 : _a.getFocused();
3638
+ var _a, _b;
3639
+ return (_b = (_a = this.viewport) === null || _a === void 0 ? void 0 : _a.getFocused()) !== null && _b !== void 0 ? _b : null;
3652
3640
  }
3653
3641
  /**
3654
3642
  * Get size of content
@@ -3662,8 +3650,8 @@ const RevoGridComponent = /*@__PURE__*/ proxyCustomElement(class RevoGridCompone
3662
3650
  * Get the currently selected Range.
3663
3651
  */
3664
3652
  async getSelectedRange() {
3665
- var _a;
3666
- return (_a = this.viewport) === null || _a === void 0 ? void 0 : _a.getSelectedRange();
3653
+ var _a, _b;
3654
+ return (_b = (_a = this.viewport) === null || _a === void 0 ? void 0 : _a.getSelectedRange()) !== null && _b !== void 0 ? _b : null;
3667
3655
  }
3668
3656
  mousedownHandle(event) {
3669
3657
  const screenX = getPropertyFromEvent(event, 'screenX');
@@ -3676,7 +3664,8 @@ const RevoGridComponent = /*@__PURE__*/ proxyCustomElement(class RevoGridCompone
3676
3664
  /**
3677
3665
  * To keep your elements from losing focus use mouseup/touchend e.preventDefault();
3678
3666
  */
3679
- mouseupHandle(event) {
3667
+ async mouseupHandle(event) {
3668
+ var _a;
3680
3669
  const screenX = getPropertyFromEvent(event, 'screenX');
3681
3670
  const screenY = getPropertyFromEvent(event, 'screenY');
3682
3671
  if (screenX === null || screenY === null) {
@@ -3687,16 +3676,16 @@ const RevoGridComponent = /*@__PURE__*/ proxyCustomElement(class RevoGridCompone
3687
3676
  }
3688
3677
  const pos = screenX + screenY;
3689
3678
  // detect if mousemove then do nothing
3690
- if (Math.abs(this.clickTrackForFocusClear - pos) > 10) {
3679
+ if (Math.abs(((_a = this.clickTrackForFocusClear) !== null && _a !== void 0 ? _a : 0) - pos) > 10) {
3691
3680
  return;
3692
3681
  }
3693
- // Check if action finished inside of the document
3694
- // if event prevented or it is current table don't clear focus
3682
+ // Check if action finished inside the document
3683
+ // if event prevented, or it is current table don't clear focus
3695
3684
  const path = event.composedPath();
3696
3685
  if (!path.includes(this.element) &&
3697
- !path.includes(this.element.shadowRoot)) {
3686
+ !(this.element.shadowRoot && path.includes(this.element.shadowRoot))) {
3698
3687
  // Perform actions if the click is outside the component
3699
- this.clearFocus();
3688
+ await this.clearFocus();
3700
3689
  }
3701
3690
  }
3702
3691
  // #endregion
@@ -3906,15 +3895,12 @@ const RevoGridComponent = /*@__PURE__*/ proxyCustomElement(class RevoGridCompone
3906
3895
  let grPlugin;
3907
3896
  for (let p of this.internalPlugins) {
3908
3897
  const isGrouping = p;
3909
- if (isGrouping.setGrouping) {
3898
+ if (!!isGrouping.setGrouping) {
3910
3899
  grPlugin = isGrouping;
3911
3900
  break;
3912
3901
  }
3913
3902
  }
3914
- if (!grPlugin) {
3915
- return;
3916
- }
3917
- grPlugin.setGrouping(newVal || {});
3903
+ grPlugin === null || grPlugin === void 0 ? void 0 : grPlugin.setGrouping(newVal || {});
3918
3904
  }
3919
3905
  /**
3920
3906
  * Stretch Plugin Apply
@@ -3998,7 +3984,7 @@ const RevoGridComponent = /*@__PURE__*/ proxyCustomElement(class RevoGridCompone
3998
3984
  (_a = this.plugins) === null || _a === void 0 ? void 0 : _a.forEach(p => this.internalPlugins.push(new p(this.element, pluginData)));
3999
3985
  }
4000
3986
  removePlugins() {
4001
- this.internalPlugins.forEach(p => p.destroy());
3987
+ this.internalPlugins.forEach(p => { var _a; return (_a = p.destroy) === null || _a === void 0 ? void 0 : _a.call(p); });
4002
3988
  this.internalPlugins = [];
4003
3989
  }
4004
3990
  // #endregion
@@ -4098,7 +4084,7 @@ const RevoGridComponent = /*@__PURE__*/ proxyCustomElement(class RevoGridCompone
4098
4084
  const headerProperties = Object.assign(Object.assign({}, view.headerProp), { type: view.type, additionalData: this.additionalData, viewportCol: view.viewportCol, selectionStore: view.columnSelectionStore, canResize: this.resize, readonly: this.readonly, columnFilter: !!this.filter });
4099
4085
  // Column headers
4100
4086
  const dataViews = [
4101
- h("revogr-header", Object.assign({ key: 'ff8eefd6db3baf494c015a2ea573160d27739aa9' }, headerProperties, { slot: HEADER_SLOT })),
4087
+ h("revogr-header", Object.assign({ key: 'b08c837765cf20c88cb5b253a876f0f442c31628' }, headerProperties, { slot: HEADER_SLOT })),
4102
4088
  ];
4103
4089
  // Render viewport data (vertical sections)
4104
4090
  view.dataPorts.forEach(data => {
@@ -4120,11 +4106,12 @@ const RevoGridComponent = /*@__PURE__*/ proxyCustomElement(class RevoGridCompone
4120
4106
  const typeCol = 'rgCol';
4121
4107
  const viewports = this.viewportProvider.stores;
4122
4108
  const dimensions = this.dimensionProvider.stores;
4123
- return (h(Host, { key: '21bbe81595f20f7bcb271f28c9c86feef472efec' }, this.hideAttribution ? null : (h("revogr-attribution", { class: "attribution" })), h("div", { key: '7a3092cd02305a0dfaa3b3d3160164001f0ed08b', class: "main-viewport", onClick: (e) => {
4109
+ return (h(Host, { key: '057a2cf1a64aaeec12d2aca17b09316fb3cbfde6' }, this.hideAttribution ? null : (h("revogr-attribution", { class: "attribution" })), h("div", { key: 'e89e3d136d756f80421f42f47e09583985edb1bc', class: "main-viewport", onClick: (e) => {
4110
+ var _a;
4124
4111
  if (e.currentTarget === e.target) {
4125
- this.viewport.clearEdit();
4112
+ (_a = this.viewport) === null || _a === void 0 ? void 0 : _a.clearEdit();
4126
4113
  }
4127
- } }, h("div", { key: 'ae1dfccbb72cc2a9f7fa370889746c702d106045', class: "viewports" }, h("slot", { key: '0725b46d877fbb63fb513845cc1c7b86d0f856b8', name: "viewport" }), viewportSections, h("revogr-scroll-virtual", { key: 'd41771f6ff459f1f6747ce496c8165b1dab44963', class: "vertical", dimension: typeRow, viewportStore: viewports[typeRow].store, dimensionStore: dimensions[typeRow].store, ref: el => this.scrollingService.registerElement(el, 'rowScroll'), onScrollvirtual: e => this.scrollingService.proxyScroll(e.detail) }), h(OrderRenderer, { key: '2914421478450c9b198e0aade898ed342e4d7f6a', ref: e => (this.orderService = e) }))), h("revogr-scroll-virtual", { key: 'bc1812c5ce54cda01e81cc06e28c69dc8e36fdf3', class: "horizontal", dimension: typeCol, viewportStore: viewports[typeCol].store, dimensionStore: dimensions[typeCol].store, ref: el => this.scrollingService.registerElement(el, 'colScroll'), onScrollvirtual: e => this.scrollingService.proxyScroll(e.detail) }), this.extraElements));
4114
+ } }, h("div", { key: '177db78970907d36b8d56549386a18a683573944', class: "viewports" }, h("slot", { key: '481d830a232b1969fcaa2519a5306fafaff58fb4', name: "viewport" }), viewportSections, h("revogr-scroll-virtual", { key: '6a123b2e84bec95d7a63a73322fe167248e8415e', class: "vertical", dimension: typeRow, viewportStore: viewports[typeRow].store, dimensionStore: dimensions[typeRow].store, ref: el => this.scrollingService.registerElement(el, 'rowScroll'), onScrollvirtual: e => this.scrollingService.proxyScroll(e.detail) }), h(OrderRenderer, { key: 'fea1be24668f2039746fff93d0ab5e76d932a166', ref: e => (this.orderService = e) }))), h("revogr-scroll-virtual", { key: '74c6e05c81b2782320755c910b098edf8858d6db', class: "horizontal", dimension: typeCol, viewportStore: viewports[typeCol].store, dimensionStore: dimensions[typeCol].store, ref: el => this.scrollingService.registerElement(el, 'colScroll'), onScrollvirtual: e => this.scrollingService.proxyScroll(e.detail) }), this.extraElements));
4128
4115
  }
4129
4116
  disconnectedCallback() {
4130
4117
  // Remove all plugins, to avoid memory leaks and unexpected behaviour when the component is removed