@pega/lists-core 8.0.0-build.27.14

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 (468) hide show
  1. package/LICENSE +185 -0
  2. package/README.md +80 -0
  3. package/SECURITY.md +11 -0
  4. package/lib/index.d.ts +13 -0
  5. package/lib/index.d.ts.map +1 -0
  6. package/lib/index.js +14 -0
  7. package/lib/index.js.map +1 -0
  8. package/lib/src/core/RsCore.d.ts +37 -0
  9. package/lib/src/core/RsCore.d.ts.map +1 -0
  10. package/lib/src/core/RsCore.js +48 -0
  11. package/lib/src/core/RsCore.js.map +1 -0
  12. package/lib/src/core/RsInternal.d.ts +85 -0
  13. package/lib/src/core/RsInternal.d.ts.map +1 -0
  14. package/lib/src/core/RsInternal.js +104 -0
  15. package/lib/src/core/RsInternal.js.map +1 -0
  16. package/lib/src/core/RsProps.d.ts +52 -0
  17. package/lib/src/core/RsProps.d.ts.map +1 -0
  18. package/lib/src/core/RsProps.js +47 -0
  19. package/lib/src/core/RsProps.js.map +1 -0
  20. package/lib/src/core/RsStore.d.ts +62 -0
  21. package/lib/src/core/RsStore.d.ts.map +1 -0
  22. package/lib/src/core/RsStore.js +59 -0
  23. package/lib/src/core/RsStore.js.map +1 -0
  24. package/lib/src/core/StateResolver.d.ts +45 -0
  25. package/lib/src/core/StateResolver.d.ts.map +1 -0
  26. package/lib/src/core/StateResolver.js +276 -0
  27. package/lib/src/core/StateResolver.js.map +1 -0
  28. package/lib/src/core/a11y/BaseA11y.d.ts +161 -0
  29. package/lib/src/core/a11y/BaseA11y.d.ts.map +1 -0
  30. package/lib/src/core/a11y/BaseA11y.js +549 -0
  31. package/lib/src/core/a11y/BaseA11y.js.map +1 -0
  32. package/lib/src/core/actions/actionConstants.d.ts +77 -0
  33. package/lib/src/core/actions/actionConstants.d.ts.map +1 -0
  34. package/lib/src/core/actions/actionConstants.js +79 -0
  35. package/lib/src/core/actions/actionConstants.js.map +1 -0
  36. package/lib/src/core/actions/actions.d.ts +400 -0
  37. package/lib/src/core/actions/actions.d.ts.map +1 -0
  38. package/lib/src/core/actions/actions.js +537 -0
  39. package/lib/src/core/actions/actions.js.map +1 -0
  40. package/lib/src/core/actions/actions.types.d.ts +504 -0
  41. package/lib/src/core/actions/actions.types.d.ts.map +1 -0
  42. package/lib/src/core/actions/actions.types.js +5 -0
  43. package/lib/src/core/actions/actions.types.js.map +1 -0
  44. package/lib/src/core/config/config.d.ts +9 -0
  45. package/lib/src/core/config/config.d.ts.map +1 -0
  46. package/lib/src/core/config/config.js +93 -0
  47. package/lib/src/core/config/config.js.map +1 -0
  48. package/lib/src/core/config/filterConfig.d.ts +123 -0
  49. package/lib/src/core/config/filterConfig.d.ts.map +1 -0
  50. package/lib/src/core/config/filterConfig.js +238 -0
  51. package/lib/src/core/config/filterConfig.js.map +1 -0
  52. package/lib/src/core/constants.d.ts +146 -0
  53. package/lib/src/core/constants.d.ts.map +1 -0
  54. package/lib/src/core/constants.js +124 -0
  55. package/lib/src/core/constants.js.map +1 -0
  56. package/lib/src/core/features/featureFactory.d.ts +52 -0
  57. package/lib/src/core/features/featureFactory.d.ts.map +1 -0
  58. package/lib/src/core/features/featureFactory.js +118 -0
  59. package/lib/src/core/features/featureFactory.js.map +1 -0
  60. package/lib/src/core/features/uIFeatures/afterRender/animation.d.ts +24 -0
  61. package/lib/src/core/features/uIFeatures/afterRender/animation.d.ts.map +1 -0
  62. package/lib/src/core/features/uIFeatures/afterRender/animation.js +157 -0
  63. package/lib/src/core/features/uIFeatures/afterRender/animation.js.map +1 -0
  64. package/lib/src/core/features/uIFeatures/afterRender/columnSizing/autoSize.d.ts +29 -0
  65. package/lib/src/core/features/uIFeatures/afterRender/columnSizing/autoSize.d.ts.map +1 -0
  66. package/lib/src/core/features/uIFeatures/afterRender/columnSizing/autoSize.js +114 -0
  67. package/lib/src/core/features/uIFeatures/afterRender/columnSizing/autoSize.js.map +1 -0
  68. package/lib/src/core/features/uIFeatures/afterRender/columnSizing/index.d.ts +38 -0
  69. package/lib/src/core/features/uIFeatures/afterRender/columnSizing/index.d.ts.map +1 -0
  70. package/lib/src/core/features/uIFeatures/afterRender/columnSizing/index.js +157 -0
  71. package/lib/src/core/features/uIFeatures/afterRender/columnSizing/index.js.map +1 -0
  72. package/lib/src/core/features/uIFeatures/afterRender/customizeParentContainer/index.d.ts +16 -0
  73. package/lib/src/core/features/uIFeatures/afterRender/customizeParentContainer/index.d.ts.map +1 -0
  74. package/lib/src/core/features/uIFeatures/afterRender/customizeParentContainer/index.js +32 -0
  75. package/lib/src/core/features/uIFeatures/afterRender/customizeParentContainer/index.js.map +1 -0
  76. package/lib/src/core/features/uIFeatures/beforeRender/adjustHeight.d.ts +25 -0
  77. package/lib/src/core/features/uIFeatures/beforeRender/adjustHeight.d.ts.map +1 -0
  78. package/lib/src/core/features/uIFeatures/beforeRender/adjustHeight.js +139 -0
  79. package/lib/src/core/features/uIFeatures/beforeRender/adjustHeight.js.map +1 -0
  80. package/lib/src/core/features/uIFeatures/beforeRender/adjustHeightToFitRecords.d.ts +18 -0
  81. package/lib/src/core/features/uIFeatures/beforeRender/adjustHeightToFitRecords.d.ts.map +1 -0
  82. package/lib/src/core/features/uIFeatures/beforeRender/adjustHeightToFitRecords.js +46 -0
  83. package/lib/src/core/features/uIFeatures/beforeRender/adjustHeightToFitRecords.js.map +1 -0
  84. package/lib/src/core/features/uIFeatures/beforeRender/adjustMaxHeight.d.ts +13 -0
  85. package/lib/src/core/features/uIFeatures/beforeRender/adjustMaxHeight.d.ts.map +1 -0
  86. package/lib/src/core/features/uIFeatures/beforeRender/adjustMaxHeight.js +38 -0
  87. package/lib/src/core/features/uIFeatures/beforeRender/adjustMaxHeight.js.map +1 -0
  88. package/lib/src/core/features/uIFeatures/beforeRender/aggregation.d.ts +11 -0
  89. package/lib/src/core/features/uIFeatures/beforeRender/aggregation.d.ts.map +1 -0
  90. package/lib/src/core/features/uIFeatures/beforeRender/aggregation.js +48 -0
  91. package/lib/src/core/features/uIFeatures/beforeRender/aggregation.js.map +1 -0
  92. package/lib/src/core/features/uIFeatures/beforeRender/animation.d.ts +25 -0
  93. package/lib/src/core/features/uIFeatures/beforeRender/animation.d.ts.map +1 -0
  94. package/lib/src/core/features/uIFeatures/beforeRender/animation.js +106 -0
  95. package/lib/src/core/features/uIFeatures/beforeRender/animation.js.map +1 -0
  96. package/lib/src/core/features/uIFeatures/beforeRender/busyIndicator.d.ts +18 -0
  97. package/lib/src/core/features/uIFeatures/beforeRender/busyIndicator.d.ts.map +1 -0
  98. package/lib/src/core/features/uIFeatures/beforeRender/busyIndicator.js +56 -0
  99. package/lib/src/core/features/uIFeatures/beforeRender/busyIndicator.js.map +1 -0
  100. package/lib/src/core/features/uIFeatures/beforeRender/changePersonalisation.d.ts +7 -0
  101. package/lib/src/core/features/uIFeatures/beforeRender/changePersonalisation.d.ts.map +1 -0
  102. package/lib/src/core/features/uIFeatures/beforeRender/changePersonalisation.js +34 -0
  103. package/lib/src/core/features/uIFeatures/beforeRender/changePersonalisation.js.map +1 -0
  104. package/lib/src/core/features/uIFeatures/beforeRender/columnAlias.d.ts +10 -0
  105. package/lib/src/core/features/uIFeatures/beforeRender/columnAlias.d.ts.map +1 -0
  106. package/lib/src/core/features/uIFeatures/beforeRender/columnAlias.js +72 -0
  107. package/lib/src/core/features/uIFeatures/beforeRender/columnAlias.js.map +1 -0
  108. package/lib/src/core/features/uIFeatures/beforeRender/columnDisplayMode.d.ts +9 -0
  109. package/lib/src/core/features/uIFeatures/beforeRender/columnDisplayMode.d.ts.map +1 -0
  110. package/lib/src/core/features/uIFeatures/beforeRender/columnDisplayMode.js +26 -0
  111. package/lib/src/core/features/uIFeatures/beforeRender/columnDisplayMode.js.map +1 -0
  112. package/lib/src/core/features/uIFeatures/beforeRender/columnFormatter.d.ts +9 -0
  113. package/lib/src/core/features/uIFeatures/beforeRender/columnFormatter.d.ts.map +1 -0
  114. package/lib/src/core/features/uIFeatures/beforeRender/columnFormatter.js +29 -0
  115. package/lib/src/core/features/uIFeatures/beforeRender/columnFormatter.js.map +1 -0
  116. package/lib/src/core/features/uIFeatures/beforeRender/columnOrder.d.ts +11 -0
  117. package/lib/src/core/features/uIFeatures/beforeRender/columnOrder.d.ts.map +1 -0
  118. package/lib/src/core/features/uIFeatures/beforeRender/columnOrder.js +38 -0
  119. package/lib/src/core/features/uIFeatures/beforeRender/columnOrder.js.map +1 -0
  120. package/lib/src/core/features/uIFeatures/beforeRender/columnReOrder.d.ts +11 -0
  121. package/lib/src/core/features/uIFeatures/beforeRender/columnReOrder.d.ts.map +1 -0
  122. package/lib/src/core/features/uIFeatures/beforeRender/columnReOrder.js +199 -0
  123. package/lib/src/core/features/uIFeatures/beforeRender/columnReOrder.js.map +1 -0
  124. package/lib/src/core/features/uIFeatures/beforeRender/columnSizing/index.d.ts +5 -0
  125. package/lib/src/core/features/uIFeatures/beforeRender/columnSizing/index.d.ts.map +1 -0
  126. package/lib/src/core/features/uIFeatures/beforeRender/columnSizing/index.js +29 -0
  127. package/lib/src/core/features/uIFeatures/beforeRender/columnSizing/index.js.map +1 -0
  128. package/lib/src/core/features/uIFeatures/beforeRender/columnSizing/resize.d.ts +14 -0
  129. package/lib/src/core/features/uIFeatures/beforeRender/columnSizing/resize.d.ts.map +1 -0
  130. package/lib/src/core/features/uIFeatures/beforeRender/columnSizing/resize.js +118 -0
  131. package/lib/src/core/features/uIFeatures/beforeRender/columnSizing/resize.js.map +1 -0
  132. package/lib/src/core/features/uIFeatures/beforeRender/columnSort.d.ts +8 -0
  133. package/lib/src/core/features/uIFeatures/beforeRender/columnSort.d.ts.map +1 -0
  134. package/lib/src/core/features/uIFeatures/beforeRender/columnSort.js +25 -0
  135. package/lib/src/core/features/uIFeatures/beforeRender/columnSort.js.map +1 -0
  136. package/lib/src/core/features/uIFeatures/beforeRender/columnToggle.d.ts +9 -0
  137. package/lib/src/core/features/uIFeatures/beforeRender/columnToggle.d.ts.map +1 -0
  138. package/lib/src/core/features/uIFeatures/beforeRender/columnToggle.js +26 -0
  139. package/lib/src/core/features/uIFeatures/beforeRender/columnToggle.js.map +1 -0
  140. package/lib/src/core/features/uIFeatures/beforeRender/columnVisualOrder.d.ts +12 -0
  141. package/lib/src/core/features/uIFeatures/beforeRender/columnVisualOrder.d.ts.map +1 -0
  142. package/lib/src/core/features/uIFeatures/beforeRender/columnVisualOrder.js +57 -0
  143. package/lib/src/core/features/uIFeatures/beforeRender/columnVisualOrder.js.map +1 -0
  144. package/lib/src/core/features/uIFeatures/beforeRender/conditionalStyleFormat.d.ts +9 -0
  145. package/lib/src/core/features/uIFeatures/beforeRender/conditionalStyleFormat.d.ts.map +1 -0
  146. package/lib/src/core/features/uIFeatures/beforeRender/conditionalStyleFormat.js +36 -0
  147. package/lib/src/core/features/uIFeatures/beforeRender/conditionalStyleFormat.js.map +1 -0
  148. package/lib/src/core/features/uIFeatures/beforeRender/customColumn.d.ts +9 -0
  149. package/lib/src/core/features/uIFeatures/beforeRender/customColumn.d.ts.map +1 -0
  150. package/lib/src/core/features/uIFeatures/beforeRender/customColumn.js +70 -0
  151. package/lib/src/core/features/uIFeatures/beforeRender/customColumn.js.map +1 -0
  152. package/lib/src/core/features/uIFeatures/beforeRender/edit.d.ts +12 -0
  153. package/lib/src/core/features/uIFeatures/beforeRender/edit.d.ts.map +1 -0
  154. package/lib/src/core/features/uIFeatures/beforeRender/edit.js +94 -0
  155. package/lib/src/core/features/uIFeatures/beforeRender/edit.js.map +1 -0
  156. package/lib/src/core/features/uIFeatures/beforeRender/errorColumn.d.ts +9 -0
  157. package/lib/src/core/features/uIFeatures/beforeRender/errorColumn.d.ts.map +1 -0
  158. package/lib/src/core/features/uIFeatures/beforeRender/errorColumn.js +26 -0
  159. package/lib/src/core/features/uIFeatures/beforeRender/errorColumn.js.map +1 -0
  160. package/lib/src/core/features/uIFeatures/beforeRender/filter.d.ts +10 -0
  161. package/lib/src/core/features/uIFeatures/beforeRender/filter.d.ts.map +1 -0
  162. package/lib/src/core/features/uIFeatures/beforeRender/filter.js +36 -0
  163. package/lib/src/core/features/uIFeatures/beforeRender/filter.js.map +1 -0
  164. package/lib/src/core/features/uIFeatures/beforeRender/freeze.d.ts +15 -0
  165. package/lib/src/core/features/uIFeatures/beforeRender/freeze.d.ts.map +1 -0
  166. package/lib/src/core/features/uIFeatures/beforeRender/freeze.js +119 -0
  167. package/lib/src/core/features/uIFeatures/beforeRender/freeze.js.map +1 -0
  168. package/lib/src/core/features/uIFeatures/beforeRender/grouping.d.ts +38 -0
  169. package/lib/src/core/features/uIFeatures/beforeRender/grouping.d.ts.map +1 -0
  170. package/lib/src/core/features/uIFeatures/beforeRender/grouping.js +451 -0
  171. package/lib/src/core/features/uIFeatures/beforeRender/grouping.js.map +1 -0
  172. package/lib/src/core/features/uIFeatures/beforeRender/groupsorting.d.ts +7 -0
  173. package/lib/src/core/features/uIFeatures/beforeRender/groupsorting.d.ts.map +1 -0
  174. package/lib/src/core/features/uIFeatures/beforeRender/groupsorting.js +36 -0
  175. package/lib/src/core/features/uIFeatures/beforeRender/groupsorting.js.map +1 -0
  176. package/lib/src/core/features/uIFeatures/beforeRender/moveListRecords.d.ts +7 -0
  177. package/lib/src/core/features/uIFeatures/beforeRender/moveListRecords.d.ts.map +1 -0
  178. package/lib/src/core/features/uIFeatures/beforeRender/moveListRecords.js +76 -0
  179. package/lib/src/core/features/uIFeatures/beforeRender/moveListRecords.js.map +1 -0
  180. package/lib/src/core/features/uIFeatures/beforeRender/personalization.d.ts +16 -0
  181. package/lib/src/core/features/uIFeatures/beforeRender/personalization.d.ts.map +1 -0
  182. package/lib/src/core/features/uIFeatures/beforeRender/personalization.js +306 -0
  183. package/lib/src/core/features/uIFeatures/beforeRender/personalization.js.map +1 -0
  184. package/lib/src/core/features/uIFeatures/beforeRender/prepareColumns.d.ts +7 -0
  185. package/lib/src/core/features/uIFeatures/beforeRender/prepareColumns.d.ts.map +1 -0
  186. package/lib/src/core/features/uIFeatures/beforeRender/prepareColumns.js +59 -0
  187. package/lib/src/core/features/uIFeatures/beforeRender/prepareColumns.js.map +1 -0
  188. package/lib/src/core/features/uIFeatures/beforeRender/prepareRows.d.ts +7 -0
  189. package/lib/src/core/features/uIFeatures/beforeRender/prepareRows.d.ts.map +1 -0
  190. package/lib/src/core/features/uIFeatures/beforeRender/prepareRows.js +30 -0
  191. package/lib/src/core/features/uIFeatures/beforeRender/prepareRows.js.map +1 -0
  192. package/lib/src/core/features/uIFeatures/beforeRender/refresh.d.ts +15 -0
  193. package/lib/src/core/features/uIFeatures/beforeRender/refresh.d.ts.map +1 -0
  194. package/lib/src/core/features/uIFeatures/beforeRender/refresh.js +40 -0
  195. package/lib/src/core/features/uIFeatures/beforeRender/refresh.js.map +1 -0
  196. package/lib/src/core/features/uIFeatures/beforeRender/renderHeader.d.ts +7 -0
  197. package/lib/src/core/features/uIFeatures/beforeRender/renderHeader.d.ts.map +1 -0
  198. package/lib/src/core/features/uIFeatures/beforeRender/renderHeader.js +21 -0
  199. package/lib/src/core/features/uIFeatures/beforeRender/renderHeader.js.map +1 -0
  200. package/lib/src/core/features/uIFeatures/beforeRender/resetFetch.d.ts +7 -0
  201. package/lib/src/core/features/uIFeatures/beforeRender/resetFetch.d.ts.map +1 -0
  202. package/lib/src/core/features/uIFeatures/beforeRender/resetFetch.js +55 -0
  203. package/lib/src/core/features/uIFeatures/beforeRender/resetFetch.js.map +1 -0
  204. package/lib/src/core/features/uIFeatures/beforeRender/resizeGroupedDragDropColumn.d.ts +7 -0
  205. package/lib/src/core/features/uIFeatures/beforeRender/resizeGroupedDragDropColumn.d.ts.map +1 -0
  206. package/lib/src/core/features/uIFeatures/beforeRender/resizeGroupedDragDropColumn.js +24 -0
  207. package/lib/src/core/features/uIFeatures/beforeRender/resizeGroupedDragDropColumn.js.map +1 -0
  208. package/lib/src/core/features/uIFeatures/beforeRender/rowDragDrop.d.ts +9 -0
  209. package/lib/src/core/features/uIFeatures/beforeRender/rowDragDrop.d.ts.map +1 -0
  210. package/lib/src/core/features/uIFeatures/beforeRender/rowDragDrop.js +232 -0
  211. package/lib/src/core/features/uIFeatures/beforeRender/rowDragDrop.js.map +1 -0
  212. package/lib/src/core/features/uIFeatures/beforeRender/rowHeight.d.ts +7 -0
  213. package/lib/src/core/features/uIFeatures/beforeRender/rowHeight.d.ts.map +1 -0
  214. package/lib/src/core/features/uIFeatures/beforeRender/rowHeight.js +18 -0
  215. package/lib/src/core/features/uIFeatures/beforeRender/rowHeight.js.map +1 -0
  216. package/lib/src/core/features/uIFeatures/beforeRender/rowSelect.d.ts +23 -0
  217. package/lib/src/core/features/uIFeatures/beforeRender/rowSelect.d.ts.map +1 -0
  218. package/lib/src/core/features/uIFeatures/beforeRender/rowSelect.js +135 -0
  219. package/lib/src/core/features/uIFeatures/beforeRender/rowSelect.js.map +1 -0
  220. package/lib/src/core/features/uIFeatures/beforeRender/scrollToTop.d.ts +14 -0
  221. package/lib/src/core/features/uIFeatures/beforeRender/scrollToTop.d.ts.map +1 -0
  222. package/lib/src/core/features/uIFeatures/beforeRender/scrollToTop.js +36 -0
  223. package/lib/src/core/features/uIFeatures/beforeRender/scrollToTop.js.map +1 -0
  224. package/lib/src/core/features/uIFeatures/beforeRender/stateHydration.d.ts +19 -0
  225. package/lib/src/core/features/uIFeatures/beforeRender/stateHydration.d.ts.map +1 -0
  226. package/lib/src/core/features/uIFeatures/beforeRender/stateHydration.js +157 -0
  227. package/lib/src/core/features/uIFeatures/beforeRender/stateHydration.js.map +1 -0
  228. package/lib/src/core/features/uIFeatures/beforeRender/stateSanitization.d.ts +29 -0
  229. package/lib/src/core/features/uIFeatures/beforeRender/stateSanitization.d.ts.map +1 -0
  230. package/lib/src/core/features/uIFeatures/beforeRender/stateSanitization.js +214 -0
  231. package/lib/src/core/features/uIFeatures/beforeRender/stateSanitization.js.map +1 -0
  232. package/lib/src/core/features/uIFeatures/beforeRender/toggleHeaderIcons.d.ts +11 -0
  233. package/lib/src/core/features/uIFeatures/beforeRender/toggleHeaderIcons.d.ts.map +1 -0
  234. package/lib/src/core/features/uIFeatures/beforeRender/toggleHeaderIcons.js +26 -0
  235. package/lib/src/core/features/uIFeatures/beforeRender/toggleHeaderIcons.js.map +1 -0
  236. package/lib/src/core/features/uIFeatures/beforeRender/toggleSelectAllCheckbox.d.ts +12 -0
  237. package/lib/src/core/features/uIFeatures/beforeRender/toggleSelectAllCheckbox.d.ts.map +1 -0
  238. package/lib/src/core/features/uIFeatures/beforeRender/toggleSelectAllCheckbox.js +51 -0
  239. package/lib/src/core/features/uIFeatures/beforeRender/toggleSelectAllCheckbox.js.map +1 -0
  240. package/lib/src/core/features/uIFeatures/index.d.ts +55 -0
  241. package/lib/src/core/features/uIFeatures/index.d.ts.map +1 -0
  242. package/lib/src/core/features/uIFeatures/index.js +95 -0
  243. package/lib/src/core/features/uIFeatures/index.js.map +1 -0
  244. package/lib/src/core/generators/ColumnGenerator.d.ts +349 -0
  245. package/lib/src/core/generators/ColumnGenerator.d.ts.map +1 -0
  246. package/lib/src/core/generators/ColumnGenerator.js +725 -0
  247. package/lib/src/core/generators/ColumnGenerator.js.map +1 -0
  248. package/lib/src/core/generators/ColumnGenerator.types.d.ts +149 -0
  249. package/lib/src/core/generators/ColumnGenerator.types.d.ts.map +1 -0
  250. package/lib/src/core/generators/ColumnGenerator.types.js +2 -0
  251. package/lib/src/core/generators/ColumnGenerator.types.js.map +1 -0
  252. package/lib/src/core/generators/GroupGenerator.d.ts +59 -0
  253. package/lib/src/core/generators/GroupGenerator.d.ts.map +1 -0
  254. package/lib/src/core/generators/GroupGenerator.js +64 -0
  255. package/lib/src/core/generators/GroupGenerator.js.map +1 -0
  256. package/lib/src/core/generators/RowGenerator.d.ts +97 -0
  257. package/lib/src/core/generators/RowGenerator.d.ts.map +1 -0
  258. package/lib/src/core/generators/RowGenerator.js +285 -0
  259. package/lib/src/core/generators/RowGenerator.js.map +1 -0
  260. package/lib/src/core/generators/RowGenerator.types.d.ts +95 -0
  261. package/lib/src/core/generators/RowGenerator.types.d.ts.map +1 -0
  262. package/lib/src/core/generators/RowGenerator.types.js +2 -0
  263. package/lib/src/core/generators/RowGenerator.types.js.map +1 -0
  264. package/lib/src/core/generators/ViewGenerator.d.ts +280 -0
  265. package/lib/src/core/generators/ViewGenerator.d.ts.map +1 -0
  266. package/lib/src/core/generators/ViewGenerator.js +585 -0
  267. package/lib/src/core/generators/ViewGenerator.js.map +1 -0
  268. package/lib/src/core/generators/ViewGenerator.types.d.ts +180 -0
  269. package/lib/src/core/generators/ViewGenerator.types.d.ts.map +1 -0
  270. package/lib/src/core/generators/ViewGenerator.types.js +2 -0
  271. package/lib/src/core/generators/ViewGenerator.types.js.map +1 -0
  272. package/lib/src/core/generators/__tests__/viewUtilityMockSetup.d.ts +69 -0
  273. package/lib/src/core/generators/__tests__/viewUtilityMockSetup.d.ts.map +1 -0
  274. package/lib/src/core/generators/__tests__/viewUtilityMockSetup.js +16 -0
  275. package/lib/src/core/generators/__tests__/viewUtilityMockSetup.js.map +1 -0
  276. package/lib/src/core/generators/viewUtilityMethods.d.ts +316 -0
  277. package/lib/src/core/generators/viewUtilityMethods.d.ts.map +1 -0
  278. package/lib/src/core/generators/viewUtilityMethods.js +542 -0
  279. package/lib/src/core/generators/viewUtilityMethods.js.map +1 -0
  280. package/lib/src/core/index.d.ts +7 -0
  281. package/lib/src/core/index.d.ts.map +1 -0
  282. package/lib/src/core/index.js +80 -0
  283. package/lib/src/core/index.js.map +1 -0
  284. package/lib/src/core/pubSub/events.d.ts +6 -0
  285. package/lib/src/core/pubSub/events.d.ts.map +1 -0
  286. package/lib/src/core/pubSub/events.js +6 -0
  287. package/lib/src/core/pubSub/events.js.map +1 -0
  288. package/lib/src/core/pubSub/index.d.ts +7 -0
  289. package/lib/src/core/pubSub/index.d.ts.map +1 -0
  290. package/lib/src/core/pubSub/index.js +35 -0
  291. package/lib/src/core/pubSub/index.js.map +1 -0
  292. package/lib/src/core/reducers/aggregation.d.ts +5 -0
  293. package/lib/src/core/reducers/aggregation.d.ts.map +1 -0
  294. package/lib/src/core/reducers/aggregation.js +35 -0
  295. package/lib/src/core/reducers/aggregation.js.map +1 -0
  296. package/lib/src/core/reducers/bootstrap.d.ts +5 -0
  297. package/lib/src/core/reducers/bootstrap.d.ts.map +1 -0
  298. package/lib/src/core/reducers/bootstrap.js +12 -0
  299. package/lib/src/core/reducers/bootstrap.js.map +1 -0
  300. package/lib/src/core/reducers/columnAlias.d.ts +5 -0
  301. package/lib/src/core/reducers/columnAlias.d.ts.map +1 -0
  302. package/lib/src/core/reducers/columnAlias.js +28 -0
  303. package/lib/src/core/reducers/columnAlias.js.map +1 -0
  304. package/lib/src/core/reducers/conditionalStyleFormat.d.ts +5 -0
  305. package/lib/src/core/reducers/conditionalStyleFormat.d.ts.map +1 -0
  306. package/lib/src/core/reducers/conditionalStyleFormat.js +13 -0
  307. package/lib/src/core/reducers/conditionalStyleFormat.js.map +1 -0
  308. package/lib/src/core/reducers/customColumn.d.ts +5 -0
  309. package/lib/src/core/reducers/customColumn.d.ts.map +1 -0
  310. package/lib/src/core/reducers/customColumn.js +40 -0
  311. package/lib/src/core/reducers/customColumn.js.map +1 -0
  312. package/lib/src/core/reducers/dragDrop.d.ts +6 -0
  313. package/lib/src/core/reducers/dragDrop.d.ts.map +1 -0
  314. package/lib/src/core/reducers/dragDrop.js +100 -0
  315. package/lib/src/core/reducers/dragDrop.js.map +1 -0
  316. package/lib/src/core/reducers/edit.d.ts +5 -0
  317. package/lib/src/core/reducers/edit.d.ts.map +1 -0
  318. package/lib/src/core/reducers/edit.js +65 -0
  319. package/lib/src/core/reducers/edit.js.map +1 -0
  320. package/lib/src/core/reducers/error.d.ts +69 -0
  321. package/lib/src/core/reducers/error.d.ts.map +1 -0
  322. package/lib/src/core/reducers/error.js +21 -0
  323. package/lib/src/core/reducers/error.js.map +1 -0
  324. package/lib/src/core/reducers/externalState.d.ts +5 -0
  325. package/lib/src/core/reducers/externalState.d.ts.map +1 -0
  326. package/lib/src/core/reducers/externalState.js +20 -0
  327. package/lib/src/core/reducers/externalState.js.map +1 -0
  328. package/lib/src/core/reducers/filter.d.ts +5 -0
  329. package/lib/src/core/reducers/filter.d.ts.map +1 -0
  330. package/lib/src/core/reducers/filter.js +29 -0
  331. package/lib/src/core/reducers/filter.js.map +1 -0
  332. package/lib/src/core/reducers/forceUpdate.d.ts +5 -0
  333. package/lib/src/core/reducers/forceUpdate.d.ts.map +1 -0
  334. package/lib/src/core/reducers/forceUpdate.js +25 -0
  335. package/lib/src/core/reducers/forceUpdate.js.map +1 -0
  336. package/lib/src/core/reducers/freeze.d.ts +5 -0
  337. package/lib/src/core/reducers/freeze.d.ts.map +1 -0
  338. package/lib/src/core/reducers/freeze.js +36 -0
  339. package/lib/src/core/reducers/freeze.js.map +1 -0
  340. package/lib/src/core/reducers/grouping.d.ts +5 -0
  341. package/lib/src/core/reducers/grouping.d.ts.map +1 -0
  342. package/lib/src/core/reducers/grouping.js +142 -0
  343. package/lib/src/core/reducers/grouping.js.map +1 -0
  344. package/lib/src/core/reducers/index.d.ts +5 -0
  345. package/lib/src/core/reducers/index.d.ts.map +1 -0
  346. package/lib/src/core/reducers/index.js +77 -0
  347. package/lib/src/core/reducers/index.js.map +1 -0
  348. package/lib/src/core/reducers/moveRecords.d.ts +5 -0
  349. package/lib/src/core/reducers/moveRecords.d.ts.map +1 -0
  350. package/lib/src/core/reducers/moveRecords.js +10 -0
  351. package/lib/src/core/reducers/moveRecords.js.map +1 -0
  352. package/lib/src/core/reducers/notificationsReducer.d.ts +4 -0
  353. package/lib/src/core/reducers/notificationsReducer.d.ts.map +1 -0
  354. package/lib/src/core/reducers/notificationsReducer.js +49 -0
  355. package/lib/src/core/reducers/notificationsReducer.js.map +1 -0
  356. package/lib/src/core/reducers/paginations.d.ts +5 -0
  357. package/lib/src/core/reducers/paginations.d.ts.map +1 -0
  358. package/lib/src/core/reducers/paginations.js +19 -0
  359. package/lib/src/core/reducers/paginations.js.map +1 -0
  360. package/lib/src/core/reducers/personalizationDirtyReducer.d.ts +5 -0
  361. package/lib/src/core/reducers/personalizationDirtyReducer.d.ts.map +1 -0
  362. package/lib/src/core/reducers/personalizationDirtyReducer.js +46 -0
  363. package/lib/src/core/reducers/personalizationDirtyReducer.js.map +1 -0
  364. package/lib/src/core/reducers/personalizationReducer.d.ts +5 -0
  365. package/lib/src/core/reducers/personalizationReducer.d.ts.map +1 -0
  366. package/lib/src/core/reducers/personalizationReducer.js +238 -0
  367. package/lib/src/core/reducers/personalizationReducer.js.map +1 -0
  368. package/lib/src/core/reducers/refresh.d.ts +5 -0
  369. package/lib/src/core/reducers/refresh.d.ts.map +1 -0
  370. package/lib/src/core/reducers/refresh.js +16 -0
  371. package/lib/src/core/reducers/refresh.js.map +1 -0
  372. package/lib/src/core/reducers/renderFormatter.d.ts +5 -0
  373. package/lib/src/core/reducers/renderFormatter.d.ts.map +1 -0
  374. package/lib/src/core/reducers/renderFormatter.js +22 -0
  375. package/lib/src/core/reducers/renderFormatter.js.map +1 -0
  376. package/lib/src/core/reducers/resize.d.ts +5 -0
  377. package/lib/src/core/reducers/resize.d.ts.map +1 -0
  378. package/lib/src/core/reducers/resize.js +32 -0
  379. package/lib/src/core/reducers/resize.js.map +1 -0
  380. package/lib/src/core/reducers/rowSelect.d.ts +5 -0
  381. package/lib/src/core/reducers/rowSelect.d.ts.map +1 -0
  382. package/lib/src/core/reducers/rowSelect.js +86 -0
  383. package/lib/src/core/reducers/rowSelect.js.map +1 -0
  384. package/lib/src/core/reducers/sanitize.d.ts +5 -0
  385. package/lib/src/core/reducers/sanitize.d.ts.map +1 -0
  386. package/lib/src/core/reducers/sanitize.js +21 -0
  387. package/lib/src/core/reducers/sanitize.js.map +1 -0
  388. package/lib/src/core/reducers/search.d.ts +5 -0
  389. package/lib/src/core/reducers/search.d.ts.map +1 -0
  390. package/lib/src/core/reducers/search.js +13 -0
  391. package/lib/src/core/reducers/search.js.map +1 -0
  392. package/lib/src/core/reducers/showHeaderIcons.d.ts +5 -0
  393. package/lib/src/core/reducers/showHeaderIcons.d.ts.map +1 -0
  394. package/lib/src/core/reducers/showHeaderIcons.js +13 -0
  395. package/lib/src/core/reducers/showHeaderIcons.js.map +1 -0
  396. package/lib/src/core/reducers/smallScreen.d.ts +5 -0
  397. package/lib/src/core/reducers/smallScreen.d.ts.map +1 -0
  398. package/lib/src/core/reducers/smallScreen.js +22 -0
  399. package/lib/src/core/reducers/smallScreen.js.map +1 -0
  400. package/lib/src/core/reducers/sort.d.ts +5 -0
  401. package/lib/src/core/reducers/sort.d.ts.map +1 -0
  402. package/lib/src/core/reducers/sort.js +71 -0
  403. package/lib/src/core/reducers/sort.js.map +1 -0
  404. package/lib/src/core/reducers/versioning/index.d.ts +16 -0
  405. package/lib/src/core/reducers/versioning/index.d.ts.map +1 -0
  406. package/lib/src/core/reducers/versioning/index.js +46 -0
  407. package/lib/src/core/reducers/versioning/index.js.map +1 -0
  408. package/lib/src/core/reducers/versioning/v1.d.ts +136 -0
  409. package/lib/src/core/reducers/versioning/v1.d.ts.map +1 -0
  410. package/lib/src/core/reducers/versioning/v1.js +156 -0
  411. package/lib/src/core/reducers/versioning/v1.js.map +1 -0
  412. package/lib/src/core/reducers/visibility.d.ts +5 -0
  413. package/lib/src/core/reducers/visibility.d.ts.map +1 -0
  414. package/lib/src/core/reducers/visibility.js +49 -0
  415. package/lib/src/core/reducers/visibility.js.map +1 -0
  416. package/lib/src/core/test/junitMocks.d.ts +756 -0
  417. package/lib/src/core/test/junitMocks.d.ts.map +1 -0
  418. package/lib/src/core/test/junitMocks.js +2923 -0
  419. package/lib/src/core/test/junitMocks.js.map +1 -0
  420. package/lib/src/core/test/samples/a11ySample.d.ts +8 -0
  421. package/lib/src/core/test/samples/a11ySample.d.ts.map +1 -0
  422. package/lib/src/core/test/samples/a11ySample.js +1131 -0
  423. package/lib/src/core/test/samples/a11ySample.js.map +1 -0
  424. package/lib/src/core/test/samples/a11ySampleWithLoaders.d.ts +8 -0
  425. package/lib/src/core/test/samples/a11ySampleWithLoaders.d.ts.map +1 -0
  426. package/lib/src/core/test/samples/a11ySampleWithLoaders.js +1134 -0
  427. package/lib/src/core/test/samples/a11ySampleWithLoaders.js.map +1 -0
  428. package/lib/src/core/test/samples/utils.d.ts +2 -0
  429. package/lib/src/core/test/samples/utils.d.ts.map +1 -0
  430. package/lib/src/core/test/samples/utils.js +9 -0
  431. package/lib/src/core/test/samples/utils.js.map +1 -0
  432. package/lib/src/core/test/utils/rowDragDropUtils.d.ts +20 -0
  433. package/lib/src/core/test/utils/rowDragDropUtils.d.ts.map +1 -0
  434. package/lib/src/core/test/utils/rowDragDropUtils.js +98 -0
  435. package/lib/src/core/test/utils/rowDragDropUtils.js.map +1 -0
  436. package/lib/src/core/utils/condition-utils.d.ts +15 -0
  437. package/lib/src/core/utils/condition-utils.d.ts.map +1 -0
  438. package/lib/src/core/utils/condition-utils.js +114 -0
  439. package/lib/src/core/utils/condition-utils.js.map +1 -0
  440. package/lib/src/core/utils/util.d.ts +380 -0
  441. package/lib/src/core/utils/util.d.ts.map +1 -0
  442. package/lib/src/core/utils/util.js +912 -0
  443. package/lib/src/core/utils/util.js.map +1 -0
  444. package/lib/src/core/utils/util.types.d.ts +43 -0
  445. package/lib/src/core/utils/util.types.d.ts.map +1 -0
  446. package/lib/src/core/utils/util.types.js +2 -0
  447. package/lib/src/core/utils/util.types.js.map +1 -0
  448. package/lib/types/ApiContext.types.d.ts +392 -0
  449. package/lib/types/ApiContext.types.d.ts.map +1 -0
  450. package/lib/types/ApiContext.types.js +2 -0
  451. package/lib/types/ApiContext.types.js.map +1 -0
  452. package/lib/types/Meta.types.d.ts +705 -0
  453. package/lib/types/Meta.types.d.ts.map +1 -0
  454. package/lib/types/Meta.types.js +37 -0
  455. package/lib/types/Meta.types.js.map +1 -0
  456. package/lib/types/RsCoreBootArgs.types.d.ts +103 -0
  457. package/lib/types/RsCoreBootArgs.types.d.ts.map +1 -0
  458. package/lib/types/RsCoreBootArgs.types.js +2 -0
  459. package/lib/types/RsCoreBootArgs.types.js.map +1 -0
  460. package/lib/types/State.types.d.ts +374 -0
  461. package/lib/types/State.types.d.ts.map +1 -0
  462. package/lib/types/State.types.js +5 -0
  463. package/lib/types/State.types.js.map +1 -0
  464. package/lib/types.d.ts +30 -0
  465. package/lib/types.d.ts.map +1 -0
  466. package/lib/types.js +2 -0
  467. package/lib/types.js.map +1 -0
  468. package/package.json +30 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../../../src/core/utils/util.ts"],"names":[],"mappings":"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","sourcesContent":["import fastDeepEqual from 'fast-deep-equal/es6';\n\nimport {\n splitConditionTree,\n type Condition,\n type LeafCondition\n} from '@pega/cosmos-react-condition-builder';\n\nimport { filterParams, comparatorMap, type FilterConfig } from '../config/filterConfig';\nimport { EXTERNAL_FILTERS, rowDragDropColumnMeta } from '../constants';\nimport ActionTypes, {\n type ActionType,\n type SupportedConsumerActionType\n} from '../actions/actionConstants';\nimport type View from '../generators/ViewGenerator';\nimport type { State, Group, Personalization, CustomField } from '../../../types/State.types';\nimport type { Action, PaginateAction, PaginationPayload } from '../actions/actions.types';\nimport type { FieldDef, Meta, StyleFormat } from '../../../types/Meta.types';\nimport type { SupportedConsumerPayloads } from '../generators/viewUtilityMethods';\nimport type { DefaultConfigType } from '../config/config';\nimport type { RowData } from '../generators/RowGenerator.types';\nimport type Column from '../generators/ColumnGenerator';\nimport type RsInternal from '../RsInternal';\n\nimport type {\n FeatureMap,\n FilterInfo,\n FilterInitializers,\n AddFilterParams,\n GenericObject,\n DefaultConfigKeys,\n DefaultFieldDefKeys,\n PassablePromise,\n DeepNonNullableArray,\n MemoizedFunctionParameters,\n FunctionToBeMemoized,\n MemoizedFunction\n} from './util.types';\nimport evaluateConditionLocally from './condition-utils';\n\nexport const EXCLUDED_NUMERIC_TYPES = ['Currency'];\nconst groupBySeparator = '||'; // To avoid any ambiguities\n\n/**\n * Creates an object mapping for each property in `propertiesArr` to a boolean flag indicating whether the feature is enabled.\n * The flag is derived from `fieldDefs`.\n * The flag is `true` if in any `fieldDef` the value of the property is true; otherwise, it is `false`.\n * @param propertiesArr Array of features which needs to be checked in the fieldDefs\n * @param fieldDefs Array of {@link FieldDef}.\n * @returns An object containing the key as feature from `propertiesArr` and value as boolean indicating the feature is enabled or not.\n */\nfunction getEnabledFeatures(propertiesArr: (keyof FieldDef)[], fieldDefs: FieldDef[]): FeatureMap {\n const featuresMap = {} as FeatureMap;\n propertiesArr.forEach(prop => {\n for (const element of fieldDefs) {\n const value = element[prop];\n if (value) {\n featuresMap[prop] = true;\n break;\n }\n }\n });\n return featuresMap;\n}\n\n/**\n * Memoizes a function, returning a memoized version that caches the result based on dependencies.\n *\n * The memoized function accepts two arguments: [arguments], [dependencies].\n * If dependencies are not provided explicitly, arguments are defaulted to dependencies.\n * If a compare function is passed as the last argument, it decides whether to return a memoized value or not.\n *\n * @param fn - The function to memoize.\n * @returns The memoized function.\n */\nexport function withMemoization<P extends any[], R>(\n fn: FunctionToBeMemoized<P, R>\n): MemoizedFunction<P, R> {\n let value: R;\n let before: any[];\n const sameAsBefore = (v: any, index: number) => {\n return v === before[index];\n };\n return function inner(\n this: ThisParameterType<FunctionToBeMemoized<P, R>>,\n ...args: MemoizedFunctionParameters<P>\n ) {\n // accepts two arguments ([arguments], [dependencies])\n // if dependencies are not provided explicitly, arguments are defaulted to dependencies\n const deps = args && (args[1] && typeof args[1] !== 'function' ? [...args[1]] : [...args[0]]);\n\n // if compare function is passed through, that will decide whether return a memoized value or not.\n const compareFunc = args && args[args.length - 1];\n if (compareFunc && typeof compareFunc === 'function') {\n if (!before || !compareFunc(before, deps)) value = fn.apply(this, [args[0]]);\n before = deps;\n } else if ((!deps || !deps.length) && !before) {\n before = [];\n value = fn.apply(this, [args[0]]);\n } else if (!before || deps.length !== before.length || !deps.every(sameAsBefore)) {\n before = deps;\n value = fn.apply(this, [args[0]]);\n }\n return value;\n };\n}\n\n/**\n * Picks specific properties from an object and returns a new object containing only those properties.\n * If the object is null or undefined, it returns undefined.\n *\n * @param obj - The source object from which properties are picked.\n * @param props - An array of property names to be picked from the object.\n * @returns A new object with only the picked properties, or `undefined` if the source object is null or undefined.\n */\nexport function pickProperties<T extends object, K extends keyof T>(\n obj: T | null | undefined,\n props: K[]\n): Pick<T, K> | undefined {\n if (!obj) {\n return undefined;\n }\n\n return props.reduce(\n (accumulator, prop) => {\n if (obj[prop] !== undefined) {\n accumulator[prop] = obj[prop];\n }\n return accumulator;\n },\n {} as Pick<T, K>\n );\n}\n\n// Storing the caching at module level so that all consumers of this function will get the cached values.\n// Since this function attaches the element on the document, it's assumed that the scrollbars styling is same on the document.\nlet previousWindowHeight = window.innerHeight;\nlet previousWindowWidth = window.innerWidth;\nlet cachedScrollBarWidth: number;\n/**\n * Returns the scrollbar width for a given browser/application.\n * @returns The scrollbar width in number.\n */\nexport function getScrollbarWidth(): number {\n if (\n previousWindowHeight === window.innerHeight &&\n previousWindowWidth === window.innerWidth &&\n cachedScrollBarWidth\n ) {\n return cachedScrollBarWidth;\n }\n\n // Creating invisible container\n const outer = document.createElement('div');\n outer.style.visibility = 'hidden';\n outer.style.overflow = 'scroll'; // forcing scrollbar to appear\n document.body.appendChild(outer);\n\n // Creating inner element and placing it in the container\n const inner = document.createElement('div');\n outer.appendChild(inner);\n\n // Calculating difference between container's full width and the child width\n const scrollbarWidth = outer.offsetWidth - inner.offsetWidth;\n\n // Removing temporary elements from the DOM\n outer.parentNode?.removeChild(outer);\n\n previousWindowHeight = window.innerHeight;\n previousWindowWidth = window.innerWidth;\n\n cachedScrollBarWidth = scrollbarWidth;\n return scrollbarWidth;\n}\n\n/**\n * Performs a deep comparison between two values to determine if they are equal.\n * A wrapper on fast-deep-equal\n *\n * @param x - First item to compare\n * @param y - Second item to compare\n * @returns Deep comparison result\n */\nexport function deepEqual(x: any, y: any): boolean {\n return fastDeepEqual(x, y);\n}\n\n/**\n * Creates a deep copy of an object or array.\n *\n * This function recursively copies all properties and elements from the source object or array to a new object or array.\n *\n * @param oldObj - The object or array to be copied.\n * @returns A deep copy of the input object or array.\n */\nexport function deepCopy<T>(oldObj: T): T {\n let newObj = oldObj;\n if (oldObj && typeof oldObj === 'object') {\n newObj = Array.isArray(oldObj) ? ([] as unknown as T) : ({} as T);\n Object.keys(oldObj).forEach(i => {\n (newObj as any)[i] = deepCopy((oldObj as any)[i]);\n });\n }\n return newObj;\n}\n\n/**\n * Checks if the provided value is a function.\n *\n * @param obj - The value to be checked.\n * @returns `true` if the value is a function, `false` otherwise.\n */\nexport function isFunction(obj: any): boolean {\n return typeof obj === 'function';\n}\n\n/**\n * Checks if the provided value is a plain object.\n *\n * This function returns `true` if the value is an object that is not a function or an array.\n *\n * @param obj - The value to be checked.\n * @returns - `true` if the value is a plain object, `false` otherwise.\n */\nexport function isObject(obj: unknown): boolean {\n return obj === Object(obj) && !(isFunction(obj) || Array.isArray(obj));\n}\n\n/**\n * Checks if the provided value is empty.\n *\n * The value is considered empty if it is:\n * - `null` or `undefined`\n * - An array or string with length 0\n * - An object with no own properties.\n *\n * @param value - The value to be checked.\n * @returns - `true` if the value is empty, `false` otherwise.\n */\nexport function isEmpty(value: any): boolean {\n return (\n // null or undefined\n value === null ||\n value === undefined ||\n ((Array.isArray(value) || typeof value === 'string') && value.length === 0) ||\n // is an Object and has no keys\n (value.constructor === Object && Object.keys(value).length === 0)\n );\n}\n\n/**\n * Removes empty values from an array.\n *\n * This function recursively filters out empty values from the array. Empty values include:\n * - `null` or `undefined`\n * - Empty strings or arrays\n * - Empty objects\n *\n * @param arr - The array on which the empty values needs to be removed.\n * @returns - A new array with empty values removed.\n */\nexport function removeEmptyValues<T>(arr: T[]): DeepNonNullableArray<T>[] {\n return arr\n .map(item => (Array.isArray(item) ? removeEmptyValues(item) : item))\n .filter(\n t => (Array.isArray(t) && t.length) || (!Array.isArray(t) && t)\n ) as DeepNonNullableArray<T>[];\n}\n\n/* Start : APIs specific to condition builder */\n\n/**\n * Retrieves an array of fields on which a filter is applied. If a comparator is provided, the function returns only the fields that have the specified comparator applied in the `filterExpression`.\n *\n * @param params - The parameters for the method.\n * @param params.filterExpression - The filter expression used to determine which fields are included. For more details, see {@link State.filterExpression}.\n * @param [params.comparator=null] - An optional comparator. If provided, the function will filter fields that have this comparator in the filter expression.\n *\n * @returns An array of field names on which the filter is applied. If a comparator is specified, it returns only the fields that use that comparator.\n */\nexport function getFilters({ filterExpression, comparator = null }: FilterInfo): string[] {\n const filters: string[] = [];\n const { conditions } = splitConditionTree(filterExpression);\n Object.keys(conditions).forEach(key => {\n if (comparator) {\n /* If comparator is given find field with that comparator */\n if (conditions[key].comparator === comparator) {\n filters.push(conditions[key].lhs.field);\n }\n } else {\n filters.push(conditions[key].lhs.field);\n }\n });\n return filters;\n}\n\n/**\n * Retrieves all filter conditions from the provided `filterExpression`. If a `comparator` is provided,\n * only the filter conditions that match the given comparator will be collected.\n *\n * @param params Method arguments object.\n * @param params.filterExpression The filterExpression.\n * @param params.comparator An optional comparator to filter conditions by. If not provided, all conditions will be collected.\n *\n * @returns An array of filter conditions that match the specified criteria.\n */\nexport function getFilterConditions({ filterExpression, comparator = null }: FilterInfo) {\n const filters: LeafCondition[] = [];\n const { conditions } = splitConditionTree(filterExpression);\n Object.keys(conditions).forEach(key => {\n if (comparator) {\n /* If comparator is given find field with that comparator */\n if (conditions[key].comparator === comparator) {\n filters.push(conditions[key]);\n }\n } else {\n filters.push(conditions[key]);\n }\n });\n return filters;\n}\n\n/**\n Retrieves the filter properties for a specified column from the {@link State.filterExpression filterExpression} state as an array.\n * The returned array includes:\n * - The input values associated with the filter for the specified column.\n * - The comparator configured for the filter of that column.\n * - The leaf condition for that column within the {@link State.filterExpression filterExpression}.\n * - The entire {@link State.filterExpression filterExpression} object from the state.\n * @param column The column for which filter information is to be retrieved.\n */\n// returning filter initializer values for any type of filter\nexport function getFilterInitializers(column: Column): FilterInitializers | [] {\n if (!column) return [];\n const filterExpression = column?.getFilterProperties()?.filterExpression!;\n const filters = getFilterConditions({ filterExpression });\n const filter = filters.find(f => f.lhs?.field === column.field.name);\n const fInput = filter\n ? (\n filter.rhs as {\n value: string | number;\n }\n )?.value || (filter.rhs as { values: string[] | number[] })?.values\n : [];\n const fValue = filter\n ? (Object.keys(comparatorMap) as (keyof FilterConfig['comparatorMap'])[]).find(\n key => comparatorMap[key] === filter.comparator\n )\n : null;\n return [fInput, fValue, filter, filterExpression];\n}\n\n/**\n * Determines if filter is applied on the given `column` in the given `filterExpression`.\n * @param column\n * @param filterExpression\n * @returns true if filter is applied; otherwise false.\n */\nexport function isFilterApplied(column: Column, filterExpression: Condition): boolean {\n if (!column.field.id) {\n return false;\n }\n\n const fields = getFilters({\n filterExpression\n });\n return fields.includes(column.field.name);\n}\n\n/* AND condition with filter expression */\n/**\n * Prepares a filter expression for a given `column`, `comparator`, and `input`.\n * Returns the same filter expression or appends it to the given `filterExpression`.\n *\n * @param param - Method argument object.\n * @param param.filterExpression - Existing filter expression to which the new condition may be appended.\n * @param param.column - Column on which the filter is to be applied.\n * @param param.comparator - Comparator for the filter expression (e.g., equals, greater than).\n * @param param.input - List of possible values for the column on which the filter expression should be prepared. It can be a single value, an array of values, or null.\n * @returns A new filter expression or the modified existing filter expression. Returns null if the input is invalid based on the comparator.\n */\nexport function addFilter({\n filterExpression,\n column,\n comparator,\n input\n}: AddFilterParams): Condition | null {\n const filter: { condition: LeafCondition } = {} as { condition: LeafCondition };\n\n // We might need to refactor the way we are managing filters with comparators\n // Comparator needs to categorized based on no of operand and type of operand it needs\n // Making this fix to resolve BUG-640981\n if (\n (input === '' ||\n input === undefined ||\n input === null ||\n Number.isNaN(input) ||\n (Array.isArray(input) && !input.length)) &&\n comparator !== comparatorMap.isNull &&\n comparator !== comparatorMap.isNotNull &&\n comparator !== comparatorMap.isTrue &&\n comparator !== comparatorMap.isFalse\n ) {\n return null;\n }\n\n if (input === null || input === undefined) {\n filter.condition = {\n comparator,\n lhs: { field: column.field.name }\n };\n } else {\n const rhsFieldName = Array.isArray(input) ? 'values' : 'value';\n filter.condition = {\n comparator,\n lhs: { field: column.field.name },\n rhs: { [rhsFieldName]: input } as { value: string | number } | { values: string[] | number[] }\n };\n }\n\n /* if filter expression has conditions or operators */\n if (filterExpression && Object.keys(filterExpression).length > 0) {\n return { AND: [filter, filterExpression] };\n }\n return filter;\n}\n\n/* End : APIs specific to condition builder */\n\n/**\n * Retrieves the visible fields in the current view by considering the hidden columns state.\n * This function also accounts for columns from custom fields that are visible.\n *\n * @param fieldDefs - The {@link Meta.fieldDefs fieldDefs}.\n * @param hiddenColumns - The list of {@link State.hiddenColumns hiddenColumns}.\n * @param customFields - The {@link State.customFields customFields}.\n * @returns The list of visible fields.\n */\nexport const getVisibileFields = (\n fieldDefs: FieldDef[] = [],\n hiddenColumns: State['hiddenColumns'] = [],\n customFields: State['customFields'] = []\n): FieldDef[] => {\n const fieldMap = fieldDefs.reduce<{ [key: string]: FieldDef }>((acc, field) => {\n acc[field.id] = field;\n return acc;\n }, {});\n const visibleFields = fieldDefs.filter(({ id }) => !hiddenColumns.includes(id));\n const fieldIdsFromCustomField = (customField: CustomField): string[] =>\n customField?.expression.filter(item => !Array.isArray(item)) as string[]; // taking all non template items\n const visibleUnderCustomFields = [\n ...new Set(\n customFields\n .filter(({ id }) => !hiddenColumns.includes(id)) // Only visible custom fields\n .map(field => fieldIdsFromCustomField(field))\n .flat() // flat the multiple custom field fieldIds\n ) // Getting unique fieldIds\n ]\n .filter(fieldId => hiddenColumns.includes(fieldId)) // taking only, which are hidden in state to avoid duplicates\n .map(fieldId => fieldMap[fieldId]);\n return [...visibleFields, ...visibleUnderCustomFields];\n};\n\n/**\n * Retrieves the data of the closest row to the `targetElement` from the view {@link View.data data}.\n *\n * This function is useful for scenarios where you need to determine the row data related to a specific DOM element.\n * It searches through the provided data and pagination options to find the row that is closest to the given target element.\n *\n * @param data - The data of the view containing all row entries.\n * @param paginationOptions - The {@link State.paginationOptions pagination options}\n * @param targetElement - The target element for which the closest row data is required.\n *\n * @returns - The data of the closest row element to the target element.\n */\nexport const getRowContextData = (\n data: RowData[],\n paginationOptions: NonNullable<State['paginationOptions']>,\n targetElement: HTMLElement\n): RowData => {\n // get nearest row to target element.\n const row = targetElement.closest('[role=\"row\"]');\n // use aria-rowindex as data-index is added for group header as well\n // which is misaligned with the data object indexes.\n const ariaRowIndex = Number(row?.getAttribute('aria-rowindex')) - 1;\n\n // get starting index in pagination option\n // TODO why reduce is required with initial value as null. This can be refactored.\n const offset = Object.values(paginationOptions).reduce<null | number>((acc, { startIndex }) => {\n if (acc === null || acc < startIndex) {\n return startIndex;\n }\n return acc;\n }, null);\n return data[ariaRowIndex - offset!];\n};\n\n/**\n * Compares two objects to determine if they are equal based on the specified properties.\n * If no properties are specified, it compares all properties.\n *\n * @param t1 - The first object to compare.\n * @param t2 - The second object to compare.\n * @param props - An optional array of property names to compare. If null, all properties are compared.\n * @returns A boolean indicating whether the objects are equal.\n */\nexport function compareObjects<T extends { [key in keyof T]: unknown }>(\n t1: T,\n t2: T,\n props: (keyof T)[] | null = null\n): boolean {\n if (!props && Object.keys(t1).length !== Object.keys(t2).length) return false;\n return (props || Object.keys(t1)).every(k => {\n const key = k as keyof T;\n const ty1 = Object.prototype.toString.call(t1[key]);\n const ty2 = Object.prototype.toString.call(t2[key]);\n if (ty1 !== ty2) return false;\n\n if (ty1 === '[object Array]')\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return compareArray(t1[key] as unknown[], t2[key] as unknown[], null);\n if (ty1 === '[object Object]') return compareObjects(t1[key], t2[key], null);\n return t2[key] === t1[key];\n });\n}\n\n/**\n * Compares two arrays for equality, considering nested arrays and objects.\n * If both arrays are equal, it returns true; otherwise, it returns false.\n *\n * @param t1 - The first array to compare.\n * @param t2 - The second array to compare.\n * @param props - Additional properties for comparison (currently unused).\n * @returns `true` if the arrays are equal, `false` otherwise.\n */\n// TODO props is never used.\nexport function compareArray<T extends unknown>(t1: T[], t2: T[], props = null): boolean {\n if (t1 === t2) return true;\n if (t1?.length !== t2?.length) return false;\n return t1?.every((val, i) => {\n const ty1 = Object.prototype.toString.call(val);\n const ty2 = Object.prototype.toString.call(t2?.[i]);\n if (ty1 === ty2) {\n if (ty1 === '[object Array]') return compareArray(val as any[], t2?.[i] as any[], props);\n if (ty1 === '[object Object]') return compareObjects(val, t2?.[i], props);\n return val === t2?.[i];\n }\n return false;\n });\n}\n\n/**\n * calculates the hash for the given string\n * @param string for which hash to be calculated\n * @returns calculated hash\n */\nexport function generateHash(string: string): number {\n let hash = 0;\n for (let charIdx = 0; charIdx < string.length; charIdx += 1) {\n // eslint-disable-next-line no-bitwise\n hash = (Math.imul(31, hash) + string.charCodeAt(charIdx)) | 0;\n }\n return hash;\n}\n\n/**\n * Updates the Meta settings based on the provided field definitions and default configuration.\n *\n * This function performs the following operations:\n *\n * - Computes the value for feature flags such as {@link Meta.freezeFields freezeFields} and {@link Meta.editable editable}\n * based on the values in `FieldDef`. If any of the `FieldDef` entries have the flag enabled, the flag is enabled for `Meta` as well.\n * - Sets the {@link Meta.locale locale} in `Meta` from the document's language attribute.\n * - Sets the values of other keys in `Meta` using {@link defaultConfig}, if they are not already set.\n *\n * @param meta - The RS meta object.\n * @param defaultConfig - The default configuration object used to set default values in `Meta`.\n */\nfunction updateMetaSettings(meta: Meta, defaultConfig: DefaultConfigType): void {\n // Deduce freezeField global setting from within the fields\n const featureMap = getEnabledFeatures(['freeze', 'editable'], meta.fieldDefs);\n if (featureMap.freeze) {\n meta.freezeFields = true;\n }\n\n if (featureMap.editable) {\n meta.editable = true;\n }\n\n // Setting locale value for localisation\n if (!meta.locale) {\n const htmlLang = document.documentElement.lang;\n meta.locale = htmlLang.split('-')[1] ? htmlLang : defaultConfig.locale;\n }\n const properties: DefaultConfigKeys[] = Object.keys(defaultConfig) as DefaultConfigKeys[];\n properties.forEach(key => {\n if (meta[key] === undefined || meta[key] === null) {\n // is null check required or consumers want that?\n // @ts-expect-error\n meta[key] = defaultConfig[key];\n }\n });\n}\n\n/**\n * Normalizes the {@link FieldDef} with {@link defaultFieldDef defaultFieldDef config} if not already set.\n *\n * @param field The fieldDef object\n * @param defaultFieldDef The default config of the FieldDef.\n *\n * @returns The normalized fieldDef object with the updated configurations.\n */\nexport function normalizeFieldDef(\n field: FieldDef,\n defaultFieldDef: NonNullable<DefaultConfigType['defaultFieldDef']>\n): void {\n const properties: DefaultFieldDefKeys[] = Object.keys(defaultFieldDef) as DefaultFieldDefKeys[];\n field.idHash = generateHash(field.id);\n\n properties.forEach((prop: DefaultFieldDefKeys) => {\n // @ts-expect-error Type 'number | boolean' is not assignable to type 'undefined'. Type 'number' is not assignable to type 'undefined'. Check this.\n field[prop] = field[prop] ?? defaultFieldDef[prop];\n if (prop === 'autosize' && field.width) {\n field[prop] = false;\n }\n });\n\n // Assign filters to each field based on their types\n if (field.filterPickList) {\n field.filterParams = structuredClone(filterParams.pickList);\n // @ts-expect-error Property 'Date' does not exist on type filterParams. Even if there is a check ```field.type in filterParams```, typescript is still complaining.\n } else if (field.type in filterParams && filterParams[field.type]) {\n // @ts-expect-error Property 'Date' does not exist on type filterParams. Even if there is a check ```field.type in filterParams```, typescript is still complaining.\n field.filterParams = structuredClone(filterParams[field.type]);\n } else {\n field.filterParams = undefined;\n }\n}\n\n/**\n * Normalizes the RS meta with the {@link defaultConfig default configuration} if not already set:\n * - Updates the {@link Meta.minheight minHeight} option from the {@link defaultConfig}.\n * - Adds a comparatorMap to the meta.\n * - Updates keys of individual FieldDef with {@link DefaultConfigType.defaultFieldDef defaultFieldDef} from {@link defaultConfig}.\n * - Enables/Disables feature flags (e.g. {@link Meta.freezeFields freezeFields} and {@link Meta.editable editable}) in RS meta by considering the values of feature flags from fieldDef or its values in defaultConfig.\n *\n * @param _meta - The RS meta object.\n * @param defaultConfig - The default configuration object containing the default settings to be used.\n * @returns The normalized RS meta object with the updated configurations.\n */\nexport function normalizeMeta(\n _meta: Meta & { isPreset?: boolean },\n defaultConfig: DefaultConfigType\n): Meta {\n const { height, ...restMeta } = _meta;\n const meta = deepCopy<Meta>(restMeta);\n meta.height = { ...height };\n meta.comparatorMap = comparatorMap;\n meta.height.minHeight = meta.height.minHeight ?? defaultConfig.height.minHeight;\n meta.defaultFieldDef = { ...defaultConfig.defaultFieldDef, ...meta.defaultFieldDef };\n\n // Handle if fieldDefs is null or undefined\n meta.fieldDefs = meta.fieldDefs ?? [];\n meta.fieldDefs.forEach((column: FieldDef) => {\n normalizeFieldDef(column, meta.defaultFieldDef!);\n });\n updateMetaSettings(meta, defaultConfig);\n return meta;\n}\n\n/**\n * Removes entries from the given object that have null, undefined, or empty object as values.\n * This function mutates the original object by deleting properties that are either null, undefined,\n * or objects with does not have own properties.\n *\n * @param obj - The object from which empty entries should be removed.\n * @returns void\n */\nexport function removeEmptyValuesFromObject(obj: GenericObject): void {\n if (!obj) return;\n const propNames = Object.getOwnPropertyNames(obj);\n for (const element of propNames) {\n const propName = element;\n if (\n obj[propName] === null ||\n obj[propName] === undefined ||\n !Object.keys(obj[propName] as GenericObject).length\n ) {\n delete obj[propName];\n }\n }\n}\n\n/**\n * Retrieves the scrollable element of the virtualizer, i.e. parent container.\n * from the {@link View.virtualizeElements virtualizeElements} property of the provided {@link view} and,\n * if available, returns the parent container of the root virtualizer.\n * @param view The {@link View} object.\n * @returns The scrollable element, if it exists. Otherwise, returns undefined.\n */\nexport const getScrollerElem = (view: View): HTMLElement | undefined => {\n const { virtualizeElements } = view;\n let scrollerElem;\n if (virtualizeElements && !isEmpty(virtualizeElements?.rootVirtualiser)) {\n scrollerElem = virtualizeElements?.rootVirtualiser?.getParentContainer?.();\n }\n return scrollerElem;\n};\n\nexport const dateFunctionLabels = {\n YEARS: 'Year',\n QUARTERS: 'Quarter',\n MONTHS: 'Month',\n WEEKS: 'Week',\n DAYS: 'Day',\n HOURS: 'Hour',\n MINUTES: 'Minute',\n MONTHS_OF_YEAR: 'Month of year',\n DAYS_OF_MONTH: 'Day of month',\n DAYS_OF_WEEK: 'Day of week',\n HOURS_OF_DAY: 'Hour of day'\n};\n\n/**\n * Retrieves the valid externalState keys from RS {@link Meta}.\n *\n * Supported external state keys:\n * - Value of {@link Meta.externalFilters externalFilters} in Meta.\n *\n * @param tableMeta RS Meta\n * @returns Array of valid externalState keys.\n */\nexport function getExternalStateKeys(tableMeta: Meta): string[] {\n const externalStateKeys: string[] = [];\n if (tableMeta[EXTERNAL_FILTERS]) {\n externalStateKeys.push(tableMeta[EXTERNAL_FILTERS]);\n }\n return externalStateKeys;\n}\n\n/**\n * Validates the payload for {@link ActionTypes.SET_IN_EXTERNAL_STATE setInExternalState} action.\n *\n * @param payload The payload for {@link ActionTypes.SET_IN_EXTERNAL_STATE setInExternalState} action.\n * @param externalStateKeys An array of valid {@link State.externalState external state} keys.\n *\n * @returns void\n *\n * @throws {Error} if validation fails.\n */\nfunction validateExternalStateAction(\n payload: NonNullable<State['externalState']>,\n externalStateKeys?: string[]\n): void {\n if (!isObject(payload)) {\n throw Error(\n `payload for action ${ActionTypes.SET_IN_EXTERNAL_STATE} should be of object type only.`\n );\n }\n const payloadKeys = Object.keys(payload);\n if (payloadKeys.length !== 1) {\n throw Error(\n `payload object for action ${ActionTypes.SET_IN_EXTERNAL_STATE} should contain exactly one key.`\n );\n }\n if (!externalStateKeys?.includes(payloadKeys[0])) {\n throw Error(\n `The key '${payloadKeys[0]}' in the payload object for action ${ActionTypes.SET_IN_EXTERNAL_STATE} is invalid.`\n );\n }\n}\n\n/**\n * Validates an action by ensuring that the provided payload is supported for the given action type.\n * This function checks if the action and payload match the supported actions.\n *\n * @param action - The action to be validated.\n * @param payload - The payload associated with the action. The payload must confirm to the expected structure for the given action.\n * @param externalStateKeys - An array of valid {@link State.externalState external state} keys.\n *\n * @returns void\n *\n * @throws {Error} if validation fails.\n */\nexport function validateAction(\n action: SupportedConsumerActionType,\n payload?: SupportedConsumerPayloads,\n externalStateKeys?: string[]\n): void {\n switch (action) {\n case ActionTypes.UPDATE_DEBUG_INFO:\n case ActionTypes.TOGGLE_REQUIRED:\n case ActionTypes.USER_CONFIRMATION_ACTION:\n if (!isObject(payload)) {\n throw Error(`payload for action ${action} should be of object type only!`);\n }\n break;\n\n case ActionTypes.TOGGLE_DISABLE_SELECTION:\n if (typeof payload !== 'boolean')\n throw Error(`payload for action ${action} should be of type boolean only!`);\n break;\n case ActionTypes.NOTIFY_DATA_REFRESH:\n case ActionTypes.CLEAR_DATA_REFRESH_NOTIFICATION:\n case ActionTypes.UPDATE_SELECTED_ROWS:\n if (typeof payload !== 'undefined') {\n throw Error(`No payload is required for action ${action}`);\n }\n break;\n case ActionTypes.SET_IN_EXTERNAL_STATE:\n validateExternalStateAction(\n payload as NonNullable<State['externalState']>,\n externalStateKeys\n );\n break;\n default:\n throw Error(`Action ${action} is not supported!`);\n }\n}\n\n/**\n * Retrieves the default preset ID from all personalizations.\n * @param stateAllPersonalization\n * @returns The id of the default preset if found, otherwise `undefined`.\n */\nexport function getDefaultPresetIdFromStatePersonalisation(\n stateAllPersonalization: Personalization['allPersonalizations'] = {}\n): string | undefined {\n return Object.keys(stateAllPersonalization).find(\n item => stateAllPersonalization[item].isDefaultPreset\n );\n}\n\n/** Determines if the given {@link array} contains any duplicate elements.\n * @param array The array to be checked for duplicate elements.\n * @returns Returns `true` if duplicates are found, otherwise returns `false`.\n */\nexport function hasDuplicates<T>(array?: T[]): boolean {\n return !!(array && new Set<T>(array).size !== array.length);\n}\n\n/**\n * Creates a passable promise, which is an array containing a promise object, and its corresponding resolve and reject functions.\n *\n * @returns An array where:\n * - The first element is the created promise.\n * - The second element is the resolve function for the promise.\n * - The third element is the reject function for the promise.\n */\nexport function passablePromise<T>(): PassablePromise<T> {\n let resolveRef!: PassablePromise<T>[1];\n let rejectRef!: PassablePromise<T>[2];\n const promise = new Promise<T>((resolve, reject) => {\n resolveRef = resolve;\n rejectRef = reject;\n });\n return [promise, resolveRef, rejectRef];\n}\n\n/**\n * Logs the given {@link cleanedUpFieldIds invalid column ids} to console as warning.\n * @param cleanedUpFieldIds invalid column ids.\n *\n */\nexport function logInvalidFields(cleanedUpFieldIds: string[]): void {\n // eslint-disable-next-line no-console\n if (cleanedUpFieldIds.length !== 0 && console?.warn) {\n // eslint-disable-next-line no-console\n console.warn(\n `Columns with following id are not found. \\n ${[...new Set(cleanedUpFieldIds)].join(\n ', '\n )}\\n Resulting outcome might not be correct. Please check the configuration.`\n );\n }\n}\n\n/**\n * Determines if the filter criteria has changed in the latest state compared to the previous state.\n *\n * This function checks the following state keys to determine changes:\n * - {@link State.filterExpression filterExpression}\n * - {@link State.search search}\n * - The value of {@link Meta.externalFilters external filters} in {@link State.externalState externalState}\n *\n * @param meta - The RS meta object.\n * @param previousState - The previous state object to compare against.\n * @param latestState - The latest state object to check for changes.\n * @returns Returns true if the filter criteria has changed; otherwise, returns false.\n */\nexport function isFilterCriteriaChanged(\n meta: Meta,\n previousState: State,\n latestState: State\n): boolean {\n const { filterExpression, search: { query } = {}, externalState } = latestState;\n const {\n filterExpression: previousFilterExpression,\n search: { query: previousQuery } = {},\n externalState: previousExternalState\n } = previousState;\n\n const searchChanged = () => query !== previousQuery;\n const filterExpressionChanged = () => !deepEqual(previousFilterExpression, filterExpression);\n const externalFilterChanged = () =>\n meta?.externalFilters &&\n !deepEqual(\n previousExternalState?.[meta?.externalFilters],\n externalState?.[meta?.externalFilters]\n );\n\n return !!(searchChanged() || filterExpressionChanged() || externalFilterChanged());\n}\n\n/**\n * Calculates the overlapping area from given {@link previousIndexes} and {@link newIndexes}.\n * @param previousIndexes\n * @param newIndexes\n * @returns A number indicating the overlapping area.\n */\nexport function getOverlappingIndexes(\n previousIndexes: PaginationPayload = {} as PaginationPayload,\n newIndexes: PaginationPayload = {} as PaginationPayload\n): number {\n const { startIndex: previousStartIndex, endIndex: previousEndIndex } = previousIndexes;\n const { startIndex: latestStartIndex, endIndex: latestEndIndex } = newIndexes;\n\n if (previousEndIndex < latestStartIndex || latestEndIndex < previousStartIndex) {\n return 0;\n }\n\n const overlapStartIndex = Math.max(previousStartIndex, latestStartIndex);\n const overlapEndIndex = Math.min(previousEndIndex, latestEndIndex);\n const overlapArea = overlapEndIndex - overlapStartIndex;\n\n if (overlapArea <= 0) {\n return 0;\n }\n\n return overlapArea;\n}\n\n/**\n * Determines whether the given {@link action} already exists in {@link latestActions} by comparing its type and payload.\n * @param action\n * @param latestActions\n * @returns true if the {@link action} exists in the {@link latestActions} otherwise false.\n */\n// TODO This is some what same as isStaleAction. Revisit both the methods.\nexport function isSameActionPresent(\n action: Action,\n latestActions: Map<ActionType, Action>\n): boolean {\n const { type: actionType } = action;\n const existingAction = latestActions.get(actionType);\n return (\n !!existingAction &&\n 'payload' in action &&\n 'payload' in existingAction &&\n deepEqual(existingAction.payload, action.payload)\n );\n}\n\n/**\n * Removes actions from the {@link latestActions} that have already been executed and are present in the {@link executedActionsQueue}.\n * This function ensures that only pending actions remain in the {@link latestActions}.\n * @param latestActions\n * @param executedActionsQueue\n */\nexport function clearProcessedActionsFromLatestActions(\n latestActions: Map<ActionType, Action>,\n executedActionsQueue: Action[]\n): void {\n executedActionsQueue.forEach(executedAction => {\n if (isSameActionPresent(executedAction, latestActions)) {\n latestActions.delete(executedAction.type);\n }\n });\n}\n\n/**\n * Determines whether the given {@link action} already exists in {@link latestActions} by comparing its type and payload.\n * @returns\n * - false if {@link action} does not already exists.\n * - false if {@link action} already exists and payload matches\n * - true if {@link action} already exists but payload does not match.\n */\n// TODO revisit this method again. It is not checking only for stale actions.\nexport function isStaleAction(action: Action, latestActions: Map<ActionType, Action>): boolean {\n const { type: actionType } = action;\n const existingAction = latestActions.get(actionType);\n return (\n !!existingAction &&\n 'payload' in action &&\n 'payload' in existingAction &&\n // TODO why ! is added in front of deepEqual. Ideally for an existing action if the payload is exactly same then it should be marked as stale.\n !deepEqual(existingAction.payload, action.payload)\n );\n}\n\n/**\n * Determines if the overlapping area of pagination indexes between the old and new pagination payloads in current queue is less than 50%.\n * This function helps determine if a significant portion of the pagination area has changed due to recent actions.\n *\n * For detailed usage and examples, refer [pagination-action-optimizations.md](../../../docs/pagination-action-optimizations.md).\n * @param latestActions - A map of the latest actions being executed in the queue, which may include pagination actions.\n * @param previousExecutedActionQueue - The queue of previously executed actions.\n * @returns Returns true if the overlapping area is less than 50%, otherwise returns false.\n */\nexport function isSignificantPaginationOverlap(\n latestActions: Map<ActionType, Action>,\n previousExecutedActionQueue: Action[]\n): boolean {\n const lastExecutedPaginationActionIndex = previousExecutedActionQueue\n .map(action => action.type)\n .lastIndexOf(ActionTypes.PAGINATE);\n if (!latestActions.has(ActionTypes.PAGINATE) || lastExecutedPaginationActionIndex < 0)\n return false;\n\n const lastExecutedPaginationPayload = (\n previousExecutedActionQueue[lastExecutedPaginationActionIndex] as PaginateAction\n ).payload;\n const latestPaginatePayload = (latestActions.get(ActionTypes.PAGINATE) as PaginateAction).payload;\n\n const overlappingIndexes = getOverlappingIndexes(\n lastExecutedPaginationPayload,\n latestPaginatePayload\n );\n const { startIndex, endIndex } = latestPaginatePayload;\n // if the api response matches at least 50% with the latest pagination size, we can use that to display some rows until the next set of rows arrive\n return !(overlappingIndexes >= (endIndex - startIndex) * 0.5);\n}\n\n/**\n * Returns a unique key for a given group.\n * @param {Group} group\n */\nexport const getGroupKey = (group: Group): string => {\n if (group.dateFunction) {\n return `${group.columnId}${groupBySeparator}${group.dateFunction}`;\n }\n\n if (group.customFunction) {\n return `${group.columnId}${groupBySeparator}${group.customFunction.type}${groupBySeparator}${group.customFunction.id}`;\n }\n return group.columnId;\n};\n\n/**\n * Returns {@link Group group information} from {@link Group groups} based on {@link groupBy} key\n * @param groupBy - unique key for a given group\n * @param groups - groups info from table state\n * @returns matched group\n */\nexport const getGroupFromKey = (groupBy: string, groups: State['groups']): Group | undefined => {\n return groups?.find(group => {\n return getGroupKey(group) === groupBy;\n });\n};\n\n/**\n * Checks if the column widths have been calculated.\n *\n * @returns True if the column widths have been calculated; otherwise, false.\n */\nexport const areColumnWidthsCalculated = (columnWidths: State['columnWidths']): boolean => {\n if (!columnWidths || isEmpty(columnWidths)) return false;\n const keys = Object.keys(columnWidths);\n // TODO why only rowDragDropcolumn is excluded from OOTB columns set, why not other OOTB columns ?\n return !(keys.length === 1 && keys[0] === rowDragDropColumnMeta.field.id);\n};\n\n// TODO: temporary method, till meta.dragHandle is completely removed(currently deprecated).\nexport const isRowReorderFieldEnabled = (meta: Meta): boolean => {\n return meta.dragHandle || !!meta.rowReorderField;\n};\n\n// TODO: temporary method, till meta.showErrorField is completely removed(currently deprecated).\nexport const isRowErrorFieldEnabled = (meta: Meta): boolean => {\n return meta.showErrorField || !!meta.rowErrorField;\n};\n\n/**\n * Returns the {@link StyleFormat} for a given {@link styleFormatId} from {@link View.styleFormats}\n * @param styleFormatId\n * @param styleFormats\n * @returns StyleFormat or `undefined`\n */\nconst getStyleFormat = (\n styleFormatId: string,\n styleFormats: NonNullable<View['styleFormats']>\n): StyleFormat | undefined => {\n return styleFormats.find(styleFormat => styleFormat.id === styleFormatId);\n};\n\n/**\n * Evaluates the style format applicable to a cell based on {@link Column.getExecutionContext current execution context} and {@link Column.conditionalStyleFormats conditionalStyleFormats}\n * @param column Column on which styles need to be evaluated.\n * @param rsInternal RsInternal object\n * @returns - {@link StyleFormat} or `undefined\n */\nexport const evaluateStyleFormatForCell = (\n column: Column,\n rsInternal: RsInternal\n): StyleFormat | undefined => {\n const { conditionalStyleFormats } = column;\n const { getRsProps, getRsStateResolver, getView } = rsInternal;\n const { apiContext } = getRsProps();\n const { meta } = getView();\n const { getState } = getRsStateResolver();\n const data = column.getExecutionContext()?.getValue?.();\n\n if (!data || !conditionalStyleFormats) return;\n\n const firstMatchingStyleFormat = conditionalStyleFormats.find(({ condition }) =>\n apiContext.evaluateCondition\n ? apiContext.evaluateCondition(getState(), meta, { condition, data })\n : evaluateConditionLocally(meta, { condition, data })\n );\n\n return (\n firstMatchingStyleFormat &&\n getStyleFormat(firstMatchingStyleFormat.styleFormatId, column.parent.styleFormats!)\n );\n};\n"]}
@@ -0,0 +1,43 @@
1
+ import type { Condition, LeafCondition } from '@pega/cosmos-react-condition-builder';
2
+ import type { Comparator } from '@pega/cosmos-react-condition-builder/lib/components/ConditionBuilder/core/types';
3
+ import type { DefaultConfigType } from '../config/config';
4
+ import type { FieldDef } from '../../../types/Meta.types';
5
+ import type Column from '../generators/ColumnGenerator';
6
+ import type View from '../generators/ViewGenerator';
7
+ export type DefaultFieldDefKeys = keyof DefaultConfigType['defaultFieldDef'];
8
+ export type DefaultConfigKeys = keyof DefaultConfigType;
9
+ export type FeatureMap = {
10
+ [key in keyof FieldDef]: boolean;
11
+ };
12
+ export interface FilterInfo {
13
+ filterExpression: Condition;
14
+ comparator?: Comparator | null;
15
+ }
16
+ export type FilterInitializers = [
17
+ string | number | string[] | number[],
18
+ string | null | undefined,
19
+ LeafCondition | undefined,
20
+ Condition
21
+ ];
22
+ export interface AddFilterParams {
23
+ filterExpression: Condition;
24
+ column: Column;
25
+ comparator: Comparator;
26
+ input?: null | string | [];
27
+ }
28
+ export type GenericObject = Record<string | number | symbol, unknown>;
29
+ export type PassablePromise<T> = [
30
+ promise: Promise<T>,
31
+ resolveRef: (value: T | PromiseLike<T>) => void,
32
+ rejectRef: (value: unknown) => void
33
+ ];
34
+ export type DeepNonNullableArray<T> = T extends (infer U)[] ? DeepNonNullableArray<NonNullable<U>>[] : NonNullable<T>;
35
+ export type FunctionToBeMemoized<P extends any[], R> = (args: P) => R;
36
+ export type MemoizedFunctionParameters<P> = [
37
+ methodArgs: P,
38
+ customFunctionOrDependencies?: ((prevDeps: any[], deps: any[]) => boolean) | any[],
39
+ customFunction?: (prevDeps: any[], deps: any[]) => boolean
40
+ ];
41
+ export type MemoizedFunction<P extends any[], R> = (this: ThisParameterType<FunctionToBeMemoized<P, R>>, ...args: MemoizedFunctionParameters<P>) => R;
42
+ export type StyleConfig = NonNullable<View['styleFormats']>[number]['config'];
43
+ //# sourceMappingURL=util.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.types.d.ts","sourceRoot":"","sources":["../../../../src/core/utils/util.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AACrF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iFAAiF,CAAC;AAElH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,MAAM,MAAM,+BAA+B,CAAC;AACxD,OAAO,KAAK,IAAI,MAAM,6BAA6B,CAAC;AAEpD,MAAM,MAAM,mBAAmB,GAAG,MAAM,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;AAE7E,MAAM,MAAM,iBAAiB,GAAG,MAAM,iBAAiB,CAAC;AAExD,MAAM,MAAM,UAAU,GAAG;KAAG,GAAG,IAAI,MAAM,QAAQ,GAAG,OAAO;CAAE,CAAC;AAE9D,MAAM,WAAW,UAAU;IACzB,gBAAgB,EAAE,SAAS,CAAC;IAC5B,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE;IACrC,MAAM,GAAG,IAAI,GAAG,SAAS;IACzB,aAAa,GAAG,SAAS;IACzB,SAAS;CACV,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,gBAAgB,EAAE,SAAS,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,UAAU,CAAC;IACvB,KAAK,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,EAAE,CAAC;CAC5B;AAED,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,CAAC;AAEtE,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI;IAC/B,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IACnB,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI;IAC/C,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI;CACpC,CAAC;AAEF,MAAM,MAAM,oBAAoB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,GACvD,oBAAoB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,GACtC,WAAW,CAAC,CAAC,CAAC,CAAC;AAGnB,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC;AAEtE,MAAM,MAAM,0BAA0B,CAAC,CAAC,IAAI;IAC1C,UAAU,EAAE,CAAC;IACb,4BAA4B,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,GAAG,GAAG,EAAE;IAClF,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO;CAC3D,CAAC;AAEF,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,GAAG,EAAE,EAAE,CAAC,IAAI,CACjD,IAAI,EAAE,iBAAiB,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EACnD,GAAG,IAAI,EAAE,0BAA0B,CAAC,CAAC,CAAC,KACnC,CAAC,CAAC;AAEP,MAAM,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=util.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.types.js","sourceRoot":"","sources":["../../../../src/core/utils/util.types.ts"],"names":[],"mappings":"","sourcesContent":["import type { Condition, LeafCondition } from '@pega/cosmos-react-condition-builder';\nimport type { Comparator } from '@pega/cosmos-react-condition-builder/lib/components/ConditionBuilder/core/types';\n\nimport type { DefaultConfigType } from '../config/config';\nimport type { FieldDef } from '../../../types/Meta.types';\nimport type Column from '../generators/ColumnGenerator';\nimport type View from '../generators/ViewGenerator';\n\nexport type DefaultFieldDefKeys = keyof DefaultConfigType['defaultFieldDef'];\n\nexport type DefaultConfigKeys = keyof DefaultConfigType;\n\nexport type FeatureMap = { [key in keyof FieldDef]: boolean };\n\nexport interface FilterInfo {\n filterExpression: Condition;\n comparator?: Comparator | null;\n}\n\nexport type FilterInitializers = [\n string | number | string[] | number[],\n string | null | undefined,\n LeafCondition | undefined,\n Condition\n];\n\nexport interface AddFilterParams {\n filterExpression: Condition;\n column: Column;\n comparator: Comparator;\n input?: null | string | [];\n}\n\nexport type GenericObject = Record<string | number | symbol, unknown>;\n\nexport type PassablePromise<T> = [\n promise: Promise<T>,\n resolveRef: (value: T | PromiseLike<T>) => void,\n rejectRef: (value: unknown) => void\n];\n\nexport type DeepNonNullableArray<T> = T extends (infer U)[]\n ? DeepNonNullableArray<NonNullable<U>>[] // Recursively handle nested arrays\n : NonNullable<T>;\n\n/* Types related to withMemoization function */\nexport type FunctionToBeMemoized<P extends any[], R> = (args: P) => R;\n\nexport type MemoizedFunctionParameters<P> = [\n methodArgs: P,\n customFunctionOrDependencies?: ((prevDeps: any[], deps: any[]) => boolean) | any[],\n customFunction?: (prevDeps: any[], deps: any[]) => boolean\n];\n\nexport type MemoizedFunction<P extends any[], R> = (\n this: ThisParameterType<FunctionToBeMemoized<P, R>>,\n ...args: MemoizedFunctionParameters<P>\n) => R;\n\nexport type StyleConfig = NonNullable<View['styleFormats']>[number]['config'];\n"]}
@@ -0,0 +1,392 @@
1
+ import type { ModalManagerContextValue } from '@pega/cosmos-react-core/lib/components/Modal/Modal.types';
2
+ import type { Condition } from '@pega/cosmos-react-condition-builder';
3
+ import type { RowData } from '../src/core/generators/RowGenerator.types';
4
+ import type { Personalization, PersonalizationInfo, PersonalizedState, State } from './State.types';
5
+ import type { Meta, RowAction } from './Meta.types';
6
+ export interface ApiOptions {
7
+ signal: AbortSignal;
8
+ }
9
+ type AggregationTypeResp = 'avg' | 'max' | 'min' | 'nonNullCount' | 'sum';
10
+ /** An object with key equal to {@link AggregationTypeResp aggregation type} and value is equal to the actual value of that aggregation type */
11
+ type AggregationOptions = {
12
+ [agg in AggregationTypeResp]?: number | null;
13
+ };
14
+ /** An object where key is equal to the column id (i.e. {@link FieldDef.id id} in FieldDef) and value is equal to its {@link AggregationOptions Aggregation values} */
15
+ export type AggregationResp = {
16
+ [columnId: string]: AggregationOptions;
17
+ };
18
+ export interface GroupedInfo {
19
+ /** Value for the current group node. */
20
+ name: null | string | number | boolean | Date;
21
+ /** # of data rows in this node */
22
+ count: number;
23
+ /** An optional data row from the group node that is used to process extra information required by group node */
24
+ data?: RowData;
25
+ /** Aggregation values of a column if applied */
26
+ agg?: AggregationResp;
27
+ /** Nested groups within the parent group node */
28
+ children?: GroupedInfo[];
29
+ }
30
+ export interface HierarchicalGroupedInfo extends Pick<GroupedInfo, 'count' | 'agg'> {
31
+ info: RowData;
32
+ children?: HierarchicalGroupedInfo[];
33
+ }
34
+ export type AggregateValueResponse = {
35
+ [columnId: string]: number | null;
36
+ };
37
+ /** An object where key is equal to column id i.e. {@link FieldDef.id id key in fieldDef} and value is equal to the aggregation value for the given aggregation */
38
+ export type AggregationResult = {
39
+ [columnId: string]: number;
40
+ };
41
+ export interface FetchDataResponse {
42
+ /** An array of {@link RowData} */
43
+ data: RowData[];
44
+ /** An optional parameter to provide the total record count for a given Repeating structures without any criteria. If not provided, use callback setRecordCount */
45
+ totalRecordCount?: number;
46
+ /** An optional parameter to provide the total record count for a given Repeating structures with a given filter criteria in the query. If not provided, use callback setRecordCount */
47
+ filteredRecordCount?: number;
48
+ }
49
+ type BulkAction = Pick<RowAction, 'id' | 'text'> & {
50
+ /**
51
+ * @param rowIds - The values for the {@link Meta.itemKey 'itemkey'} for given rows.
52
+ * @param clearSelectionAndRefreshRowsCallback - A callback used to trigger deselection of all the selected rows and then call
53
+ * {@link ApiContext.fetchRowsData 'fetchRowsData'} api of to fetch latest data for given rows, after action is completed.
54
+ * @return {void} - void
55
+ */
56
+ onClick: (rowIds: string[], clearSelectionAndRefreshRowsCallback: () => void) => void;
57
+ };
58
+ interface ConditionConfig {
59
+ condition: Condition;
60
+ data: RowData;
61
+ }
62
+ type RecordCountParam = {
63
+ /** Count of the total records for the repeating structures */
64
+ count?: number;
65
+ /** A boolean flag to determine whether there are more results to fetch or not */
66
+ hasMoreResults?: boolean;
67
+ };
68
+ /** A set of callbacks exposed by repeating structures which a consumer can call to interact with Repeating structures. */
69
+ export type UtilityCallbacks = {
70
+ /**
71
+ * It is used to pass count related info of the data to repeating structure. If the count info is not passed as part of {@link ApiContext.fetchData fetchData} api
72
+ * then this should be called to share the count information to Repeating structures.
73
+ */
74
+ setRecordCount: (options: RecordCountParam) => void;
75
+ /**
76
+ * It is used to trigger specific actions to the Repeating structures with a specific payload. Actions supported:
77
+ * - {@link CLEAR_DATA_REFRESH_NOTIFICATION}
78
+ * - {@link TOGGLE_DISABLE_SELECTION}
79
+ * - {@link TOGGLE_REQUIRED}
80
+ * - {@link UPDATE_DEBUG_INFO}
81
+ * - {@link NOTIFY_DATA_REFRESH}
82
+ * - {@link USER_CONFIRMATION_ACTION}
83
+ * - {@link UPDATE_SELECTED_ROWS}<br>
84
+ *
85
+ * Refer [dispatchAction](https://git.pega.io/projects/PS/repos/ui-lists-lib/browse/packages/RepeatingStructures/README.md?useDefaultHandler=true#152) documentation for more details.
86
+ * @param {string} action - Action type that needs to be dispatched to Repeating structures.
87
+ * @param {string | boolean | Object } [payload] - An optional payload for a given action.
88
+ * @returns {void} void
89
+ */
90
+ dispatchAction: (action: string, payload?: string | boolean | object) => void;
91
+ /**
92
+ * It is used to trigger a force refresh the data and re-fetch selections using apiContext.getSelectedRows api (if any of the selection mode is enabled) of repeating structures
93
+ * @returns {void} void
94
+ */
95
+ forceRefresh: () => void;
96
+ };
97
+ export type PersonalizationResponse = Pick<Personalization, 'defaultPersonalization'> & {
98
+ allPersonalizations: {
99
+ [personalizationKey: string]: Pick<PersonalizationInfo, 'name'> & {
100
+ personalizationState: PersonalizedState;
101
+ };
102
+ };
103
+ };
104
+ export interface ApiContext {
105
+ /**
106
+ * This api is used to fetch a list of raw data rows (excluding aggregations) for a given group or at the top level when no groups.
107
+ *Refer **[apiContext](https://git.pega.io/projects/PS/repos/ui-lists-lib/browse/docs/apiContext.md?useDefaultHandler=true#29) documentation** for more details.
108
+ * @requireWhen Always
109
+ * @invokedWhen filters are changed OR\
110
+ * search criteria is changed OR\
111
+ end user scrolls through the RS records OR\
112
+ sorting is changed OR\
113
+ forceRefresh is triggered by consumer OR\
114
+ groups are changed OR\
115
+ hierarchicalGroups are changed
116
+ * @param {State} rsState - Current repeating structures {@link State}. Majorly used to build the criteria for query(e.g. filter, sort, group criteria, paginationOptions).
117
+ * @param {Meta} rsMeta - Repeating structures {@link Meta}. Majorly used to determine the fields for which data needs to be fetched.
118
+ * @param {ApiOptions} apiOptions - Extra api options provided by repeating structures,
119
+ * for instance, abort signal handler is sent which can be attached to the native fetch call or any framework like axios. Repeating structures will use to cancel the api calls which might be using stale state, e.g. in case of progressive scroll.
120
+ * @returns {Promise<FetchDataResponse>} - It should return a promise of type {@link FetchDataResponse} that should contain data as one key of type Array<{@link RowData}> to provide data for given query.
121
+ */
122
+ fetchData: (rsState: State, rsMeta: Meta, apiOptions?: ApiOptions) => Promise<FetchDataResponse>;
123
+ /**
124
+ * This api is used to fetch details for any group/sub-group ribbons in the RS. Should return labels, counts, aggregation values at each group node.This can sometimes be called even when there are no groups. Avoid running into exceptions in those cases.
125
+ * Refer **[apiContext](https://git.pega.io/projects/PS/repos/ui-lists-lib/browse/docs/apiContext.md?useDefaultHandler=true#59) documentation** for more details.
126
+ * @requireWhen {@link Meta.grouping 'grouping'} key is set to true in
127
+ * @invokedWhen Grouping is applied on any {@link FieldDef fieldDef} OR\
128
+ * filters are changed OR\
129
+ * search criteria is changed OR\
130
+ * personalization is toggled. OR\
131
+ * aggregation is changed OR\
132
+ * forceRefresh of RS is triggered by consumer.
133
+ * @param {State} rsState - Current repeating structures {@link State}. Majorly used to build the criteria for query. For e.g. use rsState.groups and rsState.aggregationInfo to determine the query.
134
+ * @param {Meta} rsMeta - Repeating structures {@link Meta}. Majorly used to determine the fields info for which data needs to be fetched.
135
+ * @returns {GroupedInfo[]} - It should return a promise of type array of all the {@link GroupedInfo } for the specific field. It can also include nested groups in children key.
136
+ */
137
+ fetchGroupedInfo?: (rsState: State, rsMeta: Meta) => Promise<GroupedInfo[]>;
138
+ /**
139
+ * This api is used to fetch aggregation results for a given aggregation type(sum/min/max/count) on a field. This is called when aggregations are configured on one or more column.
140
+ * Refer **[apiContext](https://git.pega.io/projects/PS/repos/ui-lists-lib/browse/docs/apiContext.md?useDefaultHandler=true#84) documentation** for more details.
141
+ * @requireWhen {@link FieldDef.aggregation 'aggregation'} key is set to true for at least one FieldDef AND {@link FieldDef.type 'type'} key in FieldDef should be of number for that particular fieldDef.
142
+ * @invokedWhen When aggregation is applied on any {@link FieldDef fieldDef} OR\
143
+ * filters are changed OR\
144
+ * search criteria is changed OR\
145
+ * personalization is toggled.
146
+ * @param {State} rsState - Current repeating structures {@link State}. Majorly used to get current aggregations applied on the RS from aggregationInfo key in state. Apart from this current filters and search criteria can also be picked from state.
147
+ * @param {Meta} rsMeta - Repeating structures {@link Meta}. Majorly used to determine the fields for which data needs to be fetched.
148
+ * @returns {Promise<AggregationResult>} - It should return a promise of type {@link AggregationResult}
149
+ */
150
+ fetchAggregatedValues?: (rsState: State, rsMeta: Meta) => Promise<AggregationResult>;
151
+ /**
152
+ * This api is used to fetch unique values available for a particular field. It is generally called for a field which has {@link FieldDef.filterPickList filterPickList} key set to true.The unique values are presented to the user while filtering.
153
+ * Refer **[apiContext](https://git.pega.io/projects/PS/repos/ui-lists-lib/browse/docs/apiContext.md?useDefaultHandler=true#99) documentation** for more details.
154
+ * @requireWhen {@link FieldDef.filterPickList filterPickList} key set to true for at least one FieldDef
155
+ * @invokedWhen Picklist Filter is invoked by end user from FieldDef header action menu.
156
+ * @param {State} rsState - Current repeating structures {@link State}.
157
+ * @param {Meta} rsMeta - Repeating structures {@link Meta}.
158
+ * @param {string} columnId - This is equal to { @link FieldDef.id 'id'} key of the field for which unique values needs to be fetched.
159
+ * @returns {Promise<Array<string | number | boolean | Date>>} It should return a promise of type array of unique values for a given fieldDef id.
160
+ */
161
+ fetchUniqueColValues?: (rsState: State, rsMeta: Meta, columnId: string) => Promise<(string | number | boolean | Date)[]>;
162
+ /**
163
+ * This api is used to fetch the latest data for a given row identified uniquely by {@link FieldDef.itemKey itemKey}.
164
+ * @requireWhen {@link Meta.editing 'editing'} OR {@link Meta.deleting 'deleting'} is set to true
165
+ * @invokedWhen A {@link Meta.rowActions rowAction} is submitted by consumer of RS, as part of {@link RowAction. rowAction.onClick} 'refresRow' callback.
166
+ * @param {State} rsState - Current repeating structures {@link State}.
167
+ * @param {Meta} rsMeta - Repeating structures {@link Meta}.
168
+ * @param {string} key - A unique identifier for a given row. This is equal to {@link Meta.itemKey 'itemKey'}
169
+ * @param {string} value - The value for the given {@link Meta.itemKey 'itemKey'} for given row.
170
+ * @returns {Promise<RowData[]>} It should return a promise of type {@link RowData} array containing the data for a given row.Only 0th index is considered from the array.
171
+ */
172
+ fetchRowData?: (rsState: State, rsMeta: Meta, key: string, value: string) => Promise<RowData[]>;
173
+ /**
174
+ * This api is used to fetch the latest data for given set of rows identified uniquely by itemKey in {@link FieldDef}. This is passed as callback to all the {@link BulkAction.onClick bulk actions 'onClick'} method with {@link ApiContext.clearSelectedRows clearSelectedRows} api.
175
+ * @requireWhen {@link Meta.allowBulkActions 'allowBulkActions'} is set to true.
176
+ * @invokedWhen The bulk action is submitted, this can be called by bulk actions {@link BulkAction.onClick 'onClick'} method by RS consumer.
177
+ * @param {State} rsState - Current repeating structures {@link State}.
178
+ * @param {Meta} rsMeta - Repeating structures {@link Meta}.
179
+ * @param {Array<string | number | boolean | Date>} rowIds - The values for the given {@link Meta.itemKey 'itemKey'} for given rows.
180
+ * @param itemKey - A unique identifier for a given row. This is equal to {@link Meta.itemKey 'itemKey'}
181
+ * @returns {Promise<RowData[]>} It should return a promise of type {@link RowData} array containing the data for given rows.
182
+ */
183
+ fetchRowsData?: (rsState: State, rsMeta: Meta, rowIds: string[], itemKey: string) => Promise<RowData[]>;
184
+ /**
185
+ * This api is used to fetch the actions that is supported on rows of Repeating Structure. It is generally called when {@link Meta.editing 'editing'} is set to true.
186
+ * @requireWhen {@link Meta.editing 'editing'} OR {@link Meta.deleting 'deleting'} is set to true
187
+ * @invokedWhen The end user clicks on 'RowActionMenu'.Once fetched it is not refetched.
188
+ * @param {} uniqueKey - A unique identifier for a given row. This is equal to value for {@link Meta.itemKey 'itemKey'} in {@link RowData} data.
189
+ * @returns - A promise of type Array of {@link RowAction}
190
+ */
191
+ fetchRowActionDetails?: (uniqueKey: string, rowContext: RowData) => Promise<RowAction[]>;
192
+ /**
193
+ * This api is used to submit the updated row data to apiContext. It is generally called when {@link FieldDef.editable 'editable'} key is set to true for at least one FieldDef to enable inline editing for a cell.
194
+ * @requireWhen {@link FieldDef.editable 'editable'} key is set to true for at least one FieldDef.
195
+ * @invokedWhen The end user is done editing the cell using inline editing.
196
+ * @param {State} rsState - Current repeating structures {@link State}.
197
+ * @param {Meta} rsMeta - Repeating structures {@link Meta}.
198
+ * @param dataToSubmit - Updated row data to be submitted to apiContext
199
+ * @returns It should return a promise of type {@link RowData} with the updated contents that is passed in {@link dataToSubmit} param.
200
+ */
201
+ submitData?: (rsState: State, rsMeta: Meta, dataToSubmit: RowData) => Promise<{
202
+ rowData: RowData;
203
+ }>;
204
+ /**
205
+ * This api is used to submit moved records in a repeating structure. It is called when {@link Meta.moveListRecords 'moveListRecords'} is set to true. Repeating structure allow moving of records based on it's value.
206
+ * @requireWhen {@link Meta.moveListRecords 'moveListRecords'} is set to true
207
+ * @invokedWhen The move process is completed by end user this api is called to provide the info related to move records.
208
+ * @param moveInfo - It is an object that contains sourceID(the data of {@link Meta.itemKey 'itemKey'} for the given row) that user has selected to move and
209
+ * destinationID(the data of {@link Meta.itemKey 'itemKey'} for the given row) where the user has dropped the source row.
210
+ * @returns It should return a promise of type object that contains a refresh key if set to true, repeating structures will trigger a refresh and fetch the whole data agin using {@link ApiContext.fetchData 'fetchData'} api
211
+ */
212
+ moveListRecords?: (moveInfo: {
213
+ sourceID: string;
214
+ destinationID: string;
215
+ }) => Promise<{
216
+ refresh: boolean;
217
+ }>;
218
+ /**
219
+ * This api is used to fetch the bulkActions for a repeating structures if {@link Meta.allowBulkActions 'allowBulkActions'} is set to true.
220
+ * This is called on demand, when the bulk action button in repeating structures is clicked. The button will be disabled till the time at least one record is not selected in repeating structures to trigger bulk action.
221
+ * @requireWhen {@link Meta.allowBulkActions 'allowBulkActions'} is set to true.
222
+ * @invokedWhen End user clicks on 'Bulk actions' button in RS Toolbar.Once fetched it is not refetched.
223
+ * @param {Array<string>} rowIds - The values for the given {@link Meta.itemKey 'itemKey'} for given rows.
224
+ * @returns A promise of type Array of {@link BulkAction}
225
+ */
226
+ fetchActions?: (rowIds: string[]) => Promise<BulkAction[]>;
227
+ /**
228
+ * This api is used to pass the rsUtilityCallbacks to the consumer. Consumer can use these callbacks at any point of time in RS lifecycle to interact with Repeating structures.
229
+ * @requireWhen Optional
230
+ * @invokedWhen On Repeating structures mount to share {@link UtilityCallbacks rsUtilityCallbacks}.
231
+ * @param {UtilityCallbacks} rsUtilityCallbacks A set of callbacks exposed by repeating structures which a consumer can call to interact with Repeating structures.
232
+ * @returns {void} void
233
+ */
234
+ addCallbacks?: (rsUtilityCallbacks: UtilityCallbacks) => void;
235
+ /**
236
+ * This api passes a unique identifier to apiContext to identify a repeating structure instance. This can be used to uniquely identify a RS instance in case of multiple RS instances.
237
+ * @requireWhen Optional
238
+ * @invokedWhen On Repeating structures mount to share current repeating structure instance identifier.
239
+ * @param {string} rsID - A unique identifier
240
+ * @returns {void} void
241
+ */
242
+ setRsID?: (rsID: string) => void;
243
+ /**
244
+ * This api is called to fetch all the personalizations for a repeating structure.
245
+ * @requireWhen {@link Meta.personalization 'personalization'} key is set to true.
246
+ * @invokedWhen On Repeating structures mount to fetch all personalizations.
247
+ * @returns {PersonalizationResponse} It should return all the personalizations.
248
+ */
249
+ fetchPersonalizations?: () => Promise<PersonalizationResponse>;
250
+ /**
251
+ * This api is called to update the personalization for a repeating structure.
252
+ * @requireWhen {@link Meta.personalization 'personalization'} key is set to true.
253
+ * @invokedWhen End user deletes a personalization.
254
+ * @param {string} personalizationKey - Unique identifier for the personalization.
255
+ * @param personalization - The updated personalization state.
256
+ * @returns {void} void
257
+ */
258
+ updatePersonalization?: (personalizationKey: string, personalization: {
259
+ markAsDefault?: boolean;
260
+ markAsAppDefault?: boolean;
261
+ name?: string;
262
+ personalizationState?: PersonalizedState;
263
+ }) => Promise<void>;
264
+ /**
265
+ * This api is called to delete the personalization for a repeating structure.
266
+ * @requireWhen {@link Meta.personalization 'personalization'} key is set to true.
267
+ * @invokedWhen End user deletes a personalization.
268
+ * @param personalizationKey - Unique identifier for a personalization.
269
+ * @returns {void} void
270
+ */
271
+ deletePersonalization?: (personalizationKey: string) => Promise<void>;
272
+ /**
273
+ * This api is called to create the personalization for a repeating structure.
274
+ * @requireWhen {@link Meta.personalization 'personalization'} key is set to true.
275
+ * @invokedWhen End user create a new personalization.
276
+ * @param {string} personalizationKey - Unique identifier for the personalization.
277
+ * @param personalization - The personalization state to be saved
278
+ * @returns {void} void
279
+ */
280
+ createPersonalization?: (personalizationKey: string, personalization: {
281
+ markAsDefault: boolean;
282
+ name: string;
283
+ personalizationState: PersonalizedState;
284
+ }) => Promise<string> | Promise<{
285
+ data: string;
286
+ }>;
287
+ /**
288
+ * This api is used to communicate selectedRows in the repeating structures to the consumer.
289
+ * @requireWhen {@link Meta.selectionMode 'selectionMode'} key is set to true.
290
+ * @invokedWhen {@link Meta.selectionMode 'selectionMode'} key is set to true and whenever selection changes in RS.
291
+ * @param {Array<RowData & { $selected: boolean }>} selectedRows The selectedRows that needs to be communicated.
292
+ * @returns {Promise<void>} A promise
293
+ */
294
+ setSelectedRows?: (selectedRows: (RowData & {
295
+ $selected: boolean;
296
+ })[]) => Promise<void>;
297
+ /**
298
+ * This api is used to get the selectedRows for the repeating structures from the consumer, to populate the selections in RS.
299
+ * @requireWhen {@link Meta.selectionMode 'selectionMode'} key is set to true.
300
+ * @invokedWhen {@link Meta.selectionMode 'selectionMode'} key is set to true and RS requires current selected rows from the consumer.
301
+ * @returns {Promise<Array<string>>} A promise of type array of unique identifiers for all the row. It is value of {@link Meta.itemKey 'itemKey'}
302
+ */
303
+ getSelectedRows?: () => Promise<string[]>;
304
+ /** This api is used to communicate the clearance of all the selectedRows for the repeating structures to the consumer.
305
+ * This is also passed as callback to all the {@link BulkAction.onClick bulk actions 'onClick'} method with {@link ApiContext.fetchRowsData fetchRowsData} api.
306
+ * @requireWhen {@link Meta.selectionMode 'selectionMode'} key is set to true.
307
+ * @invokedWhen In case of {@link Meta.selectionMode "multi"} selection mode, while toggling all the selections OR\
308
+ * while switching personalizations OR\
309
+ * when the bulk action is submitted, this can be called by bulk actions {@link BulkAction.onClick 'onClick'} method by RS consumer.
310
+ * @returns {Promise<void>} A promise
311
+ */
312
+ clearSelectedRows?: () => Promise<void>;
313
+ /**
314
+ * This api is used to fetch the hierarchical groups for an RS if {@link FieldDef.hierarchicalInfo 'hierarchicalInfo'} key is set to true for at least one FieldDef.
315
+ * @requireWhen {@link FieldDef.hierarchicalInfo 'hierarchicalInfo'} key is set to true for at least one FieldDef
316
+ * @invokedWhen Any change in filters, search criteria, hierarchichal groups, aggregations is detected in RS state or personalizations are toggled.
317
+ * @param {State} rsState - Current repeating structures {@link State}.
318
+ * @param {Meta} rsMeta - Repeating structures {@link Meta}.
319
+ * @returns {HierarchicalGroupedInfo[]} - It should return a promise of type array of all the {@link HierarchicalGroupedInfo } for the specific field. It can also include nested hierarchical groups in children key.
320
+ */
321
+ fetchHierarchicalGroupedInfo?: (rsState: State, rsMeta: Meta) => Promise<HierarchicalGroupedInfo[]>;
322
+ /**
323
+ * This api is used to communicate repeating structure state to the consumer. It also includes visibleColumns apart from regular repeating structure state.
324
+ * @requireWhen Optional
325
+ * @invokedWhen After any action performed on Repeating structures that results in updating of state.
326
+ * @param state Repeating structure state
327
+ * @returns {void} void
328
+ */
329
+ stateUpdateCallback?: (state: PersonalizedState & {
330
+ visibleColumns?: string[];
331
+ }) => void;
332
+ /**
333
+ * This api is used to communicate repeating structure state to the consumer. It also includes active personalization in RS apart from regular repeating structure state.
334
+ * @requireWhen Optional
335
+ * @param state Repeating structure state
336
+ * @returns {void} void
337
+ */
338
+ setComponentState?: (state: PersonalizedState & {
339
+ activePersonalization?: string;
340
+ }) => void;
341
+ /**
342
+ * This api is used to communicate repeating structure state to RS from consumer.
343
+ * @requireWhen Optional
344
+ * @returns RS state.
345
+ */
346
+ getComponentState?: () => Promise<PersonalizedState & {
347
+ activePersonalization?: string;
348
+ }>;
349
+ /** This api is called on click of 'Import data' option in repeating structures toolbar and should open a modal to allow import of data from a CSV file.
350
+ * @requireWhen {@link Meta.showImportDataOption showImportDataOption} is set to true in Meta.
351
+ * @invokedWhen "Import data" button is clicked in the repeating structures toolbar
352
+ * @param {ModalManagerContextValue['create']} create - The function to create a modal in the current context {@link ModalManagerContextValue['create']}.
353
+ * @returns {void} void
354
+ */
355
+ importCSVData?: (create: ModalManagerContextValue['create']) => Promise<void>;
356
+ /** This api is called on click of 'Export to excel' option in repeating structures toolbar and should export the data into a excel file.
357
+ * @requireWhen {@link Meta.showExportToExcelOption showExportToExcelOption} is set to true in Meta.
358
+ * @invokedWhen "Export to excel" button is clicked in the repeating structures toolbar
359
+ * @param {State} rsState - Current repeating structures state {@link State}.
360
+ * @param {Meta} rsMeta - Repeating structures meta {@link Meta}.
361
+ * @returns {void} void
362
+ */
363
+ exportData?: (rsState: State, rsMeta: Meta) => Promise<void>;
364
+ /** This api is called on click of 'Export to CSV' option in repeating structures toolbar and should export the data into a CSV file.
365
+ * @requireWhen {@link Meta.showExportToCSVOption showExportToCSVOption} is set to true in Meta.
366
+ * @invokedWhen "Export to CSV" button is clicked in the repeating structures toolbar
367
+ * @param {State} rsState - Current repeating structures state {@link State}.
368
+ * @param {Meta} rsMeta - Repeating structures meta {@link Meta}.
369
+ * @returns {void} void
370
+ */
371
+ exportDataToCSV?: (rsState: State, rsMeta: Meta) => Promise<void>;
372
+ /** This api is used to communicate source and destinaltion row keys to apiContext during row-reordering operation.
373
+ * @requireWhen {@link Meta.reorderItems reorderItems} is set to true and {@link Meta.moveListRecords moveListRecords} is set to false in Meta.
374
+ * @invokedWhen Reordering operations is being performed on rows.
375
+ * @param {string} sourceKey - the value of {@link Meta.itemKey 'itemKey'} for the given row that user has selected to move.
376
+ * @param {string} destinationKey - the value of {@link Meta.itemKey 'itemKey'} for the given row where the user has dropped the source row.
377
+ * @returns {void} void
378
+ */
379
+ applyRowReorder?: (sourceKey: string, destinationKey: string) => Promise<void>;
380
+ /**
381
+ * This API allows Repeating Structures to determine if a given `data` meets a specified `condition`. It is utilized in the following features if provided:
382
+ * - `Conditional Formatting` - Optional. If `evaluateCondition` is not provided, Repeating Structures will evaluate the row condition on their own. Otherwise, this function will be used.
383
+ *
384
+ * @param {State} rsState - The state of the Repeating Structures.
385
+ * @param {Meta} rsMeta - The meta information of the Repeating Structures.
386
+ * @param {ConditionConfig} config - The configuration for the condition.
387
+ * @returns {Promise<boolean> | boolean} - Returns `true` if the data satisfies the condition, otherwise `false`.
388
+ */
389
+ evaluateCondition?: (rsState: State, rsMeta: Meta, config: ConditionConfig) => boolean;
390
+ }
391
+ export {};
392
+ //# sourceMappingURL=ApiContext.types.d.ts.map