@revolist/revogrid 4.9.2 → 4.9.4

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 (253) 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 +61 -41
  13. package/dist/cjs/revogr-attribution_6.cjs.entry.js.map +1 -1
  14. package/dist/cjs/revogr-clipboard_3.cjs.entry.js +9 -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 +5 -5
  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 +5 -4
  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 +71 -37
  47. package/dist/collection/components/overlay/revogr-overlay-selection.js.map +1 -1
  48. package/dist/collection/components/overlay/selection.utils.js +4 -4
  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 +61 -41
  125. package/dist/esm/revogr-attribution_6.entry.js.map +1 -1
  126. package/dist/esm/revogr-clipboard_3.entry.js +9 -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/data/column.service.d.ts +1 -1
  161. package/dist/types/components/data/row-highlight.plugin.d.ts +1 -1
  162. package/dist/types/components/editors/revogr-edit.d.ts +1 -1
  163. package/dist/types/components/editors/text-editor.d.ts +3 -3
  164. package/dist/types/components/header/header-renderer.d.ts +2 -2
  165. package/dist/types/components/header/resizable.directive.d.ts +2 -2
  166. package/dist/types/components/overlay/autofill.service.d.ts +6 -6
  167. package/dist/types/components/overlay/keyboard.service.d.ts +4 -4
  168. package/dist/types/components/overlay/revogr-overlay-selection.d.ts +15 -11
  169. package/dist/types/components/overlay/selection.utils.d.ts +5 -4
  170. package/dist/types/components/revoGrid/revo-grid.d.ts +7 -6
  171. package/dist/types/components/revoGrid/viewport.helpers.d.ts +18 -3
  172. package/dist/types/components/revoGrid/viewport.scrolling.service.d.ts +1 -1
  173. package/dist/types/components/revoGrid/viewport.service.d.ts +2 -6
  174. package/dist/types/components/scroll/revogr-viewport-scroll.d.ts +6 -6
  175. package/dist/types/components/selectionTempRange/revogr-temp-range.d.ts +1 -1
  176. package/dist/types/components/vnode/vnode-converter.d.ts +1 -1
  177. package/dist/types/components/vnode/vnode.utils.d.ts +1 -1
  178. package/dist/types/components.d.ts +21 -18
  179. package/dist/types/plugins/column.auto-size.plugin.d.ts +2 -2
  180. package/dist/types/plugins/export/export.plugin.d.ts +3 -3
  181. package/dist/types/plugins/filter/filter.button.d.ts +1 -1
  182. package/dist/types/plugins/filter/filter.panel.d.ts +1 -1
  183. package/dist/types/plugins/groupingRow/grouping.row.plugin.d.ts +1 -1
  184. package/dist/types/plugins/groupingRow/grouping.service.d.ts +3 -3
  185. package/dist/types/plugins/sorting/sorting.plugin.d.ts +8 -8
  186. package/dist/types/services/column.data.provider.d.ts +1 -1
  187. package/dist/types/services/data.provider.d.ts +1 -1
  188. package/dist/types/services/dimension.provider.d.ts +3 -2
  189. package/dist/types/services/selection.store.connector.d.ts +9 -9
  190. package/dist/types/store/selection/selection.helpers.d.ts +1 -1
  191. package/dist/types/store/selection/selection.store.d.ts +4 -4
  192. package/dist/types/store/vp/viewport.helpers.d.ts +2 -2
  193. package/dist/types/themeManager/theme.service.d.ts +1 -1
  194. package/dist/types/types/interfaces.d.ts +4 -1
  195. package/dist/types/types/viewport.interfaces.d.ts +2 -2
  196. package/dist/types/utils/store.utils.d.ts +7 -4
  197. package/hydrate/index.js +261 -210
  198. package/hydrate/index.mjs +261 -210
  199. package/package.json +1 -1
  200. package/standalone/column.service.js +32 -31
  201. package/standalone/column.service.js.map +1 -1
  202. package/standalone/data.store.js +9 -4
  203. package/standalone/data.store.js.map +1 -1
  204. package/standalone/index.js.map +1 -1
  205. package/standalone/local.scroll.timer.js +3 -2
  206. package/standalone/local.scroll.timer.js.map +1 -1
  207. package/standalone/revo-grid.js +76 -88
  208. package/standalone/revo-grid.js.map +1 -1
  209. package/standalone/revogr-clipboard2.js +3 -3
  210. package/standalone/revogr-clipboard2.js.map +1 -1
  211. package/standalone/revogr-data2.js +7 -4
  212. package/standalone/revogr-data2.js.map +1 -1
  213. package/standalone/revogr-edit2.js +5 -3
  214. package/standalone/revogr-edit2.js.map +1 -1
  215. package/standalone/revogr-filter-panel.js.map +1 -1
  216. package/standalone/revogr-focus2.js.map +1 -1
  217. package/standalone/revogr-header2.js +11 -8
  218. package/standalone/revogr-header2.js.map +1 -1
  219. package/standalone/revogr-overlay-selection2.js +50 -30
  220. package/standalone/revogr-overlay-selection2.js.map +1 -1
  221. package/standalone/revogr-row-headers2.js +12 -8
  222. package/standalone/revogr-row-headers2.js.map +1 -1
  223. package/standalone/revogr-scroll-virtual2.js +1 -1
  224. package/standalone/revogr-scroll-virtual2.js.map +1 -1
  225. package/standalone/revogr-temp-range2.js.map +1 -1
  226. package/standalone/revogr-viewport-scroll2.js +47 -23
  227. package/standalone/revogr-viewport-scroll2.js.map +1 -1
  228. package/standalone/selection.utils.js +4 -4
  229. package/standalone/selection.utils.js.map +1 -1
  230. package/standalone/vnode-converter.js +3 -3
  231. package/standalone/vnode-converter.js.map +1 -1
  232. package/dist/cjs/column.service-6f691f50.js.map +0 -1
  233. package/dist/cjs/dimension.helpers-e9d22516.js.map +0 -1
  234. package/dist/cjs/header-cell-renderer-81a22b00.js.map +0 -1
  235. package/dist/cjs/selection.helpers-8fa19c04.js.map +0 -1
  236. package/dist/cjs/throttle-bcc4740d.js.map +0 -1
  237. package/dist/cjs/viewport.store-9cf01c71.js.map +0 -1
  238. package/dist/esm/column.service-0e41057a.js.map +0 -1
  239. package/dist/esm/dimension.helpers-91398565.js.map +0 -1
  240. package/dist/esm/header-cell-renderer-6d8ac25d.js.map +0 -1
  241. package/dist/esm/selection.helpers-50e9f09d.js.map +0 -1
  242. package/dist/esm/throttle-1b1dd9d2.js.map +0 -1
  243. package/dist/esm/viewport.store-bfd0b036.js.map +0 -1
  244. package/dist/revo-grid/column.service-0e41057a.js +0 -5
  245. package/dist/revo-grid/column.service-0e41057a.js.map +0 -1
  246. package/dist/revo-grid/header-cell-renderer-6d8ac25d.js +0 -5
  247. package/dist/revo-grid/header-cell-renderer-6d8ac25d.js.map +0 -1
  248. package/dist/revo-grid/selection.helpers-50e9f09d.js +0 -5
  249. package/dist/revo-grid/selection.helpers-50e9f09d.js.map +0 -1
  250. package/dist/revo-grid/throttle-1b1dd9d2.js.map +0 -1
  251. package/dist/revo-grid/viewport.store-bfd0b036.js +0 -5
  252. package/dist/revo-grid/viewport.store-bfd0b036.js.map +0 -1
  253. /package/dist/revo-grid/{base.plugin-78393655.js.map → base.plugin-5e7a3c51.js.map} +0 -0
@@ -1 +1 @@
1
- {"file":"index.js","mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,OAAO,CAAC,GAAG;IACT,IAAI,KAAK,GAAwB,GAAW,CAAC,KAAK,IAAI,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IAChF,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC7B,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;KACtB;IAED,MAAM,WAAW,GAAG,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACjD,IAAI,WAAW,KAAK,KAAK,EAAE;QACzB,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;KACxC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC","names":[],"sources":["src/global/global.ts"],"sourcesContent":["import { setMode } from '@stencil/core';\nimport ThemeService from '../themeManager/theme.service';\n\nsetMode(elm => {\n let theme: string | undefined = (elm as any).theme || elm.getAttribute('theme');\n if (typeof theme === 'string') {\n theme = theme.trim();\n }\n\n const parsedTheme = ThemeService.getTheme(theme);\n if (parsedTheme !== theme) {\n elm.setAttribute('theme', parsedTheme);\n }\n return parsedTheme;\n});\n"],"version":3}
1
+ {"file":"index.js","mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,OAAO,CAAC,GAAG;IACT,IAAI,KAAK,GAAI,GAA2B,CAAC,KAAK,IAAI,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IAC5E,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC7B,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;KACtB;IAED,MAAM,WAAW,GAAG,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACjD,IAAI,WAAW,KAAK,KAAK,EAAE;QACzB,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;KACxC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC","names":[],"sources":["src/global/global.ts"],"sourcesContent":["import { setMode } from '@stencil/core';\nimport ThemeService from '../themeManager/theme.service';\n\nsetMode(elm => {\n let theme = (elm as HTMLRevoGridElement).theme || elm.getAttribute('theme');\n if (typeof theme === 'string') {\n theme = theme.trim();\n }\n\n const parsedTheme = ThemeService.getTheme(theme);\n if (parsedTheme !== theme) {\n elm.setAttribute('theme', parsedTheme);\n }\n return parsedTheme;\n});\n"],"version":3}
@@ -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}
@@ -11,7 +11,7 @@ import { R as RESIZE_INTERVAL } from './consts.js';
11
11
  import { V as ViewportStore, f as calculateRowHeaderSize, h as defineCustomElement$6 } from './revogr-row-headers2.js';
12
12
  import { t as timeout, g as getScrollbarSize } from './index2.js';
13
13
  import { F as FILTER_PROP, i as isFilterBtn } from './filter.button.js';
14
- 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';
15
15
  import { d as dispatch, O as ON_COLUMN_CLICK, b as defineCustomElement$9 } from './revogr-header2.js';
16
16
  import { g as getPropertyFromEvent } from './selection.utils.js';
17
17
  import { d as defineCustomElement$e } from './revogr-attribution2.js';
@@ -83,7 +83,7 @@ class ThemeService {
83
83
  }
84
84
  }
85
85
  static getTheme(theme) {
86
- if (allowedThemes.indexOf(theme) > -1) {
86
+ if (theme && allowedThemes.indexOf(theme) > -1) {
87
87
  return theme;
88
88
  }
89
89
  return DEFAULT_THEME;
@@ -798,8 +798,9 @@ class DimensionProvider {
798
798
  }
799
799
  /**
800
800
  * Sets dimension data and view port coordinate
801
- * @param items - data/column items
801
+ * @param itemCount
802
802
  * @param type - dimension type
803
+ * @param noVirtual - disable virtual data
803
804
  */
804
805
  setData(itemCount, type, noVirtual = false) {
805
806
  this.setItemCount(itemCount, type);
@@ -1744,10 +1745,6 @@ class SortingPlugin extends BasePlugin {
1744
1745
  constructor(revogrid, providers) {
1745
1746
  super(revogrid, providers);
1746
1747
  this.revogrid = revogrid;
1747
- // sorting order per column
1748
- this.sorting = null;
1749
- // sorting function per column, multiple columns sorting supported
1750
- this.sortingFunc = null;
1751
1748
  this.sortingPromise = null;
1752
1749
  this.postponeSort = debounce_1(async (order, comparison) => this.runSorting(order, comparison), 50);
1753
1750
  const beforeanysource = async ({ detail: { type }, }) => {
@@ -1761,7 +1758,7 @@ class SortingPlugin extends BasePlugin {
1761
1758
  }
1762
1759
  };
1763
1760
  const aftercolumnsset = async ({ detail: { order }, }) => {
1764
- const columns = await this.revogrid.getColumns();
1761
+ const columns = (await this.revogrid.getColumns());
1765
1762
  const sortingFunc = {};
1766
1763
  for (let prop in order) {
1767
1764
  const cmp = this.getComparer(ColumnDataProvider.getColumnByProp(columns, prop), order[prop]);
@@ -1807,6 +1804,7 @@ class SortingPlugin extends BasePlugin {
1807
1804
  * If additive - add to existing sorting, multiple columns can be sorted
1808
1805
  */
1809
1806
  async headerclick(column, index, additive) {
1807
+ var _a, _b;
1810
1808
  let order = this.getNextOrder(column.order);
1811
1809
  const beforeEvent = this.emit('beforesorting', { column, order, additive });
1812
1810
  if (beforeEvent.defaultPrevented) {
@@ -1847,8 +1845,8 @@ class SortingPlugin extends BasePlugin {
1847
1845
  this.sortingFunc = { [column.prop]: cmp };
1848
1846
  }
1849
1847
  else {
1850
- delete this.sorting[column.prop];
1851
- 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];
1852
1850
  }
1853
1851
  }
1854
1852
  this.startSorting(this.sorting, this.sortingFunc);
@@ -1864,8 +1862,8 @@ class SortingPlugin extends BasePlugin {
1864
1862
  async sort(sorting, sortingFunc, types = ['rgRow', 'rowPinStart', 'rowPinEnd']) {
1865
1863
  // if no sorting - reset
1866
1864
  if (!size_1(sorting)) {
1867
- this.sorting = null;
1868
- this.sortingFunc = null;
1865
+ this.sorting = undefined;
1866
+ this.sortingFunc = undefined;
1869
1867
  for (let type of types) {
1870
1868
  const store = await this.revogrid.getSourceStore(type);
1871
1869
  // row data
@@ -1910,10 +1908,10 @@ class SortingPlugin extends BasePlugin {
1910
1908
  return -1 * cmp(prop, a, b);
1911
1909
  };
1912
1910
  }
1913
- sortIndexByItems(indexes, source, sortingFunc) {
1911
+ sortIndexByItems(indexes, source, sortingFunc = {}) {
1914
1912
  // if no sorting - return unsorted indexes
1915
1913
  if (Object.entries(sortingFunc).length === 0) {
1916
- // Unsort indexes
1914
+ // Unsorted indexes
1917
1915
  return [...Array(indexes.length).keys()];
1918
1916
  }
1919
1917
  //
@@ -1929,7 +1927,7 @@ class SortingPlugin extends BasePlugin {
1929
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.
1930
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.
1931
1929
  */
1932
- const sorted = cmp(prop, itemA, itemB);
1930
+ const sorted = cmp === null || cmp === void 0 ? void 0 : cmp(prop, itemA, itemB);
1933
1931
  if (sorted) {
1934
1932
  return sorted;
1935
1933
  }
@@ -2179,13 +2177,13 @@ class ExportFilePlugin extends BasePlugin {
2179
2177
  /** Export file */
2180
2178
  async exportFile(options = {}, t = ExportTypes.csv) {
2181
2179
  const formatter = this.formatter(t, options);
2182
- const blob = await this.getBlob(formatter);
2183
2180
  // url
2184
2181
  const URL = window.URL || window.webkitURL;
2185
2182
  const a = document.createElement('a');
2186
2183
  const { filename, fileKind } = formatter.options;
2187
2184
  const name = `${filename}.${fileKind}`;
2188
- const url = URL.createObjectURL(blob);
2185
+ const blob = await this.getBlob(formatter);
2186
+ const url = blob ? URL.createObjectURL(blob) : '';
2189
2187
  a.style.display = 'none';
2190
2188
  a.setAttribute('href', url);
2191
2189
  a.setAttribute('download', name);
@@ -2610,7 +2608,7 @@ class GroupingRowPlugin extends BasePlugin {
2610
2608
  const { sourceWithGroups, depth, trimmed, oldNewIndexMap, childrenByGroup, } = gatherGrouping(source, ((_a = this.options) === null || _a === void 0 ? void 0 : _a.props) || [], Object.assign({ prevExpanded }, options));
2611
2609
  // setup source
2612
2610
  this.providers.data.setData(sourceWithGroups, GROUPING_ROW_TYPE, this.revogrid.disableVirtualY, { depth, customRenderer: options === null || options === void 0 ? void 0 : options.groupLabelTemplate }, true);
2613
- this.updateTrimmed(trimmed, childrenByGroup, oldNewIndexes, oldNewIndexMap);
2611
+ this.updateTrimmed(trimmed, childrenByGroup, oldNewIndexes !== null && oldNewIndexes !== void 0 ? oldNewIndexes : {}, oldNewIndexMap);
2614
2612
  }
2615
2613
  /**
2616
2614
  * Apply grouping on data set
@@ -2676,7 +2674,7 @@ class GroupingRowPlugin extends BasePlugin {
2676
2674
  this.providers.data.setData(source, GROUPING_ROW_TYPE, this.revogrid.disableVirtualY, undefined, true);
2677
2675
  this.updateTrimmed(undefined, undefined, oldNewIndexes);
2678
2676
  }
2679
- updateTrimmed(trimmedGroup = {}, _childrenByGroup = {}, firstLevelMap, secondLevelMap) {
2677
+ updateTrimmed(trimmedGroup = {}, _childrenByGroup = {}, firstLevelMap = {}, secondLevelMap) {
2680
2678
  // map previously trimmed data
2681
2679
  const trimemedOptionsToUpgrade = processDoubleConversionTrimmed(this.trimmed, firstLevelMap, secondLevelMap);
2682
2680
  for (let type in trimemedOptionsToUpgrade) {
@@ -2769,11 +2767,9 @@ class ViewportService {
2769
2767
  segmentSelection.setLastCell(rgRow.lastCell);
2770
2768
  // register selection store for Row
2771
2769
  const rowSelectionStore = this.registerRow(rgRow.position.y, rgRow.type);
2772
- 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 => {
2773
2771
  segmentSelection.setRangeArea(e.detail);
2774
- }, onSettemprange: e => {
2775
- segmentSelection.setTempArea(e.detail);
2776
- }, onFocuscell: e => {
2772
+ }, onSettemprange: e => segmentSelection.setTempArea(e.detail), onFocuscell: e => {
2777
2773
  // todo: multi focus
2778
2774
  segmentSelection.clearFocus();
2779
2775
  config.selectionStoreConnector.focus(segmentSelection, e.detail);
@@ -2823,43 +2819,27 @@ class ViewportService {
2823
2819
  };
2824
2820
  // y position for selection
2825
2821
  let y = 0;
2826
- return rowTypes.reduce((r, type) => {
2822
+ return rowTypes.reduce((result, type) => {
2827
2823
  // filter out empty sources, we still need to return source to keep slot working
2828
2824
  const isPresent = data.viewports[type].store.get('realCount') || type === 'rgRow';
2829
2825
  const rgCol = Object.assign(Object.assign({}, data), { position: Object.assign(Object.assign({}, data.position), { y: isPresent ? y : EMPTY_INDEX }) });
2830
- r.push(this.dataPartition(rgCol, type, slots[type], type !== 'rgRow'));
2826
+ const partition = viewportDataPartition(rgCol, type, slots[type], type !== 'rgRow');
2827
+ result.push(partition);
2831
2828
  if (isPresent) {
2832
2829
  y++;
2833
2830
  }
2834
- return r;
2831
+ return result;
2835
2832
  }, []);
2836
2833
  }
2837
- dataPartition(data, type, slot, fixed) {
2838
- return {
2839
- colData: data.colStore,
2840
- viewportCol: data.viewports[data.colType].store,
2841
- viewportRow: data.viewports[type].store,
2842
- // lastCell is the last real coordinate + 1
2843
- lastCell: getLastCell(data, type),
2844
- slot,
2845
- type,
2846
- canDrag: !fixed,
2847
- position: data.position,
2848
- dataStore: data.rowStores[type].store,
2849
- dimensionCol: data.dimensions[data.colType].store,
2850
- dimensionRow: data.dimensions[type].store,
2851
- style: fixed
2852
- ? { height: `${data.dimensions[type].store.get('realSize')}px` }
2853
- : undefined,
2854
- };
2855
- }
2856
2834
  scrollToCell(cell) {
2857
2835
  for (let key in cell) {
2858
2836
  const coordinate = cell[key];
2859
- this.config.scrollingService.proxyScroll({
2860
- dimension: key === 'x' ? 'rgCol' : 'rgRow',
2861
- coordinate,
2862
- });
2837
+ if (typeof coordinate === 'number') {
2838
+ this.config.scrollingService.proxyScroll({
2839
+ dimension: key === 'x' ? 'rgCol' : 'rgRow',
2840
+ coordinate,
2841
+ });
2842
+ }
2863
2843
  }
2864
2844
  }
2865
2845
  /**
@@ -2895,22 +2875,30 @@ class ViewportService {
2895
2875
  }
2896
2876
  getStoreCoordinateByType(colType, rowType) {
2897
2877
  const stores = this.config.selectionStoreConnector.storesByType;
2898
- const storeCoordinate = {
2878
+ if (typeof stores[colType] === 'undefined' || typeof stores[rowType] === 'undefined') {
2879
+ return;
2880
+ }
2881
+ return {
2899
2882
  x: stores[colType],
2900
2883
  y: stores[rowType],
2901
2884
  };
2902
- return storeCoordinate;
2903
2885
  }
2904
2886
  setFocus(colType, rowType, start, end) {
2905
2887
  var _a;
2906
- (_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
+ }
2907
2892
  }
2908
2893
  getSelectedRange() {
2909
2894
  return this.config.selectionStoreConnector.selectedRange;
2910
2895
  }
2911
2896
  setEdit(rowIndex, colIndex, colType, rowType) {
2912
2897
  var _a;
2913
- (_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
+ }
2914
2902
  }
2915
2903
  }
2916
2904
 
@@ -2921,7 +2909,7 @@ class GridScrollingService {
2921
2909
  }
2922
2910
  async proxyScroll(e, key) {
2923
2911
  var _a;
2924
- let newEvent;
2912
+ let newEventPromise;
2925
2913
  let event = e;
2926
2914
  for (let elKey in this.elements) {
2927
2915
  // skip
@@ -2935,7 +2923,7 @@ class GridScrollingService {
2935
2923
  }
2936
2924
  for (let el of this.elements[elKey]) {
2937
2925
  if (el.changeScroll) {
2938
- newEvent = el.changeScroll(e);
2926
+ newEventPromise = el.changeScroll(e);
2939
2927
  }
2940
2928
  }
2941
2929
  }
@@ -2945,8 +2933,9 @@ class GridScrollingService {
2945
2933
  }
2946
2934
  }
2947
2935
  }
2936
+ const newEvent = await newEventPromise;
2948
2937
  if (newEvent) {
2949
- event = await newEvent;
2938
+ event = newEvent;
2950
2939
  }
2951
2940
  this.setViewport(event);
2952
2941
  }
@@ -3140,14 +3129,15 @@ function isStretchPlugin(plugin) {
3140
3129
  const rowDefinitionByType = (newVal = []) => {
3141
3130
  const result = {};
3142
3131
  for (const v of newVal) {
3143
- if (!result[v.type]) {
3144
- result[v.type] = {};
3132
+ let rowDefs = result[v.type];
3133
+ if (!rowDefs) {
3134
+ rowDefs = result[v.type] = {};
3145
3135
  }
3146
3136
  if (v.size) {
3147
- if (!result[v.type].sizes) {
3148
- result[v.type].sizes = {};
3137
+ if (!rowDefs.sizes) {
3138
+ rowDefs.sizes = {};
3149
3139
  }
3150
- result[v.type].sizes[v.index] = v.size;
3140
+ rowDefs.sizes[v.index] = v.size;
3151
3141
  }
3152
3142
  }
3153
3143
  return result;
@@ -3155,11 +3145,12 @@ const rowDefinitionByType = (newVal = []) => {
3155
3145
  const rowDefinitionRemoveByType = (oldVal = []) => {
3156
3146
  const result = {};
3157
3147
  for (const v of oldVal) {
3158
- if (!result[v.type]) {
3159
- result[v.type] = [];
3148
+ let rowDefs = result[v.type];
3149
+ if (!rowDefs) {
3150
+ rowDefs = result[v.type] = [];
3160
3151
  }
3161
3152
  if (v.size) {
3162
- result[v.type].push(v.index);
3153
+ rowDefs.push(v.index);
3163
3154
  }
3164
3155
  }
3165
3156
  return result;
@@ -3332,7 +3323,7 @@ class ColumnPlugin extends BasePlugin {
3332
3323
  }
3333
3324
  onMouseUp(e) {
3334
3325
  // apply new positions
3335
- if (this.dragData) {
3326
+ if (this.dragData && this.staticDragData) {
3336
3327
  let relativePos = getLeftRelative(e.x, this.dragData.gridRect.left, this.dragData.scrollOffset);
3337
3328
  if (relativePos < 0) {
3338
3329
  relativePos = 0;
@@ -3434,9 +3425,6 @@ const RevoGridComponent = /*@__PURE__*/ proxyCustomElement(class RevoGridCompone
3434
3425
  this.aftergridinit = createEvent(this, "aftergridinit", 7);
3435
3426
  this.additionaldatachanged = createEvent(this, "additionaldatachanged", 7);
3436
3427
  this.afterthemechanged = createEvent(this, "afterthemechanged", 7);
3437
- // #endregion
3438
- // #region Listeners outside scope
3439
- this.clickTrackForFocusClear = null;
3440
3428
  this.extraElements = [];
3441
3429
  this.viewport = null;
3442
3430
  this.isInited = false;
@@ -3608,6 +3596,7 @@ const RevoGridComponent = /*@__PURE__*/ proxyCustomElement(class RevoGridCompone
3608
3596
  * @param column - full column details to update
3609
3597
  * @param index - virtual column index
3610
3598
  * @param order - order to apply
3599
+ * @param additive - if false will replace current order
3611
3600
  */
3612
3601
  async updateColumnSorting(column, index, order, additive) {
3613
3602
  return this.columnProvider.updateColumnSorting(column, index, order, additive);
@@ -3646,8 +3635,8 @@ const RevoGridComponent = /*@__PURE__*/ proxyCustomElement(class RevoGridCompone
3646
3635
  * Get the currently focused cell.
3647
3636
  */
3648
3637
  async getFocused() {
3649
- var _a;
3650
- 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;
3651
3640
  }
3652
3641
  /**
3653
3642
  * Get size of content
@@ -3661,8 +3650,8 @@ const RevoGridComponent = /*@__PURE__*/ proxyCustomElement(class RevoGridCompone
3661
3650
  * Get the currently selected Range.
3662
3651
  */
3663
3652
  async getSelectedRange() {
3664
- var _a;
3665
- 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;
3666
3655
  }
3667
3656
  mousedownHandle(event) {
3668
3657
  const screenX = getPropertyFromEvent(event, 'screenX');
@@ -3675,7 +3664,8 @@ const RevoGridComponent = /*@__PURE__*/ proxyCustomElement(class RevoGridCompone
3675
3664
  /**
3676
3665
  * To keep your elements from losing focus use mouseup/touchend e.preventDefault();
3677
3666
  */
3678
- mouseupHandle(event) {
3667
+ async mouseupHandle(event) {
3668
+ var _a;
3679
3669
  const screenX = getPropertyFromEvent(event, 'screenX');
3680
3670
  const screenY = getPropertyFromEvent(event, 'screenY');
3681
3671
  if (screenX === null || screenY === null) {
@@ -3686,16 +3676,16 @@ const RevoGridComponent = /*@__PURE__*/ proxyCustomElement(class RevoGridCompone
3686
3676
  }
3687
3677
  const pos = screenX + screenY;
3688
3678
  // detect if mousemove then do nothing
3689
- if (Math.abs(this.clickTrackForFocusClear - pos) > 10) {
3679
+ if (Math.abs(((_a = this.clickTrackForFocusClear) !== null && _a !== void 0 ? _a : 0) - pos) > 10) {
3690
3680
  return;
3691
3681
  }
3692
- // Check if action finished inside of the document
3693
- // 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
3694
3684
  const path = event.composedPath();
3695
3685
  if (!path.includes(this.element) &&
3696
- !path.includes(this.element.shadowRoot)) {
3686
+ !(this.element.shadowRoot && path.includes(this.element.shadowRoot))) {
3697
3687
  // Perform actions if the click is outside the component
3698
- this.clearFocus();
3688
+ await this.clearFocus();
3699
3689
  }
3700
3690
  }
3701
3691
  // #endregion
@@ -3905,15 +3895,12 @@ const RevoGridComponent = /*@__PURE__*/ proxyCustomElement(class RevoGridCompone
3905
3895
  let grPlugin;
3906
3896
  for (let p of this.internalPlugins) {
3907
3897
  const isGrouping = p;
3908
- if (isGrouping.setGrouping) {
3898
+ if (!!isGrouping.setGrouping) {
3909
3899
  grPlugin = isGrouping;
3910
3900
  break;
3911
3901
  }
3912
3902
  }
3913
- if (!grPlugin) {
3914
- return;
3915
- }
3916
- grPlugin.setGrouping(newVal || {});
3903
+ grPlugin === null || grPlugin === void 0 ? void 0 : grPlugin.setGrouping(newVal || {});
3917
3904
  }
3918
3905
  /**
3919
3906
  * Stretch Plugin Apply
@@ -3997,7 +3984,7 @@ const RevoGridComponent = /*@__PURE__*/ proxyCustomElement(class RevoGridCompone
3997
3984
  (_a = this.plugins) === null || _a === void 0 ? void 0 : _a.forEach(p => this.internalPlugins.push(new p(this.element, pluginData)));
3998
3985
  }
3999
3986
  removePlugins() {
4000
- 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); });
4001
3988
  this.internalPlugins = [];
4002
3989
  }
4003
3990
  // #endregion
@@ -4097,7 +4084,7 @@ const RevoGridComponent = /*@__PURE__*/ proxyCustomElement(class RevoGridCompone
4097
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 });
4098
4085
  // Column headers
4099
4086
  const dataViews = [
4100
- h("revogr-header", Object.assign({ key: 'ff8eefd6db3baf494c015a2ea573160d27739aa9' }, headerProperties, { slot: HEADER_SLOT })),
4087
+ h("revogr-header", Object.assign({ key: 'b08c837765cf20c88cb5b253a876f0f442c31628' }, headerProperties, { slot: HEADER_SLOT })),
4101
4088
  ];
4102
4089
  // Render viewport data (vertical sections)
4103
4090
  view.dataPorts.forEach(data => {
@@ -4119,11 +4106,12 @@ const RevoGridComponent = /*@__PURE__*/ proxyCustomElement(class RevoGridCompone
4119
4106
  const typeCol = 'rgCol';
4120
4107
  const viewports = this.viewportProvider.stores;
4121
4108
  const dimensions = this.dimensionProvider.stores;
4122
- 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;
4123
4111
  if (e.currentTarget === e.target) {
4124
- this.viewport.clearEdit();
4112
+ (_a = this.viewport) === null || _a === void 0 ? void 0 : _a.clearEdit();
4125
4113
  }
4126
- } }, 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));
4127
4115
  }
4128
4116
  disconnectedCallback() {
4129
4117
  // Remove all plugins, to avoid memory leaks and unexpected behaviour when the component is removed