@revolist/revogrid 4.9.41 → 4.9.42

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 (403) hide show
  1. package/dist/cjs/app-globals-c0b20747.js.map +1 -1
  2. package/dist/cjs/{column.drag.plugin-fcd892ec.js → column.drag.plugin-a6ef25bf.js} +1034 -149
  3. package/dist/cjs/column.drag.plugin-a6ef25bf.js.map +1 -0
  4. package/dist/cjs/column.service-831e1c92.js +1321 -0
  5. package/dist/cjs/column.service-831e1c92.js.map +1 -0
  6. package/dist/cjs/{column.service-26c61ed6.js → dimension.helpers-1927ad24.js} +490 -1273
  7. package/dist/cjs/dimension.helpers-1927ad24.js.map +1 -0
  8. package/dist/cjs/{edit.utils-179c0800.js → edit.utils-e51411f6.js} +3 -3
  9. package/dist/cjs/{edit.utils-179c0800.js.map → edit.utils-e51411f6.js.map} +1 -1
  10. package/dist/cjs/{header-cell-renderer-d879d95e.js → header-cell-renderer-53ecdcdb.js} +2 -2
  11. package/dist/cjs/{header-cell-renderer-d879d95e.js.map → header-cell-renderer-53ecdcdb.js.map} +1 -1
  12. package/dist/cjs/index.cjs.js +127 -69
  13. package/dist/cjs/index.cjs.js.map +1 -1
  14. package/dist/cjs/key.utils-96d0bc42.js +101 -0
  15. package/dist/cjs/key.utils-96d0bc42.js.map +1 -0
  16. package/dist/cjs/loader.cjs.js +1 -1
  17. package/dist/cjs/revo-grid.cjs.entry.js +310 -941
  18. package/dist/cjs/revo-grid.cjs.entry.js.map +1 -1
  19. package/dist/cjs/revo-grid.cjs.js +1 -1
  20. package/dist/cjs/revogr-attribution_7.cjs.entry.js +100 -70
  21. package/dist/cjs/revogr-attribution_7.cjs.entry.js.map +1 -1
  22. package/dist/cjs/revogr-clipboard_3.cjs.entry.js +11 -10
  23. package/dist/cjs/revogr-clipboard_3.cjs.entry.js.map +1 -1
  24. package/dist/cjs/revogr-data_4.cjs.entry.js +88 -78
  25. package/dist/cjs/revogr-data_4.cjs.entry.js.map +1 -1
  26. package/dist/cjs/revogr-filter-panel.cjs.entry.js +33 -13
  27. package/dist/cjs/revogr-filter-panel.cjs.entry.js.map +1 -1
  28. package/dist/cjs/{text-editor-b756d6b3.js → text-editor-1afffaf1.js} +6 -6
  29. package/dist/cjs/text-editor-1afffaf1.js.map +1 -0
  30. package/dist/cjs/{throttle-a57f51f9.js → throttle-bb713c73.js} +4 -4
  31. package/dist/cjs/{throttle-a57f51f9.js.map → throttle-bb713c73.js.map} +1 -1
  32. package/dist/cjs/{row-header-utils-c37f76e4.js → viewport.store-69b45f22.js} +15 -14
  33. package/dist/cjs/viewport.store-69b45f22.js.map +1 -0
  34. package/dist/collection/components/attribution/revogr-attribution.js +1 -1
  35. package/dist/collection/components/attribution/revogr-attribution.js.map +1 -1
  36. package/dist/collection/components/data/cell-renderer.js +11 -9
  37. package/dist/collection/components/data/cell-renderer.js.map +1 -1
  38. package/dist/collection/components/data/column.service.js +7 -19
  39. package/dist/collection/components/data/column.service.js.map +1 -1
  40. package/dist/collection/components/data/revogr-data-style.css +10 -5
  41. package/dist/collection/components/data/revogr-data.js +50 -28
  42. package/dist/collection/components/data/revogr-data.js.map +1 -1
  43. package/dist/collection/components/data/row-highlight.plugin.js.map +1 -1
  44. package/dist/collection/components/data/row-renderer.js.map +1 -1
  45. package/dist/collection/components/editors/revogr-edit-style.css +8 -5
  46. package/dist/collection/components/editors/revogr-edit.js +2 -2
  47. package/dist/collection/components/editors/revogr-edit.js.map +1 -1
  48. package/dist/collection/components/editors/text-editor.js +2 -2
  49. package/dist/collection/components/editors/text-editor.js.map +1 -1
  50. package/dist/collection/components/extra/revogr-extra.js +44 -6
  51. package/dist/collection/components/extra/revogr-extra.js.map +1 -1
  52. package/dist/collection/components/header/header-cell-renderer.js.map +1 -1
  53. package/dist/collection/components/header/header-renderer.js.map +1 -1
  54. package/dist/collection/components/header/resizable.element.js.map +1 -1
  55. package/dist/collection/components/header/revogr-header-style.css +8 -5
  56. package/dist/collection/components/header/revogr-header.js +9 -9
  57. package/dist/collection/components/header/revogr-header.js.map +1 -1
  58. package/dist/collection/components/order/order-renderer.js.map +1 -1
  59. package/dist/collection/components/order/revogr-order-editor.js +12 -24
  60. package/dist/collection/components/order/revogr-order-editor.js.map +1 -1
  61. package/dist/collection/components/overlay/autofill.service.js +7 -5
  62. package/dist/collection/components/overlay/autofill.service.js.map +1 -1
  63. package/dist/collection/components/overlay/keyboard.service.js +1 -4
  64. package/dist/collection/components/overlay/keyboard.service.js.map +1 -1
  65. package/dist/collection/components/overlay/revogr-overlay-selection.js +88 -72
  66. package/dist/collection/components/overlay/revogr-overlay-selection.js.map +1 -1
  67. package/dist/collection/components/overlay/revogr-overlay-style.css +8 -5
  68. package/dist/collection/components/overlay/selection.utils.js.map +1 -1
  69. package/dist/collection/components/revoGrid/plugin.service.js +81 -0
  70. package/dist/collection/components/revoGrid/plugin.service.js.map +1 -0
  71. package/dist/collection/components/revoGrid/revo-grid-style.css +18 -11
  72. package/dist/collection/components/revoGrid/revo-grid.js +289 -140
  73. package/dist/collection/components/revoGrid/revo-grid.js.map +1 -1
  74. package/dist/collection/components/revoGrid/viewport.service.js +9 -9
  75. package/dist/collection/components/revoGrid/viewport.service.js.map +1 -1
  76. package/dist/collection/components/rowHeaders/revogr-row-headers.js +1 -1
  77. package/dist/collection/components/rowHeaders/revogr-row-headers.js.map +1 -1
  78. package/dist/collection/components/rowHeaders/row-header-render.js.map +1 -1
  79. package/dist/collection/components/scroll/revogr-viewport-scroll-style.css +8 -5
  80. package/dist/collection/components/scroll/revogr-viewport-scroll.js +26 -20
  81. package/dist/collection/components/scroll/revogr-viewport-scroll.js.map +1 -1
  82. package/dist/collection/components/scrollable/revogr-scroll-style.css +10 -7
  83. package/dist/collection/components/scrollable/revogr-scroll-virtual.js +10 -8
  84. package/dist/collection/components/scrollable/revogr-scroll-virtual.js.map +1 -1
  85. package/dist/collection/components/selectionFocus/revogr-focus-style.css +8 -5
  86. package/dist/collection/components/selectionFocus/revogr-focus.js +10 -10
  87. package/dist/collection/components/selectionFocus/revogr-focus.js.map +1 -1
  88. package/dist/collection/components/selectionTempRange/revogr-temp-range-style.css +8 -5
  89. package/dist/collection/components/selectionTempRange/revogr-temp-range.js +6 -6
  90. package/dist/collection/components/selectionTempRange/revogr-temp-range.js.map +1 -1
  91. package/dist/collection/components/vnode/vnode-converter.js +1 -1
  92. package/dist/collection/components/vnode/vnode-converter.js.map +1 -1
  93. package/dist/collection/components/vnode/vnode.utils.js.map +1 -1
  94. package/dist/collection/index.js.map +1 -1
  95. package/dist/collection/plugins/add-rows-on-paste.plugin.js +40 -0
  96. package/dist/collection/plugins/add-rows-on-paste.plugin.js.map +1 -0
  97. package/dist/collection/plugins/base.plugin.js.map +1 -1
  98. package/dist/collection/plugins/column.auto-size.plugin.js +1 -1
  99. package/dist/collection/plugins/column.auto-size.plugin.js.map +1 -1
  100. package/dist/collection/plugins/column.stretch.plugin.js +1 -1
  101. package/dist/collection/plugins/column.stretch.plugin.js.map +1 -1
  102. package/dist/collection/plugins/export/csv.js +1 -1
  103. package/dist/collection/plugins/export/csv.js.map +1 -1
  104. package/dist/collection/plugins/export/export.plugin.js +4 -2
  105. package/dist/collection/plugins/export/export.plugin.js.map +1 -1
  106. package/dist/collection/plugins/filter/filter.indexed.js +1 -0
  107. package/dist/collection/plugins/filter/filter.indexed.js.map +1 -1
  108. package/dist/collection/plugins/filter/filter.panel.js +35 -35
  109. package/dist/collection/plugins/filter/filter.panel.js.map +1 -1
  110. package/dist/collection/plugins/filter/filter.plugin.js +117 -77
  111. package/dist/collection/plugins/filter/filter.plugin.js.map +1 -1
  112. package/dist/collection/plugins/filter/filter.style.css +19 -5
  113. package/dist/collection/plugins/filter/filter.types.js.map +1 -1
  114. package/dist/collection/plugins/groupingColumn/columnGroupsRenderer.js.map +1 -1
  115. package/dist/collection/plugins/groupingColumn/headerGroupRenderer.js.map +1 -1
  116. package/dist/collection/plugins/groupingRow/grouping.const.js +1 -0
  117. package/dist/collection/plugins/groupingRow/grouping.const.js.map +1 -1
  118. package/dist/collection/plugins/groupingRow/grouping.row.plugin.js +64 -79
  119. package/dist/collection/plugins/groupingRow/grouping.row.plugin.js.map +1 -1
  120. package/dist/collection/plugins/groupingRow/grouping.row.renderer.js +3 -3
  121. package/dist/collection/plugins/groupingRow/grouping.row.renderer.js.map +1 -1
  122. package/dist/collection/plugins/groupingRow/grouping.row.types.js.map +1 -1
  123. package/dist/collection/plugins/groupingRow/grouping.service.js +40 -6
  124. package/dist/collection/plugins/groupingRow/grouping.service.js.map +1 -1
  125. package/dist/collection/plugins/index.js +2 -0
  126. package/dist/collection/plugins/index.js.map +1 -1
  127. package/dist/collection/plugins/moveColumn/column.drag.plugin.js +12 -6
  128. package/dist/collection/plugins/moveColumn/column.drag.plugin.js.map +1 -1
  129. package/dist/collection/plugins/sorting/sorting.func.js +42 -0
  130. package/dist/collection/plugins/sorting/sorting.func.js.map +1 -0
  131. package/dist/collection/plugins/sorting/sorting.plugin.js +71 -69
  132. package/dist/collection/plugins/sorting/sorting.plugin.js.map +1 -1
  133. package/dist/collection/plugins/sorting/sorting.types.js +2 -0
  134. package/dist/collection/plugins/sorting/sorting.types.js.map +1 -0
  135. package/dist/collection/serve/controller.js +32 -15
  136. package/dist/collection/serve/data.js +18 -11
  137. package/dist/collection/services/column.data.provider.js +5 -2
  138. package/dist/collection/services/column.data.provider.js.map +1 -1
  139. package/dist/collection/services/data.provider.js +18 -7
  140. package/dist/collection/services/data.provider.js.map +1 -1
  141. package/dist/collection/services/dimension.provider.js +32 -33
  142. package/dist/collection/services/dimension.provider.js.map +1 -1
  143. package/dist/collection/services/selection.store.connector.js +1 -1
  144. package/dist/collection/services/selection.store.connector.js.map +1 -1
  145. package/dist/collection/store/dataSource/data.proxy.js +9 -15
  146. package/dist/collection/store/dataSource/data.proxy.js.map +1 -1
  147. package/dist/collection/store/dataSource/data.store.js +1 -1
  148. package/dist/collection/store/dataSource/data.store.js.map +1 -1
  149. package/dist/collection/store/dataSource/trimmed.plugin.js +5 -8
  150. package/dist/collection/store/dataSource/trimmed.plugin.js.map +1 -1
  151. package/dist/collection/store/dimension/dimension.helpers.js +7 -9
  152. package/dist/collection/store/dimension/dimension.helpers.js.map +1 -1
  153. package/dist/collection/store/dimension/dimension.recalculate.plugin.js +35 -0
  154. package/dist/collection/store/dimension/dimension.recalculate.plugin.js.map +1 -0
  155. package/dist/collection/store/dimension/dimension.store.js +47 -67
  156. package/dist/collection/store/dimension/dimension.store.js.map +1 -1
  157. package/dist/collection/store/dimension/dimension.trim.plugin.js +61 -0
  158. package/dist/collection/store/dimension/dimension.trim.plugin.js.map +1 -0
  159. package/dist/collection/store/selection/selection.store.js +1 -1
  160. package/dist/collection/store/selection/selection.store.js.map +1 -1
  161. package/dist/collection/store/vp/viewport.store.js +4 -2
  162. package/dist/collection/store/vp/viewport.store.js.map +1 -1
  163. package/dist/collection/types/events.js +6 -2
  164. package/dist/collection/types/events.js.map +1 -1
  165. package/dist/collection/types/interfaces.js +4 -0
  166. package/dist/collection/types/interfaces.js.map +1 -1
  167. package/dist/collection/types/plugin.types.js.map +1 -1
  168. package/dist/collection/types/selection.js.map +1 -1
  169. package/dist/collection/types/viewport.interfaces.js.map +1 -1
  170. package/dist/collection/utils/column.utils.js +13 -3
  171. package/dist/collection/utils/column.utils.js.map +1 -1
  172. package/dist/esm/app-globals-3a760941.js.map +1 -1
  173. package/dist/esm/{column.drag.plugin-3cc77986.js → column.drag.plugin-50f49fa9.js} +1012 -130
  174. package/dist/esm/column.drag.plugin-50f49fa9.js.map +1 -0
  175. package/dist/esm/column.service-a6a7c415.js +1281 -0
  176. package/dist/esm/column.service-a6a7c415.js.map +1 -0
  177. package/dist/esm/{debounce-72878ced.js → debounce-b3166f78.js} +2 -2
  178. package/dist/esm/{debounce-72878ced.js.map → debounce-b3166f78.js.map} +1 -1
  179. package/dist/esm/{column.service-751345b2.js → dimension.helpers-d0d709c4.js} +450 -1234
  180. package/dist/esm/dimension.helpers-d0d709c4.js.map +1 -0
  181. package/dist/esm/{edit.utils-6fc686b9.js → edit.utils-0ae0db50.js} +2 -2
  182. package/dist/esm/{edit.utils-6fc686b9.js.map → edit.utils-0ae0db50.js.map} +1 -1
  183. package/dist/esm/{header-cell-renderer-32d2ed96.js → header-cell-renderer-36ecbdef.js} +2 -2
  184. package/dist/esm/{header-cell-renderer-32d2ed96.js.map → header-cell-renderer-36ecbdef.js.map} +1 -1
  185. package/dist/esm/index.js +52 -11
  186. package/dist/esm/index.js.map +1 -1
  187. package/dist/esm/{key.utils-17273f42.js → key.utils-7c3218d4.js} +2 -2
  188. package/dist/esm/{key.utils-17273f42.js.map → key.utils-7c3218d4.js.map} +1 -1
  189. package/dist/esm/loader.js +1 -1
  190. package/dist/esm/revo-grid.entry.js +246 -877
  191. package/dist/esm/revo-grid.entry.js.map +1 -1
  192. package/dist/esm/revo-grid.js +1 -1
  193. package/dist/esm/revogr-attribution_7.entry.js +63 -33
  194. package/dist/esm/revogr-attribution_7.entry.js.map +1 -1
  195. package/dist/esm/revogr-clipboard_3.entry.js +7 -6
  196. package/dist/esm/revogr-clipboard_3.entry.js.map +1 -1
  197. package/dist/esm/revogr-data_4.entry.js +60 -50
  198. package/dist/esm/revogr-data_4.entry.js.map +1 -1
  199. package/dist/esm/revogr-filter-panel.entry.js +34 -14
  200. package/dist/esm/revogr-filter-panel.entry.js.map +1 -1
  201. package/dist/esm/{text-editor-901c3eb8.js → text-editor-148a17c1.js} +5 -5
  202. package/dist/esm/text-editor-148a17c1.js.map +1 -0
  203. package/dist/esm/{throttle-138d69c3.js → throttle-394e489c.js} +3 -3
  204. package/dist/esm/{throttle-138d69c3.js.map → throttle-394e489c.js.map} +1 -1
  205. package/dist/esm/{row-header-utils-3dfbb81f.js → viewport.store-afa8c4fe.js} +11 -10
  206. package/dist/esm/viewport.store-afa8c4fe.js.map +1 -0
  207. package/dist/revo-grid/app-globals-3a760941.js +8 -1
  208. package/dist/revo-grid/app-globals-3a760941.js.map +1 -1
  209. package/dist/revo-grid/column.drag.plugin-50f49fa9.js +2541 -0
  210. package/dist/revo-grid/column.drag.plugin-50f49fa9.js.map +1 -0
  211. package/dist/revo-grid/column.service-a6a7c415.js +1281 -0
  212. package/dist/revo-grid/column.service-a6a7c415.js.map +1 -0
  213. package/dist/revo-grid/debounce-b3166f78.js +495 -0
  214. package/dist/revo-grid/debounce-b3166f78.js.map +1 -0
  215. package/dist/revo-grid/dimension.helpers-d0d709c4.js +3611 -0
  216. package/dist/revo-grid/dimension.helpers-d0d709c4.js.map +1 -0
  217. package/dist/revo-grid/edit.utils-0ae0db50.js +17 -0
  218. package/dist/revo-grid/edit.utils-0ae0db50.js.map +1 -0
  219. package/dist/revo-grid/events-cf0893a3.js +38 -1
  220. package/dist/revo-grid/events-cf0893a3.js.map +1 -1
  221. package/dist/revo-grid/filter.button-d40ab17b.js +34 -1
  222. package/dist/revo-grid/filter.button-d40ab17b.js.map +1 -1
  223. package/dist/revo-grid/header-cell-renderer-36ecbdef.js +339 -0
  224. package/dist/revo-grid/header-cell-renderer-36ecbdef.js.map +1 -0
  225. package/dist/revo-grid/index-a61f225b.js +1845 -2
  226. package/dist/revo-grid/index-a61f225b.js.map +1 -1
  227. package/dist/revo-grid/index.esm.js +160 -1
  228. package/dist/revo-grid/index.esm.js.map +1 -1
  229. package/dist/revo-grid/key.utils-7c3218d4.js +89 -0
  230. package/dist/revo-grid/key.utils-7c3218d4.js.map +1 -0
  231. package/dist/revo-grid/resize-observer-83c9e167.js +501 -1
  232. package/dist/revo-grid/resize-observer-83c9e167.js.map +1 -1
  233. package/dist/revo-grid/revo-grid.entry.js +1934 -1
  234. package/dist/revo-grid/revo-grid.entry.js.map +1 -1
  235. package/dist/revo-grid/revo-grid.esm.js +21 -1
  236. package/dist/revo-grid/revo-grid.esm.js.map +1 -1
  237. package/dist/revo-grid/revogr-attribution_7.entry.js +1431 -1
  238. package/dist/revo-grid/revogr-attribution_7.entry.js.map +1 -1
  239. package/dist/revo-grid/revogr-clipboard_3.entry.js +455 -1
  240. package/dist/revo-grid/revogr-clipboard_3.entry.js.map +1 -1
  241. package/dist/revo-grid/revogr-data_4.entry.js +974 -1
  242. package/dist/revo-grid/revogr-data_4.entry.js.map +1 -1
  243. package/dist/revo-grid/revogr-filter-panel.entry.js +340 -1
  244. package/dist/revo-grid/revogr-filter-panel.entry.js.map +1 -1
  245. package/dist/revo-grid/sorting.sign-1a675bf7.js +9 -1
  246. package/dist/revo-grid/sorting.sign-1a675bf7.js.map +1 -1
  247. package/dist/revo-grid/text-editor-148a17c1.js +80 -0
  248. package/dist/revo-grid/text-editor-148a17c1.js.map +1 -0
  249. package/dist/revo-grid/throttle-394e489c.js +230 -0
  250. package/dist/revo-grid/throttle-394e489c.js.map +1 -0
  251. package/dist/revo-grid/viewport.helpers-7e7f9dad.js +48 -1
  252. package/dist/revo-grid/viewport.helpers-7e7f9dad.js.map +1 -1
  253. package/dist/revo-grid/viewport.store-afa8c4fe.js +406 -0
  254. package/dist/revo-grid/viewport.store-afa8c4fe.js.map +1 -0
  255. package/dist/types/components/data/cell-renderer.d.ts +3 -5
  256. package/dist/types/components/data/column.service.d.ts +2 -3
  257. package/dist/types/components/data/revogr-data.d.ts +10 -6
  258. package/dist/types/components/data/row-highlight.plugin.d.ts +1 -1
  259. package/dist/types/components/data/row-renderer.d.ts +1 -1
  260. package/dist/types/components/editors/revogr-edit.d.ts +2 -2
  261. package/dist/types/components/editors/text-editor.d.ts +5 -6
  262. package/dist/types/components/extra/revogr-extra.d.ts +17 -3
  263. package/dist/types/components/header/header-cell-renderer.d.ts +1 -1
  264. package/dist/types/components/header/header-renderer.d.ts +2 -2
  265. package/dist/types/components/header/resizable.element.d.ts +1 -1
  266. package/dist/types/components/header/revogr-header.d.ts +2 -3
  267. package/dist/types/components/order/order-renderer.d.ts +1 -1
  268. package/dist/types/components/order/revogr-order-editor.d.ts +4 -10
  269. package/dist/types/components/overlay/autofill.service.d.ts +2 -2
  270. package/dist/types/components/overlay/keyboard.service.d.ts +1 -1
  271. package/dist/types/components/overlay/revogr-overlay-selection.d.ts +16 -13
  272. package/dist/types/components/overlay/selection.utils.d.ts +1 -1
  273. package/dist/types/components/revoGrid/plugin.service.d.ts +37 -0
  274. package/dist/types/components/revoGrid/revo-grid.d.ts +105 -61
  275. package/dist/types/components/revoGrid/viewport.service.d.ts +2 -2
  276. package/dist/types/components/rowHeaders/row-header-render.d.ts +2 -2
  277. package/dist/types/components/scroll/revogr-viewport-scroll.d.ts +2 -5
  278. package/dist/types/components/scrollable/revogr-scroll-virtual.d.ts +2 -3
  279. package/dist/types/components/selectionFocus/revogr-focus.d.ts +2 -2
  280. package/dist/types/components/selectionTempRange/revogr-temp-range.d.ts +2 -3
  281. package/dist/types/components/vnode/vnode-converter.d.ts +1 -1
  282. package/dist/types/components/vnode/vnode.utils.d.ts +2 -2
  283. package/dist/types/components.d.ts +191 -108
  284. package/dist/types/index.d.ts +1 -1
  285. package/dist/types/plugins/add-rows-on-paste.plugin.d.ts +14 -0
  286. package/dist/types/plugins/base.plugin.d.ts +3 -4
  287. package/dist/types/plugins/column.auto-size.plugin.d.ts +1 -1
  288. package/dist/types/plugins/column.stretch.plugin.d.ts +1 -1
  289. package/dist/types/plugins/export/csv.d.ts +1 -1
  290. package/dist/types/plugins/export/export.plugin.d.ts +4 -3
  291. package/dist/types/plugins/filter/filter.panel.d.ts +2 -2
  292. package/dist/types/plugins/filter/filter.plugin.d.ts +25 -7
  293. package/dist/types/plugins/filter/filter.types.d.ts +32 -10
  294. package/dist/types/plugins/groupingColumn/columnGroupsRenderer.d.ts +2 -2
  295. package/dist/types/plugins/groupingColumn/headerGroupRenderer.d.ts +3 -4
  296. package/dist/types/plugins/groupingRow/grouping.const.d.ts +3 -1
  297. package/dist/types/plugins/groupingRow/grouping.row.plugin.d.ts +15 -10
  298. package/dist/types/plugins/groupingRow/grouping.row.types.d.ts +38 -4
  299. package/dist/types/plugins/groupingRow/grouping.service.d.ts +9 -12
  300. package/dist/types/plugins/index.d.ts +2 -0
  301. package/dist/types/plugins/moveColumn/column.drag.plugin.d.ts +2 -2
  302. package/dist/types/plugins/sorting/sorting.func.d.ts +3 -0
  303. package/dist/types/plugins/sorting/sorting.plugin.d.ts +14 -13
  304. package/dist/types/plugins/sorting/sorting.types.d.ts +13 -0
  305. package/dist/types/services/column.data.provider.d.ts +5 -2
  306. package/dist/types/services/data.provider.d.ts +3 -1
  307. package/dist/types/services/dimension.provider.d.ts +9 -4
  308. package/dist/types/services/selection.store.connector.d.ts +4 -4
  309. package/dist/types/store/dataSource/data.proxy.d.ts +7 -9
  310. package/dist/types/store/dataSource/data.store.d.ts +2 -3
  311. package/dist/types/store/dataSource/trimmed.plugin.d.ts +1 -1
  312. package/dist/types/store/dimension/dimension.helpers.d.ts +1 -4
  313. package/dist/types/store/dimension/dimension.recalculate.plugin.d.ts +9 -0
  314. package/dist/types/store/dimension/dimension.store.d.ts +3 -2
  315. package/dist/types/store/dimension/dimension.trim.plugin.d.ts +13 -0
  316. package/dist/types/store/selection/selection.store.d.ts +1 -1
  317. package/dist/types/store/vp/viewport.store.d.ts +1 -1
  318. package/dist/types/types/events.d.ts +1 -1
  319. package/dist/types/types/interfaces.d.ts +36 -12
  320. package/dist/types/types/plugin.types.d.ts +17 -1
  321. package/dist/types/types/selection.d.ts +23 -17
  322. package/dist/types/types/viewport.interfaces.d.ts +1 -3
  323. package/dist/types/utils/column.utils.d.ts +1 -0
  324. package/hydrate/index.js +2490 -2135
  325. package/hydrate/index.mjs +2490 -2135
  326. package/package.json +20 -19
  327. package/readme.md +15 -17
  328. package/standalone/column.service.js +192 -160
  329. package/standalone/column.service.js.map +1 -1
  330. package/standalone/data.store.js +36 -25
  331. package/standalone/data.store.js.map +1 -1
  332. package/standalone/dimension.helpers.js +8 -10
  333. package/standalone/dimension.helpers.js.map +1 -1
  334. package/standalone/index.js +46 -6
  335. package/standalone/index.js.map +1 -1
  336. package/standalone/revo-grid.js +1275 -1022
  337. package/standalone/revo-grid.js.map +1 -1
  338. package/standalone/revogr-attribution2.js +1 -1
  339. package/standalone/revogr-attribution2.js.map +1 -1
  340. package/standalone/revogr-data2.js +26 -22
  341. package/standalone/revogr-data2.js.map +1 -1
  342. package/standalone/revogr-edit2.js +3 -3
  343. package/standalone/revogr-edit2.js.map +1 -1
  344. package/standalone/revogr-extra2.js +25 -4
  345. package/standalone/revogr-extra2.js.map +1 -1
  346. package/standalone/revogr-filter-panel.js +34 -14
  347. package/standalone/revogr-filter-panel.js.map +1 -1
  348. package/standalone/revogr-focus2.js +2 -1
  349. package/standalone/revogr-focus2.js.map +1 -1
  350. package/standalone/revogr-header2.js +6 -5
  351. package/standalone/revogr-header2.js.map +1 -1
  352. package/standalone/revogr-order-editor2.js +3 -0
  353. package/standalone/revogr-order-editor2.js.map +1 -1
  354. package/standalone/revogr-overlay-selection2.js +29 -17
  355. package/standalone/revogr-overlay-selection2.js.map +1 -1
  356. package/standalone/revogr-row-headers2.js +12 -9
  357. package/standalone/revogr-row-headers2.js.map +1 -1
  358. package/standalone/revogr-scroll-virtual2.js +6 -4
  359. package/standalone/revogr-scroll-virtual2.js.map +1 -1
  360. package/standalone/revogr-temp-range2.js +1 -1
  361. package/standalone/revogr-temp-range2.js.map +1 -1
  362. package/standalone/revogr-viewport-scroll2.js +27 -21
  363. package/standalone/revogr-viewport-scroll2.js.map +1 -1
  364. package/standalone/selection.utils.js +1 -0
  365. package/standalone/selection.utils.js.map +1 -1
  366. package/standalone/vnode-converter.js +1 -1
  367. package/standalone/vnode-converter.js.map +1 -1
  368. package/dist/cjs/column.drag.plugin-fcd892ec.js.map +0 -1
  369. package/dist/cjs/column.service-26c61ed6.js.map +0 -1
  370. package/dist/cjs/index-3ab26ab9.js +0 -513
  371. package/dist/cjs/index-3ab26ab9.js.map +0 -1
  372. package/dist/cjs/key.utils-f49d7bee.js +0 -101
  373. package/dist/cjs/key.utils-f49d7bee.js.map +0 -1
  374. package/dist/cjs/row-header-utils-c37f76e4.js.map +0 -1
  375. package/dist/cjs/text-editor-b756d6b3.js.map +0 -1
  376. package/dist/esm/column.drag.plugin-3cc77986.js.map +0 -1
  377. package/dist/esm/column.service-751345b2.js.map +0 -1
  378. package/dist/esm/index-1dcad6ef.js +0 -476
  379. package/dist/esm/index-1dcad6ef.js.map +0 -1
  380. package/dist/esm/row-header-utils-3dfbb81f.js.map +0 -1
  381. package/dist/esm/text-editor-901c3eb8.js.map +0 -1
  382. package/dist/revo-grid/column.drag.plugin-3cc77986.js +0 -5
  383. package/dist/revo-grid/column.drag.plugin-3cc77986.js.map +0 -1
  384. package/dist/revo-grid/column.service-751345b2.js +0 -5
  385. package/dist/revo-grid/column.service-751345b2.js.map +0 -1
  386. package/dist/revo-grid/debounce-72878ced.js +0 -5
  387. package/dist/revo-grid/debounce-72878ced.js.map +0 -1
  388. package/dist/revo-grid/edit.utils-6fc686b9.js +0 -5
  389. package/dist/revo-grid/edit.utils-6fc686b9.js.map +0 -1
  390. package/dist/revo-grid/header-cell-renderer-32d2ed96.js +0 -5
  391. package/dist/revo-grid/header-cell-renderer-32d2ed96.js.map +0 -1
  392. package/dist/revo-grid/index-1dcad6ef.js +0 -5
  393. package/dist/revo-grid/index-1dcad6ef.js.map +0 -1
  394. package/dist/revo-grid/key.utils-17273f42.js +0 -5
  395. package/dist/revo-grid/key.utils-17273f42.js.map +0 -1
  396. package/dist/revo-grid/row-header-utils-3dfbb81f.js +0 -5
  397. package/dist/revo-grid/row-header-utils-3dfbb81f.js.map +0 -1
  398. package/dist/revo-grid/text-editor-901c3eb8.js +0 -5
  399. package/dist/revo-grid/text-editor-901c3eb8.js.map +0 -1
  400. package/dist/revo-grid/throttle-138d69c3.js +0 -5
  401. package/dist/revo-grid/throttle-138d69c3.js.map +0 -1
  402. package/standalone/identity.js +0 -26
  403. package/standalone/identity.js.map +0 -1
@@ -9,49 +9,51 @@ import DimensionProvider from "../../services/dimension.provider";
9
9
  import ViewportProvider from "../../services/viewport.provider";
10
10
  import ThemeService from "../../themeManager/theme.service";
11
11
  import { timeout } from "../../utils";
12
- import AutoSize from "../../plugins/column.auto-size.plugin";
12
+ import { AutoSizeColumnPlugin, } from "../../plugins/column.auto-size.plugin";
13
13
  import { FilterPlugin, } from "../../plugins/filter/filter.plugin";
14
- import SortingPlugin from "../../plugins/sorting/sorting.plugin";
15
- import ExportFilePlugin from "../../plugins/export/export.plugin";
16
- import GroupingRowPlugin from "../../plugins/groupingRow/grouping.row.plugin";
14
+ import { SortingPlugin } from "../../plugins/sorting/sorting.plugin";
15
+ import { ExportFilePlugin } from "../../plugins/export/export.plugin";
16
+ import { GroupingRowPlugin } from "../../plugins/groupingRow/grouping.row.plugin";
17
17
  import ViewportService from "./viewport.service";
18
18
  import { DATA_SLOT, HEADER_SLOT } from "./viewport.helpers";
19
19
  import GridScrollingService from "./viewport.scrolling.service";
20
- import SelectionStoreConnector from "../../services/selection.store.connector";
20
+ import { SelectionStoreConnector } from "../../services/selection.store.connector";
21
21
  import OrderRenderer from "../order/order-renderer";
22
- import StretchColumn, { isStretchPlugin, } from "../../plugins/column.stretch.plugin";
22
+ import { StretchColumn, isStretchPlugin, } from "../../plugins/column.stretch.plugin";
23
23
  import { rowDefinitionByType, rowDefinitionRemoveByType } from "./grid.helpers";
24
- import ColumnPlugin from "../../plugins/moveColumn/column.drag.plugin";
24
+ import { ColumnMovePlugin } from "../../plugins/moveColumn/column.drag.plugin";
25
25
  import { getPropertyFromEvent } from "../../utils/events";
26
26
  import { isMobileDevice } from "../../utils/mobile";
27
27
  import { getColumnByProp, getColumns } from "../../utils/column.utils";
28
28
  import { WCAGPlugin } from "../../plugins/wcag";
29
+ import { PluginService } from "./plugin.service";
29
30
  /**
30
31
  * Revogrid - High-performance, customizable grid library for managing large datasets.
32
+ * ### Events guide
33
+ *
34
+ * For a comprehensive events guide, check the [Events API Page](./events.md).
35
+ * All events propagate to the root level of the grid. [Dependency tree](#Dependencies).
36
+ *
37
+ * ### Type definitions
31
38
  *
32
- * :::tip
33
39
  * Read [type definition file](https://github.com/revolist/revogrid/blob/master/src/interfaces.d.ts) for the full interface information.
40
+ *
34
41
  * All complex property types such as `ColumnRegular`, `ColumnProp`, `ColumnDataSchemaModel` can be found there.
35
- * :::
36
42
  *
37
- * :::tip
38
- * For a comprehensive events guide, check the [dependency tree](#Dependencies).
39
- * All events propagate to the root level of the grid.
40
- * :::
43
+ * ### HTMLRevoGridElement
41
44
  *
42
45
  * @slot data-{column-type}-{row-type}. @example data-rgCol-rgRow - main data slot. Applies extra elements in <revogr-data />.
43
46
  * @slot focus-{column-type}-{row-type}. @example focus-rgCol-rgRow - focus layer for main data. Applies extra elements in <revogr-focus />.
44
- */
47
+ * @slot viewport - Viewport slot.
48
+ * @slot header - Header slot.
49
+ * @slot footer - Footer slot.
50
+ */
45
51
  export class RevoGridComponent {
46
52
  constructor() {
47
53
  this.extraElements = [];
54
+ this.pluginService = new PluginService();
48
55
  this.viewport = null;
49
56
  this.isInited = false;
50
- /**
51
- * Plugins
52
- * Define plugins collection
53
- */
54
- this.internalPlugins = [];
55
57
  this.rowHeaders = undefined;
56
58
  this.frameSize = 1;
57
59
  this.rowSize = 0;
@@ -74,6 +76,7 @@ export class RevoGridComponent {
74
76
  this.rowClass = '';
75
77
  this.autoSizeColumn = false;
76
78
  this.filter = false;
79
+ this.sorting = undefined;
77
80
  this.focusTemplate = undefined;
78
81
  this.canMoveColumns = false;
79
82
  this.trimmedRows = {};
@@ -101,15 +104,31 @@ export class RevoGridComponent {
101
104
  this.dataProvider.refresh(type);
102
105
  }
103
106
  /**
104
- * Sets data at specified cell.
107
+ * Refreshes data at specified cell.
105
108
  * Useful for performance optimization.
106
109
  * No viewport update will be triggered.
110
+ *
111
+ * @example
112
+ * const grid = document.querySelector('revo-grid');
113
+ * grid.setDataAt({ row: 0, col: 0, val: 'test' }); // refresh
107
114
  */
108
- async setDataAt(data) {
109
- const dataElement = this.element.querySelector(`revogr-data[type="${data.rowType}"][col-type="${data.colType}"]`);
115
+ async setDataAt({ row, col, colType = 'rgCol', rowType = 'rgRow', val, skipDataUpdate = false }) {
116
+ var _a;
117
+ if (this.dataProvider && this.columnProvider && !skipDataUpdate) {
118
+ const columnProp = (_a = this.columnProvider.getColumn(col, colType)) === null || _a === void 0 ? void 0 : _a.prop;
119
+ if (typeof columnProp !== 'undefined') {
120
+ this.dataProvider.setCellData({
121
+ type: rowType,
122
+ rowIndex: row,
123
+ prop: columnProp,
124
+ val,
125
+ }, false);
126
+ }
127
+ }
128
+ const dataElement = this.element.querySelector(`revogr-data[type="${rowType}"][col-type="${colType}"]`);
110
129
  return dataElement === null || dataElement === void 0 ? void 0 : dataElement.updateCell({
111
- row: data.row,
112
- col: data.col,
130
+ row,
131
+ col,
113
132
  });
114
133
  }
115
134
  /**
@@ -277,19 +296,19 @@ export class RevoGridComponent {
277
296
  * Clear current grid focus. Grid has no longer focus on it.
278
297
  */
279
298
  async clearFocus() {
280
- var _a;
299
+ var _a, _b;
281
300
  const focused = (_a = this.viewport) === null || _a === void 0 ? void 0 : _a.getFocused();
282
301
  const event = this.beforefocuslost.emit(focused);
283
302
  if (event.defaultPrevented) {
284
303
  return;
285
304
  }
286
- this.selectionStoreConnector.clearAll();
305
+ (_b = this.selectionStoreConnector) === null || _b === void 0 ? void 0 : _b.clearAll();
287
306
  }
288
307
  /**
289
308
  * Get all active plugins instances
290
309
  */
291
310
  async getPlugins() {
292
- return [...this.internalPlugins];
311
+ return this.pluginService.get();
293
312
  }
294
313
  /**
295
314
  * Get the currently focused cell.
@@ -316,6 +335,15 @@ export class RevoGridComponent {
316
335
  var _a, _b;
317
336
  return (_b = (_a = this.viewport) === null || _a === void 0 ? void 0 : _a.getSelectedRange()) !== null && _b !== void 0 ? _b : null;
318
337
  }
338
+ /**
339
+ * Refresh extra elements. Triggers re-rendering of extra elements and functions.
340
+ * Part of extraElements and registerVNode methods.
341
+ * Useful for plugins.
342
+ */
343
+ async refreshExtraElements() {
344
+ var _a;
345
+ (_a = this.extraService) === null || _a === void 0 ? void 0 : _a.refresh();
346
+ }
319
347
  mousedownHandle(event) {
320
348
  const screenX = getPropertyFromEvent(event, 'screenX');
321
349
  const screenY = getPropertyFromEvent(event, 'screenY');
@@ -444,7 +472,7 @@ export class RevoGridComponent {
444
472
  // Column format change will trigger column structure update
445
473
  this.columnChanged(this.columns);
446
474
  }
447
- columnChanged(newVal = []) {
475
+ columnChanged(newVal = [], _prevVal = undefined, __watchName = 'columns', init = false) {
448
476
  if (!this.dimensionProvider || !this.columnProvider) {
449
477
  return;
450
478
  }
@@ -453,7 +481,7 @@ export class RevoGridComponent {
453
481
  if (beforeSetEvent.defaultPrevented) {
454
482
  return;
455
483
  }
456
- this.dimensionProvider.applyNewColumns(beforeSetEvent.detail.columns, this.disableVirtualX);
484
+ this.dimensionProvider.applyNewColumns(beforeSetEvent.detail.columns, this.disableVirtualX, init);
457
485
  const beforeApplyEvent = this.beforecolumnapplied.emit(columnGather);
458
486
  if (beforeApplyEvent.defaultPrevented) {
459
487
  return;
@@ -509,7 +537,9 @@ export class RevoGridComponent {
509
537
  break;
510
538
  case 'source':
511
539
  type = 'rgRow';
512
- /** applied for source only for cross compatability between plugins */
540
+ /**
541
+ * Applied for source only for cross compatability between plugins
542
+ */
513
543
  const beforesourceset = this.beforesourceset.emit({
514
544
  type,
515
545
  source: newVal,
@@ -523,7 +553,9 @@ export class RevoGridComponent {
523
553
  });
524
554
  const newSource = [...beforesourceset.detail.source];
525
555
  this.dataProvider.setData(newSource, type, this.disableVirtualY);
526
- /** applied for source only for cross compatability between plugins */
556
+ /**
557
+ * Applied for source only for cross compatability between plugins
558
+ */
527
559
  if (watchName === 'source') {
528
560
  this.aftersourceset.emit({
529
561
  type,
@@ -582,15 +614,8 @@ export class RevoGridComponent {
582
614
  * Grouping
583
615
  */
584
616
  groupingChanged(newVal = {}) {
585
- let grPlugin;
586
- for (let p of this.internalPlugins) {
587
- const isGrouping = p;
588
- if (!!isGrouping.setGrouping) {
589
- grPlugin = isGrouping;
590
- break;
591
- }
592
- }
593
- grPlugin === null || grPlugin === void 0 ? void 0 : grPlugin.setGrouping(newVal || {});
617
+ var _a;
618
+ (_a = this.pluginService.getByClass(GroupingRowPlugin)) === null || _a === void 0 ? void 0 : _a.setGrouping(newVal || {});
594
619
  }
595
620
  /**
596
621
  * Stretch Plugin Apply
@@ -602,30 +627,29 @@ export class RevoGridComponent {
602
627
  if (isStretch === 'false') {
603
628
  isStretch = false;
604
629
  }
605
- let stretch = this.internalPlugins.filter(p => isStretchPlugin(p))[0];
630
+ const pluginData = this.getPluginData();
631
+ if (!pluginData) {
632
+ return;
633
+ }
634
+ const stretch = this.pluginService.getByClass(StretchColumn);
606
635
  if ((typeof isStretch === 'boolean' && isStretch) || isStretch === 'true') {
607
636
  if (!stretch) {
608
- const pluginData = {
609
- data: this.dataProvider,
610
- column: this.columnProvider,
611
- dimension: this.dimensionProvider,
612
- viewport: this.viewportProvider,
613
- selection: this.selectionStoreConnector,
614
- };
615
- this.internalPlugins.push(new StretchColumn(this.element, pluginData));
637
+ this.pluginService.add(new StretchColumn(this.element, pluginData));
616
638
  }
617
639
  else if (isStretchPlugin(stretch)) {
618
640
  stretch.applyStretch(this.columnProvider.getRawColumns());
619
641
  }
620
642
  }
621
643
  else if (stretch) {
622
- const index = this.internalPlugins.indexOf(stretch);
623
- this.internalPlugins.splice(index, 1);
644
+ this.pluginService.remove(stretch);
624
645
  }
625
646
  }
626
647
  applyFilter(cfg) {
627
648
  this.filterconfigchanged.emit(cfg);
628
649
  }
650
+ applySorting(cfg) {
651
+ this.sortingconfigchanged.emit(cfg);
652
+ }
629
653
  rowHeadersChange(rowHeaders) {
630
654
  this.rowheaderschanged.emit(rowHeaders);
631
655
  }
@@ -633,26 +657,16 @@ export class RevoGridComponent {
633
657
  * Register external VNodes
634
658
  */
635
659
  registerOutsideVNodes(elements = []) {
636
- this.extraElements = [...this.extraElements, ...elements];
660
+ this.extraElements = elements;
637
661
  }
638
662
  additionalDataChanged(data) {
639
663
  this.additionaldatachanged.emit(data);
640
664
  }
641
- pluginsChanged(plugins = [], _prevPlugins) {
642
- // pass data provider to plugins
643
- const pluginData = this.getPluginData();
644
- if (!pluginData) {
645
- return;
646
- }
647
- // todo: remove old plugins if any was removed based on _prevPlugins
648
- // register user plugins
649
- plugins === null || plugins === void 0 ? void 0 : plugins.forEach(userPlugin => {
650
- const existingPlugin = this.internalPlugins.find(createdPlugin => createdPlugin instanceof userPlugin);
651
- if (existingPlugin) {
652
- return;
653
- }
654
- this.internalPlugins.push(new userPlugin(this.element, pluginData));
655
- });
665
+ /**
666
+ * User can add plugins via plugins property
667
+ */
668
+ pluginsChanged(plugins = [], prevPlugins) {
669
+ this.pluginService.addUserPluginsAndCreate(this.element, plugins, prevPlugins, this.getPluginData());
656
670
  }
657
671
  // #endregion
658
672
  // #region Plugins
@@ -664,35 +678,39 @@ export class RevoGridComponent {
664
678
  if (!pluginData) {
665
679
  return;
666
680
  }
681
+ // register system plugins
682
+ this.setCorePlugins(pluginData);
683
+ // register user plugins
684
+ this.pluginsChanged(this.plugins);
685
+ }
686
+ setCorePlugins(pluginData) {
667
687
  if (this.accessible) {
668
- this.internalPlugins.push(new WCAGPlugin(this.element, pluginData));
688
+ this.pluginService.add(new WCAGPlugin(this.element, pluginData));
669
689
  }
670
690
  // register auto size plugin
671
691
  if (this.autoSizeColumn) {
672
- this.internalPlugins.push(new AutoSize(this.element, pluginData, typeof this.autoSizeColumn === 'object'
692
+ this.pluginService.add(new AutoSizeColumnPlugin(this.element, pluginData, typeof this.autoSizeColumn === 'object'
673
693
  ? this.autoSizeColumn
674
694
  : undefined));
675
695
  }
676
696
  // register filter plugin
677
697
  if (this.filter) {
678
- this.internalPlugins.push(new FilterPlugin(this.element, pluginData, typeof this.filter === 'object' ? this.filter : undefined));
698
+ this.pluginService.add(new FilterPlugin(this.element, pluginData, typeof this.filter === 'object' ? this.filter : undefined));
679
699
  }
680
700
  // register export plugin
681
701
  if (this.exporting) {
682
- this.internalPlugins.push(new ExportFilePlugin(this.element, pluginData));
702
+ this.pluginService.add(new ExportFilePlugin(this.element, pluginData));
683
703
  }
684
704
  // register sorting plugin
685
- this.internalPlugins.push(new SortingPlugin(this.element, pluginData));
705
+ this.pluginService.add(new SortingPlugin(this.element, pluginData));
686
706
  // register grouping plugin
687
- this.internalPlugins.push(new GroupingRowPlugin(this.element, pluginData));
707
+ this.pluginService.add(new GroupingRowPlugin(this.element, pluginData));
688
708
  if (this.canMoveColumns) {
689
- this.internalPlugins.push(new ColumnPlugin(this.element, pluginData));
709
+ this.pluginService.add(new ColumnMovePlugin(this.element, pluginData));
690
710
  }
691
- // register user plugins
692
- this.pluginsChanged(this.plugins);
693
711
  }
694
712
  getPluginData() {
695
- if (!this.dimensionProvider || !this.dataProvider || !this.columnProvider || !this.viewportProvider) {
713
+ if (!this.dimensionProvider || !this.dataProvider || !this.columnProvider || !this.viewportProvider || !this.selectionStoreConnector) {
696
714
  return;
697
715
  }
698
716
  // pass data provider to plugins
@@ -702,12 +720,12 @@ export class RevoGridComponent {
702
720
  dimension: this.dimensionProvider,
703
721
  viewport: this.viewportProvider,
704
722
  selection: this.selectionStoreConnector,
723
+ plugins: this.pluginService,
705
724
  };
706
725
  return pluginData;
707
726
  }
708
727
  removePlugins() {
709
- this.internalPlugins.forEach(p => { var _a; return (_a = p.destroy) === null || _a === void 0 ? void 0 : _a.call(p); });
710
- this.internalPlugins = [];
728
+ this.pluginService.destroy();
711
729
  }
712
730
  // #endregion
713
731
  // if reconnect to dom we need to set up plugins
@@ -715,6 +733,7 @@ export class RevoGridComponent {
715
733
  if (this.isInited) {
716
734
  this.setPlugins();
717
735
  }
736
+ this.created.emit();
718
737
  }
719
738
  /**
720
739
  * Called once just after the component is first connected to the DOM.
@@ -742,7 +761,7 @@ export class RevoGridComponent {
742
761
  // set data
743
762
  this.applyStretch(this.stretch);
744
763
  this.themeChanged(this.theme, undefined, undefined, true);
745
- this.columnChanged(this.columns);
764
+ this.columnChanged(this.columns, undefined, undefined, true);
746
765
  this.dataSourceChanged(this.source, undefined, 'source');
747
766
  this.dataSourceChanged(this.pinnedTopSource, undefined, 'pinnedTopSource');
748
767
  this.dataSourceChanged(this.pinnedBottomSource, undefined, 'pinnedBottomSource');
@@ -750,7 +769,10 @@ export class RevoGridComponent {
750
769
  this.trimmedRowsChanged(this.trimmedRows);
751
770
  }
752
771
  this.rowDefChanged(this.rowDefinitions);
753
- this.groupingChanged(this.grouping);
772
+ // init grouping
773
+ if (this.grouping && Object.keys(this.grouping).length > 0) {
774
+ this.groupingChanged(this.grouping);
775
+ }
754
776
  // init scrolling service
755
777
  this.scrollingService = new GridScrollingService((e) => {
756
778
  var _a;
@@ -775,7 +797,7 @@ export class RevoGridComponent {
775
797
  this.aftergridrender.emit();
776
798
  }
777
799
  render() {
778
- if (!this.dimensionProvider || !this.dataProvider || !this.columnProvider || !this.viewportProvider) {
800
+ if (!this.dimensionProvider || !this.dataProvider || !this.columnProvider || !this.viewportProvider || !this.selectionStoreConnector) {
779
801
  return;
780
802
  }
781
803
  const contentHeight = this.dimensionProvider.stores['rgRow'].store.get('realSize');
@@ -818,12 +840,13 @@ export class RevoGridComponent {
818
840
  // Render viewport data (vertical sections)
819
841
  view.dataPorts.forEach(data => {
820
842
  const key = `${data.type}_${view.type}`;
821
- const dataView = (h("revogr-overlay-selection", Object.assign({}, data, { isMobileDevice: isMobile, selectionStore: data.segmentSelectionStore, onSelectall: () => this.selectionStoreConnector.selectAll(), editors: this.editors, readonly: this.readonly, range: this.range, useClipboard: this.useClipboard, applyChangesOnClose: this.applyOnClose, additionalData: this.additionalData, slot: data.slot, onBeforenextvpfocus: (e) => this.selectionStoreConnector.beforeNextFocusCell(e.detail), onCanceledit: () => this.selectionStoreConnector.setEdit(false), onSetedit: ({ detail }) => {
843
+ const dataView = (h("revogr-overlay-selection", Object.assign({}, data, { isMobileDevice: isMobile, onSelectall: () => { var _a; return (_a = this.selectionStoreConnector) === null || _a === void 0 ? void 0 : _a.selectAll(); }, editors: this.editors, readonly: this.readonly, range: this.range, useClipboard: this.useClipboard, applyChangesOnClose: this.applyOnClose, additionalData: this.additionalData, slot: data.slot, onBeforenextvpfocus: (e) => { var _a; return (_a = this.selectionStoreConnector) === null || _a === void 0 ? void 0 : _a.beforeNextFocusCell(e.detail); }, onCanceledit: () => { var _a; return (_a = this.selectionStoreConnector) === null || _a === void 0 ? void 0 : _a.setEdit(false); }, onSetedit: ({ detail }) => {
844
+ var _a;
822
845
  const event = this.beforeeditstart.emit(detail);
823
846
  if (!event.defaultPrevented) {
824
- this.selectionStoreConnector.setEdit(detail.val);
847
+ (_a = this.selectionStoreConnector) === null || _a === void 0 ? void 0 : _a.setEdit(detail.val);
825
848
  }
826
- } }), h("revogr-data", Object.assign({}, data, { colType: view.type, key: key, readonly: this.readonly, range: this.range, rowClass: this.rowClass, rowSelectionStore: data.rowSelectionStore, additionalData: this.additionalData, jobsBeforeRender: this.jobsBeforeRender, slot: DATA_SLOT }), h("slot", { name: `data-${view.type}-${data.type}` })), h("revogr-temp-range", { selectionStore: data.segmentSelectionStore, dimensionRow: data.dimensionRow, dimensionCol: data.dimensionCol }), h("revogr-focus", { colData: data.colData, dataStore: data.dataStore, focusTemplate: this.focusTemplate, rowType: data.type, colType: view.type, selectionStore: data.segmentSelectionStore, dimensionRow: data.dimensionRow, dimensionCol: data.dimensionCol }, h("slot", { name: `focus-${view.type}-${data.type}` }))));
849
+ } }), h("revogr-data", Object.assign({}, data, { colType: view.type, key: key, readonly: this.readonly, range: this.range, rowClass: this.rowClass, rowSelectionStore: data.rowSelectionStore, additionalData: this.additionalData, jobsBeforeRender: this.jobsBeforeRender, slot: DATA_SLOT }), h("slot", { name: `data-${view.type}-${data.type}` })), h("revogr-temp-range", { selectionStore: data.selectionStore, dimensionRow: data.dimensionRow, dimensionCol: data.dimensionCol }), h("revogr-focus", { colData: data.colData, dataStore: data.dataStore, focusTemplate: this.focusTemplate, rowType: data.type, colType: view.type, selectionStore: data.selectionStore, dimensionRow: data.dimensionRow, dimensionCol: data.dimensionCol }, h("slot", { name: `focus-${view.type}-${data.type}` }))));
827
850
  dataViews.push(dataView);
828
851
  });
829
852
  // Add viewport scroll in the end
@@ -835,15 +858,16 @@ export class RevoGridComponent {
835
858
  const typeCol = 'rgCol';
836
859
  const viewports = this.viewportProvider.stores;
837
860
  const dimensions = this.dimensionProvider.stores;
838
- return (h(Host, null, this.hideAttribution ? null : (h("revogr-attribution", { class: "attribution" })), h("div", { class: "main-viewport", onClick: (e) => {
861
+ return (h(Host, null, this.hideAttribution ? null : (h("revogr-attribution", { class: "attribution" })), h("slot", { name: "header" }), h("div", { class: "main-viewport", onClick: (e) => {
839
862
  var _a;
840
863
  if (e.currentTarget === e.target) {
841
864
  (_a = this.viewport) === null || _a === void 0 ? void 0 : _a.clearEdit();
842
865
  }
843
- } }, h("div", { class: "viewports" }, h("slot", { name: "viewport" }), viewportSections, h("revogr-scroll-virtual", { 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, { ref: e => (this.orderService = e) }))), h("revogr-scroll-virtual", { 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) }), h("revogr-extra", { nodes: this.extraElements })));
866
+ } }, h("div", { class: "viewports" }, h("slot", { name: "viewport" }), viewportSections, h("revogr-scroll-virtual", { 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, { ref: e => (this.orderService = e) }))), h("revogr-scroll-virtual", { 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) }), h("revogr-extra", { ref: el => (this.extraService = el), nodes: this.extraElements }), h("slot", { name: "footer" })));
844
867
  }
845
868
  disconnectedCallback() {
846
- // Remove all plugins, to avoid memory leaks and unexpected behaviour when the component is removed
869
+ // Remove all plugins, to avoid memory leaks
870
+ // and unexpected behaviour when the component is removed
847
871
  this.removePlugins();
848
872
  }
849
873
  static get is() { return "revo-grid"; }
@@ -1199,7 +1223,7 @@ export class RevoGridComponent {
1199
1223
  "optional": false,
1200
1224
  "docs": {
1201
1225
  "tags": [],
1202
- "text": "Custom grid plugins.\nHas to be predefined during first grid init.\nEvery plugin should be inherited from BasePlugin."
1226
+ "text": "Custom grid plugins. Can be added or removed at runtime.\nEvery plugin should be inherited from BasePlugin class.\n\nFor more details check [Plugin guide](https://rv-grid.com/guide/plugin/)"
1203
1227
  },
1204
1228
  "defaultValue": "[]"
1205
1229
  },
@@ -1296,7 +1320,7 @@ export class RevoGridComponent {
1296
1320
  "mutable": false,
1297
1321
  "complexType": {
1298
1322
  "original": "boolean | ColumnFilterConfig",
1299
- "resolved": "boolean | { collection?: FilterCollection | undefined; include?: string[] | undefined; customFilters?: Record<string, CustomFilter<any, LogicFunctionExtraParam>> | undefined; filterProp?: string | undefined; localization?: FilterLocalization | undefined; multiFilterItems?: MultiFilterItem | undefined; disableDynamicFiltering?: boolean | undefined; }",
1323
+ "resolved": "boolean | { collection?: Record<ColumnProp, FilterCollectionItem> | undefined; include?: string[] | undefined; customFilters?: Record<string, CustomFilter<any, LogicFunctionExtraParam>> | undefined; filterProp?: string | undefined; localization?: FilterLocalization | undefined; multiFilterItems?: MultiFilterItem | undefined; disableDynamicFiltering?: boolean | undefined; }",
1300
1324
  "references": {
1301
1325
  "ColumnFilterConfig": {
1302
1326
  "location": "import",
@@ -1315,6 +1339,27 @@ export class RevoGridComponent {
1315
1339
  "reflect": false,
1316
1340
  "defaultValue": "false"
1317
1341
  },
1342
+ "sorting": {
1343
+ "type": "unknown",
1344
+ "mutable": false,
1345
+ "complexType": {
1346
+ "original": "SortingConfig",
1347
+ "resolved": "undefined | { columns?: { prop: ColumnProp; order: Order; cellCompare?: CellCompareFunc | undefined; }[] | undefined; }",
1348
+ "references": {
1349
+ "SortingConfig": {
1350
+ "location": "import",
1351
+ "path": "../../plugins",
1352
+ "id": "src/plugins/index.ts::SortingConfig"
1353
+ }
1354
+ }
1355
+ },
1356
+ "required": false,
1357
+ "optional": true,
1358
+ "docs": {
1359
+ "tags": [],
1360
+ "text": "Alternative way to set sorting.\n`{columns: [{prop: 'name', order: 'asc'}]}`"
1361
+ }
1362
+ },
1318
1363
  "focusTemplate": {
1319
1364
  "type": "unknown",
1320
1365
  "mutable": false,
@@ -1398,7 +1443,7 @@ export class RevoGridComponent {
1398
1443
  "mutable": false,
1399
1444
  "complexType": {
1400
1445
  "original": "GroupingOptions",
1401
- "resolved": "{ props?: ColumnProp[] | undefined; expandedAll?: boolean | undefined; groupLabelTemplate?: GroupLabelTemplateFunc | undefined; }",
1446
+ "resolved": "{ props?: ColumnProp[] | undefined; prevExpanded?: Record<string, boolean> | undefined; expandedAll?: boolean | undefined; preserveGroupingOnUpdate?: boolean | undefined; groupLabelTemplate?: GroupLabelTemplateFunc | undefined; } & ExpandedOptions",
1402
1447
  "references": {
1403
1448
  "GroupingOptions": {
1404
1449
  "location": "import",
@@ -1529,13 +1574,18 @@ export class RevoGridComponent {
1529
1574
  "type": "unknown",
1530
1575
  "mutable": false,
1531
1576
  "complexType": {
1532
- "original": "(VNode | (() => VNode))[]",
1533
- "resolved": "(VNode | (() => VNode))[]",
1577
+ "original": "(\n | VNode\n | ((c: ExtraNodeFuncConfig) => VNode)\n )[]",
1578
+ "resolved": "(VNode | ((c: ExtraNodeFuncConfig) => VNode))[]",
1534
1579
  "references": {
1535
1580
  "VNode": {
1536
1581
  "location": "import",
1537
1582
  "path": "@stencil/core",
1538
1583
  "id": "node_modules::VNode"
1584
+ },
1585
+ "ExtraNodeFuncConfig": {
1586
+ "location": "import",
1587
+ "path": "@type",
1588
+ "id": "src/types/index.ts::ExtraNodeFuncConfig"
1539
1589
  }
1540
1590
  }
1541
1591
  },
@@ -1543,7 +1593,7 @@ export class RevoGridComponent {
1543
1593
  "optional": false,
1544
1594
  "docs": {
1545
1595
  "tags": [],
1546
- "text": "Register new virtual node inside of grid.\nUsed for additional items creation such as plugin elements.\nShould be set before grid render inside of plugins."
1596
+ "text": "Register new virtual node inside of grid.\nUsed for additional items creation such as plugin elements.\nShould be set before grid render inside of plugins.\nCan return VNode result of h() function or a function that returns VNode.\nFunction can be used for performance improvement and additional renders."
1547
1597
  },
1548
1598
  "defaultValue": "[]"
1549
1599
  },
@@ -1600,11 +1650,11 @@ export class RevoGridComponent {
1600
1650
  "composed": true,
1601
1651
  "docs": {
1602
1652
  "tags": [],
1603
- "text": "This event is triggered before the data is edited.\nTo prevent the default behavior of editing data and use your own implementation, call `e.preventDefault()`.\nTo override the edit result with your own value, set the `e.val` property to your desired value."
1653
+ "text": "Before the data is edited.\nTo prevent the default behavior of editing data and use your own implementation, call `e.preventDefault()`.\nTo override the edit result with your own value, set the `e.val` property to your desired value."
1604
1654
  },
1605
1655
  "complexType": {
1606
1656
  "original": "BeforeSaveDataDetails",
1607
- "resolved": "{ prop: ColumnProp; model: DataType; val?: string | undefined; rowIndex: number; colIndex: number; colType: DimensionCols; type: DimensionRows; }",
1657
+ "resolved": "BeforeSaveDataDetails",
1608
1658
  "references": {
1609
1659
  "BeforeSaveDataDetails": {
1610
1660
  "location": "import",
@@ -1621,11 +1671,11 @@ export class RevoGridComponent {
1621
1671
  "composed": true,
1622
1672
  "docs": {
1623
1673
  "tags": [],
1624
- "text": "This event is triggered before applying range data, specifically when a range selection occurs.\nTo customize the data and prevent the default edit data from being set, you can call `e.preventDefault()`."
1674
+ "text": "Before applying range data, specifically when a range selection occurs.\nTo customize the data and prevent the default edit data from being set, you can call `e.preventDefault()`."
1625
1675
  },
1626
1676
  "complexType": {
1627
1677
  "original": "BeforeRangeSaveDataDetails",
1628
- "resolved": "{ data: DataLookup; models: Partial<DataLookup>; type: DimensionRows; }",
1678
+ "resolved": "{ data: DataLookup; models: Partial<DataLookup>; type: DimensionRows; newRange: RangeArea | null; oldRange: RangeArea | null; }",
1629
1679
  "references": {
1630
1680
  "BeforeRangeSaveDataDetails": {
1631
1681
  "location": "import",
@@ -1642,11 +1692,11 @@ export class RevoGridComponent {
1642
1692
  "composed": true,
1643
1693
  "docs": {
1644
1694
  "tags": [],
1645
- "text": "Triggered after data applied or range changed."
1695
+ "text": "After data applied or range changed."
1646
1696
  },
1647
1697
  "complexType": {
1648
1698
  "original": "AfterEditEvent",
1649
- "resolved": "{ data: DataLookup; models: Partial<DataLookup>; type: DimensionRows; } | { prop: ColumnProp; model: DataType; val?: string | undefined; rowIndex: number; colIndex: number; colType: DimensionCols; type: DimensionRows; }",
1699
+ "resolved": "BeforeSaveDataDetails | { data: DataLookup; models: Partial<DataLookup>; type: DimensionRows; newRange: RangeArea | null; oldRange: RangeArea | null; }",
1650
1700
  "references": {
1651
1701
  "AfterEditEvent": {
1652
1702
  "location": "import",
@@ -1663,11 +1713,11 @@ export class RevoGridComponent {
1663
1713
  "composed": true,
1664
1714
  "docs": {
1665
1715
  "tags": [],
1666
- "text": "This event is triggered before autofill is applied.\nTo prevent the default behavior of applying the edit data, you can call `e.preventDefault()`."
1716
+ "text": "Before autofill is applied.\nTo prevent the default behavior of applying the edit data, you can call `e.preventDefault()`."
1667
1717
  },
1668
1718
  "complexType": {
1669
1719
  "original": "ChangedRange",
1670
- "resolved": "{ type: DimensionRows; colType: DimensionCols; newRange: RangeArea; oldRange: RangeArea; mapping: OldNewRangeMapping; newData: { [key: number]: DataType; }; }",
1720
+ "resolved": "{ type: DimensionRows; colType: DimensionCols; newRange: RangeArea; oldRange: RangeArea; mapping: OldNewRangeMapping; newData: { [newRowIndex: number]: DataType; }; }",
1671
1721
  "references": {
1672
1722
  "ChangedRange": {
1673
1723
  "location": "import",
@@ -1684,11 +1734,11 @@ export class RevoGridComponent {
1684
1734
  "composed": true,
1685
1735
  "docs": {
1686
1736
  "tags": [],
1687
- "text": "Triggered before range applied.\nUse e.preventDefault() to prevent range."
1737
+ "text": "Before autofill is applied. Runs before beforeautofill event.\nUse e.preventDefault() to prevent range."
1688
1738
  },
1689
1739
  "complexType": {
1690
1740
  "original": "ChangedRange",
1691
- "resolved": "{ type: DimensionRows; colType: DimensionCols; newRange: RangeArea; oldRange: RangeArea; mapping: OldNewRangeMapping; newData: { [key: number]: DataType; }; }",
1741
+ "resolved": "{ type: DimensionRows; colType: DimensionCols; newRange: RangeArea; oldRange: RangeArea; mapping: OldNewRangeMapping; newData: { [newRowIndex: number]: DataType; }; }",
1692
1742
  "references": {
1693
1743
  "ChangedRange": {
1694
1744
  "location": "import",
@@ -1705,7 +1755,7 @@ export class RevoGridComponent {
1705
1755
  "composed": true,
1706
1756
  "docs": {
1707
1757
  "tags": [],
1708
- "text": "Triggered after focus render finished.\nCan be used to access a focus element through `event.target`.\nThis is just a duplicate of `afterfocus` from `revogr-focus.tsx`."
1758
+ "text": "After focus render finished.\nCan be used to access a focus element through `event.target`.\nThis is just a duplicate of `afterfocus` from `revogr-focus.tsx`."
1709
1759
  },
1710
1760
  "complexType": {
1711
1761
  "original": "FocusAfterRenderEvent",
@@ -1726,7 +1776,7 @@ export class RevoGridComponent {
1726
1776
  "composed": true,
1727
1777
  "docs": {
1728
1778
  "tags": [],
1729
- "text": "This event is triggered before the order of `rgRow` is applied.\nTo prevent the default behavior of changing the order of `rgRow`, you can call `e.preventDefault()`."
1779
+ "text": "Before the order of `rgRow` is applied.\nTo prevent the default behavior of changing the order of `rgRow`, you can call `e.preventDefault()`."
1730
1780
  },
1731
1781
  "complexType": {
1732
1782
  "original": "{ from: number; to: number }",
@@ -1734,14 +1784,14 @@ export class RevoGridComponent {
1734
1784
  "references": {}
1735
1785
  }
1736
1786
  }, {
1737
- "method": "beforesortingapply",
1738
- "name": "beforesortingapply",
1787
+ "method": "beforesorting",
1788
+ "name": "beforesorting",
1739
1789
  "bubbles": true,
1740
1790
  "cancelable": true,
1741
1791
  "composed": true,
1742
1792
  "docs": {
1743
1793
  "tags": [],
1744
- "text": "Triggered by sorting.plugin.ts\nBefore sorting apply.\nUse e.preventDefault() to prevent sorting data change."
1794
+ "text": "By `sorting.plugin.ts`\n<br>Triggered immediately after header click.\n<br>First in sorting event sequence. Ff this event stops no other event called.\n<br>Use `e.preventDefault()` to prevent sorting."
1745
1795
  },
1746
1796
  "complexType": {
1747
1797
  "original": "{\n column: ColumnRegular;\n order: 'desc' | 'asc';\n additive: boolean;\n }",
@@ -1755,14 +1805,40 @@ export class RevoGridComponent {
1755
1805
  }
1756
1806
  }
1757
1807
  }, {
1758
- "method": "beforesorting",
1759
- "name": "beforesorting",
1808
+ "method": "beforesourcesortingapply",
1809
+ "name": "beforesourcesortingapply",
1760
1810
  "bubbles": true,
1761
1811
  "cancelable": true,
1762
1812
  "composed": true,
1763
1813
  "docs": {
1764
1814
  "tags": [],
1765
- "text": "Triggered by sorting.plugin.ts\nBefore sorting event.\nInitial sorting triggered, if this event stops no other event called.\nUse e.preventDefault() to prevent sorting."
1815
+ "text": "By `sorting.plugin.ts`\n<br>Same as `beforesorting` but triggered after `beforeanysource` (when source is changed).\n<br>Use `e.preventDefault()` to prevent sorting data change."
1816
+ },
1817
+ "complexType": {
1818
+ "original": "{\n type: DimensionRows;\n sorting?: SortingOrder;\n }",
1819
+ "resolved": "{ type: DimensionRows; sorting?: SortingOrder | undefined; }",
1820
+ "references": {
1821
+ "DimensionRows": {
1822
+ "location": "import",
1823
+ "path": "@type",
1824
+ "id": "src/types/index.ts::DimensionRows"
1825
+ },
1826
+ "SortingOrder": {
1827
+ "location": "import",
1828
+ "path": "../../plugins",
1829
+ "id": "src/plugins/index.ts::SortingOrder"
1830
+ }
1831
+ }
1832
+ }
1833
+ }, {
1834
+ "method": "beforesortingapply",
1835
+ "name": "beforesortingapply",
1836
+ "bubbles": true,
1837
+ "cancelable": true,
1838
+ "composed": true,
1839
+ "docs": {
1840
+ "tags": [],
1841
+ "text": "By `sorting.plugin.ts`\n<br> After `beforesorting`\n<br>Triggered after column data updated with new sorting order.\n<br>Use `e.preventDefault()` to prevent sorting data change."
1766
1842
  },
1767
1843
  "complexType": {
1768
1844
  "original": "{\n column: ColumnRegular;\n order: 'desc' | 'asc';\n additive: boolean;\n }",
@@ -1786,13 +1862,13 @@ export class RevoGridComponent {
1786
1862
  "text": "This event is triggered when the row order change is started.\nTo prevent the default behavior of changing the row order, you can call `e.preventDefault()`.\nTo change the item name at the start of the row order change, you can set `e.text` to the desired new name."
1787
1863
  },
1788
1864
  "complexType": {
1789
- "original": "{\n pos: PositionItem;\n text: string;\n }",
1790
- "resolved": "{ pos: PositionItem; text: string; }",
1865
+ "original": "RowDragStartDetails",
1866
+ "resolved": "{ cell: Cell; text: string; pos: PositionItem; event: MouseEvent; rowType: DimensionRows; model: any; }",
1791
1867
  "references": {
1792
- "PositionItem": {
1868
+ "RowDragStartDetails": {
1793
1869
  "location": "import",
1794
1870
  "path": "@type",
1795
- "id": "src/types/index.ts::PositionItem"
1871
+ "id": "src/types/index.ts::RowDragStartDetails"
1796
1872
  }
1797
1873
  }
1798
1874
  }
@@ -1825,11 +1901,11 @@ export class RevoGridComponent {
1825
1901
  "composed": true,
1826
1902
  "docs": {
1827
1903
  "tags": [],
1828
- "text": "This event is triggered before the cell focus is changed.\nTo prevent the default behavior of changing the cell focus, you can call `e.preventDefault()`."
1904
+ "text": "Before the cell focus is changed.\nTo prevent the default behavior of changing the cell focus, you can call `e.preventDefault()`."
1829
1905
  },
1830
1906
  "complexType": {
1831
1907
  "original": "BeforeSaveDataDetails",
1832
- "resolved": "{ prop: ColumnProp; model: DataType; val?: string | undefined; rowIndex: number; colIndex: number; colType: DimensionCols; type: DimensionRows; }",
1908
+ "resolved": "BeforeSaveDataDetails",
1833
1909
  "references": {
1834
1910
  "BeforeSaveDataDetails": {
1835
1911
  "location": "import",
@@ -1846,7 +1922,7 @@ export class RevoGridComponent {
1846
1922
  "composed": true,
1847
1923
  "docs": {
1848
1924
  "tags": [],
1849
- "text": "This event is triggered before the grid focus is lost.\nTo prevent the default behavior of changing the cell focus, you can call `e.preventDefault()`."
1925
+ "text": "Before the grid focus is lost.\nTo prevent the default behavior of changing the cell focus, you can call `e.preventDefault()`."
1850
1926
  },
1851
1927
  "complexType": {
1852
1928
  "original": "FocusedData | null",
@@ -2046,13 +2122,22 @@ export class RevoGridComponent {
2046
2122
  "text": "Emitted before applying a filter to the data source.\nUse e.preventDefault() to prevent cell focus change.\nModify if you need to change filters."
2047
2123
  },
2048
2124
  "complexType": {
2049
- "original": "{ collection: FilterCollection }",
2050
- "resolved": "{ collection: FilterCollection; }",
2125
+ "original": "{ collection: Record<ColumnProp, FilterCollectionItem> }",
2126
+ "resolved": "{ collection: Record<ColumnProp, FilterCollectionItem>; }",
2051
2127
  "references": {
2052
- "FilterCollection": {
2128
+ "Record": {
2129
+ "location": "global",
2130
+ "id": "global::Record"
2131
+ },
2132
+ "ColumnProp": {
2133
+ "location": "import",
2134
+ "path": "@type",
2135
+ "id": "src/types/index.ts::ColumnProp"
2136
+ },
2137
+ "FilterCollectionItem": {
2053
2138
  "location": "import",
2054
2139
  "path": "../../plugins/filter/filter.types",
2055
- "id": "src/plugins/filter/filter.types.ts::FilterCollection"
2140
+ "id": "src/plugins/filter/filter.types.ts::FilterCollectionItem"
2056
2141
  }
2057
2142
  }
2058
2143
  }
@@ -2067,17 +2152,22 @@ export class RevoGridComponent {
2067
2152
  "text": "Emitted before applying a filter to the data source.\nUse e.preventDefault() to prevent the default behavior of trimming values and applying the filter.\nModify the `collection` property if you want to change the filters.\nModify the `itemsToFilter` property if you want to filter the indexes for trimming."
2068
2153
  },
2069
2154
  "complexType": {
2070
- "original": "{\n collection: FilterCollection;\n itemsToFilter: Record<number, boolean>;\n }",
2071
- "resolved": "{ collection: FilterCollection; itemsToFilter: Record<number, boolean>; }",
2155
+ "original": "{\n collection: Record<ColumnProp, FilterCollectionItem>;\n itemsToFilter: Record<number, boolean>;\n }",
2156
+ "resolved": "{ collection: Record<ColumnProp, FilterCollectionItem>; itemsToFilter: Record<number, boolean>; }",
2072
2157
  "references": {
2073
- "FilterCollection": {
2074
- "location": "import",
2075
- "path": "../../plugins/filter/filter.types",
2076
- "id": "src/plugins/filter/filter.types.ts::FilterCollection"
2077
- },
2078
2158
  "Record": {
2079
2159
  "location": "global",
2080
2160
  "id": "global::Record"
2161
+ },
2162
+ "ColumnProp": {
2163
+ "location": "import",
2164
+ "path": "@type",
2165
+ "id": "src/types/index.ts::ColumnProp"
2166
+ },
2167
+ "FilterCollectionItem": {
2168
+ "location": "import",
2169
+ "path": "../../plugins/filter/filter.types",
2170
+ "id": "src/plugins/filter/filter.types.ts::FilterCollectionItem"
2081
2171
  }
2082
2172
  }
2083
2173
  }
@@ -2170,7 +2260,7 @@ export class RevoGridComponent {
2170
2260
  },
2171
2261
  "complexType": {
2172
2262
  "original": "BeforeSaveDataDetails",
2173
- "resolved": "{ prop: ColumnProp; model: DataType; val?: string | undefined; rowIndex: number; colIndex: number; colType: DimensionCols; type: DimensionRows; }",
2263
+ "resolved": "BeforeSaveDataDetails",
2174
2264
  "references": {
2175
2265
  "BeforeSaveDataDetails": {
2176
2266
  "location": "import",
@@ -2230,6 +2320,27 @@ export class RevoGridComponent {
2230
2320
  "resolved": "any",
2231
2321
  "references": {}
2232
2322
  }
2323
+ }, {
2324
+ "method": "sortingconfigchanged",
2325
+ "name": "sortingconfigchanged",
2326
+ "bubbles": true,
2327
+ "cancelable": true,
2328
+ "composed": true,
2329
+ "docs": {
2330
+ "tags": [],
2331
+ "text": "Emitted when the sorting configuration is changed"
2332
+ },
2333
+ "complexType": {
2334
+ "original": "SortingConfig",
2335
+ "resolved": "{ columns?: { prop: ColumnProp; order: Order; cellCompare?: CellCompareFunc | undefined; }[] | undefined; }",
2336
+ "references": {
2337
+ "SortingConfig": {
2338
+ "location": "import",
2339
+ "path": "../../plugins",
2340
+ "id": "src/plugins/index.ts::SortingConfig"
2341
+ }
2342
+ }
2343
+ }
2233
2344
  }, {
2234
2345
  "method": "rowheaderschanged",
2235
2346
  "name": "rowheaderschanged",
@@ -2326,6 +2437,21 @@ export class RevoGridComponent {
2326
2437
  }
2327
2438
  }
2328
2439
  }
2440
+ }, {
2441
+ "method": "created",
2442
+ "name": "created",
2443
+ "bubbles": true,
2444
+ "cancelable": true,
2445
+ "composed": true,
2446
+ "docs": {
2447
+ "tags": [],
2448
+ "text": "Emmited after grid created"
2449
+ },
2450
+ "complexType": {
2451
+ "original": "any",
2452
+ "resolved": "any",
2453
+ "references": {}
2454
+ }
2329
2455
  }];
2330
2456
  }
2331
2457
  static get methods() {
@@ -2358,10 +2484,10 @@ export class RevoGridComponent {
2358
2484
  },
2359
2485
  "setDataAt": {
2360
2486
  "complexType": {
2361
- "signature": "(data: { row: number; col: number; } & AllDimensionType) => Promise<void | undefined>",
2487
+ "signature": "({ row, col, colType, rowType, val, skipDataUpdate }: { row: number; col: number; val?: any; skipDataUpdate?: boolean; } & AllDimensionType) => Promise<void | undefined>",
2362
2488
  "parameters": [{
2363
- "name": "data",
2364
- "type": "{ row: number; col: number; } & AllDimensionType",
2489
+ "name": "__0",
2490
+ "type": "{ row: number; col: number; val?: any; skipDataUpdate?: boolean | undefined; } & AllDimensionType",
2365
2491
  "docs": ""
2366
2492
  }],
2367
2493
  "references": {
@@ -2382,8 +2508,11 @@ export class RevoGridComponent {
2382
2508
  "return": "Promise<void | undefined>"
2383
2509
  },
2384
2510
  "docs": {
2385
- "text": "Sets data at specified cell.\nUseful for performance optimization.\nNo viewport update will be triggered.",
2386
- "tags": []
2511
+ "text": "Refreshes data at specified cell.\nUseful for performance optimization.\nNo viewport update will be triggered.",
2512
+ "tags": [{
2513
+ "name": "example",
2514
+ "text": "const grid = document.querySelector('revo-grid');\ngrid.setDataAt({ row: 0, col: 0, val: 'test' }); // refresh"
2515
+ }]
2387
2516
  }
2388
2517
  },
2389
2518
  "scrollToRow": {
@@ -2713,8 +2842,8 @@ export class RevoGridComponent {
2713
2842
  },
2714
2843
  "Observable": {
2715
2844
  "location": "import",
2716
- "path": "../../utils/store.utils",
2717
- "id": "src/utils/store.utils.ts::Observable"
2845
+ "path": "../../utils",
2846
+ "id": "src/utils/index.ts::Observable"
2718
2847
  },
2719
2848
  "DSourceState": {
2720
2849
  "location": "import",
@@ -2757,8 +2886,8 @@ export class RevoGridComponent {
2757
2886
  },
2758
2887
  "Observable": {
2759
2888
  "location": "import",
2760
- "path": "../../utils/store.utils",
2761
- "id": "src/utils/store.utils.ts::Observable"
2889
+ "path": "../../utils",
2890
+ "id": "src/utils/index.ts::Observable"
2762
2891
  },
2763
2892
  "DSourceState": {
2764
2893
  "location": "import",
@@ -2979,6 +3108,23 @@ export class RevoGridComponent {
2979
3108
  "text": "Get the currently selected Range.",
2980
3109
  "tags": []
2981
3110
  }
3111
+ },
3112
+ "refreshExtraElements": {
3113
+ "complexType": {
3114
+ "signature": "() => Promise<void>",
3115
+ "parameters": [],
3116
+ "references": {
3117
+ "Promise": {
3118
+ "location": "global",
3119
+ "id": "global::Promise"
3120
+ }
3121
+ },
3122
+ "return": "Promise<void>"
3123
+ },
3124
+ "docs": {
3125
+ "text": "Refresh extra elements. Triggers re-rendering of extra elements and functions.\nPart of extraElements and registerVNode methods.\nUseful for plugins.",
3126
+ "tags": []
3127
+ }
2982
3128
  }
2983
3129
  };
2984
3130
  }
@@ -3026,6 +3172,9 @@ export class RevoGridComponent {
3026
3172
  }, {
3027
3173
  "propName": "filter",
3028
3174
  "methodName": "applyFilter"
3175
+ }, {
3176
+ "propName": "sorting",
3177
+ "methodName": "applySorting"
3029
3178
  }, {
3030
3179
  "propName": "rowHeaders",
3031
3180
  "methodName": "rowHeadersChange"