@rivet-health/design-system 40.44.0 → 40.44.2

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 (321) hide show
  1. package/{esm2020 → esm2022}/lib/accessibility/sr-only/sr-only.component.mjs +4 -4
  2. package/esm2022/lib/download/download.service.mjs +47 -0
  3. package/{esm2020 → esm2022}/lib/format/pipes/common.mjs +5 -5
  4. package/{esm2020 → esm2022}/lib/format/pipes/date.pipe.mjs +4 -4
  5. package/{esm2020 → esm2022}/lib/format/pipes/days.pipe.mjs +4 -4
  6. package/{esm2020 → esm2022}/lib/format/pipes/dollars.pipe.mjs +4 -4
  7. package/{esm2020 → esm2022}/lib/format/pipes/number.pipe.mjs +4 -4
  8. package/{esm2020 → esm2022}/lib/format/pipes/percentage.pipe.mjs +4 -4
  9. package/esm2022/lib/format/pipes/sentence-case.pipe.mjs +61 -0
  10. package/esm2022/lib/format/pipes/small-currency.pipe.mjs +24 -0
  11. package/esm2022/lib/format/pipes/small-number.pipe.mjs +29 -0
  12. package/esm2022/lib/format/svg-text-truncate/svg-text-truncate.directive.mjs +62 -0
  13. package/esm2022/lib/format/truncate/truncate.component.mjs +51 -0
  14. package/esm2022/lib/icon/dom-cache.mjs +32 -0
  15. package/esm2022/lib/icon/icon.component.mjs +86 -0
  16. package/{esm2020 → esm2022}/lib/icon/icons.mjs +1 -1
  17. package/{esm2020 → esm2022}/lib/input/alphabetic-field/alphabetic-field.component.mjs +4 -4
  18. package/esm2022/lib/input/auto-focus/auto-focus.directive.mjs +48 -0
  19. package/esm2022/lib/input/button/button.component.mjs +139 -0
  20. package/esm2022/lib/input/button-group/button-group.component.mjs +39 -0
  21. package/{esm2020 → esm2022}/lib/input/calendar/calendar.component.mjs +4 -4
  22. package/{esm2020 → esm2022}/lib/input/card-checkbox/card-checkbox.component.mjs +4 -4
  23. package/{esm2020 → esm2022}/lib/input/checkbox/checkbox.component.mjs +4 -4
  24. package/{esm2020 → esm2022}/lib/input/currency-field/currency-field.component.mjs +4 -4
  25. package/esm2022/lib/input/date/date.component.mjs +279 -0
  26. package/esm2022/lib/input/date-range/date-range.component.mjs +477 -0
  27. package/esm2022/lib/input/filter-chip/filter-chip.component.mjs +47 -0
  28. package/{esm2020 → esm2022}/lib/input/filter-dropdown/filter-dropdown.component.mjs +5 -5
  29. package/{esm2020 → esm2022}/lib/input/input-label/input-label.component.mjs +4 -4
  30. package/esm2022/lib/input/mentions-input/mentions-input.component.mjs +745 -0
  31. package/esm2022/lib/input/number-field/number-field.component.mjs +125 -0
  32. package/{esm2020 → esm2022}/lib/input/percentage-field/percentage-field.component.mjs +4 -4
  33. package/esm2022/lib/input/phone-field/phone-field.component.mjs +74 -0
  34. package/{esm2020 → esm2022}/lib/input/radio/radio.component.mjs +4 -4
  35. package/{esm2020 → esm2022}/lib/input/search/search.component.mjs +4 -4
  36. package/esm2022/lib/input/search-select/search-select.component.mjs +189 -0
  37. package/esm2022/lib/input/select/select/select.component.mjs +178 -0
  38. package/{esm2020 → esm2022}/lib/input/select/select-node/select-node.component.mjs +4 -4
  39. package/esm2022/lib/input/select/state.mjs +882 -0
  40. package/{esm2020 → esm2022}/lib/input/simple-select/option-group.pipe.mjs +4 -4
  41. package/esm2022/lib/input/simple-select/simple-select.component.mjs +178 -0
  42. package/esm2022/lib/input/switch-checkbox/switch-checkbox.component.mjs +33 -0
  43. package/esm2022/lib/input/text-field/text-field.component.mjs +115 -0
  44. package/{esm2020 → esm2022}/lib/input/textarea-field/textarea-field.component.mjs +4 -4
  45. package/{esm2020 → esm2022}/lib/input/validation-message/validation-message.component.mjs +4 -4
  46. package/{esm2020 → esm2022}/lib/layout/card/card-actions.component.mjs +4 -4
  47. package/esm2022/lib/layout/card/card-content.component.mjs +64 -0
  48. package/esm2022/lib/layout/card/card-header.component.mjs +201 -0
  49. package/{esm2020 → esm2022}/lib/layout/card/card-link.component.mjs +5 -5
  50. package/{esm2020 → esm2022}/lib/layout/card/card-media.component.mjs +4 -4
  51. package/esm2022/lib/layout/card/card.component.mjs +291 -0
  52. package/{esm2020 → esm2022}/lib/layout/setting-row/setting-row.component.mjs +4 -4
  53. package/esm2022/lib/load/loading/loading.component.mjs +43 -0
  54. package/{esm2020 → esm2022}/lib/load/loading-cover/loading-cover.component.mjs +4 -4
  55. package/esm2022/lib/navigation/editable-heading/editable-heading.component.mjs +243 -0
  56. package/{esm2020 → esm2022}/lib/navigation/link/link.component.mjs +6 -6
  57. package/{esm2020 → esm2022}/lib/navigation/page-header/page-header.component.mjs +4 -4
  58. package/{esm2020 → esm2022}/lib/navigation/simple-tabs/simple-tab/simple-tab.component.mjs +4 -4
  59. package/{esm2020 → esm2022}/lib/navigation/simple-tabs/simple-tabs/simple-tabs.component.mjs +4 -4
  60. package/{esm2020 → esm2022}/lib/navigation/tabs/tab/tab.component.mjs +4 -4
  61. package/{esm2020 → esm2022}/lib/navigation/tabs/tabs/tabs.component.mjs +4 -4
  62. package/{esm2020 → esm2022}/lib/navigation/views/all-views-modal/all-views-modal.component.mjs +4 -4
  63. package/{esm2020 → esm2022}/lib/navigation/views/edit-view/edit-view.component.mjs +9 -9
  64. package/esm2022/lib/navigation/views/permission-picker/permission-picker.component.mjs +151 -0
  65. package/esm2022/lib/navigation/views/state.mjs +456 -0
  66. package/{esm2020 → esm2022}/lib/navigation/views/view-menu/view-menu.component.mjs +5 -5
  67. package/esm2022/lib/navigation/views/views/views.component.mjs +90 -0
  68. package/{esm2020 → esm2022}/lib/notification/badge/badge.component.mjs +4 -4
  69. package/esm2022/lib/notification/banner/banner-action.component.mjs +48 -0
  70. package/esm2022/lib/notification/banner/banner.component.mjs +61 -0
  71. package/esm2022/lib/notification/map-indicator/map-indicator.component.mjs +50 -0
  72. package/esm2022/lib/notification/map-indicator/map-indicators.mjs +15 -0
  73. package/{esm2020 → esm2022}/lib/notification/notification-badge/notification-badge.component.mjs +4 -4
  74. package/esm2022/lib/overlay/callout/callout.component.mjs +130 -0
  75. package/esm2022/lib/overlay/callout/callout.helpers.mjs +113 -0
  76. package/{esm2020 → esm2022}/lib/overlay/callout/help/help.component.mjs +4 -4
  77. package/esm2022/lib/overlay/callout/lock-scroll.directive.mjs +69 -0
  78. package/{esm2020 → esm2022}/lib/overlay/callout/menu/menu-item/menu-item.component.mjs +5 -5
  79. package/{esm2020 → esm2022}/lib/overlay/callout/menu/menu.component.mjs +4 -4
  80. package/esm2022/lib/overlay/callout/tooltip/locked-tooltip.directive.mjs +30 -0
  81. package/{esm2020 → esm2022}/lib/overlay/callout/tooltip/tooltip.component.mjs +4 -4
  82. package/esm2022/lib/overlay/callout/tooltip/tooltip.directive.mjs +138 -0
  83. package/esm2022/lib/overlay/modal/dialog/dialog.component.mjs +47 -0
  84. package/{esm2020 → esm2022}/lib/overlay/modal/dialog-stack.service.mjs +4 -4
  85. package/esm2022/lib/overlay/modal/form-dialog/form-dialog.component.mjs +146 -0
  86. package/esm2022/lib/overlay/modal/modal.component.mjs +31 -0
  87. package/{esm2020 → esm2022}/lib/overlay/modal/side-sheet/side-sheet.component.mjs +4 -4
  88. package/esm2022/lib/overlay/overlay-outlet.component.mjs +98 -0
  89. package/{esm2020 → esm2022}/lib/overlay/overlay.directive.mjs +5 -5
  90. package/{esm2020 → esm2022}/lib/overlay/overlay.service.mjs +5 -5
  91. package/{esm2020 → esm2022}/lib/overlay/toast/toast-action.component.mjs +4 -4
  92. package/esm2022/lib/overlay/toast/toast.component.mjs +41 -0
  93. package/{esm2020 → esm2022}/lib/riv.module.mjs +227 -227
  94. package/esm2022/lib/size/size.directive.mjs +33 -0
  95. package/esm2022/lib/table/simple-table/coordinate-helper.mjs +61 -0
  96. package/esm2022/lib/table/simple-table/simple-table-cell.component.mjs +36 -0
  97. package/esm2022/lib/table/simple-table/simple-table-header-cell.component.mjs +37 -0
  98. package/{esm2020 → esm2022}/lib/table/simple-table/simple-table-row.component.mjs +4 -4
  99. package/esm2022/lib/table/simple-table/simple-table.component.mjs +104 -0
  100. package/esm2022/lib/table/table/clipboard.mjs +182 -0
  101. package/esm2022/lib/table/table/state-helpers/collapse-helpers.mjs +116 -0
  102. package/esm2022/lib/table/table/state-helpers/column-helpers.mjs +383 -0
  103. package/{esm2020 → esm2022}/lib/table/table/state-helpers/display-helpers.mjs +1 -1
  104. package/esm2022/lib/table/table/state-helpers/nesting-helpers.mjs +123 -0
  105. package/esm2022/lib/table/table/state-helpers/order-helpers.mjs +164 -0
  106. package/esm2022/lib/table/table/state-helpers/pagination-helpers.mjs +139 -0
  107. package/esm2022/lib/table/table/state-helpers/result-helpers.mjs +70 -0
  108. package/esm2022/lib/table/table/state-helpers/search-helpers.mjs +72 -0
  109. package/esm2022/lib/table/table/state-helpers/selection-helpers.mjs +180 -0
  110. package/esm2022/lib/table/table/state.mjs +1035 -0
  111. package/esm2022/lib/table/table/table/table.component.mjs +367 -0
  112. package/{esm2020 → esm2022}/lib/table/table/table-collapse-all/table-collapse-all.component.mjs +5 -5
  113. package/esm2022/lib/table/table/table-column-settings/table-column-settings-side-sheet.component.mjs +227 -0
  114. package/esm2022/lib/table/table/table-column-settings/table-column-settings.component.mjs +134 -0
  115. package/esm2022/lib/table/table/table-csv-export/table-csv-export.component.mjs +35 -0
  116. package/{esm2020 → esm2022}/lib/table/table/table-header-resize-handle/table-header-resize-handle.component.mjs +6 -6
  117. package/esm2022/lib/table/table/table-search/table-search.component.mjs +71 -0
  118. package/{esm2020 → esm2022}/lib/table/table/table-search-columns/table-search-columns.component.mjs +4 -4
  119. package/esm2022/lib/visibility/visibility.directive.mjs +34 -0
  120. package/esm2022/lib/visualization/chart/chart-scaling.mjs +380 -0
  121. package/esm2022/lib/visualization/chart/chart.component.mjs +626 -0
  122. package/esm2022/lib/visualization/chart/chart.mjs +3768 -0
  123. package/{esm2020 → esm2022}/lib/visualization/data-table/data-table-cell.component.mjs +5 -5
  124. package/{esm2020 → esm2022}/lib/visualization/data-table/data-table-header-cell.component.mjs +4 -4
  125. package/{esm2020 → esm2022}/lib/visualization/data-table/data-table-row.component.mjs +4 -4
  126. package/{esm2020 → esm2022}/lib/visualization/data-table/data-table.component.mjs +4 -4
  127. package/{esm2020 → esm2022}/lib/visualization/donut/donut.component.mjs +4 -4
  128. package/{esm2020 → esm2022}/lib/visualization/funnel-chart/funnel-chart.component.mjs +5 -5
  129. package/esm2022/lib/visualization/funnel-chart/funnel-chart.helpers.mjs +33 -0
  130. package/{esm2020 → esm2022}/lib/visualization/highlight/highlight.component.mjs +4 -4
  131. package/esm2022/lib/visualization/highlight/highlight.helpers.mjs +20 -0
  132. package/esm2022/lib/visualization/intervals.mjs +63 -0
  133. package/{esm2020 → esm2022}/lib/visualization/issue/issue.component.mjs +4 -4
  134. package/{esm2020 → esm2022}/lib/visualization/legend-item/legend-item.component.mjs +4 -4
  135. package/{esm2020 → esm2022}/lib/visualization/metric/metric.component.mjs +4 -4
  136. package/{esm2020 → esm2022}/lib/visualization/mini-pie/mini-pie.component.mjs +4 -4
  137. package/{esm2020 → esm2022}/lib/visualization/progress/progress.component.mjs +5 -5
  138. package/esm2022/lib/visualization/stacked-column/stacked-column.component.mjs +377 -0
  139. package/esm2022/lib/visualization/stacked-column/stacked-column.helpers.mjs +18 -0
  140. package/esm2022/lib/visualization/stacked-row/stacked-row.component.mjs +270 -0
  141. package/esm2022/lib/visualization/stacked-row/stacked-row.helpers.mjs +74 -0
  142. package/esm2022/lib/visualization/time-series/time-series.component.mjs +374 -0
  143. package/esm2022/lib/visualization/time-series/time-series.helpers.mjs +15 -0
  144. package/esm2022/lib/visualization/trend/trend.component.mjs +51 -0
  145. package/{esm2020 → esm2022}/lib/visualization/zero-state/zero-state.component.mjs +4 -4
  146. package/{fesm2020 → fesm2022}/rivet-health-design-system.mjs +670 -670
  147. package/{fesm2020 → fesm2022}/rivet-health-design-system.mjs.map +1 -1
  148. package/lib/format/svg-text-truncate/svg-text-truncate.directive.d.ts +1 -1
  149. package/lib/format/truncate/truncate.component.d.ts +1 -1
  150. package/lib/icon/icon.component.d.ts +1 -1
  151. package/lib/input/auto-focus/auto-focus.directive.d.ts +1 -1
  152. package/lib/input/button/button.component.d.ts +1 -1
  153. package/lib/input/calendar/calendar.component.d.ts +1 -1
  154. package/lib/input/checkbox/checkbox.component.d.ts +1 -1
  155. package/lib/input/currency-field/currency-field.component.d.ts +1 -1
  156. package/lib/input/date/date.component.d.ts +1 -1
  157. package/lib/input/date-range/date-range.component.d.ts +1 -1
  158. package/lib/input/filter-chip/filter-chip.component.d.ts +1 -1
  159. package/lib/input/filter-dropdown/filter-dropdown.component.d.ts +1 -1
  160. package/lib/input/input-label/input-label.component.d.ts +1 -1
  161. package/lib/input/mentions-input/mentions-input.component.d.ts +1 -1
  162. package/lib/input/number-field/number-field.component.d.ts +1 -1
  163. package/lib/input/percentage-field/percentage-field.component.d.ts +1 -1
  164. package/lib/input/phone-field/phone-field.component.d.ts +1 -1
  165. package/lib/input/radio/radio.component.d.ts +1 -1
  166. package/lib/input/search/search.component.d.ts +1 -1
  167. package/lib/input/search-select/search-select.component.d.ts +1 -1
  168. package/lib/input/select/select/select.component.d.ts +1 -1
  169. package/lib/input/select/select-node/select-node.component.d.ts +1 -1
  170. package/lib/input/simple-select/simple-select.component.d.ts +1 -1
  171. package/lib/input/switch-checkbox/switch-checkbox.component.d.ts +1 -1
  172. package/lib/input/text-field/text-field.component.d.ts +1 -1
  173. package/lib/input/textarea-field/textarea-field.component.d.ts +1 -1
  174. package/lib/input/validation-message/validation-message.component.d.ts +1 -1
  175. package/lib/layout/card/card-actions.component.d.ts +1 -1
  176. package/lib/layout/card/card-content.component.d.ts +1 -1
  177. package/lib/layout/card/card-header.component.d.ts +1 -1
  178. package/lib/layout/card/card-link.component.d.ts +1 -1
  179. package/lib/layout/card/card-media.component.d.ts +1 -1
  180. package/lib/layout/card/card.component.d.ts +1 -1
  181. package/lib/layout/setting-row/setting-row.component.d.ts +1 -1
  182. package/lib/load/loading/loading.component.d.ts +1 -1
  183. package/lib/load/loading-cover/loading-cover.component.d.ts +1 -1
  184. package/lib/navigation/editable-heading/editable-heading.component.d.ts +1 -1
  185. package/lib/navigation/link/link.component.d.ts +1 -1
  186. package/lib/navigation/page-header/page-header.component.d.ts +1 -1
  187. package/lib/navigation/simple-tabs/simple-tab/simple-tab.component.d.ts +1 -1
  188. package/lib/navigation/tabs/tab/tab.component.d.ts +1 -1
  189. package/lib/navigation/views/all-views-modal/all-views-modal.component.d.ts +1 -1
  190. package/lib/navigation/views/edit-view/edit-view.component.d.ts +1 -1
  191. package/lib/navigation/views/permission-picker/permission-picker.component.d.ts +3 -3
  192. package/lib/navigation/views/view-menu/view-menu.component.d.ts +1 -1
  193. package/lib/navigation/views/views/views.component.d.ts +1 -1
  194. package/lib/notification/badge/badge.component.d.ts +1 -1
  195. package/lib/notification/banner/banner-action.component.d.ts +1 -1
  196. package/lib/notification/banner/banner.component.d.ts +1 -1
  197. package/lib/notification/map-indicator/map-indicator.component.d.ts +1 -1
  198. package/lib/notification/notification-badge/notification-badge.component.d.ts +1 -1
  199. package/lib/overlay/callout/callout.component.d.ts +1 -1
  200. package/lib/overlay/callout/help/help.component.d.ts +1 -1
  201. package/lib/overlay/callout/lock-scroll.directive.d.ts +1 -1
  202. package/lib/overlay/callout/menu/menu-item/menu-item.component.d.ts +1 -1
  203. package/lib/overlay/callout/menu/menu.component.d.ts +1 -1
  204. package/lib/overlay/callout/tooltip/locked-tooltip.directive.d.ts +1 -1
  205. package/lib/overlay/callout/tooltip/tooltip.component.d.ts +1 -1
  206. package/lib/overlay/callout/tooltip/tooltip.directive.d.ts +1 -1
  207. package/lib/overlay/modal/dialog/dialog.component.d.ts +1 -1
  208. package/lib/overlay/modal/form-dialog/form-dialog.component.d.ts +1 -1
  209. package/lib/overlay/modal/modal.component.d.ts +1 -1
  210. package/lib/overlay/modal/side-sheet/side-sheet.component.d.ts +1 -1
  211. package/lib/overlay/toast/toast.component.d.ts +1 -1
  212. package/lib/table/simple-table/simple-table-header-cell.component.d.ts +1 -1
  213. package/lib/table/simple-table/simple-table-row.component.d.ts +1 -1
  214. package/lib/table/table/table/table.component.d.ts +1 -1
  215. package/lib/table/table/table-collapse-all/table-collapse-all.component.d.ts +1 -1
  216. package/lib/table/table/table-column-settings/table-column-settings-side-sheet.component.d.ts +1 -1
  217. package/lib/table/table/table-column-settings/table-column-settings.component.d.ts +1 -1
  218. package/lib/table/table/table-csv-export/table-csv-export.component.d.ts +1 -1
  219. package/lib/table/table/table-search/table-search.component.d.ts +1 -1
  220. package/lib/table/table/table-search-columns/table-search-columns.component.d.ts +1 -1
  221. package/lib/visualization/chart/chart.component.d.ts +1 -1
  222. package/lib/visualization/data-table/data-table-row.component.d.ts +1 -1
  223. package/lib/visualization/donut/donut.component.d.ts +1 -1
  224. package/lib/visualization/funnel-chart/funnel-chart.component.d.ts +1 -1
  225. package/lib/visualization/highlight/highlight.component.d.ts +1 -1
  226. package/lib/visualization/issue/issue.component.d.ts +1 -1
  227. package/lib/visualization/legend-item/legend-item.component.d.ts +1 -1
  228. package/lib/visualization/metric/metric.component.d.ts +1 -1
  229. package/lib/visualization/mini-pie/mini-pie.component.d.ts +1 -1
  230. package/lib/visualization/progress/progress.component.d.ts +1 -1
  231. package/lib/visualization/stacked-column/stacked-column.component.d.ts +3 -3
  232. package/lib/visualization/stacked-row/stacked-row.component.d.ts +1 -1
  233. package/lib/visualization/time-series/time-series.component.d.ts +3 -3
  234. package/lib/visualization/trend/trend.component.d.ts +1 -1
  235. package/lib/visualization/zero-state/zero-state.component.d.ts +1 -1
  236. package/package.json +5 -11
  237. package/esm2020/lib/download/download.service.mjs +0 -47
  238. package/esm2020/lib/format/pipes/sentence-case.pipe.mjs +0 -61
  239. package/esm2020/lib/format/pipes/small-currency.pipe.mjs +0 -24
  240. package/esm2020/lib/format/pipes/small-number.pipe.mjs +0 -29
  241. package/esm2020/lib/format/svg-text-truncate/svg-text-truncate.directive.mjs +0 -62
  242. package/esm2020/lib/format/truncate/truncate.component.mjs +0 -51
  243. package/esm2020/lib/icon/dom-cache.mjs +0 -32
  244. package/esm2020/lib/icon/icon.component.mjs +0 -86
  245. package/esm2020/lib/input/auto-focus/auto-focus.directive.mjs +0 -48
  246. package/esm2020/lib/input/button/button.component.mjs +0 -139
  247. package/esm2020/lib/input/button-group/button-group.component.mjs +0 -39
  248. package/esm2020/lib/input/date/date.component.mjs +0 -279
  249. package/esm2020/lib/input/date-range/date-range.component.mjs +0 -477
  250. package/esm2020/lib/input/filter-chip/filter-chip.component.mjs +0 -47
  251. package/esm2020/lib/input/mentions-input/mentions-input.component.mjs +0 -745
  252. package/esm2020/lib/input/number-field/number-field.component.mjs +0 -125
  253. package/esm2020/lib/input/phone-field/phone-field.component.mjs +0 -74
  254. package/esm2020/lib/input/search-select/search-select.component.mjs +0 -189
  255. package/esm2020/lib/input/select/select/select.component.mjs +0 -178
  256. package/esm2020/lib/input/select/state.mjs +0 -882
  257. package/esm2020/lib/input/simple-select/simple-select.component.mjs +0 -178
  258. package/esm2020/lib/input/switch-checkbox/switch-checkbox.component.mjs +0 -33
  259. package/esm2020/lib/input/text-field/text-field.component.mjs +0 -115
  260. package/esm2020/lib/layout/card/card-content.component.mjs +0 -64
  261. package/esm2020/lib/layout/card/card-header.component.mjs +0 -201
  262. package/esm2020/lib/layout/card/card.component.mjs +0 -291
  263. package/esm2020/lib/load/loading/loading.component.mjs +0 -43
  264. package/esm2020/lib/navigation/editable-heading/editable-heading.component.mjs +0 -243
  265. package/esm2020/lib/navigation/views/permission-picker/permission-picker.component.mjs +0 -151
  266. package/esm2020/lib/navigation/views/state.mjs +0 -456
  267. package/esm2020/lib/navigation/views/views/views.component.mjs +0 -90
  268. package/esm2020/lib/notification/banner/banner-action.component.mjs +0 -48
  269. package/esm2020/lib/notification/banner/banner.component.mjs +0 -61
  270. package/esm2020/lib/notification/map-indicator/map-indicator.component.mjs +0 -50
  271. package/esm2020/lib/notification/map-indicator/map-indicators.mjs +0 -15
  272. package/esm2020/lib/overlay/callout/callout.component.mjs +0 -130
  273. package/esm2020/lib/overlay/callout/callout.helpers.mjs +0 -113
  274. package/esm2020/lib/overlay/callout/lock-scroll.directive.mjs +0 -69
  275. package/esm2020/lib/overlay/callout/tooltip/locked-tooltip.directive.mjs +0 -30
  276. package/esm2020/lib/overlay/callout/tooltip/tooltip.directive.mjs +0 -138
  277. package/esm2020/lib/overlay/modal/dialog/dialog.component.mjs +0 -47
  278. package/esm2020/lib/overlay/modal/form-dialog/form-dialog.component.mjs +0 -146
  279. package/esm2020/lib/overlay/modal/modal.component.mjs +0 -31
  280. package/esm2020/lib/overlay/overlay-outlet.component.mjs +0 -98
  281. package/esm2020/lib/overlay/toast/toast.component.mjs +0 -41
  282. package/esm2020/lib/size/size.directive.mjs +0 -33
  283. package/esm2020/lib/table/simple-table/coordinate-helper.mjs +0 -61
  284. package/esm2020/lib/table/simple-table/simple-table-cell.component.mjs +0 -36
  285. package/esm2020/lib/table/simple-table/simple-table-header-cell.component.mjs +0 -37
  286. package/esm2020/lib/table/simple-table/simple-table.component.mjs +0 -104
  287. package/esm2020/lib/table/table/clipboard.mjs +0 -182
  288. package/esm2020/lib/table/table/state-helpers/collapse-helpers.mjs +0 -116
  289. package/esm2020/lib/table/table/state-helpers/column-helpers.mjs +0 -383
  290. package/esm2020/lib/table/table/state-helpers/nesting-helpers.mjs +0 -123
  291. package/esm2020/lib/table/table/state-helpers/order-helpers.mjs +0 -164
  292. package/esm2020/lib/table/table/state-helpers/pagination-helpers.mjs +0 -139
  293. package/esm2020/lib/table/table/state-helpers/result-helpers.mjs +0 -70
  294. package/esm2020/lib/table/table/state-helpers/search-helpers.mjs +0 -72
  295. package/esm2020/lib/table/table/state-helpers/selection-helpers.mjs +0 -180
  296. package/esm2020/lib/table/table/state.mjs +0 -1035
  297. package/esm2020/lib/table/table/table/table.component.mjs +0 -367
  298. package/esm2020/lib/table/table/table-column-settings/table-column-settings-side-sheet.component.mjs +0 -227
  299. package/esm2020/lib/table/table/table-column-settings/table-column-settings.component.mjs +0 -134
  300. package/esm2020/lib/table/table/table-csv-export/table-csv-export.component.mjs +0 -35
  301. package/esm2020/lib/table/table/table-search/table-search.component.mjs +0 -71
  302. package/esm2020/lib/visibility/visibility.directive.mjs +0 -34
  303. package/esm2020/lib/visualization/chart/chart-scaling.mjs +0 -380
  304. package/esm2020/lib/visualization/chart/chart.component.mjs +0 -626
  305. package/esm2020/lib/visualization/chart/chart.mjs +0 -3768
  306. package/esm2020/lib/visualization/funnel-chart/funnel-chart.helpers.mjs +0 -33
  307. package/esm2020/lib/visualization/highlight/highlight.helpers.mjs +0 -20
  308. package/esm2020/lib/visualization/intervals.mjs +0 -63
  309. package/esm2020/lib/visualization/stacked-column/stacked-column.component.mjs +0 -377
  310. package/esm2020/lib/visualization/stacked-column/stacked-column.helpers.mjs +0 -18
  311. package/esm2020/lib/visualization/stacked-row/stacked-row.component.mjs +0 -270
  312. package/esm2020/lib/visualization/stacked-row/stacked-row.helpers.mjs +0 -74
  313. package/esm2020/lib/visualization/time-series/time-series.component.mjs +0 -374
  314. package/esm2020/lib/visualization/time-series/time-series.helpers.mjs +0 -15
  315. package/esm2020/lib/visualization/trend/trend.component.mjs +0 -51
  316. package/fesm2015/rivet-health-design-system.mjs +0 -18370
  317. package/fesm2015/rivet-health-design-system.mjs.map +0 -1
  318. /package/{esm2020 → esm2022}/lib/overlay/callout/select-callout-defaults.mjs +0 -0
  319. /package/{esm2020 → esm2022}/lib/util/local-storage.mjs +0 -0
  320. /package/{esm2020 → esm2022}/public-api.mjs +0 -0
  321. /package/{esm2020 → esm2022}/rivet-health-design-system.mjs +0 -0
@@ -0,0 +1,123 @@
1
+ import { sumBy } from 'lodash';
2
+ import { TableCollapseHelpers } from './collapse-helpers';
3
+ export var TableNestingHelpers;
4
+ (function (TableNestingHelpers) {
5
+ function convertToFullNestedRow(currentRow, coreState, rowLinkFunction) {
6
+ const currentSubRows = currentRow.subRows
7
+ ? currentRow.subRows.map(subrow => convertToFullNestedRow(subrow, coreState, rowLinkFunction))
8
+ : [];
9
+ const currentRowLink = rowLinkFunction
10
+ ? rowLinkFunction(currentRow.data)
11
+ : null;
12
+ // We don't currently support selecting nested rows
13
+ const currentRowIsSelected = false;
14
+ const currentRowIsCollapsed = TableCollapseHelpers.isRowCollapsed(coreState, currentRow.data.id);
15
+ return {
16
+ id: currentRow.data.id,
17
+ data: currentRow.data,
18
+ rowLink: currentRowLink,
19
+ selected: currentRowIsSelected,
20
+ subRows: currentSubRows,
21
+ isCollapsed: currentRowIsCollapsed,
22
+ };
23
+ }
24
+ TableNestingHelpers.convertToFullNestedRow = convertToFullNestedRow;
25
+ function convertToFullNestedHeaderRow(currentRow, coreState, rowLinkFunction) {
26
+ const currentSubRows = currentRow.subRows
27
+ ? currentRow.subRows.map(subrow => convertToFullNestedRow(subrow, coreState, rowLinkFunction))
28
+ : [];
29
+ const currentHeaderIsCollapsed = TableCollapseHelpers.isHeaderCollapsed(coreState, currentRow.headerText);
30
+ return {
31
+ id: currentRow.headerText ?? '',
32
+ subRows: currentSubRows,
33
+ headerText: currentRow.headerText,
34
+ isCollapsed: currentHeaderIsCollapsed,
35
+ };
36
+ }
37
+ TableNestingHelpers.convertToFullNestedHeaderRow = convertToFullNestedHeaderRow;
38
+ function findNestedRowsWithHeadersToKeep(allRows, filteredRows) {
39
+ const filteredIds = new Set(filteredRows.map(row => row.id));
40
+ function recursiveFindRowsToKeep(currentNestedRow) {
41
+ // Keep all subrows if a parent row matches the filter
42
+ if (filteredIds.has(currentNestedRow.data.id)) {
43
+ return currentNestedRow;
44
+ }
45
+ if (!currentNestedRow.subRows) {
46
+ return null;
47
+ }
48
+ const subRowsToKeep = [];
49
+ for (const subRow of currentNestedRow.subRows) {
50
+ const rowToKeep = recursiveFindRowsToKeep(subRow);
51
+ if (rowToKeep) {
52
+ subRowsToKeep.push(rowToKeep);
53
+ }
54
+ }
55
+ if (subRowsToKeep.length == 0) {
56
+ return null;
57
+ }
58
+ return {
59
+ ...currentNestedRow,
60
+ subRows: subRowsToKeep,
61
+ };
62
+ }
63
+ const keptNestedRows = [];
64
+ for (const outerLevelHeader of allRows) {
65
+ if (!outerLevelHeader.subRows) {
66
+ continue;
67
+ }
68
+ const keptSubRows = [];
69
+ for (const nestedRow of outerLevelHeader.subRows) {
70
+ const rowToKeep = recursiveFindRowsToKeep(nestedRow);
71
+ if (rowToKeep) {
72
+ keptSubRows.push(rowToKeep);
73
+ }
74
+ }
75
+ if (keptSubRows.length == 0) {
76
+ continue;
77
+ }
78
+ keptNestedRows.push({
79
+ ...outerLevelHeader,
80
+ subRows: keptSubRows,
81
+ });
82
+ }
83
+ return keptNestedRows;
84
+ }
85
+ TableNestingHelpers.findNestedRowsWithHeadersToKeep = findNestedRowsWithHeadersToKeep;
86
+ // Count how many rows we have at the bottom level of nesting.
87
+ function countBottomLevelNestedRows(allNestedRows) {
88
+ let bottomLevelRowCount = 0;
89
+ function recursiveCountRows(currentNestedRow) {
90
+ if (!currentNestedRow.subRows || currentNestedRow.subRows.length == 0) {
91
+ bottomLevelRowCount++;
92
+ }
93
+ else {
94
+ for (const subRow of currentNestedRow.subRows) {
95
+ recursiveCountRows(subRow);
96
+ }
97
+ }
98
+ }
99
+ for (const nestedRow of allNestedRows) {
100
+ recursiveCountRows(nestedRow);
101
+ }
102
+ return bottomLevelRowCount;
103
+ }
104
+ TableNestingHelpers.countBottomLevelNestedRows = countBottomLevelNestedRows;
105
+ // Count the rows pagination pages through.
106
+ function countNestedRows(allHeaders, paginateBy) {
107
+ return paginateBy === 'topRows'
108
+ ? sumBy(allHeaders, header => header.subRows.length)
109
+ : countBottomLevelNestedHeaderRows(allHeaders);
110
+ }
111
+ TableNestingHelpers.countNestedRows = countNestedRows;
112
+ // Count how many rows we have at the bottom level of nesting.
113
+ function countBottomLevelNestedHeaderRows(allHeaders) {
114
+ let bottomLevelRowCount = 0;
115
+ for (const headerRow of allHeaders) {
116
+ const currentHeaderBottomRowCount = countBottomLevelNestedRows(headerRow.subRows);
117
+ bottomLevelRowCount += currentHeaderBottomRowCount;
118
+ }
119
+ return bottomLevelRowCount;
120
+ }
121
+ TableNestingHelpers.countBottomLevelNestedHeaderRows = countBottomLevelNestedHeaderRows;
122
+ })(TableNestingHelpers || (TableNestingHelpers = {}));
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmVzdGluZy1oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvdGFibGUvdGFibGUvc3RhdGUtaGVscGVycy9uZXN0aW5nLWhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUUvQixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUUxRCxNQUFNLEtBQVcsbUJBQW1CLENBc0xuQztBQXRMRCxXQUFpQixtQkFBbUI7SUFDbEMsU0FBZ0Isc0JBQXNCLENBTXBDLFVBQWlDLEVBQ2pDLFNBQXlDLEVBQ3pDLGVBQXlEO1FBRXpELE1BQU0sY0FBYyxHQUFnQyxVQUFVLENBQUMsT0FBTztZQUNwRSxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FDOUIsc0JBQXNCLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxlQUFlLENBQUMsQ0FDM0Q7WUFDSCxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRVAsTUFBTSxjQUFjLEdBQTRCLGVBQWU7WUFDN0QsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO1lBQ2xDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFFVCxtREFBbUQ7UUFDbkQsTUFBTSxvQkFBb0IsR0FBWSxLQUFLLENBQUM7UUFFNUMsTUFBTSxxQkFBcUIsR0FBWSxvQkFBb0IsQ0FBQyxjQUFjLENBQ3hFLFNBQVMsRUFDVCxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDbkIsQ0FBQztRQUVGLE9BQU87WUFDTCxFQUFFLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3RCLElBQUksRUFBRSxVQUFVLENBQUMsSUFBSTtZQUNyQixPQUFPLEVBQUUsY0FBYztZQUN2QixRQUFRLEVBQUUs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QUFJLG1CQUFtQixHQUFXLENBQUMsQ0FBQztRQUVwQyxLQUFLLE1BQU0sU0FBUyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ25DLE1BQU0sMkJBQTJCLEdBQVcsMEJBQTBCLENBQ3BFLFNBQVMsQ0FBQyxPQUFPLENBQ2xCLENBQUM7WUFDRixtQkFBbUIsSUFBSSwyQkFBMkIsQ0FBQztRQUNyRCxDQUFDO1FBRUQsT0FBTyxtQkFBbUIsQ0FBQztJQUM3QixDQUFDO0lBYmUsb0RBQWdDLG1DQWEvQyxDQUFBO0FBQ0gsQ0FBQyxFQXRMZ0IsbUJBQW1CLEtBQW5CLG1CQUFtQixRQXNMbkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzdW1CeSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBSaXZUYWJsZSB9IGZyb20gJy4uL3N0YXRlJztcbmltcG9ydCB7IFRhYmxlQ29sbGFwc2VIZWxwZXJzIH0gZnJvbSAnLi9jb2xsYXBzZS1oZWxwZXJzJztcblxuZXhwb3J0IG5hbWVzcGFjZSBUYWJsZU5lc3RpbmdIZWxwZXJzIHtcbiAgZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRUb0Z1bGxOZXN0ZWRSb3c8XG4gICAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgICBDIGV4dGVuZHMgUml2VGFibGUuQ29sdW1uLFxuICAgIEYgZXh0ZW5kcyBSaXZUYWJsZS5GaWx0ZXJzLFxuICAgIEcgZXh0ZW5kcyBSaXZUYWJsZS5Hcm91cCA9IHsga2V5OiAnJyB9LFxuICA+KFxuICAgIGN1cnJlbnRSb3c6IFJpdlRhYmxlLk5lc3RlZFJvdzxSPixcbiAgICBjb3JlU3RhdGU6IFJpdlRhYmxlLkNvcmVTdGF0ZTxSLCBDLCBGLCBHPixcbiAgICByb3dMaW5rRnVuY3Rpb24/OiAocm93OiBSLCBncm91cD86IEcpID0+IFJpdlRhYmxlLlJvd0xpbmssXG4gICk6IFJpdlRhYmxlLkZ1bGxOZXN0ZWRSb3c8Uj4ge1xuICAgIGNvbnN0IGN1cnJlbnRTdWJSb3dzOiBSaXZUYWJsZS5GdWxsTmVzdGVkUm93PFI+W10gPSBjdXJyZW50Um93LnN1YlJvd3NcbiAgICAgID8gY3VycmVudFJvdy5zdWJSb3dzLm1hcChzdWJyb3cgPT5cbiAgICAgICAgICBjb252ZXJ0VG9GdWxsTmVzdGVkUm93KHN1YnJvdywgY29yZVN0YXRlLCByb3dMaW5rRnVuY3Rpb24pLFxuICAgICAgICApXG4gICAgICA6IFtdO1xuXG4gICAgY29uc3QgY3VycmVudFJvd0xpbms6IFJpdlRhYmxlLlJvd0xpbmsgfCBudWxsID0gcm93TGlua0Z1bmN0aW9uXG4gICAgICA/IHJvd0xpbmtGdW5jdGlvbihjdXJyZW50Um93LmRhdGEpXG4gICAgICA6IG51bGw7XG5cbiAgICAvLyBXZSBkb24ndCBjdXJyZW50bHkgc3VwcG9ydCBzZWxlY3RpbmcgbmVzdGVkIHJvd3NcbiAgICBjb25zdCBjdXJyZW50Um93SXNTZWxlY3RlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgY29uc3QgY3VycmVudFJvd0lzQ29sbGFwc2VkOiBib29sZWFuID0gVGFibGVDb2xsYXBzZUhlbHBlcnMuaXNSb3dDb2xsYXBzZWQoXG4gICAgICBjb3JlU3RhdGUsXG4gICAgICBjdXJyZW50Um93LmRhdGEuaWQsXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICBpZDogY3VycmVudFJvdy5kYXRhLmlkLFxuICAgICAgZGF0YTogY3VycmVudFJvdy5kYXRhLFxuICAgICAgcm93TGluazogY3VycmVudFJvd0xpbmssXG4gICAgICBzZWxlY3RlZDogY3VycmVudFJvd0lzU2VsZWN0ZWQsXG4gICAgICBzdWJSb3dzOiBjdXJyZW50U3ViUm93cyxcbiAgICAgIGlzQ29sbGFwc2VkOiBjdXJyZW50Um93SXNDb2xsYXBzZWQsXG4gICAgfTtcbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0VG9GdWxsTmVzdGVkSGVhZGVyUm93PFxuICAgIFIgZXh0ZW5kcyBSaXZUYWJsZS5Sb3csXG4gICAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgICBGIGV4dGVuZHMgUml2VGFibGUuRmlsdGVycyxcbiAgICBHIGV4dGVuZHMgUml2VGFibGUuR3JvdXAgPSB7IGtleTogJycgfSxcbiAgPihcbiAgICBjdXJyZW50Um93OiBSaXZUYWJsZS5OZXN0ZWRIZWFkZXJSb3c8Uj4sXG4gICAgY29yZVN0YXRlOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRiwgRz4sXG4gICAgcm93TGlua0Z1bmN0aW9uPzogKHJvdzogUiwgZ3JvdXA/OiBHKSA9PiBSaXZUYWJsZS5Sb3dMaW5rLFxuICApOiBSaXZUYWJsZS5GdWxsTmVzdGVkSGVhZGVyUm93PFI+IHtcbiAgICBjb25zdCBjdXJyZW50U3ViUm93czogUml2VGFibGUuRnVsbE5lc3RlZFJvdzxSPltdID0gY3VycmVudFJvdy5zdWJSb3dzXG4gICAgICA/IGN1cnJlbnRSb3cuc3ViUm93cy5tYXAoc3Vicm93ID0+XG4gICAgICAgICAgY29udmVydFRvRnVsbE5lc3RlZFJvdyhzdWJyb3csIGNvcmVTdGF0ZSwgcm93TGlua0Z1bmN0aW9uKSxcbiAgICAgICAgKVxuICAgICAgOiBbXTtcblxuICAgIGNvbnN0IGN1cnJlbnRIZWFkZXJJc0NvbGxhcHNlZDogYm9vbGVhbiA9XG4gICAgICBUYWJsZUNvbGxhcHNlSGVscGVycy5pc0hlYWRlckNvbGxhcHNlZChjb3JlU3RhdGUsIGN1cnJlbnRSb3cuaGVhZGVyVGV4dCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IGN1cnJlbnRSb3cuaGVhZGVyVGV4dCA/PyAnJyxcbiAgICAgIHN1YlJvd3M6IGN1cnJlbnRTdWJSb3dzLFxuICAgICAgaGVhZGVyVGV4dDogY3VycmVudFJvdy5oZWFkZXJUZXh0LFxuICAgICAgaXNDb2xsYXBzZWQ6IGN1cnJlbnRIZWFkZXJJc0NvbGxhcHNlZCxcbiAgICB9O1xuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGZpbmROZXN0ZWRSb3dzV2l0aEhlYWRlcnNUb0tlZXA8UiBleHRlbmRzIFJpdlRhYmxlLlJvdz4oXG4gICAgYWxsUm93czogUml2VGFibGUuTmVzdGVkSGVhZGVyUm93PFI+W10sXG4gICAgZmlsdGVyZWRSb3dzOiBSW10sXG4gICk6IFJpdlRhYmxlLk5lc3RlZEhlYWRlclJvdzxSPltdIHtcbiAgICBjb25zdCBmaWx0ZXJlZElkczogU2V0PHN0cmluZyB8IG51bWJlcj4gPSBuZXcgU2V0KFxuICAgICAgZmlsdGVyZWRSb3dzLm1hcChyb3cgPT4gcm93LmlkKSxcbiAgICApO1xuXG4gICAgZnVuY3Rpb24gcmVjdXJzaXZlRmluZFJvd3NUb0tlZXAoXG4gICAgICBjdXJyZW50TmVzdGVkUm93OiBSaXZUYWJsZS5OZXN0ZWRSb3c8Uj4sXG4gICAgKTogUml2VGFibGUuTmVzdGVkUm93PFI+IHwgbnVsbCB7XG4gICAgICAvLyBLZWVwIGFsbCBzdWJyb3dzIGlmIGEgcGFyZW50IHJvdyBtYXRjaGVzIHRoZSBmaWx0ZXJcbiAgICAgIGlmIChmaWx0ZXJlZElkcy5oYXMoY3VycmVudE5lc3RlZFJvdy5kYXRhLmlkKSkge1xuICAgICAgICByZXR1cm4gY3VycmVudE5lc3RlZFJvdztcbiAgICAgIH1cblxuICAgICAgaWYgKCFjdXJyZW50TmVzdGVkUm93LnN1YlJvd3MpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHN1YlJvd3NUb0tlZXA6IFJpdlRhYmxlLk5lc3RlZFJvdzxSPltdID0gW107XG4gICAgICBmb3IgKGNvbnN0IHN1YlJvdyBvZiBjdXJyZW50TmVzdGVkUm93LnN1YlJvd3MpIHtcbiAgICAgICAgY29uc3Qgcm93VG9LZWVwOiBSaXZUYWJsZS5OZXN0ZWRSb3c8Uj4gfCBudWxsID1cbiAgICAgICAgICByZWN1cnNpdmVGaW5kUm93c1RvS2VlcChzdWJSb3cpO1xuICAgICAgICBpZiAocm93VG9LZWVwKSB7XG4gICAgICAgICAgc3ViUm93c1RvS2VlcC5wdXNoKHJvd1RvS2VlcCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHN1YlJvd3NUb0tlZXAubGVuZ3RoID09IDApIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmN1cnJlbnROZXN0ZWRSb3csXG4gICAgICAgIHN1YlJvd3M6IHN1YlJvd3NUb0tlZXAsXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IGtlcHROZXN0ZWRSb3dzOiBSaXZUYWJsZS5OZXN0ZWRIZWFkZXJSb3c8Uj5bXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBvdXRlckxldmVsSGVhZGVyIG9mIGFsbFJvd3MpIHtcbiAgICAgIGlmICghb3V0ZXJMZXZlbEhlYWRlci5zdWJSb3dzKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBrZXB0U3ViUm93czogUml2VGFibGUuTmVzdGVkUm93PFI+W10gPSBbXTtcbiAgICAgIGZvciAoY29uc3QgbmVzdGVkUm93IG9mIG91dGVyTGV2ZWxIZWFkZXIuc3ViUm93cykge1xuICAgICAgICBjb25zdCByb3dUb0tlZXA6IFJpdlRhYmxlLk5lc3RlZFJvdzxSPiB8IG51bGwgPVxuICAgICAgICAgIHJlY3Vyc2l2ZUZpbmRSb3dzVG9LZWVwKG5lc3RlZFJvdyk7XG4gICAgICAgIGlmIChyb3dUb0tlZXApIHtcbiAgICAgICAgICBrZXB0U3ViUm93cy5wdXNoKHJvd1RvS2VlcCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGtlcHRTdWJSb3dzLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBrZXB0TmVzdGVkUm93cy5wdXNoKHtcbiAgICAgICAgLi4ub3V0ZXJMZXZlbEhlYWRlcixcbiAgICAgICAgc3ViUm93czoga2VwdFN1YlJvd3MsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4ga2VwdE5lc3RlZFJvd3M7XG4gIH1cblxuICAvLyBDb3VudCBob3cgbWFueSByb3dzIHdlIGhhdmUgYXQgdGhlIGJvdHRvbSBsZXZlbCBvZiBuZXN0aW5nLlxuICBleHBvcnQgZnVuY3Rpb24gY291bnRCb3R0b21MZXZlbE5lc3RlZFJvd3M8UiBleHRlbmRzIFJpdlRhYmxlLlJvdz4oXG4gICAgYWxsTmVzdGVkUm93czogUml2VGFibGUuTmVzdGVkUm93PFI+W10sXG4gICk6IG51bWJlciB7XG4gICAgbGV0IGJvdHRvbUxldmVsUm93Q291bnQ6IG51bWJlciA9IDA7XG5cbiAgICBmdW5jdGlvbiByZWN1cnNpdmVDb3VudFJvd3MoY3VycmVudE5lc3RlZFJvdzogUml2VGFibGUuTmVzdGVkUm93PFI+KSB7XG4gICAgICBpZiAoIWN1cnJlbnROZXN0ZWRSb3cuc3ViUm93cyB8fCBjdXJyZW50TmVzdGVkUm93LnN1YlJvd3MubGVuZ3RoID09IDApIHtcbiAgICAgICAgYm90dG9tTGV2ZWxSb3dDb3VudCsrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm9yIChjb25zdCBzdWJSb3cgb2YgY3VycmVudE5lc3RlZFJvdy5zdWJSb3dzKSB7XG4gICAgICAgICAgcmVjdXJzaXZlQ291bnRSb3dzKHN1YlJvdyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IG5lc3RlZFJvdyBvZiBhbGxOZXN0ZWRSb3dzKSB7XG4gICAgICByZWN1cnNpdmVDb3VudFJvd3MobmVzdGVkUm93KTtcbiAgICB9XG5cbiAgICByZXR1cm4gYm90dG9tTGV2ZWxSb3dDb3VudDtcbiAgfVxuXG4gIC8vIENvdW50IHRoZSByb3dzIHBhZ2luYXRpb24gcGFnZXMgdGhyb3VnaC5cbiAgZXhwb3J0IGZ1bmN0aW9uIGNvdW50TmVzdGVkUm93czxSIGV4dGVuZHMgUml2VGFibGUuUm93PihcbiAgICBhbGxIZWFkZXJzOiBSaXZUYWJsZS5OZXN0ZWRIZWFkZXJSb3c8Uj5bXSxcbiAgICBwYWdpbmF0ZUJ5OiBSaXZUYWJsZS5OZXN0ZWRQYWdpbmF0ZUJ5LFxuICApOiBudW1iZXIge1xuICAgIHJldHVybiBwYWdpbmF0ZUJ5ID09PSAndG9wUm93cydcbiAgICAgID8gc3VtQnkoYWxsSGVhZGVycywgaGVhZGVyID0+IGhlYWRlci5zdWJSb3dzLmxlbmd0aClcbiAgICAgIDogY291bnRCb3R0b21MZXZlbE5lc3RlZEhlYWRlclJvd3MoYWxsSGVhZGVycyk7XG4gIH1cblxuICAvLyBDb3VudCBob3cgbWFueSByb3dzIHdlIGhhdmUgYXQgdGhlIGJvdHRvbSBsZXZlbCBvZiBuZXN0aW5nLlxuICBleHBvcnQgZnVuY3Rpb24gY291bnRCb3R0b21MZXZlbE5lc3RlZEhlYWRlclJvd3M8UiBleHRlbmRzIFJpdlRhYmxlLlJvdz4oXG4gICAgYWxsSGVhZGVyczogUml2VGFibGUuTmVzdGVkSGVhZGVyUm93PFI+W10sXG4gICk6IG51bWJlciB7XG4gICAgbGV0IGJvdHRvbUxldmVsUm93Q291bnQ6IG51bWJlciA9IDA7XG5cbiAgICBmb3IgKGNvbnN0IGhlYWRlclJvdyBvZiBhbGxIZWFkZXJzKSB7XG4gICAgICBjb25zdCBjdXJyZW50SGVhZGVyQm90dG9tUm93Q291bnQ6IG51bWJlciA9IGNvdW50Qm90dG9tTGV2ZWxOZXN0ZWRSb3dzKFxuICAgICAgICBoZWFkZXJSb3cuc3ViUm93cyxcbiAgICAgICk7XG4gICAgICBib3R0b21MZXZlbFJvd0NvdW50ICs9IGN1cnJlbnRIZWFkZXJCb3R0b21Sb3dDb3VudDtcbiAgICB9XG5cbiAgICByZXR1cm4gYm90dG9tTGV2ZWxSb3dDb3VudDtcbiAgfVxufVxuIl19
@@ -0,0 +1,164 @@
1
+ import { orderBy } from 'lodash';
2
+ export var TableOrderHelpers;
3
+ (function (TableOrderHelpers) {
4
+ function orderEmptyLast(rows, key, direction) {
5
+ return orderBy(rows, [row => row[key] == null, key], ['asc', direction]);
6
+ }
7
+ TableOrderHelpers.orderEmptyLast = orderEmptyLast;
8
+ function orderNestedRowsEmptyLast(rows, key, direction) {
9
+ return orderBy(rows, [row => row.data[key] == null, row => row.data[key]], ['asc', direction]);
10
+ }
11
+ TableOrderHelpers.orderNestedRowsEmptyLast = orderNestedRowsEmptyLast;
12
+ function orderNestedRowsBySearchMatch(rows, idToSearchIndexMap) {
13
+ return orderBy(rows, [row => idToSearchIndexMap.get(row.data.id)], ['asc']);
14
+ }
15
+ TableOrderHelpers.orderNestedRowsBySearchMatch = orderNestedRowsBySearchMatch;
16
+ function toggleColumnOrder(state, column) {
17
+ if (state.query.order?.column === column) {
18
+ return {
19
+ ...state,
20
+ query: {
21
+ ...state.query,
22
+ order: state.query.order.direction === 'asc'
23
+ ? {
24
+ column,
25
+ direction: 'desc',
26
+ }
27
+ : null,
28
+ },
29
+ };
30
+ }
31
+ return {
32
+ ...state,
33
+ query: {
34
+ ...state.query,
35
+ order: {
36
+ column,
37
+ direction: 'asc',
38
+ },
39
+ },
40
+ };
41
+ }
42
+ TableOrderHelpers.toggleColumnOrder = toggleColumnOrder;
43
+ /*
44
+ We only sort the lowest level rows if rows are nested.
45
+
46
+ In other words, we sort within each nested group, but do
47
+ NOT sort in relation to the other groups.
48
+ */
49
+ function sortLowLevelNestedRows(allRows, sortKey, direction) {
50
+ function recursiveSortRows(nestedRows) {
51
+ const hasDeeperNesting = nestedRows.some(row => row.subRows && row.subRows.length > 0);
52
+ if (!hasDeeperNesting) {
53
+ const sortedRows = orderNestedRowsEmptyLast(nestedRows, sortKey, direction);
54
+ return sortedRows;
55
+ }
56
+ else {
57
+ // If there is a deeper nesting, keep recursing
58
+ const sortedRows = [];
59
+ for (const currentNestedRow of nestedRows) {
60
+ if (currentNestedRow.subRows && currentNestedRow.subRows.length > 0) {
61
+ const sortedSubRows = recursiveSortRows(currentNestedRow.subRows);
62
+ sortedRows.push({
63
+ ...currentNestedRow,
64
+ subRows: sortedSubRows,
65
+ });
66
+ }
67
+ else {
68
+ sortedRows.push(currentNestedRow);
69
+ }
70
+ }
71
+ return sortedRows;
72
+ }
73
+ }
74
+ return recursiveSortRows(allRows);
75
+ }
76
+ TableOrderHelpers.sortLowLevelNestedRows = sortLowLevelNestedRows;
77
+ // Sort the data inside the headers, not the headers themselves
78
+ function sortLowLevelNestedRowsWithHeaders(allHeaders, sortKey, direction) {
79
+ const sortedHeaderRows = [];
80
+ for (const headerRow of allHeaders) {
81
+ const sortedSubRows = sortLowLevelNestedRows(headerRow.subRows, sortKey, direction);
82
+ sortedHeaderRows.push({
83
+ ...headerRow,
84
+ subRows: sortedSubRows,
85
+ });
86
+ }
87
+ return sortedHeaderRows;
88
+ }
89
+ TableOrderHelpers.sortLowLevelNestedRowsWithHeaders = sortLowLevelNestedRowsWithHeaders;
90
+ // Create map to help us sort on Fuse relevance order
91
+ function createIdToSearchIndexMap(rowsMatchingSearch) {
92
+ const idToSearchIndexMap = new Map();
93
+ for (let i = 0; i < rowsMatchingSearch.length; i++) {
94
+ const rowMatchingIndex = rowsMatchingSearch[i];
95
+ idToSearchIndexMap.set(rowMatchingIndex.id, i);
96
+ }
97
+ return idToSearchIndexMap;
98
+ }
99
+ TableOrderHelpers.createIdToSearchIndexMap = createIdToSearchIndexMap;
100
+ // Sort based on how well the rows match a search
101
+ function sortNestedRowsBasedOnSearchMatches(allRows, idToSearchIndexMap) {
102
+ function recursiveSortRowsBySearchMatch(nestedRows) {
103
+ const hasDeeperNesting = nestedRows.some(row => row.subRows && row.subRows.length > 0);
104
+ if (!hasDeeperNesting) {
105
+ const sortedRows = orderNestedRowsBySearchMatch(nestedRows, idToSearchIndexMap);
106
+ return sortedRows;
107
+ }
108
+ else {
109
+ // If there is a deeper nesting, keep recursing
110
+ const sortedRows = [];
111
+ for (const currentNestedRow of nestedRows) {
112
+ if (currentNestedRow.subRows && currentNestedRow.subRows.length > 0) {
113
+ const sortedSubRows = recursiveSortRowsBySearchMatch(currentNestedRow.subRows);
114
+ sortedRows.push({
115
+ ...currentNestedRow,
116
+ subRows: sortedSubRows,
117
+ });
118
+ }
119
+ else {
120
+ sortedRows.push(currentNestedRow);
121
+ }
122
+ }
123
+ return sortedRows;
124
+ }
125
+ }
126
+ return recursiveSortRowsBySearchMatch(allRows);
127
+ }
128
+ TableOrderHelpers.sortNestedRowsBasedOnSearchMatches = sortNestedRowsBasedOnSearchMatches;
129
+ // Sort based on how well the rows match a search
130
+ function sortNestedRowsWithHeadersBasedOnSearchMatches(allHeaders, idToSearchIndexMap) {
131
+ const sortedHeaderRows = [];
132
+ for (const headerRow of allHeaders) {
133
+ const sortedSubRows = sortNestedRowsBasedOnSearchMatches(headerRow.subRows, idToSearchIndexMap);
134
+ sortedHeaderRows.push({
135
+ ...headerRow,
136
+ subRows: sortedSubRows,
137
+ });
138
+ }
139
+ return sortedHeaderRows;
140
+ }
141
+ TableOrderHelpers.sortNestedRowsWithHeadersBasedOnSearchMatches = sortNestedRowsWithHeadersBasedOnSearchMatches;
142
+ /*
143
+ When a defaultSort is specified, seed the initial query.order so the
144
+ table header shows the sort indicator from the start.
145
+ */
146
+ function seedDefaultSortOption(options) {
147
+ if (options?.defaultSort && !options?.initialState?.query?.order) {
148
+ const order = options.defaultSort;
149
+ return {
150
+ ...options,
151
+ initialState: {
152
+ ...options.initialState,
153
+ query: {
154
+ ...options.initialState?.query,
155
+ order,
156
+ },
157
+ },
158
+ };
159
+ }
160
+ return options;
161
+ }
162
+ TableOrderHelpers.seedDefaultSortOption = seedDefaultSortOption;
163
+ })(TableOrderHelpers || (TableOrderHelpers = {}));
164
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXItaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Jpdi9zcmMvbGliL3RhYmxlL3RhYmxlL3N0YXRlLWhlbHBlcnMvb3JkZXItaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBSWpDLE1BQU0sS0FBVyxpQkFBaUIsQ0E0T2pDO0FBNU9ELFdBQWlCLGlCQUFpQjtJQUNoQyxTQUFnQixjQUFjLENBQzVCLElBQVMsRUFDVCxHQUFZLEVBQ1osU0FBa0M7UUFFbEMsT0FBTyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQU5lLGdDQUFjLGlCQU03QixDQUFBO0lBRUQsU0FBZ0Isd0JBQXdCLENBQ3RDLElBQTZCLEVBQzdCLEdBQVksRUFDWixTQUFrQztRQUVsQyxPQUFPLE9BQU8sQ0FDWixJQUFJLEVBQ0osQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUNwRCxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FDbkIsQ0FBQztJQUNKLENBQUM7SUFWZSwwQ0FBd0IsMkJBVXZDLENBQUE7SUFFRCxTQUFnQiw0QkFBNEIsQ0FDMUMsSUFBNkIsRUFDN0Isa0JBQWdEO1FBRWhELE9BQU8sT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLEdBQUcs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SyxHQUFrQyxPQUFPLENBQUMsV0FBVyxDQUFDO1lBQ2pFLE9BQU87Z0JBQ0wsR0FBRyxPQUFPO2dCQUNWLFlBQVksRUFBRTtvQkFDWixHQUFHLE9BQU8sQ0FBQyxZQUFZO29CQUN2QixLQUFLLEVBQUU7d0JBQ0wsR0FBRyxPQUFPLENBQUMsWUFBWSxFQUFFLEtBQUs7d0JBQzlCLEtBQUs7cUJBQytCO2lCQUN2QzthQUNGLENBQUM7UUFDSixDQUFDO1FBRUQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQXRCZSx1Q0FBcUIsd0JBc0JwQyxDQUFBO0FBQ0gsQ0FBQyxFQTVPZ0IsaUJBQWlCLEtBQWpCLGlCQUFpQixRQTRPakMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBvcmRlckJ5IH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IERlZXBQYXJ0aWFsIH0gZnJvbSAndXRpbGl0eS10eXBlcyc7XG5pbXBvcnQgeyBSaXZUYWJsZSB9IGZyb20gJy4uL3N0YXRlJztcblxuZXhwb3J0IG5hbWVzcGFjZSBUYWJsZU9yZGVySGVscGVycyB7XG4gIGV4cG9ydCBmdW5jdGlvbiBvcmRlckVtcHR5TGFzdDxSPihcbiAgICByb3dzOiBSW10sXG4gICAga2V5OiBrZXlvZiBSLFxuICAgIGRpcmVjdGlvbjogUml2VGFibGUuT3JkZXJEaXJlY3Rpb24sXG4gICk6IFJbXSB7XG4gICAgcmV0dXJuIG9yZGVyQnkocm93cywgW3JvdyA9PiByb3dba2V5XSA9PSBudWxsLCBrZXldLCBbJ2FzYycsIGRpcmVjdGlvbl0pO1xuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIG9yZGVyTmVzdGVkUm93c0VtcHR5TGFzdDxSIGV4dGVuZHMgUml2VGFibGUuUm93PihcbiAgICByb3dzOiBSaXZUYWJsZS5OZXN0ZWRSb3c8Uj5bXSxcbiAgICBrZXk6IGtleW9mIFIsXG4gICAgZGlyZWN0aW9uOiBSaXZUYWJsZS5PcmRlckRpcmVjdGlvbixcbiAgKTogUml2VGFibGUuTmVzdGVkUm93PFI+W10ge1xuICAgIHJldHVybiBvcmRlckJ5KFxuICAgICAgcm93cyxcbiAgICAgIFtyb3cgPT4gcm93LmRhdGFba2V5XSA9PSBudWxsLCByb3cgPT4gcm93LmRhdGFba2V5XV0sXG4gICAgICBbJ2FzYycsIGRpcmVjdGlvbl0sXG4gICAgKTtcbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBvcmRlck5lc3RlZFJvd3NCeVNlYXJjaE1hdGNoPFIgZXh0ZW5kcyBSaXZUYWJsZS5Sb3c+KFxuICAgIHJvd3M6IFJpdlRhYmxlLk5lc3RlZFJvdzxSPltdLFxuICAgIGlkVG9TZWFyY2hJbmRleE1hcDogTWFwPHN0cmluZyB8IG51bWJlciwgbnVtYmVyPixcbiAgKTogUml2VGFibGUuTmVzdGVkUm93PFI+W10ge1xuICAgIHJldHVybiBvcmRlckJ5KHJvd3MsIFtyb3cgPT4gaWRUb1NlYXJjaEluZGV4TWFwLmdldChyb3cuZGF0YS5pZCldLCBbJ2FzYyddKTtcbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiB0b2dnbGVDb2x1bW5PcmRlcjxcbiAgICBSIGV4dGVuZHMgUml2VGFibGUuUm93LFxuICAgIEMgZXh0ZW5kcyBSaXZUYWJsZS5Db2x1bW4sXG4gICAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4gICAgRyBleHRlbmRzIFJpdlRhYmxlLkdyb3VwLFxuICA+KFxuICAgIHN0YXRlOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRiwgRz4sXG4gICAgY29sdW1uOiBDLFxuICApOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRiwgRz4ge1xuICAgIGlmIChzdGF0ZS5xdWVyeS5vcmRlcj8uY29sdW1uID09PSBjb2x1bW4pIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBxdWVyeToge1xuICAgICAgICAgIC4uLnN0YXRlLnF1ZXJ5LFxuICAgICAgICAgIG9yZGVyOlxuICAgICAgICAgICAgc3RhdGUucXVlcnkub3JkZXIuZGlyZWN0aW9uID09PSAnYXNjJ1xuICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgIGNvbHVtbixcbiAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbjogJ2Rlc2MnLFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgcXVlcnk6IHtcbiAgICAgICAgLi4uc3RhdGUucXVlcnksXG4gICAgICAgIG9yZGVyOiB7XG4gICAgICAgICAgY29sdW1uLFxuICAgICAgICAgIGRpcmVjdGlvbjogJ2FzYycsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICAvKlxuICAgIFdlIG9ubHkgc29ydCB0aGUgbG93ZXN0IGxldmVsIHJvd3MgaWYgcm93cyBhcmUgbmVzdGVkLlxuXG4gICAgSW4gb3RoZXIgd29yZHMsIHdlIHNvcnQgd2l0aGluIGVhY2ggbmVzdGVkIGdyb3VwLCBidXQgZG9cbiAgICAgIE5PVCBzb3J0IGluIHJlbGF0aW9uIHRvIHRoZSBvdGhlciBncm91cHMuXG4gICovXG4gIGV4cG9ydCBmdW5jdGlvbiBzb3J0TG93TGV2ZWxOZXN0ZWRSb3dzPFIgZXh0ZW5kcyBSaXZUYWJsZS5Sb3c+KFxuICAgIGFsbFJvd3M6IFJpdlRhYmxlLk5lc3RlZFJvdzxSPltdLFxuICAgIHNvcnRLZXk6IGtleW9mIFIsXG4gICAgZGlyZWN0aW9uOiBSaXZUYWJsZS5PcmRlckRpcmVjdGlvbixcbiAgKTogUml2VGFibGUuTmVzdGVkUm93PFI+W10ge1xuICAgIGZ1bmN0aW9uIHJlY3Vyc2l2ZVNvcnRSb3dzKFxuICAgICAgbmVzdGVkUm93czogUml2VGFibGUuTmVzdGVkUm93PFI+W10sXG4gICAgKTogUml2VGFibGUuTmVzdGVkUm93PFI+W10ge1xuICAgICAgY29uc3QgaGFzRGVlcGVyTmVzdGluZzogYm9vbGVhbiA9IG5lc3RlZFJvd3Muc29tZShcbiAgICAgICAgcm93ID0+IHJvdy5zdWJSb3dzICYmIHJvdy5zdWJSb3dzLmxlbmd0aCA+IDAsXG4gICAgICApO1xuICAgICAgaWYgKCFoYXNEZWVwZXJOZXN0aW5nKSB7XG4gICAgICAgIGNvbnN0IHNvcnRlZFJvd3M6IFJpdlRhYmxlLk5lc3RlZFJvdzxSPltdID0gb3JkZXJOZXN0ZWRSb3dzRW1wdHlMYXN0KFxuICAgICAgICAgIG5lc3RlZFJvd3MsXG4gICAgICAgICAgc29ydEtleSxcbiAgICAgICAgICBkaXJlY3Rpb24sXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBzb3J0ZWRSb3dzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBkZWVwZXIgbmVzdGluZywga2VlcCByZWN1cnNpbmdcbiAgICAgICAgY29uc3Qgc29ydGVkUm93czogUml2VGFibGUuTmVzdGVkUm93PFI+W10gPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBjdXJyZW50TmVzdGVkUm93IG9mIG5lc3RlZFJvd3MpIHtcbiAgICAgICAgICBpZiAoY3VycmVudE5lc3RlZFJvdy5zdWJSb3dzICYmIGN1cnJlbnROZXN0ZWRSb3cuc3ViUm93cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBzb3J0ZWRTdWJSb3dzOiBSaXZUYWJsZS5OZXN0ZWRSb3c8Uj5bXSA9IHJlY3Vyc2l2ZVNvcnRSb3dzKFxuICAgICAgICAgICAgICBjdXJyZW50TmVzdGVkUm93LnN1YlJvd3MsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgc29ydGVkUm93cy5wdXNoKHtcbiAgICAgICAgICAgICAgLi4uY3VycmVudE5lc3RlZFJvdyxcbiAgICAgICAgICAgICAgc3ViUm93czogc29ydGVkU3ViUm93cyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzb3J0ZWRSb3dzLnB1c2goY3VycmVudE5lc3RlZFJvdyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHNvcnRlZFJvd3M7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlY3Vyc2l2ZVNvcnRSb3dzKGFsbFJvd3MpO1xuICB9XG5cbiAgLy8gU29ydCB0aGUgZGF0YSBpbnNpZGUgdGhlIGhlYWRlcnMsIG5vdCB0aGUgaGVhZGVycyB0aGVtc2VsdmVzXG4gIGV4cG9ydCBmdW5jdGlvbiBzb3J0TG93TGV2ZWxOZXN0ZWRSb3dzV2l0aEhlYWRlcnM8UiBleHRlbmRzIFJpdlRhYmxlLlJvdz4oXG4gICAgYWxsSGVhZGVyczogUml2VGFibGUuTmVzdGVkSGVhZGVyUm93PFI+W10sXG4gICAgc29ydEtleToga2V5b2YgUixcbiAgICBkaXJlY3Rpb246IFJpdlRhYmxlLk9yZGVyRGlyZWN0aW9uLFxuICApOiBSaXZUYWJsZS5OZXN0ZWRIZWFkZXJSb3c8Uj5bXSB7XG4gICAgY29uc3Qgc29ydGVkSGVhZGVyUm93czogUml2VGFibGUuTmVzdGVkSGVhZGVyUm93PFI+W10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IGhlYWRlclJvdyBvZiBhbGxIZWFkZXJzKSB7XG4gICAgICBjb25zdCBzb3J0ZWRTdWJSb3dzOiBSaXZUYWJsZS5OZXN0ZWRSb3c8Uj5bXSA9IHNvcnRMb3dMZXZlbE5lc3RlZFJvd3MoXG4gICAgICAgIGhlYWRlclJvdy5zdWJSb3dzLFxuICAgICAgICBzb3J0S2V5LFxuICAgICAgICBkaXJlY3Rpb24sXG4gICAgICApO1xuICAgICAgc29ydGVkSGVhZGVyUm93cy5wdXNoKHtcbiAgICAgICAgLi4uaGVhZGVyUm93LFxuICAgICAgICBzdWJSb3dzOiBzb3J0ZWRTdWJSb3dzLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNvcnRlZEhlYWRlclJvd3M7XG4gIH1cblxuICAvLyBDcmVhdGUgbWFwIHRvIGhlbHAgdXMgc29ydCBvbiBGdXNlIHJlbGV2YW5jZSBvcmRlclxuICBleHBvcnQgZnVuY3Rpb24gY3JlYXRlSWRUb1NlYXJjaEluZGV4TWFwPFIgZXh0ZW5kcyBSaXZUYWJsZS5Sb3c+KFxuICAgIHJvd3NNYXRjaGluZ1NlYXJjaDogUltdLFxuICApOiBNYXA8c3RyaW5nIHwgbnVtYmVyLCBudW1iZXI+IHtcbiAgICBjb25zdCBpZFRvU2VhcmNoSW5kZXhNYXA6IE1hcDxzdHJpbmcgfCBudW1iZXIsIG51bWJlcj4gPSBuZXcgTWFwKCk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd3NNYXRjaGluZ1NlYXJjaC5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3Qgcm93TWF0Y2hpbmdJbmRleDogUiA9IHJvd3NNYXRjaGluZ1NlYXJjaFtpXTtcbiAgICAgIGlkVG9TZWFyY2hJbmRleE1hcC5zZXQocm93TWF0Y2hpbmdJbmRleC5pZCwgaSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGlkVG9TZWFyY2hJbmRleE1hcDtcbiAgfVxuXG4gIC8vIFNvcnQgYmFzZWQgb24gaG93IHdlbGwgdGhlIHJvd3MgbWF0Y2ggYSBzZWFyY2hcbiAgZXhwb3J0IGZ1bmN0aW9uIHNvcnROZXN0ZWRSb3dzQmFzZWRPblNlYXJjaE1hdGNoZXM8UiBleHRlbmRzIFJpdlRhYmxlLlJvdz4oXG4gICAgYWxsUm93czogUml2VGFibGUuTmVzdGVkUm93PFI+W10sXG4gICAgaWRUb1NlYXJjaEluZGV4TWFwOiBNYXA8c3RyaW5nIHwgbnVtYmVyLCBudW1iZXI+LFxuICApOiBSaXZUYWJsZS5OZXN0ZWRSb3c8Uj5bXSB7XG4gICAgZnVuY3Rpb24gcmVjdXJzaXZlU29ydFJvd3NCeVNlYXJjaE1hdGNoKFxuICAgICAgbmVzdGVkUm93czogUml2VGFibGUuTmVzdGVkUm93PFI+W10sXG4gICAgKTogUml2VGFibGUuTmVzdGVkUm93PFI+W10ge1xuICAgICAgY29uc3QgaGFzRGVlcGVyTmVzdGluZzogYm9vbGVhbiA9IG5lc3RlZFJvd3Muc29tZShcbiAgICAgICAgcm93ID0+IHJvdy5zdWJSb3dzICYmIHJvdy5zdWJSb3dzLmxlbmd0aCA+IDAsXG4gICAgICApO1xuICAgICAgaWYgKCFoYXNEZWVwZXJOZXN0aW5nKSB7XG4gICAgICAgIGNvbnN0IHNvcnRlZFJvd3M6IFJpdlRhYmxlLk5lc3RlZFJvdzxSPltdID1cbiAgICAgICAgICBvcmRlck5lc3RlZFJvd3NCeVNlYXJjaE1hdGNoKG5lc3RlZFJvd3MsIGlkVG9TZWFyY2hJbmRleE1hcCk7XG4gICAgICAgIHJldHVybiBzb3J0ZWRSb3dzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBkZWVwZXIgbmVzdGluZywga2VlcCByZWN1cnNpbmdcbiAgICAgICAgY29uc3Qgc29ydGVkUm93czogUml2VGFibGUuTmVzdGVkUm93PFI+W10gPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBjdXJyZW50TmVzdGVkUm93IG9mIG5lc3RlZFJvd3MpIHtcbiAgICAgICAgICBpZiAoY3VycmVudE5lc3RlZFJvdy5zdWJSb3dzICYmIGN1cnJlbnROZXN0ZWRSb3cuc3ViUm93cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBzb3J0ZWRTdWJSb3dzOiBSaXZUYWJsZS5OZXN0ZWRSb3c8Uj5bXSA9XG4gICAgICAgICAgICAgIHJlY3Vyc2l2ZVNvcnRSb3dzQnlTZWFyY2hNYXRjaChjdXJyZW50TmVzdGVkUm93LnN1YlJvd3MpO1xuICAgICAgICAgICAgc29ydGVkUm93cy5wdXNoKHtcbiAgICAgICAgICAgICAgLi4uY3VycmVudE5lc3RlZFJvdyxcbiAgICAgICAgICAgICAgc3ViUm93czogc29ydGVkU3ViUm93cyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzb3J0ZWRSb3dzLnB1c2goY3VycmVudE5lc3RlZFJvdyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHNvcnRlZFJvd3M7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlY3Vyc2l2ZVNvcnRSb3dzQnlTZWFyY2hNYXRjaChhbGxSb3dzKTtcbiAgfVxuXG4gIC8vIFNvcnQgYmFzZWQgb24gaG93IHdlbGwgdGhlIHJvd3MgbWF0Y2ggYSBzZWFyY2hcbiAgZXhwb3J0IGZ1bmN0aW9uIHNvcnROZXN0ZWRSb3dzV2l0aEhlYWRlcnNCYXNlZE9uU2VhcmNoTWF0Y2hlczxcbiAgICBSIGV4dGVuZHMgUml2VGFibGUuUm93LFxuICA+KFxuICAgIGFsbEhlYWRlcnM6IFJpdlRhYmxlLk5lc3RlZEhlYWRlclJvdzxSPltdLFxuICAgIGlkVG9TZWFyY2hJbmRleE1hcDogTWFwPHN0cmluZyB8IG51bWJlciwgbnVtYmVyPixcbiAgKTogUml2VGFibGUuTmVzdGVkSGVhZGVyUm93PFI+W10ge1xuICAgIGNvbnN0IHNvcnRlZEhlYWRlclJvd3M6IFJpdlRhYmxlLk5lc3RlZEhlYWRlclJvdzxSPltdID0gW107XG4gICAgZm9yIChjb25zdCBoZWFkZXJSb3cgb2YgYWxsSGVhZGVycykge1xuICAgICAgY29uc3Qgc29ydGVkU3ViUm93czogUml2VGFibGUuTmVzdGVkUm93PFI+W10gPVxuICAgICAgICBzb3J0TmVzdGVkUm93c0Jhc2VkT25TZWFyY2hNYXRjaGVzKFxuICAgICAgICAgIGhlYWRlclJvdy5zdWJSb3dzLFxuICAgICAgICAgIGlkVG9TZWFyY2hJbmRleE1hcCxcbiAgICAgICAgKTtcbiAgICAgIHNvcnRlZEhlYWRlclJvd3MucHVzaCh7XG4gICAgICAgIC4uLmhlYWRlclJvdyxcbiAgICAgICAgc3ViUm93czogc29ydGVkU3ViUm93cyxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBzb3J0ZWRIZWFkZXJSb3dzO1xuICB9XG5cbiAgLypcbiAgICBXaGVuIGEgZGVmYXVsdFNvcnQgaXMgc3BlY2lmaWVkLCBzZWVkIHRoZSBpbml0aWFsIHF1ZXJ5Lm9yZGVyIHNvIHRoZVxuICAgIHRhYmxlIGhlYWRlciBzaG93cyB0aGUgc29ydCBpbmRpY2F0b3IgZnJvbSB0aGUgc3RhcnQuXG4gICovXG4gIGV4cG9ydCBmdW5jdGlvbiBzZWVkRGVmYXVsdFNvcnRPcHRpb248XG4gICAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgICBDIGV4dGVuZHMgUml2VGFibGUuQ29sdW1uLFxuICAgIEYgZXh0ZW5kcyBSaXZUYWJsZS5GaWx0ZXJzLFxuICA+KFxuICAgIG9wdGlvbnM/OiBSaXZUYWJsZS5Jbk1lbW9yeU1hbmFnZXJPcHRpb25zPFIsIEMsIEY+LFxuICApOiBSaXZUYWJsZS5Jbk1lbW9yeU1hbmFnZXJPcHRpb25zPFIsIEMsIEY+IHwgdW5kZWZpbmVkIHtcbiAgICBpZiAob3B0aW9ucz8uZGVmYXVsdFNvcnQgJiYgIW9wdGlvbnM/LmluaXRpYWxTdGF0ZT8ucXVlcnk/Lm9yZGVyKSB7XG4gICAgICBjb25zdCBvcmRlcjogUml2VGFibGUuUXVlcnk8QywgRj5bJ29yZGVyJ10gPSBvcHRpb25zLmRlZmF1bHRTb3J0O1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgaW5pdGlhbFN0YXRlOiB7XG4gICAgICAgICAgLi4ub3B0aW9ucy5pbml0aWFsU3RhdGUsXG4gICAgICAgICAgcXVlcnk6IHtcbiAgICAgICAgICAgIC4uLm9wdGlvbnMuaW5pdGlhbFN0YXRlPy5xdWVyeSxcbiAgICAgICAgICAgIG9yZGVyLFxuICAgICAgICAgIH0gYXMgRGVlcFBhcnRpYWw8Uml2VGFibGUuUXVlcnk8QywgRj4+LFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3B0aW9ucztcbiAgfVxufVxuIl19
@@ -0,0 +1,139 @@
1
+ import { range } from 'lodash';
2
+ import { RivTable } from '../state';
3
+ import { TableResultHelpers } from './result-helpers';
4
+ export var TablePaginationHelpers;
5
+ (function (TablePaginationHelpers) {
6
+ function getPageCount(state) {
7
+ if (TableResultHelpers.isGroupResult(state.result)) {
8
+ return Math.max(Math.ceil(state.result.totalGroupCount / state.query.grouping.groupsPerPage), 1);
9
+ }
10
+ return Math.max(Math.ceil(state.result.totalMatchingRowCount / state.query.pagination.pageSize), 1);
11
+ }
12
+ TablePaginationHelpers.getPageCount = getPageCount;
13
+ function getPreviousPage(state) {
14
+ return state.query.pagination.page === 0
15
+ ? null
16
+ : state.query.pagination.page - 1;
17
+ }
18
+ TablePaginationHelpers.getPreviousPage = getPreviousPage;
19
+ function getPages(state) {
20
+ const padding = 4;
21
+ const min = 0;
22
+ const max = getPageCount(state) - 1;
23
+ const desiredStart = state.query.pagination.page - padding;
24
+ const clampedStart = Math.max(min, desiredStart);
25
+ const desiredEnd = state.query.pagination.page + padding;
26
+ const clampedEnd = Math.min(max, desiredEnd);
27
+ const start = Math.max(min, clampedStart - (desiredEnd - clampedEnd));
28
+ const end = Math.min(max, clampedEnd + (clampedStart - desiredStart));
29
+ return range(start, end + 1);
30
+ }
31
+ TablePaginationHelpers.getPages = getPages;
32
+ function getNextPage(state) {
33
+ const max = getPageCount(state) - 1;
34
+ const next = state.query.pagination.page + 1;
35
+ return next <= max ? next : null;
36
+ }
37
+ TablePaginationHelpers.getNextPage = getNextPage;
38
+ // We don't want to show the pagination controls when they are unnecessary.
39
+ function getShowPaginationControls(state) {
40
+ if (state.query.pagination.page > 0) {
41
+ return true;
42
+ }
43
+ if (TableResultHelpers.isGroupResult(state.result)) {
44
+ return state.result.totalGroupCount > state.query.grouping.groupsPerPage;
45
+ }
46
+ return (state.result.totalMatchingRowCount > Math.min(...[...RivTable.pageSizes]));
47
+ }
48
+ TablePaginationHelpers.getShowPaginationControls = getShowPaginationControls;
49
+ function getPageRowStart(state) {
50
+ return state.query.pagination.page * state.query.pagination.pageSize + 1;
51
+ }
52
+ TablePaginationHelpers.getPageRowStart = getPageRowStart;
53
+ function getPageRowEnd(state) {
54
+ return Math.min((state.query.pagination.page + 1) * state.query.pagination.pageSize, state.result.totalMatchingRowCount);
55
+ }
56
+ TablePaginationHelpers.getPageRowEnd = getPageRowEnd;
57
+ function isPageOutOfBounds(state, result) {
58
+ if (TableResultHelpers.isGroupResult(result)) {
59
+ const minGroupValToShowOnCurrentPage = state.query.pagination.page * state.query.grouping.groupsPerPage + 1;
60
+ if (result.totalGroupCount < minGroupValToShowOnCurrentPage) {
61
+ return true;
62
+ }
63
+ }
64
+ else {
65
+ const minRowToShowOnCurrentPage = state.query.pagination.page * state.query.pagination.pageSize + 1;
66
+ if (result.totalMatchingRowCount < minRowToShowOnCurrentPage) {
67
+ return true;
68
+ }
69
+ }
70
+ return false;
71
+ }
72
+ TablePaginationHelpers.isPageOutOfBounds = isPageOutOfBounds;
73
+ /*
74
+ Paginate based on bottom level rows, splitting as necessary to fit within the page,
75
+ or based on top level rows, keeping each with all of its subrows.
76
+ */
77
+ function paginateNestedHeaderRows(allHeaders, pageNumber, pageSize, paginateBy = 'bottomRows') {
78
+ const startIdx = pageSize * pageNumber;
79
+ const endIdx = startIdx + pageSize;
80
+ let countedRowCount = 0;
81
+ function countRow(currentNestedRow) {
82
+ countedRowCount++;
83
+ // Since we add 1 first, the bounds should be (startIdx, endIdx]
84
+ return countedRowCount > startIdx && countedRowCount <= endIdx
85
+ ? currentNestedRow
86
+ : null;
87
+ }
88
+ function recursivePaginateRows(currentNestedRow) {
89
+ if (countedRowCount > endIdx) {
90
+ return null;
91
+ }
92
+ // If there are no subrows, stop recursing
93
+ if (!currentNestedRow.subRows?.length) {
94
+ return countRow(currentNestedRow);
95
+ }
96
+ else {
97
+ const subRowsToKeep = [];
98
+ for (const subRow of currentNestedRow.subRows) {
99
+ const countedRow = recursivePaginateRows(subRow);
100
+ if (countedRow != null) {
101
+ subRowsToKeep.push(countedRow);
102
+ }
103
+ }
104
+ if (subRowsToKeep.length == 0) {
105
+ return null;
106
+ }
107
+ else {
108
+ // Keep any top level row that has at least one subrow
109
+ return {
110
+ ...currentNestedRow,
111
+ subRows: subRowsToKeep,
112
+ };
113
+ }
114
+ }
115
+ }
116
+ const paginatedHeaders = [];
117
+ for (const headerRow of allHeaders) {
118
+ const paginatedSubRows = [];
119
+ for (const subRow of headerRow.subRows) {
120
+ const recursedSubRow = paginateBy === 'topRows'
121
+ ? countRow(subRow)
122
+ : recursivePaginateRows(subRow);
123
+ if (recursedSubRow != null) {
124
+ paginatedSubRows.push(recursedSubRow);
125
+ }
126
+ }
127
+ if (paginatedSubRows.length > 0) {
128
+ // Keep any header that has at least one subrow in the current page
129
+ paginatedHeaders.push({
130
+ ...headerRow,
131
+ subRows: paginatedSubRows,
132
+ });
133
+ }
134
+ }
135
+ return paginatedHeaders;
136
+ }
137
+ TablePaginationHelpers.paginateNestedHeaderRows = paginateNestedHeaderRows;
138
+ })(TablePaginationHelpers || (TablePaginationHelpers = {}));
139
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi1oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvdGFibGUvdGFibGUvc3RhdGUtaGVscGVycy9wYWdpbmF0aW9uLWhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUMvQixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXRELE1BQU0sS0FBVyxzQkFBc0IsQ0FzTnRDO0FBdE5ELFdBQWlCLHNCQUFzQjtJQUNyQyxTQUFnQixZQUFZLENBSzFCLEtBQXFDO1FBQ3JDLElBQUksa0JBQWtCLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ25ELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FDYixJQUFJLENBQUMsSUFBSSxDQUNQLEtBQUssQ0FBQyxNQUFNLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FDbEUsRUFDRCxDQUFDLENBQ0YsQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQ2IsSUFBSSxDQUFDLElBQUksQ0FDUCxLQUFLLENBQUMsTUFBTSxDQUFDLHFCQUFxQixHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FDckUsRUFDRCxDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFwQmUsbUNBQVksZUFvQjNCLENBQUE7SUFFRCxTQUFnQixlQUFlLENBSzdCLEtBQXFDO1FBQ3JDLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxLQUFLLENBQUM7WUFDdEMsQ0FBQyxDQUFDLElBQUk7WUFDTixDQUFDLENB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LE1BQU0sTUFBTSxJQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDdkMsTUFBTSxjQUFjLEdBQ2xCLFVBQVUsS0FBSyxTQUFTO29CQUN0QixDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztvQkFDbEIsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUVwQyxJQUFJLGNBQWMsSUFBSSxJQUFJLEVBQUUsQ0FBQztvQkFDM0IsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUN4QyxDQUFDO1lBQ0gsQ0FBQztZQUVELElBQUksZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNoQyxtRUFBbUU7Z0JBQ25FLGdCQUFnQixDQUFDLElBQUksQ0FBQztvQkFDcEIsR0FBRyxTQUFTO29CQUNaLE9BQU8sRUFBRSxnQkFBZ0I7aUJBQzFCLENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxnQkFBZ0IsQ0FBQztJQUMxQixDQUFDO0lBL0VlLCtDQUF3QiwyQkErRXZDLENBQUE7QUFDSCxDQUFDLEVBdE5nQixzQkFBc0IsS0FBdEIsc0JBQXNCLFFBc050QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJhbmdlIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IFJpdlRhYmxlIH0gZnJvbSAnLi4vc3RhdGUnO1xuaW1wb3J0IHsgVGFibGVSZXN1bHRIZWxwZXJzIH0gZnJvbSAnLi9yZXN1bHQtaGVscGVycyc7XG5cbmV4cG9ydCBuYW1lc3BhY2UgVGFibGVQYWdpbmF0aW9uSGVscGVycyB7XG4gIGV4cG9ydCBmdW5jdGlvbiBnZXRQYWdlQ291bnQ8XG4gICAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgICBDIGV4dGVuZHMgUml2VGFibGUuQ29sdW1uLFxuICAgIEYgZXh0ZW5kcyBSaXZUYWJsZS5GaWx0ZXJzLFxuICAgIEcgZXh0ZW5kcyBSaXZUYWJsZS5Hcm91cCxcbiAgPihzdGF0ZTogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEYsIEc+KTogbnVtYmVyIHtcbiAgICBpZiAoVGFibGVSZXN1bHRIZWxwZXJzLmlzR3JvdXBSZXN1bHQoc3RhdGUucmVzdWx0KSkge1xuICAgICAgcmV0dXJuIE1hdGgubWF4KFxuICAgICAgICBNYXRoLmNlaWwoXG4gICAgICAgICAgc3RhdGUucmVzdWx0LnRvdGFsR3JvdXBDb3VudCAvIHN0YXRlLnF1ZXJ5Lmdyb3VwaW5nLmdyb3Vwc1BlclBhZ2UsXG4gICAgICAgICksXG4gICAgICAgIDEsXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gTWF0aC5tYXgoXG4gICAgICBNYXRoLmNlaWwoXG4gICAgICAgIHN0YXRlLnJlc3VsdC50b3RhbE1hdGNoaW5nUm93Q291bnQgLyBzdGF0ZS5xdWVyeS5wYWdpbmF0aW9uLnBhZ2VTaXplLFxuICAgICAgKSxcbiAgICAgIDEsXG4gICAgKTtcbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBnZXRQcmV2aW91c1BhZ2U8XG4gICAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgICBDIGV4dGVuZHMgUml2VGFibGUuQ29sdW1uLFxuICAgIEYgZXh0ZW5kcyBSaXZUYWJsZS5GaWx0ZXJzLFxuICAgIEcgZXh0ZW5kcyBSaXZUYWJsZS5Hcm91cCxcbiAgPihzdGF0ZTogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEYsIEc+KTogbnVtYmVyIHwgbnVsbCB7XG4gICAgcmV0dXJuIHN0YXRlLnF1ZXJ5LnBhZ2luYXRpb24ucGFnZSA9PT0gMFxuICAgICAgPyBudWxsXG4gICAgICA6IHN0YXRlLnF1ZXJ5LnBhZ2luYXRpb24ucGFnZSAtIDE7XG4gIH1cblxuICBleHBvcnQgZnVuY3Rpb24gZ2V0UGFnZXM8XG4gICAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgICBDIGV4dGVuZHMgUml2VGFibGUuQ29sdW1uLFxuICAgIEYgZXh0ZW5kcyBSaXZUYWJsZS5GaWx0ZXJzLFxuICAgIEcgZXh0ZW5kcyBSaXZUYWJsZS5Hcm91cCxcbiAgPihzdGF0ZTogUml2VGFibGUuQ29yZVN0YXRlPFIsIEMsIEYsIEc+KTogbnVtYmVyW10ge1xuICAgIGNvbnN0IHBhZGRpbmcgPSA0O1xuICAgIGNvbnN0IG1pbiA9IDA7XG4gICAgY29uc3QgbWF4ID0gZ2V0UGFnZUNvdW50KHN0YXRlKSAtIDE7XG4gICAgY29uc3QgZGVzaXJlZFN0YXJ0ID0gc3RhdGUucXVlcnkucGFnaW5hdGlvbi5wYWdlIC0gcGFkZGluZztcbiAgICBjb25zdCBjbGFtcGVkU3RhcnQgPSBNYXRoLm1heChtaW4sIGRlc2lyZWRTdGFydCk7XG4gICAgY29uc3QgZGVzaXJlZEVuZCA9IHN0YXRlLnF1ZXJ5LnBhZ2luYXRpb24ucGFnZSArIHBhZGRpbmc7XG4gICAgY29uc3QgY2xhbXBlZEVuZCA9IE1hdGgubWluKG1heCwgZGVzaXJlZEVuZCk7XG4gICAgY29uc3Qgc3RhcnQgPSBNYXRoLm1heChtaW4sIGNsYW1wZWRTdGFydCAtIChkZXNpcmVkRW5kIC0gY2xhbXBlZEVuZCkpO1xuICAgIGNvbnN0IGVuZCA9IE1hdGgubWluKG1heCwgY2xhbXBlZEVuZCArIChjbGFtcGVkU3RhcnQgLSBkZXNpcmVkU3RhcnQpKTtcbiAgICByZXR1cm4gcmFuZ2Uoc3RhcnQsIGVuZCArIDEpO1xuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGdldE5leHRQYWdlPFxuICAgIFIgZXh0ZW5kcyBSaXZUYWJsZS5Sb3csXG4gICAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgICBGIGV4dGVuZHMgUml2VGFibGUuRmlsdGVycyxcbiAgICBHIGV4dGVuZHMgUml2VGFibGUuR3JvdXAsXG4gID4oc3RhdGU6IFJpdlRhYmxlLkNvcmVTdGF0ZTxSLCBDLCBGLCBHPik6IG51bWJlciB8IG51bGwge1xuICAgIGNvbnN0IG1heCA9IGdldFBhZ2VDb3VudChzdGF0ZSkgLSAxO1xuICAgIGNvbnN0IG5leHQgPSBzdGF0ZS5xdWVyeS5wYWdpbmF0aW9uLnBhZ2UgKyAxO1xuICAgIHJldHVybiBuZXh0IDw9IG1heCA/IG5leHQgOiBudWxsO1xuICB9XG5cbiAgLy8gV2UgZG9uJ3Qgd2FudCB0byBzaG93IHRoZSBwYWdpbmF0aW9uIGNvbnRyb2xzIHdoZW4gdGhleSBhcmUgdW5uZWNlc3NhcnkuXG4gIGV4cG9ydCBmdW5jdGlvbiBnZXRTaG93UGFnaW5hdGlvbkNvbnRyb2xzPFxuICAgIFIgZXh0ZW5kcyBSaXZUYWJsZS5Sb3csXG4gICAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgICBGIGV4dGVuZHMgUml2VGFibGUuRmlsdGVycyxcbiAgICBHIGV4dGVuZHMgUml2VGFibGUuR3JvdXAsXG4gID4oc3RhdGU6IFJpdlRhYmxlLkNvcmVTdGF0ZTxSLCBDLCBGLCBHPik6IGJvb2xlYW4ge1xuICAgIGlmIChzdGF0ZS5xdWVyeS5wYWdpbmF0aW9uLnBhZ2UgPiAwKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKFRhYmxlUmVzdWx0SGVscGVycy5pc0dyb3VwUmVzdWx0KHN0YXRlLnJlc3VsdCkpIHtcbiAgICAgIHJldHVybiBzdGF0ZS5yZXN1bHQudG90YWxHcm91cENvdW50ID4gc3RhdGUucXVlcnkuZ3JvdXBpbmcuZ3JvdXBzUGVyUGFnZTtcbiAgICB9XG4gICAgcmV0dXJuIChcbiAgICAgIHN0YXRlLnJlc3VsdC50b3RhbE1hdGNoaW5nUm93Q291bnQgPiBNYXRoLm1pbiguLi5bLi4uUml2VGFibGUucGFnZVNpemVzXSlcbiAgICApO1xuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGdldFBhZ2VSb3dTdGFydDxcbiAgICBSIGV4dGVuZHMgUml2VGFibGUuUm93LFxuICAgIEMgZXh0ZW5kcyBSaXZUYWJsZS5Db2x1bW4sXG4gICAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4gICAgRyBleHRlbmRzIFJpdlRhYmxlLkdyb3VwLFxuICA+KHN0YXRlOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRiwgRz4pOiBudW1iZXIge1xuICAgIHJldHVybiBzdGF0ZS5xdWVyeS5wYWdpbmF0aW9uLnBhZ2UgKiBzdGF0ZS5xdWVyeS5wYWdpbmF0aW9uLnBhZ2VTaXplICsgMTtcbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBnZXRQYWdlUm93RW5kPFxuICAgIFIgZXh0ZW5kcyBSaXZUYWJsZS5Sb3csXG4gICAgQyBleHRlbmRzIFJpdlRhYmxlLkNvbHVtbixcbiAgICBGIGV4dGVuZHMgUml2VGFibGUuRmlsdGVycyxcbiAgICBHIGV4dGVuZHMgUml2VGFibGUuR3JvdXAsXG4gID4oc3RhdGU6IFJpdlRhYmxlLkNvcmVTdGF0ZTxSLCBDLCBGLCBHPik6IG51bWJlciB7XG4gICAgcmV0dXJuIE1hdGgubWluKFxuICAgICAgKHN0YXRlLnF1ZXJ5LnBhZ2luYXRpb24ucGFnZSArIDEpICogc3RhdGUucXVlcnkucGFnaW5hdGlvbi5wYWdlU2l6ZSxcbiAgICAgIHN0YXRlLnJlc3VsdC50b3RhbE1hdGNoaW5nUm93Q291bnQsXG4gICAgKTtcbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBpc1BhZ2VPdXRPZkJvdW5kczxcbiAgICBSIGV4dGVuZHMgUml2VGFibGUuUm93LFxuICAgIEMgZXh0ZW5kcyBSaXZUYWJsZS5Db2x1bW4sXG4gICAgRiBleHRlbmRzIFJpdlRhYmxlLkZpbHRlcnMsXG4gICAgRyBleHRlbmRzIFJpdlRhYmxlLkdyb3VwLFxuICA+KFxuICAgIHN0YXRlOiBSaXZUYWJsZS5Db3JlU3RhdGU8UiwgQywgRiwgRz4sXG4gICAgcmVzdWx0OlxuICAgICAgfCBSaXZUYWJsZS5SZXN1bHQ8Uj5cbiAgICAgIHwgUml2VGFibGUuR3JvdXBSZXN1bHQ8UiwgRz5cbiAgICAgIHwgUml2VGFibGUuTmVzdGVkUmVzdWx0PFI+LFxuICApOiBib29sZWFuIHtcbiAgICBpZiAoVGFibGVSZXN1bHRIZWxwZXJzLmlzR3JvdXBSZXN1bHQocmVzdWx0KSkge1xuICAgICAgY29uc3QgbWluR3JvdXBWYWxUb1Nob3dPbkN1cnJlbnRQYWdlID1cbiAgICAgICAgc3RhdGUucXVlcnkucGFnaW5hdGlvbi5wYWdlICogc3RhdGUucXVlcnkuZ3JvdXBpbmcuZ3JvdXBzUGVyUGFnZSArIDE7XG4gICAgICBpZiAocmVzdWx0LnRvdGFsR3JvdXBDb3VudCA8IG1pbkdyb3VwVmFsVG9TaG93T25DdXJyZW50UGFnZSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbWluUm93VG9TaG93T25DdXJyZW50UGFnZSA9XG4gICAgICAgIHN0YXRlLnF1ZXJ5LnBhZ2luYXRpb24ucGFnZSAqIHN0YXRlLnF1ZXJ5LnBhZ2luYXRpb24ucGFnZVNpemUgKyAxO1xuICAgICAgaWYgKHJlc3VsdC50b3RhbE1hdGNoaW5nUm93Q291bnQgPCBtaW5Sb3dUb1Nob3dPbkN1cnJlbnRQYWdlKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKlxuICAgIFBhZ2luYXRlIGJhc2VkIG9uIGJvdHRvbSBsZXZlbCByb3dzLCBzcGxpdHRpbmcgYXMgbmVjZXNzYXJ5IHRvIGZpdCB3aXRoaW4gdGhlIHBhZ2UsXG4gICAgb3IgYmFzZWQgb24gdG9wIGxldmVsIHJvd3MsIGtlZXBpbmcgZWFjaCB3aXRoIGFsbCBvZiBpdHMgc3Vicm93cy5cbiAgKi9cbiAgZXhwb3J0IGZ1bmN0aW9uIHBhZ2luYXRlTmVzdGVkSGVhZGVyUm93czxSIGV4dGVuZHMgUml2VGFibGUuUm93PihcbiAgICBhbGxIZWFkZXJzOiBSaXZUYWJsZS5OZXN0ZWRIZWFkZXJSb3c8Uj5bXSxcbiAgICBwYWdlTnVtYmVyOiBudW1iZXIsXG4gICAgcGFnZVNpemU6IG51bWJlcixcbiAgICBwYWdpbmF0ZUJ5OiBSaXZUYWJsZS5OZXN0ZWRQYWdpbmF0ZUJ5ID0gJ2JvdHRvbVJvd3MnLFxuICApOiBSaXZUYWJsZS5OZXN0ZWRIZWFkZXJSb3c8Uj5bXSB7XG4gICAgY29uc3Qgc3RhcnRJZHg6IG51bWJlciA9IHBhZ2VTaXplICogcGFnZU51bWJlcjtcbiAgICBjb25zdCBlbmRJZHg6IG51bWJlciA9IHN0YXJ0SWR4ICsgcGFnZVNpemU7XG5cbiAgICBsZXQgY291bnRlZFJvd0NvdW50OiBudW1iZXIgPSAwO1xuXG4gICAgZnVuY3Rpb24gY291bnRSb3coXG4gICAgICBjdXJyZW50TmVzdGVkUm93OiBSaXZUYWJsZS5OZXN0ZWRSb3c8Uj4sXG4gICAgKTogUml2VGFibGUuTmVzdGVkUm93PFI+IHwgbnVsbCB7XG4gICAgICBjb3VudGVkUm93Q291bnQrKztcblxuICAgICAgLy8gU2luY2Ugd2UgYWRkIDEgZmlyc3QsIHRoZSBib3VuZHMgc2hvdWxkIGJlIChzdGFydElkeCwgZW5kSWR4XVxuICAgICAgcmV0dXJuIGNvdW50ZWRSb3dDb3VudCA+IHN0YXJ0SWR4ICYmIGNvdW50ZWRSb3dDb3VudCA8PSBlbmRJZHhcbiAgICAgICAgPyBjdXJyZW50TmVzdGVkUm93XG4gICAgICAgIDogbnVsbDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZWN1cnNpdmVQYWdpbmF0ZVJvd3MoXG4gICAgICBjdXJyZW50TmVzdGVkUm93OiBSaXZUYWJsZS5OZXN0ZWRSb3c8Uj4sXG4gICAgKTogUml2VGFibGUuTmVzdGVkUm93PFI+IHwgbnVsbCB7XG4gICAgICBpZiAoY291bnRlZFJvd0NvdW50ID4gZW5kSWR4KSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICAvLyBJZiB0aGVyZSBhcmUgbm8gc3Vicm93cywgc3RvcCByZWN1cnNpbmdcbiAgICAgIGlmICghY3VycmVudE5lc3RlZFJvdy5zdWJSb3dzPy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIGNvdW50Um93KGN1cnJlbnROZXN0ZWRSb3cpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc3ViUm93c1RvS2VlcDogUml2VGFibGUuTmVzdGVkUm93PFI+W10gPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBzdWJSb3cgb2YgY3VycmVudE5lc3RlZFJvdy5zdWJSb3dzKSB7XG4gICAgICAgICAgY29uc3QgY291bnRlZFJvdzogUml2VGFibGUuTmVzdGVkUm93PFI+IHwgbnVsbCA9XG4gICAgICAgICAgICByZWN1cnNpdmVQYWdpbmF0ZVJvd3Moc3ViUm93KTtcbiAgICAgICAgICBpZiAoY291bnRlZFJvdyAhPSBudWxsKSB7XG4gICAgICAgICAgICBzdWJSb3dzVG9LZWVwLnB1c2goY291bnRlZFJvdyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN1YlJvd3NUb0tlZXAubGVuZ3RoID09IDApIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBLZWVwIGFueSB0b3AgbGV2ZWwgcm93IHRoYXQgaGFzIGF0IGxlYXN0IG9uZSBzdWJyb3dcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uY3VycmVudE5lc3RlZFJvdyxcbiAgICAgICAgICAgIHN1YlJvd3M6IHN1YlJvd3NUb0tlZXAsXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHBhZ2luYXRlZEhlYWRlcnM6IFJpdlRhYmxlLk5lc3RlZEhlYWRlclJvdzxSPltdID0gW107XG4gICAgZm9yIChjb25zdCBoZWFkZXJSb3cgb2YgYWxsSGVhZGVycykge1xuICAgICAgY29uc3QgcGFnaW5hdGVkU3ViUm93czogUml2VGFibGUuTmVzdGVkUm93PFI+W10gPSBbXTtcblxuICAgICAgZm9yIChjb25zdCBzdWJSb3cgb2YgaGVhZGVyUm93LnN1YlJvd3MpIHtcbiAgICAgICAgY29uc3QgcmVjdXJzZWRTdWJSb3c6IFJpdlRhYmxlLk5lc3RlZFJvdzxSPiB8IG51bGwgPVxuICAgICAgICAgIHBhZ2luYXRlQnkgPT09ICd0b3BSb3dzJ1xuICAgICAgICAgICAgPyBjb3VudFJvdyhzdWJSb3cpXG4gICAgICAgICAgICA6IHJlY3Vyc2l2ZVBhZ2luYXRlUm93cyhzdWJSb3cpO1xuXG4gICAgICAgIGlmIChyZWN1cnNlZFN1YlJvdyAhPSBudWxsKSB7XG4gICAgICAgICAgcGFnaW5hdGVkU3ViUm93cy5wdXNoKHJlY3Vyc2VkU3ViUm93KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAocGFnaW5hdGVkU3ViUm93cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIC8vIEtlZXAgYW55IGhlYWRlciB0aGF0IGhhcyBhdCBsZWFzdCBvbmUgc3Vicm93IGluIHRoZSBjdXJyZW50IHBhZ2VcbiAgICAgICAgcGFnaW5hdGVkSGVhZGVycy5wdXNoKHtcbiAgICAgICAgICAuLi5oZWFkZXJSb3csXG4gICAgICAgICAgc3ViUm93czogcGFnaW5hdGVkU3ViUm93cyxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhZ2luYXRlZEhlYWRlcnM7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,70 @@
1
+ export var TableResultHelpers;
2
+ (function (TableResultHelpers) {
3
+ function isRegularResult(result) {
4
+ if ('currentPageData' in result) {
5
+ return true;
6
+ }
7
+ return false;
8
+ }
9
+ TableResultHelpers.isRegularResult = isRegularResult;
10
+ function isGroupResult(result) {
11
+ if ('totalGroupCount' in result) {
12
+ return true;
13
+ }
14
+ return false;
15
+ }
16
+ TableResultHelpers.isGroupResult = isGroupResult;
17
+ function isNestedResult(result) {
18
+ if ('currentPageNestedHeaders' in result) {
19
+ return true;
20
+ }
21
+ return false;
22
+ }
23
+ TableResultHelpers.isNestedResult = isNestedResult;
24
+ function hasHeaderRows(result) {
25
+ return result.currentPageNestedHeaders.some(header => header.headerText != null);
26
+ }
27
+ TableResultHelpers.hasHeaderRows = hasHeaderRows;
28
+ function getAllRowsFromResult(result) {
29
+ if (isGroupResult(result)) {
30
+ return result.groupResults.flatMap(groups => groups.currentPageData);
31
+ }
32
+ else if (isNestedResult(result)) {
33
+ return getAllRowsFromNestedHeaders(result.currentPageNestedHeaders);
34
+ }
35
+ else {
36
+ return result.currentPageData;
37
+ }
38
+ }
39
+ TableResultHelpers.getAllRowsFromResult = getAllRowsFromResult;
40
+ function getAllRowsFromNestedRows(nestedRows) {
41
+ const allRows = [];
42
+ function recursiveGetNestedRows(currentNestedRow) {
43
+ allRows.push(currentNestedRow.data);
44
+ const subRows = currentNestedRow.subRows ?? [];
45
+ for (const subRow of subRows) {
46
+ recursiveGetNestedRows(subRow);
47
+ }
48
+ }
49
+ for (const nestedRow of nestedRows) {
50
+ recursiveGetNestedRows(nestedRow);
51
+ }
52
+ return allRows;
53
+ }
54
+ function getAllRowsFromNestedHeaders(nestedHeaders) {
55
+ const allRows = [];
56
+ for (const outerNestedHeaderRow of nestedHeaders) {
57
+ const rowsInHeader = getAllRowsFromNestedRows(outerNestedHeaderRow.subRows);
58
+ for (const rowInHeader of rowsInHeader) {
59
+ allRows.push(rowInHeader);
60
+ }
61
+ }
62
+ return allRows;
63
+ }
64
+ TableResultHelpers.getAllRowsFromNestedHeaders = getAllRowsFromNestedHeaders;
65
+ function getCsvFilename(pluralEntityName, options) {
66
+ return ((options?.csvFileBasename?.slice(0, 200) ?? pluralEntityName) + '.csv');
67
+ }
68
+ TableResultHelpers.getCsvFilename = getCsvFilename;
69
+ })(TableResultHelpers || (TableResultHelpers = {}));
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0LWhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi90YWJsZS90YWJsZS9zdGF0ZS1oZWxwZXJzL3Jlc3VsdC1oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sS0FBVyxrQkFBa0IsQ0E0SGxDO0FBNUhELFdBQWlCLGtCQUFrQjtJQUNqQyxTQUFnQixlQUFlLENBSTdCLE1BRzRCO1FBRTVCLElBQUksaUJBQWlCLElBQUksTUFBTSxFQUFFLENBQUM7WUFDaEMsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBYmUsa0NBQWUsa0JBYTlCLENBQUE7SUFFRCxTQUFnQixhQUFhLENBSTNCLE1BRzRCO1FBRTVCLElBQUksaUJBQWlCLElBQUksTUFBTSxFQUFFLENBQUM7WUFDaEMsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBYmUsZ0NBQWEsZ0JBYTVCLENBQUE7SUFFRCxTQUFnQixjQUFjLENBSTVCLE1BRzRCO1FBRTVCLElBQUksMEJBQTBCLElBQUksTUFBTSxFQUFFLENBQUM7WUFDekMsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBYmUsaUNBQWMsaUJBYTdCLENBQUE7SUFFRCxTQUFnQixhQUFhLENBQzNCLE1BQWdDO1FBRWhDLE9BQU8sTUFBTSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FDekMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsVUFBVSxJQUFJLElBQUksQ0FDcEMsQ0FBQztJQUNKLENBQUM7SUFOZSxnQ0FBYSxnQkFNNUIsQ0FBQTtJQUVELFNBQWdCLG9CQUFvQixDQUlsQyxNQUc0QjtRQUU1QixJQUFJLGFBQWEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQzFCLE9BQU8sTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDdkUsQ0FBQzthQUFNLElBQUksY0FBYyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDbEMsT0FBTywyQkFBMkIsQ0FBQyxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUN0RSxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sTUFBTSxDQUFDLGVBQWUsQ0FBQztRQUNoQyxDQUFDO0lBQ0gsQ0FBQztJQWhCZSx1Q0FBb0IsdUJBZ0JuQyxDQUFBO0lBRUQsU0FBUyx3QkFBd0IsQ0FDL0IsVUFBbUM7UUFFbkMsTUFBTSxPQUFPLEdBQVEsRUFBRSxDQUFDO1FBRXhCLFNBQVMsc0JBQXNCLENBQUMsZ0JBQXVDO1lBQ3JFLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFcEMsTUFBTSxPQUFPLEdBQTRCLGdCQUFnQixDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7WUFDeEUsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDN0Isc0JBQXNCLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDakMsQ0FBQztRQUNILENBQUM7UUFFRCxLQUFLLE1BQU0sU0FBUyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ25DLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3BDLENBQUM7UUFFRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQsU0FBZ0IsMkJBQTJCLENBQ3pDLGFBQTRDO1FBRTVDLE1BQU0sT0FBTyxHQUFRLEVBQUUsQ0FBQztRQUV4QixLQUFLLE1BQU0sb0JBQW9CLElBQUksYUFBYSxFQUFFLENBQUM7WUFDakQsTUFBTSxZQUFZLEdBQVEsd0JBQXdCLENBQ2hELG9CQUFvQixDQUFDLE9BQU8sQ0FDN0IsQ0FBQztZQUVGLEtBQUssTUFBTSxXQUFXLElBQUksWUFBWSxFQUFFLENBQUM7Z0JBQ3ZDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDNUIsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBaEJlLDhDQUEyQiw4QkFnQjFDLENBQUE7SUFFRCxTQUFnQixjQUFjLENBTTVCLGdCQUF3QixFQUN4QixPQUE2QztRQUU3QyxPQUFPLENBQ0wsQ0FBQyxPQUFPLEVBQUUsZUFBZSxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLElBQUksZ0JBQWdCLENBQUMsR0FBRyxNQUFNLENBQ3ZFLENBQUM7SUFDSixDQUFDO0lBWmUsaUNBQWMsaUJBWTdCLENBQUE7QUFDSCxDQUFDLEVBNUhnQixrQkFBa0IsS0FBbEIsa0JBQWtCLFFBNEhsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJpdlRhYmxlIH0gZnJvbSAnLi4vc3RhdGUnO1xuXG5leHBvcnQgbmFtZXNwYWNlIFRhYmxlUmVzdWx0SGVscGVycyB7XG4gIGV4cG9ydCBmdW5jdGlvbiBpc1JlZ3VsYXJSZXN1bHQ8XG4gICAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgICBHIGV4dGVuZHMgUml2VGFibGUuR3JvdXAsXG4gID4oXG4gICAgcmVzdWx0OlxuICAgICAgfCBSaXZUYWJsZS5SZXN1bHQ8Uj5cbiAgICAgIHwgUml2VGFibGUuR3JvdXBSZXN1bHQ8UiwgRz5cbiAgICAgIHwgUml2VGFibGUuTmVzdGVkUmVzdWx0PFI+LFxuICApOiByZXN1bHQgaXMgUml2VGFibGUuUmVzdWx0PFI+IHtcbiAgICBpZiAoJ2N1cnJlbnRQYWdlRGF0YScgaW4gcmVzdWx0KSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGlzR3JvdXBSZXN1bHQ8XG4gICAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgICBHIGV4dGVuZHMgUml2VGFibGUuR3JvdXAsXG4gID4oXG4gICAgcmVzdWx0OlxuICAgICAgfCBSaXZUYWJsZS5SZXN1bHQ8Uj5cbiAgICAgIHwgUml2VGFibGUuR3JvdXBSZXN1bHQ8UiwgRz5cbiAgICAgIHwgUml2VGFibGUuTmVzdGVkUmVzdWx0PFI+LFxuICApOiByZXN1bHQgaXMgUml2VGFibGUuR3JvdXBSZXN1bHQ8UiwgRz4ge1xuICAgIGlmICgndG90YWxHcm91cENvdW50JyBpbiByZXN1bHQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBleHBvcnQgZnVuY3Rpb24gaXNOZXN0ZWRSZXN1bHQ8XG4gICAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgICBHIGV4dGVuZHMgUml2VGFibGUuR3JvdXAsXG4gID4oXG4gICAgcmVzdWx0OlxuICAgICAgfCBSaXZUYWJsZS5SZXN1bHQ8Uj5cbiAgICAgIHwgUml2VGFibGUuR3JvdXBSZXN1bHQ8UiwgRz5cbiAgICAgIHwgUml2VGFibGUuTmVzdGVkUmVzdWx0PFI+LFxuICApOiByZXN1bHQgaXMgUml2VGFibGUuTmVzdGVkUmVzdWx0PFI+IHtcbiAgICBpZiAoJ2N1cnJlbnRQYWdlTmVzdGVkSGVhZGVycycgaW4gcmVzdWx0KSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGhhc0hlYWRlclJvd3M8UiBleHRlbmRzIFJpdlRhYmxlLlJvdz4oXG4gICAgcmVzdWx0OiBSaXZUYWJsZS5OZXN0ZWRSZXN1bHQ8Uj4sXG4gICk6IGJvb2xlYW4ge1xuICAgIHJldHVybiByZXN1bHQuY3VycmVudFBhZ2VOZXN0ZWRIZWFkZXJzLnNvbWUoXG4gICAgICBoZWFkZXIgPT4gaGVhZGVyLmhlYWRlclRleHQgIT0gbnVsbCxcbiAgICApO1xuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGdldEFsbFJvd3NGcm9tUmVzdWx0PFxuICAgIFIgZXh0ZW5kcyBSaXZUYWJsZS5Sb3csXG4gICAgRyBleHRlbmRzIFJpdlRhYmxlLkdyb3VwLFxuICA+KFxuICAgIHJlc3VsdDpcbiAgICAgIHwgUml2VGFibGUuUmVzdWx0PFI+XG4gICAgICB8IFJpdlRhYmxlLkdyb3VwUmVzdWx0PFIsIEc+XG4gICAgICB8IFJpdlRhYmxlLk5lc3RlZFJlc3VsdDxSPixcbiAgKTogUltdIHtcbiAgICBpZiAoaXNHcm91cFJlc3VsdChyZXN1bHQpKSB7XG4gICAgICByZXR1cm4gcmVzdWx0Lmdyb3VwUmVzdWx0cy5mbGF0TWFwKGdyb3VwcyA9PiBncm91cHMuY3VycmVudFBhZ2VEYXRhKTtcbiAgICB9IGVsc2UgaWYgKGlzTmVzdGVkUmVzdWx0KHJlc3VsdCkpIHtcbiAgICAgIHJldHVybiBnZXRBbGxSb3dzRnJvbU5lc3RlZEhlYWRlcnMocmVzdWx0LmN1cnJlbnRQYWdlTmVzdGVkSGVhZGVycyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiByZXN1bHQuY3VycmVudFBhZ2VEYXRhO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGdldEFsbFJvd3NGcm9tTmVzdGVkUm93czxSIGV4dGVuZHMgUml2VGFibGUuUm93PihcbiAgICBuZXN0ZWRSb3dzOiBSaXZUYWJsZS5OZXN0ZWRSb3c8Uj5bXSxcbiAgKTogUltdIHtcbiAgICBjb25zdCBhbGxSb3dzOiBSW10gPSBbXTtcblxuICAgIGZ1bmN0aW9uIHJlY3Vyc2l2ZUdldE5lc3RlZFJvd3MoY3VycmVudE5lc3RlZFJvdzogUml2VGFibGUuTmVzdGVkUm93PFI+KSB7XG4gICAgICBhbGxSb3dzLnB1c2goY3VycmVudE5lc3RlZFJvdy5kYXRhKTtcblxuICAgICAgY29uc3Qgc3ViUm93czogUml2VGFibGUuTmVzdGVkUm93PFI+W10gPSBjdXJyZW50TmVzdGVkUm93LnN1YlJvd3MgPz8gW107XG4gICAgICBmb3IgKGNvbnN0IHN1YlJvdyBvZiBzdWJSb3dzKSB7XG4gICAgICAgIHJlY3Vyc2l2ZUdldE5lc3RlZFJvd3Moc3ViUm93KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IG5lc3RlZFJvdyBvZiBuZXN0ZWRSb3dzKSB7XG4gICAgICByZWN1cnNpdmVHZXROZXN0ZWRSb3dzKG5lc3RlZFJvdyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFsbFJvd3M7XG4gIH1cblxuICBleHBvcnQgZnVuY3Rpb24gZ2V0QWxsUm93c0Zyb21OZXN0ZWRIZWFkZXJzPFIgZXh0ZW5kcyBSaXZUYWJsZS5Sb3c+KFxuICAgIG5lc3RlZEhlYWRlcnM6IFJpdlRhYmxlLk5lc3RlZEhlYWRlclJvdzxSPltdLFxuICApOiBSW10ge1xuICAgIGNvbnN0IGFsbFJvd3M6IFJbXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBvdXRlck5lc3RlZEhlYWRlclJvdyBvZiBuZXN0ZWRIZWFkZXJzKSB7XG4gICAgICBjb25zdCByb3dzSW5IZWFkZXI6IFJbXSA9IGdldEFsbFJvd3NGcm9tTmVzdGVkUm93cyhcbiAgICAgICAgb3V0ZXJOZXN0ZWRIZWFkZXJSb3cuc3ViUm93cyxcbiAgICAgICk7XG5cbiAgICAgIGZvciAoY29uc3Qgcm93SW5IZWFkZXIgb2Ygcm93c0luSGVhZGVyKSB7XG4gICAgICAgIGFsbFJvd3MucHVzaChyb3dJbkhlYWRlcik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGFsbFJvd3M7XG4gIH1cblxuICBleHBvcnQgZnVuY3Rpb24gZ2V0Q3N2RmlsZW5hbWU8XG4gICAgUiBleHRlbmRzIFJpdlRhYmxlLlJvdyxcbiAgICBDIGV4dGVuZHMgUml2VGFibGUuQ29sdW1uLFxuICAgIEYgZXh0ZW5kcyBSaXZUYWJsZS5GaWx0ZXJzLFxuICAgIEcgZXh0ZW5kcyBSaXZUYWJsZS5Hcm91cCxcbiAgPihcbiAgICBwbHVyYWxFbnRpdHlOYW1lOiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IFJpdlRhYmxlLk1hbmFnZXJPcHRpb25zPFIsIEMsIEYsIEc+LFxuICApOiBzdHJpbmcge1xuICAgIHJldHVybiAoXG4gICAgICAob3B0aW9ucz8uY3N2RmlsZUJhc2VuYW1lPy5zbGljZSgwLCAyMDApID8/IHBsdXJhbEVudGl0eU5hbWUpICsgJy5jc3YnXG4gICAgKTtcbiAgfVxufVxuIl19