@revolist/revogrid 4.15.2 → 4.15.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 (316) hide show
  1. package/dist/cjs/{app-globals-f72a6199.js → app-globals-Dyhp_4xt.js} +3 -2
  2. package/dist/cjs/app-globals-Dyhp_4xt.js.map +1 -0
  3. package/dist/cjs/{cell-renderer-e5481ec8.js → cell-renderer-TbPNpr1V.js} +5 -4
  4. package/dist/cjs/cell-renderer-TbPNpr1V.js.map +1 -0
  5. package/dist/cjs/{column.drag.plugin-f3c54b57.js → column.drag.plugin-6uJDpdhd.js} +15 -20
  6. package/dist/cjs/column.drag.plugin-6uJDpdhd.js.map +1 -0
  7. package/dist/cjs/{column.service-e6411bc8.js → column.service-tkBPqZbF.js} +46 -15
  8. package/dist/cjs/column.service-tkBPqZbF.js.map +1 -0
  9. package/dist/cjs/{debounce-ec7a04b4.js → debounce-CcpHiH2p.js} +13 -20
  10. package/dist/cjs/debounce-CcpHiH2p.js.map +1 -0
  11. package/dist/cjs/{dimension.helpers-29797371.js → dimension.helpers-B22YFI1t.js} +73 -158
  12. package/dist/cjs/dimension.helpers-B22YFI1t.js.map +1 -0
  13. package/dist/cjs/{edit.utils-2142d37d.js → edit.utils-C4mlXiHS.js} +3 -2
  14. package/dist/cjs/edit.utils-C4mlXiHS.js.map +1 -0
  15. package/dist/cjs/{events-af8f6914.js → events-DeLDyZlb.js} +2 -1
  16. package/dist/cjs/events-DeLDyZlb.js.map +1 -0
  17. package/dist/cjs/{filter.button-2708e602.js → filter.button-0z5oxlOa.js} +3 -2
  18. package/dist/cjs/filter.button-0z5oxlOa.js.map +1 -0
  19. package/dist/cjs/{header-cell-renderer-56658ed7.js → header-cell-renderer-BsXDj6T-.js} +8 -9
  20. package/dist/cjs/header-cell-renderer-BsXDj6T-.js.map +1 -0
  21. package/dist/cjs/{index-8006d065.js → index-BkwGxxDX.js} +1403 -1119
  22. package/dist/cjs/index-BkwGxxDX.js.map +1 -0
  23. package/dist/cjs/index.cjs.js +16 -21
  24. package/dist/cjs/index.cjs.js.map +1 -1
  25. package/dist/cjs/loader.cjs.js +4 -5
  26. package/dist/cjs/loader.cjs.js.map +1 -1
  27. package/dist/cjs/{resize-observer-d009a220.js → resize-observer-BCzJvzIA.js} +2 -1
  28. package/dist/cjs/resize-observer-BCzJvzIA.js.map +1 -0
  29. package/dist/cjs/revo-grid.cjs.entry.js +134 -25
  30. package/dist/cjs/revo-grid.cjs.entry.js.map +1 -1
  31. package/dist/cjs/revo-grid.cjs.js +8 -7
  32. package/dist/cjs/revo-grid.cjs.js.map +1 -1
  33. package/dist/cjs/revo-grid.entry.cjs.js.map +1 -0
  34. package/dist/cjs/revogr-attribution.revogr-extra.revogr-focus.revogr-overlay-selection.revogr-row-headers.revogr-scroll-virtual.revogr-temp-range.entry.cjs.js.map +1 -0
  35. package/dist/cjs/revogr-attribution_7.cjs.entry.js +38 -56
  36. package/dist/cjs/revogr-attribution_7.cjs.entry.js.map +1 -1
  37. package/dist/cjs/revogr-clipboard.revogr-edit.revogr-order-editor.entry.cjs.js.map +1 -0
  38. package/dist/cjs/revogr-clipboard_3.cjs.entry.js +11 -20
  39. package/dist/cjs/revogr-clipboard_3.cjs.entry.js.map +1 -1
  40. package/dist/cjs/revogr-data.revogr-header.revogr-viewport-scroll.vnode-html.entry.cjs.js.map +1 -0
  41. package/dist/cjs/revogr-data_4.cjs.entry.js +38 -54
  42. package/dist/cjs/revogr-data_4.cjs.entry.js.map +1 -1
  43. package/dist/cjs/revogr-filter-panel.cjs.entry.js +14 -12
  44. package/dist/cjs/revogr-filter-panel.cjs.entry.js.map +1 -1
  45. package/dist/cjs/revogr-filter-panel.entry.cjs.js.map +1 -0
  46. package/dist/cjs/{text-editor-aa356695.js → text-editor-CKL2sOoS.js} +4 -3
  47. package/dist/cjs/text-editor-CKL2sOoS.js.map +1 -0
  48. package/dist/cjs/{throttle-c7ae5154.js → throttle-DH3Y55Tf.js} +4 -3
  49. package/dist/cjs/throttle-DH3Y55Tf.js.map +1 -0
  50. package/dist/cjs/{viewport.helpers-e59a544e.js → viewport.helpers-DWmWzj7C.js} +2 -1
  51. package/dist/cjs/viewport.helpers-DWmWzj7C.js.map +1 -0
  52. package/dist/cjs/{viewport.store-7f0d0f80.js → viewport.store-CTVsdNW0.js} +3 -2
  53. package/dist/cjs/viewport.store-CTVsdNW0.js.map +1 -0
  54. package/dist/collection/collection-manifest.json +1 -1
  55. package/dist/collection/components/clipboard/revogr-clipboard.js +1 -4
  56. package/dist/collection/components/clipboard/revogr-clipboard.js.map +1 -1
  57. package/dist/collection/components/data/revogr-data.js +19 -20
  58. package/dist/collection/components/data/revogr-data.js.map +1 -1
  59. package/dist/collection/components/editors/revogr-edit.js +9 -7
  60. package/dist/collection/components/editors/revogr-edit.js.map +1 -1
  61. package/dist/collection/components/extra/revogr-extra.js +7 -0
  62. package/dist/collection/components/extra/revogr-extra.js.map +1 -1
  63. package/dist/collection/components/header/revogr-header.js +18 -16
  64. package/dist/collection/components/header/revogr-header.js.map +1 -1
  65. package/dist/collection/components/order/revogr-order-editor.js +5 -6
  66. package/dist/collection/components/order/revogr-order-editor.js.map +1 -1
  67. package/dist/collection/components/overlay/revogr-overlay-selection.js +18 -21
  68. package/dist/collection/components/overlay/revogr-overlay-selection.js.map +1 -1
  69. package/dist/collection/components/revoGrid/revo-grid.js +156 -30
  70. package/dist/collection/components/revoGrid/revo-grid.js.map +1 -1
  71. package/dist/collection/components/rowHeaders/revogr-row-headers.js +13 -11
  72. package/dist/collection/components/rowHeaders/revogr-row-headers.js.map +1 -1
  73. package/dist/collection/components/scroll/revogr-viewport-scroll.js +10 -6
  74. package/dist/collection/components/scroll/revogr-viewport-scroll.js.map +1 -1
  75. package/dist/collection/components/scrollable/revogr-scroll-virtual.js +8 -8
  76. package/dist/collection/components/scrollable/revogr-scroll-virtual.js.map +1 -1
  77. package/dist/collection/components/selectionFocus/revogr-focus.js +12 -10
  78. package/dist/collection/components/selectionFocus/revogr-focus.js.map +1 -1
  79. package/dist/collection/components/selectionTempRange/revogr-temp-range.js +3 -3
  80. package/dist/collection/components/selectionTempRange/revogr-temp-range.js.map +1 -1
  81. package/dist/collection/components/vnode/vnode-converter.js +2 -1
  82. package/dist/collection/components/vnode/vnode-converter.js.map +1 -1
  83. package/dist/collection/plugins/filter/filter.panel.js +14 -7
  84. package/dist/collection/plugins/filter/filter.panel.js.map +1 -1
  85. package/dist/collection/plugins/wcag/index.js +3 -3
  86. package/dist/collection/plugins/wcag/index.js.map +1 -1
  87. package/dist/esm/{app-globals-6b929fd8.js → app-globals-CkPSYtJ_.js} +3 -2
  88. package/dist/esm/app-globals-CkPSYtJ_.js.map +1 -0
  89. package/dist/{revo-grid/cell-renderer-852ac653.js → esm/cell-renderer-Dtpwnxt0.js} +5 -4
  90. package/dist/esm/cell-renderer-Dtpwnxt0.js.map +1 -0
  91. package/dist/esm/{column.drag.plugin-c6b89504.js → column.drag.plugin-BZ32BSNS.js} +12 -17
  92. package/dist/esm/column.drag.plugin-BZ32BSNS.js.map +1 -0
  93. package/dist/esm/{column.service-e3c41fb8.js → column.service-Do0vf1Cg.js} +43 -13
  94. package/dist/esm/column.service-Do0vf1Cg.js.map +1 -0
  95. package/dist/esm/{debounce-b3166f78.js → debounce-BfO9dz9v.js} +11 -18
  96. package/dist/esm/debounce-BfO9dz9v.js.map +1 -0
  97. package/dist/{revo-grid/dimension.helpers-87e12689.js → esm/dimension.helpers-8nBiaJKx.js} +70 -154
  98. package/dist/esm/dimension.helpers-8nBiaJKx.js.map +1 -0
  99. package/dist/esm/{edit.utils-512f86c9.js → edit.utils-t1e44_Iw.js} +3 -2
  100. package/dist/esm/edit.utils-t1e44_Iw.js.map +1 -0
  101. package/dist/esm/{events-cf0893a3.js → events-BvSmBueA.js} +2 -1
  102. package/dist/esm/events-BvSmBueA.js.map +1 -0
  103. package/dist/{revo-grid/filter.button-84396156.js → esm/filter.button-CTclut8G.js} +3 -2
  104. package/dist/esm/filter.button-CTclut8G.js.map +1 -0
  105. package/dist/{revo-grid/header-cell-renderer-c2acd090.js → esm/header-cell-renderer-CF2Sx-Ys.js} +8 -9
  106. package/dist/esm/header-cell-renderer-CF2Sx-Ys.js.map +1 -0
  107. package/dist/esm/{index-f6fae858.js → index-CHLNwl4l.js} +1400 -1096
  108. package/dist/esm/index-CHLNwl4l.js.map +1 -0
  109. package/dist/esm/index.js +14 -13
  110. package/dist/esm/index.js.map +1 -1
  111. package/dist/esm/loader.js +5 -4
  112. package/dist/esm/loader.js.map +1 -1
  113. package/dist/esm/{resize-observer-83c9e167.js → resize-observer-Ccj7Fd8V.js} +2 -1
  114. package/dist/esm/resize-observer-Ccj7Fd8V.js.map +1 -0
  115. package/dist/esm/revo-grid.entry.js +134 -23
  116. package/dist/esm/revo-grid.entry.js.map +1 -1
  117. package/dist/esm/revo-grid.js +7 -5
  118. package/dist/esm/revo-grid.js.map +1 -1
  119. package/dist/esm/revogr-attribution.revogr-extra.revogr-focus.revogr-overlay-selection.revogr-row-headers.revogr-scroll-virtual.revogr-temp-range.entry.js.map +1 -0
  120. package/dist/esm/revogr-attribution_7.entry.js +38 -54
  121. package/dist/esm/revogr-attribution_7.entry.js.map +1 -1
  122. package/dist/esm/revogr-clipboard.revogr-edit.revogr-order-editor.entry.js.map +1 -0
  123. package/dist/esm/revogr-clipboard_3.entry.js +11 -18
  124. package/dist/esm/revogr-clipboard_3.entry.js.map +1 -1
  125. package/dist/esm/revogr-data.revogr-header.revogr-viewport-scroll.vnode-html.entry.js.map +1 -0
  126. package/dist/esm/revogr-data_4.entry.js +38 -52
  127. package/dist/esm/revogr-data_4.entry.js.map +1 -1
  128. package/dist/esm/revogr-filter-panel.entry.js +14 -10
  129. package/dist/esm/revogr-filter-panel.entry.js.map +1 -1
  130. package/dist/{revo-grid/text-editor-4224a2f6.js → esm/text-editor-CaPIpNpL.js} +4 -3
  131. package/dist/esm/text-editor-CaPIpNpL.js.map +1 -0
  132. package/dist/{revo-grid/throttle-7c83ca69.js → esm/throttle-DXN-EdTN.js} +4 -3
  133. package/dist/esm/throttle-DXN-EdTN.js.map +1 -0
  134. package/dist/{revo-grid/viewport.helpers-7e7f9dad.js → esm/viewport.helpers-B3EYGhqf.js} +2 -1
  135. package/dist/esm/viewport.helpers-B3EYGhqf.js.map +1 -0
  136. package/dist/{revo-grid/viewport.store-84060ef5.js → esm/viewport.store-BM58GIue.js} +3 -2
  137. package/dist/esm/viewport.store-BM58GIue.js.map +1 -0
  138. package/dist/revo-grid/{app-globals-6b929fd8.js → app-globals-CkPSYtJ_.js} +3 -2
  139. package/dist/revo-grid/app-globals-CkPSYtJ_.js.map +1 -0
  140. package/dist/{esm/cell-renderer-852ac653.js → revo-grid/cell-renderer-Dtpwnxt0.js} +5 -4
  141. package/dist/revo-grid/cell-renderer-Dtpwnxt0.js.map +1 -0
  142. package/dist/revo-grid/{column.drag.plugin-c6b89504.js → column.drag.plugin-BZ32BSNS.js} +12 -17
  143. package/dist/revo-grid/column.drag.plugin-BZ32BSNS.js.map +1 -0
  144. package/dist/revo-grid/{column.service-e3c41fb8.js → column.service-Do0vf1Cg.js} +43 -13
  145. package/dist/revo-grid/column.service-Do0vf1Cg.js.map +1 -0
  146. package/dist/revo-grid/{debounce-b3166f78.js → debounce-BfO9dz9v.js} +11 -18
  147. package/dist/revo-grid/debounce-BfO9dz9v.js.map +1 -0
  148. package/dist/{esm/dimension.helpers-87e12689.js → revo-grid/dimension.helpers-8nBiaJKx.js} +70 -154
  149. package/dist/revo-grid/dimension.helpers-8nBiaJKx.js.map +1 -0
  150. package/dist/revo-grid/{edit.utils-512f86c9.js → edit.utils-t1e44_Iw.js} +3 -2
  151. package/dist/revo-grid/edit.utils-t1e44_Iw.js.map +1 -0
  152. package/dist/revo-grid/{events-cf0893a3.js → events-BvSmBueA.js} +2 -1
  153. package/dist/revo-grid/events-BvSmBueA.js.map +1 -0
  154. package/dist/{esm/filter.button-84396156.js → revo-grid/filter.button-CTclut8G.js} +3 -2
  155. package/dist/revo-grid/filter.button-CTclut8G.js.map +1 -0
  156. package/dist/{esm/header-cell-renderer-c2acd090.js → revo-grid/header-cell-renderer-CF2Sx-Ys.js} +8 -9
  157. package/dist/revo-grid/header-cell-renderer-CF2Sx-Ys.js.map +1 -0
  158. package/dist/revo-grid/{index-f6fae858.js → index-CHLNwl4l.js} +1400 -1096
  159. package/dist/revo-grid/index-CHLNwl4l.js.map +1 -0
  160. package/dist/revo-grid/index.esm.js +14 -13
  161. package/dist/revo-grid/index.esm.js.map +1 -1
  162. package/dist/revo-grid/loader.esm.js.map +1 -0
  163. package/dist/revo-grid/{resize-observer-83c9e167.js → resize-observer-Ccj7Fd8V.js} +2 -1
  164. package/dist/revo-grid/resize-observer-Ccj7Fd8V.js.map +1 -0
  165. package/dist/revo-grid/revo-grid.entry.esm.js.map +1 -0
  166. package/dist/revo-grid/revo-grid.entry.js +134 -23
  167. package/dist/revo-grid/revo-grid.entry.js.map +1 -1
  168. package/dist/revo-grid/revo-grid.esm.js +7 -5
  169. package/dist/revo-grid/revo-grid.esm.js.map +1 -1
  170. package/dist/revo-grid/revogr-attribution.revogr-extra.revogr-focus.revogr-overlay-selection.revogr-row-headers.revogr-scroll-virtual.revogr-temp-range.entry.esm.js.map +1 -0
  171. package/dist/revo-grid/revogr-attribution_7.entry.js +38 -54
  172. package/dist/revo-grid/revogr-attribution_7.entry.js.map +1 -1
  173. package/dist/revo-grid/revogr-clipboard.revogr-edit.revogr-order-editor.entry.esm.js.map +1 -0
  174. package/dist/revo-grid/revogr-clipboard_3.entry.js +11 -18
  175. package/dist/revo-grid/revogr-clipboard_3.entry.js.map +1 -1
  176. package/dist/revo-grid/revogr-data.revogr-header.revogr-viewport-scroll.vnode-html.entry.esm.js.map +1 -0
  177. package/dist/revo-grid/revogr-data_4.entry.js +38 -52
  178. package/dist/revo-grid/revogr-data_4.entry.js.map +1 -1
  179. package/dist/revo-grid/revogr-filter-panel.entry.esm.js.map +1 -0
  180. package/dist/revo-grid/revogr-filter-panel.entry.js +14 -10
  181. package/dist/revo-grid/revogr-filter-panel.entry.js.map +1 -1
  182. package/dist/{esm/text-editor-4224a2f6.js → revo-grid/text-editor-CaPIpNpL.js} +4 -3
  183. package/dist/revo-grid/text-editor-CaPIpNpL.js.map +1 -0
  184. package/dist/{esm/throttle-7c83ca69.js → revo-grid/throttle-DXN-EdTN.js} +4 -3
  185. package/dist/revo-grid/throttle-DXN-EdTN.js.map +1 -0
  186. package/dist/{esm/viewport.helpers-7e7f9dad.js → revo-grid/viewport.helpers-B3EYGhqf.js} +2 -1
  187. package/dist/revo-grid/viewport.helpers-B3EYGhqf.js.map +1 -0
  188. package/dist/{esm/viewport.store-84060ef5.js → revo-grid/viewport.store-BM58GIue.js} +3 -2
  189. package/dist/revo-grid/viewport.store-BM58GIue.js.map +1 -0
  190. package/dist/types/stencil-public-runtime.d.ts +3 -0
  191. package/hydrate/index.d.ts +34 -5
  192. package/hydrate/index.js +2629 -2051
  193. package/hydrate/index.mjs +2639 -2061
  194. package/package.json +3 -3
  195. package/standalone/column.service.js +42 -12
  196. package/standalone/column.service.js.map +1 -1
  197. package/standalone/consts.js +1 -0
  198. package/standalone/consts.js.map +1 -1
  199. package/standalone/data.store.js +59 -143
  200. package/standalone/data.store.js.map +1 -1
  201. package/standalone/debounce.js +5 -6
  202. package/standalone/debounce.js.map +1 -1
  203. package/standalone/dimension.helpers.js +10 -9
  204. package/standalone/dimension.helpers.js.map +1 -1
  205. package/standalone/filter.button.js +1 -0
  206. package/standalone/filter.button.js.map +1 -1
  207. package/standalone/index.js +3 -2
  208. package/standalone/index.js.map +1 -1
  209. package/standalone/index2.js +1 -0
  210. package/standalone/index2.js.map +1 -1
  211. package/standalone/local.scroll.timer.js +1 -0
  212. package/standalone/local.scroll.timer.js.map +1 -1
  213. package/standalone/platform.js +3 -2
  214. package/standalone/platform.js.map +1 -1
  215. package/standalone/resize-observer.js +1 -0
  216. package/standalone/resize-observer.js.map +1 -1
  217. package/standalone/revo-grid.js +140 -35
  218. package/standalone/revo-grid.js.map +1 -1
  219. package/standalone/revogr-attribution.js +1 -0
  220. package/standalone/revogr-attribution2.js +1 -0
  221. package/standalone/revogr-attribution2.js.map +1 -1
  222. package/standalone/revogr-clipboard.js +1 -0
  223. package/standalone/revogr-clipboard2.js +1 -1
  224. package/standalone/revogr-clipboard2.js.map +1 -1
  225. package/standalone/revogr-data.js +1 -0
  226. package/standalone/revogr-data2.js +16 -24
  227. package/standalone/revogr-data2.js.map +1 -1
  228. package/standalone/revogr-edit.js +1 -0
  229. package/standalone/revogr-edit2.js +8 -9
  230. package/standalone/revogr-edit2.js.map +1 -1
  231. package/standalone/revogr-extra.js +1 -0
  232. package/standalone/revogr-extra2.js +7 -0
  233. package/standalone/revogr-extra2.js.map +1 -1
  234. package/standalone/revogr-filter-panel.js +14 -10
  235. package/standalone/revogr-filter-panel.js.map +1 -1
  236. package/standalone/revogr-focus.js +1 -0
  237. package/standalone/revogr-focus2.js +12 -16
  238. package/standalone/revogr-focus2.js.map +1 -1
  239. package/standalone/revogr-header.js +1 -0
  240. package/standalone/revogr-header2.js +24 -34
  241. package/standalone/revogr-header2.js.map +1 -1
  242. package/standalone/revogr-order-editor.js +1 -0
  243. package/standalone/revogr-order-editor2.js +4 -8
  244. package/standalone/revogr-order-editor2.js.map +1 -1
  245. package/standalone/revogr-overlay-selection.js +1 -0
  246. package/standalone/revogr-overlay-selection2.js +15 -25
  247. package/standalone/revogr-overlay-selection2.js.map +1 -1
  248. package/standalone/revogr-row-headers.js +1 -0
  249. package/standalone/revogr-row-headers2.js +11 -12
  250. package/standalone/revogr-row-headers2.js.map +1 -1
  251. package/standalone/revogr-scroll-virtual.js +1 -0
  252. package/standalone/revogr-scroll-virtual2.js +6 -6
  253. package/standalone/revogr-scroll-virtual2.js.map +1 -1
  254. package/standalone/revogr-temp-range.js +1 -0
  255. package/standalone/revogr-temp-range2.js +5 -8
  256. package/standalone/revogr-temp-range2.js.map +1 -1
  257. package/standalone/revogr-viewport-scroll.js +1 -0
  258. package/standalone/revogr-viewport-scroll2.js +9 -5
  259. package/standalone/revogr-viewport-scroll2.js.map +1 -1
  260. package/standalone/selection.utils.js +2 -1
  261. package/standalone/selection.utils.js.map +1 -1
  262. package/standalone/throttle.js +2 -1
  263. package/standalone/throttle.js.map +1 -1
  264. package/standalone/toNumber.js +6 -11
  265. package/standalone/toNumber.js.map +1 -1
  266. package/standalone/vnode-converter.js +2 -1
  267. package/standalone/vnode-converter.js.map +1 -1
  268. package/standalone/vnode-html.js +1 -0
  269. package/dist/cjs/app-globals-f72a6199.js.map +0 -1
  270. package/dist/cjs/cell-renderer-e5481ec8.js.map +0 -1
  271. package/dist/cjs/column.drag.plugin-f3c54b57.js.map +0 -1
  272. package/dist/cjs/column.service-e6411bc8.js.map +0 -1
  273. package/dist/cjs/debounce-ec7a04b4.js.map +0 -1
  274. package/dist/cjs/dimension.helpers-29797371.js.map +0 -1
  275. package/dist/cjs/edit.utils-2142d37d.js.map +0 -1
  276. package/dist/cjs/events-af8f6914.js.map +0 -1
  277. package/dist/cjs/filter.button-2708e602.js.map +0 -1
  278. package/dist/cjs/header-cell-renderer-56658ed7.js.map +0 -1
  279. package/dist/cjs/index-8006d065.js.map +0 -1
  280. package/dist/cjs/resize-observer-d009a220.js.map +0 -1
  281. package/dist/cjs/text-editor-aa356695.js.map +0 -1
  282. package/dist/cjs/throttle-c7ae5154.js.map +0 -1
  283. package/dist/cjs/viewport.helpers-e59a544e.js.map +0 -1
  284. package/dist/cjs/viewport.store-7f0d0f80.js.map +0 -1
  285. package/dist/esm/app-globals-6b929fd8.js.map +0 -1
  286. package/dist/esm/cell-renderer-852ac653.js.map +0 -1
  287. package/dist/esm/column.drag.plugin-c6b89504.js.map +0 -1
  288. package/dist/esm/column.service-e3c41fb8.js.map +0 -1
  289. package/dist/esm/debounce-b3166f78.js.map +0 -1
  290. package/dist/esm/dimension.helpers-87e12689.js.map +0 -1
  291. package/dist/esm/edit.utils-512f86c9.js.map +0 -1
  292. package/dist/esm/events-cf0893a3.js.map +0 -1
  293. package/dist/esm/filter.button-84396156.js.map +0 -1
  294. package/dist/esm/header-cell-renderer-c2acd090.js.map +0 -1
  295. package/dist/esm/index-f6fae858.js.map +0 -1
  296. package/dist/esm/resize-observer-83c9e167.js.map +0 -1
  297. package/dist/esm/text-editor-4224a2f6.js.map +0 -1
  298. package/dist/esm/throttle-7c83ca69.js.map +0 -1
  299. package/dist/esm/viewport.helpers-7e7f9dad.js.map +0 -1
  300. package/dist/esm/viewport.store-84060ef5.js.map +0 -1
  301. package/dist/revo-grid/app-globals-6b929fd8.js.map +0 -1
  302. package/dist/revo-grid/cell-renderer-852ac653.js.map +0 -1
  303. package/dist/revo-grid/column.drag.plugin-c6b89504.js.map +0 -1
  304. package/dist/revo-grid/column.service-e3c41fb8.js.map +0 -1
  305. package/dist/revo-grid/debounce-b3166f78.js.map +0 -1
  306. package/dist/revo-grid/dimension.helpers-87e12689.js.map +0 -1
  307. package/dist/revo-grid/edit.utils-512f86c9.js.map +0 -1
  308. package/dist/revo-grid/events-cf0893a3.js.map +0 -1
  309. package/dist/revo-grid/filter.button-84396156.js.map +0 -1
  310. package/dist/revo-grid/header-cell-renderer-c2acd090.js.map +0 -1
  311. package/dist/revo-grid/index-f6fae858.js.map +0 -1
  312. package/dist/revo-grid/resize-observer-83c9e167.js.map +0 -1
  313. package/dist/revo-grid/text-editor-4224a2f6.js.map +0 -1
  314. package/dist/revo-grid/throttle-7c83ca69.js.map +0 -1
  315. package/dist/revo-grid/viewport.helpers-7e7f9dad.js.map +0 -1
  316. package/dist/revo-grid/viewport.store-84060ef5.js.map +0 -1
@@ -17,24 +17,16 @@ import { CellRenderer } from "./cell-renderer";
17
17
  */
18
18
  export class RevogrData {
19
19
  constructor() {
20
+ /**
21
+ * Prevent rendering until job is done.
22
+ * Can be used for initial rendering performance improvement.
23
+ * When several plugins require initial rendering this will prevent double initial rendering.
24
+ */
25
+ this.jobsBeforeRender = [];
20
26
  /**
21
27
  * Rendered rows - virtual index vs vnode
22
28
  */
23
29
  this.renderedRows = new Map();
24
- this.readonly = undefined;
25
- this.range = undefined;
26
- this.rowClass = undefined;
27
- this.additionalData = undefined;
28
- this.rowSelectionStore = undefined;
29
- this.viewportRow = undefined;
30
- this.viewportCol = undefined;
31
- this.dimensionRow = undefined;
32
- this.colData = undefined;
33
- this.dataStore = undefined;
34
- this.type = undefined;
35
- this.colType = undefined;
36
- this.jobsBeforeRender = [];
37
- this.providers = undefined;
38
30
  }
39
31
  /**
40
32
  * Pointed cell update.
@@ -204,6 +196,7 @@ export class RevogrData {
204
196
  return {
205
197
  "readonly": {
206
198
  "type": "boolean",
199
+ "attribute": "readonly",
207
200
  "mutable": false,
208
201
  "complexType": {
209
202
  "original": "boolean",
@@ -218,11 +211,11 @@ export class RevogrData {
218
211
  },
219
212
  "getter": false,
220
213
  "setter": false,
221
- "attribute": "readonly",
222
214
  "reflect": false
223
215
  },
224
216
  "range": {
225
217
  "type": "boolean",
218
+ "attribute": "range",
226
219
  "mutable": false,
227
220
  "complexType": {
228
221
  "original": "boolean",
@@ -237,11 +230,11 @@ export class RevogrData {
237
230
  },
238
231
  "getter": false,
239
232
  "setter": false,
240
- "attribute": "range",
241
233
  "reflect": false
242
234
  },
243
235
  "rowClass": {
244
236
  "type": "string",
237
+ "attribute": "row-class",
245
238
  "mutable": false,
246
239
  "complexType": {
247
240
  "original": "string",
@@ -256,11 +249,11 @@ export class RevogrData {
256
249
  },
257
250
  "getter": false,
258
251
  "setter": false,
259
- "attribute": "row-class",
260
252
  "reflect": false
261
253
  },
262
254
  "additionalData": {
263
255
  "type": "any",
256
+ "attribute": "additional-data",
264
257
  "mutable": false,
265
258
  "complexType": {
266
259
  "original": "any",
@@ -275,11 +268,11 @@ export class RevogrData {
275
268
  },
276
269
  "getter": false,
277
270
  "setter": false,
278
- "attribute": "additional-data",
279
271
  "reflect": false
280
272
  },
281
273
  "rowSelectionStore": {
282
274
  "type": "unknown",
275
+ "attribute": "row-selection-store",
283
276
  "mutable": false,
284
277
  "complexType": {
285
278
  "original": "Observable<SelectionStoreState>",
@@ -308,6 +301,7 @@ export class RevogrData {
308
301
  },
309
302
  "viewportRow": {
310
303
  "type": "unknown",
304
+ "attribute": "viewport-row",
311
305
  "mutable": false,
312
306
  "complexType": {
313
307
  "original": "Observable<ViewportState>",
@@ -336,6 +330,7 @@ export class RevogrData {
336
330
  },
337
331
  "viewportCol": {
338
332
  "type": "unknown",
333
+ "attribute": "viewport-col",
339
334
  "mutable": false,
340
335
  "complexType": {
341
336
  "original": "Observable<ViewportState>",
@@ -364,6 +359,7 @@ export class RevogrData {
364
359
  },
365
360
  "dimensionRow": {
366
361
  "type": "unknown",
362
+ "attribute": "dimension-row",
367
363
  "mutable": false,
368
364
  "complexType": {
369
365
  "original": "Observable<DimensionSettingsState>",
@@ -392,6 +388,7 @@ export class RevogrData {
392
388
  },
393
389
  "colData": {
394
390
  "type": "unknown",
391
+ "attribute": "col-data",
395
392
  "mutable": false,
396
393
  "complexType": {
397
394
  "original": "Observable<DSourceState<ColumnRegular, DimensionCols>>",
@@ -430,6 +427,7 @@ export class RevogrData {
430
427
  },
431
428
  "dataStore": {
432
429
  "type": "unknown",
430
+ "attribute": "data-store",
433
431
  "mutable": false,
434
432
  "complexType": {
435
433
  "original": "Observable<DSourceState<DataType, DimensionRows>>",
@@ -468,6 +466,7 @@ export class RevogrData {
468
466
  },
469
467
  "type": {
470
468
  "type": "string",
469
+ "attribute": "type",
471
470
  "mutable": false,
472
471
  "complexType": {
473
472
  "original": "DimensionRows",
@@ -488,11 +487,11 @@ export class RevogrData {
488
487
  },
489
488
  "getter": false,
490
489
  "setter": false,
491
- "attribute": "type",
492
490
  "reflect": true
493
491
  },
494
492
  "colType": {
495
493
  "type": "string",
494
+ "attribute": "col-type",
496
495
  "mutable": false,
497
496
  "complexType": {
498
497
  "original": "DimensionCols | 'rowHeaders'",
@@ -513,11 +512,11 @@ export class RevogrData {
513
512
  },
514
513
  "getter": false,
515
514
  "setter": false,
516
- "attribute": "col-type",
517
515
  "reflect": true
518
516
  },
519
517
  "jobsBeforeRender": {
520
518
  "type": "unknown",
519
+ "attribute": "jobs-before-render",
521
520
  "mutable": false,
522
521
  "complexType": {
523
522
  "original": "(Promise<any> | (() => Promise<any>))[]",
@@ -1 +1 @@
1
- {"version":3,"file":"revogr-data.js","sourceRoot":"","sources":["../../../src/components/data/revogr-data.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n type VNode,\n Component,\n Host,\n Watch,\n Element,\n Event,\n Prop,\n EventEmitter,\n h,\n Method,\n State,\n} from '@stencil/core';\n\nimport ColumnService from './column.service';\nimport { DATA_COL, DATA_ROW, ROW_FOCUSED_CLASS } from '../../utils/consts';\n\nimport { type DSourceState, getSourceItem } from '@store';\nimport RowRenderer, { PADDING_DEPTH } from './row-renderer';\nimport GroupingRowRenderer from '../../plugins/groupingRow/grouping.row.renderer';\nimport { isGrouping } from '../../plugins/groupingRow/grouping.service';\nimport type { AllDimensionType, CellTemplateProp, DimensionCols, DimensionRows } from '@type';\nimport { RowHighlightPlugin } from './row-highlight.plugin';\nimport { convertVNodeToHTML } from '../vnode/vnode.utils';\nimport { CellRenderer } from './cell-renderer';\nimport type {\n ViewportState,\n DimensionSettingsState,\n BeforeRowRenderEvent,\n Providers,\n ColumnRegular,\n DataType,\n CellProps,\n BeforeCellRenderEvent,\n DragStartEvent,\n VirtualPositionItem,\n RangeArea,\n SelectionStoreState,\n} from '@type';\nimport type { Observable } from '../../utils';\nimport type { RowGroupingProps } from '../../plugins';\n\n/**\n * This component is responsible for rendering data\n * Rows, columns, groups and cells\n */\n@Component({\n tag: 'revogr-data',\n styleUrl: 'revogr-data-style.scss',\n})\nexport class RevogrData {\n // #region Properties\n /**\n * Readonly mode\n */\n @Prop() readonly: boolean;\n /**\n * Range allowed\n */\n @Prop() range: boolean;\n\n /**\n * Defines property from which to read row class\n */\n @Prop() rowClass: string;\n /**\n * Additional data to pass to renderer\n * Used in plugins such as vue or react to pass root app entity to cells\n */\n @Prop() additionalData: any;\n /** Stores */\n /** Selection, range, focus for row selection */\n @Prop() rowSelectionStore!: Observable<SelectionStoreState>;\n /** Viewport Y */\n @Prop() viewportRow!: Observable<ViewportState>;\n /** Viewport X */\n @Prop() viewportCol!: Observable<ViewportState>;\n /** Dimension settings Y */\n @Prop() dimensionRow!: Observable<DimensionSettingsState>;\n\n /** Static stores, not expected to change during component lifetime */\n /**\n * Column source\n */\n @Prop() colData!: Observable<DSourceState<ColumnRegular, DimensionCols>>;\n /**\n * Data rows source\n */\n @Prop() dataStore!: Observable<DSourceState<DataType, DimensionRows>>;\n /**\n * Row data type\n */\n @Prop({ reflect: true }) type!: DimensionRows;\n\n /**\n * Column data type\n */\n @Prop({ reflect: true }) colType!: DimensionCols | 'rowHeaders';\n\n /**\n * Prevent rendering until job is done.\n * Can be used for initial rendering performance improvement.\n * When several plugins require initial rendering this will prevent double initial rendering.\n */\n @Prop() jobsBeforeRender: (Promise<any> | (() => Promise<any>))[] = [];\n // #endregion\n\n /**\n * Before each row render\n */\n @Event() beforerowrender: EventEmitter<BeforeRowRenderEvent>;\n \n /**\n * When data render finished for the designated type\n */\n @Event() afterrender: EventEmitter<{ type: DimensionRows }>;\n /**\n * Before each cell render function. Allows to override cell properties\n */\n @Event({ eventName: 'beforecellrender' })\n beforeCellRender: EventEmitter<BeforeCellRenderEvent<CellTemplateProp>>;\n\n /**\n * Before data render\n */\n @Event({ eventName: 'beforedatarender' })\n beforeDataRender: EventEmitter<AllDimensionType>;\n /**\n * Event emitted on cell drag start\n */\n @Event({ eventName: 'dragstartcell' })\n dragStartCell: EventEmitter<DragStartEvent>;\n\n /**\n * Pointed cell update.\n */\n @Method() async updateCell(e: {\n row: number; // virtual\n col: number; // virtual\n }) {\n // Stencil tweak to update cell content\n const cell = this.renderedRows.get(e.row)?.$children$?.[e.col];\n if (cell?.$attrs$?.redraw) {\n const children = await convertVNodeToHTML(\n this.element,\n cell.$attrs$.redraw,\n );\n cell.$elm$.innerHTML = children.html;\n cell.$key$ = Math.random();\n }\n }\n\n @Element() element!: Element;\n @State() providers: Providers;\n private columnService: ColumnService;\n private rowHighlightPlugin: RowHighlightPlugin;\n /**\n * Rendered rows - virtual index vs vnode\n */\n private renderedRows = new Map<number, VNode>();\n private rangeUnsubscribe: (() => void) | undefined;\n\n @Watch('dataStore') onDataStoreChange() {\n this.onStoreChange();\n }\n @Watch('colData') onColDataChange() {\n this.onStoreChange();\n }\n onStoreChange() {\n this.columnService?.destroy();\n this.columnService = new ColumnService(this.dataStore, this.colData);\n // make sure we have correct data, before render\n this.providers = {\n type: this.type,\n colType: this.colType,\n readonly: this.readonly,\n data: this.dataStore,\n columns: this.colData,\n viewport: this.viewportCol,\n dimension: this.dimensionRow,\n selection: this.rowSelectionStore,\n };\n\n this.rangeUnsubscribe?.();\n this.rangeUnsubscribe = this.rowSelectionStore.onChange(\n 'range',\n (e: RangeArea) =>\n this.rowHighlightPlugin.selectionChange(e, this.renderedRows),\n );\n }\n\n connectedCallback() {\n this.rowHighlightPlugin = new RowHighlightPlugin();\n this.onStoreChange();\n }\n\n disconnectedCallback() {\n this.columnService?.destroy();\n this.rangeUnsubscribe?.();\n }\n\n async componentWillRender() {\n this.beforeDataRender.emit({\n rowType: this.type,\n colType: this.colType as DimensionCols,\n });\n return Promise.all(this.jobsBeforeRender.map(p => typeof p === 'function' ? p() : p));\n }\n\n componentDidRender() {\n this.afterrender.emit({ type: this.type });\n }\n\n render() {\n this.renderedRows = new Map();\n const columnsData = this.columnService.columns;\n if (!columnsData.length) {\n return;\n }\n const rows = this.viewportRow.get('items');\n if (!rows.length) {\n return;\n }\n const cols = this.viewportCol.get('items');\n if (!cols.length) {\n return;\n }\n const rowsEls: VNode[] = [];\n const depth = this.dataStore.get('groupingDepth');\n const groupingCustomRenderer = this.dataStore.get('groupingCustomRenderer');\n const groupDepth = this.columnService.hasGrouping ? depth : 0;\n for (let rgRow of rows) {\n const dataItem = getSourceItem(this.dataStore, rgRow.itemIndex);\n\n // #region Grouping\n if (isGrouping(dataItem)) {\n const gmodel: RowGroupingProps = {\n ...rgRow,\n index: rgRow.itemIndex,\n model: dataItem,\n groupingCustomRenderer,\n // Only show expand button if grouping is enabled and not in row headers\n hasExpand: this.columnService.hasGrouping && this.colType !== 'rowHeaders',\n columnItems: cols,\n providers: this.providers,\n };\n rowsEls.push(<GroupingRowRenderer {...gmodel} />);\n continue;\n }\n // #endregion\n const cells: (VNode | string | void)[] = [];\n\n // #region Cells\n for (let rgCol of cols) {\n const smodel: CellTemplateProp = {\n ...this.columnService.rowDataModel(\n rgRow.itemIndex,\n rgCol.itemIndex,\n ),\n providers: this.providers,\n };\n\n // call before cell render\n const cellEvent = this.triggerBeforeCellRender(smodel, rgRow, rgCol);\n\n // if event was prevented\n if (cellEvent.defaultPrevented) {\n continue;\n }\n\n const {\n detail: { column: columnProps, row: rowProps, model: schemaModel },\n } = cellEvent;\n\n const defaultProps: CellProps = {\n [DATA_COL]: columnProps.itemIndex,\n [DATA_ROW]: rowProps.itemIndex,\n style: {\n width: `${columnProps.size}px`,\n transform: `translateX(${columnProps.start}px)`,\n height: rowProps.size ? `${rowProps.size}px` : undefined,\n },\n };\n /**\n * For grouping, can be removed in the future and replaced with event\n */\n if (groupDepth && !columnProps.itemIndex && defaultProps.style) {\n defaultProps.style.paddingLeft = `${PADDING_DEPTH * groupDepth}px`;\n }\n\n const props = this.columnService.mergeProperties(\n rowProps.itemIndex,\n columnProps.itemIndex,\n defaultProps,\n schemaModel,\n );\n\n // Never use webcomponent for cell render\n // It's very slow because of webcomponent initialization takes time\n const cellNode = <CellRenderer\n renderProps={{\n schemaModel,\n additionalData: this.additionalData,\n dragStartCell: this.dragStartCell,\n }}\n cellProps={props}\n />;\n cells.push(cellNode);\n }\n // #endregion\n\n // #region Rows\n let rowClass = this.rowClass\n ? this.columnService.getRowClass(rgRow.itemIndex, this.rowClass)\n : '';\n if (this.rowHighlightPlugin.isRowFocused(rgRow.itemIndex)) {\n rowClass += ` ${ROW_FOCUSED_CLASS}`;\n }\n const row: VNode = (\n <RowRenderer\n index={rgRow.itemIndex}\n rowClass={rowClass}\n size={rgRow.size}\n start={rgRow.start}\n >\n {cells}\n </RowRenderer>\n );\n this.beforerowrender.emit({\n node: row,\n item: rgRow,\n model: dataItem,\n colType: this.columnService.type,\n rowType: this.type,\n });\n rowsEls.push(row);\n this.renderedRows.set(rgRow.itemIndex, row);\n // #endregion\n }\n return (\n <Host>\n <slot />\n {rowsEls}\n </Host>\n );\n }\n\n triggerBeforeCellRender(\n model: CellTemplateProp,\n row: VirtualPositionItem,\n column: VirtualPositionItem,\n ) {\n const detail: BeforeCellRenderEvent<CellTemplateProp> = {\n column,\n row,\n model,\n rowType: model.type,\n colType: model.colType,\n };\n return this.beforeCellRender.emit(detail);\n }\n}\n"]}
1
+ {"version":3,"file":"revogr-data.js","sourceRoot":"","sources":["../../../src/components/data/revogr-data.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n type VNode,\n Component,\n Host,\n Watch,\n Element,\n Event,\n Prop,\n EventEmitter,\n h,\n Method,\n State,\n} from '@stencil/core';\n\nimport ColumnService from './column.service';\nimport { DATA_COL, DATA_ROW, ROW_FOCUSED_CLASS } from '../../utils/consts';\n\nimport { type DSourceState, getSourceItem } from '@store';\nimport RowRenderer, { PADDING_DEPTH } from './row-renderer';\nimport GroupingRowRenderer from '../../plugins/groupingRow/grouping.row.renderer';\nimport { isGrouping } from '../../plugins/groupingRow/grouping.service';\nimport type { AllDimensionType, CellTemplateProp, DimensionCols, DimensionRows } from '@type';\nimport { RowHighlightPlugin } from './row-highlight.plugin';\nimport { convertVNodeToHTML } from '../vnode/vnode.utils';\nimport { CellRenderer } from './cell-renderer';\nimport type {\n ViewportState,\n DimensionSettingsState,\n BeforeRowRenderEvent,\n Providers,\n ColumnRegular,\n DataType,\n CellProps,\n BeforeCellRenderEvent,\n DragStartEvent,\n VirtualPositionItem,\n RangeArea,\n SelectionStoreState,\n} from '@type';\nimport type { Observable } from '../../utils';\nimport type { RowGroupingProps } from '../../plugins';\n\n/**\n * This component is responsible for rendering data\n * Rows, columns, groups and cells\n */\n@Component({\n tag: 'revogr-data',\n styleUrl: 'revogr-data-style.scss',\n})\nexport class RevogrData {\n // #region Properties\n /**\n * Readonly mode\n */\n @Prop() readonly: boolean;\n /**\n * Range allowed\n */\n @Prop() range: boolean;\n\n /**\n * Defines property from which to read row class\n */\n @Prop() rowClass: string;\n /**\n * Additional data to pass to renderer\n * Used in plugins such as vue or react to pass root app entity to cells\n */\n @Prop() additionalData: any;\n /** Stores */\n /** Selection, range, focus for row selection */\n @Prop() rowSelectionStore!: Observable<SelectionStoreState>;\n /** Viewport Y */\n @Prop() viewportRow!: Observable<ViewportState>;\n /** Viewport X */\n @Prop() viewportCol!: Observable<ViewportState>;\n /** Dimension settings Y */\n @Prop() dimensionRow!: Observable<DimensionSettingsState>;\n\n /** Static stores, not expected to change during component lifetime */\n /**\n * Column source\n */\n @Prop() colData!: Observable<DSourceState<ColumnRegular, DimensionCols>>;\n /**\n * Data rows source\n */\n @Prop() dataStore!: Observable<DSourceState<DataType, DimensionRows>>;\n /**\n * Row data type\n */\n @Prop({ reflect: true }) type!: DimensionRows;\n\n /**\n * Column data type\n */\n @Prop({ reflect: true }) colType!: DimensionCols | 'rowHeaders';\n\n /**\n * Prevent rendering until job is done.\n * Can be used for initial rendering performance improvement.\n * When several plugins require initial rendering this will prevent double initial rendering.\n */\n @Prop() jobsBeforeRender: (Promise<any> | (() => Promise<any>))[] = [];\n // #endregion\n\n /**\n * Before each row render\n */\n @Event() beforerowrender: EventEmitter<BeforeRowRenderEvent>;\n \n /**\n * When data render finished for the designated type\n */\n @Event() afterrender: EventEmitter<{ type: DimensionRows }>;\n /**\n * Before each cell render function. Allows to override cell properties\n */\n @Event({ eventName: 'beforecellrender' })\n beforeCellRender: EventEmitter<BeforeCellRenderEvent<CellTemplateProp>>;\n\n /**\n * Before data render\n */\n @Event({ eventName: 'beforedatarender' })\n beforeDataRender: EventEmitter<AllDimensionType>;\n /**\n * Event emitted on cell drag start\n */\n @Event({ eventName: 'dragstartcell' })\n dragStartCell: EventEmitter<DragStartEvent>;\n\n /**\n * Pointed cell update.\n */\n @Method() async updateCell(e: {\n row: number; // virtual\n col: number; // virtual\n }) {\n // Stencil tweak to update cell content\n const cell = this.renderedRows.get(e.row)?.$children$?.[e.col];\n if (cell?.$attrs$?.redraw) {\n const children = await convertVNodeToHTML(\n this.element,\n cell.$attrs$.redraw,\n );\n cell.$elm$.innerHTML = children.html;\n cell.$key$ = Math.random();\n }\n }\n\n @Element() element!: Element;\n @State() providers: Providers;\n private columnService: ColumnService;\n private rowHighlightPlugin: RowHighlightPlugin;\n /**\n * Rendered rows - virtual index vs vnode\n */\n private renderedRows = new Map<number, VNode>();\n private rangeUnsubscribe: (() => void) | undefined;\n\n @Watch('dataStore') onDataStoreChange() {\n this.onStoreChange();\n }\n @Watch('colData') onColDataChange() {\n this.onStoreChange();\n }\n onStoreChange() {\n this.columnService?.destroy();\n this.columnService = new ColumnService(this.dataStore, this.colData);\n // make sure we have correct data, before render\n this.providers = {\n type: this.type,\n colType: this.colType,\n readonly: this.readonly,\n data: this.dataStore,\n columns: this.colData,\n viewport: this.viewportCol,\n dimension: this.dimensionRow,\n selection: this.rowSelectionStore,\n };\n\n this.rangeUnsubscribe?.();\n this.rangeUnsubscribe = this.rowSelectionStore.onChange(\n 'range',\n (e: RangeArea) =>\n this.rowHighlightPlugin.selectionChange(e, this.renderedRows),\n );\n }\n\n connectedCallback() {\n this.rowHighlightPlugin = new RowHighlightPlugin();\n this.onStoreChange();\n }\n\n disconnectedCallback() {\n this.columnService?.destroy();\n this.rangeUnsubscribe?.();\n }\n\n async componentWillRender() {\n this.beforeDataRender.emit({\n rowType: this.type,\n colType: this.colType as DimensionCols,\n });\n return Promise.all(this.jobsBeforeRender.map(p => typeof p === 'function' ? p() : p));\n }\n\n componentDidRender() {\n this.afterrender.emit({ type: this.type });\n }\n\n render() {\n this.renderedRows = new Map();\n const columnsData = this.columnService.columns;\n if (!columnsData.length) {\n return;\n }\n const rows = this.viewportRow.get('items');\n if (!rows.length) {\n return;\n }\n const cols = this.viewportCol.get('items');\n if (!cols.length) {\n return;\n }\n const rowsEls: VNode[] = [];\n const depth = this.dataStore.get('groupingDepth');\n const groupingCustomRenderer = this.dataStore.get('groupingCustomRenderer');\n const groupDepth = this.columnService.hasGrouping ? depth : 0;\n for (let rgRow of rows) {\n const dataItem = getSourceItem(this.dataStore, rgRow.itemIndex);\n\n // #region Grouping\n if (isGrouping(dataItem)) {\n const gmodel: RowGroupingProps = {\n ...rgRow,\n index: rgRow.itemIndex,\n model: dataItem,\n groupingCustomRenderer,\n // Only show expand button if grouping is enabled and not in row headers\n hasExpand: this.columnService.hasGrouping && this.colType !== 'rowHeaders',\n columnItems: cols,\n providers: this.providers,\n };\n rowsEls.push(<GroupingRowRenderer {...gmodel} />);\n continue;\n }\n // #endregion\n const cells: (VNode | string | void)[] = [];\n\n // #region Cells\n for (let rgCol of cols) {\n const smodel: CellTemplateProp = {\n ...this.columnService.rowDataModel(\n rgRow.itemIndex,\n rgCol.itemIndex,\n ),\n providers: this.providers,\n };\n\n // call before cell render\n const cellEvent = this.triggerBeforeCellRender(smodel, rgRow, rgCol);\n\n // if event was prevented\n if (cellEvent.defaultPrevented) {\n continue;\n }\n\n const {\n detail: { column: columnProps, row: rowProps, model: schemaModel },\n } = cellEvent;\n\n const defaultProps: CellProps = {\n [DATA_COL]: columnProps.itemIndex,\n [DATA_ROW]: rowProps.itemIndex,\n style: {\n width: `${columnProps.size}px`,\n transform: `translateX(${columnProps.start}px)`,\n height: rowProps.size ? `${rowProps.size}px` : undefined,\n },\n };\n /**\n * For grouping, can be removed in the future and replaced with event\n */\n if (groupDepth && !columnProps.itemIndex && defaultProps.style) {\n defaultProps.style.paddingLeft = `${PADDING_DEPTH * groupDepth}px`;\n }\n\n const props = this.columnService.mergeProperties(\n rowProps.itemIndex,\n columnProps.itemIndex,\n defaultProps,\n schemaModel,\n );\n\n // Never use webcomponent for cell render\n // It's very slow because of webcomponent initialization takes time\n const cellNode = <CellRenderer\n renderProps={{\n schemaModel,\n additionalData: this.additionalData,\n dragStartCell: this.dragStartCell,\n }}\n cellProps={props}\n />;\n cells.push(cellNode);\n }\n // #endregion\n\n // #region Rows\n let rowClass = this.rowClass\n ? this.columnService.getRowClass(rgRow.itemIndex, this.rowClass)\n : '';\n if (this.rowHighlightPlugin.isRowFocused(rgRow.itemIndex)) {\n rowClass += ` ${ROW_FOCUSED_CLASS}`;\n }\n const row: VNode = (\n <RowRenderer\n index={rgRow.itemIndex}\n rowClass={rowClass}\n size={rgRow.size}\n start={rgRow.start}\n >\n {cells}\n </RowRenderer>\n );\n this.beforerowrender.emit({\n node: row,\n item: rgRow,\n model: dataItem,\n colType: this.columnService.type,\n rowType: this.type,\n });\n rowsEls.push(row);\n this.renderedRows.set(rgRow.itemIndex, row);\n // #endregion\n }\n return (\n <Host>\n <slot />\n {rowsEls}\n </Host>\n );\n }\n\n triggerBeforeCellRender(\n model: CellTemplateProp,\n row: VirtualPositionItem,\n column: VirtualPositionItem,\n ) {\n const detail: BeforeCellRenderEvent<CellTemplateProp> = {\n column,\n row,\n model,\n rowType: model.type,\n colType: model.colType,\n };\n return this.beforeCellRender.emit(detail);\n }\n}\n"]}
@@ -12,13 +12,12 @@ import { isEditorCtrConstructible } from "./edit.utils";
12
12
  */
13
13
  export class RevoEdit {
14
14
  constructor() {
15
+ /**
16
+ * Save on editor close. Defines if data should be saved on editor close.
17
+ */
18
+ this.saveOnClose = false;
15
19
  this.currentEditor = null;
16
20
  this.preventSaveOnClose = false;
17
- this.editCell = undefined;
18
- this.column = undefined;
19
- this.editor = undefined;
20
- this.saveOnClose = false;
21
- this.additionalData = undefined;
22
21
  }
23
22
  /**
24
23
  * Cancel pending changes flag. Editor will be closed without autosave.
@@ -154,6 +153,7 @@ export class RevoEdit {
154
153
  return {
155
154
  "editCell": {
156
155
  "type": "unknown",
156
+ "attribute": "edit-cell",
157
157
  "mutable": false,
158
158
  "complexType": {
159
159
  "original": "EditCell",
@@ -177,6 +177,7 @@ export class RevoEdit {
177
177
  },
178
178
  "column": {
179
179
  "type": "unknown",
180
+ "attribute": "column",
180
181
  "mutable": false,
181
182
  "complexType": {
182
183
  "original": "ColumnDataSchemaModel | null",
@@ -200,6 +201,7 @@ export class RevoEdit {
200
201
  },
201
202
  "editor": {
202
203
  "type": "unknown",
204
+ "attribute": "editor",
203
205
  "mutable": false,
204
206
  "complexType": {
205
207
  "original": "EditorCtr | null",
@@ -223,6 +225,7 @@ export class RevoEdit {
223
225
  },
224
226
  "saveOnClose": {
225
227
  "type": "boolean",
228
+ "attribute": "save-on-close",
226
229
  "mutable": false,
227
230
  "complexType": {
228
231
  "original": "boolean",
@@ -237,12 +240,12 @@ export class RevoEdit {
237
240
  },
238
241
  "getter": false,
239
242
  "setter": false,
240
- "attribute": "save-on-close",
241
243
  "reflect": false,
242
244
  "defaultValue": "false"
243
245
  },
244
246
  "additionalData": {
245
247
  "type": "any",
248
+ "attribute": "additional-data",
246
249
  "mutable": false,
247
250
  "complexType": {
248
251
  "original": "any",
@@ -257,7 +260,6 @@ export class RevoEdit {
257
260
  },
258
261
  "getter": false,
259
262
  "setter": false,
260
- "attribute": "additional-data",
261
263
  "reflect": false
262
264
  }
263
265
  };
@@ -1 +1 @@
1
- {"version":3,"file":"revogr-edit.js","sourceRoot":"","sources":["../../../src/components/editors/revogr-edit.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Event,\n EventEmitter,\n Prop,\n h,\n Element,\n Host,\n Method,\n} from '@stencil/core';\nimport { EDIT_INPUT_WR } from '../../utils/consts';\nimport { TextEditor } from './text-editor';\nimport { ColumnDataSchemaModel } from '@type';\nimport {\n EditCell,\n EditorCtr,\n SaveDataDetails,\n EditorBase,\n} from '@type';\n\nimport { isEditorCtrConstructible } from './edit.utils';\n\n/**\n * Represents a cell editor in a grid.\n * It manages the editing of cells by handling events, saving data, rendering the editor UI,\n * and managing the lifecycle of the editor instance.\n */\n@Component({\n tag: 'revogr-edit',\n styleUrl: 'revogr-edit-style.scss',\n})\nexport class RevoEdit {\n /**\n * Cell to edit data.\n */\n @Prop() editCell: EditCell;\n\n /**\n * Column data for editor.\n */\n @Prop() column: ColumnDataSchemaModel | null;\n /**\n * Custom editors register\n */\n @Prop() editor: EditorCtr | null;\n\n /**\n * Save on editor close. Defines if data should be saved on editor close.\n */\n @Prop() saveOnClose = false;\n /**\n * Additional data to pass to renderer\n */\n @Prop() additionalData: any;\n\n /**\n * Cell edit event initiator, first in the cellEdit event chain\n */\n @Event({ eventName: 'celleditinit' }) cellEdit: EventEmitter<SaveDataDetails>;\n\n /**\n * Close editor event\n * pass true if requires focus next\n */\n @Event({ eventName: 'closeedit' }) closeEdit: EventEmitter<\n boolean | undefined\n >;\n\n /** Edit session editor */\n @Element() element: HTMLElement;\n private currentEditor: EditorBase | null = null;\n private preventSaveOnClose = false;\n\n /**\n * Cancel pending changes flag. Editor will be closed without autosave.\n */\n @Method() async cancelChanges() {\n this.preventSaveOnClose = true;\n }\n\n /**\n * Before editor got disconnected.\n * Can be triggered multiple times before actual disconnect.\n */\n @Method() async beforeDisconnect() {\n this.currentEditor?.beforeDisconnect?.();\n }\n\n onAutoSave() {\n this.preventSaveOnClose = true;\n const val = this.currentEditor?.getValue?.();\n // For Editor plugin internal usage.\n // When you want to prevent save and use custom save of your own.\n if (this.currentEditor?.beforeAutoSave) {\n const canSave = this.currentEditor.beforeAutoSave(val);\n if (canSave === false) {\n return;\n }\n }\n this.onSave(val, true);\n }\n\n /**\n * Callback triggered when cell editor saved.\n * Closes editor when called.\n * @param preventFocus - if true, editor will not be closed & next cell will not be focused.\n */\n onSave(val?: any, preventFocus?: boolean) {\n this.preventSaveOnClose = true;\n if (this.editCell) {\n this.cellEdit.emit({\n rgCol: this.editCell.x,\n rgRow: this.editCell.y,\n type: this.editCell.type,\n prop: this.editCell.prop,\n val,\n preventFocus,\n });\n }\n }\n\n componentWillRender() {\n // Active editor present and not yet closed.\n if (this.currentEditor || !this.column) {\n return;\n }\n this.preventSaveOnClose = false;\n\n // Custom editor usage.\n // Start with TextEditor (editors/text.tsx) for Custom editor.\n // It can be class or function\n if (this.editor) {\n // if editor is constructible\n if (isEditorCtrConstructible(this.editor)) {\n this.currentEditor = new this.editor(\n this.column,\n // save callback\n (e, preventFocus) => {\n this.onSave(e, preventFocus);\n },\n // cancel callback\n focusNext => {\n this.preventSaveOnClose = true;\n this.closeEdit.emit(focusNext);\n },\n );\n // if editor is function\n } else {\n this.currentEditor = this.editor(\n this.column,\n // save callback\n (e, preventFocus) => {\n this.onSave(e, preventFocus);\n },\n // cancel callback\n focusNext => {\n this.preventSaveOnClose = true;\n this.closeEdit.emit(focusNext);\n },\n );\n }\n return;\n }\n // Default text editor usage\n this.currentEditor = new TextEditor(this.column, (e, preventFocus) =>\n this.onSave(e, preventFocus),\n );\n }\n\n componentDidRender() {\n if (!this.currentEditor) {\n return;\n }\n this.currentEditor.element = this.element.firstElementChild;\n this.currentEditor.componentDidRender?.();\n }\n\n disconnectedCallback() {\n if (this.saveOnClose) {\n // Can not be cancelled by `preventSaveOnClose` prop.\n // Editor requires `getValue` to be able to save.\n if (!this.preventSaveOnClose) {\n this.onAutoSave();\n }\n }\n\n this.preventSaveOnClose = false;\n if (!this.currentEditor) {\n return;\n }\n\n this.currentEditor.disconnectedCallback?.();\n this.currentEditor.element = null;\n this.currentEditor = null;\n }\n\n render() {\n if (this.currentEditor) {\n this.currentEditor.editCell = this.editCell;\n return (\n <Host class={EDIT_INPUT_WR}>\n {this.currentEditor.render(h, this.additionalData)}\n </Host>\n );\n }\n return '';\n }\n}\n"]}
1
+ {"version":3,"file":"revogr-edit.js","sourceRoot":"","sources":["../../../src/components/editors/revogr-edit.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Event,\n EventEmitter,\n Prop,\n h,\n Element,\n Host,\n Method,\n} from '@stencil/core';\nimport { EDIT_INPUT_WR } from '../../utils/consts';\nimport { TextEditor } from './text-editor';\nimport { ColumnDataSchemaModel } from '@type';\nimport {\n EditCell,\n EditorCtr,\n SaveDataDetails,\n EditorBase,\n} from '@type';\n\nimport { isEditorCtrConstructible } from './edit.utils';\n\n/**\n * Represents a cell editor in a grid.\n * It manages the editing of cells by handling events, saving data, rendering the editor UI,\n * and managing the lifecycle of the editor instance.\n */\n@Component({\n tag: 'revogr-edit',\n styleUrl: 'revogr-edit-style.scss',\n})\nexport class RevoEdit {\n /**\n * Cell to edit data.\n */\n @Prop() editCell: EditCell;\n\n /**\n * Column data for editor.\n */\n @Prop() column: ColumnDataSchemaModel | null;\n /**\n * Custom editors register\n */\n @Prop() editor: EditorCtr | null;\n\n /**\n * Save on editor close. Defines if data should be saved on editor close.\n */\n @Prop() saveOnClose = false;\n /**\n * Additional data to pass to renderer\n */\n @Prop() additionalData: any;\n\n /**\n * Cell edit event initiator, first in the cellEdit event chain\n */\n @Event({ eventName: 'celleditinit' }) cellEdit: EventEmitter<SaveDataDetails>;\n\n /**\n * Close editor event\n * pass true if requires focus next\n */\n @Event({ eventName: 'closeedit' }) closeEdit: EventEmitter<\n boolean | undefined\n >;\n\n /** Edit session editor */\n @Element() element: HTMLElement;\n private currentEditor: EditorBase | null = null;\n private preventSaveOnClose = false;\n\n /**\n * Cancel pending changes flag. Editor will be closed without autosave.\n */\n @Method() async cancelChanges() {\n this.preventSaveOnClose = true;\n }\n\n /**\n * Before editor got disconnected.\n * Can be triggered multiple times before actual disconnect.\n */\n @Method() async beforeDisconnect() {\n this.currentEditor?.beforeDisconnect?.();\n }\n\n onAutoSave() {\n this.preventSaveOnClose = true;\n const val = this.currentEditor?.getValue?.();\n // For Editor plugin internal usage.\n // When you want to prevent save and use custom save of your own.\n if (this.currentEditor?.beforeAutoSave) {\n const canSave = this.currentEditor.beforeAutoSave(val);\n if (canSave === false) {\n return;\n }\n }\n this.onSave(val, true);\n }\n\n /**\n * Callback triggered when cell editor saved.\n * Closes editor when called.\n * @param preventFocus - if true, editor will not be closed & next cell will not be focused.\n */\n onSave(val?: any, preventFocus?: boolean) {\n this.preventSaveOnClose = true;\n if (this.editCell) {\n this.cellEdit.emit({\n rgCol: this.editCell.x,\n rgRow: this.editCell.y,\n type: this.editCell.type,\n prop: this.editCell.prop,\n val,\n preventFocus,\n });\n }\n }\n\n componentWillRender() {\n // Active editor present and not yet closed.\n if (this.currentEditor || !this.column) {\n return;\n }\n this.preventSaveOnClose = false;\n\n // Custom editor usage.\n // Start with TextEditor (editors/text.tsx) for Custom editor.\n // It can be class or function\n if (this.editor) {\n // if editor is constructible\n if (isEditorCtrConstructible(this.editor)) {\n this.currentEditor = new this.editor(\n this.column,\n // save callback\n (e, preventFocus) => {\n this.onSave(e, preventFocus);\n },\n // cancel callback\n focusNext => {\n this.preventSaveOnClose = true;\n this.closeEdit.emit(focusNext);\n },\n );\n // if editor is function\n } else {\n this.currentEditor = this.editor(\n this.column,\n // save callback\n (e, preventFocus) => {\n this.onSave(e, preventFocus);\n },\n // cancel callback\n focusNext => {\n this.preventSaveOnClose = true;\n this.closeEdit.emit(focusNext);\n },\n );\n }\n return;\n }\n // Default text editor usage\n this.currentEditor = new TextEditor(this.column, (e, preventFocus) =>\n this.onSave(e, preventFocus),\n );\n }\n\n componentDidRender() {\n if (!this.currentEditor) {\n return;\n }\n this.currentEditor.element = this.element.firstElementChild;\n this.currentEditor.componentDidRender?.();\n }\n\n disconnectedCallback() {\n if (this.saveOnClose) {\n // Can not be cancelled by `preventSaveOnClose` prop.\n // Editor requires `getValue` to be able to save.\n if (!this.preventSaveOnClose) {\n this.onAutoSave();\n }\n }\n\n this.preventSaveOnClose = false;\n if (!this.currentEditor) {\n return;\n }\n\n this.currentEditor.disconnectedCallback?.();\n this.currentEditor.element = null;\n this.currentEditor = null;\n }\n\n render() {\n if (this.currentEditor) {\n this.currentEditor.editCell = this.editCell;\n return (\n <Host class={EDIT_INPUT_WR}>\n {this.currentEditor.render(h, this.additionalData)}\n </Host>\n );\n }\n return '';\n }\n}\n"]}
@@ -24,7 +24,13 @@ import { h } from "@stencil/core";
24
24
  */
25
25
  export class RevoGridExtra {
26
26
  constructor() {
27
+ /**
28
+ * Nodes to render
29
+ */
27
30
  this.nodes = [];
31
+ /**
32
+ * Force component to re-render
33
+ */
28
34
  this.update = 1;
29
35
  }
30
36
  /**
@@ -59,6 +65,7 @@ export class RevoGridExtra {
59
65
  return {
60
66
  "nodes": {
61
67
  "type": "unknown",
68
+ "attribute": "nodes",
62
69
  "mutable": false,
63
70
  "complexType": {
64
71
  "original": "(\n | VNode\n | ((c: ExtraNodeFuncConfig) => VNode)\n )[]",
@@ -1 +1 @@
1
- {"version":3,"file":"revogr-extra.js","sourceRoot":"","sources":["../../../src/components/extra/revogr-extra.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAS,MAAM,eAAe,CAAC;AAGzE;;;;;;;;;;;;;;;;;;;GAmBG;AAIH,MAAM,OAAO,aAAa;;qBAOlB,EAAE;sBAIU,CAAC;;IAEnB;;;OAGG;IACO,KAAK,CAAC,OAAO;QACrB,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,MAAM;;QACJ,OAAO,MAAA,IAAI,CAAC,KAAK,0CAAE,GAAG,CAAC,IAAI,CAAC,EAAE;YAC5B,qDAAqD;YACrD,uEAAuE;YACvE,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE,CAAC;gBAC/B,MAAM,MAAM,GAAiC,EAAE,CAAC;gBAChD,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,WAAC,OAAA,MAAA,MAAM,CAAC,OAAO,sDAAI,CAAA,EAAA,EAAE,CAAC,CAAC,CAAC;gBAErE,OAAO,CACL,oBACE,KAAK,EAAE,QAAQ,EAAE,EACjB,GAAG,EAAE,CAAC,EAA2B,EAAE,EAAE;wBACnC,IAAI,EAAE,EAAE,CAAC;4BACP,sCAAsC;4BACtC,MAAM,CAAC,OAAO,GAAG,GAAG,EAAE;gCACpB,EAAE,CAAC,KAAK,GAAG,QAAQ,EAAE,CAAC;4BACxB,CAAC,CAAC;wBACJ,CAAC;oBACH,CAAC,GACD,CACH,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { h, Component, Method, Prop, State, VNode } from '@stencil/core';\nimport type { ExtraNodeFuncConfig } from '@type';\n\n/**\n * Contains extra elements for stencil components.\n * Performs rendering and updates for external components.\n * \n * @example\n * In Plugins if you want to add extra elements to grid and use stenciljs vnodes reactivity:\n * function paginationPanel(this: PaginationPlugin, config: { refresh: () => void }) {\n * // use `config.refresh()` for component to re-render\n * return h('div')\n * }\n * \n * revogrid.registerVNode = [\n * ...existingNodes,\n * paginationPanel.bind(this)\n * ];\n\n\n/**\n * @internal\n */\n@Component({\n tag: 'revogr-extra',\n})\nexport class RevoGridExtra {\n /**\n * Nodes to render\n */\n @Prop() nodes: (\n | VNode\n | ((c: ExtraNodeFuncConfig) => VNode)\n )[] = [];\n /**\n * Force component to re-render\n */\n @State() update = 1;\n\n /**\n * Refreshes the extra component. Useful if you want to manually\n * force the component to re-render.\n */\n @Method() async refresh() {\n this.update *= -1;\n }\n\n render() {\n return this.nodes?.map(node => {\n // Check if node is a function or a stencil component\n // If function wrap it in a stencil component with the refresh function\n if (typeof node === 'function') {\n const config: Partial<ExtraNodeFuncConfig> = {};\n const getNodes = () => [node({ refresh: () => config.refresh?.() })];\n\n return (\n <revogr-extra\n nodes={getNodes()}\n ref={(el?: HTMLRevogrExtraElement) => {\n if (el) {\n // Update exclusively for current node\n config.refresh = () => {\n el.nodes = getNodes();\n };\n }\n }}\n />\n );\n }\n return node;\n });\n }\n}\n"]}
1
+ {"version":3,"file":"revogr-extra.js","sourceRoot":"","sources":["../../../src/components/extra/revogr-extra.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAS,MAAM,eAAe,CAAC;AAGzE;;;;;;;;;;;;;;;;;;;GAmBG;AAIH,MAAM,OAAO,aAAa;IAH1B;QAIE;;WAEG;QACK,UAAK,GAGP,EAAE,CAAC;QACT;;WAEG;QACM,WAAM,GAAG,CAAC,CAAC;KAmCrB;IAjCC;;;OAGG;IACO,KAAK,CAAC,OAAO;QACrB,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,MAAM;;QACJ,OAAO,MAAA,IAAI,CAAC,KAAK,0CAAE,GAAG,CAAC,IAAI,CAAC,EAAE;YAC5B,qDAAqD;YACrD,uEAAuE;YACvE,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE,CAAC;gBAC/B,MAAM,MAAM,GAAiC,EAAE,CAAC;gBAChD,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,WAAC,OAAA,MAAA,MAAM,CAAC,OAAO,sDAAI,CAAA,EAAA,EAAE,CAAC,CAAC,CAAC;gBAErE,OAAO,CACL,oBACE,KAAK,EAAE,QAAQ,EAAE,EACjB,GAAG,EAAE,CAAC,EAA2B,EAAE,EAAE;wBACnC,IAAI,EAAE,EAAE,CAAC;4BACP,sCAAsC;4BACtC,MAAM,CAAC,OAAO,GAAG,GAAG,EAAE;gCACpB,EAAE,CAAC,KAAK,GAAG,QAAQ,EAAE,CAAC;4BACxB,CAAC,CAAC;wBACJ,CAAC;oBACH,CAAC,GACD,CACH,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { h, Component, Method, Prop, State, VNode } from '@stencil/core';\nimport type { ExtraNodeFuncConfig } from '@type';\n\n/**\n * Contains extra elements for stencil components.\n * Performs rendering and updates for external components.\n * \n * @example\n * In Plugins if you want to add extra elements to grid and use stenciljs vnodes reactivity:\n * function paginationPanel(this: PaginationPlugin, config: { refresh: () => void }) {\n * // use `config.refresh()` for component to re-render\n * return h('div')\n * }\n * \n * revogrid.registerVNode = [\n * ...existingNodes,\n * paginationPanel.bind(this)\n * ];\n\n\n/**\n * @internal\n */\n@Component({\n tag: 'revogr-extra',\n})\nexport class RevoGridExtra {\n /**\n * Nodes to render\n */\n @Prop() nodes: (\n | VNode\n | ((c: ExtraNodeFuncConfig) => VNode)\n )[] = [];\n /**\n * Force component to re-render\n */\n @State() update = 1;\n\n /**\n * Refreshes the extra component. Useful if you want to manually\n * force the component to re-render.\n */\n @Method() async refresh() {\n this.update *= -1;\n }\n\n render() {\n return this.nodes?.map(node => {\n // Check if node is a function or a stencil component\n // If function wrap it in a stencil component with the refresh function\n if (typeof node === 'function') {\n const config: Partial<ExtraNodeFuncConfig> = {};\n const getNodes = () => [node({ refresh: () => config.refresh?.() })];\n\n return (\n <revogr-extra\n nodes={getNodes()}\n ref={(el?: HTMLRevogrExtraElement) => {\n if (el) {\n // Update exclusively for current node\n config.refresh = () => {\n el.nodes = getNodes();\n };\n }\n }}\n />\n );\n }\n return node;\n });\n }\n}\n"]}
@@ -9,17 +9,13 @@ import HeaderRenderer from "./header-renderer";
9
9
  import GroupHeaderRenderer from "./header-group-renderer";
10
10
  export class RevogrHeaderComponent {
11
11
  constructor() {
12
- this.viewportCol = undefined;
13
- this.dimensionCol = undefined;
14
- this.selectionStore = undefined;
15
- this.groups = undefined;
12
+ /**
13
+ * Grouping depth, how many levels of grouping
14
+ */
16
15
  this.groupingDepth = 0;
17
- this.readonly = undefined;
18
- this.canResize = undefined;
19
- this.resizeHandler = undefined;
20
- this.colData = undefined;
21
- this.columnFilter = undefined;
22
- this.type = undefined;
16
+ /**
17
+ * Extra properties to pass into header renderer, such as vue or react components to handle parent
18
+ */
23
19
  this.additionalData = {};
24
20
  }
25
21
  onResize({ width }, index) {
@@ -141,6 +137,7 @@ export class RevogrHeaderComponent {
141
137
  return {
142
138
  "viewportCol": {
143
139
  "type": "unknown",
140
+ "attribute": "viewport-col",
144
141
  "mutable": false,
145
142
  "complexType": {
146
143
  "original": "Observable<ViewportState>",
@@ -169,6 +166,7 @@ export class RevogrHeaderComponent {
169
166
  },
170
167
  "dimensionCol": {
171
168
  "type": "unknown",
169
+ "attribute": "dimension-col",
172
170
  "mutable": false,
173
171
  "complexType": {
174
172
  "original": "Observable<DimensionSettingsState>",
@@ -197,6 +195,7 @@ export class RevogrHeaderComponent {
197
195
  },
198
196
  "selectionStore": {
199
197
  "type": "unknown",
198
+ "attribute": "selection-store",
200
199
  "mutable": false,
201
200
  "complexType": {
202
201
  "original": "Observable<SelectionStoreState>",
@@ -225,6 +224,7 @@ export class RevogrHeaderComponent {
225
224
  },
226
225
  "groups": {
227
226
  "type": "unknown",
227
+ "attribute": "groups",
228
228
  "mutable": false,
229
229
  "complexType": {
230
230
  "original": "Groups",
@@ -248,6 +248,7 @@ export class RevogrHeaderComponent {
248
248
  },
249
249
  "groupingDepth": {
250
250
  "type": "number",
251
+ "attribute": "grouping-depth",
251
252
  "mutable": false,
252
253
  "complexType": {
253
254
  "original": "number",
@@ -262,12 +263,12 @@ export class RevogrHeaderComponent {
262
263
  },
263
264
  "getter": false,
264
265
  "setter": false,
265
- "attribute": "grouping-depth",
266
266
  "reflect": false,
267
267
  "defaultValue": "0"
268
268
  },
269
269
  "readonly": {
270
270
  "type": "boolean",
271
+ "attribute": "readonly",
271
272
  "mutable": false,
272
273
  "complexType": {
273
274
  "original": "boolean",
@@ -282,11 +283,11 @@ export class RevogrHeaderComponent {
282
283
  },
283
284
  "getter": false,
284
285
  "setter": false,
285
- "attribute": "readonly",
286
286
  "reflect": false
287
287
  },
288
288
  "canResize": {
289
289
  "type": "boolean",
290
+ "attribute": "can-resize",
290
291
  "mutable": false,
291
292
  "complexType": {
292
293
  "original": "boolean",
@@ -301,11 +302,11 @@ export class RevogrHeaderComponent {
301
302
  },
302
303
  "getter": false,
303
304
  "setter": false,
304
- "attribute": "can-resize",
305
305
  "reflect": false
306
306
  },
307
307
  "resizeHandler": {
308
308
  "type": "unknown",
309
+ "attribute": "resize-handler",
309
310
  "mutable": false,
310
311
  "complexType": {
311
312
  "original": "ResizeProps['active']",
@@ -329,6 +330,7 @@ export class RevogrHeaderComponent {
329
330
  },
330
331
  "colData": {
331
332
  "type": "unknown",
333
+ "attribute": "col-data",
332
334
  "mutable": false,
333
335
  "complexType": {
334
336
  "original": "ColumnRegular[]",
@@ -352,6 +354,7 @@ export class RevogrHeaderComponent {
352
354
  },
353
355
  "columnFilter": {
354
356
  "type": "boolean",
357
+ "attribute": "column-filter",
355
358
  "mutable": false,
356
359
  "complexType": {
357
360
  "original": "boolean",
@@ -366,11 +369,11 @@ export class RevogrHeaderComponent {
366
369
  },
367
370
  "getter": false,
368
371
  "setter": false,
369
- "attribute": "column-filter",
370
372
  "reflect": false
371
373
  },
372
374
  "type": {
373
375
  "type": "string",
376
+ "attribute": "type",
374
377
  "mutable": false,
375
378
  "complexType": {
376
379
  "original": "DimensionCols | 'rowHeaders'",
@@ -391,11 +394,11 @@ export class RevogrHeaderComponent {
391
394
  },
392
395
  "getter": false,
393
396
  "setter": false,
394
- "attribute": "type",
395
397
  "reflect": false
396
398
  },
397
399
  "additionalData": {
398
400
  "type": "any",
401
+ "attribute": "additional-data",
399
402
  "mutable": false,
400
403
  "complexType": {
401
404
  "original": "any",
@@ -410,7 +413,6 @@ export class RevogrHeaderComponent {
410
413
  },
411
414
  "getter": false,
412
415
  "setter": false,
413
- "attribute": "additional-data",
414
416
  "reflect": false,
415
417
  "defaultValue": "{}"
416
418
  }
@@ -1 +1 @@
1
- {"version":3,"file":"revogr-header.js","sourceRoot":"","sources":["../../../src/components/header/revogr-header.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Prop,\n type VNode,\n} from '@stencil/core';\nimport keyBy from 'lodash/keyBy';\n\nimport { getItemByIndex, Groups } from '@store';\nimport { HEADER_ACTUAL_ROW_CLASS, HEADER_ROW_CLASS } from '../../utils/consts';\nimport HeaderRenderer, { HeaderRenderProps } from './header-renderer';\nimport { ResizeProps } from './resizable.directive';\nimport type {\n ColumnRegular,\n DimensionSettingsState,\n InitialHeaderClick,\n ViewportState,\n ViewSettingSizeProp,\n DimensionCols,\n SelectionStoreState,\n RangeArea,\n VirtualPositionItem,\n ProvidersColumns,\n} from '@type';\nimport type { Observable } from '../../utils';\nimport GroupHeaderRenderer, {\n HeaderGroupRendererProps,\n} from './header-group-renderer';\n\n@Component({\n tag: 'revogr-header',\n styleUrl: 'revogr-header-style.scss',\n})\nexport class RevogrHeaderComponent {\n // #region Properties\n /**\n * Stores\n */\n /** Viewport X */\n @Prop() viewportCol: Observable<ViewportState>;\n /** Dimension settings X */\n @Prop() dimensionCol: Observable<DimensionSettingsState>;\n /** Selection, range, focus */\n @Prop() selectionStore: Observable<SelectionStoreState>;\n\n /**\n * Column groups\n */\n @Prop() groups: Groups;\n /**\n * Grouping depth, how many levels of grouping\n */\n @Prop() groupingDepth = 0;\n\n /**\n * Readonly mode\n */\n @Prop() readonly: boolean;\n /**\n * If columns can be resized\n */\n @Prop() canResize: boolean;\n /**\n * Defines resize position\n */\n @Prop() resizeHandler: ResizeProps['active'];\n\n /**\n * Columns - defines an array of grid columns.\n */\n @Prop() colData: ColumnRegular[];\n\n /**\n * Column filter\n */\n @Prop() columnFilter: boolean;\n\n /**\n * Column type\n */\n @Prop() type!: DimensionCols | 'rowHeaders';\n\n /**\n * Extra properties to pass into header renderer, such as vue or react components to handle parent\n */\n @Prop() additionalData: any = {};\n // #endregion\n\n // #region Events\n\n /**\n * On initial header click\n */\n @Event({\n eventName: 'beforeheaderclick',\n })\n initialHeaderClick: EventEmitter<InitialHeaderClick>;\n\n /**\n * On header resize\n */\n @Event({\n eventName: 'headerresize',\n })\n headerresize: EventEmitter<ViewSettingSizeProp>;\n\n /**\n * On before header resize\n */\n @Event({ eventName: 'beforeheaderresize', cancelable: true })\n beforeResize: EventEmitter<ColumnRegular[]>;\n\n /**\n * On header double click\n */\n @Event({\n eventName: 'headerdblclick',\n })\n headerdblClick: EventEmitter<InitialHeaderClick>;\n\n /**\n * Before each header cell render function. Allows to override cell properties\n */\n @Event({ eventName: 'beforeheaderrender' })\n beforeHeaderRender: EventEmitter<HeaderRenderProps>;\n\n /**\n * Before each group header cell render function. Allows to override group header cell properties\n */\n @Event({ eventName: 'beforegroupheaderrender' })\n beforeGroupHeaderRender: EventEmitter<HeaderGroupRendererProps>;\n\n /**\n * After all header cells rendered. Finalizes cell rendering.\n */\n @Event({ eventName: 'afterheaderrender' })\n afterHeaderRender: EventEmitter<ProvidersColumns>;\n\n // #endregion\n\n @Element() element!: HTMLElement;\n\n private onResize({ width }: { width?: number }, index: number) {\n const col = this.colData[index];\n const event = this.beforeResize.emit([\n {\n ...col,\n size: width || undefined,\n },\n ]);\n if (event.defaultPrevented) {\n return;\n }\n this.headerresize.emit({ [index]: width || 0 });\n }\n\n private onResizeGroup(\n changedX: number,\n startIndex: number,\n endIndex: number,\n ) {\n const sizes: ViewSettingSizeProp = {};\n const cols = keyBy(this.viewportCol.get('items'), 'itemIndex');\n const change = changedX / (endIndex - startIndex + 1);\n for (let i = startIndex; i <= endIndex; i++) {\n const item = cols[i];\n if (item) {\n sizes[i] = item.size + change;\n }\n }\n this.headerresize.emit(sizes);\n }\n\n componentDidRender() {\n this.afterHeaderRender.emit(this.providers);\n }\n\n render() {\n const cols = this.viewportCol.get('items');\n const range = this.selectionStore?.get('range');\n\n const { cells } = this.renderHeaderColumns(cols, range);\n const groupRow = this.renderGroupingColumns();\n\n return [\n <div class=\"group-rgRow\">{groupRow}</div>,\n <div class={`${HEADER_ROW_CLASS} ${HEADER_ACTUAL_ROW_CLASS}`}>\n {cells}\n </div>,\n ];\n }\n\n private renderHeaderColumns(\n cols: VirtualPositionItem[],\n range: RangeArea | null,\n ) {\n const cells: VNode[] = [];\n for (let rgCol of cols) {\n const colData = this.colData[rgCol.itemIndex];\n const props: HeaderRenderProps = {\n range,\n column: rgCol,\n data: {\n ...colData,\n index: rgCol.itemIndex,\n providers: this.providers,\n },\n canFilter: !!this.columnFilter,\n canResize: this.canResize,\n active: this.resizeHandler,\n additionalData: this.additionalData,\n onResize: e => this.onResize(e, rgCol.itemIndex),\n onDblClick: e => this.headerdblClick.emit(e),\n onClick: e => this.initialHeaderClick.emit(e),\n };\n const event = this.beforeHeaderRender.emit(props);\n if (!event.defaultPrevented) {\n cells.push(<HeaderRenderer {...event.detail} />);\n }\n }\n return { cells };\n }\n\n private renderGroupingColumns(): VNode[] {\n const groupRow: VNode[] = [];\n for (let i = 0; i < this.groupingDepth; i++) {\n if (this.groups[i]) {\n for (let group of this.groups[i]) {\n const groupStartIndex = group.indexes[0] ?? -1;\n if (groupStartIndex > -1) {\n const groupEndIndex = groupStartIndex + group.indexes.length - 1;\n\n const groupStart = getItemByIndex(\n this.dimensionCol.state,\n groupStartIndex,\n ).start;\n const groupEnd = getItemByIndex(\n this.dimensionCol.state,\n groupEndIndex,\n ).end;\n\n const props: HeaderGroupRendererProps = {\n providers: this.providers,\n start: groupStart,\n end: groupEnd,\n group,\n active: this.resizeHandler,\n canResize: this.canResize,\n additionalData: this.additionalData,\n onResize: e =>\n this.onResizeGroup(\n e.changedX ?? 0,\n groupStartIndex,\n groupEndIndex,\n ),\n };\n const event = this.beforeGroupHeaderRender.emit(props);\n if (!event.defaultPrevented) {\n groupRow.push(<GroupHeaderRenderer {...event.detail} />);\n }\n }\n }\n }\n groupRow.push(<div class={`${HEADER_ROW_CLASS} group`} />);\n }\n return groupRow;\n }\n\n get providers(): ProvidersColumns<DimensionCols | 'rowHeaders'> {\n return {\n type: this.type,\n readonly: this.readonly,\n data: this.colData,\n viewport: this.viewportCol,\n dimension: this.dimensionCol,\n selection: this.selectionStore,\n };\n }\n}\n"]}
1
+ {"version":3,"file":"revogr-header.js","sourceRoot":"","sources":["../../../src/components/header/revogr-header.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Prop,\n type VNode,\n} from '@stencil/core';\nimport keyBy from 'lodash/keyBy';\n\nimport { getItemByIndex, Groups } from '@store';\nimport { HEADER_ACTUAL_ROW_CLASS, HEADER_ROW_CLASS } from '../../utils/consts';\nimport HeaderRenderer, { HeaderRenderProps } from './header-renderer';\nimport { ResizeProps } from './resizable.directive';\nimport type {\n ColumnRegular,\n DimensionSettingsState,\n InitialHeaderClick,\n ViewportState,\n ViewSettingSizeProp,\n DimensionCols,\n SelectionStoreState,\n RangeArea,\n VirtualPositionItem,\n ProvidersColumns,\n} from '@type';\nimport type { Observable } from '../../utils';\nimport GroupHeaderRenderer, {\n HeaderGroupRendererProps,\n} from './header-group-renderer';\n\n@Component({\n tag: 'revogr-header',\n styleUrl: 'revogr-header-style.scss',\n})\nexport class RevogrHeaderComponent {\n // #region Properties\n /**\n * Stores\n */\n /** Viewport X */\n @Prop() viewportCol: Observable<ViewportState>;\n /** Dimension settings X */\n @Prop() dimensionCol: Observable<DimensionSettingsState>;\n /** Selection, range, focus */\n @Prop() selectionStore: Observable<SelectionStoreState>;\n\n /**\n * Column groups\n */\n @Prop() groups: Groups;\n /**\n * Grouping depth, how many levels of grouping\n */\n @Prop() groupingDepth = 0;\n\n /**\n * Readonly mode\n */\n @Prop() readonly: boolean;\n /**\n * If columns can be resized\n */\n @Prop() canResize: boolean;\n /**\n * Defines resize position\n */\n @Prop() resizeHandler: ResizeProps['active'];\n\n /**\n * Columns - defines an array of grid columns.\n */\n @Prop() colData: ColumnRegular[];\n\n /**\n * Column filter\n */\n @Prop() columnFilter: boolean;\n\n /**\n * Column type\n */\n @Prop() type!: DimensionCols | 'rowHeaders';\n\n /**\n * Extra properties to pass into header renderer, such as vue or react components to handle parent\n */\n @Prop() additionalData: any = {};\n // #endregion\n\n // #region Events\n\n /**\n * On initial header click\n */\n @Event({\n eventName: 'beforeheaderclick',\n })\n initialHeaderClick: EventEmitter<InitialHeaderClick>;\n\n /**\n * On header resize\n */\n @Event({\n eventName: 'headerresize',\n })\n headerresize: EventEmitter<ViewSettingSizeProp>;\n\n /**\n * On before header resize\n */\n @Event({ eventName: 'beforeheaderresize', cancelable: true })\n beforeResize: EventEmitter<ColumnRegular[]>;\n\n /**\n * On header double click\n */\n @Event({\n eventName: 'headerdblclick',\n })\n headerdblClick: EventEmitter<InitialHeaderClick>;\n\n /**\n * Before each header cell render function. Allows to override cell properties\n */\n @Event({ eventName: 'beforeheaderrender' })\n beforeHeaderRender: EventEmitter<HeaderRenderProps>;\n\n /**\n * Before each group header cell render function. Allows to override group header cell properties\n */\n @Event({ eventName: 'beforegroupheaderrender' })\n beforeGroupHeaderRender: EventEmitter<HeaderGroupRendererProps>;\n\n /**\n * After all header cells rendered. Finalizes cell rendering.\n */\n @Event({ eventName: 'afterheaderrender' })\n afterHeaderRender: EventEmitter<ProvidersColumns>;\n\n // #endregion\n\n @Element() element!: HTMLElement;\n\n private onResize({ width }: { width?: number }, index: number) {\n const col = this.colData[index];\n const event = this.beforeResize.emit([\n {\n ...col,\n size: width || undefined,\n },\n ]);\n if (event.defaultPrevented) {\n return;\n }\n this.headerresize.emit({ [index]: width || 0 });\n }\n\n private onResizeGroup(\n changedX: number,\n startIndex: number,\n endIndex: number,\n ) {\n const sizes: ViewSettingSizeProp = {};\n const cols = keyBy(this.viewportCol.get('items'), 'itemIndex');\n const change = changedX / (endIndex - startIndex + 1);\n for (let i = startIndex; i <= endIndex; i++) {\n const item = cols[i];\n if (item) {\n sizes[i] = item.size + change;\n }\n }\n this.headerresize.emit(sizes);\n }\n\n componentDidRender() {\n this.afterHeaderRender.emit(this.providers);\n }\n\n render() {\n const cols = this.viewportCol.get('items');\n const range = this.selectionStore?.get('range');\n\n const { cells } = this.renderHeaderColumns(cols, range);\n const groupRow = this.renderGroupingColumns();\n\n return [\n <div class=\"group-rgRow\">{groupRow}</div>,\n <div class={`${HEADER_ROW_CLASS} ${HEADER_ACTUAL_ROW_CLASS}`}>\n {cells}\n </div>,\n ];\n }\n\n private renderHeaderColumns(\n cols: VirtualPositionItem[],\n range: RangeArea | null,\n ) {\n const cells: VNode[] = [];\n for (let rgCol of cols) {\n const colData = this.colData[rgCol.itemIndex];\n const props: HeaderRenderProps = {\n range,\n column: rgCol,\n data: {\n ...colData,\n index: rgCol.itemIndex,\n providers: this.providers,\n },\n canFilter: !!this.columnFilter,\n canResize: this.canResize,\n active: this.resizeHandler,\n additionalData: this.additionalData,\n onResize: e => this.onResize(e, rgCol.itemIndex),\n onDblClick: e => this.headerdblClick.emit(e),\n onClick: e => this.initialHeaderClick.emit(e),\n };\n const event = this.beforeHeaderRender.emit(props);\n if (!event.defaultPrevented) {\n cells.push(<HeaderRenderer {...event.detail} />);\n }\n }\n return { cells };\n }\n\n private renderGroupingColumns(): VNode[] {\n const groupRow: VNode[] = [];\n for (let i = 0; i < this.groupingDepth; i++) {\n if (this.groups[i]) {\n for (let group of this.groups[i]) {\n const groupStartIndex = group.indexes[0] ?? -1;\n if (groupStartIndex > -1) {\n const groupEndIndex = groupStartIndex + group.indexes.length - 1;\n\n const groupStart = getItemByIndex(\n this.dimensionCol.state,\n groupStartIndex,\n ).start;\n const groupEnd = getItemByIndex(\n this.dimensionCol.state,\n groupEndIndex,\n ).end;\n\n const props: HeaderGroupRendererProps = {\n providers: this.providers,\n start: groupStart,\n end: groupEnd,\n group,\n active: this.resizeHandler,\n canResize: this.canResize,\n additionalData: this.additionalData,\n onResize: e =>\n this.onResizeGroup(\n e.changedX ?? 0,\n groupStartIndex,\n groupEndIndex,\n ),\n };\n const event = this.beforeGroupHeaderRender.emit(props);\n if (!event.defaultPrevented) {\n groupRow.push(<GroupHeaderRenderer {...event.detail} />);\n }\n }\n }\n }\n groupRow.push(<div class={`${HEADER_ROW_CLASS} group`} />);\n }\n return groupRow;\n }\n\n get providers(): ProvidersColumns<DimensionCols | 'rowHeaders'> {\n return {\n type: this.type,\n readonly: this.readonly,\n data: this.colData,\n viewport: this.viewportCol,\n dimension: this.dimensionCol,\n selection: this.selectionStore,\n };\n }\n}\n"]}