@spotify/backstage-plugin-soundcheck 0.19.8 → 0.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (295) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/dist/alpha/entity-content.esm.js +1 -1
  3. package/dist/alpha.d.ts +3 -116
  4. package/dist/blueprints/IntegrationPageBlueprint.esm.js +1 -1
  5. package/dist/components/AreaChart/AreaChart.esm.js +1 -1
  6. package/dist/components/CampaignCreatePage/CampaignCreatePage.esm.js +1 -1
  7. package/dist/components/CampaignForm/CampaignForm.esm.js +1 -1
  8. package/dist/components/CampaignForm/Steps/CampaignMilestonesStep.esm.js +1 -1
  9. package/dist/components/CampaignForm/hooks/utils.esm.js +1 -1
  10. package/dist/components/CampaignForm/utils/campaignFormUtils.esm.js +2 -2
  11. package/dist/components/CampaignPage/CampaignPage.esm.js +1 -1
  12. package/dist/components/CampaignPage/CampaignPageBUI.esm.js +1 -1
  13. package/dist/components/CampaignPage/CampaignStatusBarBUI.esm.js +2 -0
  14. package/dist/components/CampaignPage/CampaignStatusCard.esm.js +2 -0
  15. package/dist/components/CampaignPage/CampaignStatusTableBUI.esm.js +2 -0
  16. package/dist/components/CampaignsPage/CampaignListPageBUI.esm.js +1 -1
  17. package/dist/components/CampaignsPage/CampaignsPage.esm.js +1 -1
  18. package/dist/components/CampaignsPage/EditCampaignView.esm.js +1 -1
  19. package/dist/components/Cards/HistoricalCheckStatusCard/HistoricalCheckStatusCard.esm.js +1 -1
  20. package/dist/components/Cards/TrackStatusCard/TrackStatusCard.esm.js +1 -1
  21. package/dist/components/CategoryBar/CategoryBar.esm.js +1 -1
  22. package/dist/components/Charts/chartUtils.esm.js +1 -1
  23. package/dist/components/CheckCreatePage/CheckCreatePage.esm.js +1 -1
  24. package/dist/components/CheckForm/CheckForm.esm.js +1 -1
  25. package/dist/components/CheckForm/FormFields/RuleInput/Conditions/RuleConditionInput.esm.js +1 -1
  26. package/dist/components/CheckForm/Steps/CheckApplicabilityStep.esm.js +1 -1
  27. package/dist/components/CheckForm/Steps/CheckReviewStep.esm.js +1 -1
  28. package/dist/components/CheckForm/utils/checkFormUtils.esm.js +2 -2
  29. package/dist/components/CheckForm/utils/validation.esm.js +1 -1
  30. package/dist/components/CheckPage/CheckEditPage.esm.js +1 -1
  31. package/dist/components/CheckPage/CheckEntitiesTable/CheckEntitiesTableBUI.esm.js +1 -1
  32. package/dist/components/CheckPage/CheckPage.esm.js +1 -1
  33. package/dist/components/CheckPage/CheckPageBUI.esm.js +1 -1
  34. package/dist/components/CheckPage/CheckStatusHistoryChartBUI.esm.js +1 -1
  35. package/dist/components/CheckPage/CheckStatusTableBUI.esm.js +1 -1
  36. package/dist/components/CheckPage/ExemptionsTableBUI.esm.js +1 -1
  37. package/dist/components/CheckPage/utils.esm.js +1 -1
  38. package/dist/components/CheckSelection/CheckSelection.esm.js +1 -1
  39. package/dist/components/CheckStatusBar/CheckStatusBar.esm.js +1 -1
  40. package/dist/components/CheckTemplatesPage/CheckTemplatesPage.esm.js +1 -1
  41. package/dist/components/CheckTemplatesPage/CheckTemplatesPageDeprecated.esm.js +1 -1
  42. package/dist/components/CheckTemplatesPage/TemplateCategory.esm.js +1 -1
  43. package/dist/components/ChecksPage/ChecksListPageBUI.esm.js +1 -1
  44. package/dist/components/ChecksPage/ChecksPage.esm.js +1 -1
  45. package/dist/components/ChecksTab/ChecksTab.esm.js +1 -1
  46. package/dist/components/ChecksTable/ChecksTable.esm.js +1 -1
  47. package/dist/components/CollapsablePanel/CollapsablePanel.esm.js +1 -1
  48. package/dist/components/CollectorPage/CollectorDetailsPage.esm.js +1 -1
  49. package/dist/components/CollectorPage/CollectorDetailsPageBUI.esm.js +1 -1
  50. package/dist/components/CollectorPage/CollectorDetailsPageDeprecated.esm.js +1 -1
  51. package/dist/components/CollectorPage/CollectorFactTable.esm.js +1 -1
  52. package/dist/components/CollectorPage/CollectorFactTableBUI.esm.js +1 -1
  53. package/dist/components/CollectorPage/CollectorPage.esm.js +1 -1
  54. package/dist/components/CollectorPage/Configurators/AzureDevOps/NumberOfWorkItemsComponent.esm.js +1 -1
  55. package/dist/components/CollectorPage/Configurators/BigQuery/QueryFactDetailsComponent.esm.js +1 -1
  56. package/dist/components/CollectorPage/Configurators/Common/CollectorOption.esm.js +1 -1
  57. package/dist/components/CollectorPage/Configurators/Common/FactCollectionConfig.esm.js +1 -1
  58. package/dist/components/CollectorPage/Configurators/Common/utils.esm.js +1 -1
  59. package/dist/components/CollectorPage/Configurators/HTTP/HttpRequestComponent.esm.js +1 -1
  60. package/dist/components/CollectorPage/Configurators/SCM/JsonFactDetailsComponent.esm.js +1 -1
  61. package/dist/components/CollectorPage/Configurators/SCM/RegexFactDetailsComponent.esm.js +1 -1
  62. package/dist/components/CollectorsPage/CollectorListPage/CollectorListPageDeprecated.esm.js +1 -1
  63. package/dist/components/CollectorsPage/CollectorListPage/CollectorSummaryCard.esm.js +1 -1
  64. package/dist/components/CollectorsPage/CollectorsPage.esm.js +1 -1
  65. package/dist/components/CollectorsPage/IntegrationsListPageBUI.esm.js +1 -1
  66. package/dist/components/FactExplorer/FactExplorer.esm.js +1 -1
  67. package/dist/components/FactExplorer/FactExplorerContext.esm.js +1 -1
  68. package/dist/components/FactExplorer/FactExplorerDialogBUI.esm.js +1 -1
  69. package/dist/components/Filter/FilterComponent.esm.js +1 -1
  70. package/dist/components/Filter/FilterPreviewTable/FilterPreviewTable.esm.js +1 -1
  71. package/dist/components/Filter/KeyValueInputDialog.esm.js +1 -1
  72. package/dist/components/Filter/types.esm.js +1 -1
  73. package/dist/components/Filter/utils.esm.js +1 -1
  74. package/dist/components/FilterSidebar/FilterSidebar.esm.js +1 -1
  75. package/dist/components/FilterSidebar/StateFilter.esm.js +1 -1
  76. package/dist/components/FormControlledAutocomplete/ControlledAutocomplete.esm.js +1 -1
  77. package/dist/components/FormFilterSection/FormFilterSection.esm.js +1 -1
  78. package/dist/components/FormStepper/FormStepper.esm.js +1 -1
  79. package/dist/components/HierarchicalTechInsightsPage/visualizations/LoadingOverlay.esm.js +1 -1
  80. package/dist/components/HierarchicalTechInsightsPage/visualizations/NivoCirclePacking.esm.js +1 -1
  81. package/dist/components/HierarchicalTechInsightsPage/visualizations/NivoIcicle.esm.js +1 -1
  82. package/dist/components/HierarchicalTechInsightsPage/visualizations/NivoSunburst.esm.js +1 -1
  83. package/dist/components/HierarchicalTechInsightsPage/visualizations/NivoTreemap.esm.js +1 -1
  84. package/dist/components/HierarchicalTechInsightsPage/visualizations/VisualizationBreadcrumb.esm.js +1 -1
  85. package/dist/components/ImportExportPanel/ImportExportPanelBUI.esm.js +1 -1
  86. package/dist/components/ImportExportPanel/ImportExportPanelDeprecated.esm.js +1 -1
  87. package/dist/components/OverviewPage/OverviewPageContent.esm.js +1 -1
  88. package/dist/components/OverviewPage/OverviewPageHeader.esm.js +1 -1
  89. package/dist/components/Pagination/Pagination.esm.js +1 -1
  90. package/dist/components/RoutingPage/RoutingPage.esm.js +1 -1
  91. package/dist/components/RoutingPage/RoutingPageBUI.esm.js +1 -1
  92. package/dist/components/RoutingPage/RoutingPageWrapper.esm.js +1 -1
  93. package/dist/components/SoundcheckHeader/Breadcrumbs.esm.js +1 -1
  94. package/dist/components/SoundcheckHeader/SoundcheckHeader.esm.js +1 -1
  95. package/dist/components/SoundcheckHeader/SoundcheckHeaderBUI.esm.js +1 -1
  96. package/dist/components/SoundcheckHeader/useHeader.esm.js +1 -1
  97. package/dist/components/SummaryCard/SummaryCard.esm.js +1 -1
  98. package/dist/components/SummaryCard/SummaryCardActionsMenu.esm.js +1 -1
  99. package/dist/components/TableRowWithOwner/TableRowWithOwner.esm.js +1 -1
  100. package/dist/components/TechHealth/Filters/FacetFilter.esm.js +1 -1
  101. package/dist/components/TechHealth/Filters/FilterProvider.esm.js +1 -1
  102. package/dist/components/TechHealth/Filters/Filters.esm.js +1 -1
  103. package/dist/components/TechHealth/Filters/FiltersHeader.esm.js +1 -1
  104. package/dist/components/TechHealth/Filters/FiltersSection.esm.js +1 -1
  105. package/dist/components/TechHealth/Filters/NumberOfDaysFilter.esm.js +1 -1
  106. package/dist/components/TechHealth/Filters/types.esm.js +1 -1
  107. package/dist/components/TechHealth/Filters/utils.esm.js +1 -1
  108. package/dist/components/TechHealth/Loading/TechHealthLoading.esm.js +1 -1
  109. package/dist/components/TechInsights/TechInsightsPage.esm.js +1 -1
  110. package/dist/components/TechInsights/TechInsightsPageBUI.esm.js +1 -1
  111. package/dist/components/TechInsights/TechInsightsTableBUI.esm.js +1 -1
  112. package/dist/components/TechInsightsExplorerTable/TechInsightsExplorerTable.esm.js +1 -1
  113. package/dist/components/TechInsightsGroupSelector/TechInsightsGroupSelector.esm.js +1 -1
  114. package/dist/components/TopFailingChecksTable/TopFailingChecksTableBUI.esm.js +1 -1
  115. package/dist/components/TrackCreatePage/TrackCreatePage.esm.js +1 -1
  116. package/dist/components/TrackEditPage/TrackEditPage.esm.js +1 -1
  117. package/dist/components/TrackForm/Steps/LevelsStep/LevelsStepNew.esm.js +1 -1
  118. package/dist/components/TrackForm/TrackForm.esm.js +1 -1
  119. package/dist/components/TrackForm/utils/useTrackForm.esm.js +1 -1
  120. package/dist/components/TrackPage/TrackEntitiesTable/TrackEntitiesTableBUI.esm.js +1 -1
  121. package/dist/components/TrackPage/TrackEntitiesTable/utils.esm.js +1 -1
  122. package/dist/components/TrackPage/TrackPage.esm.js +1 -1
  123. package/dist/components/TrackPage/TrackPageBUI.esm.js +1 -1
  124. package/dist/components/TrackPage/TrackStatusTableBUI.esm.js +1 -1
  125. package/dist/components/TracksPage/TracksListPageBUI.esm.js +1 -1
  126. package/dist/components/TracksPage/TracksPage.esm.js +1 -1
  127. package/dist/components/TracksTab/TracksTab.esm.js +1 -1
  128. package/dist/hooks/aggregations/useCertificationStatus.esm.js +1 -1
  129. package/dist/hooks/aggregations/useCertificationStatusHistory.esm.js +1 -1
  130. package/dist/hooks/aggregations/useCheckStatus.esm.js +1 -1
  131. package/dist/hooks/aggregations/useCheckStatusHistory.esm.js +1 -1
  132. package/dist/hooks/aggregations/useCheckStatuses.esm.js +1 -1
  133. package/dist/hooks/campaigns/useGetCampaign.esm.js +1 -1
  134. package/dist/hooks/checks/useCheck.esm.js +1 -1
  135. package/dist/hooks/checks/useExecutableChecks.esm.js +1 -1
  136. package/dist/hooks/checks/useGetChecks.esm.js +1 -1
  137. package/dist/hooks/collectors/useGetCollectors.esm.js +1 -1
  138. package/dist/hooks/collectors/useGetFactSchema.esm.js +1 -1
  139. package/dist/hooks/collectors/useUpdateCollectorConfig.esm.js +1 -1
  140. package/dist/hooks/exemptions/useExemptions.esm.js +1 -1
  141. package/dist/hooks/facets/useFacetsForOwner.esm.js +1 -1
  142. package/dist/hooks/filters/useFilters.esm.js +1 -1
  143. package/dist/hooks/groups/useAllGroups.esm.js +1 -1
  144. package/dist/hooks/tracks/useGetTracksApplicableEntityCount.esm.js +1 -1
  145. package/dist/hooks/tracks/useTrack.esm.js +1 -1
  146. package/dist/hooks/useSortSearchParams.esm.js +2 -0
  147. package/dist/index.d.ts +11 -11
  148. package/dist/routes.esm.js +1 -1
  149. package/dist/utils/charts.esm.js +1 -1
  150. package/dist/utils/filters.esm.js +1 -1
  151. package/dist/utils/formStyles.esm.js +1 -1
  152. package/dist/utils/helpers.esm.js +1 -1
  153. package/dist/utils/json.esm.js +2 -0
  154. package/dist/utils/validation.esm.js +1 -1
  155. package/package.json +19 -19
  156. package/dist/components/CampaignPage/CampaignPageDeprecated.esm.js +0 -2
  157. package/dist/components/CampaignPage/CampaignStatusHistoryTile.esm.js +0 -2
  158. package/dist/components/CampaignPage/CampaignStatusTile.esm.js +0 -2
  159. package/dist/components/CampaignPage/DaysRemainingTile.esm.js +0 -2
  160. package/dist/components/CampaignsPage/CampaignListPage/CampaignListPageDeprecated.esm.js +0 -2
  161. package/dist/components/CampaignsPage/CampaignListPage/CampaignMetadata.esm.js +0 -2
  162. package/dist/components/CampaignsPage/CampaignListPage/CampaignSummaryCard.esm.js +0 -2
  163. package/dist/components/CampaignsPage/CampaignListPage/CampaignTypes.esm.js +0 -2
  164. package/dist/components/CampaignsPage/CampaignListPage/CampaignsOverviewSkeleton.esm.js +0 -2
  165. package/dist/components/Charts/BarChart/BarChart.esm.js +0 -2
  166. package/dist/components/Charts/BarChart/BarChartPlaceholder.esm.js +0 -2
  167. package/dist/components/Charts/BarChart/GroupPassRateHistoryBarChart.esm.js +0 -2
  168. package/dist/components/Charts/BarChart/TrackSummaryBarChart.esm.js +0 -2
  169. package/dist/components/Charts/ChartTypes.esm.js +0 -2
  170. package/dist/components/Charts/ChartWrapper/ChartWrapper.esm.js +0 -2
  171. package/dist/components/Charts/LineChart/EntityPassRateHistoryLineChart.esm.js +0 -2
  172. package/dist/components/Charts/LineChart/LineChart.esm.js +0 -2
  173. package/dist/components/Charts/LineChart/LineChartPlaceholder.esm.js +0 -2
  174. package/dist/components/Charts/LineChart/PassRateHistoryLineChart.esm.js +0 -2
  175. package/dist/components/Charts/LineChart/TableLineChart.esm.js +0 -2
  176. package/dist/components/Charts/LineChart/TrackPassRateHistoryLineChart.esm.js +0 -2
  177. package/dist/components/Charts/LoadingChart.esm.js +0 -2
  178. package/dist/components/CheckHistoryChartCard/CheckHistoryChartCard.esm.js +0 -2
  179. package/dist/components/CheckPage/CheckEntitiesTable/CheckEntitiesTable.esm.js +0 -2
  180. package/dist/components/CheckPage/CheckEntitiesTable/columns.esm.js +0 -2
  181. package/dist/components/CheckPage/CheckPageDeprecated.esm.js +0 -2
  182. package/dist/components/CheckPage/CheckStatusHistoryChart.esm.js +0 -2
  183. package/dist/components/CheckPage/CheckStatusTable.esm.js +0 -2
  184. package/dist/components/CheckPage/ExemptionsTable.esm.js +0 -2
  185. package/dist/components/ChecksPage/CheckListPage/CheckListPageDeprecated.esm.js +0 -2
  186. package/dist/components/ChecksPage/CheckListPage/CheckMetadata.esm.js +0 -2
  187. package/dist/components/ChecksPage/CheckListPage/CheckSummaryCard.esm.js +0 -2
  188. package/dist/components/ChecksPage/skeletons/ChecksOverviewSkeleton.esm.js +0 -2
  189. package/dist/components/CollectorsPage/CollectorListPage/CollectorListSkeleton.esm.js +0 -2
  190. package/dist/components/ColorChip/ColorChip.esm.js +0 -2
  191. package/dist/components/EntityPassRateCard/EntityPassRateCard.esm.js +0 -2
  192. package/dist/components/Expand/Expand.esm.js +0 -2
  193. package/dist/components/GroupHierarchySelector/GroupHierarchyCategorySelection.esm.js +0 -2
  194. package/dist/components/GroupHierarchySelector/GroupHierarchyChip.esm.js +0 -2
  195. package/dist/components/GroupHierarchySelector/GroupHierarchyGroupInfo.esm.js +0 -2
  196. package/dist/components/GroupHierarchySelector/GroupHierarchySelector.esm.js +0 -2
  197. package/dist/components/GroupHierarchySelector/GroupHierarchySelectorDialog.esm.js +0 -2
  198. package/dist/components/GroupPassRateCard/GroupPassRateCard.esm.js +0 -2
  199. package/dist/components/HierarchicalTechInsightsPage/ColorLegend.esm.js +0 -2
  200. package/dist/components/HierarchicalTechInsightsPage/HierarchicalTechInsightsPage.esm.js +0 -2
  201. package/dist/components/HierarchicalTechInsightsPage/HierarchyTable.esm.js +0 -2
  202. package/dist/components/HierarchicalTechInsightsPage/LowestPerformingTeams.esm.js +0 -2
  203. package/dist/components/HierarchicalTechInsightsPage/SelectedNodeSidebar.esm.js +0 -2
  204. package/dist/components/HierarchicalTechInsightsPage/TeamPerformanceCard.esm.js +0 -2
  205. package/dist/components/HierarchicalTechInsightsPage/TeamPerformanceListCard.esm.js +0 -2
  206. package/dist/components/HierarchicalTechInsightsPage/TopPerformingTeams.esm.js +0 -2
  207. package/dist/components/HierarchicalTechInsightsPage/visualizations/findNodePath.esm.js +0 -2
  208. package/dist/components/LevelsTable/CheckRowContent.esm.js +0 -2
  209. package/dist/components/LevelsTable/LevelsTable.esm.js +0 -2
  210. package/dist/components/OverviewChartCard/OverviewChartCard.esm.js +0 -2
  211. package/dist/components/OverviewChartCard/OverviewChartCardStyles.esm.js +0 -2
  212. package/dist/components/PassRateGrid/PassRateGrid.esm.js +0 -2
  213. package/dist/components/PassRateGrid/PassRateMetadata.esm.js +0 -2
  214. package/dist/components/PassRateGrid/types.esm.js +0 -2
  215. package/dist/components/PassRateTable/NewPassRateTable.esm.js +0 -2
  216. package/dist/components/PassRateTable/PassRateTable.esm.js +0 -4
  217. package/dist/components/PassRateTable/types.esm.js +0 -2
  218. package/dist/components/PassingPercentProgressbar/PassPercentageProgressbar.esm.js +0 -2
  219. package/dist/components/QuickstartPage/HowDoIListItem.esm.js +0 -2
  220. package/dist/components/QuickstartPage/QuickstartCardBase.esm.js +0 -2
  221. package/dist/components/QuickstartPage/QuickstartPage.esm.js +0 -3
  222. package/dist/components/QuickstartPage/WelcomeHelpSection.esm.js +0 -7
  223. package/dist/components/QuickstartPage/styles.esm.js +0 -2
  224. package/dist/components/RichTooltip/RichTooltip.esm.js +0 -2
  225. package/dist/components/RoutingPage/NewFeatureTab.esm.js +0 -2
  226. package/dist/components/RoutingPage/RoutingPageDeprecated.esm.js +0 -2
  227. package/dist/components/RoutingPage/RoutingPageWrapperDeprecated.esm.js +0 -2
  228. package/dist/components/SearchBar/SearchBar.esm.js +0 -2
  229. package/dist/components/SearchFilters/SearchFilters.esm.js +0 -2
  230. package/dist/components/SendCampaignNotificationDialog/SendCampaignNotificationDialog.esm.js +0 -2
  231. package/dist/components/SoundcheckEntityLink/SoundcheckEntityLink.esm.js +0 -2
  232. package/dist/components/SoundcheckHeader/headerUtil.esm.js +0 -2
  233. package/dist/components/TeamStatusBar/TeamStatusBar.esm.js +0 -2
  234. package/dist/components/TechHealth/Filters/useFacetOptions.esm.js +0 -2
  235. package/dist/components/TechHealth/TechHealth.esm.js +0 -2
  236. package/dist/components/TechHealthSummary/SummaryAggregationsProvider.esm.js +0 -2
  237. package/dist/components/TechHealthSummary/TechHealthSummary.esm.js +0 -2
  238. package/dist/components/TechHealthTabs/ActionColumn.esm.js +0 -2
  239. package/dist/components/TechHealthTabs/CampaignResultsTab/CampaignResultsTab.esm.js +0 -2
  240. package/dist/components/TechHealthTabs/CheckResultsTab/CheckResultsTab.esm.js +0 -2
  241. package/dist/components/TechHealthTabs/CheckResultsTab/CheckTrendColumn.esm.js +0 -2
  242. package/dist/components/TechHealthTabs/EntityResultsTab/EntityResultsTab.esm.js +0 -2
  243. package/dist/components/TechHealthTabs/EntityResultsTab/EntityTrendColumn.esm.js +0 -2
  244. package/dist/components/TechHealthTabs/GroupResultsTab/GroupResultsTab.esm.js +0 -2
  245. package/dist/components/TechHealthTabs/GroupResultsTab/GroupTrendColumn.esm.js +0 -2
  246. package/dist/components/TechHealthTabs/MostRecentColumn.esm.js +0 -2
  247. package/dist/components/TechHealthTabs/NameColumn.esm.js +0 -2
  248. package/dist/components/TechHealthTabs/OwnerColumn.esm.js +0 -2
  249. package/dist/components/TechHealthTabs/PassRateTabHeader.esm.js +0 -2
  250. package/dist/components/TechHealthTabs/PassRateTabStyles.esm.js +0 -2
  251. package/dist/components/TechHealthTabs/TechHealthExportFunctions.esm.js +0 -2
  252. package/dist/components/TechHealthTabs/TrackResultsTab/TrackLevelTrendColumn.esm.js +0 -2
  253. package/dist/components/TechHealthTabs/TrackResultsTab/TrackResultsTab.esm.js +0 -2
  254. package/dist/components/TechHealthTabs/techHealthTabUtils.esm.js +0 -2
  255. package/dist/components/TechInsights/FilterControls.esm.js +0 -2
  256. package/dist/components/TechInsights/SummaryTiles.esm.js +0 -2
  257. package/dist/components/TechInsights/TechInsightsPageDeprecated.esm.js +0 -2
  258. package/dist/components/TechInsights/TechInsightsTableView.esm.js +0 -2
  259. package/dist/components/TimePeriodBar/TimePeriodBar.esm.js +0 -2
  260. package/dist/components/TopFailingChecksTable/TopFailingChecksTable.esm.js +0 -2
  261. package/dist/components/TrackHistoryChartCard/TrackHistoryChartCard.esm.js +0 -2
  262. package/dist/components/TrackPage/TrackEntitiesTable/TrackEntitiesTable.esm.js +0 -2
  263. package/dist/components/TrackPage/TrackEntitiesTable/TrackStatusChip.esm.js +0 -2
  264. package/dist/components/TrackPage/TrackEntitiesTable/columns.esm.js +0 -2
  265. package/dist/components/TrackPage/TrackHistoryChart.esm.js +0 -2
  266. package/dist/components/TrackPage/TrackPageDeprecated.esm.js +0 -2
  267. package/dist/components/TrackPage/TrackProgressCard.esm.js +0 -2
  268. package/dist/components/TrackPage/TrackStatus.esm.js +0 -2
  269. package/dist/components/TrackPage/TrackStatusBar.esm.js +0 -2
  270. package/dist/components/TrackPage/TrackStatusTable.esm.js +0 -2
  271. package/dist/components/TrackPage/utils.esm.js +0 -2
  272. package/dist/components/TrackSelection/TrackSelection.esm.js +0 -2
  273. package/dist/components/TracksPage/TrackListPage/TrackEmptyState.esm.js +0 -2
  274. package/dist/components/TracksPage/TrackListPage/TrackListPageDeprecated.esm.js +0 -2
  275. package/dist/components/TracksPage/TrackListPage/TrackMetadata.esm.js +0 -2
  276. package/dist/components/TracksPage/TrackListPage/TrackSummaryCard.esm.js +0 -2
  277. package/dist/components/TracksPage/TrackListPage/TracksOverviewSkeleton.esm.js +0 -2
  278. package/dist/hooks/aggregations/useAggregatedCheckPassRateTrend.esm.js +0 -2
  279. package/dist/hooks/aggregations/useAggregatedEntityPassRateTrend.esm.js +0 -2
  280. package/dist/hooks/aggregations/useAggregatedGroupPassRateTrend.esm.js +0 -2
  281. package/dist/hooks/aggregations/useAggregatedTrackPassRateTrend.esm.js +0 -2
  282. package/dist/hooks/aggregations/useCheckPassRateTrend.esm.js +0 -2
  283. package/dist/hooks/aggregations/useEntityPassRateTrend.esm.js +0 -2
  284. package/dist/hooks/aggregations/useGroupPassRateTrend.esm.js +0 -2
  285. package/dist/hooks/aggregations/useTrackPassRateTrend.esm.js +0 -2
  286. package/dist/hooks/cache/useEntityCountCached.esm.js +0 -2
  287. package/dist/hooks/cache/useTrackCountCached.esm.js +0 -2
  288. package/dist/hooks/campaigns/useGetCampaignOwners.esm.js +0 -2
  289. package/dist/hooks/catalog/useGetEntityCount.esm.js +0 -2
  290. package/dist/hooks/checks/useGetCheckOwners.esm.js +0 -2
  291. package/dist/hooks/entities/useEntityRefsForUser.esm.js +0 -2
  292. package/dist/hooks/facets/useFacetFilters.esm.js +0 -2
  293. package/dist/hooks/heirarchy/useGroupTypeHierarchy.esm.js +0 -2
  294. package/dist/hooks/tracks/useGetTrackOwners.esm.js +0 -2
  295. package/dist/utils/colors.esm.js +0 -2
@@ -1,2 +0,0 @@
1
- import{jsx as o,jsxs as k}from"react/jsx-runtime";import{parseEntityRef as L}from"@backstage/catalog-model";import{useApi as H,useRouteRef as O}from"@backstage/core-plugin-api";import{entityRouteRef as q}from"@backstage/plugin-catalog-react";import{Typography as x,Box as z,Grid as J}from"@material-ui/core";import{useState as s,useEffect as A}from"react";import{soundcheckApiRef as K}from"../../../api.esm.js";import"@tanstack/react-query";import"../../../hooks/graphqlKeys.esm.js";import"@spotify/backstage-plugin-soundcheck-common";import"../../../hooks/useSoundcheckAlert.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import{useGroupPassRateTrend as Q}from"../../../hooks/aggregations/useGroupPassRateTrend.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import{groupPassRatesCsvFilename as U}from"../../../utils/charts.esm.js";import{PassRateGrid as W}from"../../PassRateGrid/PassRateGrid.esm.js";import"../../PassRateGrid/types.esm.js";import{NewPassRateTable as X}from"../../PassRateTable/NewPassRateTable.esm.js";import"../../TechHealth/Filters/types.esm.js";import"../../TechHealth/Filters/FacetFilter.esm.js";import{useFilterContext as Y}from"../../TechHealth/Filters/FilterProvider.esm.js";import"../../TechHealth/Filters/Filters.esm.js";import"../../TechHealth/Filters/FiltersHeader.esm.js";import"../../TechHealth/Filters/FiltersSection.esm.js";import"lodash";import"../../../contexts/TrackFormContext.esm.js";import"../../../contexts/CheckFormContext.esm.js";import"../../../contexts/CampaignFormContext.esm.js";import"../../../contexts/UserProvider.esm.js";import{Loading as Z}from"../../TechHealth/Loading/Loading.esm.js";import{ActionColumn as _}from"../ActionColumn.esm.js";import{MostRecentColumn as $}from"../MostRecentColumn.esm.js";import{NameColumn as ee}from"../NameColumn.esm.js";import{PassRateTabHeader as oe}from"../PassRateTabHeader.esm.js";import{usePassRateTabStyles as re}from"../PassRateTabStyles.esm.js";import{groupPassRatesToCsv as te}from"../TechHealthExportFunctions.esm.js";import{ViewMode as f,generateGroupPassRateGridData as ae}from"../techHealthTabUtils.esm.js";import{GroupTrendColumn as se}from"./GroupTrendColumn.esm.js";function ie(l){return[{label:"NAME",id:"groupName",renderCell:({groupTitle:r,id:i})=>o(ee,{name:r??L(i).name})},{label:"LATEST",id:"latest",renderCell:r=>o($,{snapshot:r.snapshotPassRate})},{label:"TREND",id:"trend",renderCell:r=>o(se,{row:r})},{label:"ACTION",id:"action",renderCell:({id:r})=>o(_,{navigateTo:l(L(r))})}]}const ne=()=>{const l=re(),r=H(K),{filter:i}=Y();i.context=void 0;const c=O(q),[P,R]=s([]),[C,n]=s(void 0),[h,d]=s(0),[u,E]=s(10),{data:t,isLoading:T,isError:I}=Q({filter:i,first:u,after:C}),[a,y]=s(t?.groupPassRates),S=a?.edges?a?.edges[a?.edges.length-1]:{cursor:""};A(()=>{t&&y(()=>({totalCount:t.groupPassRates.totalCount,edges:t.groupPassRates.edges,pageInfo:{endCursor:t.groupPassRates.pageInfo.endCursor,hasNextPage:t.groupPassRates.pageInfo.hasNextPage??!1,hasPreviousPage:t.groupPassRates.pageInfo.hasPreviousPage??!1}}))},[t]);const[g,D]=s(f.TABLE),[m,F]=s("");if(A(()=>{d(0),n("")},[i]),T)return o(Z,{});if(I)return o(x,{color:"error",children:"Failed to load groups"});if(!a?.edges?.length)return o(x,{color:"error",children:"No available groups"});const v=m.length?{...a,edges:a.edges.filter(({node:e})=>e.groupTitle?.toLowerCase()?.includes(m.toLowerCase())||e.id.toLowerCase().includes(m.toLowerCase()))}:a,w=v?.edges.map(({node:e})=>e)??[],b=v?.totalCount??0,M=async()=>{const{groupPassRates:e}=await r.getIndividualGroupPassRates({filter:i});return te(e.edges.map(({node:p})=>p))},B=()=>{R(e=>[...e,C]),n(S?.cursor)},V=()=>{n(P[P.length-1]),R(e=>e.slice(0,-1))},N=(e,p)=>{d(j=>(p>j?B():V(),p))},G=e=>{n(void 0),E(+e.target.value),d(0)};return o(z,{className:l.root,children:k(J,{container:!0,direction:"row",children:[o(oe,{viewMode:g,setViewMode:D,isLoading:T,searchTerm:m,setSearchTerm:F,searchPlaceholder:"Search available teams",csvFilename:U,fetchCsvData:M}),g===f.TABLE&&o(X,{data:w,totalCount:b,page:h,rowsPerPage:u,columns:ie(c),onPageChange:N,onRowsPerPageChange:G}),g===f.GRID&&o(W,{data:ae(w,c),totalCount:b,page:h,rowsPerPage:u,onPageChange:N,onRowsPerPageChange:G})]})})};export{ne as GroupResultsTab};
2
- //# sourceMappingURL=GroupResultsTab.esm.js.map
@@ -1,2 +0,0 @@
1
- import{jsx as r}from"react/jsx-runtime";import{Box as a,Typography as e}from"@material-ui/core";import"recharts";import{convertPassRateToDataPoints as s}from"../../Charts/ChartTypes.esm.js";import"../../Charts/LineChart/LineChart.esm.js";import"../../Charts/chartUtils.esm.js";import{PassRateHistoryLineChart as i}from"../../Charts/LineChart/PassRateHistoryLineChart.esm.js";import"luxon";import"../../TechHealthSummary/SummaryAggregationsProvider.esm.js";import"@backstage/catalog-model";import"../../Charts/BarChart/BarChart.esm.js";import{usePassRateTabStyles as p}from"../PassRateTabStyles.esm.js";const n=({row:{trendPassRates:m}})=>{const t=p(),o=s(m??[]);return o.length?r(a,{className:t.flexColumn,children:r(i,{chartData:o,tableChart:!0})}):r(a,{className:t.flexColumn,children:r(e,{children:"No data"})})};export{n as GroupTrendColumn};
2
- //# sourceMappingURL=GroupTrendColumn.esm.js.map
@@ -1,2 +0,0 @@
1
- import{jsx as r,jsxs as t}from"react/jsx-runtime";import{Box as e,Typography as n}from"@material-ui/core";import{usePassRateTabStyles as m}from"./PassRateTabStyles.esm.js";const a=({snapshot:o})=>{const s=m();return r(e,{className:s.flexColumn,children:t(n,{children:[Math.round(o),"%"]})})};export{a as MostRecentColumn};
2
- //# sourceMappingURL=MostRecentColumn.esm.js.map
@@ -1,2 +0,0 @@
1
- import{jsxs as m,jsx as t}from"react/jsx-runtime";import{Box as s,Typography as i}from"@material-ui/core";import{SoundcheckMarkdownContentDeprecated as n}from"../SoundcheckMarkdownContent/SoundcheckMarkdownContentDeprecated.esm.js";import"@backstage/core-components";import"react";import"react-markdown";import"rehype-raw";import"remark-gfm";import"../SoundcheckMarkdownContent/SoundcheckMarkdownContentBUI.esm.js";import{usePassRateTabStyles as p}from"./PassRateTabStyles.esm.js";const a=({name:r="",description:e=""})=>{const o=p();return m(s,{className:o.flexColumn,children:[t(i,{className:o.boldText,children:r}),t(n,{className:o.descriptionText,content:e??""})]})};export{a as NameColumn};
2
- //# sourceMappingURL=NameColumn.esm.js.map
@@ -1,2 +0,0 @@
1
- import{jsx as n}from"react/jsx-runtime";import{stringifyEntityRef as a,parseEntityRef as l}from"@backstage/catalog-model";import{EntityRefLink as f}from"@backstage/plugin-catalog-react";import{makeStyles as m,Tooltip as p,Typography as y}from"@material-ui/core";import{useEntityByRef as s}from"../../hooks/catalog/useEntityByRef.esm.js";const d=e=>e?.kind==="Group",c=e=>e?.kind==="User",u=m(e=>({ownerLink:{"& span":{"&:hover":{textDecoration:"underline"}},fontSize:e.typography.body1.fontSize}})),h=({ownerEntityRef:e})=>{const{data:t,error:o}=s(e??void 0),i=u();if(t){let r;return d(t)||c(t)?r=t.metadata.title??t.spec.profile?.displayName:r=t.metadata.name,n(f,{entityRef:a(t),title:r,className:i.ownerLink})}else if(o&&e)return n(p,{title:"Unable to pull owner reference from Catalog API",children:n(y,{style:{color:"red"},variant:"body2",children:(()=>{try{return l(e).name}catch{return e}})()})});return null};export{h as OwnerColumn};
2
- //# sourceMappingURL=OwnerColumn.esm.js.map
@@ -1,2 +0,0 @@
1
- import{jsxs as o,jsx as e}from"react/jsx-runtime";import{Grid as s,Button as I,Menu as w,MenuItem as z,ListItemIcon as M,ListItemText as N}from"@material-ui/core";import{makeStyles as E}from"@material-ui/core/styles";import G from"@material-ui/icons/Apps";import P from"@material-ui/icons/GridOn";import V from"@material-ui/icons/KeyboardArrowDown";import j from"@material-ui/icons/Reorder";import{ToggleButtonGroup as R,ToggleButton as h}from"@material-ui/lab";import{useRef as A,useState as u,useEffect as D}from"react";import{CSVLink as O}from"react-csv";import{SearchBar as W}from"../SearchBar/SearchBar.esm.js";import{ViewMode as g}from"./techHealthTabUtils.esm.js";const _=E(r=>({header:{padding:r.spacing(0,0,1),display:"flex"},headerButtons:{display:"flex",gap:r.spacing(1),flexWrap:"nowrap",justifyContent:"end",alignItems:"end"},exportButton:{height:"40px",width:"112px"},csvLink:{display:"none"},menuIconSize:{minWidth:r.spacing(4),color:r.palette.text.primary},menuList:{backgroundColor:r.palette.background.paper,color:r.palette.text.primary}})),F=({viewMode:r,setViewMode:f,isLoading:c,searchTerm:x,setSearchTerm:v,searchPlaceholder:b,fetchCsvData:L,csvFilename:S})=>{const t=_(),m=A(),k=(i,p)=>{p!==null&&f(p)},[d,n]=u(null),[a,C]=u([]),l=!!d,T=i=>{n(i.currentTarget)},y=()=>{n(null)},B=async()=>{n(null);const i=await L();C(i)};return D(()=>{a.length&&m?.current?.link.click()},[a]),o(s,{container:!0,spacing:2,className:t.header,children:[e(s,{item:!0,xs:6,children:e(W,{searchTerm:x,setSearchTerm:v,disabled:c,placeholder:b||"Search",variant:"outlined",size:"small"})}),o(s,{item:!0,xs:6,className:t.headerButtons,children:[e(I,{id:"export-button",className:t.exportButton,disabled:c,variant:"contained",color:"primary","aria-controls":l?"export-menu":void 0,"aria-haspopup":"true","aria-expanded":l?"true":void 0,onClick:T,endIcon:e(V,{}),children:"Export"}),e(O,{data:a,filename:S,className:t.csvLink,ref:m,target:"_blank"}),e(w,{id:"export-menu",anchorEl:d,getContentAnchorEl:null,open:l,onClose:y,MenuListProps:{"aria-labelledby":"export-button",disablePadding:!0,className:t.menuList},anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},children:o(z,{onClick:B,children:[e(M,{color:"inherit",className:t.menuIconSize,children:e(P,{fontSize:"small"})}),e(N,{children:"CSV"})]})}),o(R,{size:"small",value:r,exclusive:!0,onChange:k,children:[e(h,{value:g.TABLE,title:"Table view",children:e(j,{color:"inherit"})}),e(h,{value:g.GRID,title:"Grid view",children:e(G,{color:"inherit"})})]})]})]})};export{F as PassRateTabHeader};
2
- //# sourceMappingURL=PassRateTabHeader.esm.js.map
@@ -1,2 +0,0 @@
1
- import{makeStyles as t}from"@material-ui/core/styles";const o=t(e=>({root:{display:"flex",flexDirection:"column",flex:1,background:e.palette.background.default},ownerText:{fontWeight:500,color:e.palette.text.primary},flexColumn:{display:"flex",flexDirection:"column",gap:e.spacing(.5)},boldText:{fontWeight:"bold"},descriptionText:{maxWidth:400,color:e.palette.text.primary,fontSize:e.typography.subtitle2.fontSize,lineHeight:e.typography.subtitle1.fontSize},detailButton:{textTransform:"none",backgroundColor:"transparent",padding:0,textAlign:"left","&:hover":{textDecoration:"underline",transform:"scale(1)"}}}));export{o as usePassRateTabStyles};
2
- //# sourceMappingURL=PassRateTabStyles.esm.js.map
@@ -1,2 +0,0 @@
1
- import{parseEntityRef as c}from"@backstage/catalog-model";import{DateTime as h}from"luxon";function s(a,t){const e=a;if(t){const n=h.utc();for(let o=t-1;o>=0;o--)e.push(n.minus({day:o}).toISODate())}return e}function r(a){if(!a)return 0;const t=a.map(e=>e.trendPassRates?.length??1);return Math.max(1,...t)}function u(a){const t=[];return t.push(s(["check_id","check_name","check_owner_ref"],r(a))),a?.length&&a.map(e=>{t.push([e.id,e.checkName,e.checkOwnerRef,...e.trendPassRates??[e.snapshotPassRate]])}),t}function p(a){const t=[];if(t.push(s(["entity_ref","entity_name","entity_owner_ref"],r(a))),a?.length)for(const e of a){const n=e.trendPassRates?.length?e.trendPassRates:[e.snapshotPassRate];t.push([e.id,c(e.id).name,e.entityOwnerRef??"",...n])}return t}function m(a){const t=[];return t.push(s(["team_ref","team_name"],r(a))),a?.length&&a.map(e=>{t.push([e.id,e.groupTitle??c(e.id).name,...e.trendPassRates??[e.snapshotPassRate]])}),t}function R(a,t,e){return e?[e.find(({trackId:n})=>n===a.id)?.campaignId??"",a.trackName,a.trackOwnerRef]:[a.id,a.trackName,a.trackOwnerRef,t.levelOrdinal,t.levelName??`Level ${t.levelOrdinal}`,...t.trendPassRates??[t.snapshotPassRate]]}function d(a,t){const e=[],n=a?.length?Math.max(...a.map(l=>r(l.levels))):0,o=t?["campaign_id","campaign_name","campaign_owner"]:["track_id","track_name","track_owner_ref","level_ordinal","level_name"];return e.push(s(o,n)),a?.length&&a.map(l=>{l.levels?.map(i=>{e.push(R(l,i,t))})}),e}function v(a){const t=[];return t.push(s(["name"],a?.overallCheckPassRates?.length??0)),a?.overallCheckPassRates?.length&&t.push(["Check Pass Rate",...a.overallCheckPassRates]),t}function P(a){const t=[];return t.push(s(["level_ordinal","level_name"],r(a?.overallTrackPassRate))),a?.overallTrackPassRate?.length&&a.overallTrackPassRate.map(e=>{t.push([e.levelOrdinal,`Level ${e.levelOrdinal}`,...e.trendPassRates??[e.snapshotPassRate]])}),t}function f(a){const t=[];return t.push(s(["entity_ref","entity_name"],r(a?.overallEntityPassRates))),a?.overallEntityPassRates?.length&&a.overallEntityPassRates.map(e=>{t.push([e.id,c(e.id).name,...e.trendPassRates??[0]])}),t}function g(a){const t=[];return t.push(s(["team_ref","team_name"],1)),a?.groupPassRates?.edges.length&&a?.groupPassRates?.edges.map(({node:e})=>{t.push([e.id,e.groupTitle??c(e.id).name,e.snapshotPassRate])}),t}export{u as checkPassRatesToCsv,p as entityPassRatesToCsv,s as getHeaderRowWithDates,r as getHistoryLength,m as groupPassRatesToCsv,v as overallCheckPassRateToCsv,f as overallEntityPassRatesToCsv,g as overallGroupPassRatesToCsv,P as overallTrackPassRatesToCsv,d as trackPassRatesToCsv};
2
- //# sourceMappingURL=TechHealthExportFunctions.esm.js.map
@@ -1,2 +0,0 @@
1
- import{jsxs as t,jsx as m}from"react/jsx-runtime";import{Box as e,Typography as i}from"@material-ui/core";import"recharts";import{convertPassRateToDataPoints as p}from"../../Charts/ChartTypes.esm.js";import"../../Charts/LineChart/LineChart.esm.js";import"../../Charts/chartUtils.esm.js";import{PassRateHistoryLineChart as n}from"../../Charts/LineChart/PassRateHistoryLineChart.esm.js";import"luxon";import"../../TechHealthSummary/SummaryAggregationsProvider.esm.js";import"@backstage/catalog-model";import"../../Charts/BarChart/BarChart.esm.js";import{usePassRateTabStyles as c}from"../PassRateTabStyles.esm.js";const h=({row:{trendPassRates:r,snapshotPassRate:o}})=>{const a=c(),s=p(r??[]);return t(e,{className:a.flexColumn,children:[t(i,{children:[Math.round(o),"%"]}),m(n,{chartData:s,tableChart:!0})]})};export{h as TrackTrendColumn};
2
- //# sourceMappingURL=TrackLevelTrendColumn.esm.js.map
@@ -1,2 +0,0 @@
1
- import{jsx as e,jsxs as N,Fragment as O}from"react/jsx-runtime";import{useRouteRef as A}from"@backstage/core-plugin-api";import{Typography as k,Box as x,Grid as y}from"@material-ui/core";import{useState as d,useEffect as D,useMemo as S}from"react";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../../api.esm.js";import"../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../../hooks/useSoundcheckAlert.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import{useTrackPassRateTrend as F}from"../../../hooks/aggregations/useTrackPassRateTrend.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import{trackDetailsRouteRef as G}from"../../../routes.esm.js";import{trackPassRatesCsvFilename as B}from"../../../utils/charts.esm.js";import{PassRateGrid as V}from"../../PassRateGrid/PassRateGrid.esm.js";import"../../PassRateGrid/types.esm.js";import{PassRateTable as j}from"../../PassRateTable/PassRateTable.esm.js";import"../../PassRateTable/types.esm.js";import"../../TechHealth/Filters/types.esm.js";import"../../TechHealth/Filters/FacetFilter.esm.js";import{useFilterContext as I}from"../../TechHealth/Filters/FilterProvider.esm.js";import"../../TechHealth/Filters/Filters.esm.js";import"../../TechHealth/Filters/FiltersHeader.esm.js";import"../../TechHealth/Filters/FiltersSection.esm.js";import"lodash";import"../../../contexts/TrackFormContext.esm.js";import"../../../contexts/CheckFormContext.esm.js";import"../../../contexts/CampaignFormContext.esm.js";import"../../../contexts/UserProvider.esm.js";import{Loading as $}from"../../TechHealth/Loading/Loading.esm.js";import{trackPassRatesToCsv as H}from"../TechHealthExportFunctions.esm.js";import{ActionColumn as W}from"../ActionColumn.esm.js";import{NameColumn as q}from"../NameColumn.esm.js";import{OwnerColumn as z}from"../OwnerColumn.esm.js";import{PassRateTabHeader as J}from"../PassRateTabHeader.esm.js";import{usePassRateTabStyles as K}from"../PassRateTabStyles.esm.js";import{ViewMode as h,generateTrackPassRateGridData as Q,getDetailsRoute as U}from"../techHealthTabUtils.esm.js";import{TrackTrendColumn as X}from"./TrackLevelTrendColumn.esm.js";const v=(m,s,o)=>{const i=Math.min(5,s-m+1);return Array.from({length:i}).map((n,l)=>{const a=m+l;return{label:o?"PROGRESS":`LEVEL ${a}`,id:`levels-${l}`,renderCell:r=>{const t=r.levels?.find(({levelOrdinal:f})=>f===a);return t?e(X,{row:t}):e(O,{})}}})},P=(m,s,o,i)=>{const n=m.flatMap(r=>r.levels?.map(t=>t.levelOrdinal)||[]),l=Math.min(...n),a=Math.max(...n);return[{label:"NAME",id:"trackName",renderCell:r=>e(q,{name:r.trackName??r.id,description:r.trackDescription})},...v(l,a,!!o),{label:"OWNER",id:"trackOwnerRef",renderCell:r=>e(z,{ownerEntityRef:r.trackOwnerRef??void 0})},{label:"ACTION",id:"action",renderCell:({id:r})=>e(W,{navigateTo:U(r,s,o,i)})}]},Y=()=>{const m=K(),{filter:s}=I(),o=A(G),{data:i,isLoading:n,isError:l}=F(s),[a,r]=d(h.TABLE),[t,f]=d(""),[u,R]=d(0),[T,w]=d(10);D(()=>{R(0)},[s,t]);const b=S(()=>P(i?.individualTrackPassRate??[],o),[i?.individualTrackPassRate,o]);if(n)return e($,{});if(l)return e(k,{color:"error",children:"Failed to load tracks"});const{individualTrackPassRate:C}=i;if(!C)return e(k,{color:"error",children:"No available tracks"});const c=t.length?C.filter(({id:p,trackName:g})=>g?.toLowerCase()?.includes(t.toLowerCase())||p.toLowerCase().includes(t.toLowerCase())):C,E=async()=>H(c),L=(p,g)=>{R(()=>g)},M=p=>{w(+p.target.value),R(0)};return e(x,{className:m.root,children:N(y,{container:!0,direction:"row",children:[e(J,{viewMode:a,setViewMode:r,isLoading:n,searchTerm:t,setSearchTerm:f,searchPlaceholder:"Search Available Tracks",fetchCsvData:E,csvFilename:B}),a===h.TABLE&&e(j,{data:c,columns:b}),a===h.GRID&&e(V,{data:Q(c.slice(u*T,(u+1)*T),o),totalCount:c?.length??0,page:u,rowsPerPage:T,onPageChange:L,onRowsPerPageChange:M})]})})};export{Y as TrackResultsTab,P as generateColumns,v as generateTrendColumns};
2
- //# sourceMappingURL=TrackResultsTab.esm.js.map
@@ -1,2 +0,0 @@
1
- import{parseEntityRef as p}from"@backstage/catalog-model";import"react/jsx-runtime";import"recharts";import{convertPassRateToDataPoints as l}from"../Charts/ChartTypes.esm.js";import"../Charts/LineChart/LineChart.esm.js";import"@material-ui/core";import"../Charts/chartUtils.esm.js";import{formatLineChartData as P}from"../Charts/LineChart/TrackPassRateHistoryLineChart.esm.js";import"luxon";import"../TechHealthSummary/SummaryAggregationsProvider.esm.js";import"../Charts/BarChart/BarChart.esm.js";import"../PassRateGrid/PassRateGrid.esm.js";import{Trend as n}from"../PassRateGrid/types.esm.js";var m=(e=>(e[e.TABLE=0]="TABLE",e[e.GRID=1]="GRID",e))(m||{});function i(e){if(!e||!e.length)return n.FLAT;if(e.length===1)return e[0]>0?n.UP:n.FLAT;const t=e[e.length-1]-e[0];return t<0?n.DOWN:t>0?n.UP:n.FLAT}function u(e,t){return e.map(a=>({id:a.id,name:a.checkName??a.id,description:a.checkDescription??void 0,lineChart:{snapshotPassRates:[{value:a.snapshotPassRate,trend:i(a.trendPassRates??[])}],trendPassRates:l(a.trendPassRates??[])},owner:a.checkOwnerRef??void 0,navigateTo:t({checkId:a.id})}))}function h(e,t){return e.map(a=>({id:a.id,name:p(a.id).name,description:a.entityDescription??void 0,lineChart:{snapshotPassRates:[{value:a.snapshotPassRate,trend:i(a.trendPassRates??[])}],trendPassRates:l(a.trendPassRates??[])},owner:a.entityOwnerRef??void 0,navigateTo:`${t(p(a.id))}/soundcheck`}))}function f(e,t){return e.map(a=>({id:a.id,name:a.groupTitle??p(a.id).name,lineChart:{snapshotPassRates:[{value:a.snapshotPassRate,trend:i(a.trendPassRates??[])}],trendPassRates:l(a.trendPassRates??[])},navigateTo:t(p(a.id))}))}const c=(e,t,a,o)=>{if(t)return t({trackId:e});if(a&&o){const s=o.find(({trackId:r})=>r===e)?.campaignId;if(s)return a({campaignId:s})}};function g(e,t,a,o){return e.map(s=>({id:s.id,name:s.trackName??s.id,description:s.trackDescription??void 0,lineChart:{snapshotPassRates:s.levels?.map(({levelOrdinal:r,levelName:d,snapshotPassRate:R,trendPassRates:v})=>({name:d?`Level ${r} (${d})`:`Level ${r}`,value:R,trend:i(v??[])}))??[],trendPassRates:P({overallTrackPassRate:s.levels}),lineConfigs:s.levels?.map(({levelOrdinal:r,levelName:d})=>({dataKey:`Level${r}`,name:d??`Level ${r}`}))??[]},owner:s.trackOwnerRef??void 0,navigateTo:c(s.id,t,a,o)}))}export{m as ViewMode,i as calculateTrend,u as generateCheckPassRateGridData,h as generateEntityPassRateGridData,f as generateGroupPassRateGridData,g as generateTrackPassRateGridData,c as getDetailsRoute};
2
- //# sourceMappingURL=techHealthTabUtils.esm.js.map
@@ -1,2 +0,0 @@
1
- import{jsxs as u,jsx as n}from"react/jsx-runtime";import{makeStyles as x,Box as c,TextField as m,InputAdornment as k,IconButton as y,Chip as C}from"@material-ui/core";import f from"@material-ui/icons/Clear";import{Autocomplete as I}from"@material-ui/lab";const T=x(l=>({input:{backgroundColor:l.palette.background.paper,minWidth:200}})),b=({searchText:l,onSearchTextChange:i,selectedTrackIds:r,onSelectedTrackIdsChange:h,trackOptions:s,applicableTracks:o,isLoading:d})=>{const p=T();return u(c,{display:"flex",maxWidth:720,alignItems:"center",style:{gap:"8px"},flex:1,children:[n(m,{placeholder:"Search tracks or campaigns...",variant:"outlined",size:"small",value:l,onChange:e=>i(e.target.value),style:{flex:1},disabled:d||o.length===0,InputProps:{className:p.input,endAdornment:l&&n(k,{position:"end",children:n(y,{size:"small",onClick:()=>i(""),edge:"end",children:n(f,{})})})}}),n(I,{multiple:!0,options:s,getOptionLabel:e=>e.name,value:s.filter(e=>r.includes(e.id)),onChange:(e,a)=>h(a.map(t=>t.id)),disabled:d||o.length===0,groupBy:e=>e.type,renderOption:e=>n(c,{display:"flex",alignItems:"center",style:{gap:8},children:n("span",{children:e.name})}),renderInput:e=>n(m,{...e,variant:"outlined",size:"small",placeholder:r.length===0?"All Tracks/Campaigns":"",className:p.input,style:{minWidth:300}}),renderTags:(e,a)=>e.length===0?null:e.map((t,g)=>n(C,{label:t.name,size:"small",...a({index:g})},t.id)),style:{minWidth:300}})]})};export{b as FilterControls};
2
- //# sourceMappingURL=FilterControls.esm.js.map
@@ -1,2 +0,0 @@
1
- import{jsxs as t,jsx as a,Fragment as d}from"react/jsx-runtime";import{makeStyles as p,Box as l,Card as c,Typography as e}from"@material-ui/core";import{Skeleton as g}from"@material-ui/lab";const s=p(i=>({summaryTilesContainer:{gap:24,display:"flex",marginBottom:32},summaryTile:{flex:1,padding:24,background:i.palette.background.paper},tile:{minHeight:90},container:{margin:"1.5rem 0 0"},box:{display:"flex",alignItems:"center",gap:"0.5rem"},avgCompliance:{fontSize:"2rem"}})),o=({title:i,content:r,isLoading:n})=>{const m=s();return t(l,{className:m.tile,children:[a(e,{children:i}),n?a(d,{children:a(g,{variant:"text",width:50,height:40})}):a(l,{children:r})]})},h=({summaryStats:i,isLoading:r=!1})=>{const n=s();return t(l,{className:n.summaryTilesContainer,children:[a(c,{className:n.summaryTile,children:a(o,{isLoading:r||i.numTeams===void 0||i.numEntities===void 0,title:"Group Information",content:t("div",{className:n.container,children:[t(l,{className:n.box,children:[a(e,{children:i.numTeams})," ",a(e,{color:"textSecondary",children:"Groups"})]}),t(l,{className:n.box,children:[a(e,{children:i.numEntities})," ",a(e,{color:"textSecondary",children:"Entities"})]})]})})}),a(c,{className:n.summaryTile,children:a(o,{isLoading:r||i.totalActiveTracksCampaigns===void 0||i.totalCampaigns===void 0||i.totalTracks===void 0,title:"Tracks & Campaigns",content:t("div",{className:n.container,children:[t(l,{className:n.box,children:[a(e,{children:i.totalActiveTracksCampaigns})," ",a(e,{color:"textSecondary",children:"Total Tracks & Campaigns"})]}),t(l,{className:n.box,children:[a(e,{children:(i.totalCampaigns??0)+(i.totalTracks??0)})," ",a(e,{color:"textSecondary",children:"Applicable Tracks & Campaigns"})]})]})})}),a(c,{className:n.summaryTile,children:a(o,{isLoading:r||i.avgCompliance===void 0||i.totalCampaigns===void 0||i.totalTracks===void 0,title:"Average Compliance",content:a("div",{className:n.container,children:a(l,{children:a(e,{className:n.avgCompliance,children:!i.totalTracks&&!i.totalCampaigns?"-":`${i.avgCompliance}%`})})})})})]})};export{h as SummaryTiles};
2
- //# sourceMappingURL=SummaryTiles.esm.js.map
@@ -1,2 +0,0 @@
1
- import{jsx as o,Fragment as ge,jsxs as Q}from"react/jsx-runtime";import{useApi as ue,useRouteRef as he}from"@backstage/core-plugin-api";import{entityPresentationApiRef as fe}from"@backstage/plugin-catalog-react";import{makeStyles as ke,Box as d,Typography as W,LinearProgress as ye}from"@material-ui/core";import{useTheme as Te}from"@material-ui/core/styles";import{useState as M,useMemo as s,useCallback as X,useEffect as Ce}from"react";import{useSearchParams as Se,useNavigate as we}from"react-router-dom";import Ee from"react-use/lib/useDebounce";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useSortTableLocalStorage as Le}from"../../hooks/useSortTableLocalStorage.esm.js";import{useBatchedHierarchicalTrackStatuses as Re}from"../../hooks/heirarchy/useBatchedHierarchicalTrackStatuses.esm.js";import{useGroupHierarchy as ve}from"../../hooks/heirarchy/useGroupHierarchy.esm.js";import{useTracksApplicableToGroup as be}from"../../hooks/tracks/useTracksApplicableToGroup.esm.js";import{useLCPReporting as Pe}from"../../hooks/useLCPReporting.esm.js";import{useLoadTimeReporting as Ie}from"../../hooks/useLoadTimeReporting.esm.js";import{techInsightsTrackRouteRef as xe}from"../../routes.esm.js";import{getAllOwnedEntityCount as Ae}from"../../utils/getAllOwnedEntityCount.esm.js";import{getEntitiesBucket as Be,getTracksBucket as Me}from"../../utils/helpers.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useSetHeaderDefault as Ne}from"../SoundcheckHeader/useHeader.esm.js";import{TechInsightsGroupSelector as je}from"../TechInsightsGroupSelector/TechInsightsGroupSelector.esm.js";import{FilterControls as Ge}from"./FilterControls.esm.js";import{SummaryTiles as De}from"./SummaryTiles.esm.js";import{TechInsightsTableView as Fe}from"./TechInsightsTableView.esm.js";const Oe=ke(a=>({container:{padding:a.spacing(3,2),paddingTop:0,position:"relative"},gridContainer:{marginTop:a.spacing(3)},gridItem:{cursor:"pointer","&:hover":{transform:"scale(1.02)",transition:"transform 0.2s ease-in-out"}},emptyState:{textAlign:"center",padding:a.spacing(4)},errorState:{textAlign:"center",padding:a.spacing(4)},headerControls:{display:"flex",alignItems:"center"},progressIndicator:{position:"absolute",top:0,left:0,right:0,zIndex:a.zIndex.speedDial},tableRow:{"&:hover":{backgroundColor:a.palette.action.hover}}})),ze=()=>{const[a,L]=Se(),r=a.get("group")||"",[g,Y]=M(a.get("search")||""),[S,Z]=M(""),[c,_]=M(a.get("tracks")?.split(",").filter(Boolean)||[]),N=s(()=>({routeName:"soundcheck-tech-insights",additionalAttributes:{group:r||"",tracksFilter:c.join(",")||"",tracksFilterCount:c.length,tracksSearch:S||""}}),[r,S,c]),{reportContentLoaded:j}=Ie({...N,enabled:!!r}),{reporter:q}=Pe(N),u=Oe(),J=Te(),G=we();Ne();const D=ue(fe),{order:K,orderBy:ee,handleSort:te}=Le({localStoragePrefix:"soundcheck-tech-insights",defaultSortBy:"entities",defaultDirection:"desc"});Ee(()=>{Z(g);const e=new URLSearchParams(a.toString());g?e.set("search",g):e.delete("search"),L(e,{replace:!0})},500,[g]);const re=X(e=>{_(e);const t=new URLSearchParams(a.toString());e.length>0?t.set("tracks",e.join(",")):t.delete("tracks"),L(t,{replace:!0})},[a,L]),{tracks:w,counts:R,isLoading:m,error:v,activeTrackCount:F}=be(r,{},{enabled:!!r}),h=w.filter(e=>e.type==="campaign"),f=w.filter(e=>e.type!=="campaign"),ae=s(()=>[...h,...f].map(e=>({id:e.id,name:e.name,type:e.type==="campaign"?"Campaign":"Track"})),[h,f]),k=h.filter(e=>{const t=S.toLowerCase(),l=(e.ownerEntityRef?D.forEntity(e.ownerEntityRef):void 0)?.snapshot.primaryTitle?.toLowerCase()||"",C=t===""||e.name.toLowerCase().includes(t)||e.ownerEntityRef?.toLowerCase().includes(t)||l.includes(t),i=c.length===0||c.includes(e.id);return C&&i}),y=f.filter(e=>{const t=S.toLowerCase(),l=(e.ownerEntityRef?D.forEntity(e.ownerEntityRef):void 0)?.snapshot.primaryTitle?.toLowerCase()||"",C=t===""||e.name.toLowerCase().includes(t)||e.ownerEntityRef?.toLowerCase().includes(t)||l.includes(t),i=c.length===0||c.includes(e.id);return C&&i}),p=s(()=>[...h.map(e=>e.id),...f.map(e=>e.id)],[h,f]),{data:b,isLoading:oe,error:ne,progress:n}=Re({trackIds:p,groupRef:r||"",skip:!r||p.length===0}),{data:O,isLoading:E}=ve(r,{includeParent:!0}),P=s(()=>{const e=new Map;return Array.isArray(b)&&b.forEach(t=>{t&&t.trackId&&e.set(t.trackId,t)}),e},[b]),ie=s(()=>{const e=new Map;return Array.isArray(R)&&R.forEach(t=>{t&&t.id&&e.set(t.id,t.applicableEntityCount)}),e},[R]),se=m&&!v&&!!r,z=v||ne,I=p.length>0&&oe&&!z&&!!r,H=s(()=>({totalCampaigns:k.length,totalTracks:y.length,totalActiveTracksCampaigns:F}),[F,k.length,y.length]),U=s(()=>{if(I)return{numTeams:void 0,avgCompliance:void 0};let e=0,t=0;const l=new Set;return[...k,...y].forEach(C=>{const i=P.get(C.id);if(i){i.status&&typeof i.status.allPassPercentage=="number"&&(e+=i.status.allPassPercentage,t++),i.groupRef&&l.add(i.groupRef);const A=[i];for(;A.length>0;){const de=A.pop();for(const B of de.children)l.has(B.groupRef)||(l.add(B.groupRef),A.push(B))}}}),{numTeams:l.size,avgCompliance:t>0?Math.round(e/t):0}},[k,y,P,I]),T=s(()=>{if(E)return{numEntities:void 0};const e=O?.[r];return{numEntities:Ae(e)}},[O,E,r]),ce=s(()=>({...H,...U,...T}),[H,U,T]),$=he(xe),le=X(e=>{if(!r)return;const t=new URLSearchParams;t.set("group",r),t.set("track",e),t.set("node",r),G(`${$()}?${t.toString()}`)},[r,G,$]),x=s(()=>!n||n.totalTracks===0?0:n.loadedTracks/n.totalTracks*100,[n]),pe=m&&r&&!v||I&&n&&n.totalTracks>0,V=q?.getLCPValue();Ce(()=>{if(!E&&!m&&(x===100||p.length===0)){const e=T.numEntities??0,t=p.length;j({lcp:V,numberOfEntities:T.numEntities,entitiesBucket:Be(e),numberOfTracks:p.length,tracksBucket:Me(t)})}},[E,m,x,p.length,T.numEntities,j,V]);const me=o(De,{summaryStats:ce,isLoading:m});return z?o(d,{className:u.container,children:o(W,{variant:"h4",className:u.errorState,children:"Error loading tech insights data"})}):o(ge,{children:Q(d,{className:u.container,children:[Q(d,{display:"flex",justifyContent:"space-between",alignItems:"center",gridGap:12,marginBottom:3,children:[o(je,{}),o(Ge,{searchText:g,onSearchTextChange:Y,selectedTrackIds:c,onSelectedTrackIdsChange:re,trackOptions:ae,applicableTracks:w,isLoading:se})]}),o(d,{style:{marginTop:0},children:me}),pe&&o(d,{style:{marginBottom:16},children:o(ye,{variant:n&&n.totalTracks>0?"determinate":"indeterminate",value:n&&n.totalTracks>0?x:void 0,"data-testid":"batch-loading-indicator"})}),w.length===0&&!m?o(d,{className:u.emptyState,children:o(W,{variant:"h6",children:r?"No applicable tracks found for the selected group":"Please select a group to view applicable tracks"})}):o(Fe,{tracks:[...k,...y],trackStatusMap:P,trackCountsMap:ie,orderBy:ee,order:K,handleSort:te,handleTrackClick:le,theme:J,classes:u})]})})};export{ze as TechInsightsPageDeprecated};
2
- //# sourceMappingURL=TechInsightsPageDeprecated.esm.js.map
@@ -1,2 +0,0 @@
1
- import{jsx as e,Fragment as N,jsxs as f}from"react/jsx-runtime";import{useApi as $}from"@backstage/core-plugin-api";import{entityPresentationApiRef as E}from"@backstage/plugin-catalog-react";import{TableContainer as H,Paper as L,Table as z,TableHead as A,TableRow as T,TableCell as c,TableSortLabel as y,TableBody as B,Typography as b,Box as w}from"@material-ui/core";import D from"@material-ui/icons/ArrowDownward";import F from"@material-ui/icons/ArrowUpward";import{useMemo as M}from"react";import{getColorInterpolator as j,getCheckStatusColor as x}from"../../utils/colors.esm.js";import{getTrackStatusTotal as V}from"../../utils/tracks.esm.js";import{CategoryBar as J}from"../CategoryBar/CategoryBar.esm.js";import{CheckStateColors as I}from"../CheckPage/utils.esm.js";import{ColorChip as O}from"../ColorChip/ColorChip.esm.js";const U=({tracks:v,trackStatusMap:m,trackCountsMap:u,orderBy:o,order:d,handleSort:h,handleTrackClick:P,theme:g,classes:n})=>{const S=$(E),R=M(()=>[...v].filter(l=>{const t=m.get(l.id)?.status;let s=0;return t&&(s=V(t)),!t||s>0}).sort((l,t)=>{const s=m.get(l.id),k=m.get(t.id);let a,r;switch(o){case"name":a=l.name?.toLowerCase()||"",r=t.name?.toLowerCase()||"";break;case"type":a=l.type||"",r=t.type||"";break;case"owner":a=l.ownerEntityRef?.toLowerCase()||"",r=t.ownerEntityRef?.toLowerCase()||"";break;case"compliance":a=s?.status?.allPassPercentage??null,r=k?.status?.allPassPercentage??null;break;case"checks":a=l.levels.reduce((i,C)=>i+C.checks.length,0),r=t.levels.reduce((i,C)=>i+C.checks.length,0);break;case"entities":a=u.get(l.id)??0,r=u.get(t.id)??0;break;default:return 0}return typeof a=="number"&&typeof r=="number"?d==="asc"?a-r:r-a:typeof a=="number"&&r===null?-1:a===null&&typeof r=="number"?1:typeof a=="string"&&typeof r=="string"?d==="asc"?a.localeCompare(r):r.localeCompare(a):0}),[d,o,m,u,v]),p=l=>l.direction==="asc"?e(F,{...l,fontSize:"small"}):e(D,{...l,fontSize:"small"});return e(N,{children:e(H,{component:L,children:f(z,{className:n.table,size:"small",children:[e(A,{children:f(T,{children:[e(c,{width:"30%",className:`${n.tableHeaderCell} ${n.headerCell}`,children:e(y,{active:o==="name",direction:o==="name"?d:"desc",onClick:()=>h("name"),IconComponent:p,children:e("div",{className:n.headerContent,children:"Name"})})}),e(c,{width:"10%",className:`${n.tableHeaderCell} ${n.headerCell}`,children:e(y,{active:o==="checks",direction:o==="checks"?d:"desc",onClick:()=>h("checks"),IconComponent:p,children:e("div",{className:n.headerContent,children:"Checks"})})}),e(c,{width:"10%",className:`${n.tableHeaderCell} ${n.headerCell}`,children:e(y,{active:o==="entities",direction:o==="entities"?d:"desc",onClick:()=>h("entities"),IconComponent:p,children:e("div",{className:n.headerContent,children:"Entities"})})}),e(c,{width:"30%",className:`${n.tableHeaderCell} ${n.headerCell}`,children:e(y,{active:o==="compliance",direction:o==="compliance"?d:"desc",onClick:()=>h("compliance"),IconComponent:p,children:e("div",{className:n.headerContent,children:"Compliance"})})}),e(c,{width:"20%",className:`${n.tableHeaderCell} ${n.headerCell}`,children:e(y,{active:o==="owner",direction:o==="owner"?d:"desc",onClick:()=>h("owner"),IconComponent:p,children:e("div",{className:n.headerContent,children:"Track Owner"})})})]})}),e(B,{children:R.map(l=>{const t=m.get(l.id)?.status;let s=0;if(t?.allPassPercentage!==null&&t?.allPassPercentage!==void 0)s=t.allPassPercentage;else if(t){const i=(t.passed??0)+(t.failed??0)+(t.warning??0)+(t.error??0)+(t.notReported??0)+(t.exempt??0);s=i>0?((t.passed??0)+(t.exempt??0))/i*100:0}const k=l.levels.reduce((i,C)=>i+C.checks.length,0),a=u.get(l.id)??0,r=Math.round(s);return f(T,{onClick:()=>P(l.id),className:n.tableRow,style:{cursor:"pointer"},children:[e(c,{className:n.tableCell,children:e(b,{variant:"body2",style:{fontWeight:500},children:l.name})}),e(c,{className:n.tableCell,children:e(b,{variant:"body2",children:k})}),e(c,{className:n.tableCell,children:e(b,{variant:"body2",children:new Intl.NumberFormat("en-US",{notation:"compact",maximumFractionDigits:1}).format(a)})}),e(c,{className:n.tableCell,children:f("div",{style:{display:"flex",alignItems:"center",gap:8},children:[t&&e(O,{value:`${r}%`,getColor:j(g,"default"),numericValue:s/100}),e(w,{flex:1}),e("div",{style:{width:"100%"},children:e(J,{data:{compliant:r,nonCompliant:100-r},categories:["compliant","nonCompliant"],categoryColors:{compliant:x(g,I.PASSED),nonCompliant:x(g,I.FAILED)},showTooltip:!1})})]})}),e(c,{className:n.tableCell,style:{verticalAlign:"middle"},children:l.ownerEntityRef&&e(w,{display:"flex",alignItems:"center",children:(()=>{const i=S.forEntity(l.ownerEntityRef);return f(N,{children:[i.snapshot.Icon&&e(w,{marginRight:1,display:"flex",alignItems:"center",height:"20px",children:e(i.snapshot.Icon,{fontSize:"small"})}),e(b,{variant:"body2",style:{lineHeight:"20px"},children:i.snapshot.primaryTitle||l.ownerEntityRef})]})})()})})]},l.id)})})]})})})};export{U as TechInsightsTableView};
2
- //# sourceMappingURL=TechInsightsTableView.esm.js.map
@@ -1,2 +0,0 @@
1
- import{jsxs as d,jsx as e}from"react/jsx-runtime";import{Grid as n,Button as f,Menu as M,Box as x,TextField as D}from"@material-ui/core";import{makeStyles as O}from"@material-ui/core/styles";import{useState as h}from"react";import{useSearchParams as B}from"react-router-dom";import"../TechHealth/Filters/types.esm.js";import"../TechHealth/Filters/FacetFilter.esm.js";import"../TechHealth/Filters/FilterProvider.esm.js";import"../TechHealth/Filters/Filters.esm.js";import"../TechHealth/Filters/FiltersHeader.esm.js";import"../TechHealth/Filters/FiltersSection.esm.js";import"@backstage/catalog-model";import"lodash";import"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-use/lib/useLocalStorage";import{MIN_NUMBER_OF_DAYS as m,MAX_NUMBER_OF_DAYS as E}from"../TechHealth/Filters/utils.esm.js";const S=[{label:"7D",value:7},{label:"1M",value:30},{label:"2M",value:60},{label:"3M",value:90}],w=O(o=>({root:{width:"100%",paddingLeft:"60px",paddingBottom:o.spacing(1)},buttons:{paddingTop:"0 !important",paddingBottom:"0 !important"},customNumberOfDaysMenu:{width:"180px",padding:o.spacing(0,1)}})),C=({maxNumberOfDays:o=E})=>{const i=w(),[g,b]=B(),[l,p]=h(null),[a,s]=h(""),v=t=>{p(t.currentTarget)},y=()=>{p(null)},u=t=>{let r;if(typeof t=="string"){if(!t.length)return!0;r=parseInt(t,10)}else r=t;return!isNaN(r)&&r>=m&&r<=o},c=t=>{u(t)&&b(r=>(g.set("numberOfDays",t.toString()),r))},N=t=>{if(t.key==="Enter"){const r=parseInt(a,10);c(r),s("")}};return d(n,{container:!0,spacing:1,direction:"row",wrap:"nowrap",className:i.root,children:[S.filter(({value:t})=>t<=o).map(t=>e(n,{item:!0,className:i.buttons,children:e(f,{size:"small",onClick:()=>c(t.value),children:t.label})},t.value)),d(n,{item:!0,className:i.buttons,children:[e(f,{size:"small","aria-controls":"days-menu","aria-haspopup":"true",onClick:v,children:"Custom"}),e(M,{id:"days-menu",anchorEl:l,getContentAnchorEl:null,anchorOrigin:{vertical:"bottom",horizontal:"left"},transformOrigin:{vertical:"top",horizontal:"left"},keepMounted:!0,open:!!l,onClose:y,children:e(x,{className:i.customNumberOfDaysMenu,children:e(D,{fullWidth:!0,variant:"outlined",size:"small",placeholder:"Number of days",helperText:`Enter value from ${m} to ${o}`,inputProps:{min:m,max:o},onKeyDown:N,value:a,type:"number",onChange:t=>s(t.target.value),error:!u(a)})})})]})]})};export{C as TimePeriodBar};
2
- //# sourceMappingURL=TimePeriodBar.esm.js.map
@@ -1,2 +0,0 @@
1
- import{jsx as e,jsxs as d}from"react/jsx-runtime";import{Link as x}from"@backstage/core-components";import{useRouteRef as v}from"@backstage/core-plugin-api";import{useTheme as N,TableContainer as T,Table as y,TableBody as w,TableRow as s,TableCell as r,Typography as h,Box as R}from"@material-ui/core";import{makeStyles as L}from"@material-ui/core/styles";import{Skeleton as m}from"@material-ui/lab";import{useMemo as $}from"react";import{trackCheckDetailsRouteRef as A}from"../../routes.esm.js";import{getCheckStatusColor as D}from"../../utils/colors.esm.js";import{LevelRow as F}from"../LevelsTable/LevelsTable.esm.js";const S=L(t=>({root:{width:"100%",height:"100%",display:"flex",flexDirection:"column"},checkNameLink:{color:"inherit",textDecoration:"none"},bar:{height:8,display:"block"},barContainer:{width:"100%",display:"block"},cell:{padding:t.spacing(1),width:"auto"},barCell:{width:150,padding:"4px 8px"},rightAlignedCell:{textAlign:"right",paddingRight:`${t.spacing(2)}px !important`},failingText:{color:t.palette.text.secondary,display:"flex",flexDirection:"column",alignItems:"flex-end",lineHeight:1.2,minWidth:"40px"},noFailingChecksText:{padding:t.spacing(2,1)}})),z=({track:t,checkStatuses:c,certificationStatus:o,hideLevel:p})=>{const i=S(),f=N(),g=v(A),k=$(()=>(t.levels??[]).map(n=>({...n,failingChecks:n.checks.map(l=>{const a=c?.find(b=>b.id===l.id),C=a?a.numberOfEntities-a.notApplicable-a.exempt:0,u=a?.failed??0;return{check:l,failedCount:u,applicableCount:C}}).filter(({failedCount:l})=>l>0).sort((l,a)=>(a.failedCount??0)-(l.failedCount??0))})),[t.levels,c]);return t.levels?.length?e(T,{component:"div",className:i.root,children:e(y,{children:e(w,{children:c===void 0||o===void 0?Array.from({length:10}).map((n,l)=>d(s,{children:[e(r,{className:i.barCell,children:e(m,{variant:"rect",width:30,height:8})}),e(r,{size:"medium",className:i.cell,children:e(m,{variant:"rect",width:140,height:8})}),e(r,{size:"small",className:i.cell,children:e(m,{variant:"rect",width:100,height:8})})]},`skeleton-${l}`)):k.map(n=>d(F,{level:n,hideLevel:p,children:[n.failingChecks.map(({check:l,failedCount:a})=>d(s,{children:[e(r,{className:i.barCell,children:e("div",{className:i.barContainer,children:e("span",{className:i.bar,style:{width:`${(a??0)/o.numberOfEntities*100}%`,backgroundColor:D(f,"failed")}})})}),e(r,{size:"medium",className:i.cell,children:e(x,{className:i.checkNameLink,to:g({trackId:t.id,checkId:l.id}),children:e(h,{children:l.name})})}),e(r,{size:"small",className:`${i.cell} ${i.rightAlignedCell}`,children:e(R,{className:i.failingText,children:e(h,{variant:"caption",children:`${new Intl.NumberFormat().format(a??0)} failing`})})})]},l.id)),c&&o&&n.failingChecks.length===0&&e(s,{children:e(r,{children:e(h,{variant:"body2",className:i.noFailingChecksText,children:"No Failing Checks"})})})]},n.ordinal))})})}):null};export{z as TopFailingChecksTable};
2
- //# sourceMappingURL=TopFailingChecksTable.esm.js.map
@@ -1,2 +0,0 @@
1
- import{jsx as t}from"react/jsx-runtime";import{trackPassRatesSummaryCsvFilename as m}from"../../utils/charts.esm.js";import"recharts";import"../Charts/ChartTypes.esm.js";import"../Charts/LineChart/LineChart.esm.js";import"@material-ui/core";import"../Charts/chartUtils.esm.js";import{TrackPassRateHistoryLineChart as i}from"../Charts/LineChart/TrackPassRateHistoryLineChart.esm.js";import"@backstage/catalog-model";import"luxon";import{useSummaryAggregationsContext as p}from"../TechHealthSummary/SummaryAggregationsProvider.esm.js";import"../Charts/BarChart/BarChart.esm.js";import{TrackSummaryBarChart as c}from"../Charts/BarChart/TrackSummaryBarChart.esm.js";import{OverviewChartCard as n}from"../OverviewChartCard/OverviewChartCard.esm.js";import"../OverviewChartCard/OverviewChartCardStyles.esm.js";import{overallTrackPassRatesToCsv as l}from"../TechHealthTabs/TechHealthExportFunctions.esm.js";const C=()=>{const{trackPassRateOverviewTrend:{data:r,isLoading:a,isError:o}}=p(),e=r?.overallTrackPassRate?.length,s=!r?.overallTrackPassRate||!e||a||o;return t(n,{title:"Track pass rate",subtitle:"Aggregate pass rate for tracks",summaryCardContent:t(c,{}),chartSectionContent:t(i,{}),disableDataExport:s,csvFilename:m,csvData:l(r)})};export{C as TrackHistoryChartCard};
2
- //# sourceMappingURL=TrackHistoryChartCard.esm.js.map
@@ -1,2 +0,0 @@
1
- import{jsx as C}from"react/jsx-runtime";import{stringifyEntityRef as L}from"@backstage/catalog-model";import{Table as P}from"@backstage/core-components";import{makeStyles as x}from"@material-ui/core";import O from"lodash";import{useState as D,useEffect as F,useCallback as k}from"react";import{TrackEntityField as a,Direction as w}from"../../../graphql/generated/index.esm.js";import{useEntitiesByRefs as N}from"../../../hooks/catalog/useEntitiesByRefs.esm.js";import{useTrackEntities as j}from"../../../hooks/entities/useTrackEntities.esm.js";import{columnFactories as r}from"./columns.esm.js";import{toTrackEntityRow as q}from"./utils.esm.js";const A=10,G=(i,n)=>[r.createBadgeColumn(),r.createNameColumn({trackId:n}),r.createStatusColumn(i),r.createSystemColumn(),r.createOwnerColumn(),r.createSpecTypeColumn(),r.createSpecLifecycleColumn()],U=[a.CertificationLevel,a.Name,a.CheckPassRate,a.System,a.Owner,a.Type,a.Lifecycle],I=i=>{const{lifecycles:n,owners:s,types:c,systems:l}=i,g=n?.length?{"spec.lifecycle":n}:void 0,d=s?.length?{"relations.ownedBy":s}:void 0,m=c?.length?{"spec.type":c}:void 0,u=l?.length?{"relations.partOf":l}:void 0;return{...g,...d,...m,...u}},W=x({tableContainer:{display:"flex",flexDirection:"column",height:"100%"}}),H=({track:i,initialPageSize:n,lifecycles:s,owners:c,types:l,systems:g,certificationStatus:d,getColor:m})=>{const u=W(),S=G(m,i.id),[e,y]=D({orderBy:void 0,filter:I({lifecycles:s,owners:c,types:l,systems:g}),pageInfo:{page:0,pageSize:n??A,direction:"forward",cursor:null}});F(()=>{y(t=>({...t,pageInfo:{...t.pageInfo,page:0,cursor:null},filter:I({lifecycles:s,owners:c,types:l,systems:g}),certificationStatus:d}))},[s,c,l,g,d]);const{data:f,isLoading:h}=j({trackId:i.id,orderBy:e.orderBy,filter:e.filter,[e.pageInfo.direction==="forward"?"first":"last"]:e.pageInfo.pageSize,[e.pageInfo.direction==="forward"?"after":"before"]:e.pageInfo.cursor,certificationStatus:d}),E=k((t,p)=>{let o;t===-1?o=void 0:o={field:U[t],direction:p==="asc"?w.Asc:w.Desc},y({...e,orderBy:o,pageInfo:{...e.pageInfo,page:0,cursor:null}})},[e]),b=k((t,p)=>{const o=t>e.pageInfo.page?"forward":"backward",z=o==="forward"?f?.trackEntities.pageInfo.endCursor??null:f?.trackEntities.pageInfo.startCursor??null;y({...e,pageInfo:{page:t,pageSize:p,direction:o,cursor:z}})},[f,e]),T=f?.trackEntities.edges.map(t=>t.node.entityRef)??[],{data:v,isLoading:B}=N({entityRefs:T}),R=O.compact(f?.trackEntities.edges.map(t=>{const p=v?.items.find(o=>!!o&&L(o)===t.node.entityRef);return p?q({trackDetails:t.node,track:i,entity:p}):void 0}))??[];return C("div",{className:u.tableContainer,children:C(P,{columns:S,data:R,options:{paging:!0,showFirstLastPageButtons:!1,paginationPosition:"both",emptyRowsWhenPaging:!1,pageSizeOptions:[10,25,50],pageSize:e.pageInfo.pageSize,search:!1,showTitle:!1,padding:"dense",draggable:!1},onOrderChange:E,onPageChange:b,page:e.pageInfo.page,totalCount:f?.trackEntities.totalCount??0,isLoading:h||B,components:{Toolbar:()=>null}})})};export{H as TrackEntitiesTable};
2
- //# sourceMappingURL=TrackEntitiesTable.esm.js.map
@@ -1,2 +0,0 @@
1
- import{jsx as l,jsxs as f}from"react/jsx-runtime";import{makeStyles as R,lighten as T,darken as $,Typography as i}from"@material-ui/core";import{useTheme as B}from"@material-ui/core/styles";import{useState as N,useRef as A}from"react";import{ColorChip as j}from"../../ColorChip/ColorChip.esm.js";import w from"../../RichTooltip/RichTooltip.esm.js";import{getProgressColor as r}from"../utils.esm.js";import{getApplicableCheckCount as m}from"./utils.esm.js";const C=t=>{const e=m(t);return e===0?-1:Math.round(t.passed/e*100)},z=(t,e)=>t.levels.find(o=>o.ordinal===e),M=R(t=>({cell:{backgroundColor:({passRate:e,getColor:o})=>o?o(e):r(t,e),color:({passRate:e,getColor:o})=>t.palette.getContrastText(o?o(e):r(t,e)),cursor:"default",borderRadius:"4px",textAlign:"center",fontSize:".9rem",width:"50px"},tooltip:{width:"225px"},topLevelStatus:{borderBottom:`1px solid ${t.palette.divider}`,paddingBottom:t.spacing(1)},levelStatus:{borderBottom:`1px solid ${t.palette.divider}`,paddingTop:t.spacing(1),paddingBottom:t.spacing(1)},bottomLevelStatus:{paddingTop:t.spacing(1)},levelPassRate:{backgroundColor:({passRate:e,getColor:o})=>T(o?o(e):r(t,e),.75),color:({passRate:e,getColor:o})=>$(o?o(e):r(t,e),.7),borderRadius:"4px",textAlign:"center",fontSize:".7rem",width:"32px",height:"15px"}})),P=({track:t,status:e,getColor:o})=>{const x=B(),u=C(e),s=M({passRate:u,getColor:o}),[y,p]=N(!1),g=A(null),b=()=>{g.current=setTimeout(()=>p(!0),500)},S=()=>{clearTimeout(g.current),p(!1)},k=m(e);return l(w,{content:l("div",{className:s.tooltip,children:e.statusByLevel?.map((a,d)=>{let n;d===0?n=s.topLevelStatus:e.statusByLevel?.length&&d===e.statusByLevel.length-1?n=s.bottomLevelStatus:n=s.levelStatus;const c=m(a),L=z(t,a.ordinal),h=C(a);return f("div",{className:n,style:{display:"flex",flexDirection:"column",justifyContent:"space-between"},children:[l("div",{children:l(i,{variant:"caption",style:{fontWeight:"bold"},children:L?.name??`Level ${a.ordinal}`})}),f("div",{style:{display:"flex",justifyContent:"space-between"},children:[l(i,{variant:"caption",children:c===0?"No Applicable Checks":`Passing ${a.passed} of ${c} checks`}),c===0?l(i,{className:s.levelPassRate,children:"N/A"}):l(j,{value:`${h}%`,getColor:v=>o?o(v):r(x,v),numericValue:h,size:"small"})]})]},d)})}),open:y,placement:"bottom",onClose:()=>p(!1),children:l("div",{style:{display:"flex",justifyContent:"center",alignItems:"center"},onMouseEnter:b,onMouseLeave:S,children:l(i,{className:s.cell,children:k===0?"N/A":`${u}%`})})})};export{P as TrackStatusChip};
2
- //# sourceMappingURL=TrackStatusChip.esm.js.map
@@ -1,2 +0,0 @@
1
- import{jsx as r,Fragment as l}from"react/jsx-runtime";import{OverflowTooltip as m}from"@backstage/core-components";import{EntityRefLink as c,EntityRefLinks as s}from"@backstage/plugin-catalog-react";import{makeStyles as u,withStyles as p,Chip as d}from"@material-ui/core";import f from"@material-ui/icons/RemoveCircleOutline";import{LevelBadge as y}from"../../Badges/LevelBadge.esm.js";import{NoLevelBadge as g}from"../../Badges/NoLevelBadge.esm.js";import{CampaignBadge as h}from"../../Badges/CampaignBadge.esm.js";import{SoundcheckEntityLink as S}from"../../SoundcheckEntityLink/SoundcheckEntityLink.esm.js";import{TrackStatusChip as C}from"./TrackStatusChip.esm.js";import{getApplicableCheckCount as k}from"./utils.esm.js";const o=u(()=>({linkHover:{"& span":{"&:hover":{textDecoration:"underline"}}}})),v=p(t=>({root:{color:t.palette.text.disabled}}))(f),b=Object.freeze({createBadgeColumn(){return{title:"",field:"badge",render:t=>k(t.status)===0?r(v,{}):t.track.type==="campaign"?r(h,{}):t.badge?r(y,{badge:t.badge}):r(g,{}),width:"auto",align:"center",sorting:!1}},createStatusColumn(t){return{title:"Checks",field:"status",render:e=>e.status&&r(C,{track:e.track,status:e.status,getColor:t}),width:"auto",align:"center",sorting:!1}},createNameColumn(t){return{title:"Name",field:"resolved.entityRef",highlight:!0,customSort(e,a){return 0},render:({entity:e})=>{const a=o();return t?.trackId?r(S,{entity:e,trackId:t.trackId,className:a.linkHover}):r(c,{entityRef:e,defaultKind:t?.defaultKind||"Component",className:a.linkHover})}}},createSystemColumn(){return{title:"System",field:"resolved.partOfSystemRelationTitle",customSort(t,e){return 0},render:({resolved:t})=>{const e=o();return r(s,{entityRefs:t.partOfSystemRelations,defaultKind:"system",className:e.linkHover})}}},createOwnerColumn(){return{title:"Owner",field:"resolved.ownedByRelationsTitle",customSort(t,e){return 0},render:({resolved:t})=>{const e=o();return r(s,{entityRefs:t.ownedByRelations,defaultKind:"group",className:e.linkHover})}}},createSpecTypeColumn(){return{title:"Type",field:"entity.spec.type",customSort(t,e){return 0}}},createSpecLifecycleColumn(){return{title:"Lifecycle",field:"entity.spec.lifecycle",customSort(t,e){return 0},width:"auto"}},createMetadataDescriptionColumn(){return{title:"Description",field:"entity.metadata.description",customSort(t,e){return 0},render:({entity:t})=>r(m,{text:t.metadata.description,placement:"bottom-start"}),width:"auto"}},createTagsColumn(){return{title:"Tags",field:"entity.metadata.tags",cellStyle:{padding:"0px 16px 0px 20px"},render:({entity:t})=>r(l,{children:t.metadata.tags&&t.metadata.tags.map(e=>r(d,{label:e,size:"small",variant:"outlined",style:{marginBottom:"0px"}},e))}),width:"auto",sorting:!1}},createTitleColumn(t){return{title:"Title",field:"entity.metadata.title",customSort(e,a){return 0},hidden:t?.hidden,searchable:!0}},createLabelColumn(t,e){return{title:e?.title||"Label",field:"entity.metadata.labels",customSort(a,n){return 0},cellStyle:{padding:"0px 16px 0px 20px"},render:({entity:a})=>{const n=a.metadata?.labels,i=n&&n[t]||e?.defaultValue;return r(l,{children:i&&r(d,{label:i,size:"small",variant:"outlined"},i)})},width:"auto",sorting:!1}},createNamespaceColumn(){return{title:"Namespace",field:"entity.metadata.namespace",customSort(t,e){return 0},width:"auto"}}});export{b as columnFactories};
2
- //# sourceMappingURL=columns.esm.js.map
@@ -1,2 +0,0 @@
1
- import{jsx as r,jsxs as l}from"react/jsx-runtime";import{useApi as v,configApiRef as g}from"@backstage/core-plugin-api";import{useTheme as x,Typography as b}from"@material-ui/core";import L from"lodash";import{DateTime as A}from"luxon";import{ResponsiveContainer as C,AreaChart as $,CartesianGrid as O,XAxis as N,YAxis as h,Tooltip as D,Area as u}from"recharts";import{compactNumberFormatter as m}from"../../utils/formatters.esm.js";import{getChartColors as I,formatDate as T}from"../Charts/chartUtils.esm.js";import{LoadingChart as W}from"../Charts/LoadingChart.esm.js";import{TimePeriodBar as E}from"../TimePeriodBar/TimePeriodBar.esm.js";const y=o=>{const a=o?.certificationStatusHistory.history??[],n=o?.certificationStatusHistory.numberOfEntities??0,e=A.utc();return L.map(a,(d,p)=>{let i={name:T(e,a.length-p-1)},t=0,f=0;d.statusByLevel.sort((s,c)=>c.ordinal-s.ordinal).forEach(s=>{const c=s.cumulativelyPassed-f;i={...i,[`Level ${s.ordinal}`]:c},t+=c,f=s.cumulativelyPassed}),d.statusByLevel.reverse();const k=Math.max(0,n-t);return i={...i,"No Level":k},i})},H=(o,a)=>{if(typeof o=="number"){const n=a.certificationStatusHistory.numberOfEntities??0,e=n>0?Math.round(o/n*100):0;return`${m(o)} of ${m(n)} (${e}%)`}return o},S=({track:o,data:a,isError:n})=>{const e=x(),d=v(g).getOptionalNumber("soundcheck.certifications.history.retentionTimeInDays");if(n)return r(b,{color:"error",children:"Failed to load track data."});if(!o||!a)return r(W,{type:"area",numLines:3});const p=y(a),i=I(e);return l("div",{style:{height:290,width:"100%",position:"relative",borderRadius:"4px"},children:[r(E,{maxNumberOfDays:d}),r(C,{height:250,debounce:1,children:l($,{data:p,margin:{top:0,right:0,bottom:0,left:0},children:[l("defs",{children:[o?.levels.map(t=>l("linearGradient",{id:`gradient-${t.ordinal}`,x1:"0",y1:"0",x2:"0",y2:"1",children:[r("stop",{offset:"5%",stopColor:i[t.ordinal%i.length],stopOpacity:.4}),r("stop",{offset:"95%",stopColor:i[t.ordinal%i.length],stopOpacity:0})]},`gradient-${t.ordinal}`)),l("linearGradient",{id:"gradient-no-level",x1:"0",y1:"0",x2:"0",y2:"1",children:[r("stop",{offset:"5%",stopColor:e.palette.action.disabled,stopOpacity:.4}),r("stop",{offset:"95%",stopColor:e.palette.action.disabled,stopOpacity:0})]})]}),r(O,{stroke:e.palette.divider,strokeWidth:1,horizontal:!0,vertical:!1}),r(N,{dataKey:"name",tickLine:!1,axisLine:!1}),r(h,{yAxisId:"left",domain:[0,100],axisLine:!1,tickLine:!1,tickFormatter:t=>`${t}%`,ticks:[0,25,50,75,100]}),r(h,{yAxisId:"right",orientation:"right",domain:[0,Math.max(a?.certificationStatusHistory.numberOfEntities,1)],axisLine:!1,tickLine:!1,tickFormatter:t=>m(t)}),r(D,{contentStyle:{backgroundColor:e.palette.background.paper,color:e.palette.text.primary,border:`1px solid ${e.palette.divider}`},cursor:{stroke:e.palette.divider,strokeWidth:1},formatter:t=>H(t,a)}),o?.levels?.map(t=>r(u,{type:"monotone",dataKey:`Level ${t.ordinal}`,name:t.name??`Level ${t.ordinal}`,stackId:"1",yAxisId:"right",stroke:i[t.ordinal%i.length],strokeWidth:2,fill:`url(#gradient-${t.ordinal})`,isAnimationActive:!1,activeDot:{fill:i[t.ordinal%i.length],stroke:e.palette.background.paper,strokeWidth:1,r:5}},`Level ${t.ordinal}`)),r(u,{type:"monotone",dataKey:"No Level",name:"No Level",stackId:"1",yAxisId:"right",stroke:e.palette.action.disabled,strokeWidth:2,fill:"url(#gradient-no-level)",isAnimationActive:!1,activeDot:{fill:e.palette.action.disabled,stroke:e.palette.background.paper,strokeWidth:1,r:5}},"No Level")]})})]})};export{S as TrackHistoryChart,y as formatLineChartData};
2
- //# sourceMappingURL=TrackHistoryChart.esm.js.map
@@ -1,2 +0,0 @@
1
- import{jsx as t,jsxs as d,Fragment as ie}from"react/jsx-runtime";import{useRouteRef as re}from"@backstage/core-plugin-api";import{EntityRefLink as oe}from"@backstage/plugin-catalog-react";import{usePermission as R}from"@backstage/plugin-permission-react";import{makeStyles as ae,Button as se,Box as ne,Tabs as ce,Tab as b}from"@material-ui/core";import{soundcheckTrackReadPermission as le,soundcheckTrackUpdatePermission as me,toEntityFilterQuery as pe}from"@spotify/backstage-plugin-soundcheck-common";import{useMemo as s,useState as de,useCallback as ge,useEffect as fe}from"react";import{useSearchParams as ue,useParams as he,useNavigate as ke}from"react-router-dom";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import{useTrack as ye}from"../../hooks/tracks/useTrack.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useCertificationStatus as Ce}from"../../hooks/aggregations/useCertificationStatus.esm.js";import{useCertificationStatusHistory as be}from"../../hooks/aggregations/useCertificationStatusHistory.esm.js";import"react-use/lib/useLocalStorage";import{useCheckStatuses as ve}from"../../hooks/aggregations/useCheckStatuses.esm.js";import{useLCPReporting as Se}from"../../hooks/useLCPReporting.esm.js";import{useLoadTimeReporting as Le}from"../../hooks/useLoadTimeReporting.esm.js";import{trackEditRouteRef as Te}from"../../routes.esm.js";import{getEntitiesBucket as Fe,getChecksBucket as we}from"../../utils/helpers.esm.js";import{FilterSidebar as Ee}from"../FilterSidebar/FilterSidebar.esm.js";import"../FilterSidebar/StateFilter.esm.js";import{useTrackFilterSidebar as Ne}from"../FilterSidebar/useTrackFilterSidebar.esm.js";import{toFilter as xe}from"../FilterSidebar/util.esm.js";import{LevelsTable as Re}from"../LevelsTable/LevelsTable.esm.js";import{LoadingIndicator as Be}from"../LoadingIndicator/LoadingIndicator.esm.js";import{PageWarningMessage as De}from"../PageWarningMessage/PageWarningMessage.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as Pe}from"../SoundcheckHeader/useHeader.esm.js";import{SoundcheckMarkdownContentDeprecated as Oe}from"../SoundcheckMarkdownContent/SoundcheckMarkdownContentDeprecated.esm.js";import"@backstage/core-components";import"react-markdown";import"rehype-raw";import"remark-gfm";import"../SoundcheckMarkdownContent/SoundcheckMarkdownContentBUI.esm.js";import"../TechHealth/Filters/types.esm.js";import"../TechHealth/Filters/FacetFilter.esm.js";import"../TechHealth/Filters/FilterProvider.esm.js";import"../TechHealth/Filters/Filters.esm.js";import"../TechHealth/Filters/FiltersHeader.esm.js";import"../TechHealth/Filters/FiltersSection.esm.js";import"lodash";import"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";import{parseNumberOfDays as Ie}from"../TechHealth/Filters/utils.esm.js";import{TopFailingChecksTable as Ae}from"../TopFailingChecksTable/TopFailingChecksTable.esm.js";import{TrackEntitiesTable as je}from"./TrackEntitiesTable/TrackEntitiesTable.esm.js";import{TrackProgressCard as He}from"./TrackProgressCard.esm.js";const Me=ae(r=>({root:{height:"100%",background:r.palette.background.default},pageContent:{display:"flex",minHeight:`calc(100vh - ${r.spacing(15)}px)`,borderTop:`1px solid ${r.palette.divider}`,height:"100%"},mainContentArea:{flex:1,display:"flex",flexDirection:"column",minWidth:0},trackProgressContainer:{padding:r.spacing(2,0,2,2),borderBottom:`1px solid ${r.palette.divider}`},levelCard:{margin:r.spacing(1,0,2)},editButton:{marginLeft:"auto"},contentArea:{flex:1,padding:r.spacing(0,2)},trackEntitiesContainer:{marginTop:r.spacing(1)},headerDescription:{fontSize:r.typography.body2.fontSize,margin:r.spacing(.5,0,0),"& p":{margin:0},"& a":{color:"inherit",textDecoration:"underline"}},ownerLink:{"& span":{color:"inherit","&:hover":{textDecoration:"underline"}}},tabs:{padding:r.spacing(2,2,0,2)}})),$e=()=>{const[r]=ue(),{trackId:o}=he(),k=s(()=>Ie(r.get("numberOfDays")),[r]),{owners:n,lifecycles:c,types:l,systems:m,stagedLifecycles:B,setStagedLifecycles:D,stagedOwners:P,setStagedOwners:O,stagedTypes:I,setStagedTypes:A,stagedSystems:j,setStagedSystems:H,hasFilterChanges:M,handleApplyFilters:$,handleClearFilters:z}=Ne(),v=s(()=>({routeName:"soundcheck-track-insights",additionalAttributes:{trackId:o||"",filtersApplied:n.length+c.length+l.length+m.length,ownersFilter:n.join(",")||"",lifecyclesFilter:c.join(",")||"",typesFilter:l.join(",")||"",systemsFilter:m.join(",")||"",numberOfDays:k}}),[o,n,c,l,m,k]),{reportContentLoaded:S}=Le(v),{reporter:V}=Se(v),i=Me(),[g,W]=de("checksByLevel"),L=ke(),T=re(Te),Q=ge((a,h)=>{W(h)},[]),y=s(()=>xe({lifecycles:c,owners:n,types:l,systems:m}),[c,n,l,m]),{data:e,isLoading:p,isError:U}=ye(o),{data:f,isLoading:C,isError:q}=Ce({trackId:o,filter:y},!!o),{data:G,isLoading:F,isError:J}=be({trackId:o,filter:y,numberOfDays:k},!!o),{loading:K,allowed:X}=R({permission:le,resourceRef:o}),{loading:w,allowed:E}=R({permission:me,resourceRef:o}),Y=s(()=>e?.ownerEntityRef?t(oe,{color:"inherit",entityRef:e.ownerEntityRef,className:i.ownerLink}):null,[e?.ownerEntityRef,i.ownerLink]),Z=s(()=>!w&&E&&e?.isEditable?t(se,{className:i.editButton,variant:"contained",color:"primary",onClick:()=>{L(T({trackId:e.id}))},children:"Edit Track"}):null,[E,i.editButton,T,w,L,e]),_=s(()=>e?.description?t(Oe,{className:i.headerDescription,content:e.description}):null,[i.headerDescription,e?.description]);Pe({title:e?.name,description:_,customSubtitle:Y,sectionRight:Z});const ee=e?.levels?.flatMap(a=>a.checks)??[],{data:u,isLoading:N}=ve({trackId:o,checkIds:ee.map(a=>a.id),filter:y},!!e),te=s(()=>pe(e?.filter),[e]),x=V?.getLCPValue();return fe(()=>{if(!p&&!N&&!C&&!F){const a=f?.certificationStatus?.numberOfEntities??0,h=u?.length??0;S({lcp:x,numberOfEntities:a,entitiesBucket:Fe(a),numberOfChecks:h,checksBucket:we(h)})}},[p,N,C,F,u,f,S,x]),d(ie,{children:[t(De,{entityName:"track",entityId:o,showNotFound:!p&&!e,showCannotView:!K&&!X}),p&&t(Be,{}),e&&t("div",{className:i.root,children:d("div",{className:i.pageContent,children:[t(Ee,{trackFilter:te,stagedTypes:I,stagedLifecycles:B,stagedOwners:P,stagedSystems:j,onTypesChange:A,onLifecyclesChange:D,onOwnersChange:O,onSystemsChange:H,onApplyFilters:$,onClearFilters:z,hasFilterChanges:M}),d("div",{className:i.mainContentArea,children:[t("div",{className:i.trackProgressContainer,children:t(He,{track:e,status:f,history:G,isError:U||q||J})}),t(ne,{className:i.tabs,children:d(ce,{value:g,onChange:Q,indicatorColor:"primary",textColor:"primary",children:[t(b,{label:"Checks By Level",value:"checksByLevel"}),t(b,{label:"Top Failing Checks",value:"topFailingChecks"}),t(b,{label:"Entities",value:"entities"})]})}),d("div",{className:i.contentArea,children:[g==="checksByLevel"&&t("div",{className:i.levelCard,children:t(Re,{track:e,checkStatuses:u,isLoading:p||C})}),g==="entities"&&t("div",{className:i.trackEntitiesContainer,children:t(je,{track:e,lifecycles:c,owners:n,types:l,systems:m})}),g==="topFailingChecks"&&t("div",{className:i.levelCard,children:t(Ae,{track:e,checkStatuses:u,certificationStatus:f?.certificationStatus})})]})]})]})})]})};export{$e as TrackPageDeprecated};
2
- //# sourceMappingURL=TrackPageDeprecated.esm.js.map
@@ -1,2 +0,0 @@
1
- import{jsx as i,jsxs as a}from"react/jsx-runtime";import{makeStyles as n,Box as r,Typography as c}from"@material-ui/core";import{TrackHistoryChart as h}from"./TrackHistoryChart.esm.js";import{TrackStatus as p}from"./TrackStatus.esm.js";const f=n(t=>({card:{display:"flex",flexDirection:"column",height:"100%"},title:{fontWeight:"bold",fontSize:"1.1rem",lineHeight:`${t.typography.h5.fontSize}px`,cursor:"default",marginBottom:t.spacing(2)},header:{display:"flex",flexDirection:"column",gap:t.spacing(.5)},content:{display:"flex",flex:1,margin:t.spacing(1),gap:t.spacing(2),height:"100%"},leftSection:{width:"325px",minWidth:"325px",flex:0,display:"flex",flexDirection:"column",paddingRight:t.spacing(2)},chartSection:{flex:1,flexShrink:1,flexGrow:1,flexBasis:"auto",minWidth:"150px",display:"flex",flexDirection:"column",height:"100%"}})),m=({track:t,status:l,history:s,isError:o})=>{const e=f();return i(r,{className:e.card,children:a(r,{className:e.content,children:[a(r,{className:e.leftSection,children:[i(c,{className:e.title,children:"Current Status"}),i(p,{track:t,status:l})]}),a(r,{className:e.chartSection,children:[i(c,{className:e.title,children:"Historical Status"}),i(h,{track:t,data:s,isError:o})]})]})})};export{m as TrackProgressCard};
2
- //# sourceMappingURL=TrackProgressCard.esm.js.map
@@ -1,2 +0,0 @@
1
- import{jsx as t,Fragment as s,jsxs as c}from"react/jsx-runtime";import{Box as i}from"@material-ui/core";import{TrackStatusBar as o}from"./TrackStatusBar.esm.js";import{TrackStatusTable as m}from"./TrackStatusTable.esm.js";const e=({track:r,status:a})=>t(s,{children:c("div",{children:[t(o,{track:r,status:a?.certificationStatus}),t(i,{mt:2,children:t(m,{track:r,status:a?.certificationStatus})})]})});export{e as TrackStatus};
2
- //# sourceMappingURL=TrackStatus.esm.js.map
@@ -1,2 +0,0 @@
1
- import{jsx as n}from"react/jsx-runtime";import{useTheme as B,Box as L}from"@material-ui/core";import{makeStyles as x}from"@material-ui/core/styles";import{Skeleton as k}from"@material-ui/lab";import{useMemo as f}from"react";import{CategoryBar as N}from"../CategoryBar/CategoryBar.esm.js";import{getChartColors as $}from"../Charts/chartUtils.esm.js";const C=x(t=>({categoryBar:{"& .MuiBox-root > div":{height:"8px"}},skeleton:{height:"8px",width:"100%",margin:0,padding:0,display:"block"}})),S=({track:t,status:r,className:m})=>{const c=C(),i=B(),p=f(()=>{if(!r||!t)return{};const e={};let a=0,o=0;return(r.statusByLevel||[]).sort((s,l)=>l.ordinal-s.ordinal).forEach(({ordinal:s,cumulativelyPassed:l})=>{const g=t.levels.find(y=>y.ordinal===s)?.name??`Level ${s}`,u=l-o;e[g]=u,a+=u,o=l}),(r.statusByLevel||[]).reverse(),e["No Level"]=Math.max(0,r.numberOfEntities-a),e},[r,t]),v=f(()=>{if(!r||!t)return{};const e=$(i),a={};return(r.statusByLevel||[]).forEach(({ordinal:o})=>{const s=t.levels.find(l=>l.ordinal===o)?.name??`Level ${o}`;a[s]=e[o%e.length]}),a["No Level"]=i.palette.action.disabled,a},[i,r,t]);if(!t||!r)return n(k,{className:`${c.skeleton} ${m}`});const h=e=>e,d=(r.statusByLevel||[]).map(({ordinal:e})=>t.levels.find(a=>a.ordinal===e)?.name??`Level ${e}`);return d.push("No Level"),n(L,{className:m,style:{width:"100%"},children:n(N,{className:c.categoryBar,data:p,categories:d,categoryColors:v,showTooltip:!1,valueFormatter:e=>e.toString(),categoryFormatter:h})})};export{S as TrackStatusBar};
2
- //# sourceMappingURL=TrackStatusBar.esm.js.map
@@ -1,2 +0,0 @@
1
- import{jsx as a,jsxs as m}from"react/jsx-runtime";import{useTheme as w,Typography as v}from"@material-ui/core";import{makeStyles as b,createStyles as C}from"@material-ui/core/styles";import{Skeleton as f}from"@material-ui/lab";import{memo as T,useMemo as z,Fragment as L}from"react";import{compactNumberFormatter as y}from"../../utils/formatters.esm.js";import{getChartColors as O}from"../Charts/chartUtils.esm.js";const W=b(e=>C({container:{display:"grid",gridTemplateColumns:"3fr 2fr",gap:e.spacing(1),minWidth:0},item:{display:"flex",alignItems:"center",fontSize:"0.875rem",minWidth:0},legendDash:{width:e.spacing(2),height:e.spacing(.75),borderRadius:e.spacing(.375),marginRight:e.spacing(1)},category:{display:"flex",alignItems:"center",fontSize:"0.875rem",minWidth:0,flex:1},categoryText:{whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",fontSize:"0.875rem",minWidth:0,flex:1},value:{fontSize:"0.875rem",color:e.palette.text.primary},valueCell:{justifyContent:"flex-end",whiteSpace:"nowrap"},percentage:{color:e.palette.text.secondary,marginLeft:e.spacing(1)},skeleton:{backgroundColor:e.palette.action.hover}})),j=T(({track:e,status:l})=>{const r=w(),t=W(),k=z(()=>{if(!e)return[{name:"",key:1,color:r.palette.action.hover,value:0},{name:"",key:2,color:r.palette.action.hover,value:0},{name:"",key:3,color:r.palette.action.hover,value:0}];const i=O(r);let s=0,c=0;const n=e.levels.sort((h,o)=>o.ordinal-h.ordinal).map(({name:h,ordinal:o})=>{const g=l?.statusByLevel.find(S=>S.ordinal===o)?.cumulativelyPassed??0,u=g-c,N={name:h??`Level ${o}`,key:o,color:i[o%i.length],value:u};return s+=u,c=g,N}).reverse();e.levels.reverse();const p=l?.numberOfEntities??0,x=Math.max(0,p-s);return n.push({name:"No Level",key:-1,color:r.palette.action.disabled,value:x}),n},[r,e,l]),d=l?.numberOfEntities??0;return a("div",{className:t.container,children:k.map(({name:i,key:s,color:c,value:n})=>{const p=d>0?Math.round(n/d*100):0;return m(L,{children:[a("div",{className:t.item,children:m("div",{className:t.category,children:[a("span",{className:t.legendDash,style:{backgroundColor:c}}),e?a(v,{className:t.categoryText,children:i}):a(f,{width:80,height:20,className:t.skeleton})]})}),a("div",{className:`${t.item} ${t.valueCell}`,children:e&&l?m(v,{className:t.value,children:[y(n)," of"," ",y(d),m("span",{className:t.percentage,children:["(",p,"%)"]})]}):a(f,{width:120,height:20,className:t.skeleton})})]},s)})})});export{j as TrackStatusTable};
2
- //# sourceMappingURL=TrackStatusTable.esm.js.map
@@ -1,2 +0,0 @@
1
- import{getTrendLineColor as o,TrendLineColor as n}from"../Charts/chartUtils.esm.js";const s=(e,r)=>{if(isNaN(r))return"#ddd";if(r<0)return e.palette.status.aborted;const t=100;return r<t/3?o(e,n.RED):r<t*(2/3)?e.palette.status.warning:o(e,n.GREEN)};export{s as getProgressColor};
2
- //# sourceMappingURL=utils.esm.js.map
@@ -1,2 +0,0 @@
1
- import{jsx as y}from"react/jsx-runtime";import{makeStyles as A,TextField as G}from"@material-ui/core";import{Autocomplete as w}from"@material-ui/lab";import{sortBy as x,isEmpty as E}from"lodash";import{useState as I,useMemo as o}from"react";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import{useGetCampaigns as $}from"../../hooks/campaigns/useGetCampaigns.esm.js";import{useGetAllTracks as B}from"../../hooks/tracks/useGetAllTracks.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import{useGetTracksApplicableEntityCount as F}from"../../hooks/tracks/useGetTracksApplicableEntityCount.esm.js";const j=A(a=>({input:{backgroundColor:a.palette.background.paper}})),D=({selectTrack:a,selectedTrackId:n,showArchived:d,showDraft:m,selectedGroupRef:h})=>{const T=j(),{data:s,isLoading:C}=B({}),{data:l,isLoading:v}=$({}),[S,b]=I(n??""),u=o(()=>new Set(l?.edges.filter(({node:t})=>t.archived).map(({node:t})=>t.track.id)??[]),[l?.edges]),r=o(()=>{let t=s?.edges?.map(({node:e})=>({id:e.id,name:e.name,type:e.type==="campaign"?"Campaign":"Track",draft:!!e.draft}))??[];return t=t?.filter(e=>(d||!u.has(e.id))&&(m||!e.draft)),x(t,"type")},[u,d,m,s?.edges]),{data:c,isLoading:f}=F(h??"",{ids:r.map(t=>t.id)}),p=o(()=>{if(f)return r;const t=c??[],e=r.map(i=>{const k=t.find(({id:L})=>L===i.id);return{...i,count:k?k.applicableEntityCount:void 0}}).filter(i=>i.count!==0);return E(e)?r:e},[c,f,r]),g=o(()=>p?.find(t=>t.id===n),[n,p]);return y(w,{loading:C||v,options:p,onChange:(t,e)=>a(e?.id??""),inputValue:S,value:g??null,getOptionLabel:t=>`${t.name}${t.count?` (${t.count})`:""}`,groupBy:t=>t.type,fullWidth:!0,onInputChange:(t,e)=>b(e),renderInput:t=>y(G,{...t,placeholder:"Select Track",className:T.input,style:{margin:0},margin:"dense",variant:"outlined"})},g?.id??"no-value")};export{D as TrackSelection};
2
- //# sourceMappingURL=TrackSelection.esm.js.map
@@ -1,2 +0,0 @@
1
- var a=(t=>(t.title="Create a track",t.description="A track is composed of levels and checks, and encourages alignment to architectural best practices and standards.",t.callToAction="Get started",t))(a||{}),e=(t=>(t.title="No tracks found",t.description="No tracks matched your search. Consider changing search term and filters.",t))(e||{});export{a as TrackEmptyState,e as TrackNoResults};
2
- //# sourceMappingURL=TrackEmptyState.esm.js.map
@@ -1,2 +0,0 @@
1
- import{jsx as r,jsxs as k}from"react/jsx-runtime";import{useRouteRef as _,useApi as S,featureFlagsApiRef as ee}from"@backstage/core-plugin-api";import{usePermission as re}from"@backstage/plugin-permission-react";import{makeStyles as te,Button as N,Grid as a}from"@material-ui/core";import{soundcheckTrackCreatePermission as ae}from"@spotify/backstage-plugin-soundcheck-common";import{useState as i,useMemo as oe,useEffect as B}from"react";import{useNavigate as ie}from"react-router-dom";import se from"react-use/lib/useDebounce";import{soundcheckApiRef as ne}from"../../../api.esm.js";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../../hooks/useSoundcheckAlert.esm.js";import{useGetAllTracks as ce}from"../../../hooks/tracks/useGetAllTracks.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import"react-use/lib/useLocalStorage";import{useGetTrackOwners as me}from"../../../hooks/tracks/useGetTrackOwners.esm.js";import{useImportTracks as le}from"../../../hooks/tracks/useImportTracks.esm.js";import{useLCPReporting as pe}from"../../../hooks/useLCPReporting.esm.js";import{useLoadTimeReporting as de}from"../../../hooks/useLoadTimeReporting.esm.js";import ge from"../../../images/no-results.svg";import{trackCreateRouteRef as ue}from"../../../routes.esm.js";import{exportTracks as fe}from"../../../utils/export.esm.js";import{FilterDefault as L}from"../../../utils/filters.esm.js";import{EmptyState as F}from"../../EmptyState/EmptyState.esm.js";import"../../EmptyState/EmptyStateBUI.esm.js";import"@remixicon/react";import{ImportExportPanelDeprecated as he}from"../../ImportExportPanel/ImportExportPanelDeprecated.esm.js";import{Pagination as ke}from"../../Pagination/Pagination.esm.js";import{SearchFilters as Pe}from"../../SearchFilters/SearchFilters.esm.js";import{TrackEmptyState as P,TrackNoResults as I}from"./TrackEmptyState.esm.js";import{TracksOverviewSkeleton as Te}from"./TracksOverviewSkeleton.esm.js";import{TrackSummaryCard as ye}from"./TrackSummaryCard.esm.js";const Ce=te(t=>({headerButtons:{display:"flex",gap:t.spacing(1),flexWrap:"nowrap",justifyContent:"end",alignItems:"end"},header:{padding:t.spacing(0,0,1)},container:{padding:t.spacing(3),gap:t.spacing(3)},createButton:{lineHeight:"1.25rem",paddingTop:t.spacing(1.5),paddingBottom:t.spacing(1.5)}})),be=({tracksPerPage:t,currentCursor:O})=>{const[s,T]=i(O),[g,E]=i(""),[n,D]=i(L.Alpha),[c,j]=i(L.Owner),[m,G]=i(""),y=oe(()=>({routeName:"soundcheck-tracks",additionalAttributes:{tracksPerPage:t,pageCursor:s||"",sortOrder:n||"",ownerFilter:c||"",nameSearch:m||""}}),[t,s,n,c,m]),{reportContentLoaded:C}=de(y),{reporter:H}=pe(y),l=Ce(),{data:M,isLoading:u}=me();se(()=>{G(g)},500,[g]);const{loading:b,allowed:V}=re({permission:ae}),W=ie(),$=_(ue),x=()=>W($()),{data:f,isLoading:o}=ce({ids:void 0,types:["standard","playlist"],first:t,after:s,orderAlphabetical:n,searchByOwner:c,searchByName:m}),p=f?.edges?.map(e=>e.node),[A,v]=i([]);B(()=>{T(void 0),v([])},[m]);const w=S(ee),q=!w.getRegisteredFlags().find(e=>e.name==="soundcheck-enable-track-creation")||w.isActive("soundcheck-enable-track-creation"),h=!V||!q,z=e=>{D(e.target.value)},J=e=>{j(e.target.value)},K=S(ne),{mutateAsync:Q}=le(),U=async e=>Q(e),X=async()=>{const e=await K.getTracks({orderAlphabetical:"asc"});return fe(e.edges.map(Z=>Z.node))},R=H?.getLCPValue();if(B(()=>{!o&&!u&&C({lcp:R})},[o,u,C,R]),!o&&!p)return r(F,{title:P.title,description:P.description,imgSrc:ge,action:!b&&r(N,{disabled:h,variant:"contained",color:"primary",onClick:x,children:P.callToAction})});let d;o?d=r(Te,{}):p?.length?d=p?.map(e=>r(a,{xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem","aria-label":`track card ${e.id}`,children:r(ye,{summary:e})},e.id)):d=r(a,{xs:12,item:!0,role:"listitem","aria-label":"result",children:r(F,{title:I.title,description:I.description})});const Y=f?.pageInfo.hasNextPage||A?.length>0;return k(a,{container:!0,direction:"row",className:l.container,children:[k(a,{container:!0,className:l.header,children:[r(Pe,{searchPlaceholder:"Search Available Tracks",isLoading:o||u,searchTerm:g,setSearchTerm:E,filterAlpha:n,handleAlphabeticalFilterChange:z,filterOwner:c,handleOwnerFilterChange:J,owners:M}),k(a,{item:!0,xs:4,className:l.headerButtons,children:[r(he,{resourceType:"track",disableImport:h,disableExport:o||!p?.length,onImport:U,onExport:X}),!b&&r(N,{disabled:h,variant:"contained",color:"primary",onClick:x,className:l.createButton,children:"Create Track"})]})]}),r(a,{container:!0,spacing:4,role:"list","aria-label":"tracks",children:d}),Y&&r(a,{item:!0,xs:12,children:r(ke,{response:f,listingsPerPage:t,cursor:s,setCursor:T,prevCursors:A,setPrevCursors:v,labelPerPageDropdown:"Tracks Per Page:",urlRoute:"tracks?tracksPerPage="})})]})};export{be as TrackListPageDeprecated};
2
- //# sourceMappingURL=TrackListPageDeprecated.esm.js.map
@@ -1,2 +0,0 @@
1
- import{jsxs as r,jsx as e}from"react/jsx-runtime";import{Link as p}from"@backstage/core-components";import{EntityRefLink as g}from"@backstage/plugin-catalog-react";import{makeStyles as f,List as N,Typography as o,ListItem as n,Tooltip as a,ListItemIcon as l,ListItemText as s,Badge as k}from"@material-ui/core";import u from"@material-ui/icons/DoneAllRounded";import I from"@material-ui/icons/Group";import y from"@material-ui/icons/Menu";import b from"@material-ui/icons/OpenInNew";const L=f(i=>({root:{position:"relative",height:"100%"},cardSection:{marginBottom:i.spacing(2)},listItem:{padding:0},listItemText:{margin:0},iconContainer:{minWidth:"auto",paddingRight:i.spacing(1)},ownerLink:{"& span":{"&:hover":{textDecoration:"underline"}}},badge:{marginTop:i.spacing(1),"& span":{position:"relative",transform:"none",transformOrigin:"unset",backgroundColor:i.palette.action.disabledBackground}}})),v=({track:i})=>{const t=L(),c=i.levels?.length??0,m=i.levels?.reduce((d,h)=>d+h.checks.length,0);return r(N,{dense:!0,disablePadding:!0,className:t.cardSection,children:[e(o,{variant:"overline",color:"textSecondary",children:"Track Details"}),r(n,{disableGutters:!0,className:t.listItem,children:[e(a,{title:"Levels",children:e(l,{className:t.iconContainer,children:e(y,{color:"inherit",fontSize:"small"})})}),e(s,{className:t.listItemText,primary:e(o,{variant:"body2",color:"textPrimary",children:`${c} ${c===1?"Level":"Levels"}`})})]}),r(n,{disableGutters:!0,className:t.listItem,children:[e(a,{title:"Checks",children:e(l,{className:t.iconContainer,children:e(u,{color:"inherit",fontSize:"small"})})}),e(s,{className:t.listItemText,primary:e(o,{variant:"body2",color:"textPrimary",children:`${m} ${m===1?"Check":"Checks"}`})})]}),i.documentationURL&&r(n,{disableGutters:!0,className:t.listItem,children:[e(a,{title:"Documentation",children:e(l,{className:t.iconContainer,children:e(b,{color:"inherit",fontSize:"small"})})}),e(s,{className:t.listItemText,primary:e(p,{to:i.documentationURL,target:"_blank",rel:"noopener noreferrer",children:"Learn more"})})]}),r(n,{disableGutters:!0,className:t.listItem,children:[e(a,{title:"Owner",children:e(l,{className:t.iconContainer,children:e(I,{color:"inherit",fontSize:"small"})})}),e(s,{className:t.listItemText,primary:e(g,{entityRef:i.ownerEntityRef,hideIcon:!0,underline:"hover",className:t.ownerLink})})]}),i.draft&&e(n,{disableGutters:!0,className:t.listItem,children:e(k,{badgeContent:"Draft",className:t.badge})})]})};export{v as TrackMetadata};
2
- //# sourceMappingURL=TrackMetadata.esm.js.map
@@ -1,2 +0,0 @@
1
- import{jsx as l}from"react/jsx-runtime";import{useRouteRef as p,useApi as I,configApiRef as v}from"@backstage/core-plugin-api";import{usePermission as a}from"@backstage/plugin-permission-react";import{soundcheckTrackUpdatePermission as u,soundcheckTrackDeletePermission as x}from"@spotify/backstage-plugin-soundcheck-common";import{useCallback as i}from"react";import{useNavigate as A}from"react-router-dom";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../../api.esm.js";import"../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as C}from"../../../hooks/useConfirmationModal.esm.js";import"react-use/lib/useLocalStorage";import{useDeleteTrack as P}from"../../../hooks/tracks/useDeleteTrack.esm.js";import{useRecertifyTrack as M}from"../../../hooks/tracks/useRecertifyTrack.esm.js";import{trackDetailsRouteRef as N,trackEditRouteRef as O}from"../../../routes.esm.js";import{exportTrack as $}from"../../../utils/export.esm.js";import{SummaryCard as S}from"../../SummaryCard/SummaryCard.esm.js";import{TrackMetadata as j}from"./TrackMetadata.esm.js";const B=({summary:e})=>{const{loading:f,allowed:k}=a({permission:u,resourceRef:e.id}),{loading:y,allowed:h}=a({permission:x,resourceRef:e.id}),{loading:g,allowed:w}=a({permission:u,resourceRef:e.id}),{showModal:r}=C(),{mutate:m}=M(),{mutate:n}=P(),o=A(),s=p(N),c=p(O),d=I(v).getOptionalConfig("soundcheck.certifications.history");let t=d?.getOptionalBoolean("enable")?d?.getOptionalNumber("retentionTimeInDays")??120:1;t=Math.min(t,365);const R=i(async()=>{await r({title:"Recertify Track",message:`Are you sure you want to recertify track ${e.name}? It will erase existing certification data, which cannot be undone. New data will be generated for the past ${t} day(s), reflecting the track's current configuration. This process may take some time, you will be notified upon completion.`})&&m({trackId:e.id,numberOfDays:t})},[r,e.id,e.name,m,t]),T=i(async()=>{await r({title:"Delete Track",message:`Are you sure you want to delete track ${e.name}?`})&&n(e.id)},[r,e.id,e.name,n]),b=i(()=>{o(s({trackId:e.id}))},[o,e.id,s]),D=i(()=>{o(c({trackId:e.id}))},[o,e.id,c]),E=i(()=>{$(e)},[e]);return l(S,{title:e.name,description:e.description,children:l(j,{track:e}),handleView:b,handleEdit:e.isEditable&&!g&&w?D:void 0,handleDelete:e.isEditable&&!y&&h?T:void 0,handleExport:E,handleRecertify:!f&&k?R:void 0,viewIsPrimaryAction:!0})};export{B as TrackSummaryCard};
2
- //# sourceMappingURL=TrackSummaryCard.esm.js.map
@@ -1,2 +0,0 @@
1
- import{jsx as t}from"react/jsx-runtime";import{Grid as e}from"@material-ui/core";import{Skeleton as i}from"@material-ui/lab";const o=()=>t(e,{item:!0,container:!0,"data-testid":"tracks-skeleton",children:Array.from({length:6},(m,r)=>t(e,{xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem",children:t(i,{variant:"rect",height:385})},`loading-${r}`))});export{o as TracksOverviewSkeleton};
2
- //# sourceMappingURL=TracksOverviewSkeleton.esm.js.map
@@ -1,2 +0,0 @@
1
- import{useApi as s}from"@backstage/core-plugin-api";import{useQuery as t}from"@tanstack/react-query";import{soundcheckApiRef as o}from"../../api.esm.js";import{QueryKeys as a}from"../graphqlKeys.esm.js";const c=e=>{const r=s(o);return t([a.GetOverallCheckPassRateTrends,e],async()=>r.getOverallCheckPassRates(e),{staleTime:12*60*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})};export{c as useAggregatedCheckPassRateTrend};
2
- //# sourceMappingURL=useAggregatedCheckPassRateTrend.esm.js.map
@@ -1,2 +0,0 @@
1
- import{useApi as r}from"@backstage/core-plugin-api";import{useQuery as s}from"@tanstack/react-query";import{soundcheckApiRef as o}from"../../api.esm.js";import{QueryKeys as n}from"../graphqlKeys.esm.js";const a=e=>{const t=r(o);return s([n.GetOverallEntityPassRateTrends,e],async()=>t.getOverallEntityPassRates(e),{staleTime:12*60*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})};export{a as useAggregatedEntityPassRateTrend};
2
- //# sourceMappingURL=useAggregatedEntityPassRateTrend.esm.js.map
@@ -1,2 +0,0 @@
1
- import{useApi as s}from"@backstage/core-plugin-api";import{useQuery as t}from"@tanstack/react-query";import{soundcheckApiRef as o}from"../../api.esm.js";import{QueryKeys as a}from"../graphqlKeys.esm.js";const u=e=>{const r=s(o);return t([a.GetOverallGroupPassRateTrends,e],async()=>r.getOverallGroupPassRates(e),{staleTime:12*60*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})};export{u as useAggregatedGroupPassRateTrend};
2
- //# sourceMappingURL=useAggregatedGroupPassRateTrend.esm.js.map
@@ -1,2 +0,0 @@
1
- import{useApi as t}from"@backstage/core-plugin-api";import{useQuery as s}from"@tanstack/react-query";import{soundcheckApiRef as a}from"../../api.esm.js";import{QueryKeys as o}from"../graphqlKeys.esm.js";const c=(e,n)=>{const r=t(a);return s([o.GetOverallTrackPassRateTrends,e],async()=>r.getOverallTrackPassRate(e),{staleTime:12*60*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1,enabled:!0})};export{c as useAggregatedTrackPassRateTrend};
2
- //# sourceMappingURL=useAggregatedTrackPassRateTrend.esm.js.map
@@ -1,2 +0,0 @@
1
- import{useApi as s}from"@backstage/core-plugin-api";import{useQuery as t}from"@tanstack/react-query";import{soundcheckApiRef as o}from"../../api.esm.js";import{QueryKeys as i}from"../graphqlKeys.esm.js";const n=e=>{const r=s(o);return t([i.GetIndividualCheckPassRateTrends,e],async()=>r.getIndividualCheckPassRates(e),{staleTime:12*60*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})};export{n as useCheckPassRateTrend};
2
- //# sourceMappingURL=useCheckPassRateTrend.esm.js.map
@@ -1,2 +0,0 @@
1
- import{useApi as s}from"@backstage/core-plugin-api";import{useQuery as r}from"@tanstack/react-query";import{soundcheckApiRef as i}from"../../api.esm.js";import{QueryKeys as n}from"../graphqlKeys.esm.js";const o=e=>{const t=s(i);return r([n.GetIndividualEntityPassRateTrends,e],async()=>t.getIndividualEntityPassRates(e),{staleTime:12*60*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})};export{o as useEntityPassRateTrend};
2
- //# sourceMappingURL=useEntityPassRateTrend.esm.js.map
@@ -1,2 +0,0 @@
1
- import{useApi as s}from"@backstage/core-plugin-api";import{useQuery as o}from"@tanstack/react-query";import{soundcheckApiRef as t}from"../../api.esm.js";import{QueryKeys as u}from"../graphqlKeys.esm.js";const i=e=>{const r=s(t);return o([u.GetIndividualGroupPassRateTrends,e],async()=>r.getIndividualGroupPassRates(e),{staleTime:12*60*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})};export{i as useGroupPassRateTrend};
2
- //# sourceMappingURL=useGroupPassRateTrend.esm.js.map
@@ -1,2 +0,0 @@
1
- import{useApi as s}from"@backstage/core-plugin-api";import{useQuery as t}from"@tanstack/react-query";import{soundcheckApiRef as a}from"../../api.esm.js";import{QueryKeys as o}from"../graphqlKeys.esm.js";const i=e=>{const r=s(a);return t([o.GetIndividualTrackPassRateTrends,e],async()=>r.getIndividualTrackPassRate(e),{staleTime:12*60*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})};export{i as useTrackPassRateTrend};
2
- //# sourceMappingURL=useTrackPassRateTrend.esm.js.map
@@ -1,2 +0,0 @@
1
- import{useState as a,useEffect as r}from"react";import{useGetEntityCount as s}from"../catalog/useGetEntityCount.esm.js";let t=null,o=null;const d=15*60*1e3;function c(){const[i,l]=a(t===null),e=t===null||(o?Date.now()-o>d:!0),{data:n,isLoading:u}=s(e);return r(()=>{!u&&n!==void 0&&(t=n,o=Date.now()),l(!1)},[n,u,e]),{entityCount:t,loading:i}}export{c as useEntityCountCached};
2
- //# sourceMappingURL=useEntityCountCached.esm.js.map
@@ -1,2 +0,0 @@
1
- import{useState as r,useEffect as s}from"react";import{useGetAllTracks as c}from"../tracks/useGetAllTracks.esm.js";let t=null,o=null;const i=15*60*1e3;function d(){const[a,u]=r(t===null),e=t===null||(o?Date.now()-o>i:!0),{data:n,isLoading:l}=c({},{enabled:e});return s(()=>{!l&&n!==void 0&&(t=n.totalCount,o=Date.now()),u(!1)},[n,l,e]),{trackCount:t,loading:a}}export{d as useTrackCountCached};
2
- //# sourceMappingURL=useTrackCountCached.esm.js.map
@@ -1,2 +0,0 @@
1
- import{useApi as r}from"@backstage/core-plugin-api";import{useQuery as n}from"@tanstack/react-query";import{soundcheckApiRef as o}from"../../api.esm.js";import{QueryKeys as t}from"../graphqlKeys.esm.js";function i(){const e=r(o);return n([t.GetCampaignOwners],async()=>e.getCampaignOwners(),{refetchInterval:!1,refetchOnWindowFocus:!1})}export{i as useGetCampaignOwners};
2
- //# sourceMappingURL=useGetCampaignOwners.esm.js.map
@@ -1,2 +0,0 @@
1
- import{useApi as i}from"@backstage/core-plugin-api";import{catalogApiRef as s}from"@backstage/plugin-catalog-react";import{useQuery as m}from"@tanstack/react-query";import{useState as u}from"react";const a=(t=!1)=>{const r=i(s),[o,n]=u(0);return m(["GetEntityCount"],async()=>{if(!t)return o;const e=await r.queryEntities({limit:0});return n(e.totalItems),e.totalItems},{enabled:t,refetchOnWindowFocus:!1,refetchInterval:!1,staleTime:15*60*1e3})};export{a as useGetEntityCount};
2
- //# sourceMappingURL=useGetEntityCount.esm.js.map
@@ -1,2 +0,0 @@
1
- import{useApi as r}from"@backstage/core-plugin-api";import{useQuery as o}from"@tanstack/react-query";import{soundcheckApiRef as t}from"../../api.esm.js";import{QueryKeys as n}from"../graphqlKeys.esm.js";function c(){const e=r(t);return o([n.GetCheckOwners],async()=>e.getCheckOwners(),{refetchInterval:!1,refetchOnWindowFocus:!1})}export{c as useGetCheckOwners};
2
- //# sourceMappingURL=useGetCheckOwners.esm.js.map
@@ -1,2 +0,0 @@
1
- import{useApi as s}from"@backstage/core-plugin-api";import{useQuery as a}from"@tanstack/react-query";import{useState as f}from"react";import{soundcheckApiRef as u}from"../../api.esm.js";import{QueryKeys as l}from"../graphqlKeys.esm.js";function m(e){const t=s(u),[o,i]=f(null),n=async()=>(await t.getEntityRefsForTechHealthFilter(e)).entityRefsForTechHealthFilter,r=a([l.GetSoftwareEntityRefsForUser,e],n,{retry:!1,onError:i,enabled:e!==null,staleTime:5*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1});return{data:r.data??[],isLoading:r.isLoading,error:o}}export{m as useEntityRefsForUser};
2
- //# sourceMappingURL=useEntityRefsForUser.esm.js.map
@@ -1,2 +0,0 @@
1
- import{camelCase as p}from"lodash";import{useCallback as E,useEffect as y,useLayoutEffect as M}from"react";import{useSearchParams as v,useLocation as A,useNavigate as $}from"react-router-dom";import O from"react-use/lib/useLocalStorage";import{Facet as l}from"../../components/TechHealth/Filters/types.esm.js";import"../../components/TechHealth/Filters/FacetFilter.esm.js";import"../../components/TechHealth/Filters/FilterProvider.esm.js";import"../../components/TechHealth/Filters/Filters.esm.js";import"../../components/TechHealth/Filters/FiltersHeader.esm.js";import"../../components/TechHealth/Filters/FiltersSection.esm.js";import"@backstage/catalog-model";import"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"react/jsx-runtime";import"../../contexts/UserProvider.esm.js";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../useSoundcheckAlert.esm.js";import"../useConfirmationModal.esm.js";import{emptyFacetFilters as h,DEFAULT_NUMBER_OF_DAYS as f,MIN_NUMBER_OF_DAYS as U,MAX_NUMBER_OF_DAYS as k}from"../../components/TechHealth/Filters/utils.esm.js";const B=(d,_)=>{const[a]=v(),c=A(),i=$(),g=_??d[l.EntityOwner][0]?.value,[r=h(g),n]=O("soundcheck.techHealth.facetFilters",h(g));r&&Object.values(l).forEach(t=>{r[t]||(r[t]=[])});const[m=f,u]=O("soundcheck.techHealth.numberOfDays",f),b=t=>!isNaN(t)&&t>=U&&t<=k,N=E((t,e)=>{const o={...r??h()};o[t]=e,n(o)},[r,n]);y(()=>{const t=a.get("days");if(t&&t!==m.toString()){const e=parseInt(t,10);u(b(e)?e:f)}},[]),y(()=>{const t=a.get("days");(!t||t!==m.toString())&&(a.set("days",m.toString()),i({pathname:c.pathname,search:`?${a.toString()}`}))},[m,a,c,i]),M(()=>{let t=!0;const e=r;Object.values(l).forEach(o=>{const s=a.get(p(o));s?(t=!1,e[o]=s.split(",")):e[o]=[]}),t||n(e)},[]),y(()=>{Object.values(l).forEach(t=>{const e=r[t].join(","),o=p(t);e.length&&a.get(o)!==e&&(a.set(o,e),i({pathname:c.pathname,search:`?${a.toString()}`}))})},[r,a,c,i,g]);const D=(t,e)=>{N(t,e);const o=p(t);if(e.length){const s=e.join(",");a.get(o)!==s&&a.set(o,s)}else a.delete(o);i({pathname:c.pathname,search:`?${a.toString()}`})},j=E((t,e)=>{const o={...r??h()};for(let s=0;s<t.length;s++)o[t[s]]=e[s];n(o)},[r,n]);return{setFacetFilter:D,setManyFacetFilters:(t,e)=>{j(t,e);for(let o=0;o<t.length;o++){const s=t[o],F=p(s);if(e[o].length){const S=e[o].join(",");a.get(F)!==S&&a.set(F,S)}else a.delete(F)}i({pathname:c.pathname,search:`?${a.toString()}`})},getFacetFilter:t=>r?r[t]:[],clearFacetFilters:()=>{u(f),n(h()),a.delete("days"),Object.values(l).forEach(t=>{a.delete(p(t))}),i({pathname:c.pathname,search:`?${a.toString()}`})},facetFilters:r,numberOfDays:m,setNumberOfDays:u}};export{B as useFacetFilters};
2
- //# sourceMappingURL=useFacetFilters.esm.js.map
@@ -1,2 +0,0 @@
1
- import{useApi as r}from"@backstage/core-plugin-api";import{useQuery as c}from"@tanstack/react-query";import{soundcheckApiRef as o}from"../../api.esm.js";const t=()=>{const e=r(o);return c({queryKey:["groupTypeHierarchy"],queryFn:async()=>(await e.getGroupTypeHierarchy()).hierarchy,staleTime:1e3*60*60,cacheTime:1e3*60*60*4,refetchOnWindowFocus:!1,refetchOnMount:!1,refetchOnReconnect:!1,refetchInterval:!1})};export{t as useGroupTypeHierarchy};
2
- //# sourceMappingURL=useGroupTypeHierarchy.esm.js.map
@@ -1,2 +0,0 @@
1
- import{useApi as r}from"@backstage/core-plugin-api";import{useQuery as o}from"@tanstack/react-query";import{soundcheckApiRef as t}from"../../api.esm.js";import{QueryKeys as n}from"../graphqlKeys.esm.js";function c(){const e=r(t);return o([n.GetTrackOwners],async()=>e.getTrackOwners(),{refetchInterval:!1,refetchOnWindowFocus:!1})}export{c as useGetTrackOwners};
2
- //# sourceMappingURL=useGetTrackOwners.esm.js.map
@@ -1,2 +0,0 @@
1
- import{lighten as x}from"@material-ui/core";import{sequentialColorInterpolators as n}from"@nivo/colors";import{rgb as p}from"d3-color";import{interpolateRgb as b}from"d3-interpolate";import{scaleLinear as w}from"d3-scale";const h=(e,t)=>w().domain([0,50,100]).range([e.palette.error.main,e.palette.warning.main,e.palette.success.main]).interpolate(b.gamma(2.2))(t),k=(e,t)=>{switch(t){case"passed":return e.palette.success.main;case"failed":return e.palette.error.main;case"warning":return e.palette.warning.main;case"error":return x(e.palette.error.main,.2);case"exempt":return e.palette.info.main;case"not-applicable":return e.palette.grey[500];case"not-reported":return e.palette.grey[700];default:return"inherit"}},v=e=>{const t=p(e.formatHex());if(!t)return 0;const r=i=>{const l=i/255;return l<=.03928?l/12.92:Math.pow((l+.055)/1.055,2.4)},a=r(t.r),o=r(t.g),c=r(t.b);return .2126*a+.7152*o+.0722*c},d=(e,t)=>{const r=v(p(e))+.05,a=v(p(t))+.05;return r>a?r/a:a/r},D=(e,t=4.5,r=10,a=.5)=>{const o=p(e);if(!o)return"#222";const c=v(o)>.5;let i=o,l={color:o.formatHex(),ratio:0};for(let s=1;s<=r;s++){i=c?o.darker(s*a):o.brighter(s*a);const f=i.formatHex(),g=d(e,f);if(g>l.ratio&&(l={color:f,ratio:g}),g>=t)return f}const u=d(e,"#000"),m=d(e,"#fff");return u>=t&&u>m?"#000":m>=t&&m>u?"#fff":l.color},C=e=>[{label:"Default",value:"default",interpolator:t=>b(e.palette.error.main,e.palette.success.main)(t)},{label:"Black Green",value:"black_green",interpolator:t=>b("#000000","#1DB954")(t)},{label:"Stoplight",value:"stoplight",interpolator:t=>h(e,t*100)},{label:"Viridis",value:"viridis",interpolator:n.viridis},{label:"Inferno",value:"inferno",interpolator:n.inferno},{label:"Plasma",value:"plasma",interpolator:n.plasma},{label:"Cividis",value:"cividis",interpolator:n.cividis},{label:"Warm",value:"warm",interpolator:n.warm},{label:"Cool",value:"cool",interpolator:n.cool},{label:"Cubehelix Default",value:"cubehelix_default",interpolator:n.cubehelixDefault}],I=(e,t)=>C(e).find(r=>r.value===t)?.interpolator??(r=>"#ccc");export{k as getCheckStatusColor,I as getColorInterpolator,C as getColorInterpolators,D as getContrastTextColor,h as getPercentageColor};
2
- //# sourceMappingURL=colors.esm.js.map