balala-revogrid 1.0.0

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 (760) hide show
  1. package/LICENSE +21 -0
  2. package/dist/cjs/app-globals-D67EXhgK.js +16 -0
  3. package/dist/cjs/app-globals-D67EXhgK.js.map +1 -0
  4. package/dist/cjs/cell-renderer-B87qecTb.js +57 -0
  5. package/dist/cjs/cell-renderer-B87qecTb.js.map +1 -0
  6. package/dist/cjs/debounce-CcpHiH2p.js +498 -0
  7. package/dist/cjs/debounce-CcpHiH2p.js.map +1 -0
  8. package/dist/cjs/dimension.helpers-DA9-xqPT.js +3606 -0
  9. package/dist/cjs/dimension.helpers-DA9-xqPT.js.map +1 -0
  10. package/dist/cjs/edit.utils-CKsIiHlD.js +113 -0
  11. package/dist/cjs/edit.utils-CKsIiHlD.js.map +1 -0
  12. package/dist/cjs/events-DeLDyZlb.js +46 -0
  13. package/dist/cjs/events-DeLDyZlb.js.map +1 -0
  14. package/dist/cjs/filter.button-DSsWNs23.js +49 -0
  15. package/dist/cjs/filter.button-DSsWNs23.js.map +1 -0
  16. package/dist/cjs/grouping.row.renderer-BqR0ytMi.js +64 -0
  17. package/dist/cjs/grouping.row.renderer-BqR0ytMi.js.map +1 -0
  18. package/dist/cjs/header-cell-renderer-D-RjAVfe.js +1766 -0
  19. package/dist/cjs/header-cell-renderer-D-RjAVfe.js.map +1 -0
  20. package/dist/cjs/index-BF1c1pO3.js +2549 -0
  21. package/dist/cjs/index-BF1c1pO3.js.map +1 -0
  22. package/dist/cjs/index.cjs.js +6426 -0
  23. package/dist/cjs/index.cjs.js.map +1 -0
  24. package/dist/cjs/loader.cjs.js +19 -0
  25. package/dist/cjs/loader.cjs.js.map +1 -0
  26. package/dist/cjs/revo-grid.cjs.entry.js +3215 -0
  27. package/dist/cjs/revo-grid.cjs.entry.js.map +1 -0
  28. package/dist/cjs/revo-grid.cjs.js +31 -0
  29. package/dist/cjs/revo-grid.cjs.js.map +1 -0
  30. package/dist/cjs/revo-grid.entry.cjs.js.map +1 -0
  31. package/dist/cjs/revogr-attribution.revogr-extra.revogr-focus.revogr-grouping-overlay.revogr-header-unified.revogr-overlay-selection.revogr-row-headers.revogr-scroll-virtual.revogr-temp-range.entry.cjs.js.map +1 -0
  32. package/dist/cjs/revogr-attribution_9.cjs.entry.js +2629 -0
  33. package/dist/cjs/revogr-attribution_9.cjs.entry.js.map +1 -0
  34. package/dist/cjs/revogr-clipboard.revogr-edit.revogr-order-editor.entry.cjs.js.map +1 -0
  35. package/dist/cjs/revogr-clipboard_3.cjs.entry.js +471 -0
  36. package/dist/cjs/revogr-clipboard_3.cjs.entry.js.map +1 -0
  37. package/dist/cjs/revogr-data.revogr-header.revogr-viewport-scroll.vnode-html.entry.cjs.js.map +1 -0
  38. package/dist/cjs/revogr-data_4.cjs.entry.js +1420 -0
  39. package/dist/cjs/revogr-data_4.cjs.entry.js.map +1 -0
  40. package/dist/cjs/revogr-filter-panel.cjs.entry.js +382 -0
  41. package/dist/cjs/revogr-filter-panel.cjs.entry.js.map +1 -0
  42. package/dist/cjs/revogr-filter-panel.entry.cjs.js.map +1 -0
  43. package/dist/cjs/row-renderer-BTE7VKD9.js +49 -0
  44. package/dist/cjs/row-renderer-BTE7VKD9.js.map +1 -0
  45. package/dist/cjs/text-editor-BdhmcrkS.js +81 -0
  46. package/dist/cjs/text-editor-BdhmcrkS.js.map +1 -0
  47. package/dist/cjs/throttle-2ZxfGjEI.js +533 -0
  48. package/dist/cjs/throttle-2ZxfGjEI.js.map +1 -0
  49. package/dist/cjs/tree-data.plugin-BRjwZtxI.js +5350 -0
  50. package/dist/cjs/tree-data.plugin-BRjwZtxI.js.map +1 -0
  51. package/dist/cjs/viewport.helpers-BAovztDd.js +61 -0
  52. package/dist/cjs/viewport.helpers-BAovztDd.js.map +1 -0
  53. package/dist/cjs/viewport.store-BTbPlyF-.js +525 -0
  54. package/dist/cjs/viewport.store-BTbPlyF-.js.map +1 -0
  55. package/dist/collection/collection-manifest.json +30 -0
  56. package/dist/collection/components/attribution/revogr-attribution.js +20 -0
  57. package/dist/collection/components/attribution/revogr-attribution.js.map +1 -0
  58. package/dist/collection/components/clipboard/revogr-clipboard.js +411 -0
  59. package/dist/collection/components/clipboard/revogr-clipboard.js.map +1 -0
  60. package/dist/collection/components/data/cell-renderer.js +44 -0
  61. package/dist/collection/components/data/cell-renderer.js.map +1 -0
  62. package/dist/collection/components/data/column.service.js +333 -0
  63. package/dist/collection/components/data/column.service.js.map +1 -0
  64. package/dist/collection/components/data/revogr-data-style.css +95 -0
  65. package/dist/collection/components/data/revogr-data.js +939 -0
  66. package/dist/collection/components/data/revogr-data.js.map +1 -0
  67. package/dist/collection/components/data/row-highlight.plugin.js +51 -0
  68. package/dist/collection/components/data/row-highlight.plugin.js.map +1 -0
  69. package/dist/collection/components/data/row-renderer.js +37 -0
  70. package/dist/collection/components/data/row-renderer.js.map +1 -0
  71. package/dist/collection/components/editors/edit.utils.js +13 -0
  72. package/dist/collection/components/editors/edit.utils.js.map +1 -0
  73. package/dist/collection/components/editors/revogr-edit-style.css +16 -0
  74. package/dist/collection/components/editors/revogr-edit.js +346 -0
  75. package/dist/collection/components/editors/revogr-edit.js.map +1 -0
  76. package/dist/collection/components/editors/text-editor.js +74 -0
  77. package/dist/collection/components/editors/text-editor.js.map +1 -0
  78. package/dist/collection/components/extra/revogr-extra.js +125 -0
  79. package/dist/collection/components/extra/revogr-extra.js.map +1 -0
  80. package/dist/collection/components/grouping-overlay/revogr-grouping-overlay.css +62 -0
  81. package/dist/collection/components/grouping-overlay/revogr-grouping-overlay.js +644 -0
  82. package/dist/collection/components/grouping-overlay/revogr-grouping-overlay.js.map +1 -0
  83. package/dist/collection/components/header/header-cell-renderer.js +49 -0
  84. package/dist/collection/components/header/header-cell-renderer.js.map +1 -0
  85. package/dist/collection/components/header/header-group-renderer.js +29 -0
  86. package/dist/collection/components/header/header-group-renderer.js.map +1 -0
  87. package/dist/collection/components/header/header-renderer.js +100 -0
  88. package/dist/collection/components/header/header-renderer.js.map +1 -0
  89. package/dist/collection/components/header/resizable.directive.js +274 -0
  90. package/dist/collection/components/header/resizable.directive.js.map +1 -0
  91. package/dist/collection/components/header/resizable.element.js +36 -0
  92. package/dist/collection/components/header/resizable.element.js.map +1 -0
  93. package/dist/collection/components/header/revogr-header-style.css +164 -0
  94. package/dist/collection/components/header/revogr-header-unified-style.css +205 -0
  95. package/dist/collection/components/header/revogr-header-unified.js +1013 -0
  96. package/dist/collection/components/header/revogr-header-unified.js.map +1 -0
  97. package/dist/collection/components/header/revogr-header.js +852 -0
  98. package/dist/collection/components/header/revogr-header.js.map +1 -0
  99. package/dist/collection/components/order/order-renderer.js +50 -0
  100. package/dist/collection/components/order/order-renderer.js.map +1 -0
  101. package/dist/collection/components/order/order-row.service.js +72 -0
  102. package/dist/collection/components/order/order-row.service.js.map +1 -0
  103. package/dist/collection/components/order/revogr-order-editor.js +461 -0
  104. package/dist/collection/components/order/revogr-order-editor.js.map +1 -0
  105. package/dist/collection/components/overlay/autofill.service.js +221 -0
  106. package/dist/collection/components/overlay/autofill.service.js.map +1 -0
  107. package/dist/collection/components/overlay/keyboard.service.js +178 -0
  108. package/dist/collection/components/overlay/keyboard.service.js.map +1 -0
  109. package/dist/collection/components/overlay/revogr-overlay-selection.js +1606 -0
  110. package/dist/collection/components/overlay/revogr-overlay-selection.js.map +1 -0
  111. package/dist/collection/components/overlay/revogr-overlay-style.css +95 -0
  112. package/dist/collection/components/overlay/selection.utils.js +136 -0
  113. package/dist/collection/components/overlay/selection.utils.js.map +1 -0
  114. package/dist/collection/components/revoGrid/grid.helpers.js +33 -0
  115. package/dist/collection/components/revoGrid/grid.helpers.js.map +1 -0
  116. package/dist/collection/components/revoGrid/plugin.service.js +81 -0
  117. package/dist/collection/components/revoGrid/plugin.service.js.map +1 -0
  118. package/dist/collection/components/revoGrid/revo-grid-style.css +897 -0
  119. package/dist/collection/components/revoGrid/revo-grid.js +4717 -0
  120. package/dist/collection/components/revoGrid/revo-grid.js.map +1 -0
  121. package/dist/collection/components/revoGrid/viewport.helpers.js +51 -0
  122. package/dist/collection/components/revoGrid/viewport.helpers.js.map +1 -0
  123. package/dist/collection/components/revoGrid/viewport.resize.service.js +55 -0
  124. package/dist/collection/components/revoGrid/viewport.resize.service.js.map +1 -0
  125. package/dist/collection/components/revoGrid/viewport.scrolling.service.js +139 -0
  126. package/dist/collection/components/revoGrid/viewport.scrolling.service.js.map +1 -0
  127. package/dist/collection/components/revoGrid/viewport.service.js +253 -0
  128. package/dist/collection/components/revoGrid/viewport.service.js.map +1 -0
  129. package/dist/collection/components/rowHeaders/revogr-row-headers.js +291 -0
  130. package/dist/collection/components/rowHeaders/revogr-row-headers.js.map +1 -0
  131. package/dist/collection/components/rowHeaders/row-header-render.js +5 -0
  132. package/dist/collection/components/rowHeaders/row-header-render.js.map +1 -0
  133. package/dist/collection/components/scroll/revogr-viewport-scroll-style.css +70 -0
  134. package/dist/collection/components/scroll/revogr-viewport-scroll.js +938 -0
  135. package/dist/collection/components/scroll/revogr-viewport-scroll.js.map +1 -0
  136. package/dist/collection/components/scrollable/autohide-scroll.plugin.js +44 -0
  137. package/dist/collection/components/scrollable/autohide-scroll.plugin.js.map +1 -0
  138. package/dist/collection/components/scrollable/revogr-scroll-style.css +34 -0
  139. package/dist/collection/components/scrollable/revogr-scroll-virtual.js +346 -0
  140. package/dist/collection/components/scrollable/revogr-scroll-virtual.js.map +1 -0
  141. package/dist/collection/components/selectionFocus/revogr-focus-style.css +7 -0
  142. package/dist/collection/components/selectionFocus/revogr-focus.js +429 -0
  143. package/dist/collection/components/selectionFocus/revogr-focus.js.map +1 -0
  144. package/dist/collection/components/selectionTempRange/revogr-temp-range-style.css +28 -0
  145. package/dist/collection/components/selectionTempRange/revogr-temp-range.js +171 -0
  146. package/dist/collection/components/selectionTempRange/revogr-temp-range.js.map +1 -0
  147. package/dist/collection/components/vnode/vnode-converter.js +84 -0
  148. package/dist/collection/components/vnode/vnode-converter.js.map +1 -0
  149. package/dist/collection/components/vnode/vnode.utils.js +18 -0
  150. package/dist/collection/components/vnode/vnode.utils.js.map +1 -0
  151. package/dist/collection/global/global.js +19 -0
  152. package/dist/collection/global/global.js.map +1 -0
  153. package/dist/collection/index.js +13 -0
  154. package/dist/collection/index.js.map +1 -0
  155. package/dist/collection/plugins/add-rows-on-paste.plugin.js +40 -0
  156. package/dist/collection/plugins/add-rows-on-paste.plugin.js.map +1 -0
  157. package/dist/collection/plugins/base.plugin.js +90 -0
  158. package/dist/collection/plugins/base.plugin.js.map +1 -0
  159. package/dist/collection/plugins/column-hide.plugin.js +532 -0
  160. package/dist/collection/plugins/column-hide.plugin.js.map +1 -0
  161. package/dist/collection/plugins/column-manage.plugin.js +1218 -0
  162. package/dist/collection/plugins/column-manage.plugin.js.map +1 -0
  163. package/dist/collection/plugins/column-stretch.plugin.js +921 -0
  164. package/dist/collection/plugins/column-stretch.plugin.js.map +1 -0
  165. package/dist/collection/plugins/column.auto-size.plugin.js +308 -0
  166. package/dist/collection/plugins/column.auto-size.plugin.js.map +1 -0
  167. package/dist/collection/plugins/column.stretch.plugin.js +96 -0
  168. package/dist/collection/plugins/column.stretch.plugin.js.map +1 -0
  169. package/dist/collection/plugins/customColumnDrag/column-move.helper.js +361 -0
  170. package/dist/collection/plugins/customColumnDrag/column-move.helper.js.map +1 -0
  171. package/dist/collection/plugins/customColumnDrag/custom-column-drag.plugin.js +145 -0
  172. package/dist/collection/plugins/customColumnDrag/custom-column-drag.plugin.js.map +1 -0
  173. package/dist/collection/plugins/customColumnDrag/drag.handler.js +726 -0
  174. package/dist/collection/plugins/customColumnDrag/drag.handler.js.map +1 -0
  175. package/dist/collection/plugins/customColumnDrag/example.js +282 -0
  176. package/dist/collection/plugins/customColumnDrag/example.js.map +1 -0
  177. package/dist/collection/plugins/customColumnDrag/index.js +8 -0
  178. package/dist/collection/plugins/customColumnDrag/index.js.map +1 -0
  179. package/dist/collection/plugins/customColumnDrag/types.js +2 -0
  180. package/dist/collection/plugins/customColumnDrag/types.js.map +1 -0
  181. package/dist/collection/plugins/dispatcher.js +40 -0
  182. package/dist/collection/plugins/dispatcher.js.map +1 -0
  183. package/dist/collection/plugins/enhanced-scrollbar.plugin.js +493 -0
  184. package/dist/collection/plugins/enhanced-scrollbar.plugin.js.map +1 -0
  185. package/dist/collection/plugins/export/csv.js +72 -0
  186. package/dist/collection/plugins/export/csv.js.map +1 -0
  187. package/dist/collection/plugins/export/export.plugin.js +157 -0
  188. package/dist/collection/plugins/export/export.plugin.js.map +1 -0
  189. package/dist/collection/plugins/export/types.js +2 -0
  190. package/dist/collection/plugins/export/types.js.map +1 -0
  191. package/dist/collection/plugins/filter/conditions/equal.js +21 -0
  192. package/dist/collection/plugins/filter/conditions/equal.js.map +1 -0
  193. package/dist/collection/plugins/filter/conditions/number/greaterThan.js +14 -0
  194. package/dist/collection/plugins/filter/conditions/number/greaterThan.js.map +1 -0
  195. package/dist/collection/plugins/filter/conditions/number/greaterThanOrEqual.js +11 -0
  196. package/dist/collection/plugins/filter/conditions/number/greaterThanOrEqual.js.map +1 -0
  197. package/dist/collection/plugins/filter/conditions/number/lessThan.js +16 -0
  198. package/dist/collection/plugins/filter/conditions/number/lessThan.js.map +1 -0
  199. package/dist/collection/plugins/filter/conditions/number/lessThanOrEqual.js +11 -0
  200. package/dist/collection/plugins/filter/conditions/number/lessThanOrEqual.js.map +1 -0
  201. package/dist/collection/plugins/filter/conditions/set.js +7 -0
  202. package/dist/collection/plugins/filter/conditions/set.js.map +1 -0
  203. package/dist/collection/plugins/filter/conditions/string/beginswith.js +21 -0
  204. package/dist/collection/plugins/filter/conditions/string/beginswith.js.map +1 -0
  205. package/dist/collection/plugins/filter/conditions/string/contains.js +25 -0
  206. package/dist/collection/plugins/filter/conditions/string/contains.js.map +1 -0
  207. package/dist/collection/plugins/filter/filter.button.js +28 -0
  208. package/dist/collection/plugins/filter/filter.button.js.map +1 -0
  209. package/dist/collection/plugins/filter/filter.indexed.js +49 -0
  210. package/dist/collection/plugins/filter/filter.indexed.js.map +1 -0
  211. package/dist/collection/plugins/filter/filter.panel.js +610 -0
  212. package/dist/collection/plugins/filter/filter.panel.js.map +1 -0
  213. package/dist/collection/plugins/filter/filter.plugin.js +388 -0
  214. package/dist/collection/plugins/filter/filter.plugin.js.map +1 -0
  215. package/dist/collection/plugins/filter/filter.style.css +165 -0
  216. package/dist/collection/plugins/filter/filter.types.js +9 -0
  217. package/dist/collection/plugins/filter/filter.types.js.map +1 -0
  218. package/dist/collection/plugins/grid-setup.js +131 -0
  219. package/dist/collection/plugins/grid-setup.js.map +1 -0
  220. package/dist/collection/plugins/groupingRow/grouping.const.js +18 -0
  221. package/dist/collection/plugins/groupingRow/grouping.const.js.map +1 -0
  222. package/dist/collection/plugins/groupingRow/grouping.row.expand.service.js +122 -0
  223. package/dist/collection/plugins/groupingRow/grouping.row.expand.service.js.map +1 -0
  224. package/dist/collection/plugins/groupingRow/grouping.row.plugin.js +252 -0
  225. package/dist/collection/plugins/groupingRow/grouping.row.plugin.js.map +1 -0
  226. package/dist/collection/plugins/groupingRow/grouping.row.renderer.js +49 -0
  227. package/dist/collection/plugins/groupingRow/grouping.row.renderer.js.map +1 -0
  228. package/dist/collection/plugins/groupingRow/grouping.row.types.js +2 -0
  229. package/dist/collection/plugins/groupingRow/grouping.row.types.js.map +1 -0
  230. package/dist/collection/plugins/groupingRow/grouping.service.js +215 -0
  231. package/dist/collection/plugins/groupingRow/grouping.service.js.map +1 -0
  232. package/dist/collection/plugins/groupingRow/grouping.trimmed.service.js +61 -0
  233. package/dist/collection/plugins/groupingRow/grouping.trimmed.service.js.map +1 -0
  234. package/dist/collection/plugins/index.js +26 -0
  235. package/dist/collection/plugins/index.js.map +1 -0
  236. package/dist/collection/plugins/manual-focus.plugin.js +353 -0
  237. package/dist/collection/plugins/manual-focus.plugin.js.map +1 -0
  238. package/dist/collection/plugins/moveColumn/column.drag.plugin.js +171 -0
  239. package/dist/collection/plugins/moveColumn/column.drag.plugin.js.map +1 -0
  240. package/dist/collection/plugins/moveColumn/order-column.handler.js +69 -0
  241. package/dist/collection/plugins/moveColumn/order-column.handler.js.map +1 -0
  242. package/dist/collection/plugins/pin-shadow.plugin.js +487 -0
  243. package/dist/collection/plugins/pin-shadow.plugin.js.map +1 -0
  244. package/dist/collection/plugins/resize-indicator.plugin.js +430 -0
  245. package/dist/collection/plugins/resize-indicator.plugin.js.map +1 -0
  246. package/dist/collection/plugins/row-select-plugin-2026228.js +1803 -0
  247. package/dist/collection/plugins/row-select-plugin-2026228.js.map +1 -0
  248. package/dist/collection/plugins/row-select.plugin.js +2096 -0
  249. package/dist/collection/plugins/row-select.plugin.js.map +1 -0
  250. package/dist/collection/plugins/rtl/rtl.plugin.js +110 -0
  251. package/dist/collection/plugins/rtl/rtl.plugin.js.map +1 -0
  252. package/dist/collection/plugins/sorting/sorting.func.js +82 -0
  253. package/dist/collection/plugins/sorting/sorting.func.js.map +1 -0
  254. package/dist/collection/plugins/sorting/sorting.plugin.js +224 -0
  255. package/dist/collection/plugins/sorting/sorting.plugin.js.map +1 -0
  256. package/dist/collection/plugins/sorting/sorting.sign.js +9 -0
  257. package/dist/collection/plugins/sorting/sorting.sign.js.map +1 -0
  258. package/dist/collection/plugins/sorting/sorting.types.js +2 -0
  259. package/dist/collection/plugins/sorting/sorting.types.js.map +1 -0
  260. package/dist/collection/plugins/tree-data.plugin.js +447 -0
  261. package/dist/collection/plugins/tree-data.plugin.js.map +1 -0
  262. package/dist/collection/plugins/wcag/index.js +84 -0
  263. package/dist/collection/plugins/wcag/index.js.map +1 -0
  264. package/dist/collection/serve/controller.js +344 -0
  265. package/dist/collection/serve/data.js +201 -0
  266. package/dist/collection/serve/realData.js +4148 -0
  267. package/dist/collection/services/cell.helpers.js +12 -0
  268. package/dist/collection/services/cell.helpers.js.map +1 -0
  269. package/dist/collection/services/column.data.provider.js +122 -0
  270. package/dist/collection/services/column.data.provider.js.map +1 -0
  271. package/dist/collection/services/data.provider.js +89 -0
  272. package/dist/collection/services/data.provider.js.map +1 -0
  273. package/dist/collection/services/dimension.provider.js +257 -0
  274. package/dist/collection/services/dimension.provider.js.map +1 -0
  275. package/dist/collection/services/local.scroll.service.js +136 -0
  276. package/dist/collection/services/local.scroll.service.js.map +1 -0
  277. package/dist/collection/services/local.scroll.timer.js +84 -0
  278. package/dist/collection/services/local.scroll.timer.js.map +1 -0
  279. package/dist/collection/services/selection.store.connector.js +274 -0
  280. package/dist/collection/services/selection.store.connector.js.map +1 -0
  281. package/dist/collection/services/viewport.provider.js +17 -0
  282. package/dist/collection/services/viewport.provider.js.map +1 -0
  283. package/dist/collection/store/dataSource/data.proxy.js +45 -0
  284. package/dist/collection/store/dataSource/data.proxy.js.map +1 -0
  285. package/dist/collection/store/dataSource/data.store.js +146 -0
  286. package/dist/collection/store/dataSource/data.store.js.map +1 -0
  287. package/dist/collection/store/dataSource/index.js +7 -0
  288. package/dist/collection/store/dataSource/index.js.map +1 -0
  289. package/dist/collection/store/dataSource/trimmed.plugin.js +34 -0
  290. package/dist/collection/store/dataSource/trimmed.plugin.js.map +1 -0
  291. package/dist/collection/store/dimension/dimension.helpers.js +101 -0
  292. package/dist/collection/store/dimension/dimension.helpers.js.map +1 -0
  293. package/dist/collection/store/dimension/dimension.recalculate.plugin.js +29 -0
  294. package/dist/collection/store/dimension/dimension.recalculate.plugin.js.map +1 -0
  295. package/dist/collection/store/dimension/dimension.store.js +124 -0
  296. package/dist/collection/store/dimension/dimension.store.js.map +1 -0
  297. package/dist/collection/store/dimension/dimension.trim.plugin.js +61 -0
  298. package/dist/collection/store/dimension/dimension.trim.plugin.js.map +1 -0
  299. package/dist/collection/store/dimension/index.js +6 -0
  300. package/dist/collection/store/dimension/index.js.map +1 -0
  301. package/dist/collection/store/index.js +17 -0
  302. package/dist/collection/store/index.js.map +1 -0
  303. package/dist/collection/store/selection/index.js +6 -0
  304. package/dist/collection/store/selection/index.js.map +1 -0
  305. package/dist/collection/store/selection/selection.helpers.js +49 -0
  306. package/dist/collection/store/selection/selection.helpers.js.map +1 -0
  307. package/dist/collection/store/selection/selection.store.js +85 -0
  308. package/dist/collection/store/selection/selection.store.js.map +1 -0
  309. package/dist/collection/store/vp/index.js +6 -0
  310. package/dist/collection/store/vp/index.js.map +1 -0
  311. package/dist/collection/store/vp/viewport.helpers.js +251 -0
  312. package/dist/collection/store/vp/viewport.helpers.js.map +1 -0
  313. package/dist/collection/store/vp/viewport.store.js +256 -0
  314. package/dist/collection/store/vp/viewport.store.js.map +1 -0
  315. package/dist/collection/themeManager/theme.compact.js +9 -0
  316. package/dist/collection/themeManager/theme.compact.js.map +1 -0
  317. package/dist/collection/themeManager/theme.default.js +9 -0
  318. package/dist/collection/themeManager/theme.default.js.map +1 -0
  319. package/dist/collection/themeManager/theme.material.js +9 -0
  320. package/dist/collection/themeManager/theme.material.js.map +1 -0
  321. package/dist/collection/themeManager/theme.service.js +53 -0
  322. package/dist/collection/themeManager/theme.service.js.map +1 -0
  323. package/dist/collection/types/dimension.js +2 -0
  324. package/dist/collection/types/dimension.js.map +1 -0
  325. package/dist/collection/types/events.js +124 -0
  326. package/dist/collection/types/events.js.map +1 -0
  327. package/dist/collection/types/index.js +12 -0
  328. package/dist/collection/types/index.js.map +1 -0
  329. package/dist/collection/types/interfaces.js +6 -0
  330. package/dist/collection/types/interfaces.js.map +1 -0
  331. package/dist/collection/types/plugin.js +2 -0
  332. package/dist/collection/types/plugin.js.map +1 -0
  333. package/dist/collection/types/plugin.types.js +2 -0
  334. package/dist/collection/types/plugin.types.js.map +1 -0
  335. package/dist/collection/types/selection.js +2 -0
  336. package/dist/collection/types/selection.js.map +1 -0
  337. package/dist/collection/types/theme.js +2 -0
  338. package/dist/collection/types/theme.js.map +1 -0
  339. package/dist/collection/types/viewport.interfaces.js +2 -0
  340. package/dist/collection/types/viewport.interfaces.js.map +1 -0
  341. package/dist/collection/utils/batchGroupCollapse.js +190 -0
  342. package/dist/collection/utils/batchGroupCollapse.js.map +1 -0
  343. package/dist/collection/utils/browser.js +7 -0
  344. package/dist/collection/utils/browser.js.map +1 -0
  345. package/dist/collection/utils/cell-template-helper.js +181 -0
  346. package/dist/collection/utils/cell-template-helper.js.map +1 -0
  347. package/dist/collection/utils/closest.polifill.js +22 -0
  348. package/dist/collection/utils/closest.polifill.js.map +1 -0
  349. package/dist/collection/utils/column.utils.js +448 -0
  350. package/dist/collection/utils/column.utils.js.map +1 -0
  351. package/dist/collection/utils/consts.js +26 -0
  352. package/dist/collection/utils/consts.js.map +1 -0
  353. package/dist/collection/utils/events.js +39 -0
  354. package/dist/collection/utils/events.js.map +1 -0
  355. package/dist/collection/utils/header.utils.js +24 -0
  356. package/dist/collection/utils/header.utils.js.map +1 -0
  357. package/dist/collection/utils/index.js +133 -0
  358. package/dist/collection/utils/index.js.map +1 -0
  359. package/dist/collection/utils/key.codes.js +80 -0
  360. package/dist/collection/utils/key.codes.js.map +1 -0
  361. package/dist/collection/utils/key.utils.js +86 -0
  362. package/dist/collection/utils/key.utils.js.map +1 -0
  363. package/dist/collection/utils/mobile.js +7 -0
  364. package/dist/collection/utils/mobile.js.map +1 -0
  365. package/dist/collection/utils/platform.js +9 -0
  366. package/dist/collection/utils/platform.js.map +1 -0
  367. package/dist/collection/utils/row-header-utils.js +9 -0
  368. package/dist/collection/utils/row-header-utils.js.map +1 -0
  369. package/dist/collection/utils/store.types.js +2 -0
  370. package/dist/collection/utils/store.types.js.map +1 -0
  371. package/dist/collection/utils/store.utils.js +15 -0
  372. package/dist/collection/utils/store.utils.js.map +1 -0
  373. package/dist/esm/app-globals-C3ZHKjnB.js +14 -0
  374. package/dist/esm/app-globals-C3ZHKjnB.js.map +1 -0
  375. package/dist/esm/cell-renderer-C2Td6LKY.js +54 -0
  376. package/dist/esm/cell-renderer-C2Td6LKY.js.map +1 -0
  377. package/dist/esm/debounce-BfO9dz9v.js +488 -0
  378. package/dist/esm/debounce-BfO9dz9v.js.map +1 -0
  379. package/dist/esm/dimension.helpers-DDil7Dg0.js +3546 -0
  380. package/dist/esm/dimension.helpers-DDil7Dg0.js.map +1 -0
  381. package/dist/esm/edit.utils-ClxXX_x9.js +99 -0
  382. package/dist/esm/edit.utils-ClxXX_x9.js.map +1 -0
  383. package/dist/esm/events-BvSmBueA.js +43 -0
  384. package/dist/esm/events-BvSmBueA.js.map +1 -0
  385. package/dist/esm/filter.button-DmOE7VCJ.js +39 -0
  386. package/dist/esm/filter.button-DmOE7VCJ.js.map +1 -0
  387. package/dist/esm/grouping.row.renderer-6NYszUJA.js +60 -0
  388. package/dist/esm/grouping.row.renderer-6NYszUJA.js.map +1 -0
  389. package/dist/esm/header-cell-renderer-BVHTuFGE.js +1715 -0
  390. package/dist/esm/header-cell-renderer-BVHTuFGE.js.map +1 -0
  391. package/dist/esm/index-Dyptvvxf.js +2519 -0
  392. package/dist/esm/index-Dyptvvxf.js.map +1 -0
  393. package/dist/esm/index.js +6232 -0
  394. package/dist/esm/index.js.map +1 -0
  395. package/dist/esm/loader.js +17 -0
  396. package/dist/esm/loader.js.map +1 -0
  397. package/dist/esm/revo-grid.entry.js +3213 -0
  398. package/dist/esm/revo-grid.entry.js.map +1 -0
  399. package/dist/esm/revo-grid.js +27 -0
  400. package/dist/esm/revo-grid.js.map +1 -0
  401. package/dist/esm/revogr-attribution.revogr-extra.revogr-focus.revogr-grouping-overlay.revogr-header-unified.revogr-overlay-selection.revogr-row-headers.revogr-scroll-virtual.revogr-temp-range.entry.js.map +1 -0
  402. package/dist/esm/revogr-attribution_9.entry.js +2619 -0
  403. package/dist/esm/revogr-attribution_9.entry.js.map +1 -0
  404. package/dist/esm/revogr-clipboard.revogr-edit.revogr-order-editor.entry.js.map +1 -0
  405. package/dist/esm/revogr-clipboard_3.entry.js +467 -0
  406. package/dist/esm/revogr-clipboard_3.entry.js.map +1 -0
  407. package/dist/esm/revogr-data.revogr-header.revogr-viewport-scroll.vnode-html.entry.js.map +1 -0
  408. package/dist/esm/revogr-data_4.entry.js +1415 -0
  409. package/dist/esm/revogr-data_4.entry.js.map +1 -0
  410. package/dist/esm/revogr-filter-panel.entry.js +380 -0
  411. package/dist/esm/revogr-filter-panel.entry.js.map +1 -0
  412. package/dist/esm/row-renderer-sb6QTqH-.js +46 -0
  413. package/dist/esm/row-renderer-sb6QTqH-.js.map +1 -0
  414. package/dist/esm/text-editor-CxXqoicM.js +79 -0
  415. package/dist/esm/text-editor-CxXqoicM.js.map +1 -0
  416. package/dist/esm/throttle-DXYrmEeb.js +525 -0
  417. package/dist/esm/throttle-DXYrmEeb.js.map +1 -0
  418. package/dist/esm/tree-data.plugin-C2eXkf9_.js +5319 -0
  419. package/dist/esm/tree-data.plugin-C2eXkf9_.js.map +1 -0
  420. package/dist/esm/viewport.helpers-VXhsJZtn.js +55 -0
  421. package/dist/esm/viewport.helpers-VXhsJZtn.js.map +1 -0
  422. package/dist/esm/viewport.store-C-GnV31k.js +512 -0
  423. package/dist/esm/viewport.store-C-GnV31k.js.map +1 -0
  424. package/dist/index.cjs.js +1 -0
  425. package/dist/index.js +1 -0
  426. package/dist/revo-grid/app-globals-C3ZHKjnB.js +14 -0
  427. package/dist/revo-grid/app-globals-C3ZHKjnB.js.map +1 -0
  428. package/dist/revo-grid/cell-renderer-C2Td6LKY.js +54 -0
  429. package/dist/revo-grid/cell-renderer-C2Td6LKY.js.map +1 -0
  430. package/dist/revo-grid/debounce-BfO9dz9v.js +488 -0
  431. package/dist/revo-grid/debounce-BfO9dz9v.js.map +1 -0
  432. package/dist/revo-grid/dimension.helpers-DDil7Dg0.js +3546 -0
  433. package/dist/revo-grid/dimension.helpers-DDil7Dg0.js.map +1 -0
  434. package/dist/revo-grid/edit.utils-ClxXX_x9.js +99 -0
  435. package/dist/revo-grid/edit.utils-ClxXX_x9.js.map +1 -0
  436. package/dist/revo-grid/events-BvSmBueA.js +43 -0
  437. package/dist/revo-grid/events-BvSmBueA.js.map +1 -0
  438. package/dist/revo-grid/filter.button-DmOE7VCJ.js +39 -0
  439. package/dist/revo-grid/filter.button-DmOE7VCJ.js.map +1 -0
  440. package/dist/revo-grid/grouping.row.renderer-6NYszUJA.js +60 -0
  441. package/dist/revo-grid/grouping.row.renderer-6NYszUJA.js.map +1 -0
  442. package/dist/revo-grid/header-cell-renderer-BVHTuFGE.js +1715 -0
  443. package/dist/revo-grid/header-cell-renderer-BVHTuFGE.js.map +1 -0
  444. package/dist/revo-grid/index-Dyptvvxf.js +2490 -0
  445. package/dist/revo-grid/index-Dyptvvxf.js.map +1 -0
  446. package/dist/revo-grid/index.esm.js +6232 -0
  447. package/dist/revo-grid/index.esm.js.map +1 -0
  448. package/dist/revo-grid/loader.esm.js.map +1 -0
  449. package/dist/revo-grid/revo-grid.entry.esm.js.map +1 -0
  450. package/dist/revo-grid/revo-grid.entry.js +3213 -0
  451. package/dist/revo-grid/revo-grid.entry.js.map +1 -0
  452. package/dist/revo-grid/revo-grid.esm.js +27 -0
  453. package/dist/revo-grid/revo-grid.esm.js.map +1 -0
  454. package/dist/revo-grid/revogr-attribution.revogr-extra.revogr-focus.revogr-grouping-overlay.revogr-header-unified.revogr-overlay-selection.revogr-row-headers.revogr-scroll-virtual.revogr-temp-range.entry.esm.js.map +1 -0
  455. package/dist/revo-grid/revogr-attribution_9.entry.js +2619 -0
  456. package/dist/revo-grid/revogr-attribution_9.entry.js.map +1 -0
  457. package/dist/revo-grid/revogr-clipboard.revogr-edit.revogr-order-editor.entry.esm.js.map +1 -0
  458. package/dist/revo-grid/revogr-clipboard_3.entry.js +467 -0
  459. package/dist/revo-grid/revogr-clipboard_3.entry.js.map +1 -0
  460. package/dist/revo-grid/revogr-data.revogr-header.revogr-viewport-scroll.vnode-html.entry.esm.js.map +1 -0
  461. package/dist/revo-grid/revogr-data_4.entry.js +1415 -0
  462. package/dist/revo-grid/revogr-data_4.entry.js.map +1 -0
  463. package/dist/revo-grid/revogr-filter-panel.entry.esm.js.map +1 -0
  464. package/dist/revo-grid/revogr-filter-panel.entry.js +380 -0
  465. package/dist/revo-grid/revogr-filter-panel.entry.js.map +1 -0
  466. package/dist/revo-grid/row-renderer-sb6QTqH-.js +46 -0
  467. package/dist/revo-grid/row-renderer-sb6QTqH-.js.map +1 -0
  468. package/dist/revo-grid/text-editor-CxXqoicM.js +79 -0
  469. package/dist/revo-grid/text-editor-CxXqoicM.js.map +1 -0
  470. package/dist/revo-grid/throttle-DXYrmEeb.js +525 -0
  471. package/dist/revo-grid/throttle-DXYrmEeb.js.map +1 -0
  472. package/dist/revo-grid/tree-data.plugin-C2eXkf9_.js +5319 -0
  473. package/dist/revo-grid/tree-data.plugin-C2eXkf9_.js.map +1 -0
  474. package/dist/revo-grid/viewport.helpers-VXhsJZtn.js +55 -0
  475. package/dist/revo-grid/viewport.helpers-VXhsJZtn.js.map +1 -0
  476. package/dist/revo-grid/viewport.store-C-GnV31k.js +512 -0
  477. package/dist/revo-grid/viewport.store-C-GnV31k.js.map +1 -0
  478. package/dist/types/components/attribution/revogr-attribution.d.ts +12 -0
  479. package/dist/types/components/clipboard/revogr-clipboard.d.ts +89 -0
  480. package/dist/types/components/data/cell-renderer.d.ts +12 -0
  481. package/dist/types/components/data/column.service.d.ts +65 -0
  482. package/dist/types/components/data/revogr-data.d.ts +132 -0
  483. package/dist/types/components/data/row-highlight.plugin.d.ts +10 -0
  484. package/dist/types/components/data/row-renderer.d.ts +13 -0
  485. package/dist/types/components/editors/edit.utils.d.ts +3 -0
  486. package/dist/types/components/editors/revogr-edit.d.ts +63 -0
  487. package/dist/types/components/editors/text-editor.d.ts +43 -0
  488. package/dist/types/components/extra/revogr-extra.d.ts +38 -0
  489. package/dist/types/components/grouping-overlay/revogr-grouping-overlay.d.ts +71 -0
  490. package/dist/types/components/header/header-cell-renderer.d.ts +10 -0
  491. package/dist/types/components/header/header-group-renderer.d.ts +17 -0
  492. package/dist/types/components/header/header-renderer.d.ts +24 -0
  493. package/dist/types/components/header/resizable.directive.d.ts +60 -0
  494. package/dist/types/components/header/resizable.element.d.ts +5 -0
  495. package/dist/types/components/header/revogr-header-unified.d.ts +168 -0
  496. package/dist/types/components/header/revogr-header.d.ts +131 -0
  497. package/dist/types/components/order/order-renderer.d.ts +29 -0
  498. package/dist/types/components/order/order-row.service.d.ts +27 -0
  499. package/dist/types/components/order/revogr-order-editor.d.ts +56 -0
  500. package/dist/types/components/overlay/autofill.service.d.ts +80 -0
  501. package/dist/types/components/overlay/keyboard.service.d.ts +29 -0
  502. package/dist/types/components/overlay/revogr-overlay-selection.d.ts +295 -0
  503. package/dist/types/components/overlay/selection.utils.d.ts +47 -0
  504. package/dist/types/components/revoGrid/grid.helpers.d.ts +17 -0
  505. package/dist/types/components/revoGrid/plugin.service.d.ts +37 -0
  506. package/dist/types/components/revoGrid/revo-grid.d.ts +801 -0
  507. package/dist/types/components/revoGrid/viewport.helpers.d.ts +42 -0
  508. package/dist/types/components/revoGrid/viewport.resize.service.d.ts +17 -0
  509. package/dist/types/components/revoGrid/viewport.scrolling.service.d.ts +24 -0
  510. package/dist/types/components/revoGrid/viewport.service.d.ts +59 -0
  511. package/dist/types/components/rowHeaders/revogr-row-headers.d.ts +51 -0
  512. package/dist/types/components/rowHeaders/row-header-render.d.ts +9 -0
  513. package/dist/types/components/scroll/revogr-viewport-scroll.d.ts +159 -0
  514. package/dist/types/components/scrollable/autohide-scroll.plugin.d.ts +22 -0
  515. package/dist/types/components/scrollable/revogr-scroll-virtual.d.ts +49 -0
  516. package/dist/types/components/selectionFocus/revogr-focus.d.ts +63 -0
  517. package/dist/types/components/selectionTempRange/revogr-temp-range.d.ts +28 -0
  518. package/dist/types/components/vnode/vnode-converter.d.ts +19 -0
  519. package/dist/types/components/vnode/vnode.utils.d.ts +9 -0
  520. package/dist/types/components.d.ts +2928 -0
  521. package/dist/types/global/global.d.ts +1 -0
  522. package/dist/types/index.d.ts +9 -0
  523. package/dist/types/plugins/add-rows-on-paste.plugin.d.ts +14 -0
  524. package/dist/types/plugins/base.plugin.d.ts +51 -0
  525. package/dist/types/plugins/column-hide.plugin.d.ts +110 -0
  526. package/dist/types/plugins/column-manage.plugin.d.ts +225 -0
  527. package/dist/types/plugins/column-stretch.plugin.d.ts +159 -0
  528. package/dist/types/plugins/column.auto-size.plugin.d.ts +69 -0
  529. package/dist/types/plugins/column.stretch.plugin.d.ts +20 -0
  530. package/dist/types/plugins/customColumnDrag/column-move.helper.d.ts +71 -0
  531. package/dist/types/plugins/customColumnDrag/custom-column-drag.plugin.d.ts +35 -0
  532. package/dist/types/plugins/customColumnDrag/drag.handler.d.ts +112 -0
  533. package/dist/types/plugins/customColumnDrag/example.d.ts +31 -0
  534. package/dist/types/plugins/customColumnDrag/index.d.ts +5 -0
  535. package/dist/types/plugins/customColumnDrag/types.d.ts +46 -0
  536. package/dist/types/plugins/dispatcher.d.ts +20 -0
  537. package/dist/types/plugins/enhanced-scrollbar.plugin.d.ts +76 -0
  538. package/dist/types/plugins/export/csv.d.ts +9 -0
  539. package/dist/types/plugins/export/export.plugin.d.ts +24 -0
  540. package/dist/types/plugins/export/types.d.ts +23 -0
  541. package/dist/types/plugins/filter/conditions/equal.d.ts +4 -0
  542. package/dist/types/plugins/filter/conditions/number/greaterThan.d.ts +3 -0
  543. package/dist/types/plugins/filter/conditions/number/greaterThanOrEqual.d.ts +3 -0
  544. package/dist/types/plugins/filter/conditions/number/lessThan.d.ts +3 -0
  545. package/dist/types/plugins/filter/conditions/number/lessThanOrEqual.d.ts +3 -0
  546. package/dist/types/plugins/filter/conditions/set.d.ts +4 -0
  547. package/dist/types/plugins/filter/conditions/string/beginswith.d.ts +3 -0
  548. package/dist/types/plugins/filter/conditions/string/contains.d.ts +4 -0
  549. package/dist/types/plugins/filter/filter.button.d.ts +14 -0
  550. package/dist/types/plugins/filter/filter.indexed.d.ts +20 -0
  551. package/dist/types/plugins/filter/filter.panel.d.ts +53 -0
  552. package/dist/types/plugins/filter/filter.plugin.d.ts +73 -0
  553. package/dist/types/plugins/filter/filter.types.d.ts +129 -0
  554. package/dist/types/plugins/grid-setup.d.ts +65 -0
  555. package/dist/types/plugins/groupingRow/grouping.const.d.ts +14 -0
  556. package/dist/types/plugins/groupingRow/grouping.row.expand.service.d.ts +15 -0
  557. package/dist/types/plugins/groupingRow/grouping.row.plugin.d.ts +39 -0
  558. package/dist/types/plugins/groupingRow/grouping.row.renderer.d.ts +6 -0
  559. package/dist/types/plugins/groupingRow/grouping.row.types.d.ts +144 -0
  560. package/dist/types/plugins/groupingRow/grouping.service.d.ts +36 -0
  561. package/dist/types/plugins/groupingRow/grouping.trimmed.service.d.ts +10 -0
  562. package/dist/types/plugins/index.d.ts +22 -0
  563. package/dist/types/plugins/manual-focus.plugin.d.ts +113 -0
  564. package/dist/types/plugins/moveColumn/column.drag.plugin.d.ts +50 -0
  565. package/dist/types/plugins/moveColumn/order-column.handler.d.ts +16 -0
  566. package/dist/types/plugins/pin-shadow.plugin.d.ts +73 -0
  567. package/dist/types/plugins/resize-indicator.plugin.d.ts +71 -0
  568. package/dist/types/plugins/row-select-plugin-2026228.d.ts +367 -0
  569. package/dist/types/plugins/row-select.plugin.d.ts +378 -0
  570. package/dist/types/plugins/rtl/rtl.plugin.d.ts +37 -0
  571. package/dist/types/plugins/sorting/sorting.func.d.ts +9 -0
  572. package/dist/types/plugins/sorting/sorting.plugin.d.ts +48 -0
  573. package/dist/types/plugins/sorting/sorting.sign.d.ts +6 -0
  574. package/dist/types/plugins/sorting/sorting.types.d.ts +14 -0
  575. package/dist/types/plugins/tree-data.plugin.d.ts +56 -0
  576. package/dist/types/plugins/wcag/index.d.ts +26 -0
  577. package/dist/types/services/cell.helpers.d.ts +2 -0
  578. package/dist/types/services/column.data.provider.d.ts +27 -0
  579. package/dist/types/services/data.provider.d.ts +36 -0
  580. package/dist/types/services/dimension.provider.d.ts +71 -0
  581. package/dist/types/services/local.scroll.service.d.ts +36 -0
  582. package/dist/types/services/local.scroll.timer.d.ts +32 -0
  583. package/dist/types/services/selection.store.connector.d.ts +74 -0
  584. package/dist/types/services/viewport.provider.d.ts +9 -0
  585. package/dist/types/stencil-public-runtime.d.ts +1709 -0
  586. package/dist/types/store/dataSource/data.proxy.d.ts +14 -0
  587. package/dist/types/store/dataSource/data.store.d.ts +77 -0
  588. package/dist/types/store/dataSource/index.d.ts +3 -0
  589. package/dist/types/store/dataSource/trimmed.plugin.d.ts +12 -0
  590. package/dist/types/store/dimension/dimension.helpers.d.ts +24 -0
  591. package/dist/types/store/dimension/dimension.recalculate.plugin.d.ts +15 -0
  592. package/dist/types/store/dimension/dimension.store.d.ts +34 -0
  593. package/dist/types/store/dimension/dimension.trim.plugin.d.ts +13 -0
  594. package/dist/types/store/dimension/index.d.ts +2 -0
  595. package/dist/types/store/index.d.ts +8 -0
  596. package/dist/types/store/selection/index.d.ts +2 -0
  597. package/dist/types/store/selection/selection.helpers.d.ts +5 -0
  598. package/dist/types/store/selection/selection.store.d.ts +22 -0
  599. package/dist/types/store/vp/index.d.ts +7 -0
  600. package/dist/types/store/vp/viewport.helpers.d.ts +54 -0
  601. package/dist/types/store/vp/viewport.store.d.ts +38 -0
  602. package/dist/types/themeManager/theme.compact.d.ts +4 -0
  603. package/dist/types/themeManager/theme.default.d.ts +4 -0
  604. package/dist/types/themeManager/theme.material.d.ts +4 -0
  605. package/dist/types/themeManager/theme.service.d.ts +13 -0
  606. package/dist/types/types/dimension.d.ts +8 -0
  607. package/dist/types/types/events.d.ts +2 -0
  608. package/dist/types/types/index.d.ts +8 -0
  609. package/dist/types/types/interfaces.d.ts +795 -0
  610. package/dist/types/types/plugin.d.ts +9 -0
  611. package/dist/types/types/plugin.types.d.ts +48 -0
  612. package/dist/types/types/selection.d.ts +178 -0
  613. package/dist/types/types/theme.d.ts +7 -0
  614. package/dist/types/types/viewport.interfaces.d.ts +45 -0
  615. package/dist/types/utils/batchGroupCollapse.d.ts +77 -0
  616. package/dist/types/utils/browser.d.ts +1 -0
  617. package/dist/types/utils/cell-template-helper.d.ts +74 -0
  618. package/dist/types/utils/closest.polifill.d.ts +0 -0
  619. package/dist/types/utils/column.utils.d.ts +110 -0
  620. package/dist/types/utils/consts.d.ts +22 -0
  621. package/dist/types/utils/events.d.ts +5 -0
  622. package/dist/types/utils/header.utils.d.ts +2 -0
  623. package/dist/types/utils/index.d.ts +32 -0
  624. package/dist/types/utils/key.codes.d.ts +73 -0
  625. package/dist/types/utils/key.utils.d.ts +12 -0
  626. package/dist/types/utils/mobile.d.ts +1 -0
  627. package/dist/types/utils/platform.d.ts +4 -0
  628. package/dist/types/utils/row-header-utils.d.ts +2 -0
  629. package/dist/types/utils/store.types.d.ts +97 -0
  630. package/dist/types/utils/store.utils.d.ts +10 -0
  631. package/hydrate/index.d.ts +273 -0
  632. package/hydrate/index.js +39851 -0
  633. package/hydrate/index.mjs +39843 -0
  634. package/hydrate/package.json +12 -0
  635. package/loader/cdn.js +4 -0
  636. package/loader/index.cjs.js +4 -0
  637. package/loader/index.d.ts +24 -0
  638. package/loader/index.es2017.js +4 -0
  639. package/loader/index.js +5 -0
  640. package/package.json +149 -0
  641. package/readme.md +303 -0
  642. package/standalone/column.service.js +1110 -0
  643. package/standalone/column.service.js.map +1 -0
  644. package/standalone/consts.js +30 -0
  645. package/standalone/consts.js.map +1 -0
  646. package/standalone/data.store.js +3101 -0
  647. package/standalone/data.store.js.map +1 -0
  648. package/standalone/debounce.js +215 -0
  649. package/standalone/debounce.js.map +1 -0
  650. package/standalone/dimension.helpers.js +229 -0
  651. package/standalone/dimension.helpers.js.map +1 -0
  652. package/standalone/filter.button.js +39 -0
  653. package/standalone/filter.button.js.map +1 -0
  654. package/standalone/grouping.service.js +234 -0
  655. package/standalone/grouping.service.js.map +1 -0
  656. package/standalone/header-group-renderer.js +634 -0
  657. package/standalone/header-group-renderer.js.map +1 -0
  658. package/standalone/index.d.ts +72 -0
  659. package/standalone/index.js +6272 -0
  660. package/standalone/index.js.map +1 -0
  661. package/standalone/index2.js +131 -0
  662. package/standalone/index2.js.map +1 -0
  663. package/standalone/local.scroll.timer.js +222 -0
  664. package/standalone/local.scroll.timer.js.map +1 -0
  665. package/standalone/platform.js +90 -0
  666. package/standalone/platform.js.map +1 -0
  667. package/standalone/revo-grid.d.ts +11 -0
  668. package/standalone/revo-grid.js +8734 -0
  669. package/standalone/revo-grid.js.map +1 -0
  670. package/standalone/revogr-attribution.d.ts +11 -0
  671. package/standalone/revogr-attribution.js +12 -0
  672. package/standalone/revogr-attribution.js.map +1 -0
  673. package/standalone/revogr-attribution2.js +32 -0
  674. package/standalone/revogr-attribution2.js.map +1 -0
  675. package/standalone/revogr-clipboard.d.ts +11 -0
  676. package/standalone/revogr-clipboard.js +12 -0
  677. package/standalone/revogr-clipboard.js.map +1 -0
  678. package/standalone/revogr-clipboard2.js +179 -0
  679. package/standalone/revogr-clipboard2.js.map +1 -0
  680. package/standalone/revogr-data.d.ts +11 -0
  681. package/standalone/revogr-data.js +12 -0
  682. package/standalone/revogr-data.js.map +1 -0
  683. package/standalone/revogr-data2.js +503 -0
  684. package/standalone/revogr-data2.js.map +1 -0
  685. package/standalone/revogr-edit.d.ts +11 -0
  686. package/standalone/revogr-edit.js +12 -0
  687. package/standalone/revogr-edit.js.map +1 -0
  688. package/standalone/revogr-edit2.js +330 -0
  689. package/standalone/revogr-edit2.js.map +1 -0
  690. package/standalone/revogr-extra.d.ts +11 -0
  691. package/standalone/revogr-extra.js +12 -0
  692. package/standalone/revogr-extra.js.map +1 -0
  693. package/standalone/revogr-extra2.js +73 -0
  694. package/standalone/revogr-extra2.js.map +1 -0
  695. package/standalone/revogr-filter-panel.d.ts +11 -0
  696. package/standalone/revogr-filter-panel.js +411 -0
  697. package/standalone/revogr-filter-panel.js.map +1 -0
  698. package/standalone/revogr-focus.d.ts +11 -0
  699. package/standalone/revogr-focus.js +12 -0
  700. package/standalone/revogr-focus.js.map +1 -0
  701. package/standalone/revogr-focus2.js +119 -0
  702. package/standalone/revogr-focus2.js.map +1 -0
  703. package/standalone/revogr-grouping-overlay.d.ts +11 -0
  704. package/standalone/revogr-grouping-overlay.js +12 -0
  705. package/standalone/revogr-grouping-overlay.js.map +1 -0
  706. package/standalone/revogr-grouping-overlay2.js +356 -0
  707. package/standalone/revogr-grouping-overlay2.js.map +1 -0
  708. package/standalone/revogr-header-unified.d.ts +11 -0
  709. package/standalone/revogr-header-unified.js +12 -0
  710. package/standalone/revogr-header-unified.js.map +1 -0
  711. package/standalone/revogr-header-unified2.js +781 -0
  712. package/standalone/revogr-header-unified2.js.map +1 -0
  713. package/standalone/revogr-header.d.ts +11 -0
  714. package/standalone/revogr-header.js +12 -0
  715. package/standalone/revogr-header.js.map +1 -0
  716. package/standalone/revogr-header2.js +343 -0
  717. package/standalone/revogr-header2.js.map +1 -0
  718. package/standalone/revogr-order-editor.d.ts +11 -0
  719. package/standalone/revogr-order-editor.js +12 -0
  720. package/standalone/revogr-order-editor.js.map +1 -0
  721. package/standalone/revogr-order-editor2.js +201 -0
  722. package/standalone/revogr-order-editor2.js.map +1 -0
  723. package/standalone/revogr-overlay-selection.d.ts +11 -0
  724. package/standalone/revogr-overlay-selection.js +12 -0
  725. package/standalone/revogr-overlay-selection.js.map +1 -0
  726. package/standalone/revogr-overlay-selection2.js +1068 -0
  727. package/standalone/revogr-overlay-selection2.js.map +1 -0
  728. package/standalone/revogr-row-headers.d.ts +11 -0
  729. package/standalone/revogr-row-headers.js +12 -0
  730. package/standalone/revogr-row-headers.js.map +1 -0
  731. package/standalone/revogr-row-headers2.js +625 -0
  732. package/standalone/revogr-row-headers2.js.map +1 -0
  733. package/standalone/revogr-scroll-virtual.d.ts +11 -0
  734. package/standalone/revogr-scroll-virtual.js +12 -0
  735. package/standalone/revogr-scroll-virtual.js.map +1 -0
  736. package/standalone/revogr-scroll-virtual2.js +235 -0
  737. package/standalone/revogr-scroll-virtual2.js.map +1 -0
  738. package/standalone/revogr-temp-range.d.ts +11 -0
  739. package/standalone/revogr-temp-range.js +12 -0
  740. package/standalone/revogr-temp-range.js.map +1 -0
  741. package/standalone/revogr-temp-range2.js +93 -0
  742. package/standalone/revogr-temp-range2.js.map +1 -0
  743. package/standalone/revogr-viewport-scroll.d.ts +11 -0
  744. package/standalone/revogr-viewport-scroll.js +12 -0
  745. package/standalone/revogr-viewport-scroll.js.map +1 -0
  746. package/standalone/revogr-viewport-scroll2.js +761 -0
  747. package/standalone/revogr-viewport-scroll2.js.map +1 -0
  748. package/standalone/row-renderer.js +41 -0
  749. package/standalone/row-renderer.js.map +1 -0
  750. package/standalone/selection.utils.js +179 -0
  751. package/standalone/selection.utils.js.map +1 -0
  752. package/standalone/throttle.js +75 -0
  753. package/standalone/throttle.js.map +1 -0
  754. package/standalone/toNumber.js +282 -0
  755. package/standalone/toNumber.js.map +1 -0
  756. package/standalone/vnode-converter.js +46 -0
  757. package/standalone/vnode-converter.js.map +1 -0
  758. package/standalone/vnode-html.d.ts +11 -0
  759. package/standalone/vnode-html.js +12 -0
  760. package/standalone/vnode-html.js.map +1 -0
@@ -0,0 +1,1420 @@
1
+ /*!
2
+ * Built by Revolist OU ❤️
3
+ */
4
+ 'use strict';
5
+
6
+ var index = require('./index-BF1c1pO3.js');
7
+ var headerCellRenderer = require('./header-cell-renderer-D-RjAVfe.js');
8
+ var dimension_helpers = require('./dimension.helpers-DA9-xqPT.js');
9
+ var rowRenderer = require('./row-renderer-BTE7VKD9.js');
10
+ var cellRenderer = require('./cell-renderer-B87qecTb.js');
11
+ var throttle = require('./throttle-2ZxfGjEI.js');
12
+ var viewport_helpers = require('./viewport.helpers-BAovztDd.js');
13
+ require('./debounce-CcpHiH2p.js');
14
+ require('./filter.button-DSsWNs23.js');
15
+
16
+ /**
17
+ * Class is responsible for highlighting rows in a table.
18
+ */
19
+ class RowHighlightPlugin {
20
+ constructor() {
21
+ this.currentRange = null;
22
+ }
23
+ selectionChange(e, renderedRows) {
24
+ // clear previous range
25
+ if (this.currentRange) {
26
+ renderedRows.forEach((row, y) => {
27
+ var _a;
28
+ // skip current range
29
+ if (e && y >= e.y && y <= e.y1) {
30
+ return;
31
+ }
32
+ // clear previous range
33
+ if (row &&
34
+ row.$elm$ instanceof HTMLElement &&
35
+ row.$elm$.classList.contains(dimension_helpers.ROW_FOCUSED_CLASS)) {
36
+ row.$elm$.classList.remove(dimension_helpers.ROW_FOCUSED_CLASS);
37
+ if ((_a = row.$attrs$) === null || _a === void 0 ? void 0 : _a.class.includes(dimension_helpers.ROW_FOCUSED_CLASS)) {
38
+ row.$attrs$.class = row.$attrs$.class.replace(dimension_helpers.ROW_FOCUSED_CLASS, '');
39
+ }
40
+ }
41
+ });
42
+ }
43
+ // apply new range
44
+ if (e) {
45
+ for (let y = e.y; y <= e.y1; y++) {
46
+ const row = renderedRows.get(y);
47
+ if (row &&
48
+ row.$elm$ instanceof HTMLElement &&
49
+ !row.$elm$.classList.contains(dimension_helpers.ROW_FOCUSED_CLASS)) {
50
+ const attrs = (row.$attrs$ = row.$attrs$ || {});
51
+ attrs.class = (attrs.class || '') + ' ' + dimension_helpers.ROW_FOCUSED_CLASS;
52
+ row.$elm$.classList.add(dimension_helpers.ROW_FOCUSED_CLASS);
53
+ }
54
+ }
55
+ }
56
+ this.currentRange = e;
57
+ }
58
+ isRowFocused(y) {
59
+ return (this.currentRange && y >= this.currentRange.y && y <= this.currentRange.y1);
60
+ }
61
+ }
62
+
63
+ /**
64
+ * Converts a VNode element into an HTML element and appends it to the specified parentHolder.
65
+ */
66
+ function convertVNodeToHTML(parentHolder, redraw) {
67
+ return new Promise(resolve => {
68
+ const vnode = document.createElement('vnode-html');
69
+ parentHolder.appendChild(vnode);
70
+ vnode.redraw = redraw;
71
+ vnode.addEventListener('html', e => {
72
+ vnode.remove();
73
+ resolve(e.detail);
74
+ });
75
+ });
76
+ }
77
+
78
+ const revogrDataStyleCss = ".revo-drag-icon{width:11px;opacity:0.8}.revo-drag-icon::before{content:\"::\";display:inline-block}.revo-alt-icon{-webkit-mask-image:url(\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg viewBox='0 0 384 383' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Cg%3E%3Cpath d='M192.4375,383 C197.424479,383 201.663411,381.254557 205.154297,377.763672 L205.154297,377.763672 L264.25,318.667969 C270.234375,312.683594 271.605794,306.075846 268.364258,298.844727 C265.122721,291.613607 259.51237,287.998047 251.533203,287.998047 L251.533203,287.998047 L213.382812,287.998047 L213.382812,212.445312 L288.935547,212.445312 L288.935547,250.595703 C288.935547,258.57487 292.551107,264.185221 299.782227,267.426758 C307.013346,270.668294 313.621094,269.296875 319.605469,263.3125 L319.605469,263.3125 L378.701172,204.216797 C382.192057,200.725911 383.9375,196.486979 383.9375,191.5 C383.9375,186.513021 382.192057,182.274089 378.701172,178.783203 L378.701172,178.783203 L319.605469,119.6875 C313.621094,114.201823 307.013346,112.955078 299.782227,115.947266 C292.551107,118.939453 288.935547,124.42513 288.935547,132.404297 L288.935547,132.404297 L288.935547,170.554688 L213.382812,170.554688 L213.382812,95.0019531 L251.533203,95.0019531 C259.51237,95.0019531 264.998047,91.3863932 267.990234,84.1552734 C270.982422,76.9241536 269.735677,70.3164062 264.25,64.3320312 L264.25,64.3320312 L205.154297,5.23632812 C201.663411,1.74544271 197.424479,0 192.4375,0 C187.450521,0 183.211589,1.74544271 179.720703,5.23632812 L179.720703,5.23632812 L120.625,64.3320312 C114.640625,70.3164062 113.269206,76.9241536 116.510742,84.1552734 C119.752279,91.3863932 125.36263,95.0019531 133.341797,95.0019531 L133.341797,95.0019531 L171.492188,95.0019531 L171.492188,170.554688 L95.9394531,170.554688 L95.9394531,132.404297 C95.9394531,124.42513 92.3238932,118.814779 85.0927734,115.573242 C77.8616536,112.331706 71.2539062,113.703125 65.2695312,119.6875 L65.2695312,119.6875 L6.17382812,178.783203 C2.68294271,182.274089 0.9375,186.513021 0.9375,191.5 C0.9375,196.486979 2.68294271,200.725911 6.17382812,204.216797 L6.17382812,204.216797 L65.2695312,263.3125 C71.2539062,268.798177 77.8616536,270.044922 85.0927734,267.052734 C92.3238932,264.060547 95.9394531,258.57487 95.9394531,250.595703 L95.9394531,250.595703 L95.9394531,212.445312 L171.492188,212.445312 L171.492188,287.998047 L133.341797,287.998047 C125.36263,287.998047 119.876953,291.613607 116.884766,298.844727 C113.892578,306.075846 115.139323,312.683594 120.625,318.667969 L120.625,318.667969 L179.720703,377.763672 C183.211589,381.254557 187.450521,383 192.4375,383 Z'%3E%3C/path%3E%3C/g%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg viewBox='0 0 384 383' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Cg%3E%3Cpath d='M192.4375,383 C197.424479,383 201.663411,381.254557 205.154297,377.763672 L205.154297,377.763672 L264.25,318.667969 C270.234375,312.683594 271.605794,306.075846 268.364258,298.844727 C265.122721,291.613607 259.51237,287.998047 251.533203,287.998047 L251.533203,287.998047 L213.382812,287.998047 L213.382812,212.445312 L288.935547,212.445312 L288.935547,250.595703 C288.935547,258.57487 292.551107,264.185221 299.782227,267.426758 C307.013346,270.668294 313.621094,269.296875 319.605469,263.3125 L319.605469,263.3125 L378.701172,204.216797 C382.192057,200.725911 383.9375,196.486979 383.9375,191.5 C383.9375,186.513021 382.192057,182.274089 378.701172,178.783203 L378.701172,178.783203 L319.605469,119.6875 C313.621094,114.201823 307.013346,112.955078 299.782227,115.947266 C292.551107,118.939453 288.935547,124.42513 288.935547,132.404297 L288.935547,132.404297 L288.935547,170.554688 L213.382812,170.554688 L213.382812,95.0019531 L251.533203,95.0019531 C259.51237,95.0019531 264.998047,91.3863932 267.990234,84.1552734 C270.982422,76.9241536 269.735677,70.3164062 264.25,64.3320312 L264.25,64.3320312 L205.154297,5.23632812 C201.663411,1.74544271 197.424479,0 192.4375,0 C187.450521,0 183.211589,1.74544271 179.720703,5.23632812 L179.720703,5.23632812 L120.625,64.3320312 C114.640625,70.3164062 113.269206,76.9241536 116.510742,84.1552734 C119.752279,91.3863932 125.36263,95.0019531 133.341797,95.0019531 L133.341797,95.0019531 L171.492188,95.0019531 L171.492188,170.554688 L95.9394531,170.554688 L95.9394531,132.404297 C95.9394531,124.42513 92.3238932,118.814779 85.0927734,115.573242 C77.8616536,112.331706 71.2539062,113.703125 65.2695312,119.6875 L65.2695312,119.6875 L6.17382812,178.783203 C2.68294271,182.274089 0.9375,186.513021 0.9375,191.5 C0.9375,196.486979 2.68294271,200.725911 6.17382812,204.216797 L6.17382812,204.216797 L65.2695312,263.3125 C71.2539062,268.798177 77.8616536,270.044922 85.0927734,267.052734 C92.3238932,264.060547 95.9394531,258.57487 95.9394531,250.595703 L95.9394531,250.595703 L95.9394531,212.445312 L171.492188,212.445312 L171.492188,287.998047 L133.341797,287.998047 C125.36263,287.998047 119.876953,291.613607 116.884766,298.844727 C113.892578,306.075846 115.139323,312.683594 120.625,318.667969 L120.625,318.667969 L179.720703,377.763672 C183.211589,381.254557 187.450521,383 192.4375,383 Z'%3E%3C/path%3E%3C/g%3E%3C/svg%3E\");width:11px;height:11px;background-size:cover;background-repeat:no-repeat}.arrow-down{position:absolute;right:5px;top:0}.arrow-down svg{width:8px;margin-top:5px;margin-left:5px;opacity:0.4}.cell-value-wrapper{margin-right:10px;overflow:hidden;text-overflow:ellipsis}revogr-data{display:block;width:100%;position:relative}revogr-data .rgRow{position:absolute;width:100%;left:0}revogr-data .revo-draggable{border:none;height:32px;display:inline-flex;outline:0;padding:0;font-size:0.8125rem;box-sizing:border-box;align-items:center;white-space:nowrap;vertical-align:middle;justify-content:center;text-decoration:none;width:24px;height:100%;cursor:pointer;display:inline-flex;user-select:none}revogr-data .revo-draggable:hover>.revo-drag-icon{opacity:1;zoom:1.2;font-weight:600}revogr-data .revo-draggable>.revo-drag-icon{pointer-events:none;transition:opacity 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, zoom 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms}revogr-data .rgCell{top:0;left:0;position:absolute;box-sizing:border-box;height:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;outline:none;user-select:text}revogr-data .rgCell.align-center{text-align:center}revogr-data .rgCell.align-left{text-align:left}revogr-data .rgCell.align-right{text-align:right}";
79
+
80
+ const RevogrData = class {
81
+ constructor(hostRef) {
82
+ index.registerInstance(this, hostRef);
83
+ this.beforerowrender = index.createEvent(this, "beforerowrender", 7);
84
+ this.afterrender = index.createEvent(this, "afterrender", 7);
85
+ this.beforeCellRender = index.createEvent(this, "beforecellrender", 7);
86
+ this.beforeDataRender = index.createEvent(this, "beforedatarender", 7);
87
+ this.dragStartCell = index.createEvent(this, "dragstartcell", 7);
88
+ /**
89
+ * Prevent rendering until job is done.
90
+ * Can be used for initial rendering performance improvement.
91
+ * When several plugins require initial rendering this will prevent double initial rendering.
92
+ */
93
+ this.jobsBeforeRender = [];
94
+ /**
95
+ * Rendered rows - virtual index vs vnode
96
+ */
97
+ this.renderedRows = new Map();
98
+ this.lastMismatchKey = null;
99
+ this.lastStableRows = [];
100
+ this.lastStableCols = [];
101
+ this.lastStableColumns = [];
102
+ this.lastRenderStateKey = null;
103
+ }
104
+ /**
105
+ * Pointed cell update.
106
+ */
107
+ async updateCell(e) {
108
+ var _a, _b, _c;
109
+ // Stencil tweak to update cell content
110
+ const cell = (_b = (_a = this.renderedRows.get(e.row)) === null || _a === void 0 ? void 0 : _a.$children$) === null || _b === void 0 ? void 0 : _b[e.col];
111
+ if ((_c = cell === null || cell === void 0 ? void 0 : cell.$attrs$) === null || _c === void 0 ? void 0 : _c.redraw) {
112
+ const children = await convertVNodeToHTML(this.element, cell.$attrs$.redraw);
113
+ cell.$elm$.innerHTML = children.html;
114
+ cell.$key$ = Math.random();
115
+ }
116
+ }
117
+ onDataStoreChange() {
118
+ this.onStoreChange();
119
+ }
120
+ onColDataChange() {
121
+ this.onStoreChange();
122
+ }
123
+ onStoreChange() {
124
+ var _a, _b;
125
+ (_a = this.columnService) === null || _a === void 0 ? void 0 : _a.destroy();
126
+ this.columnService = new headerCellRenderer.ColumnService(this.dataStore, this.colData);
127
+ // make sure we have correct data, before render
128
+ this.providers = {
129
+ type: this.type,
130
+ colType: this.colType,
131
+ readonly: this.readonly,
132
+ data: this.dataStore,
133
+ columns: this.colData,
134
+ viewport: this.viewportCol,
135
+ dimension: this.dimensionRow,
136
+ selection: this.rowSelectionStore,
137
+ };
138
+ (_b = this.rangeUnsubscribe) === null || _b === void 0 ? void 0 : _b.call(this);
139
+ this.rangeUnsubscribe = this.rowSelectionStore.onChange('range', (e) => this.rowHighlightPlugin.selectionChange(e, this.renderedRows));
140
+ }
141
+ connectedCallback() {
142
+ this.rowHighlightPlugin = new RowHighlightPlugin();
143
+ this.onStoreChange();
144
+ }
145
+ disconnectedCallback() {
146
+ var _a, _b;
147
+ (_a = this.columnService) === null || _a === void 0 ? void 0 : _a.destroy();
148
+ (_b = this.rangeUnsubscribe) === null || _b === void 0 ? void 0 : _b.call(this);
149
+ }
150
+ async componentWillRender() {
151
+ var _a;
152
+ this.beforeDataRender.emit({
153
+ rowType: this.type,
154
+ colType: this.colType,
155
+ });
156
+ const grid = (_a = this.element) === null || _a === void 0 ? void 0 : _a.closest('revo-grid');
157
+ const waitForColumnsUpdate = () => {
158
+ if (!grid)
159
+ return null;
160
+ if (!grid.hasAttribute('data-columns-updating'))
161
+ return null;
162
+ // console.log('[data] wait columns update', {
163
+ // colType: this.colType,
164
+ // time: performance.now(),
165
+ // });
166
+ return new Promise(resolve => {
167
+ grid.addEventListener('columnsupdateend', () => {
168
+ // console.log('[data] columns update end', {
169
+ // colType: this.colType,
170
+ // time: performance.now(),
171
+ // });
172
+ resolve();
173
+ }, { once: true });
174
+ });
175
+ };
176
+ const waitForDataUpdate = () => {
177
+ if (!grid)
178
+ return null;
179
+ if (!grid.hasAttribute('data-rows-updating'))
180
+ return null;
181
+ // console.log('[data] wait rows update', {
182
+ // colType: this.colType,
183
+ // time: performance.now(),
184
+ // });
185
+ return new Promise(resolve => {
186
+ grid.addEventListener('dataupdateend', () => {
187
+ // console.log('[data] rows update end', {
188
+ // colType: this.colType,
189
+ // time: performance.now(),
190
+ // });
191
+ resolve();
192
+ }, { once: true });
193
+ });
194
+ };
195
+ const pending = [waitForColumnsUpdate(), waitForDataUpdate(), ...this.jobsBeforeRender.map(p => typeof p === 'function' ? p() : p)].filter(Boolean);
196
+ return Promise.all(pending);
197
+ }
198
+ componentDidRender() {
199
+ this.afterrender.emit({ type: this.type, colType: this.colType });
200
+ }
201
+ render() {
202
+ var _a, _b, _c, _d, _e, _f, _g;
203
+ this.renderedRows = new Map();
204
+ // always start from live columns, override only when fallback is needed
205
+ this.columnService.setOverrideColumns(null);
206
+ const colVersion = (_a = this.colData) === null || _a === void 0 ? void 0 : _a.get('version');
207
+ const viewportVersion = (_b = this.viewportCol) === null || _b === void 0 ? void 0 : _b.get('version');
208
+ const isSynced = colVersion === undefined ||
209
+ viewportVersion === undefined ||
210
+ colVersion === viewportVersion;
211
+ const columnsData = this.columnService.columns;
212
+ const rows = this.viewportRow.get('items');
213
+ const cols = this.viewportCol.get('items');
214
+ const hasInvalidColIndex = cols.some(col => !columnsData[col.itemIndex]);
215
+ if (hasInvalidColIndex) {
216
+ const colSource = ((_c = this.colData) === null || _c === void 0 ? void 0 : _c.get('source')) || [];
217
+ const colItems = ((_d = this.colData) === null || _d === void 0 ? void 0 : _d.get('items')) || [];
218
+ const missingIndexes = cols
219
+ .filter(col => !columnsData[col.itemIndex])
220
+ .map(col => col.itemIndex);
221
+ const mismatchKey = JSON.stringify({
222
+ colType: this.colType,
223
+ missing: missingIndexes.slice(0, 10),
224
+ cols: cols.length,
225
+ columnsData: columnsData.length,
226
+ colItems: colItems.length,
227
+ colSource: colSource.length,
228
+ });
229
+ if (mismatchKey !== this.lastMismatchKey) {
230
+ this.lastMismatchKey = mismatchKey;
231
+ console.warn('[data] column index mismatch', {
232
+ colType: this.colType,
233
+ type: this.type,
234
+ missingIndexes: missingIndexes.slice(0, 10),
235
+ colsLength: cols.length,
236
+ columnsDataLength: columnsData.length,
237
+ colItemsLength: colItems.length,
238
+ colSourceLength: colSource.length,
239
+ colItemsHead: colItems.slice(0, 10),
240
+ colPropsHead: columnsData
241
+ .slice(0, 10)
242
+ .map(col => col === null || col === void 0 ? void 0 : col.prop),
243
+ viewportItemsHead: cols.slice(0, 10).map(col => col.itemIndex),
244
+ });
245
+ }
246
+ }
247
+ const hasColumns = columnsData.length > 0;
248
+ const hasCols = cols.length > 0;
249
+ const isEmptyColumns = !hasColumns && !hasCols;
250
+ const gridElement = (_e = this.element) === null || _e === void 0 ? void 0 : _e.closest('revo-grid');
251
+ const isUpdating = !!(gridElement === null || gridElement === void 0 ? void 0 : gridElement.hasAttribute('data-columns-updating')) ||
252
+ !!(gridElement === null || gridElement === void 0 ? void 0 : gridElement.hasAttribute('data-rows-updating'));
253
+ // 主区域在更新中不允许空列,避免取消冻结时主视口短暂清空导致闪烁
254
+ const allowEmptyColumns = this.colType !== 'rgCol' || !isUpdating;
255
+ const canUseCurrent = isSynced &&
256
+ rows.length > 0 &&
257
+ ((hasColumns && hasCols) || (isEmptyColumns && allowEmptyColumns)) &&
258
+ !hasInvalidColIndex;
259
+ const usingFallback = !canUseCurrent;
260
+ if (this.colType === 'rgCol' && this.type === 'rgRow' && (isUpdating || usingFallback || hasInvalidColIndex)) {
261
+ const renderStateKey = JSON.stringify({
262
+ isUpdating,
263
+ isSynced,
264
+ colVersion,
265
+ viewportVersion,
266
+ rows: rows.length,
267
+ cols: cols.length,
268
+ columns: columnsData.length,
269
+ hasInvalidColIndex,
270
+ usingFallback,
271
+ rowRealCount: this.viewportRow.get('realCount'),
272
+ rowVirtualSize: this.viewportRow.get('virtualSize'),
273
+ rowClientSize: this.viewportRow.get('clientSize'),
274
+ });
275
+ if (renderStateKey !== this.lastRenderStateKey) {
276
+ this.lastRenderStateKey = renderStateKey;
277
+ // console.log('[data] render state', {
278
+ // colType: this.colType,
279
+ // rowType: this.type,
280
+ // isUpdating,
281
+ // isSynced,
282
+ // colVersion,
283
+ // viewportVersion,
284
+ // rowsLength: rows.length,
285
+ // colsLength: cols.length,
286
+ // columnsLength: columnsData.length,
287
+ // hasInvalidColIndex,
288
+ // usingFallback,
289
+ // rowRealCount: this.viewportRow.get('realCount'),
290
+ // rowVirtualSize: this.viewportRow.get('virtualSize'),
291
+ // rowClientSize: this.viewportRow.get('clientSize'),
292
+ // });
293
+ }
294
+ }
295
+ const activeColumns = canUseCurrent ? columnsData : this.lastStableColumns;
296
+ const activeRows = canUseCurrent ? rows : this.lastStableRows;
297
+ const activeCols = canUseCurrent ? cols : this.lastStableCols;
298
+ if (canUseCurrent) {
299
+ this.lastStableColumns = [...columnsData];
300
+ this.lastStableRows = [...rows];
301
+ this.lastStableCols = [...cols];
302
+ }
303
+ if (!canUseCurrent && activeColumns.length) {
304
+ this.columnService.setOverrideColumns(activeColumns);
305
+ }
306
+ if (!activeColumns.length || !activeRows.length || !activeCols.length) {
307
+ return;
308
+ }
309
+ const rowsEls = [];
310
+ for (let rgRow of activeRows) {
311
+ const dataItem = dimension_helpers.getSourceItem(this.dataStore, rgRow.itemIndex);
312
+ // #region Grouping
313
+ // Render empty grouping rows (for borders) - content is in the overlay
314
+ if (headerCellRenderer.isGrouping(dataItem)) {
315
+ const emptyRow = (index.h(rowRenderer.RowRenderer, { index: rgRow.itemIndex, rowClass: "groupingRow", size: rgRow.size, start: rgRow.start }));
316
+ this.beforerowrender.emit({
317
+ node: emptyRow,
318
+ item: rgRow,
319
+ model: dataItem,
320
+ colType: this.columnService.type,
321
+ rowType: this.type,
322
+ });
323
+ rowsEls.push(emptyRow);
324
+ this.renderedRows.set(rgRow.itemIndex, emptyRow);
325
+ continue;
326
+ }
327
+ // #endregion
328
+ const cells = [];
329
+ // #region Cells
330
+ // 判断是否需要给最后一列添加类名
331
+ const lastColIndex = activeCols.length > 0 ? activeCols[activeCols.length - 1].itemIndex : -1;
332
+ // 使用传入的 hasColPinEnd prop,如果没有传入则默认为 false
333
+ const hasColPinEnd = (_f = this.hasColPinEnd) !== null && _f !== void 0 ? _f : false;
334
+ const hasRgCol = (_g = this.hasRgCol) !== null && _g !== void 0 ? _g : false;
335
+ for (let rgCol of activeCols) {
336
+ const smodel = Object.assign(Object.assign({}, this.columnService.rowDataModel(rgRow.itemIndex, rgCol.itemIndex)), { providers: this.providers });
337
+ // call before cell render
338
+ const cellEvent = this.triggerBeforeCellRender(smodel, rgRow, rgCol);
339
+ // if event was prevented
340
+ if (cellEvent.defaultPrevented) {
341
+ continue;
342
+ }
343
+ const { detail: { column: columnProps, row: rowProps, model: schemaModel }, } = cellEvent;
344
+ const defaultProps = {
345
+ [dimension_helpers.DATA_COL]: columnProps.itemIndex,
346
+ [dimension_helpers.DATA_ROW]: rowProps.itemIndex,
347
+ style: {
348
+ width: `${columnProps.size}px`,
349
+ transform: `translateX(${columnProps.start}px)`,
350
+ height: rowProps.size ? `${rowProps.size}px` : undefined,
351
+ },
352
+ };
353
+ // 判断是否是最后一列并添加类名
354
+ const isLastColumn = rgCol.itemIndex === lastColIndex;
355
+ if (isLastColumn) {
356
+ // 只在以下情况添加类名:
357
+ // 1. 有右侧冻结列时,只给 colPinEnd 类型的最后一列加
358
+ // 2. 没有右侧冻结列但有主区域时,只给 rgCol 类型的最后一列加
359
+ // 3. 没有右侧冻结列也没有主区域时(全左冻结),给 colPinStart 类型的最后一列加
360
+ const shouldAddClass = (hasColPinEnd && this.colType === 'colPinEnd') ||
361
+ (!hasColPinEnd && hasRgCol && this.colType === 'rgCol') ||
362
+ (!hasColPinEnd && !hasRgCol && this.colType === 'colPinStart');
363
+ if (shouldAddClass) {
364
+ defaultProps.class = { 'last-column': true };
365
+ }
366
+ }
367
+ const props = this.columnService.mergeProperties(rowProps.itemIndex, columnProps.itemIndex, defaultProps, schemaModel);
368
+ // Never use webcomponent for cell render
369
+ // It's very slow because of webcomponent initialization takes time
370
+ const cellNode = index.h(cellRenderer.CellRenderer, { renderProps: {
371
+ schemaModel,
372
+ additionalData: this.additionalData,
373
+ dragStartCell: this.dragStartCell,
374
+ }, cellProps: props });
375
+ cells.push(cellNode);
376
+ }
377
+ // #endregion
378
+ // #region Rows
379
+ let rowClass = this.rowClass
380
+ ? this.columnService.getRowClass(rgRow.itemIndex, this.rowClass)
381
+ : '';
382
+ if (this.rowHighlightPlugin.isRowFocused(rgRow.itemIndex)) {
383
+ rowClass += ` ${dimension_helpers.ROW_FOCUSED_CLASS}`;
384
+ }
385
+ const row = (index.h(rowRenderer.RowRenderer, { index: rgRow.itemIndex, rowClass: rowClass, size: rgRow.size, start: rgRow.start }, cells));
386
+ this.beforerowrender.emit({
387
+ node: row,
388
+ item: rgRow,
389
+ model: dataItem,
390
+ colType: this.columnService.type,
391
+ rowType: this.type,
392
+ });
393
+ rowsEls.push(row);
394
+ this.renderedRows.set(rgRow.itemIndex, row);
395
+ // #endregion
396
+ }
397
+ const hostAttrs = {};
398
+ if (this.uniqueId !== undefined) {
399
+ hostAttrs['data-unique-id'] = this.uniqueId;
400
+ }
401
+ const renderVNode = (index.h(index.Host, Object.assign({}, hostAttrs), index.h("slot", null), rowsEls));
402
+ return renderVNode;
403
+ }
404
+ triggerBeforeCellRender(model, row, column) {
405
+ const detail = {
406
+ column,
407
+ row,
408
+ model,
409
+ rowType: model.type,
410
+ colType: model.colType,
411
+ };
412
+ return this.beforeCellRender.emit(detail);
413
+ }
414
+ get element() { return index.getElement(this); }
415
+ static get watchers() { return {
416
+ "dataStore": ["onDataStoreChange"],
417
+ "colData": ["onColDataChange"]
418
+ }; }
419
+ };
420
+ RevogrData.style = revogrDataStyleCss;
421
+
422
+ const revogrHeaderStyleCss = "@charset \"UTF-8\";revogr-header{position:relative;z-index:5;display:block}revogr-header .header-rgRow{display:block;position:relative}revogr-header .header-rgRow.group{z-index:0}revogr-header .group-rgRow{position:relative;overflow:visible}revogr-header .group-rgRow .rgHeaderCell.merged-header{z-index:5;top:0;align-items:center}revogr-header .rgHeaderCell{position:absolute;box-sizing:border-box;height:100%;z-index:1;display:flex;user-select:text}revogr-header .rgHeaderCell:has(.resizable-r:hover),revogr-header .rgHeaderCell:has(.resizable-l:hover){z-index:92}revogr-header .rgHeaderCell.group-header{text-align:center}revogr-header .rgHeaderCell.align-center{text-align:center}revogr-header .rgHeaderCell.align-left{text-align:left}revogr-header .rgHeaderCell.align-right{text-align:right}revogr-header .rgHeaderCell.sortable{cursor:pointer}revogr-header .rgHeaderCell i.asc:after,revogr-header .rgHeaderCell i.desc:after{font-size:13px}revogr-header .rgHeaderCell i.asc:after{content:\"↑\"}revogr-header .rgHeaderCell i.desc:after{content:\"↓\"}revogr-header .rgHeaderCell.active{z-index:10}revogr-header .rgHeaderCell.active .resizable{background-color:deepskyblue}revogr-header .rgHeaderCell .header-content{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex-grow:1}revogr-header .rgHeaderCell .resizable{display:block;position:absolute;z-index:90;touch-action:none;user-select:none}revogr-header .rgHeaderCell .resizable:not(.resizable-r):not(.resizable-l):hover{background-color:deepskyblue}revogr-header .rgHeaderCell>.resizable-r{cursor:col-resize;width:14px;right:-7px;top:0;height:100%;background-color:transparent !important}revogr-header .rgHeaderCell>.resizable-r::after{content:\"\";position:absolute;left:50%;transform:translateX(-50%);top:0;width:2px;min-width:2px;max-width:2px;height:100%;background-color:transparent;z-index:100}revogr-header .rgHeaderCell>.resizable-rb{cursor:se-resize;width:6px;height:6px;right:0;bottom:0}revogr-header .rgHeaderCell>.resizable-b{cursor:s-resize;height:6px;bottom:0;width:100%;left:0}revogr-header .rgHeaderCell>.resizable-lb{cursor:sw-resize;width:6px;height:6px;left:0;bottom:0}revogr-header .rgHeaderCell>.resizable-l{cursor:col-resize;width:14px;left:-7px;height:100%;top:0;background-color:transparent !important}revogr-header .rgHeaderCell>.resizable-l::after{content:\"\";position:absolute;left:50%;transform:translateX(-50%);top:0;width:2px;height:100%;background-color:transparent;z-index:100}revogr-header .rgHeaderCell>.resizable-lt{cursor:nw-resize;width:6px;height:6px;left:0;top:0}revogr-header .rgHeaderCell>.resizable-t{cursor:n-resize;height:6px;top:0;width:100%;left:0}revogr-header .rgHeaderCell>.resizable-rt{cursor:ne-resize;width:6px;height:6px;right:0;top:0}revogr-header .rv-filter{visibility:hidden}";
423
+
424
+ const RevogrHeaderComponent = class {
425
+ constructor(hostRef) {
426
+ index.registerInstance(this, hostRef);
427
+ this.initialHeaderClick = index.createEvent(this, "beforeheaderclick", 7);
428
+ this.headerresize = index.createEvent(this, "headerresize", 7);
429
+ this.beforeResize = index.createEvent(this, "beforeheaderresize", 7);
430
+ this.headerdblClick = index.createEvent(this, "headerdblclick", 7);
431
+ this.beforeHeaderRender = index.createEvent(this, "beforeheaderrender", 7);
432
+ this.beforeGroupHeaderRender = index.createEvent(this, "beforegroupheaderrender", 7);
433
+ this.afterHeaderRender = index.createEvent(this, "afterheaderrender", 7);
434
+ /**
435
+ * Grouping depth, how many levels of grouping
436
+ */
437
+ this.groupingDepth = 0;
438
+ /**
439
+ * Extra properties to pass into header renderer, such as vue or react components to handle parent
440
+ */
441
+ this.additionalData = {};
442
+ }
443
+ onResize({ width }, index) {
444
+ const col = this.colData[index];
445
+ const event = this.beforeResize.emit([
446
+ Object.assign(Object.assign({}, col), { size: width || undefined }),
447
+ ]);
448
+ if (event.defaultPrevented) {
449
+ return;
450
+ }
451
+ this.headerresize.emit({ [index]: width || 0 });
452
+ }
453
+ onResizeGroup(changedX, startIndex, endIndex) {
454
+ var _a;
455
+ const sizes = {};
456
+ // 优先使用 viewportItems prop,如果没有则从 Observable 读取
457
+ const items = (_a = this.viewportItems) !== null && _a !== void 0 ? _a : this.viewportCol.get('items');
458
+ const cols = throttle.keyBy(items, 'itemIndex');
459
+ const change = changedX / (endIndex - startIndex + 1);
460
+ for (let i = startIndex; i <= endIndex; i++) {
461
+ const item = cols[i];
462
+ if (item) {
463
+ sizes[i] = item.size + change;
464
+ }
465
+ }
466
+ this.headerresize.emit(sizes);
467
+ }
468
+ componentDidRender() {
469
+ this.afterHeaderRender.emit(this.providers);
470
+ }
471
+ /**
472
+ * 处理表头区域的滚轮事件
473
+ * 阻止滚轮事件冒泡,避免表头抖动
474
+ */
475
+ onHeaderWheel(e) {
476
+ // 获取视口滚动组件
477
+ const viewportScroll = this.element.closest('revogr-viewport-scroll');
478
+ if (!viewportScroll) {
479
+ return;
480
+ }
481
+ // 检查是否有滚动空间
482
+ const scrollWidth = viewportScroll.scrollWidth || 0;
483
+ const clientWidth = viewportScroll.clientWidth || 0;
484
+ const maxScrollLeft = Math.max(0, scrollWidth - clientWidth);
485
+ const SCROLL_THRESHOLD = 10;
486
+ // 判断是否为水平滚动(包含 Shift + 滚轮)
487
+ const absX = Math.abs(e.deltaX);
488
+ const absY = Math.abs(e.deltaY);
489
+ const isHorizontalScroll = (absX > absY && absX > 0) || (e.shiftKey && absY > 0);
490
+ // 如果是水平滚动且没有滚动空间,阻止默认行为和冒泡
491
+ if (isHorizontalScroll && maxScrollLeft <= SCROLL_THRESHOLD) {
492
+ e.preventDefault();
493
+ e.stopPropagation();
494
+ return;
495
+ }
496
+ // 如果有滚动空间,阻止冒泡但允许事件传递给父容器处理
497
+ if (isHorizontalScroll) {
498
+ e.stopPropagation();
499
+ // 派发自定义事件让父容器处理
500
+ const customEvent = new CustomEvent('mousewheel-horizontal', {
501
+ bubbles: true,
502
+ detail: {
503
+ deltaX: e.deltaX,
504
+ deltaY: e.deltaY,
505
+ shiftKey: e.shiftKey,
506
+ preventDefault: () => e.preventDefault(),
507
+ },
508
+ });
509
+ this.element.dispatchEvent(customEvent);
510
+ }
511
+ }
512
+ /**
513
+ * 获取多行表头的每行高度
514
+ * 从 CSS 变量 --rg-header-row-height 读取并除以2
515
+ */
516
+ getMultiHeaderRowHeight() {
517
+ if (!this.groupingDepth) {
518
+ return undefined;
519
+ }
520
+ // 从 CSS 变量读取默认表头高度
521
+ const computedStyle = getComputedStyle(this.element);
522
+ const cssHeight = computedStyle.getPropertyValue('--rg-header-row-height').trim();
523
+ if (cssHeight) {
524
+ const heightValue = parseFloat(cssHeight);
525
+ if (!isNaN(heightValue)) {
526
+ return heightValue / 2;
527
+ }
528
+ }
529
+ return undefined;
530
+ }
531
+ render() {
532
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
533
+ // 优先使用 viewportItems prop,如果没有则从 Observable 读取
534
+ // 这样可以让父组件控制渲染时机,实现同步渲染
535
+ const cols = (_a = this.viewportItems) !== null && _a !== void 0 ? _a : this.viewportCol.get('items');
536
+ const range = (_b = this.selectionRange) !== null && _b !== void 0 ? _b : (_c = this.selectionStore) === null || _c === void 0 ? void 0 : _c.get('range');
537
+ // 调试:打印数据源信息
538
+ if (this.type !== 'rowHeaders') {
539
+ const firstCol = cols[0];
540
+ const lastCol = cols[cols.length - 1];
541
+ console.log(`[${this.type}] render:`, {
542
+ colsCount: cols.length,
543
+ colDataCount: (_d = this.colData) === null || _d === void 0 ? void 0 : _d.length,
544
+ usingProp: !!this.viewportItems,
545
+ firstColIndex: firstCol === null || firstCol === void 0 ? void 0 : firstCol.itemIndex,
546
+ firstColProp: (_f = (_e = this.colData) === null || _e === void 0 ? void 0 : _e[firstCol === null || firstCol === void 0 ? void 0 : firstCol.itemIndex]) === null || _f === void 0 ? void 0 : _f.prop,
547
+ firstColName: (_h = (_g = this.colData) === null || _g === void 0 ? void 0 : _g[firstCol === null || firstCol === void 0 ? void 0 : firstCol.itemIndex]) === null || _h === void 0 ? void 0 : _h.name,
548
+ lastColIndex: lastCol === null || lastCol === void 0 ? void 0 : lastCol.itemIndex,
549
+ lastColProp: (_k = (_j = this.colData) === null || _j === void 0 ? void 0 : _j[lastCol === null || lastCol === void 0 ? void 0 : lastCol.itemIndex]) === null || _k === void 0 ? void 0 : _k.prop,
550
+ lastColName: (_m = (_l = this.colData) === null || _l === void 0 ? void 0 : _l[lastCol === null || lastCol === void 0 ? void 0 : lastCol.itemIndex]) === null || _m === void 0 ? void 0 : _m.name,
551
+ allColProps: (_o = this.colData) === null || _o === void 0 ? void 0 : _o.map(c => c === null || c === void 0 ? void 0 : c.prop).join(', '),
552
+ });
553
+ }
554
+ // 获取分组列的索引集合
555
+ const groupedIndexes = this.getGroupedColumnIndexes();
556
+ const { groupedCells, ungroupedCells } = this.renderHeaderColumns(cols, range, groupedIndexes);
557
+ const groupRow = this.renderGroupingColumns();
558
+ // 当有分组但 viewport 数据还没准备好时,隐藏表头避免闪烁
559
+ const isLoading = this.groupingDepth > 0 && cols.length === 0;
560
+ const hostStyle = isLoading ? { visibility: 'hidden' } : undefined;
561
+ // 计算多行表头的每行样式(只在有分组时应用)
562
+ const multiRowHeight = this.getMultiHeaderRowHeight();
563
+ const rowStyle = multiRowHeight !== undefined
564
+ ? { height: `${multiRowHeight}px`, lineHeight: `${multiRowHeight}px` }
565
+ : undefined;
566
+ return (index.h(index.Host, { key: '12001e0621e034daf3d30b0a78895366bc0be2cd', style: hostStyle, onWheel: (e) => this.onHeaderWheel(e) }, index.h("div", { key: '11f6a1b4da11bb82c9c73e2e523a2b20a14e60ec', class: "group-rgRow", style: rowStyle }, groupRow, ungroupedCells), index.h("div", { key: '2084403786fa65615590088765e232e99c331ae0', class: `${dimension_helpers.HEADER_ROW_CLASS} ${dimension_helpers.HEADER_ACTUAL_ROW_CLASS}`, style: rowStyle }, groupedCells)));
567
+ }
568
+ /**
569
+ * 获取属于分组的列索引集合
570
+ */
571
+ getGroupedColumnIndexes() {
572
+ const groupedIndexes = new Set();
573
+ if (this.groupingDepth > 0 && this.groups) {
574
+ for (let i = 0; i < this.groupingDepth; i++) {
575
+ if (this.groups[i]) {
576
+ for (const group of this.groups[i]) {
577
+ for (const idx of group.indexes) {
578
+ groupedIndexes.add(idx);
579
+ }
580
+ }
581
+ }
582
+ }
583
+ }
584
+ return groupedIndexes;
585
+ }
586
+ renderHeaderColumns(cols, range, groupedIndexes) {
587
+ var _a, _b;
588
+ const groupedCells = []; // 分组列的子列,放在 actual-rgRow
589
+ const ungroupedCells = []; // 非分组列,放在 group-rgRow
590
+ // 判断是否需要给最后一列添加类名
591
+ const lastColIndex = cols.length > 0 ? cols[cols.length - 1].itemIndex : -1;
592
+ const hasColPinEnd = (_a = this.hasColPinEnd) !== null && _a !== void 0 ? _a : false;
593
+ const hasRgCol = (_b = this.hasRgCol) !== null && _b !== void 0 ? _b : false;
594
+ for (let i = 0; i < cols.length; i++) {
595
+ const rgCol = cols[i];
596
+ const colData = this.colData[rgCol.itemIndex];
597
+ const isGrouped = this.groupingDepth > 0 && groupedIndexes.has(rgCol.itemIndex);
598
+ // 支持列级别的 resizable 配置,默认跟随全局 canResize
599
+ const columnCanResize = (colData === null || colData === void 0 ? void 0 : colData.resizable) !== false && this.canResize;
600
+ // 统一使用右侧拖拽线,让拖拽行为一致(往右拖=变宽,往左拖=变窄)
601
+ const active = this.resizeHandler || ['r'];
602
+ // 判断是否是最后一列
603
+ const isLastColumn = rgCol.itemIndex === lastColIndex;
604
+ const shouldAddLastColumnClass = isLastColumn && ((hasColPinEnd && this.type === 'colPinEnd') ||
605
+ (!hasColPinEnd && hasRgCol && this.type === 'rgCol') ||
606
+ (!hasColPinEnd && !hasRgCol && this.type === 'colPinStart'));
607
+ const props = {
608
+ range,
609
+ column: rgCol,
610
+ data: Object.assign(Object.assign({}, colData), { index: rgCol.itemIndex, providers: this.providers }),
611
+ canFilter: !!this.columnFilter,
612
+ canResize: columnCanResize,
613
+ active,
614
+ additionalData: this.additionalData,
615
+ onResize: e => this.onResize(e, rgCol.itemIndex),
616
+ onDblClick: e => this.headerdblClick.emit(e),
617
+ onClick: e => this.initialHeaderClick.emit(e),
618
+ // 传递合并信息
619
+ merged: this.groupingDepth > 0 && !isGrouped,
620
+ groupingDepth: this.groupingDepth,
621
+ // 传递是否属于编组
622
+ isGrouped: isGrouped,
623
+ // 传递是否是最后一列
624
+ isLastColumn: shouldAddLastColumnClass,
625
+ };
626
+ const event = this.beforeHeaderRender.emit(props);
627
+ if (!event.defaultPrevented) {
628
+ // 为每个 HeaderRenderer 添加基于列 prop 和区域类型的稳定 key
629
+ // key 必须包含区域类型(this.type),这样当列在不同区域之间移动时
630
+ // Stencil 会正确地销毁旧组件并创建新组件,而不是错误地复用
631
+ const columnKey = (colData === null || colData === void 0 ? void 0 : colData.prop)
632
+ ? `header-${this.type}-${colData.prop}`
633
+ : `header-${this.type}-idx-${rgCol.itemIndex}`;
634
+ if (isGrouped) {
635
+ // 分组列的子列,放在 actual-rgRow
636
+ groupedCells.push(index.h(throttle.HeaderRenderer, Object.assign({ key: columnKey }, event.detail)));
637
+ }
638
+ else if (this.groupingDepth > 0) {
639
+ // 非分组列且有分组存在,放在 group-rgRow(跨两行)
640
+ ungroupedCells.push(index.h(throttle.HeaderRenderer, Object.assign({ key: columnKey }, event.detail)));
641
+ }
642
+ else {
643
+ // 没有分组,所有列都放在 actual-rgRow
644
+ groupedCells.push(index.h(throttle.HeaderRenderer, Object.assign({ key: columnKey }, event.detail)));
645
+ }
646
+ }
647
+ }
648
+ return { groupedCells, ungroupedCells };
649
+ }
650
+ renderGroupingColumns() {
651
+ var _a, _b, _c, _d, _e, _f;
652
+ const groupRow = [];
653
+ // 优先使用 viewportItems prop,如果没有则从 Observable 读取
654
+ const cols = (_a = this.viewportItems) !== null && _a !== void 0 ? _a : this.viewportCol.get('items');
655
+ const lastColIndex = cols.length > 0 ? cols[cols.length - 1].itemIndex : -1;
656
+ const hasColPinEnd = (_b = this.hasColPinEnd) !== null && _b !== void 0 ? _b : false;
657
+ const hasRgCol = (_c = this.hasRgCol) !== null && _c !== void 0 ? _c : false;
658
+ // 优先使用 dimensionState prop,如果没有则从 Observable 读取
659
+ const dimensionState = (_d = this.dimensionState) !== null && _d !== void 0 ? _d : this.dimensionCol.state;
660
+ for (let i = 0; i < this.groupingDepth; i++) {
661
+ if (this.groups[i]) {
662
+ for (let group of this.groups[i]) {
663
+ const groupStartIndex = (_e = group.indexes[0]) !== null && _e !== void 0 ? _e : -1;
664
+ if (groupStartIndex > -1) {
665
+ const groupEndIndex = groupStartIndex + group.indexes.length - 1;
666
+ const groupStart = dimension_helpers.getItemByIndex(dimensionState, groupStartIndex).start;
667
+ const groupEnd = dimension_helpers.getItemByIndex(dimensionState, groupEndIndex).end;
668
+ // 判断编组是否包含最后一列
669
+ const groupContainsLastColumn = groupEndIndex === lastColIndex;
670
+ const shouldAddLastColumnClass = groupContainsLastColumn && ((hasColPinEnd && this.type === 'colPinEnd') ||
671
+ (!hasColPinEnd && hasRgCol && this.type === 'rgCol') ||
672
+ (!hasColPinEnd && !hasRgCol && this.type === 'colPinStart'));
673
+ const props = {
674
+ providers: this.providers,
675
+ start: groupStart,
676
+ end: groupEnd,
677
+ group,
678
+ active: this.resizeHandler,
679
+ canResize: false, // 编组头不允许调整宽度
680
+ additionalData: this.additionalData,
681
+ onResize: e => {
682
+ var _a;
683
+ return this.onResizeGroup((_a = e.changedX) !== null && _a !== void 0 ? _a : 0, groupStartIndex, groupEndIndex);
684
+ },
685
+ isLastColumn: shouldAddLastColumnClass,
686
+ };
687
+ const event = this.beforeGroupHeaderRender.emit(props);
688
+ if (!event.defaultPrevented) {
689
+ // 为 GroupHeaderRenderer 添加稳定的 key
690
+ // 使用编组的第一个索引作为 key 的一部分
691
+ const firstIndex = (_f = group.indexes[0]) !== null && _f !== void 0 ? _f : groupStartIndex;
692
+ const groupKey = `group-header-${this.type}-${i}-${firstIndex}`;
693
+ groupRow.push(index.h(throttle.HeaderGroupRenderer, Object.assign({ key: groupKey }, event.detail)));
694
+ }
695
+ }
696
+ }
697
+ }
698
+ const multiRowHeight = this.getMultiHeaderRowHeight();
699
+ const groupDivStyle = multiRowHeight !== undefined
700
+ ? { height: `${multiRowHeight}px` }
701
+ : undefined;
702
+ groupRow.push(index.h("div", { class: `${dimension_helpers.HEADER_ROW_CLASS} group`, style: groupDivStyle }));
703
+ }
704
+ return groupRow;
705
+ }
706
+ get providers() {
707
+ return {
708
+ type: this.type,
709
+ readonly: this.readonly,
710
+ data: this.colData,
711
+ viewport: this.viewportCol,
712
+ dimension: this.dimensionCol,
713
+ selection: this.selectionStore,
714
+ };
715
+ }
716
+ get element() { return index.getElement(this); }
717
+ };
718
+ RevogrHeaderComponent.style = revogrHeaderStyleCss;
719
+
720
+ class GridResizeService {
721
+ constructor(el, resize, elements) {
722
+ this.resize = resize;
723
+ this.resizeObserver = null;
724
+ this.previousSize = {
725
+ width: 0,
726
+ height: 0,
727
+ };
728
+ this.apply = throttle.throttle((e) => {
729
+ var _a;
730
+ const entry = {
731
+ width: e.width,
732
+ height: e.height,
733
+ };
734
+ (_a = this.resize) === null || _a === void 0 ? void 0 : _a.call(this, entry, this.previousSize);
735
+ this.previousSize = entry;
736
+ }, 40, {
737
+ leading: false,
738
+ trailing: true,
739
+ });
740
+ const extras = [];
741
+ elements.forEach((element) => {
742
+ if (element) {
743
+ extras.push(element);
744
+ }
745
+ });
746
+ this.init(el, extras);
747
+ }
748
+ init(el, extras = []) {
749
+ const observer = this.resizeObserver = new ResizeObserver((e) => {
750
+ if (e.length) {
751
+ if (e[0].target === el) {
752
+ this.apply(e[0].contentRect);
753
+ }
754
+ else {
755
+ this.apply(el.getBoundingClientRect());
756
+ }
757
+ }
758
+ });
759
+ observer.observe(el);
760
+ extras.forEach((extra) => {
761
+ observer.observe(extra);
762
+ });
763
+ }
764
+ destroy() {
765
+ var _a;
766
+ (_a = this.resizeObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
767
+ this.resizeObserver = null;
768
+ }
769
+ }
770
+
771
+ const revogrViewportScrollStyleCss = ".rowHeaders{z-index:2;font-size:10px;display:flex;height:100%}.rowHeaders revogr-data .rgCell{text-align:center}.rowHeaders .rgCell{padding:0 1em !important;min-width:100%}revogr-viewport-scroll{-ms-overflow-style:none;scrollbar-width:none;overflow-x:auto;overflow-y:hidden;position:relative;z-index:1;height:100%}revogr-viewport-scroll::-webkit-scrollbar{display:none;-webkit-appearance:none}revogr-viewport-scroll.colPinStart,revogr-viewport-scroll.colPinEnd{z-index:2;overflow:visible}revogr-viewport-scroll.colPinStart:has(.resizable-r:hover),revogr-viewport-scroll.colPinStart:has(.resizable-l:hover),revogr-viewport-scroll.colPinEnd:has(.resizable-r:hover),revogr-viewport-scroll.colPinEnd:has(.resizable-l:hover){z-index:93}revogr-viewport-scroll.colPinEnd:has(.active){overflow:visible}revogr-viewport-scroll .content-wrapper{overflow:hidden}revogr-viewport-scroll .inner-content-table{display:flex;flex-direction:column;max-height:100%;width:100%;min-width:100%;position:relative;z-index:0}revogr-viewport-scroll .vertical-inner{overflow-y:auto;position:relative;width:100%;flex-grow:1;outline:none;-ms-overflow-style:none;scrollbar-width:none;}revogr-viewport-scroll .vertical-inner::-webkit-scrollbar{display:none;-webkit-appearance:none}revogr-viewport-scroll .vertical-inner revogr-data,revogr-viewport-scroll .vertical-inner revogr-overlay-selection{height:100%}";
772
+
773
+ const RevogrViewportScroll = class {
774
+ constructor(hostRef) {
775
+ index.registerInstance(this, hostRef);
776
+ this.scrollViewport = index.createEvent(this, "scrollviewport", 7);
777
+ this.resizeViewport = index.createEvent(this, "resizeviewport", 7);
778
+ this.scrollchange = index.createEvent(this, "scrollchange", 7);
779
+ this.silentScroll = index.createEvent(this, "scrollviewportsilent", 7);
780
+ /**
781
+ * Width of inner content
782
+ */
783
+ this.contentWidth = 0;
784
+ this.lastHorizontalScrollLeft = RevogrViewportScroll.UNKNOWN_SCROLL_COORDINATE;
785
+ this.lastVerticalScrollTop = RevogrViewportScroll.UNKNOWN_SCROLL_COORDINATE;
786
+ /**
787
+ * Height of inner content
788
+ */
789
+ this.contentHeight = 0;
790
+ this.setVerticalScrollRef = (el) => {
791
+ if (this.verticalScroll !== el) {
792
+ this.verticalScroll = el;
793
+ this.lastVerticalScrollTop = RevogrViewportScroll.UNKNOWN_SCROLL_COORDINATE;
794
+ }
795
+ };
796
+ // 用于防抖的定时器
797
+ this.scrollVisibilityTimer = null;
798
+ // 待处理的滚动可见性更新
799
+ this.pendingScrollVisibility = new Map();
800
+ }
801
+ isLayoutUpdating() {
802
+ var _a;
803
+ const grid = (_a = this.horizontalScroll) === null || _a === void 0 ? void 0 : _a.closest('revo-grid');
804
+ return !!(grid === null || grid === void 0 ? void 0 : grid.hasAttribute('data-columns-updating'));
805
+ }
806
+ syncHorizontalScrollCacheFromDom() {
807
+ var _a, _b;
808
+ const value = (_b = (_a = this.horizontalScroll) === null || _a === void 0 ? void 0 : _a.scrollLeft) !== null && _b !== void 0 ? _b : 0;
809
+ this.lastHorizontalScrollLeft = value;
810
+ return value;
811
+ }
812
+ syncVerticalScrollCacheFromDom() {
813
+ var _a, _b;
814
+ const value = (_b = (_a = this.verticalScroll) === null || _a === void 0 ? void 0 : _a.scrollTop) !== null && _b !== void 0 ? _b : 0;
815
+ this.lastVerticalScrollTop = value;
816
+ return value;
817
+ }
818
+ getKnownHorizontalScrollLeft() {
819
+ return Number.isNaN(this.lastHorizontalScrollLeft)
820
+ ? this.syncHorizontalScrollCacheFromDom()
821
+ : this.lastHorizontalScrollLeft;
822
+ }
823
+ getKnownVerticalScrollTop() {
824
+ return Number.isNaN(this.lastVerticalScrollTop)
825
+ ? this.syncVerticalScrollCacheFromDom()
826
+ : this.lastVerticalScrollTop;
827
+ }
828
+ setHorizontalScrollIfNeeded(next) {
829
+ if (!this.horizontalScroll) {
830
+ return false;
831
+ }
832
+ const current = this.getKnownHorizontalScrollLeft();
833
+ if (Math.abs(current - next) < RevogrViewportScroll.SCROLL_WRITE_EPSILON) {
834
+ return false;
835
+ }
836
+ this.horizontalScroll.scrollLeft = next;
837
+ this.lastHorizontalScrollLeft = next;
838
+ return true;
839
+ }
840
+ setVerticalScrollIfNeeded(next) {
841
+ if (!this.verticalScroll) {
842
+ return false;
843
+ }
844
+ const current = this.getKnownVerticalScrollTop();
845
+ if (Math.abs(current - next) < RevogrViewportScroll.SCROLL_WRITE_EPSILON) {
846
+ return false;
847
+ }
848
+ this.verticalScroll.scrollTop = next;
849
+ this.lastVerticalScrollTop = next;
850
+ return true;
851
+ }
852
+ /**
853
+ * 监听 contentWidth 变化,在渲染前调整滚动位置
854
+ * 这样可以避免空白闪烁
855
+ */
856
+ contentWidthChanged(newValue, oldValue) {
857
+ // 宽度变化时都需要检查和调整滚动位置
858
+ if (this.horizontalScroll && newValue !== oldValue) {
859
+ // 使用 requestAnimationFrame 确保在 DOM 更新后执行
860
+ requestAnimationFrame(() => {
861
+ var _a;
862
+ if (!this.horizontalScroll)
863
+ return;
864
+ if (this.isLayoutUpdating()) {
865
+ return;
866
+ }
867
+ const clientWidth = this.horizontalScroll.clientWidth;
868
+ const maxScrollLeft = Math.max(0, newValue - clientWidth);
869
+ const currentScrollLeft = this.syncHorizontalScrollCacheFromDom();
870
+ // 如果当前滚动位置超过最大可滚动位置,调整到最大位置
871
+ if (currentScrollLeft > maxScrollLeft && maxScrollLeft >= 0) {
872
+ this.setHorizontalScrollIfNeeded(maxScrollLeft);
873
+ if (this.colType === 'rgCol') {
874
+ (_a = this.localScrollService) === null || _a === void 0 ? void 0 : _a.scroll(maxScrollLeft, 'rgCol', true);
875
+ }
876
+ }
877
+ });
878
+ }
879
+ }
880
+ /**
881
+ * 监听内容高度变化,处理折叠后滚动条超出导致的空白闪烁
882
+ */
883
+ contentHeightChanged(newValue, oldValue) {
884
+ var _a;
885
+ if (!this.verticalScroll || newValue === oldValue) {
886
+ return;
887
+ }
888
+ if (newValue >= oldValue) {
889
+ return;
890
+ }
891
+ // 在高度变小时,当前 scrollTop 可能超过最大值,需回退到可滚范围
892
+ const previousScrollTop = this.syncVerticalScrollCacheFromDom();
893
+ const clientHeight = this.verticalScroll.clientHeight;
894
+ const maxScrollTop = Math.max(0, newValue - clientHeight);
895
+ const nextScrollTop = Math.min(previousScrollTop, maxScrollTop);
896
+ const didAdjust = nextScrollTop !== previousScrollTop;
897
+ if (didAdjust) {
898
+ this.setVerticalScrollIfNeeded(nextScrollTop);
899
+ }
900
+ // 仅主视口在实际发生校正时广播垂直坐标,避免固定列/空视口把 scrollTop 错误回写为 0
901
+ if (didAdjust && this.colType === 'rgCol') {
902
+ (_a = this.localScrollService) === null || _a === void 0 ? void 0 : _a.scroll(nextScrollTop, 'rgRow', true);
903
+ }
904
+ }
905
+ /**
906
+ * 保证当前垂直滚动位置不超过内容高度
907
+ * 用于内容高度变化后的一致性校正(例如树形折叠导致行数骤减)
908
+ */
909
+ normalizeVerticalScrollPosition() {
910
+ var _a;
911
+ if (!this.verticalScroll)
912
+ return;
913
+ const clientHeight = this.verticalScroll.clientHeight;
914
+ const maxScrollTop = Math.max(0, this.contentHeight - clientHeight);
915
+ const currentScrollTop = this.syncVerticalScrollCacheFromDom();
916
+ if (currentScrollTop > maxScrollTop) {
917
+ this.setVerticalScrollIfNeeded(maxScrollTop);
918
+ // 仅主视口广播,避免非主视口坐标污染
919
+ if (this.colType === 'rgCol') {
920
+ (_a = this.localScrollService) === null || _a === void 0 ? void 0 : _a.scroll(maxScrollTop, 'rgRow', true);
921
+ }
922
+ }
923
+ }
924
+ async setScroll(e) {
925
+ var _a, _b;
926
+ this.localScrollTimer.latestScrollUpdate(e.dimension);
927
+ const coordinate = e.coordinate;
928
+ // 目标坐标已一致时,跳过本地滚动服务,避免进入无效的 RAF + scrollTop 回写链路
929
+ if (typeof coordinate === 'number') {
930
+ if (e.dimension === 'rgCol') {
931
+ if (Math.abs(this.getKnownHorizontalScrollLeft() - coordinate) <
932
+ RevogrViewportScroll.SCROLL_WRITE_EPSILON) {
933
+ return;
934
+ }
935
+ }
936
+ else if (e.dimension === 'rgRow') {
937
+ const shouldKeepTransformReset = !!((_a = this.verticalScroll) === null || _a === void 0 ? void 0 : _a.style.transform);
938
+ if (!shouldKeepTransformReset &&
939
+ Math.abs(this.getKnownVerticalScrollTop() - coordinate) <
940
+ RevogrViewportScroll.SCROLL_WRITE_EPSILON) {
941
+ return;
942
+ }
943
+ }
944
+ }
945
+ (_b = this.localScrollService) === null || _b === void 0 ? void 0 : _b.setScroll(e);
946
+ }
947
+ /**
948
+ * update on delta in case we don't know existing position or external change
949
+ * @param e
950
+ */
951
+ async changeScroll(e, silent = false) {
952
+ var _a, _b, _c, _d;
953
+ if (silent) {
954
+ if (e.coordinate && this.verticalScroll) {
955
+ switch (e.dimension) {
956
+ // for mobile devices to skip negative scroll loop. only on vertical scroll
957
+ case 'rgRow':
958
+ this.verticalScroll.style.transform = `translateY(${ -1 * e.coordinate}px)`;
959
+ break;
960
+ }
961
+ }
962
+ return;
963
+ }
964
+ if (e.delta) {
965
+ // 滚动阈值:小于此值认为没有实际滚动空间
966
+ const SCROLL_THRESHOLD = 10;
967
+ // 检查是否有滚动空间
968
+ if (e.dimension === 'rgCol') {
969
+ const maxScrollLeft = Math.max(0, this.contentWidth - this.horizontalScroll.clientWidth);
970
+ // 如果没有滚动空间,不处理滚动
971
+ if (maxScrollLeft <= SCROLL_THRESHOLD) {
972
+ e.coordinate = 0;
973
+ return e;
974
+ }
975
+ e.coordinate = this.horizontalScroll.scrollLeft + e.delta;
976
+ }
977
+ else if (e.dimension === 'rgRow') {
978
+ const maxScrollTop = Math.max(0, this.contentHeight - ((_b = (_a = this.verticalScroll) === null || _a === void 0 ? void 0 : _a.clientHeight) !== null && _b !== void 0 ? _b : 0));
979
+ // 如果没有滚动空间,不处理滚动
980
+ if (maxScrollTop <= SCROLL_THRESHOLD) {
981
+ e.coordinate = 0;
982
+ return e;
983
+ }
984
+ e.coordinate = ((_d = (_c = this.verticalScroll) === null || _c === void 0 ? void 0 : _c.scrollTop) !== null && _d !== void 0 ? _d : 0) + e.delta;
985
+ }
986
+ this.setScroll(e);
987
+ }
988
+ return e;
989
+ }
990
+ /**
991
+ * Dispatch this event to trigger vertical mouse wheel from plugins
992
+ */
993
+ mousewheelVertical({ detail: e, }) {
994
+ this.verticalMouseWheel(e);
995
+ }
996
+ /**
997
+ * Dispatch this event to trigger horizontal mouse wheel from plugins
998
+ */
999
+ mousewheelHorizontal({ detail: e, }) {
1000
+ this.horizontalMouseWheel(e);
1001
+ }
1002
+ /**
1003
+ * Allows to use outside listener
1004
+ */
1005
+ scrollApply({ detail: { type, coordinate }, }) {
1006
+ this.applyOnScroll(type, coordinate, true);
1007
+ }
1008
+ connectedCallback() {
1009
+ /**
1010
+ * Bind scroll functions for farther usage
1011
+ */
1012
+ // allow mousewheel for all devices including mobile
1013
+ this.verticalMouseWheel = this.onVerticalMouseWheel.bind(this, 'rgRow', 'deltaY');
1014
+ this.horizontalMouseWheel = this.onHorizontalMouseWheel.bind(this, 'rgCol');
1015
+ this.localScrollTimer = new throttle.LocalScrollTimer('ontouchstart' in document.documentElement ? 0 : 10);
1016
+ /**
1017
+ * Create local scroll service
1018
+ */
1019
+ this.localScrollService = new throttle.LocalScrollService({
1020
+ // to improve safari smoothnes on scroll
1021
+ skipAnimationFrame: cellRenderer.isSafariDesktop(),
1022
+ runScroll: e => this.scrollViewport.emit(e),
1023
+ applyScroll: e => {
1024
+ this.localScrollTimer.setCoordinate(e);
1025
+ switch (e.dimension) {
1026
+ case 'rgCol':
1027
+ // this will trigger on scroll event
1028
+ this.setHorizontalScrollIfNeeded(e.coordinate);
1029
+ break;
1030
+ case 'rgRow':
1031
+ if (this.verticalScroll) {
1032
+ // this will trigger on scroll event
1033
+ this.setVerticalScrollIfNeeded(e.coordinate);
1034
+ // for mobile devices to skip negative scroll loop. only on vertical scroll
1035
+ if (this.verticalScroll.style.transform) {
1036
+ this.verticalScroll.style.transform = '';
1037
+ }
1038
+ }
1039
+ break;
1040
+ }
1041
+ },
1042
+ });
1043
+ }
1044
+ componentDidLoad() {
1045
+ // track viewport resize
1046
+ this.resizeService = new GridResizeService(this.horizontalScroll, (entry) => {
1047
+ var _a, _b, _c, _d, _e, _f, _g, _h;
1048
+ const els = {};
1049
+ let calculatedHeight = entry.height || 0;
1050
+ if (calculatedHeight) {
1051
+ calculatedHeight -=
1052
+ ((_b = (_a = this.header) === null || _a === void 0 ? void 0 : _a.clientHeight) !== null && _b !== void 0 ? _b : 0) +
1053
+ ((_d = (_c = this.footer) === null || _c === void 0 ? void 0 : _c.clientHeight) !== null && _d !== void 0 ? _d : 0);
1054
+ }
1055
+ els.rgRow = {
1056
+ size: calculatedHeight,
1057
+ contentSize: this.contentHeight,
1058
+ scroll: (_f = (_e = this.verticalScroll) === null || _e === void 0 ? void 0 : _e.scrollTop) !== null && _f !== void 0 ? _f : 0,
1059
+ noScroll: false,
1060
+ };
1061
+ const calculatedWidth = entry.width || 0;
1062
+ els.rgCol = {
1063
+ size: calculatedWidth,
1064
+ contentSize: this.contentWidth,
1065
+ scroll: this.horizontalScroll.scrollLeft,
1066
+ noScroll: this.colType !== 'rgCol',
1067
+ };
1068
+ // Process changes in order: width first, then height
1069
+ const dimensions = ['rgCol', 'rgRow'];
1070
+ for (const dimension of dimensions) {
1071
+ const item = els[dimension];
1072
+ if (!item)
1073
+ continue;
1074
+ this.resizeViewport.emit({
1075
+ dimension,
1076
+ size: item.size,
1077
+ rowHeader: this.rowHeader,
1078
+ });
1079
+ if (item.noScroll) {
1080
+ continue;
1081
+ }
1082
+ if (dimension === 'rgCol' || this.colType === 'rgCol') {
1083
+ (_g = this.localScrollService) === null || _g === void 0 ? void 0 : _g.scroll((_h = item.scroll) !== null && _h !== void 0 ? _h : 0, dimension, true);
1084
+ }
1085
+ // track scroll visibility on outer element change
1086
+ this.setScrollVisibility(dimension, item.size, item.contentSize);
1087
+ }
1088
+ }, [this.footer, this.header]);
1089
+ }
1090
+ /**
1091
+ * Check if scroll present or not per type
1092
+ * Trigger this method on inner content size change or on outer element size change
1093
+ * If inner content bigger then outer size then scroll is present and mousewheel binding required
1094
+ * @param type - dimension type 'rgRow/y' or 'rgCol/x'
1095
+ * @param size - outer content size
1096
+ * @param innerContentSize - inner content size
1097
+ */
1098
+ setScrollVisibility(type, size, innerContentSize) {
1099
+ // 保存待处理的更新
1100
+ this.pendingScrollVisibility.set(type, { size, contentSize: innerContentSize });
1101
+ // 清除之前的定时器
1102
+ if (this.scrollVisibilityTimer) {
1103
+ clearTimeout(this.scrollVisibilityTimer);
1104
+ }
1105
+ // 延迟执行,等待所有更新稳定
1106
+ this.scrollVisibilityTimer = setTimeout(() => {
1107
+ this.scrollVisibilityTimer = null;
1108
+ this.applyScrollVisibility();
1109
+ }, RevogrViewportScroll.SCROLL_VISIBILITY_DELAY);
1110
+ }
1111
+ /**
1112
+ * 实际应用滚动可见性更新
1113
+ */
1114
+ applyScrollVisibility() {
1115
+ var _a, _b, _c, _d, _e, _f;
1116
+ // 滚动阈值:小于此值认为没有实际滚动空间
1117
+ const SCROLL_THRESHOLD = 10;
1118
+ // 重新获取最新的尺寸值,而不是使用之前保存的值
1119
+ const rgColData = {
1120
+ size: this.horizontalScroll.clientWidth,
1121
+ contentSize: this.contentWidth,
1122
+ };
1123
+ const rgRowData = {
1124
+ size: (_b = (_a = this.verticalScroll) === null || _a === void 0 ? void 0 : _a.clientHeight) !== null && _b !== void 0 ? _b : 0,
1125
+ contentSize: this.contentHeight,
1126
+ };
1127
+ // 处理水平滚动
1128
+ const rgColDiff = rgColData.contentSize - rgColData.size;
1129
+ const hasHorizontalScroll = rgColDiff > SCROLL_THRESHOLD;
1130
+ if (hasHorizontalScroll) {
1131
+ (_c = this.horizontalScroll) === null || _c === void 0 ? void 0 : _c.classList.add('scroll-rgCol');
1132
+ }
1133
+ else {
1134
+ (_d = this.horizontalScroll) === null || _d === void 0 ? void 0 : _d.classList.remove('scroll-rgCol');
1135
+ }
1136
+ this.scrollchange.emit({ type: 'rgCol', hasScroll: hasHorizontalScroll });
1137
+ // 处理垂直滚动
1138
+ const rgRowDiff = rgRowData.contentSize - rgRowData.size;
1139
+ const hasVerticalScroll = rgRowDiff > SCROLL_THRESHOLD;
1140
+ if (hasVerticalScroll) {
1141
+ (_e = this.verticalScroll) === null || _e === void 0 ? void 0 : _e.classList.add('scroll-rgRow');
1142
+ }
1143
+ else {
1144
+ (_f = this.verticalScroll) === null || _f === void 0 ? void 0 : _f.classList.remove('scroll-rgRow');
1145
+ }
1146
+ this.scrollchange.emit({ type: 'rgRow', hasScroll: hasVerticalScroll });
1147
+ this.pendingScrollVisibility.clear();
1148
+ }
1149
+ disconnectedCallback() {
1150
+ var _a;
1151
+ (_a = this.resizeService) === null || _a === void 0 ? void 0 : _a.destroy();
1152
+ if (this.scrollVisibilityTimer) {
1153
+ clearTimeout(this.scrollVisibilityTimer);
1154
+ }
1155
+ }
1156
+ async componentDidRender() {
1157
+ var _a, _b, _c, _d;
1158
+ this.localScrollService.setParams({
1159
+ contentSize: this.contentHeight,
1160
+ clientSize: (_b = (_a = this.verticalScroll) === null || _a === void 0 ? void 0 : _a.clientHeight) !== null && _b !== void 0 ? _b : 0,
1161
+ virtualSize: 0,
1162
+ }, 'rgRow');
1163
+ this.localScrollService.setParams({
1164
+ contentSize: this.contentWidth,
1165
+ clientSize: this.horizontalScroll.clientWidth,
1166
+ virtualSize: 0,
1167
+ }, 'rgCol');
1168
+ // 检查并调整水平滚动位置,避免内容宽度变化后出现空白
1169
+ this.adjustScrollPosition();
1170
+ // 使用防抖的 setScrollVisibility,避免 resize 过程中的闪烁
1171
+ this.setScrollVisibility('rgRow', (_d = (_c = this.verticalScroll) === null || _c === void 0 ? void 0 : _c.clientHeight) !== null && _d !== void 0 ? _d : 0, this.contentHeight);
1172
+ this.setScrollVisibility('rgCol', this.horizontalScroll.clientWidth, this.contentWidth);
1173
+ // 统一在渲染后再校正一次垂直滚动位置,避免高度骤降时的空白闪烁
1174
+ this.normalizeVerticalScrollPosition();
1175
+ }
1176
+ /**
1177
+ * 调整滚动位置,确保不会超出内容边界
1178
+ * 当内容宽度变化(如列宽调整)后,如果当前滚动位置超过最大可滚动位置,需要调整
1179
+ */
1180
+ adjustScrollPosition() {
1181
+ var _a, _b;
1182
+ if (!this.horizontalScroll)
1183
+ return;
1184
+ if (this.isLayoutUpdating()) {
1185
+ return;
1186
+ }
1187
+ const clientWidth = this.horizontalScroll.clientWidth;
1188
+ const maxScrollLeft = Math.max(0, this.contentWidth - clientWidth);
1189
+ const currentScrollLeft = this.syncHorizontalScrollCacheFromDom();
1190
+ // 滚动阈值:小于此值认为没有实际滚动空间
1191
+ const SCROLL_THRESHOLD = 10;
1192
+ // 如果没有滚动空间,确保滚动位置为0
1193
+ if (maxScrollLeft <= SCROLL_THRESHOLD) {
1194
+ if (currentScrollLeft > 0) {
1195
+ this.setHorizontalScrollIfNeeded(0);
1196
+ if (this.colType === 'rgCol') {
1197
+ (_a = this.localScrollService) === null || _a === void 0 ? void 0 : _a.scroll(0, 'rgCol', true);
1198
+ }
1199
+ }
1200
+ return;
1201
+ }
1202
+ // 如果当前滚动位置超过最大可滚动位置,调整到最大位置
1203
+ if (currentScrollLeft > maxScrollLeft) {
1204
+ this.setHorizontalScrollIfNeeded(maxScrollLeft);
1205
+ if (this.colType === 'rgCol') {
1206
+ (_b = this.localScrollService) === null || _b === void 0 ? void 0 : _b.scroll(maxScrollLeft, 'rgCol', true);
1207
+ }
1208
+ }
1209
+ }
1210
+ /**
1211
+ * Prevent space key from scrolling the viewport
1212
+ */
1213
+ onKeyDown(e) {
1214
+ if (e.code === 'Space') {
1215
+ e.preventDefault();
1216
+ }
1217
+ }
1218
+ render() {
1219
+ return (index.h(index.Host, { key: '41ec47ece0eb1435281917856b3d22e258558ae8', onWheel: this.horizontalMouseWheel, onScroll: (e) => this.applyScroll('rgCol', e), onKeyDown: (e) => this.onKeyDown(e) }, index.h("div", { key: 'ec49cdf9206ac64b31b1f7d6f0960b8e8ab831db', class: "inner-content-table", style: { width: `${this.contentWidth}px` } }, index.h("div", { key: '0dd1aa5e6a4f2b347a0d851f5f45782d0ca56b0b', class: "header-wrapper", ref: e => (this.header = e) }, index.h("slot", { key: 'f3a9f2f4c2607014ce908f940bdc67ecc7e5e93b', name: viewport_helpers.HEADER_SLOT })), index.h("div", { key: '3ff9e141bc2524ed859580d1ef10ad5c37ad70b3', class: "vertical-inner", ref: this.setVerticalScrollRef, onWheel: this.verticalMouseWheel, onScroll: (e) => this.applyScroll('rgRow', e), onKeyDown: (e) => this.onKeyDown(e) }, index.h("div", { key: '8fb922c1be861574713af4494a543ed0cbc48681', class: "content-wrapper", style: { height: `${this.contentHeight}px` } }, index.h("slot", { key: 'bbd7ed2ee26584e67ca101a1fe341d6a9e4ab670', name: viewport_helpers.CONTENT_SLOT }))), index.h("div", { key: '917dfc764edd4cc51b3d0bdda926afa5d1335268', class: "footer-wrapper", ref: e => (this.footer = e) }, index.h("slot", { key: '3173f6c8ec90e220024ebead9a721f1291f93df9', name: viewport_helpers.FOOTER_SLOT })))));
1220
+ }
1221
+ /**
1222
+ * Extra layer for scroll event monitoring, where MouseWheel event is not passing
1223
+ * We need to trigger scroll event in case there is no mousewheel event
1224
+ */
1225
+ async applyScroll(type, e) {
1226
+ var _a, _b, _c;
1227
+ if (!(e.target instanceof HTMLElement)) {
1228
+ return;
1229
+ }
1230
+ let scroll = 0;
1231
+ switch (type) {
1232
+ case 'rgCol':
1233
+ scroll = e.target.scrollLeft;
1234
+ this.lastHorizontalScrollLeft = scroll;
1235
+ break;
1236
+ case 'rgRow':
1237
+ scroll = e.target.scrollTop;
1238
+ this.lastVerticalScrollTop = scroll;
1239
+ break;
1240
+ }
1241
+ // for mobile devices to skip negative scroll loop
1242
+ if (scroll < 0) {
1243
+ this.silentScroll.emit({ dimension: type, coordinate: scroll });
1244
+ return;
1245
+ }
1246
+ if (type === 'rgCol' && this.colType !== 'rgCol') {
1247
+ return;
1248
+ }
1249
+ if (type === 'rgRow' && this.colType !== 'rgCol') {
1250
+ return;
1251
+ }
1252
+ if (this.isLayoutUpdating()) {
1253
+ return;
1254
+ }
1255
+ // 滚动阈值:小于此值认为没有实际滚动空间
1256
+ const SCROLL_THRESHOLD = 10;
1257
+ // 检查是否有滚动空间
1258
+ if (type === 'rgCol') {
1259
+ const maxScrollLeft = Math.max(0, this.contentWidth - this.horizontalScroll.clientWidth);
1260
+ // 如果没有滚动空间,重置滚动位置并返回
1261
+ if (maxScrollLeft <= SCROLL_THRESHOLD) {
1262
+ if (scroll > 0) {
1263
+ if (Math.abs(e.target.scrollLeft) >= RevogrViewportScroll.SCROLL_WRITE_EPSILON) {
1264
+ e.target.scrollLeft = 0;
1265
+ this.lastHorizontalScrollLeft = 0;
1266
+ }
1267
+ }
1268
+ return;
1269
+ }
1270
+ // 限制滚动位置不超过最大值(防止过度滚动导致空白)
1271
+ if (scroll > maxScrollLeft) {
1272
+ if (Math.abs(e.target.scrollLeft - maxScrollLeft) >= RevogrViewportScroll.SCROLL_WRITE_EPSILON) {
1273
+ e.target.scrollLeft = maxScrollLeft;
1274
+ this.lastHorizontalScrollLeft = maxScrollLeft;
1275
+ }
1276
+ scroll = maxScrollLeft;
1277
+ }
1278
+ }
1279
+ else if (type === 'rgRow') {
1280
+ const maxScrollTop = Math.max(0, this.contentHeight - ((_b = (_a = this.verticalScroll) === null || _a === void 0 ? void 0 : _a.clientHeight) !== null && _b !== void 0 ? _b : 0));
1281
+ // 如果没有滚动空间,重置滚动位置并返回
1282
+ if (maxScrollTop <= SCROLL_THRESHOLD) {
1283
+ if (scroll > 0 && this.verticalScroll) {
1284
+ this.setVerticalScrollIfNeeded(0);
1285
+ }
1286
+ return;
1287
+ }
1288
+ // 限制滚动位置不超过最大值(防止过度滚动导致空白)
1289
+ if (scroll > maxScrollTop) {
1290
+ this.setVerticalScrollIfNeeded(maxScrollTop);
1291
+ scroll = maxScrollTop;
1292
+ }
1293
+ }
1294
+ // 水平滚动在 Shift + 滚轮快速往返场景下更容易出现节流导致的坐标滞后,
1295
+ // 这里直接同步一次,避免 viewport 坐标与 DOM scrollLeft 不一致造成空白。
1296
+ if (type === 'rgCol') {
1297
+ (_c = this.localScrollService) === null || _c === void 0 ? void 0 : _c.scroll(scroll, type);
1298
+ return;
1299
+ }
1300
+ this.applyOnScroll(type, scroll);
1301
+ }
1302
+ /**
1303
+ * Applies change on scroll event only if mousewheel event happened some time ago
1304
+ */
1305
+ applyOnScroll(type, coordinate, outside = false) {
1306
+ const lastScrollUpdate = () => {
1307
+ var _a;
1308
+ (_a = this.localScrollService) === null || _a === void 0 ? void 0 : _a.scroll(coordinate, type, undefined, undefined, outside);
1309
+ };
1310
+ // apply after throttling
1311
+ if (this.localScrollTimer.isReady(type, coordinate)) {
1312
+ lastScrollUpdate();
1313
+ }
1314
+ else {
1315
+ this.localScrollTimer.throttleLastScrollUpdate(type, coordinate, () => lastScrollUpdate());
1316
+ }
1317
+ }
1318
+ /**
1319
+ * On vertical mousewheel event
1320
+ * @param type
1321
+ * @param delta
1322
+ * @param e
1323
+ */
1324
+ onVerticalMouseWheel(type, delta, e) {
1325
+ var _a, _b, _c, _d, _e, _f, _g, _h;
1326
+ // Shift + 滚轮用于水平滚动,不应触发垂直滚动链路
1327
+ if (e.shiftKey) {
1328
+ return;
1329
+ }
1330
+ const scrollTop = (_b = (_a = this.verticalScroll) === null || _a === void 0 ? void 0 : _a.scrollTop) !== null && _b !== void 0 ? _b : 0;
1331
+ const clientHeight = (_d = (_c = this.verticalScroll) === null || _c === void 0 ? void 0 : _c.clientHeight) !== null && _d !== void 0 ? _d : 0;
1332
+ const scrollHeight = (_f = (_e = this.verticalScroll) === null || _e === void 0 ? void 0 : _e.scrollHeight) !== null && _f !== void 0 ? _f : 0;
1333
+ // Detect if the user has reached the bottom
1334
+ const atBottom = scrollTop + clientHeight >= scrollHeight && e.deltaY > 0;
1335
+ const atTop = scrollTop === 0 && e.deltaY < 0;
1336
+ if (!atBottom && !atTop) {
1337
+ (_g = e.preventDefault) === null || _g === void 0 ? void 0 : _g.call(e);
1338
+ }
1339
+ const pos = scrollTop + e[delta];
1340
+ (_h = this.localScrollService) === null || _h === void 0 ? void 0 : _h.scroll(pos, type, undefined, e[delta]);
1341
+ this.localScrollTimer.latestScrollUpdate(type);
1342
+ }
1343
+ /**
1344
+ * On horizontal mousewheel event
1345
+ * @param type
1346
+ * @param e
1347
+ */
1348
+ onHorizontalMouseWheel(type, e) {
1349
+ var _a, _b, _c;
1350
+ const deltaX = e.deltaX || 0;
1351
+ const deltaY = e.deltaY || 0;
1352
+ // 只有当水平滚动是主要意图时才处理
1353
+ // 触摸板垂直滚动时可能会有微小的 deltaX,需要过滤掉
1354
+ const absX = Math.abs(deltaX);
1355
+ const absY = Math.abs(deltaY);
1356
+ // Shift + 滚轮(常见于鼠标)通常只有 deltaY,需要映射为水平滚动
1357
+ const normalizedDelta = deltaX || (e.shiftKey ? deltaY : 0);
1358
+ const isShiftHorizontalScroll = !!e.shiftKey && !deltaX && !!deltaY;
1359
+ // 如果没有水平滚动,或者垂直滚动更明显,不处理
1360
+ if (!normalizedDelta || (!isShiftHorizontalScroll && absY > absX)) {
1361
+ return;
1362
+ }
1363
+ const { scrollLeft, scrollWidth, clientWidth } = this.horizontalScroll;
1364
+ // 滚动阈值:小于此值认为没有实际滚动空间
1365
+ const SCROLL_THRESHOLD = 10;
1366
+ const maxScrollLeft = Math.max(0, scrollWidth - clientWidth);
1367
+ // 如果没有滚动空间(内容宽度小于等于可见宽度),阻止默认行为并直接返回
1368
+ if (maxScrollLeft <= SCROLL_THRESHOLD) {
1369
+ (_a = e.preventDefault) === null || _a === void 0 ? void 0 : _a.call(e);
1370
+ return;
1371
+ }
1372
+ // 统一阻止默认横向滚动,避免浏览器原生滚动与组件逻辑叠加
1373
+ (_b = e.preventDefault) === null || _b === void 0 ? void 0 : _b.call(e);
1374
+ const pos = Math.max(0, Math.min(maxScrollLeft, scrollLeft + normalizedDelta));
1375
+ if (pos === scrollLeft) {
1376
+ return;
1377
+ }
1378
+ (_c = this.localScrollService) === null || _c === void 0 ? void 0 : _c.scroll(pos, type, true, normalizedDelta);
1379
+ this.localScrollTimer.latestScrollUpdate(type);
1380
+ }
1381
+ get horizontalScroll() { return index.getElement(this); }
1382
+ static get watchers() { return {
1383
+ "contentWidth": ["contentWidthChanged"],
1384
+ "contentHeight": ["contentHeightChanged"]
1385
+ }; }
1386
+ };
1387
+ RevogrViewportScroll.SCROLL_WRITE_EPSILON = 0.5;
1388
+ RevogrViewportScroll.UNKNOWN_SCROLL_COORDINATE = Number.NaN;
1389
+ // 防抖延迟时间
1390
+ RevogrViewportScroll.SCROLL_VISIBILITY_DELAY = 200;
1391
+ RevogrViewportScroll.style = revogrViewportScrollStyleCss;
1392
+
1393
+ const VNodeToHtml = class {
1394
+ constructor(hostRef) {
1395
+ index.registerInstance(this, hostRef);
1396
+ this.html = index.createEvent(this, "html", 7);
1397
+ this.redraw = null;
1398
+ this.vnodes = [];
1399
+ }
1400
+ componentDidRender() {
1401
+ this.html.emit({
1402
+ html: this.el.innerHTML,
1403
+ vnodes: this.vnodes,
1404
+ });
1405
+ }
1406
+ render() {
1407
+ var _a, _b;
1408
+ this.vnodes = (_b = (_a = this.redraw) === null || _a === void 0 ? void 0 : _a.call(this)) !== null && _b !== void 0 ? _b : null;
1409
+ return (index.h(index.Host, { key: '98c8d309598d95565d6ac18f2458e81ec66db396', style: { visibility: 'hidden', position: 'absolute' } }, this.vnodes));
1410
+ }
1411
+ get el() { return index.getElement(this); }
1412
+ };
1413
+
1414
+ exports.revogr_data = RevogrData;
1415
+ exports.revogr_header = RevogrHeaderComponent;
1416
+ exports.revogr_viewport_scroll = RevogrViewportScroll;
1417
+ exports.vnode_html = VNodeToHtml;
1418
+ //# sourceMappingURL=revogr-data.revogr-header.revogr-viewport-scroll.vnode-html.entry.cjs.js.map
1419
+
1420
+ //# sourceMappingURL=revogr-data_4.cjs.entry.js.map