@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,61 @@
1
+ export function createCellCoordinateCalculator(cells, totalColumns) {
2
+ // Pre-calculate coordinates for all cells
3
+ const cellCoordinates = [];
4
+ const grid = [];
5
+ let currentRow = 0;
6
+ let currentCol = 0;
7
+ // Process each cell and store its coordinates
8
+ for (let i = 0; i < cells.length; i++) {
9
+ const { rowspan, colspan } = cells[i];
10
+ // Find the next available position
11
+ while (true) {
12
+ // Ensure we have enough rows in our grid
13
+ while (grid.length <= currentRow) {
14
+ grid.push(new Array(totalColumns).fill(false));
15
+ }
16
+ // Check if current position is available
17
+ if (!grid[currentRow][currentCol]) {
18
+ break;
19
+ }
20
+ // Move to next column
21
+ currentCol++;
22
+ if (currentCol >= totalColumns) {
23
+ currentCol = 0;
24
+ currentRow++;
25
+ }
26
+ }
27
+ // Store coordinates for this cell
28
+ const startCoord = { row: currentRow, col: currentCol };
29
+ const endCoord = {
30
+ row: currentRow + rowspan - 1,
31
+ col: currentCol + colspan - 1,
32
+ };
33
+ cellCoordinates[i] = { start: startCoord, end: endCoord };
34
+ // Mark the positions this cell occupies as taken
35
+ for (let r = currentRow; r < currentRow + rowspan; r++) {
36
+ // Ensure we have enough rows
37
+ while (grid.length <= r) {
38
+ grid.push(new Array(totalColumns).fill(false));
39
+ }
40
+ for (let c = currentCol; c < currentCol + colspan; c++) {
41
+ if (c < totalColumns) {
42
+ grid[r][c] = true;
43
+ }
44
+ }
45
+ }
46
+ // Move to next position for the next cell
47
+ currentCol++;
48
+ if (currentCol >= totalColumns) {
49
+ currentCol = 0;
50
+ currentRow++;
51
+ }
52
+ }
53
+ // Return the lookup function
54
+ return function getCellCoordinates(cellIndex) {
55
+ if (cellIndex < 0 || cellIndex >= cells.length) {
56
+ throw new Error('Cell index out of bounds');
57
+ }
58
+ return cellCoordinates[cellIndex];
59
+ };
60
+ }
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29vcmRpbmF0ZS1oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi90YWJsZS9zaW1wbGUtdGFibGUvY29vcmRpbmF0ZS1oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBZUEsTUFBTSxVQUFVLDhCQUE4QixDQUM1QyxLQUFhLEVBQ2IsWUFBb0I7SUFFcEIsMENBQTBDO0lBQzFDLE1BQU0sZUFBZSxHQUFhLEVBQUUsQ0FBQztJQUNyQyxNQUFNLElBQUksR0FBZ0IsRUFBRSxDQUFDO0lBQzdCLElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQztJQUNuQixJQUFJLFVBQVUsR0FBRyxDQUFDLENBQUM7SUFFbkIsOENBQThDO0lBQzlDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDdEMsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFdEMsbUNBQW1DO1FBQ25DLE9BQU8sSUFBSSxFQUFFLENBQUM7WUFDWix5Q0FBeUM7WUFDekMsT0FBTyxJQUFJLENBQUMsTUFBTSxJQUFJLFVBQVUsRUFBRSxDQUFDO2dCQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ2pELENBQUM7WUFFRCx5Q0FBeUM7WUFDekMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO2dCQUNsQyxNQUFNO1lBQ1IsQ0FBQztZQUVELHNCQUFzQjtZQUN0QixVQUFVLEVBQUUsQ0FBQztZQUNiLElBQUksVUFBVSxJQUFJLFlBQVksRUFBRSxDQUFDO2dCQUMvQixVQUFVLEdBQUcsQ0FBQyxDQUFDO2dCQUNmLFVBQVUsRUFBRSxDQUFDO1lBQ2YsQ0FBQztRQUNILENBQUM7UUFFRCxrQ0FBa0M7UUFDbEMsTUFBTSxVQUFVLEdBQWUsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsQ0FBQztRQUNwRSxNQUFNLFFBQVEsR0FBZTtZQUMzQixHQUFHLEVBQUUsVUFBVSxHQUFHLE9BQU8sR0FBRyxDQUFDO1lBQzdCLEdBQUcsRUFBRSxVQUFVLEdBQUcsT0FBTyxHQUFHLENBQUM7U0FDOUIsQ0FBQztRQUVGLGVBQWUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxDQUFDO1FBRTFELGlEQUFpRDtRQUNqRCxLQUFLLElBQUksQ0FBQyxHQUFHLFVBQVUsRUFBRSxDQUFDLEdBQUcsVUFBVSxHQUFHLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3ZELDZCQUE2QjtZQUM3QixPQUFPLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDakQsQ0FBQztZQUVELEtBQUssSUFBSSxDQUFDLEdBQUcsVUFBVSxFQUFFLENBQUMsR0FBRyxVQUFVLEdBQUcsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ3ZELElBQUksQ0FBQyxHQUFHLFlBQVksRUFBRSxDQUFDO29CQUNyQixJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO2dCQUNwQixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFFRCwwQ0FBMEM7UUFDMUMsVUFBVSxFQUFFLENBQUM7UUFDYixJQUFJLFVBQVUsSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUMvQixVQUFVLEdBQUcsQ0FBQyxDQUFDO1lBQ2YsVUFBVSxFQUFFLENBQUM7UUFDZixDQUFDO0lBQ0gsQ0FBQztJQUVELDZCQUE2QjtJQUM3QixPQUFPLFNBQVMsa0JBQWtCLENBQUMsU0FBaUI7UUFDbEQsSUFBSSxTQUFTLEdBQUcsQ0FBQyxJQUFJLFNBQVMsSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDL0MsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBQzlDLENBQUM7UUFFRCxPQUFPLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNwQyxDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgQ2VsbCA9IHtcbiAgcm93c3BhbjogbnVtYmVyO1xuICBjb2xzcGFuOiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBDb29yZGluYXRlID0ge1xuICByb3c6IG51bWJlcjtcbiAgY29sOiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBCb3VuZHMgPSB7XG4gIHN0YXJ0OiBDb29yZGluYXRlO1xuICBlbmQ6IENvb3JkaW5hdGU7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ2VsbENvb3JkaW5hdGVDYWxjdWxhdG9yKFxuICBjZWxsczogQ2VsbFtdLFxuICB0b3RhbENvbHVtbnM6IG51bWJlcixcbik6IChjZWxsSW5kZXg6IG51bWJlcikgPT4gQm91bmRzIHtcbiAgLy8gUHJlLWNhbGN1bGF0ZSBjb29yZGluYXRlcyBmb3IgYWxsIGNlbGxzXG4gIGNvbnN0IGNlbGxDb29yZGluYXRlczogQm91bmRzW10gPSBbXTtcbiAgY29uc3QgZ3JpZDogYm9vbGVhbltdW10gPSBbXTtcbiAgbGV0IGN1cnJlbnRSb3cgPSAwO1xuICBsZXQgY3VycmVudENvbCA9IDA7XG5cbiAgLy8gUHJvY2VzcyBlYWNoIGNlbGwgYW5kIHN0b3JlIGl0cyBjb29yZGluYXRlc1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGNlbGxzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgeyByb3dzcGFuLCBjb2xzcGFuIH0gPSBjZWxsc1tpXTtcblxuICAgIC8vIEZpbmQgdGhlIG5leHQgYXZhaWxhYmxlIHBvc2l0aW9uXG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIC8vIEVuc3VyZSB3ZSBoYXZlIGVub3VnaCByb3dzIGluIG91ciBncmlkXG4gICAgICB3aGlsZSAoZ3JpZC5sZW5ndGggPD0gY3VycmVudFJvdykge1xuICAgICAgICBncmlkLnB1c2gobmV3IEFycmF5KHRvdGFsQ29sdW1ucykuZmlsbChmYWxzZSkpO1xuICAgICAgfVxuXG4gICAgICAvLyBDaGVjayBpZiBjdXJyZW50IHBvc2l0aW9uIGlzIGF2YWlsYWJsZVxuICAgICAgaWYgKCFncmlkW2N1cnJlbnRSb3ddW2N1cnJlbnRDb2xdKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICAvLyBNb3ZlIHRvIG5leHQgY29sdW1uXG4gICAgICBjdXJyZW50Q29sKys7XG4gICAgICBpZiAoY3VycmVudENvbCA+PSB0b3RhbENvbHVtbnMpIHtcbiAgICAgICAgY3VycmVudENvbCA9IDA7XG4gICAgICAgIGN1cnJlbnRSb3crKztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTdG9yZSBjb29yZGluYXRlcyBmb3IgdGhpcyBjZWxsXG4gICAgY29uc3Qgc3RhcnRDb29yZDogQ29vcmRpbmF0ZSA9IHsgcm93OiBjdXJyZW50Um93LCBjb2w6IGN1cnJlbnRDb2wgfTtcbiAgICBjb25zdCBlbmRDb29yZDogQ29vcmRpbmF0ZSA9IHtcbiAgICAgIHJvdzogY3VycmVudFJvdyArIHJvd3NwYW4gLSAxLFxuICAgICAgY29sOiBjdXJyZW50Q29sICsgY29sc3BhbiAtIDEsXG4gICAgfTtcblxuICAgIGNlbGxDb29yZGluYXRlc1tpXSA9IHsgc3RhcnQ6IHN0YXJ0Q29vcmQsIGVuZDogZW5kQ29vcmQgfTtcblxuICAgIC8vIE1hcmsgdGhlIHBvc2l0aW9ucyB0aGlzIGNlbGwgb2NjdXBpZXMgYXMgdGFrZW5cbiAgICBmb3IgKGxldCByID0gY3VycmVudFJvdzsgciA8IGN1cnJlbnRSb3cgKyByb3dzcGFuOyByKyspIHtcbiAgICAgIC8vIEVuc3VyZSB3ZSBoYXZlIGVub3VnaCByb3dzXG4gICAgICB3aGlsZSAoZ3JpZC5sZW5ndGggPD0gcikge1xuICAgICAgICBncmlkLnB1c2gobmV3IEFycmF5KHRvdGFsQ29sdW1ucykuZmlsbChmYWxzZSkpO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGxldCBjID0gY3VycmVudENvbDsgYyA8IGN1cnJlbnRDb2wgKyBjb2xzcGFuOyBjKyspIHtcbiAgICAgICAgaWYgKGMgPCB0b3RhbENvbHVtbnMpIHtcbiAgICAgICAgICBncmlkW3JdW2NdID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIE1vdmUgdG8gbmV4dCBwb3NpdGlvbiBmb3IgdGhlIG5leHQgY2VsbFxuICAgIGN1cnJlbnRDb2wrKztcbiAgICBpZiAoY3VycmVudENvbCA+PSB0b3RhbENvbHVtbnMpIHtcbiAgICAgIGN1cnJlbnRDb2wgPSAwO1xuICAgICAgY3VycmVudFJvdysrO1xuICAgIH1cbiAgfVxuXG4gIC8vIFJldHVybiB0aGUgbG9va3VwIGZ1bmN0aW9uXG4gIHJldHVybiBmdW5jdGlvbiBnZXRDZWxsQ29vcmRpbmF0ZXMoY2VsbEluZGV4OiBudW1iZXIpOiBCb3VuZHMge1xuICAgIGlmIChjZWxsSW5kZXggPCAwIHx8IGNlbGxJbmRleCA+PSBjZWxscy5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2VsbCBpbmRleCBvdXQgb2YgYm91bmRzJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNlbGxDb29yZGluYXRlc1tjZWxsSW5kZXhdO1xuICB9O1xufVxuIl19
@@ -0,0 +1,36 @@
1
+ import { ChangeDetectionStrategy, Component, HostBinding, } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class SimpleTableCellComponent {
4
+ constructor(cdr, elementRef) {
5
+ this.cdr = cdr;
6
+ this.elementRef = elementRef;
7
+ }
8
+ get classes() {
9
+ return [
10
+ this.alignment,
11
+ this.pinned && 'pinned',
12
+ this.isLastRow && 'last-row',
13
+ ]
14
+ .filter(Boolean)
15
+ .join(' ');
16
+ }
17
+ get leftPx() {
18
+ if (this.pinned && this.leftPinOffset != undefined) {
19
+ return this.leftPinOffset;
20
+ }
21
+ return null;
22
+ }
23
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SimpleTableCellComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
24
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SimpleTableCellComponent, selector: "[riv-simple-table-cell]", host: { properties: { "class": "this.classes", "style.left.px": "this.leftPx" } }, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [":host{height:calc(var(--base-grid-size) * 8);padding:var(--size-xxsmall) var(--size-small);font:var(--body-small);vertical-align:middle;background-color:inherit}:host:not(.last-row){border-bottom:var(--border-width) solid var(--border-light)}:host.pinned{position:sticky;z-index:var(--above-scroll-z-index)}\n", ":host.left{text-align:left}:host.center{text-align:center}:host.right{text-align:right}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
25
+ }
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SimpleTableCellComponent, decorators: [{
27
+ type: Component,
28
+ args: [{ selector: '[riv-simple-table-cell]', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content></ng-content>\n", styles: [":host{height:calc(var(--base-grid-size) * 8);padding:var(--size-xxsmall) var(--size-small);font:var(--body-small);vertical-align:middle;background-color:inherit}:host:not(.last-row){border-bottom:var(--border-width) solid var(--border-light)}:host.pinned{position:sticky;z-index:var(--above-scroll-z-index)}\n", ":host.left{text-align:left}:host.center{text-align:center}:host.right{text-align:right}\n"] }]
29
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }], propDecorators: { classes: [{
30
+ type: HostBinding,
31
+ args: ['class']
32
+ }], leftPx: [{
33
+ type: HostBinding,
34
+ args: ['style.left.px']
35
+ }] } });
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlLXRhYmxlLWNlbGwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvdGFibGUvc2ltcGxlLXRhYmxlL3NpbXBsZS10YWJsZS1jZWxsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Jpdi9zcmMvbGliL3RhYmxlL3NpbXBsZS10YWJsZS9zaW1wbGUtdGFibGUtY2VsbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxXQUFXLEdBQ1osTUFBTSxlQUFlLENBQUM7O0FBU3ZCLE1BQU0sT0FBTyx3QkFBd0I7SUFTbkMsWUFDUyxHQUFzQixFQUN0QixVQUE0QztRQUQ1QyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixlQUFVLEdBQVYsVUFBVSxDQUFrQztJQUNsRCxDQUFDO0lBRUosSUFDSSxPQUFPO1FBQ1QsT0FBTztZQUNMLElBQUksQ0FBQyxTQUFTO1lBQ2QsSUFBSSxDQUFDLE1BQU0sSUFBSSxRQUFRO1lBQ3ZCLElBQUksQ0FBQyxTQUFTLElBQUksVUFBVTtTQUM3QjthQUNFLE1BQU0sQ0FBQyxPQUFPLENBQUM7YUFDZixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDZixDQUFDO0lBRUQsSUFDSSxNQUFNO1FBQ1IsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksU0FBUyxFQUFFLENBQUM7WUFDbkQsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQzVCLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7K0dBL0JVLHdCQUF3QjttR0FBeEIsd0JBQXdCLGtKQ2ZyQyw2QkFDQTs7NEZEY2Esd0JBQXdCO2tCQU5wQyxTQUFTOytCQUNFLHlCQUF5QixtQkFHbEIsdUJBQXVCLENBQUMsTUFBTTsrR0FpQjNDLE9BQU87c0JBRFYsV0FBVzt1QkFBQyxPQUFPO2dCQVloQixNQUFNO3NCQURULFdBQVc7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBIb3N0QmluZGluZyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSaXZUYWJsZSB9IGZyb20gJy4uL3RhYmxlL3N0YXRlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnW3Jpdi1zaW1wbGUtdGFibGUtY2VsbF0nLFxuICB0ZW1wbGF0ZVVybDogJy4vc2ltcGxlLXRhYmxlLWNlbGwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zaW1wbGUtdGFibGUtY2VsbC5jb21wb25lbnQuY3NzJywgJy4vYWxpZ25tZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2ltcGxlVGFibGVDZWxsQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIFRoZXNlIGdldCBzZXQgYXV0b21hdGljYWxseSBieSB0aGUgcGFyZW50IFNpbXBsZVRhYmxlQ29tcG9uZW50LlxuICAgKi9cbiAgcHVibGljIGFsaWdubWVudD86IFJpdlRhYmxlLkNvbHVtbkFsaWdubWVudDtcbiAgcHVibGljIHBpbm5lZD86IGJvb2xlYW47XG4gIHB1YmxpYyBpc0xhc3RSb3c/OiBib29sZWFuO1xuICBwdWJsaWMgbGVmdFBpbk9mZnNldD86IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MVGFibGVDZWxsRWxlbWVudD4sXG4gICkge31cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgZ2V0IGNsYXNzZXMoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHRoaXMuYWxpZ25tZW50LFxuICAgICAgdGhpcy5waW5uZWQgJiYgJ3Bpbm5lZCcsXG4gICAgICB0aGlzLmlzTGFzdFJvdyAmJiAnbGFzdC1yb3cnLFxuICAgIF1cbiAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgIC5qb2luKCcgJyk7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLmxlZnQucHgnKVxuICBnZXQgbGVmdFB4KCkge1xuICAgIGlmICh0aGlzLnBpbm5lZCAmJiB0aGlzLmxlZnRQaW5PZmZzZXQgIT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdGhpcy5sZWZ0UGluT2Zmc2V0O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuIiwiPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuIl19
@@ -0,0 +1,37 @@
1
+ import { ChangeDetectionStrategy, Component, HostBinding, Input, } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class SimpleTableHeaderCellComponent {
4
+ constructor(cdr, elementRef) {
5
+ this.cdr = cdr;
6
+ this.elementRef = elementRef;
7
+ }
8
+ get classes() {
9
+ return [this.alignment, this.pinned && 'pinned'].filter(Boolean).join(' ');
10
+ }
11
+ get leftPx() {
12
+ if (this.pinned && this.leftPinOffset != undefined) {
13
+ return this.leftPinOffset;
14
+ }
15
+ return null;
16
+ }
17
+ get width() {
18
+ return this.elementRef.nativeElement.offsetWidth;
19
+ }
20
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SimpleTableHeaderCellComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
21
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SimpleTableHeaderCellComponent, selector: "[riv-simple-table-header-cell]", inputs: { dataType: "dataType", pinned: "pinned" }, host: { properties: { "class": "this.classes", "style.left.px": "this.leftPx" } }, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [":host{border-bottom:var(--border-width) solid var(--border-light);background-color:var(--surface-light-1);padding:var(--size-xxsmall) var(--size-small);position:sticky;top:0;font-size:var(--size-medium);font-weight:var(--font-weight-heavy);line-height:1;padding:var(--size-xsmall) var(--size-small);vertical-align:middle;height:calc(var(--base-grid-size) * 8);white-space:nowrap}:host.pinned{z-index:var(--above-scroll-z-index)}:host:not(:last-child){border-right:var(--border-width) solid var(--border-light)}\n", ":host.left{text-align:left}:host.center{text-align:center}:host.right{text-align:right}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
22
+ }
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SimpleTableHeaderCellComponent, decorators: [{
24
+ type: Component,
25
+ args: [{ selector: '[riv-simple-table-header-cell]', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content></ng-content>\n", styles: [":host{border-bottom:var(--border-width) solid var(--border-light);background-color:var(--surface-light-1);padding:var(--size-xxsmall) var(--size-small);position:sticky;top:0;font-size:var(--size-medium);font-weight:var(--font-weight-heavy);line-height:1;padding:var(--size-xsmall) var(--size-small);vertical-align:middle;height:calc(var(--base-grid-size) * 8);white-space:nowrap}:host.pinned{z-index:var(--above-scroll-z-index)}:host:not(:last-child){border-right:var(--border-width) solid var(--border-light)}\n", ":host.left{text-align:left}:host.center{text-align:center}:host.right{text-align:right}\n"] }]
26
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }], propDecorators: { dataType: [{
27
+ type: Input
28
+ }], pinned: [{
29
+ type: Input
30
+ }], classes: [{
31
+ type: HostBinding,
32
+ args: ['class']
33
+ }], leftPx: [{
34
+ type: HostBinding,
35
+ args: ['style.left.px']
36
+ }] } });
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlLXRhYmxlLWhlYWRlci1jZWxsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Jpdi9zcmMvbGliL3RhYmxlL3NpbXBsZS10YWJsZS9zaW1wbGUtdGFibGUtaGVhZGVyLWNlbGwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvdGFibGUvc2ltcGxlLXRhYmxlL3NpbXBsZS10YWJsZS1oZWFkZXItY2VsbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxXQUFXLEVBQ1gsS0FBSyxHQUNOLE1BQU0sZUFBZSxDQUFDOztBQVN2QixNQUFNLE9BQU8sOEJBQThCO0lBV3pDLFlBQ1MsR0FBc0IsRUFDdEIsVUFBNEM7UUFENUMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsZUFBVSxHQUFWLFVBQVUsQ0FBa0M7SUFDbEQsQ0FBQztJQUVKLElBQ0ksT0FBTztRQUNULE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxNQUFNLElBQUksUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQsSUFDSSxNQUFNO1FBQ1IsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksU0FBUyxFQUFFLENBQUM7WUFDbkQsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQzVCLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQztJQUNuRCxDQUFDOytHQS9CVSw4QkFBOEI7bUdBQTlCLDhCQUE4Qiw2TUNoQjNDLDZCQUNBOzs0RkRlYSw4QkFBOEI7a0JBTjFDLFNBQVM7K0JBQ0UsZ0NBQWdDLG1CQUd6Qix1QkFBdUIsQ0FBQyxNQUFNOytHQUd0QyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLE1BQU07c0JBQWQsS0FBSztnQkFjRixPQUFPO3NCQURWLFdBQVc7dUJBQUMsT0FBTztnQkFNaEIsTUFBTTtzQkFEVCxXQUFXO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJpdlRhYmxlIH0gZnJvbSAnLi4vdGFibGUvc3RhdGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdbcml2LXNpbXBsZS10YWJsZS1oZWFkZXItY2VsbF0nLFxuICB0ZW1wbGF0ZVVybDogJy4vc2ltcGxlLXRhYmxlLWhlYWRlci1jZWxsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2ltcGxlLXRhYmxlLWhlYWRlci1jZWxsLmNvbXBvbmVudC5jc3MnLCAnLi9hbGlnbm1lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTaW1wbGVUYWJsZUhlYWRlckNlbGxDb21wb25lbnQge1xuICBASW5wdXQoKSBkYXRhVHlwZT86IFJpdlRhYmxlLkNvbHVtbkRhdGFUeXBlO1xuXG4gIEBJbnB1dCgpIHBpbm5lZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoaXMgZ2V0cyBzZXQgYXV0b21hdGljYWxseSBieSB0aGUgcGFyZW50IFNpbXBsZVRhYmxlQ29tcG9uZW50LlxuICAgKi9cbiAgcHVibGljIGFsaWdubWVudD86IFJpdlRhYmxlLkNvbHVtbkFsaWdubWVudDtcbiAgcHVibGljIGxlZnRQaW5PZmZzZXQ/OiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTFRhYmxlQ2VsbEVsZW1lbnQ+LFxuICApIHt9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIGdldCBjbGFzc2VzKCkge1xuICAgIHJldHVybiBbdGhpcy5hbGlnbm1lbnQsIHRoaXMucGlubmVkICYmICdwaW5uZWQnXS5maWx0ZXIoQm9vbGVhbikuam9pbignICcpO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS5sZWZ0LnB4JylcbiAgZ2V0IGxlZnRQeCgpIHtcbiAgICBpZiAodGhpcy5waW5uZWQgJiYgdGhpcy5sZWZ0UGluT2Zmc2V0ICE9IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRoaXMubGVmdFBpbk9mZnNldDtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBnZXQgd2lkdGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuICB9XG59XG4iLCI8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4iXX0=
@@ -4,10 +4,10 @@ export class SimpleTableRowComponent {
4
4
  constructor() {
5
5
  this.selected = false;
6
6
  }
7
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SimpleTableRowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SimpleTableRowComponent, selector: "[riv-simple-table-row]", inputs: { selected: "selected" }, host: { properties: { "class.selected": "this.selected" } }, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [":host{display:table-row;text-decoration:none;color:inherit;background-color:var(--surface-light-0);transition:background-color var(--short-transition)}:host(a),:host(button){cursor:pointer}:host(a):hover,:host(button):hover{background-color:var(--surface-light-2)}:host(a):active,:host(button):active{background-color:var(--surface-light-3)}:host.selected{background-color:var(--surface-light-selected)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7
9
  }
8
- SimpleTableRowComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SimpleTableRowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
9
- SimpleTableRowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: SimpleTableRowComponent, selector: "[riv-simple-table-row]", inputs: { selected: "selected" }, host: { properties: { "class.selected": "this.selected" } }, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [":host{display:table-row;text-decoration:none;color:inherit;background-color:var(--surface-light-0);transition:background-color var(--short-transition)}:host(a),:host(button){cursor:pointer}:host(a):hover,:host(button):hover{background-color:var(--surface-light-2)}:host(a):active,:host(button):active{background-color:var(--surface-light-3)}:host.selected{background-color:var(--surface-light-selected)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
10
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SimpleTableRowComponent, decorators: [{
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SimpleTableRowComponent, decorators: [{
11
11
  type: Component,
12
12
  args: [{ selector: '[riv-simple-table-row]', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content></ng-content>\n", styles: [":host{display:table-row;text-decoration:none;color:inherit;background-color:var(--surface-light-0);transition:background-color var(--short-transition)}:host(a),:host(button){cursor:pointer}:host(a):hover,:host(button):hover{background-color:var(--surface-light-2)}:host(a):active,:host(button):active{background-color:var(--surface-light-3)}:host.selected{background-color:var(--surface-light-selected)}\n"] }]
13
13
  }], propDecorators: { selected: [{
@@ -16,4 +16,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
16
16
  type: HostBinding,
17
17
  args: ['class.selected']
18
18
  }] } });
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlLXRhYmxlLXJvdy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi90YWJsZS9zaW1wbGUtdGFibGUvc2ltcGxlLXRhYmxlLXJvdy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi90YWJsZS9zaW1wbGUtdGFibGUvc2ltcGxlLXRhYmxlLXJvdy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxXQUFXLEVBQ1gsS0FBSyxHQUNOLE1BQU0sZUFBZSxDQUFDOztBQVF2QixNQUFNLE9BQU8sdUJBQXVCO0lBTnBDO1FBU0UsYUFBUSxHQUFZLEtBQUssQ0FBQztLQUMzQjs7cUhBSlksdUJBQXVCO3lHQUF2Qix1QkFBdUIsNkpDYnBDLDZCQUNBOzRGRFlhLHVCQUF1QjtrQkFObkMsU0FBUzsrQkFDRSx3QkFBd0IsbUJBR2pCLHVCQUF1QixDQUFDLE1BQU07OEJBSy9DLFFBQVE7c0JBRlAsS0FBSzs7c0JBQ0wsV0FBVzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdbcml2LXNpbXBsZS10YWJsZS1yb3ddJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NpbXBsZS10YWJsZS1yb3cuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zaW1wbGUtdGFibGUtcm93LmNvbXBvbmVudC5jc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNpbXBsZVRhYmxlUm93Q29tcG9uZW50IHtcbiAgQElucHV0KClcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5zZWxlY3RlZCcpXG4gIHNlbGVjdGVkOiBib29sZWFuID0gZmFsc2U7XG59XG4iLCI8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4iXX0=
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlLXRhYmxlLXJvdy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi90YWJsZS9zaW1wbGUtdGFibGUvc2ltcGxlLXRhYmxlLXJvdy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi90YWJsZS9zaW1wbGUtdGFibGUvc2ltcGxlLXRhYmxlLXJvdy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxXQUFXLEVBQ1gsS0FBSyxHQUNOLE1BQU0sZUFBZSxDQUFDOztBQVF2QixNQUFNLE9BQU8sdUJBQXVCO0lBTnBDO1FBU0UsYUFBUSxHQUFZLEtBQUssQ0FBQztLQUMzQjsrR0FKWSx1QkFBdUI7bUdBQXZCLHVCQUF1Qiw2SkNicEMsNkJBQ0E7OzRGRFlhLHVCQUF1QjtrQkFObkMsU0FBUzsrQkFDRSx3QkFBd0IsbUJBR2pCLHVCQUF1QixDQUFDLE1BQU07OEJBSy9DLFFBQVE7c0JBRlAsS0FBSzs7c0JBQ0wsV0FBVzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdbcml2LXNpbXBsZS10YWJsZS1yb3ddJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NpbXBsZS10YWJsZS1yb3cuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zaW1wbGUtdGFibGUtcm93LmNvbXBvbmVudC5jc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNpbXBsZVRhYmxlUm93Q29tcG9uZW50IHtcbiAgQElucHV0KClcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5zZWxlY3RlZCcpXG4gIHNlbGVjdGVkOiBib29sZWFuID0gZmFsc2U7XG59XG4iLCI8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4iXX0=
@@ -0,0 +1,104 @@
1
+ import { ChangeDetectionStrategy, Component, ContentChild, ContentChildren, } from '@angular/core';
2
+ import { RivTable } from '../table/state';
3
+ import { createCellCoordinateCalculator } from './coordinate-helper';
4
+ import { SimpleTableCellComponent } from './simple-table-cell.component';
5
+ import { SimpleTableHeaderCellComponent } from './simple-table-header-cell.component';
6
+ import { TableColumnHelpers } from '../table/state-helpers/column-helpers';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/common";
9
+ export class SimpleTableComponent {
10
+ ngAfterContentChecked() {
11
+ this.setCellProperties();
12
+ }
13
+ setCellProperties() {
14
+ const { headerCells, dataCells } = this;
15
+ if (!headerCells || !dataCells)
16
+ return;
17
+ let runningWidthTotal = 0;
18
+ headerCells.forEach((headerCell, i) => {
19
+ const { dataType } = headerCell;
20
+ if (!dataType) {
21
+ const allowedTypes = RivTable.ColumnDataTypes.join(', ');
22
+ throw new Error(`Each header cell must define an appropriate dataType, one of ${allowedTypes}`);
23
+ }
24
+ const newAlignment = TableColumnHelpers.getColumnAlignment(dataType, i === 0);
25
+ const newLeftPinOffset = runningWidthTotal;
26
+ runningWidthTotal += headerCell.width;
27
+ const changed = headerCell.alignment != newAlignment ||
28
+ headerCell.leftPinOffset != newLeftPinOffset;
29
+ headerCell.alignment = newAlignment;
30
+ headerCell.leftPinOffset = newLeftPinOffset;
31
+ // Only mark for check when changed to prevent infinite cycles
32
+ if (changed) {
33
+ queueMicrotask(() => {
34
+ headerCell.cdr.markForCheck();
35
+ });
36
+ }
37
+ });
38
+ const cellSpanData = dataCells.map(dataCell => {
39
+ const element = dataCell.elementRef.nativeElement;
40
+ return {
41
+ rowspan: parseInt(element.getAttribute('rowspan') || '1', 10),
42
+ colspan: parseInt(element.getAttribute('colspan') || '1', 10),
43
+ };
44
+ });
45
+ // When there are no header cells, calculate totalColumns from the first <tr>
46
+ let totalColumns = headerCells.length;
47
+ if (totalColumns === 0 && dataCells.length > 0) {
48
+ const firstRow = dataCells.first?.elementRef.nativeElement.parentElement;
49
+ if (firstRow) {
50
+ // Count td elements in the first row and sum their colspans
51
+ const cellsInFirstRow = Array.from(firstRow.querySelectorAll('td[riv-simple-table-cell]'));
52
+ totalColumns = cellsInFirstRow.reduce((sum, cell) => {
53
+ const colspan = parseInt(cell.getAttribute('colspan') || '1', 10);
54
+ return sum + colspan;
55
+ }, 0);
56
+ }
57
+ // Fallback to 1 if we couldn't determine
58
+ if (totalColumns === 0) {
59
+ totalColumns = 1;
60
+ }
61
+ }
62
+ const getCellCoordinates = createCellCoordinateCalculator(cellSpanData, totalColumns);
63
+ const maxRow = Math.max(...dataCells.map((_, i) => getCellCoordinates(i).end.row));
64
+ dataCells.forEach((dataCell, cellIndex) => {
65
+ const bounds = getCellCoordinates(cellIndex);
66
+ const headerCell = headerCells.get(bounds.start.col);
67
+ let changed = false;
68
+ if (headerCell) {
69
+ changed =
70
+ dataCell.alignment != headerCell.alignment ||
71
+ dataCell.pinned != headerCell.pinned ||
72
+ dataCell.leftPinOffset != headerCell.leftPinOffset;
73
+ dataCell.alignment = headerCell.alignment;
74
+ dataCell.pinned = headerCell.pinned;
75
+ dataCell.leftPinOffset = headerCell.leftPinOffset;
76
+ }
77
+ const newIsLastRow = bounds.end.row === maxRow;
78
+ changed = changed || dataCell.isLastRow != newIsLastRow;
79
+ dataCell.isLastRow = newIsLastRow;
80
+ // Only mark for check when changed to prevent infinite cycles
81
+ if (changed) {
82
+ queueMicrotask(() => {
83
+ dataCell.cdr.markForCheck();
84
+ });
85
+ }
86
+ });
87
+ }
88
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SimpleTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
89
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SimpleTableComponent, selector: "riv-simple-table", queries: [{ propertyName: "headerTemplate", first: true, predicate: ["header"], descendants: true }, { propertyName: "headerCells", predicate: SimpleTableHeaderCellComponent, descendants: true }, { propertyName: "dataCells", predicate: SimpleTableCellComponent, descendants: true }], ngImport: i0, template: "<div class=\"header\" *ngIf=\"headerTemplate\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n</div>\n<div class=\"container\" tabindex=\"0\">\n <table>\n <ng-content></ng-content>\n </table>\n</div>\n", styles: [":host{display:grid;width:100%;min-height:0}.header{border-width:var(--border-width) var(--border-width) 0 var(--border-width);border-style:solid;border-color:var(--border-light);border-top-left-radius:var(--border-radius-medium);border-top-right-radius:var(--border-radius-medium)}.header+.container{border-top-left-radius:0;border-top-right-radius:0}.container{border:var(--border-width) solid var(--border-light);border-radius:var(--border-radius-medium);overflow:auto}table{border-collapse:separate;width:100%;table-layout:fixed}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
90
+ }
91
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SimpleTableComponent, decorators: [{
92
+ type: Component,
93
+ args: [{ selector: 'riv-simple-table', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"header\" *ngIf=\"headerTemplate\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n</div>\n<div class=\"container\" tabindex=\"0\">\n <table>\n <ng-content></ng-content>\n </table>\n</div>\n", styles: [":host{display:grid;width:100%;min-height:0}.header{border-width:var(--border-width) var(--border-width) 0 var(--border-width);border-style:solid;border-color:var(--border-light);border-top-left-radius:var(--border-radius-medium);border-top-right-radius:var(--border-radius-medium)}.header+.container{border-top-left-radius:0;border-top-right-radius:0}.container{border:var(--border-width) solid var(--border-light);border-radius:var(--border-radius-medium);overflow:auto}table{border-collapse:separate;width:100%;table-layout:fixed}\n"] }]
94
+ }], propDecorators: { headerTemplate: [{
95
+ type: ContentChild,
96
+ args: ['header']
97
+ }], headerCells: [{
98
+ type: ContentChildren,
99
+ args: [SimpleTableHeaderCellComponent, { descendants: true }]
100
+ }], dataCells: [{
101
+ type: ContentChildren,
102
+ args: [SimpleTableCellComponent, { descendants: true }]
103
+ }] } });
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Jpdi9zcmMvbGliL3RhYmxlL3NpbXBsZS10YWJsZS9zaW1wbGUtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvdGFibGUvc2ltcGxlLXRhYmxlL3NpbXBsZS10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxHQUdoQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUMsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDekUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7OztBQVEzRSxNQUFNLE9BQU8sb0JBQW9CO0lBVS9CLHFCQUFxQjtRQUNuQixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLE1BQU0sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxTQUFTO1lBQUUsT0FBTztRQUV2QyxJQUFJLGlCQUFpQixHQUFHLENBQUMsQ0FBQztRQUMxQixXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3BDLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxVQUFVLENBQUM7WUFDaEMsSUFB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d0IsZ0RDNUIzQyx5T0FRQTs7NEZEYWEsb0JBQW9CO2tCQU5oQyxTQUFTOytCQUNFLGtCQUFrQixtQkFHWCx1QkFBdUIsQ0FBQyxNQUFNOzhCQUkvQyxjQUFjO3NCQURiLFlBQVk7dUJBQUMsUUFBUTtnQkFJZCxXQUFXO3NCQURsQixlQUFlO3VCQUFDLDhCQUE4QixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtnQkFJOUQsU0FBUztzQkFEaEIsZUFBZTt1QkFBQyx3QkFBd0IsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRDaGVja2VkLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgUXVlcnlMaXN0LFxuICBUZW1wbGF0ZVJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSaXZUYWJsZSB9IGZyb20gJy4uL3RhYmxlL3N0YXRlJztcbmltcG9ydCB7IGNyZWF0ZUNlbGxDb29yZGluYXRlQ2FsY3VsYXRvciB9IGZyb20gJy4vY29vcmRpbmF0ZS1oZWxwZXInO1xuaW1wb3J0IHsgU2ltcGxlVGFibGVDZWxsQ29tcG9uZW50IH0gZnJvbSAnLi9zaW1wbGUtdGFibGUtY2VsbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2ltcGxlVGFibGVIZWFkZXJDZWxsQ29tcG9uZW50IH0gZnJvbSAnLi9zaW1wbGUtdGFibGUtaGVhZGVyLWNlbGwuY29tcG9uZW50JztcbmltcG9ydCB7IFRhYmxlQ29sdW1uSGVscGVycyB9IGZyb20gJy4uL3RhYmxlL3N0YXRlLWhlbHBlcnMvY29sdW1uLWhlbHBlcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyaXYtc2ltcGxlLXRhYmxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NpbXBsZS10YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NpbXBsZS10YWJsZS5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTaW1wbGVUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudENoZWNrZWQge1xuICBAQ29udGVudENoaWxkKCdoZWFkZXInKVxuICBoZWFkZXJUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHZvaWQ+O1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oU2ltcGxlVGFibGVIZWFkZXJDZWxsQ29tcG9uZW50LCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gIHByaXZhdGUgaGVhZGVyQ2VsbHM/OiBRdWVyeUxpc3Q8U2ltcGxlVGFibGVIZWFkZXJDZWxsQ29tcG9uZW50PjtcblxuICBAQ29udGVudENoaWxkcmVuKFNpbXBsZVRhYmxlQ2VsbENvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICBwcml2YXRlIGRhdGFDZWxscz86IFF1ZXJ5TGlzdDxTaW1wbGVUYWJsZUNlbGxDb21wb25lbnQ+O1xuXG4gIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpIHtcbiAgICB0aGlzLnNldENlbGxQcm9wZXJ0aWVzKCk7XG4gIH1cblxuICBwcml2YXRlIHNldENlbGxQcm9wZXJ0aWVzKCkge1xuICAgIGNvbnN0IHsgaGVhZGVyQ2VsbHMsIGRhdGFDZWxscyB9ID0gdGhpcztcbiAgICBpZiAoIWhlYWRlckNlbGxzIHx8ICFkYXRhQ2VsbHMpIHJldHVybjtcblxuICAgIGxldCBydW5uaW5nV2lkdGhUb3RhbCA9IDA7XG4gICAgaGVhZGVyQ2VsbHMuZm9yRWFjaCgoaGVhZGVyQ2VsbCwgaSkgPT4ge1xuICAgICAgY29uc3QgeyBkYXRhVHlwZSB9ID0gaGVhZGVyQ2VsbDtcbiAgICAgIGlmICghZGF0YVR5cGUpIHtcbiAgICAgICAgY29uc3QgYWxsb3dlZFR5cGVzID0gUml2VGFibGUuQ29sdW1uRGF0YVR5cGVzLmpvaW4oJywgJyk7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgRWFjaCBoZWFkZXIgY2VsbCBtdXN0IGRlZmluZSBhbiBhcHByb3ByaWF0ZSBkYXRhVHlwZSwgb25lIG9mICR7YWxsb3dlZFR5cGVzfWAsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5ld0FsaWdubWVudCA9IFRhYmxlQ29sdW1uSGVscGVycy5nZXRDb2x1bW5BbGlnbm1lbnQoXG4gICAgICAgIGRhdGFUeXBlLFxuICAgICAgICBpID09PSAwLFxuICAgICAgKTtcbiAgICAgIGNvbnN0IG5ld0xlZnRQaW5PZmZzZXQgPSBydW5uaW5nV2lkdGhUb3RhbDtcbiAgICAgIHJ1bm5pbmdXaWR0aFRvdGFsICs9IGhlYWRlckNlbGwud2lkdGg7XG5cbiAgICAgIGNvbnN0IGNoYW5nZWQgPVxuICAgICAgICBoZWFkZXJDZWxsLmFsaWdubWVudCAhPSBuZXdBbGlnbm1lbnQgfHxcbiAgICAgICAgaGVhZGVyQ2VsbC5sZWZ0UGluT2Zmc2V0ICE9IG5ld0xlZnRQaW5PZmZzZXQ7XG4gICAgICBoZWFkZXJDZWxsLmFsaWdubWVudCA9IG5ld0FsaWdubWVudDtcbiAgICAgIGhlYWRlckNlbGwubGVmdFBpbk9mZnNldCA9IG5ld0xlZnRQaW5PZmZzZXQ7XG5cbiAgICAgIC8vIE9ubHkgbWFyayBmb3IgY2hlY2sgd2hlbiBjaGFuZ2VkIHRvIHByZXZlbnQgaW5maW5pdGUgY3ljbGVzXG4gICAgICBpZiAoY2hhbmdlZCkge1xuICAgICAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgICAgICAgaGVhZGVyQ2VsbC5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgY2VsbFNwYW5EYXRhID0gZGF0YUNlbGxzLm1hcChkYXRhQ2VsbCA9PiB7XG4gICAgICBjb25zdCBlbGVtZW50ID0gZGF0YUNlbGwuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcm93c3BhbjogcGFyc2VJbnQoZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3Jvd3NwYW4nKSB8fCAnMScsIDEwKSxcbiAgICAgICAgY29sc3BhbjogcGFyc2VJbnQoZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2NvbHNwYW4nKSB8fCAnMScsIDEwKSxcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICAvLyBXaGVuIHRoZXJlIGFyZSBubyBoZWFkZXIgY2VsbHMsIGNhbGN1bGF0ZSB0b3RhbENvbHVtbnMgZnJvbSB0aGUgZmlyc3QgPHRyPlxuICAgIGxldCB0b3RhbENvbHVtbnMgPSBoZWFkZXJDZWxscy5sZW5ndGg7XG4gICAgaWYgKHRvdGFsQ29sdW1ucyA9PT0gMCAmJiBkYXRhQ2VsbHMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZmlyc3RSb3cgPSBkYXRhQ2VsbHMuZmlyc3Q/LmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50O1xuICAgICAgaWYgKGZpcnN0Um93KSB7XG4gICAgICAgIC8vIENvdW50IHRkIGVsZW1lbnRzIGluIHRoZSBmaXJzdCByb3cgYW5kIHN1bSB0aGVpciBjb2xzcGFuc1xuICAgICAgICBjb25zdCBjZWxsc0luRmlyc3RSb3cgPSBBcnJheS5mcm9tKFxuICAgICAgICAgIGZpcnN0Um93LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RkW3Jpdi1zaW1wbGUtdGFibGUtY2VsbF0nKSxcbiAgICAgICAgKTtcbiAgICAgICAgdG90YWxDb2x1bW5zID0gY2VsbHNJbkZpcnN0Um93LnJlZHVjZSgoc3VtLCBjZWxsKSA9PiB7XG4gICAgICAgICAgY29uc3QgY29sc3BhbiA9IHBhcnNlSW50KGNlbGwuZ2V0QXR0cmlidXRlKCdjb2xzcGFuJykgfHwgJzEnLCAxMCk7XG4gICAgICAgICAgcmV0dXJuIHN1bSArIGNvbHNwYW47XG4gICAgICAgIH0sIDApO1xuICAgICAgfVxuICAgICAgLy8gRmFsbGJhY2sgdG8gMSBpZiB3ZSBjb3VsZG4ndCBkZXRlcm1pbmVcbiAgICAgIGlmICh0b3RhbENvbHVtbnMgPT09IDApIHtcbiAgICAgICAgdG90YWxDb2x1bW5zID0gMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBnZXRDZWxsQ29vcmRpbmF0ZXMgPSBjcmVhdGVDZWxsQ29vcmRpbmF0ZUNhbGN1bGF0b3IoXG4gICAgICBjZWxsU3BhbkRhdGEsXG4gICAgICB0b3RhbENvbHVtbnMsXG4gICAgKTtcblxuICAgIGNvbnN0IG1heFJvdyA9IE1hdGgubWF4KFxuICAgICAgLi4uZGF0YUNlbGxzLm1hcCgoXywgaSkgPT4gZ2V0Q2VsbENvb3JkaW5hdGVzKGkpLmVuZC5yb3cpLFxuICAgICk7XG5cbiAgICBkYXRhQ2VsbHMuZm9yRWFjaCgoZGF0YUNlbGwsIGNlbGxJbmRleCkgPT4ge1xuICAgICAgY29uc3QgYm91bmRzID0gZ2V0Q2VsbENvb3JkaW5hdGVzKGNlbGxJbmRleCk7XG5cbiAgICAgIGNvbnN0IGhlYWRlckNlbGwgPSBoZWFkZXJDZWxscy5nZXQoYm91bmRzLnN0YXJ0LmNvbCk7XG4gICAgICBsZXQgY2hhbmdlZCA9IGZhbHNlO1xuICAgICAgaWYgKGhlYWRlckNlbGwpIHtcbiAgICAgICAgY2hhbmdlZCA9XG4gICAgICAgICAgZGF0YUNlbGwuYWxpZ25tZW50ICE9IGhlYWRlckNlbGwuYWxpZ25tZW50IHx8XG4gICAgICAgICAgZGF0YUNlbGwucGlubmVkICE9IGhlYWRlckNlbGwucGlubmVkIHx8XG4gICAgICAgICAgZGF0YUNlbGwubGVmdFBpbk9mZnNldCAhPSBoZWFkZXJDZWxsLmxlZnRQaW5PZmZzZXQ7XG5cbiAgICAgICAgZGF0YUNlbGwuYWxpZ25tZW50ID0gaGVhZGVyQ2VsbC5hbGlnbm1lbnQ7XG4gICAgICAgIGRhdGFDZWxsLnBpbm5lZCA9IGhlYWRlckNlbGwucGlubmVkO1xuICAgICAgICBkYXRhQ2VsbC5sZWZ0UGluT2Zmc2V0ID0gaGVhZGVyQ2VsbC5sZWZ0UGluT2Zmc2V0O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBuZXdJc0xhc3RSb3cgPSBib3VuZHMuZW5kLnJvdyA9PT0gbWF4Um93O1xuICAgICAgY2hhbmdlZCA9IGNoYW5nZWQgfHwgZGF0YUNlbGwuaXNMYXN0Um93ICE9IG5ld0lzTGFzdFJvdztcbiAgICAgIGRhdGFDZWxsLmlzTGFzdFJvdyA9IG5ld0lzTGFzdFJvdztcblxuICAgICAgLy8gT25seSBtYXJrIGZvciBjaGVjayB3aGVuIGNoYW5nZWQgdG8gcHJldmVudCBpbmZpbml0ZSBjeWNsZXNcbiAgICAgIGlmIChjaGFuZ2VkKSB7XG4gICAgICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHtcbiAgICAgICAgICBkYXRhQ2VsbC5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiaGVhZGVyXCIgKm5nSWY9XCJoZWFkZXJUZW1wbGF0ZVwiPlxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiIHRhYmluZGV4PVwiMFwiPlxuICA8dGFibGU+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L3RhYmxlPlxuPC9kaXY+XG4iXX0=
@@ -0,0 +1,182 @@
1
+ import { sumBy } from 'lodash';
2
+ /**
3
+ * Clipboard serialization for `riv-table`.
4
+ *
5
+ * Rows that have a link render as `<a class="row-link">` rather than `<tr>`, and
6
+ * the browser's clipboard serializer does not treat those as table rows — the
7
+ * copied content pastes into a spreadsheet as one lateral run instead of a grid.
8
+ * These helpers rebuild the rendered grid so that copied content pastes as rows
9
+ * and columns.
10
+ */
11
+ export var RivTableClipboard;
12
+ (function (RivTableClipboard) {
13
+ /** Cells that hold controls rather than data. */
14
+ const controlCellSelector = 'th.selection-head, th.menu-head, td.selection-body, td.menu-body';
15
+ /** The column name within a header cell; the rest of the cell is controls. */
16
+ const headerLabelSelector = '.header-wrapper';
17
+ /** Elements whose text exists for assistive technology only. */
18
+ const assistiveTextSelector = 'riv-sr-only';
19
+ /** Rows that stand in for data rather than carrying it. */
20
+ const fillerRowSelector = 'riv-zero-state';
21
+ /** Elements that own their own clipboard behavior. */
22
+ const editableSelector = 'input, textarea, select, [contenteditable=""], [contenteditable="true"]';
23
+ /** Whether the copy came from a control that serializes its own value. */
24
+ function isEditable(target) {
25
+ return (target instanceof Element && target.closest(editableSelector) !== null);
26
+ }
27
+ RivTableClipboard.isEditable = isEditable;
28
+ /**
29
+ * Whether `host` is the first element of its kind that the selection touches.
30
+ * A selection can span several tables; deferring to the first keeps instances
31
+ * from overwriting each other's clipboard data.
32
+ */
33
+ function ownsSelection(host, isSelected) {
34
+ return (Array.from(document.querySelectorAll(host.localName)).find(element => isSelected(element)) === host);
35
+ }
36
+ RivTableClipboard.ownsSelection = ownsSelection;
37
+ /**
38
+ * Serializes the selected region of `tables` (one per row group), or null when
39
+ * the selection covers at most one cell — those are left to the browser so
40
+ * that copying part of a cell's text keeps working.
41
+ *
42
+ * `endpoints` are where the selection starts and ends, which narrow the copied
43
+ * columns to that span. A selection is a linear range in reading order, so
44
+ * dragging down one column touches every column in between; the endpoints are
45
+ * what distinguish "this column" from "these rows".
46
+ */
47
+ function extract(tables, isSelected, endpoints = []) {
48
+ const layouts = tables.map(layout);
49
+ const columns = selectedColumns(layouts, isSelected, endpoints);
50
+ const headers = layouts.flatMap(l => l.header);
51
+ const rows = layouts
52
+ .flatMap(l => l.body)
53
+ .filter(row => selectedCount(row, isSelected) > 0);
54
+ // Header cells own the pointer for column reordering, so a drag cannot
55
+ // reach them; the header comes along with any copied data instead.
56
+ const header = headers.find(row => selectedCount(row, isSelected) > 0) ??
57
+ (rows.length > 0 ? headers[0] : undefined);
58
+ if (columns.length === 0 ||
59
+ sumBy([...(header ? [header] : []), ...rows], row => selectedCount(row, isSelected)) < 2)
60
+ return null;
61
+ return {
62
+ text: toText(header, rows, columns),
63
+ html: toHtml(header, rows, columns),
64
+ };
65
+ }
66
+ RivTableClipboard.extract = extract;
67
+ function toText(header, rows, columns) {
68
+ return [
69
+ ...(header ? [columns.map(column => headerText(header[column]))] : []),
70
+ ...rows.map(row => columns.map(column => text(row[column]))),
71
+ ]
72
+ .map(cells => cells.join('\t'))
73
+ .join('\n');
74
+ }
75
+ function toHtml(header, rows, columns) {
76
+ const cells = (values, tag) => values.map(value => `<${tag}>${escapeHtml(value)}</${tag}>`).join('');
77
+ return [
78
+ '<table>',
79
+ header
80
+ ? `<thead><tr>${cells(columns.map(column => headerText(header[column])), 'th')}</tr></thead>`
81
+ : '',
82
+ `<tbody>${rows
83
+ .map(row => `<tr>${cells(columns.map(column => text(row[column])), 'td')}</tr>`)
84
+ .join('')}</tbody>`,
85
+ '</table>',
86
+ ].join('');
87
+ }
88
+ function layout(table) {
89
+ return {
90
+ header: grid(Array.from(table.querySelectorAll(':scope > thead > tr')).filter(isDataRow)),
91
+ body: grid(Array.from(table.querySelectorAll(':scope > tbody > tr, :scope > tbody > a.row-link')).filter(isDataRow)),
92
+ };
93
+ }
94
+ /**
95
+ * Maps rows onto a column grid. Cells covered by a rowspan repeat the spanning
96
+ * cell so that every line has one value per column, matching how CSV export
97
+ * flattens spans.
98
+ */
99
+ function grid(rows) {
100
+ const cells = rows.map(() => []);
101
+ rows.forEach((row, rowIndex) => {
102
+ let column = 0;
103
+ for (const cell of dataCells(row)) {
104
+ while (cells[rowIndex][column] !== undefined)
105
+ column++;
106
+ const rowSpan = Math.max(1, cell.rowSpan);
107
+ const colSpan = Math.max(1, cell.colSpan);
108
+ for (let r = rowIndex; r <= Math.min(rows.length - 1, rowIndex + rowSpan - 1); r++)
109
+ for (let c = column; c < column + colSpan; c++)
110
+ cells[r][c] = cell;
111
+ column += colSpan;
112
+ }
113
+ });
114
+ return cells;
115
+ }
116
+ function dataCells(row) {
117
+ return Array.from(row.querySelectorAll(':scope > td, :scope > th')).filter(cell => !cell.matches(controlCellSelector));
118
+ }
119
+ /** Excludes the zero-state row, which spans every column. */
120
+ function isDataRow(row) {
121
+ return (row.querySelector(fillerRowSelector) === null &&
122
+ dataCells(row).every(cell => cell.colSpan <= 1));
123
+ }
124
+ function selectedColumns(layouts, isSelected, endpoints) {
125
+ const columns = new Set();
126
+ for (const { header, body } of layouts)
127
+ for (const row of [...header, ...body])
128
+ row.forEach((cell, column) => {
129
+ if (cell !== undefined && isSelected(cell))
130
+ columns.add(column);
131
+ });
132
+ const touched = [...columns].sort((a, b) => a - b);
133
+ // Both ends have to land in a cell to describe a span; anything else (a
134
+ // select-all, an endpoint on a row rather than a cell) keeps every column.
135
+ const span = endpoints
136
+ .map(node => (node ? columnOf(layouts, node) : undefined))
137
+ .filter((column) => column !== undefined);
138
+ return span.length === endpoints.length && span.length > 1
139
+ ? touched.filter(column => column >= Math.min(...span) && column <= Math.max(...span))
140
+ : touched;
141
+ }
142
+ function columnOf(layouts, node) {
143
+ for (const { header, body } of layouts)
144
+ for (const row of [...header, ...body]) {
145
+ const column = row.findIndex(cell => cell?.contains(node) === true);
146
+ if (column >= 0)
147
+ return column;
148
+ }
149
+ return undefined;
150
+ }
151
+ function selectedCount(row, isSelected) {
152
+ return row.filter(cell => cell !== undefined && isSelected(cell)).length;
153
+ }
154
+ function headerText(cell) {
155
+ return text(cell?.querySelector(headerLabelSelector) ?? cell);
156
+ }
157
+ function text(cell) {
158
+ return cell ? visibleText(cell).replace(/\s+/g, ' ').trim() : '';
159
+ }
160
+ /**
161
+ * Template indentation lands in the DOM as newlines and runs of spaces, which
162
+ * split a single row across several spreadsheet rows unless collapsed by the
163
+ * caller. Comment anchors and screen-reader-only content are dropped, and
164
+ * sibling nodes are separated so that adjacent elements do not run together.
165
+ */
166
+ function visibleText(node) {
167
+ if (node instanceof Text)
168
+ return node.nodeValue ?? '';
169
+ if (node instanceof Element)
170
+ return node.matches(assistiveTextSelector)
171
+ ? ''
172
+ : Array.from(node.childNodes).map(visibleText).join(' ');
173
+ return '';
174
+ }
175
+ function escapeHtml(value) {
176
+ return value
177
+ .replace(/&/g, '&amp;')
178
+ .replace(/</g, '&lt;')
179
+ .replace(/>/g, '&gt;');
180
+ }
181
+ })(RivTableClipboard || (RivTableClipboard = {}));
182
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpcGJvYXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvdGFibGUvdGFibGUvY2xpcGJvYXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFL0I7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLEtBQVcsaUJBQWlCLENBMlFqQztBQTNRRCxXQUFpQixpQkFBaUI7SUFDaEMsaURBQWlEO0lBQ2pELE1BQU0sbUJBQW1CLEdBQ3ZCLGtFQUFrRSxDQUFDO0lBRXJFLDhFQUE4RTtJQUM5RSxNQUFNLG1CQUFtQixHQUFHLGlCQUFpQixDQUFDO0lBRTlDLGdFQUFnRTtJQUNoRSxNQUFNLHFCQUFxQixHQUFHLGFBQWEsQ0FBQztJQUU1QywyREFBMkQ7SUFDM0QsTUFBTSxpQkFBaUIsR0FBRyxnQkFBZ0IsQ0FBQztJQUUzQyxzREFBc0Q7SUFDdEQsTUFBTSxnQkFBZ0IsR0FDcEIseUVBQXlFLENBQUM7SUFvQjVFLDBFQUEwRTtJQUMxRSxTQUFnQixVQUFVLENBQUMsTUFBMEI7UUFDbkQsT0FBTyxDQUNMLE1BQU0sWUFBWSxPQUFPLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLElBQUksQ0FDdkUsQ0FBQztJQUNKLENBQUM7SUFKZSw0QkFBVSxhQUl6QixDQUFBO0lBRUQ7Ozs7T0FJRztJQUNILFNBQWdCLGFBQWEsQ0FDM0IsSUFBYSxFQUNiLFVBQXlCO1FBRXpCLE9BQU8sQ0FDTCxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FDbkUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUNwQixLQUFLLElBQUksQ0FDWCxDQUFDO0lBQ0osQ0FBQztJQVRlLCtCQUFhLGdC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LENBQUM7SUFFRCxTQUFTLElBQUksQ0FBQyxJQUFnQztRQUM1QyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNuRSxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxTQUFTLFdBQVcsQ0FBQyxJQUFVO1FBQzdCLElBQUksSUFBSSxZQUFZLElBQUk7WUFBRSxPQUFPLElBQUksQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDO1FBQ3RELElBQUksSUFBSSxZQUFZLE9BQU87WUFDekIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDO2dCQUN4QyxDQUFDLENBQUMsRUFBRTtnQkFDSixDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3RCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxTQUFTLFVBQVUsQ0FBQyxLQUFhO1FBQy9CLE9BQU8sS0FBSzthQUNULE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDO2FBQ3RCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDO2FBQ3JCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDM0IsQ0FBQztBQUNILENBQUMsRUEzUWdCLGlCQUFpQixLQUFqQixpQkFBaUIsUUEyUWpDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc3VtQnkgfSBmcm9tICdsb2Rhc2gnO1xuXG4vKipcbiAqIENsaXBib2FyZCBzZXJpYWxpemF0aW9uIGZvciBgcml2LXRhYmxlYC5cbiAqXG4gKiBSb3dzIHRoYXQgaGF2ZSBhIGxpbmsgcmVuZGVyIGFzIGA8YSBjbGFzcz1cInJvdy1saW5rXCI+YCByYXRoZXIgdGhhbiBgPHRyPmAsIGFuZFxuICogdGhlIGJyb3dzZXIncyBjbGlwYm9hcmQgc2VyaWFsaXplciBkb2VzIG5vdCB0cmVhdCB0aG9zZSBhcyB0YWJsZSByb3dzIOKAlCB0aGVcbiAqIGNvcGllZCBjb250ZW50IHBhc3RlcyBpbnRvIGEgc3ByZWFkc2hlZXQgYXMgb25lIGxhdGVyYWwgcnVuIGluc3RlYWQgb2YgYSBncmlkLlxuICogVGhlc2UgaGVscGVycyByZWJ1aWxkIHRoZSByZW5kZXJlZCBncmlkIHNvIHRoYXQgY29waWVkIGNvbnRlbnQgcGFzdGVzIGFzIHJvd3NcbiAqIGFuZCBjb2x1bW5zLlxuICovXG5leHBvcnQgbmFtZXNwYWNlIFJpdlRhYmxlQ2xpcGJvYXJkIHtcbiAgLyoqIENlbGxzIHRoYXQgaG9sZCBjb250cm9scyByYXRoZXIgdGhhbiBkYXRhLiAqL1xuICBjb25zdCBjb250cm9sQ2VsbFNlbGVjdG9yID1cbiAgICAndGguc2VsZWN0aW9uLWhlYWQsIHRoLm1lbnUtaGVhZCwgdGQuc2VsZWN0aW9uLWJvZHksIHRkLm1lbnUtYm9keSc7XG5cbiAgLyoqIFRoZSBjb2x1bW4gbmFtZSB3aXRoaW4gYSBoZWFkZXIgY2VsbDsgdGhlIHJlc3Qgb2YgdGhlIGNlbGwgaXMgY29udHJvbHMuICovXG4gIGNvbnN0IGhlYWRlckxhYmVsU2VsZWN0b3IgPSAnLmhlYWRlci13cmFwcGVyJztcblxuICAvKiogRWxlbWVudHMgd2hvc2UgdGV4dCBleGlzdHMgZm9yIGFzc2lzdGl2ZSB0ZWNobm9sb2d5IG9ubHkuICovXG4gIGNvbnN0IGFzc2lzdGl2ZVRleHRTZWxlY3RvciA9ICdyaXYtc3Itb25seSc7XG5cbiAgLyoqIFJvd3MgdGhhdCBzdGFuZCBpbiBmb3IgZGF0YSByYXRoZXIgdGhhbiBjYXJyeWluZyBpdC4gKi9cbiAgY29uc3QgZmlsbGVyUm93U2VsZWN0b3IgPSAncml2LXplcm8tc3RhdGUnO1xuXG4gIC8qKiBFbGVtZW50cyB0aGF0IG93biB0aGVpciBvd24gY2xpcGJvYXJkIGJlaGF2aW9yLiAqL1xuICBjb25zdCBlZGl0YWJsZVNlbGVjdG9yID1cbiAgICAnaW5wdXQsIHRleHRhcmVhLCBzZWxlY3QsIFtjb250ZW50ZWRpdGFibGU9XCJcIl0sIFtjb250ZW50ZWRpdGFibGU9XCJ0cnVlXCJdJztcblxuICBleHBvcnQgdHlwZSBQYXlsb2FkID0ge1xuICAgIC8qKiBUYWItZGVsaW1pdGVkIHJvd3MsIG9uZSBsaW5lIHBlciByb3cuICovXG4gICAgdGV4dDogc3RyaW5nO1xuICAgIC8qKiBFcXVpdmFsZW50IHRhYmxlIG1hcmt1cCwgZm9yIHRhcmdldHMgdGhhdCBwcmVmZXIgcmljaCBjb250ZW50LiAqL1xuICAgIGh0bWw6IHN0cmluZztcbiAgfTtcblxuICAvKiogUHJlZGljYXRlIGZvciB3aGV0aGVyIGEgbm9kZSBmYWxscyB3aXRoaW4gdGhlIHVzZXIncyBzZWxlY3Rpb24uICovXG4gIGV4cG9ydCB0eXBlIFNlbGVjdGlvblRlc3QgPSAobm9kZTogTm9kZSkgPT4gYm9vbGVhbjtcblxuICAvKiogQSByZW5kZXJlZCByb3csIGhvbGRpbmcgdGhlIGNlbGwgb2NjdXB5aW5nIGVhY2ggZGF0YSBjb2x1bW4uICovXG4gIHR5cGUgUm93ID0gcmVhZG9ubHkgKEVsZW1lbnQgfCB1bmRlZmluZWQpW107XG5cbiAgdHlwZSBMYXlvdXQgPSB7XG4gICAgaGVhZGVyOiByZWFkb25seSBSb3dbXTtcbiAgICBib2R5OiByZWFkb25seSBSb3dbXTtcbiAgfTtcblxuICAvKiogV2hldGhlciB0aGUgY29weSBjYW1lIGZyb20gYSBjb250cm9sIHRoYXQgc2VyaWFsaXplcyBpdHMgb3duIHZhbHVlLiAqL1xuICBleHBvcnQgZnVuY3Rpb24gaXNFZGl0YWJsZSh0YXJnZXQ6IEV2ZW50VGFyZ2V0IHwgbnVsbCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB0YXJnZXQgaW5zdGFuY2VvZiBFbGVtZW50ICYmIHRhcmdldC5jbG9zZXN0KGVkaXRhYmxlU2VsZWN0b3IpICE9PSBudWxsXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGBob3N0YCBpcyB0aGUgZmlyc3QgZWxlbWVudCBvZiBpdHMga2luZCB0aGF0IHRoZSBzZWxlY3Rpb24gdG91Y2hlcy5cbiAgICogQSBzZWxlY3Rpb24gY2FuIHNwYW4gc2V2ZXJhbCB0YWJsZXM7IGRlZmVycmluZyB0byB0aGUgZmlyc3Qga2VlcHMgaW5zdGFuY2VzXG4gICAqIGZyb20gb3ZlcndyaXRpbmcgZWFjaCBvdGhlcidzIGNsaXBib2FyZCBkYXRhLlxuICAgKi9cbiAgZXhwb3J0IGZ1bmN0aW9uIG93bnNTZWxlY3Rpb24oXG4gICAgaG9zdDogRWxlbWVudCxcbiAgICBpc1NlbGVjdGVkOiBTZWxlY3Rpb25UZXN0LFxuICApOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgQXJyYXkuZnJvbShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGhvc3QubG9jYWxOYW1lKSkuZmluZChlbGVtZW50ID0+XG4gICAgICAgIGlzU2VsZWN0ZWQoZWxlbWVudCksXG4gICAgICApID09PSBob3N0XG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXJpYWxpemVzIHRoZSBzZWxlY3RlZCByZWdpb24gb2YgYHRhYmxlc2AgKG9uZSBwZXIgcm93IGdyb3VwKSwgb3IgbnVsbCB3aGVuXG4gICAqIHRoZSBzZWxlY3Rpb24gY292ZXJzIGF0IG1vc3Qgb25lIGNlbGwg4oCUIHRob3NlIGFyZSBsZWZ0IHRvIHRoZSBicm93c2VyIHNvXG4gICAqIHRoYXQgY29weWluZyBwYXJ0IG9mIGEgY2VsbCdzIHRleHQga2VlcHMgd29ya2luZy5cbiAgICpcbiAgICogYGVuZHBvaW50c2AgYXJlIHdoZXJlIHRoZSBzZWxlY3Rpb24gc3RhcnRzIGFuZCBlbmRzLCB3aGljaCBuYXJyb3cgdGhlIGNvcGllZFxuICAgKiBjb2x1bW5zIHRvIHRoYXQgc3Bhbi4gQSBzZWxlY3Rpb24gaXMgYSBsaW5lYXIgcmFuZ2UgaW4gcmVhZGluZyBvcmRlciwgc29cbiAgICogZHJhZ2dpbmcgZG93biBvbmUgY29sdW1uIHRvdWNoZXMgZXZlcnkgY29sdW1uIGluIGJldHdlZW47IHRoZSBlbmRwb2ludHMgYXJlXG4gICAqIHdoYXQgZGlzdGluZ3Vpc2ggXCJ0aGlzIGNvbHVtblwiIGZyb20gXCJ0aGVzZSByb3dzXCIuXG4gICAqL1xuICBleHBvcnQgZnVuY3Rpb24gZXh0cmFjdChcbiAgICB0YWJsZXM6IHJlYWRvbmx5IEhUTUxUYWJsZUVsZW1lbnRbXSxcbiAgICBpc1NlbGVjdGVkOiBTZWxlY3Rpb25UZXN0LFxuICAgIGVuZHBvaW50czogcmVhZG9ubHkgKE5vZGUgfCBudWxsIHwgdW5kZWZpbmVkKVtdID0gW10sXG4gICk6IFBheWxvYWQgfCBudWxsIHtcbiAgICBjb25zdCBsYXlvdXRzID0gdGFibGVzLm1hcChsYXlvdXQpO1xuICAgIGNvbnN0IGNvbHVtbnMgPSBzZWxlY3RlZENvbHVtbnMobGF5b3V0cywgaXNTZWxlY3RlZCwgZW5kcG9pbnRzKTtcbiAgICBjb25zdCBoZWFkZXJzID0gbGF5b3V0cy5mbGF0TWFwKGwgPT4gbC5oZWFkZXIpO1xuICAgIGNvbnN0IHJvd3MgPSBsYXlvdXRzXG4gICAgICAuZmxhdE1hcChsID0+IGwuYm9keSlcbiAgICAgIC5maWx0ZXIocm93ID0+IHNlbGVjdGVkQ291bnQocm93LCBpc1NlbGVjdGVkKSA+IDApO1xuICAgIC8vIEhlYWRlciBjZWxscyBvd24gdGhlIHBvaW50ZXIgZm9yIGNvbHVtbiByZW9yZGVyaW5nLCBzbyBhIGRyYWcgY2Fubm90XG4gICAgLy8gcmVhY2ggdGhlbTsgdGhlIGhlYWRlciBjb21lcyBhbG9uZyB3aXRoIGFueSBjb3BpZWQgZGF0YSBpbnN0ZWFkLlxuICAgIGNvbnN0IGhlYWRlciA9XG4gICAgICBoZWFkZXJzLmZpbmQocm93ID0+IHNlbGVjdGVkQ291bnQocm93LCBpc1NlbGVjdGVkKSA+IDApID8/XG4gICAgICAocm93cy5sZW5ndGggPiAwID8gaGVhZGVyc1swXSA6IHVuZGVmaW5lZCk7XG5cbiAgICBpZiAoXG4gICAgICBjb2x1bW5zLmxlbmd0aCA9PT0gMCB8fFxuICAgICAgc3VtQnkoWy4uLihoZWFkZXIgPyBbaGVhZGVyXSA6IFtdKSwgLi4ucm93c10sIHJvdyA9PlxuICAgICAgICBzZWxlY3RlZENvdW50KHJvdywgaXNTZWxlY3RlZCksXG4gICAgICApIDwgMlxuICAgIClcbiAgICAgIHJldHVybiBudWxsO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHRleHQ6IHRvVGV4dChoZWFkZXIsIHJvd3MsIGNvbHVtbnMpLFxuICAgICAgaHRtbDogdG9IdG1sKGhlYWRlciwgcm93cywgY29sdW1ucyksXG4gICAgfTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRvVGV4dChcbiAgICBoZWFkZXI6IFJvdyB8IHVuZGVmaW5lZCxcbiAgICByb3dzOiByZWFkb25seSBSb3dbXSxcbiAgICBjb2x1bW5zOiByZWFkb25seSBudW1iZXJbXSxcbiAgKTogc3RyaW5nIHtcbiAgICByZXR1cm4gW1xuICAgICAgLi4uKGhlYWRlciA/IFtjb2x1bW5zLm1hcChjb2x1bW4gPT4gaGVhZGVyVGV4dChoZWFkZXJbY29sdW1uXSkpXSA6IFtdKSxcbiAgICAgIC4uLnJvd3MubWFwKHJvdyA9PiBjb2x1bW5zLm1hcChjb2x1bW4gPT4gdGV4dChyb3dbY29sdW1uXSkpKSxcbiAgICBdXG4gICAgICAubWFwKGNlbGxzID0+IGNlbGxzLmpvaW4oJ1xcdCcpKVxuICAgICAgLmpvaW4oJ1xcbicpO1xuICB9XG5cbiAgZnVuY3Rpb24gdG9IdG1sKFxuICAgIGhlYWRlcjogUm93IHwgdW5kZWZpbmVkLFxuICAgIHJvd3M6IHJlYWRvbmx5IFJvd1tdLFxuICAgIGNvbHVtbnM6IHJlYWRvbmx5IG51bWJlcltdLFxuICApOiBzdHJpbmcge1xuICAgIGNvbnN0IGNlbGxzID0gKHZhbHVlczogcmVhZG9ubHkgc3RyaW5nW10sIHRhZzogJ3RoJyB8ICd0ZCcpID0+XG4gICAgICB2YWx1ZXMubWFwKHZhbHVlID0+IGA8JHt0YWd9PiR7ZXNjYXBlSHRtbCh2YWx1ZSl9PC8ke3RhZ30+YCkuam9pbignJyk7XG4gICAgcmV0dXJuIFtcbiAgICAgICc8dGFibGU+JyxcbiAgICAgIGhlYWRlclxuICAgICAgICA/IGA8dGhlYWQ+PHRyPiR7Y2VsbHMoXG4gICAgICAgICAgICBjb2x1bW5zLm1hcChjb2x1bW4gPT4gaGVhZGVyVGV4dChoZWFkZXJbY29sdW1uXSkpLFxuICAgICAgICAgICAgJ3RoJyxcbiAgICAgICAgICApfTwvdHI+PC90aGVhZD5gXG4gICAgICAgIDogJycsXG4gICAgICBgPHRib2R5PiR7cm93c1xuICAgICAgICAubWFwKFxuICAgICAgICAgIHJvdyA9PlxuICAgICAgICAgICAgYDx0cj4ke2NlbGxzKFxuICAgICAgICAgICAgICBjb2x1bW5zLm1hcChjb2x1bW4gPT4gdGV4dChyb3dbY29sdW1uXSkpLFxuICAgICAgICAgICAgICAndGQnLFxuICAgICAgICAgICAgKX08L3RyPmAsXG4gICAgICAgIClcbiAgICAgICAgLmpvaW4oJycpfTwvdGJvZHk+YCxcbiAgICAgICc8L3RhYmxlPicsXG4gICAgXS5qb2luKCcnKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGxheW91dCh0YWJsZTogSFRNTFRhYmxlRWxlbWVudCk6IExheW91dCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGhlYWRlcjogZ3JpZChcbiAgICAgICAgQXJyYXkuZnJvbSh0YWJsZS5xdWVyeVNlbGVjdG9yQWxsKCc6c2NvcGUgPiB0aGVhZCA+IHRyJykpLmZpbHRlcihcbiAgICAgICAgICBpc0RhdGFSb3csXG4gICAgICAgICksXG4gICAgICApLFxuICAgICAgYm9keTogZ3JpZChcbiAgICAgICAgQXJyYXkuZnJvbShcbiAgICAgICAgICB0YWJsZS5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICAgICAgICAgJzpzY29wZSA+IHRib2R5ID4gdHIsIDpzY29wZSA+IHRib2R5ID4gYS5yb3ctbGluaycsXG4gICAgICAgICAgKSxcbiAgICAgICAgKS5maWx0ZXIoaXNEYXRhUm93KSxcbiAgICAgICksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXBzIHJvd3Mgb250byBhIGNvbHVtbiBncmlkLiBDZWxscyBjb3ZlcmVkIGJ5IGEgcm93c3BhbiByZXBlYXQgdGhlIHNwYW5uaW5nXG4gICAqIGNlbGwgc28gdGhhdCBldmVyeSBsaW5lIGhhcyBvbmUgdmFsdWUgcGVyIGNvbHVtbiwgbWF0Y2hpbmcgaG93IENTViBleHBvcnRcbiAgICogZmxhdHRlbnMgc3BhbnMuXG4gICAqL1xuICBmdW5jdGlvbiBncmlkKHJvd3M6IHJlYWRvbmx5IEVsZW1lbnRbXSk6IFJvd1tdIHtcbiAgICBjb25zdCBjZWxsczogKEVsZW1lbnQgfCB1bmRlZmluZWQpW11bXSA9IHJvd3MubWFwKCgpID0+IFtdKTtcbiAgICByb3dzLmZvckVhY2goKHJvdywgcm93SW5kZXgpID0+IHtcbiAgICAgIGxldCBjb2x1bW4gPSAwO1xuICAgICAgZm9yIChjb25zdCBjZWxsIG9mIGRhdGFDZWxscyhyb3cpKSB7XG4gICAgICAgIHdoaWxlIChjZWxsc1tyb3dJbmRleF1bY29sdW1uXSAhPT0gdW5kZWZpbmVkKSBjb2x1bW4rKztcbiAgICAgICAgY29uc3Qgcm93U3BhbiA9IE1hdGgubWF4KDEsIGNlbGwucm93U3Bhbik7XG4gICAgICAgIGNvbnN0IGNvbFNwYW4gPSBNYXRoLm1heCgxLCBjZWxsLmNvbFNwYW4pO1xuICAgICAgICBmb3IgKFxuICAgICAgICAgIGxldCByID0gcm93SW5kZXg7XG4gICAgICAgICAgciA8PSBNYXRoLm1pbihyb3dzLmxlbmd0aCAtIDEsIHJvd0luZGV4ICsgcm93U3BhbiAtIDEpO1xuICAgICAgICAgIHIrK1xuICAgICAgICApXG4gICAgICAgICAgZm9yIChsZXQgYyA9IGNvbHVtbjsgYyA8IGNvbHVtbiArIGNvbFNwYW47IGMrKykgY2VsbHNbcl1bY10gPSBjZWxsO1xuICAgICAgICBjb2x1bW4gKz0gY29sU3BhbjtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gY2VsbHM7XG4gIH1cblxuICBmdW5jdGlvbiBkYXRhQ2VsbHMocm93OiBFbGVtZW50KTogSFRNTFRhYmxlQ2VsbEVsZW1lbnRbXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20oXG4gICAgICByb3cucXVlcnlTZWxlY3RvckFsbDxIVE1MVGFibGVDZWxsRWxlbWVudD4oJzpzY29wZSA+IHRkLCA6c2NvcGUgPiB0aCcpLFxuICAgICkuZmlsdGVyKGNlbGwgPT4gIWNlbGwubWF0Y2hlcyhjb250cm9sQ2VsbFNlbGVjdG9yKSk7XG4gIH1cblxuICAvKiogRXhjbHVkZXMgdGhlIHplcm8tc3RhdGUgcm93LCB3aGljaCBzcGFucyBldmVyeSBjb2x1bW4uICovXG4gIGZ1bmN0aW9uIGlzRGF0YVJvdyhyb3c6IEVsZW1lbnQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgcm93LnF1ZXJ5U2VsZWN0b3IoZmlsbGVyUm93U2VsZWN0b3IpID09PSBudWxsICYmXG4gICAgICBkYXRhQ2VsbHMocm93KS5ldmVyeShjZWxsID0+IGNlbGwuY29sU3BhbiA8PSAxKVxuICAgICk7XG4gIH1cblxuICBmdW5jdGlvbiBzZWxlY3RlZENvbHVtbnMoXG4gICAgbGF5b3V0czogcmVhZG9ubHkgTGF5b3V0W10sXG4gICAgaXNTZWxlY3RlZDogU2VsZWN0aW9uVGVzdCxcbiAgICBlbmRwb2ludHM6IHJlYWRvbmx5IChOb2RlIHwgbnVsbCB8IHVuZGVmaW5lZClbXSxcbiAgKTogbnVtYmVyW10ge1xuICAgIGNvbnN0IGNvbHVtbnMgPSBuZXcgU2V0PG51bWJlcj4oKTtcbiAgICBmb3IgKGNvbnN0IHsgaGVhZGVyLCBib2R5IH0gb2YgbGF5b3V0cylcbiAgICAgIGZvciAoY29uc3Qgcm93IG9mIFsuLi5oZWFkZXIsIC4uLmJvZHldKVxuICAgICAgICByb3cuZm9yRWFjaCgoY2VsbCwgY29sdW1uKSA9PiB7XG4gICAgICAgICAgaWYgKGNlbGwgIT09IHVuZGVmaW5lZCAmJiBpc1NlbGVjdGVkKGNlbGwpKSBjb2x1bW5zLmFkZChjb2x1bW4pO1xuICAgICAgICB9KTtcbiAgICBjb25zdCB0b3VjaGVkID0gWy4uLmNvbHVtbnNdLnNvcnQoKGEsIGIpID0+IGEgLSBiKTtcblxuICAgIC8vIEJvdGggZW5kcyBoYXZlIHRvIGxhbmQgaW4gYSBjZWxsIHRvIGRlc2NyaWJlIGEgc3BhbjsgYW55dGhpbmcgZWxzZSAoYVxuICAgIC8vIHNlbGVjdC1hbGwsIGFuIGVuZHBvaW50IG9uIGEgcm93IHJhdGhlciB0aGFuIGEgY2VsbCkga2VlcHMgZXZlcnkgY29sdW1uLlxuICAgIGNvbnN0IHNwYW4gPSBlbmRwb2ludHNcbiAgICAgIC5tYXAobm9kZSA9PiAobm9kZSA/IGNvbHVtbk9mKGxheW91dHMsIG5vZGUpIDogdW5kZWZpbmVkKSlcbiAgICAgIC5maWx0ZXIoKGNvbHVtbik6IGNvbHVtbiBpcyBudW1iZXIgPT4gY29sdW1uICE9PSB1bmRlZmluZWQpO1xuICAgIHJldHVybiBzcGFuLmxlbmd0aCA9PT0gZW5kcG9pbnRzLmxlbmd0aCAmJiBzcGFuLmxlbmd0aCA+IDFcbiAgICAgID8gdG91Y2hlZC5maWx0ZXIoXG4gICAgICAgICAgY29sdW1uID0+IGNvbHVtbiA+PSBNYXRoLm1pbiguLi5zcGFuKSAmJiBjb2x1bW4gPD0gTWF0aC5tYXgoLi4uc3BhbiksXG4gICAgICAgIClcbiAgICAgIDogdG91Y2hlZDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNvbHVtbk9mKFxuICAgIGxheW91dHM6IHJlYWRvbmx5IExheW91dFtdLFxuICAgIG5vZGU6IE5vZGUsXG4gICk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gICAgZm9yIChjb25zdCB7IGhlYWRlciwgYm9keSB9IG9mIGxheW91dHMpXG4gICAgICBmb3IgKGNvbnN0IHJvdyBvZiBbLi4uaGVhZGVyLCAuLi5ib2R5XSkge1xuICAgICAgICBjb25zdCBjb2x1bW4gPSByb3cuZmluZEluZGV4KGNlbGwgPT4gY2VsbD8uY29udGFpbnMobm9kZSkgPT09IHRydWUpO1xuICAgICAgICBpZiAoY29sdW1uID49IDApIHJldHVybiBjb2x1bW47XG4gICAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHNlbGVjdGVkQ291bnQocm93OiBSb3csIGlzU2VsZWN0ZWQ6IFNlbGVjdGlvblRlc3QpOiBudW1iZXIge1xuICAgIHJldHVybiByb3cuZmlsdGVyKGNlbGwgPT4gY2VsbCAhPT0gdW5kZWZpbmVkICYmIGlzU2VsZWN0ZWQoY2VsbCkpLmxlbmd0aDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGhlYWRlclRleHQoY2VsbDogRWxlbWVudCB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRleHQoY2VsbD8ucXVlcnlTZWxlY3RvcihoZWFkZXJMYWJlbFNlbGVjdG9yKSA/PyBjZWxsKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRleHQoY2VsbDogRWxlbWVudCB8IHVuZGVmaW5lZCB8IG51bGwpOiBzdHJpbmcge1xuICAgIHJldHVybiBjZWxsID8gdmlzaWJsZVRleHQoY2VsbCkucmVwbGFjZSgvXFxzKy9nLCAnICcpLnRyaW0oKSA6ICcnO1xuICB9XG5cbiAgLyoqXG4gICAqIFRlbXBsYXRlIGluZGVudGF0aW9uIGxhbmRzIGluIHRoZSBET00gYXMgbmV3bGluZXMgYW5kIHJ1bnMgb2Ygc3BhY2VzLCB3aGljaFxuICAgKiBzcGxpdCBhIHNpbmdsZSByb3cgYWNyb3NzIHNldmVyYWwgc3ByZWFkc2hlZXQgcm93cyB1bmxlc3MgY29sbGFwc2VkIGJ5IHRoZVxuICAgKiBjYWxsZXIuIENvbW1lbnQgYW5jaG9ycyBhbmQgc2NyZWVuLXJlYWRlci1vbmx5IGNvbnRlbnQgYXJlIGRyb3BwZWQsIGFuZFxuICAgKiBzaWJsaW5nIG5vZGVzIGFyZSBzZXBhcmF0ZWQgc28gdGhhdCBhZGphY2VudCBlbGVtZW50cyBkbyBub3QgcnVuIHRvZ2V0aGVyLlxuICAgKi9cbiAgZnVuY3Rpb24gdmlzaWJsZVRleHQobm9kZTogTm9kZSk6IHN0cmluZyB7XG4gICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBUZXh0KSByZXR1cm4gbm9kZS5ub2RlVmFsdWUgPz8gJyc7XG4gICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBFbGVtZW50KVxuICAgICAgcmV0dXJuIG5vZGUubWF0Y2hlcyhhc3Npc3RpdmVUZXh0U2VsZWN0b3IpXG4gICAgICAgID8gJydcbiAgICAgICAgOiBBcnJheS5mcm9tKG5vZGUuY2hpbGROb2RlcykubWFwKHZpc2libGVUZXh0KS5qb2luKCcgJyk7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgZnVuY3Rpb24gZXNjYXBlSHRtbCh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdmFsdWVcbiAgICAgIC5yZXBsYWNlKC8mL2csICcmYW1wOycpXG4gICAgICAucmVwbGFjZSgvPC9nLCAnJmx0OycpXG4gICAgICAucmVwbGFjZSgvPi9nLCAnJmd0OycpO1xuICB9XG59XG4iXX0=