@spotify/backstage-plugin-soundcheck 0.16.1 → 0.16.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (424) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/dist/alpha/entity-content.esm.js +1 -1
  3. package/dist/alpha/pages.esm.js +1 -1
  4. package/dist/alpha.d.ts +7 -7
  5. package/dist/api.esm.js +1 -1
  6. package/dist/components/AlertPanel/AlertPanel.esm.js +1 -1
  7. package/dist/components/AreaChart/AreaChart.esm.js +1 -1
  8. package/dist/components/AreaChart/ChartTooltip.esm.js +1 -1
  9. package/dist/components/AreaChart/Legend.esm.js +1 -1
  10. package/dist/components/AreaChart/LegendItem.esm.js +1 -1
  11. package/dist/components/Badges/BaseBadge.esm.js +1 -1
  12. package/dist/components/Badges/CampaignBadge.esm.js +1 -1
  13. package/dist/components/Badges/CertificationBadge.esm.js +1 -1
  14. package/dist/components/Badges/LevelBadge.esm.js +1 -1
  15. package/dist/components/Badges/NoLevelBadge.esm.js +2 -2
  16. package/dist/components/Badges/PlaylistBadge.esm.js +1 -1
  17. package/dist/components/Badges/StatusBadge.esm.js +1 -1
  18. package/dist/components/CacheConfig/CacheConfigComponent.esm.js +1 -1
  19. package/dist/components/CampaignCreatePage/CampaignCreatePage.esm.js +1 -1
  20. package/dist/components/CampaignForm/CampaignForm.esm.js +1 -1
  21. package/dist/components/CampaignForm/Steps/CampaignDetailsStep/CampaignDescriptionField.esm.js +1 -1
  22. package/dist/components/CampaignForm/Steps/CampaignDetailsStep/CampaignDetailsStep.esm.js +1 -1
  23. package/dist/components/CampaignForm/Steps/CampaignDetailsStep/CampaignDraftField.esm.js +2 -0
  24. package/dist/components/CampaignForm/Steps/CampaignDetailsStep/CampaignNameField.esm.js +1 -1
  25. package/dist/components/CampaignForm/Steps/CampaignDetailsStep/CampaignOwnerField.esm.js +1 -1
  26. package/dist/components/CampaignForm/Steps/CampaignDetailsStep/CampaignScheduleField.esm.js +1 -1
  27. package/dist/components/CampaignForm/Steps/CampaignDetailsStep/CampaignSupportChannelField.esm.js +1 -1
  28. package/dist/components/CampaignForm/Steps/CampaignDetailsStep/EndDateChips.esm.js +1 -1
  29. package/dist/components/CampaignForm/Steps/CampaignMilestonesStep.esm.js +1 -1
  30. package/dist/components/CampaignForm/Steps/CampaignTrackStepNew.esm.js +2 -0
  31. package/dist/components/CampaignForm/hooks/useCampaignForm.esm.js +1 -1
  32. package/dist/components/CampaignForm/hooks/utils.esm.js +1 -1
  33. package/dist/components/CampaignForm/utils/campaignFormUtils.esm.js +1 -1
  34. package/dist/components/CampaignForm/utils/validation.esm.js +1 -1
  35. package/dist/components/CampaignInsightsPage/CampaignInsightsPage.esm.js +1 -1
  36. package/dist/components/CampaignInsightsPage/CampaignStatusHistoryTile.esm.js +1 -1
  37. package/dist/components/CampaignInsightsPage/CampaignStatusTile.esm.js +1 -1
  38. package/dist/components/CampaignInsightsPage/DaysRemainingTile.esm.js +1 -1
  39. package/dist/components/CampaignsPage/CampaignEmptyState.esm.js +1 -1
  40. package/dist/components/CampaignsPage/CampaignListPage/CampaignListPage.esm.js +1 -1
  41. package/dist/components/CampaignsPage/CampaignListPage/CampaignMetadata.esm.js +1 -1
  42. package/dist/components/CampaignsPage/CampaignListPage/CampaignSummaryCard.esm.js +1 -1
  43. package/dist/components/CampaignsPage/CampaignListPage/CampaignsOverviewSkeleton.esm.js +1 -1
  44. package/dist/components/CampaignsPage/CampaignListPage/useArchiveConfirmationModal.esm.js +1 -1
  45. package/dist/components/CampaignsPage/CampaignsPage.esm.js +1 -1
  46. package/dist/components/CampaignsPage/EditCampaignView.esm.js +1 -1
  47. package/dist/components/CategoryBar/CategoryBar.esm.js +1 -1
  48. package/dist/components/CertificationAccordion/CertificationAccordion.esm.js +1 -1
  49. package/dist/components/CertificationSidebar/CertificationLevel.esm.js +1 -1
  50. package/dist/components/CertificationSidebar/CertificationSidebar.esm.js +1 -1
  51. package/dist/components/CertificationSidebar/CertificationSummary.esm.js +1 -1
  52. package/dist/components/CertificationSidebar/Check.esm.js +1 -1
  53. package/dist/components/CertificationSidebar/CheckResultInputPopup.esm.js +1 -1
  54. package/dist/components/CertificationSidebar/CheckResultSummaryList.esm.js +1 -1
  55. package/dist/components/CertificationSidebar/ExemptionJustificationDialog.esm.js +1 -1
  56. package/dist/components/CertificationSidebar/LevelSummary.esm.js +1 -1
  57. package/dist/components/CertificationSidebar/StatusDetails.esm.js +1 -1
  58. package/dist/components/CertificationSidebar/skeletons/CertificationSidebarSkeleton.esm.js +1 -1
  59. package/dist/components/CertificationSidebar/skeletons/CertificationSummarySkeleton.esm.js +1 -1
  60. package/dist/components/CertificationSidebar/skeletons/CheckSkeleton.esm.js +1 -1
  61. package/dist/components/CertificationSidebar/skeletons/LevelSummarySkeleton.esm.js +1 -1
  62. package/dist/components/CertificationsPage/CertificationTab.esm.js +1 -1
  63. package/dist/components/CertificationsPage/CertificationTabs.esm.js +1 -1
  64. package/dist/components/CertificationsPage/CertificationsPage.esm.js +1 -1
  65. package/dist/components/CertificationsPage/Playlist/PlaylistComponent.esm.js +1 -1
  66. package/dist/components/CertificationsPage/Playlist/PlaylistContext.esm.js +1 -1
  67. package/dist/components/CertificationsPage/Playlist/PlaylistProgress.esm.js +1 -1
  68. package/dist/components/CertificationsPage/Playlist/PlaylistSummary.esm.js +1 -1
  69. package/dist/components/CertificationsPage/PlaylistCertificationTab.esm.js +1 -1
  70. package/dist/components/CertificationsPage/skeletons/CertificationTabSkeleton.esm.js +1 -1
  71. package/dist/components/CertificationsPage/skeletons/CertificationTabsSkeleton.esm.js +1 -1
  72. package/dist/components/Charts/BarChart/BarChart.esm.js +1 -1
  73. package/dist/components/Charts/BarChart/BarChartPlaceholder.esm.js +1 -1
  74. package/dist/components/Charts/BarChart/GroupPassRateHistoryBarChart.esm.js +1 -1
  75. package/dist/components/Charts/BarChart/TrackSummaryBarChart.esm.js +1 -1
  76. package/dist/components/Charts/ChartWrapper/ChartWrapper.esm.js +1 -1
  77. package/dist/components/Charts/LineChart/EntityPassRateHistoryLineChart.esm.js +1 -1
  78. package/dist/components/Charts/LineChart/LineChart.esm.js +1 -1
  79. package/dist/components/Charts/LineChart/LineChartPlaceholder.esm.js +1 -1
  80. package/dist/components/Charts/LineChart/PassRateHistoryLineChart.esm.js +1 -1
  81. package/dist/components/Charts/LineChart/TableLineChart.esm.js +1 -1
  82. package/dist/components/Charts/LineChart/TrackPassRateHistoryLineChart.esm.js +1 -1
  83. package/dist/components/Charts/LoadingChart.esm.js +2 -0
  84. package/dist/components/Charts/chartUtils.esm.js +1 -1
  85. package/dist/components/CheckCard/CheckCard.esm.js +1 -1
  86. package/dist/components/CheckCard/CheckHistoryChart.esm.js +1 -1
  87. package/dist/components/CheckCreatePage/CheckCreatePage.esm.js +1 -1
  88. package/dist/components/CheckDetails/CheckDetails.esm.js +1 -1
  89. package/dist/components/CheckDetails/CheckResultDetails.esm.js +1 -1
  90. package/dist/components/CheckDetails/CollapseRow.esm.js +1 -1
  91. package/dist/components/CheckDetails/FactTable.esm.js +1 -1
  92. package/dist/components/CheckDetails/FixMeDialog.esm.js +1 -1
  93. package/dist/components/CheckDetails/JustificationDetails.esm.js +1 -1
  94. package/dist/components/CheckDetails/OngoingTaskComponent.esm.js +1 -1
  95. package/dist/components/CheckDetails/ResolvedValueTable.esm.js +1 -1
  96. package/dist/components/CheckDetails/ResultStateBox.esm.js +1 -1
  97. package/dist/components/CheckDetails/ReviewStateComponent.esm.js +1 -1
  98. package/dist/components/CheckDetails/SelectedValueContext.esm.js +1 -1
  99. package/dist/components/CheckDetails/skeletons/CheckDetailsSkeleton.esm.js +1 -1
  100. package/dist/components/CheckDryRun/CheckDryRun.esm.js +1 -1
  101. package/dist/components/CheckDryRun/CheckDryRunContext.esm.js +1 -1
  102. package/dist/components/CheckDryRun/CheckDryRunDetails.esm.js +1 -1
  103. package/dist/components/CheckDryRun/CheckDryRunDialog.esm.js +1 -1
  104. package/dist/components/CheckDryRun/CheckDryRunDialogButton.esm.js +1 -1
  105. package/dist/components/CheckForm/CheckForm.esm.js +1 -1
  106. package/dist/components/CheckForm/FormFields/CheckDescriptionInput/CheckDescriptionInput.esm.js +1 -1
  107. package/dist/components/CheckForm/FormFields/CheckNameInput/CheckNameInput.esm.js +1 -1
  108. package/dist/components/CheckForm/FormFields/CheckPathResolverInput.esm.js +1 -1
  109. package/dist/components/CheckForm/FormFields/CheckScheduleSection/ScheduleSection.esm.js +1 -1
  110. package/dist/components/CheckForm/FormFields/CheckTypeInput/CheckTypeInput.esm.js +1 -1
  111. package/dist/components/CheckForm/FormFields/PassFailMessageInput/PassFailMessageInput.esm.js +1 -1
  112. package/dist/components/CheckForm/FormFields/RuleInput/AddMenuButton.esm.js +1 -1
  113. package/dist/components/CheckForm/FormFields/RuleInput/Conditions/ConditionList.esm.js +1 -1
  114. package/dist/components/CheckForm/FormFields/RuleInput/Conditions/FactValueDisplay.esm.js +1 -1
  115. package/dist/components/CheckForm/FormFields/RuleInput/Conditions/RuleConditionInput.esm.js +1 -1
  116. package/dist/components/CheckForm/FormFields/RuleInput/Conditions/ValueListContext.esm.js +1 -1
  117. package/dist/components/CheckForm/FormFields/RuleInput/Conditions/ValueListInput.esm.js +1 -1
  118. package/dist/components/CheckForm/FormFields/RuleInput/Expressions/ExpressionBox.esm.js +1 -1
  119. package/dist/components/CheckForm/FormFields/RuleInput/Expressions/ExpressionTypeToggle.esm.js +1 -1
  120. package/dist/components/CheckForm/FormFields/RuleInput/RuleInputBox.esm.js +1 -1
  121. package/dist/components/CheckForm/FormFields/TeamDetailsInput/TeamDetailsInput.esm.js +1 -1
  122. package/dist/components/CheckForm/Steps/CheckApplicabilityStep.esm.js +2 -0
  123. package/dist/components/CheckForm/Steps/CheckDetailsStep.esm.js +1 -1
  124. package/dist/components/CheckForm/Steps/CheckReviewStep.esm.js +1 -1
  125. package/dist/components/CheckForm/Steps/CheckRulesStep.esm.js +1 -1
  126. package/dist/components/CheckForm/useCheckForm.esm.js +1 -1
  127. package/dist/components/CheckForm/utils/checkFormUtils.esm.js +2 -2
  128. package/dist/components/CheckForm/utils/validation.esm.js +1 -1
  129. package/dist/components/CheckHistoryChartCard/CheckHistoryChartCard.esm.js +1 -1
  130. package/dist/components/CheckIcon/CheckIcon.esm.js +1 -1
  131. package/dist/components/CheckPage/CheckEditPage.esm.js +1 -1
  132. package/dist/components/CheckPage/CheckEditView.esm.js +1 -1
  133. package/dist/components/CheckPage/CheckEntitiesTable/CheckEntitiesTable.esm.js +1 -1
  134. package/dist/components/CheckPage/CheckEntitiesTable/columns.esm.js +1 -1
  135. package/dist/components/CheckPage/CheckInsightsPage.esm.js +1 -1
  136. package/dist/components/CheckPage/CheckStatusHistoryChart.esm.js +1 -1
  137. package/dist/components/CheckPage/CheckStatusTable.esm.js +1 -1
  138. package/dist/components/CheckSelection/CheckPreview.esm.js +2 -0
  139. package/dist/components/CheckSelection/CheckPreviewContext.esm.js +2 -0
  140. package/dist/components/CheckSelection/CheckSelection.esm.js +2 -0
  141. package/dist/components/CheckStatusBar/CheckStatusBar.esm.js +2 -0
  142. package/dist/components/CheckTemplatesPage/CheckTemplatesPage.esm.js +1 -1
  143. package/dist/components/CheckTemplatesPage/TemplateCategory.esm.js +1 -1
  144. package/dist/components/ChecksPage/CheckListPage/CheckListPage.esm.js +1 -1
  145. package/dist/components/ChecksPage/CheckListPage/CheckMetadata.esm.js +1 -1
  146. package/dist/components/ChecksPage/CheckListPage/CheckSummaryCard.esm.js +1 -1
  147. package/dist/components/ChecksPage/ChecksPage.esm.js +1 -1
  148. package/dist/components/ChecksPage/skeletons/ChecksOverviewSkeleton.esm.js +1 -1
  149. package/dist/components/ChecksTab/ChecksTab.esm.js +1 -1
  150. package/dist/components/CollectorPage/CollectorPage.esm.js +1 -1
  151. package/dist/components/CollectorPage/Configurators/AzureDevOps/AzureDevOpsConfigurator.esm.js +1 -1
  152. package/dist/components/CollectorPage/Configurators/AzureDevOps/NumberOfDaysComponent.esm.js +1 -1
  153. package/dist/components/CollectorPage/Configurators/AzureDevOps/NumberOfWorkItemsComponent.esm.js +1 -1
  154. package/dist/components/CollectorPage/Configurators/AzureDevOps/validation.esm.js +1 -1
  155. package/dist/components/CollectorPage/Configurators/BigQuery/BigQueryConfigurator.esm.js +1 -1
  156. package/dist/components/CollectorPage/Configurators/BigQuery/QueryFactDetailsComponent.esm.js +1 -1
  157. package/dist/components/CollectorPage/Configurators/BigQuery/validation.esm.js +1 -1
  158. package/dist/components/CollectorPage/Configurators/Catalog/CatalogConfigurator.esm.js +1 -1
  159. package/dist/components/CollectorPage/Configurators/Common/CollectorSchedulingOptions.esm.js +1 -1
  160. package/dist/components/CollectorPage/Configurators/Common/FactCollectionConfig.esm.js +1 -1
  161. package/dist/components/CollectorPage/Configurators/Common/utils.esm.js +1 -1
  162. package/dist/components/CollectorPage/Configurators/Configurator.esm.js +1 -1
  163. package/dist/components/CollectorPage/Configurators/DataDog/DataDogConfigurator.esm.js +1 -1
  164. package/dist/components/CollectorPage/Configurators/DataRegistry/DataRegistryConfigurator.esm.js +2 -0
  165. package/dist/components/CollectorPage/Configurators/DataRegistry/utils.esm.js +2 -0
  166. package/dist/components/CollectorPage/Configurators/Github/CodeScanningAlertsFactDetails.esm.js +1 -1
  167. package/dist/components/CollectorPage/Configurators/Github/DependabotAlertsFactDetails.esm.js +1 -1
  168. package/dist/components/CollectorPage/Configurators/Github/GithubConfigurator.esm.js +1 -1
  169. package/dist/components/CollectorPage/Configurators/Github/SecretScanningAlertsFactDetails.esm.js +1 -1
  170. package/dist/components/CollectorPage/Configurators/Github/SecurityAdvisoriesFactDetails.esm.js +1 -1
  171. package/dist/components/CollectorPage/Configurators/Github/validation.esm.js +1 -1
  172. package/dist/components/CollectorPage/Configurators/Gitlab/GitlabConfigurator.esm.js +1 -1
  173. package/dist/components/CollectorPage/Configurators/HTTP/HttpConfigurator.esm.js +1 -1
  174. package/dist/components/CollectorPage/Configurators/HTTP/HttpRequestComponent.esm.js +1 -1
  175. package/dist/components/CollectorPage/Configurators/HTTP/HttpResponseComponent.esm.js +1 -1
  176. package/dist/components/CollectorPage/Configurators/HTTP/HttpRetriesComponent.esm.js +1 -1
  177. package/dist/components/CollectorPage/Configurators/HTTP/HttpStatusesInput.esm.js +1 -1
  178. package/dist/components/CollectorPage/Configurators/HTTP/RequestFactDetailsComponent.esm.js +1 -1
  179. package/dist/components/CollectorPage/Configurators/HTTP/validation.esm.js +1 -1
  180. package/dist/components/CollectorPage/Configurators/Jira/IssuesSearchFactDetailsComponent.esm.js +1 -1
  181. package/dist/components/CollectorPage/Configurators/Jira/JiraConfigurator.esm.js +1 -1
  182. package/dist/components/CollectorPage/Configurators/Jira/validation.esm.js +1 -1
  183. package/dist/components/CollectorPage/Configurators/Kubernetes/KubernetesConfigurator.esm.js +1 -1
  184. package/dist/components/CollectorPage/Configurators/Kubernetes/KubernetesFactDetails.esm.js +1 -1
  185. package/dist/components/CollectorPage/Configurators/Kubernetes/validation.esm.js +1 -1
  186. package/dist/components/CollectorPage/Configurators/NewRelic/NewRelicConfigurator.esm.js +1 -1
  187. package/dist/components/CollectorPage/Configurators/PagerDuty/IncidentsFactDetailsComponent.esm.js +1 -1
  188. package/dist/components/CollectorPage/Configurators/PagerDuty/PagerDutyConfigurator.esm.js +1 -1
  189. package/dist/components/CollectorPage/Configurators/PagerDuty/StatusesComponent.esm.js +1 -1
  190. package/dist/components/CollectorPage/Configurators/PagerDuty/validation.esm.js +1 -1
  191. package/dist/components/CollectorPage/Configurators/SCM/ExistsFactDetailsComponent.esm.js +1 -1
  192. package/dist/components/CollectorPage/Configurators/SCM/FactDetailsComponent.esm.js +1 -1
  193. package/dist/components/CollectorPage/Configurators/SCM/JsonFactDetailsComponent.esm.js +1 -1
  194. package/dist/components/CollectorPage/Configurators/SCM/RegexFactDetailsComponent.esm.js +1 -1
  195. package/dist/components/CollectorPage/Configurators/SCM/ScmConfigurator.esm.js +1 -1
  196. package/dist/components/CollectorPage/Configurators/SCM/validation.esm.js +1 -1
  197. package/dist/components/CollectorPage/Configurators/SonarQube/IssuesFactDetailsInput.esm.js +2 -0
  198. package/dist/components/CollectorPage/Configurators/SonarQube/MeasuresFactDetailsInput.esm.js +1 -1
  199. package/dist/components/CollectorPage/Configurators/SonarQube/MetricsInput.esm.js +1 -1
  200. package/dist/components/CollectorPage/Configurators/SonarQube/SonarQubeConfigurator.esm.js +1 -1
  201. package/dist/components/CollectorPage/Configurators/SonarQube/utils.esm.js +1 -1
  202. package/dist/components/CollectorPage/Configurators/SonarQube/validation.esm.js +1 -1
  203. package/dist/components/CollectorsPage/CollectorListPage/CollectorListPage.esm.js +1 -1
  204. package/dist/components/CollectorsPage/CollectorListPage/CollectorListSkeleton.esm.js +1 -1
  205. package/dist/components/CollectorsPage/CollectorListPage/CollectorLogo.esm.js +1 -1
  206. package/dist/components/CollectorsPage/CollectorListPage/CollectorSummaryCard.esm.js +1 -1
  207. package/dist/components/CollectorsPage/CollectorsPage.esm.js +1 -1
  208. package/dist/components/EmptyState/EmptyState.esm.js +1 -1
  209. package/dist/components/EntitiesAutocompletePicker/EntitiesAutocompletePicker.esm.js +2 -0
  210. package/dist/components/EntityChip/EntityChip.esm.js +1 -1
  211. package/dist/components/EntityContent/EntityContent.esm.js +1 -1
  212. package/dist/components/EntityPassRateCard/EntityPassRateCard.esm.js +1 -1
  213. package/dist/components/EntitySoundcheckCard/Card.esm.js +1 -1
  214. package/dist/components/EntitySoundcheckCard/EntitySoundcheckCard.esm.js +1 -1
  215. package/dist/components/EntitySoundcheckCard/skeletons/CardSkeleton.esm.js +1 -1
  216. package/dist/components/EntitySoundcheckContent.esm.js +1 -1
  217. package/dist/components/Expand/Expand.esm.js +1 -1
  218. package/dist/components/ExpandableSection/ExpandableSection.esm.js +1 -1
  219. package/dist/components/FactExplorer/FactExplorer.esm.js +1 -1
  220. package/dist/components/FactExplorer/FactExplorerContext.esm.js +1 -1
  221. package/dist/components/FactExplorer/FactExplorerDialog.esm.js +1 -1
  222. package/dist/components/FadeIn/FadeIn.esm.js +1 -1
  223. package/dist/components/Filter/EntityAutocompletePicker.esm.js +1 -1
  224. package/dist/components/Filter/FilterComponent.esm.js +1 -1
  225. package/dist/components/Filter/FilterKeyValueInput.esm.js +1 -1
  226. package/dist/components/Filter/FilterPreviewTable/EntityTableColumns.esm.js +1 -1
  227. package/dist/components/Filter/FilterPreviewTable/FilterPreviewTable.esm.js +1 -1
  228. package/dist/components/Filter/KeyValueInputDialog.esm.js +1 -1
  229. package/dist/components/FilterSidebar/FilterSidebar.esm.js +2 -0
  230. package/dist/components/FilterSidebar/StateFilter.esm.js +2 -0
  231. package/dist/components/FooterButtons/FooterButtons.esm.js +1 -1
  232. package/dist/components/FormControlledAutocomplete/ControlledAutocomplete.esm.js +1 -1
  233. package/dist/components/FormControlledAutocomplete/FormControlledAutocomplete.esm.js +1 -1
  234. package/dist/components/FormControlledAutocomplete/FormControlledMultipleAutocomplete.esm.js +1 -1
  235. package/dist/components/FormControlledSelect/FormControlledSelect.esm.js +1 -1
  236. package/dist/components/FormControlledTextField/FormControlledTextField.esm.js +1 -1
  237. package/dist/components/FormFieldLabel/FormFieldLabel.esm.js +1 -1
  238. package/dist/components/FormFilterSection/FormFilterSection.esm.js +1 -1
  239. package/dist/components/FormMarkdownInput/FormMarkdownInput.esm.js +1 -1
  240. package/dist/components/FormStepper/FormStepper.esm.js +1 -1
  241. package/dist/components/FormTextInput/FormTextInput.esm.js +1 -1
  242. package/dist/components/FormattedPreview/FormattedPreview.esm.js +2 -2
  243. package/dist/components/Frequency/FrequencyComponent.esm.js +1 -1
  244. package/dist/components/GroupPassRateCard/GroupPassRateCard.esm.js +1 -1
  245. package/dist/components/GroupSelector/GroupSelector.esm.js +1 -1
  246. package/dist/components/LevelUpParty/LevelUpParty.esm.js +1 -1
  247. package/dist/components/LevelsTable/CheckRowContent.esm.js +2 -0
  248. package/dist/components/LevelsTable/LevelsTable.esm.js +2 -0
  249. package/dist/components/ListboxVirtualized/ListboxVirtualized.esm.js +1 -1
  250. package/dist/components/LoadingIndicator/LoadingIndicator.esm.js +1 -1
  251. package/dist/components/MultiSelectFilter/MultiSelectFilter.esm.js +1 -1
  252. package/dist/components/NoBorderButton/NoBorderButton.esm.js +1 -1
  253. package/dist/components/OrgHealth/OrgHealthPage.esm.js +1 -1
  254. package/dist/components/OverviewChartCard/OverviewChartCard.esm.js +1 -1
  255. package/dist/components/OverviewPage/FixedGroupOverviewPage.esm.js +1 -1
  256. package/dist/components/OverviewPage/OverviewPage.esm.js +1 -1
  257. package/dist/components/OverviewPage/OverviewPageContent.esm.js +1 -1
  258. package/dist/components/OverviewPage/OverviewPageHeader.esm.js +1 -1
  259. package/dist/components/OverviewTable/Cell/CheckCell.esm.js +1 -1
  260. package/dist/components/OverviewTable/Cell/CheckCellTooltip.esm.js +1 -1
  261. package/dist/components/OverviewTable/Cell/CheckLabelCell.esm.js +1 -1
  262. package/dist/components/OverviewTable/Cell/CheckNameCell.esm.js +1 -1
  263. package/dist/components/OverviewTable/Cell/EntityRefCell.esm.js +1 -1
  264. package/dist/components/OverviewTable/Cell/TrackBadgeCell.esm.js +1 -1
  265. package/dist/components/OverviewTable/Cell/TrackCheckIndicator.esm.js +1 -1
  266. package/dist/components/OverviewTable/Cell/TrackLevelHeaderCell.esm.js +1 -1
  267. package/dist/components/OverviewTable/Cell/TrackTitleCell.esm.js +1 -1
  268. package/dist/components/OverviewTable/Cell/cellRenderer.esm.js +1 -1
  269. package/dist/components/OverviewTable/OverviewTable.esm.js +1 -1
  270. package/dist/components/OverviewTable/OverviewTableContent.esm.js +1 -1
  271. package/dist/components/OverviewTable/OverviewTableSkeleton.esm.js +1 -1
  272. package/dist/components/OverviewTable/ResultsTable.esm.js +1 -1
  273. package/dist/components/OverviewTable/ResultsTableHeader.esm.js +1 -1
  274. package/dist/components/OverviewTable/ResultsTableRow.esm.js +1 -1
  275. package/dist/components/PageWarningMessage/PageWarningMessage.esm.js +1 -1
  276. package/dist/components/Pagination/CursorPagination.esm.js +1 -1
  277. package/dist/components/Pagination/Pagination.esm.js +1 -1
  278. package/dist/components/PassRateGrid/PassRateGrid.esm.js +1 -1
  279. package/dist/components/PassRateGrid/PassRateMetadata.esm.js +1 -1
  280. package/dist/components/PassRateTable/NewPassRateTable.esm.js +1 -1
  281. package/dist/components/PassRateTable/PassRateTable.esm.js +2 -2
  282. package/dist/components/QuickstartPage/HowDoIListItem.esm.js +1 -1
  283. package/dist/components/QuickstartPage/QuickStartChecksCard.esm.js +1 -1
  284. package/dist/components/QuickstartPage/QuickstartCardBase.esm.js +1 -1
  285. package/dist/components/QuickstartPage/QuickstartCollectorConfigurationsCard.esm.js +1 -1
  286. package/dist/components/QuickstartPage/QuickstartPage.esm.js +1 -1
  287. package/dist/components/QuickstartPage/QuickstartTracksCard.esm.js +1 -1
  288. package/dist/components/QuickstartPage/WelcomeHelpSection.esm.js +6 -6
  289. package/dist/components/QuickstartPage/WelcomeModal.esm.js +1 -1
  290. package/dist/components/RefetchingIndicator/RefetchingIndicator.esm.js +1 -1
  291. package/dist/components/RelativeTime/RelativeTime.esm.js +1 -1
  292. package/dist/components/RichTooltip/RichTooltip.esm.js +1 -1
  293. package/dist/components/Router.esm.js +1 -1
  294. package/dist/components/RoutingPage/RoutingPage.esm.js +1 -1
  295. package/dist/components/RuleResult/BranchResultComponent.esm.js +1 -1
  296. package/dist/components/RuleResult/ConditionResultComponent.esm.js +1 -1
  297. package/dist/components/RuleResult/RuleResultComponent.esm.js +1 -1
  298. package/dist/components/SearchBar/SearchBar.esm.js +1 -1
  299. package/dist/components/SearchFilters/SearchFilters.esm.js +1 -1
  300. package/dist/components/SoundcheckDialog/SoundcheckDialog.esm.js +1 -1
  301. package/dist/components/SoundcheckHeader/Breadcrumbs.esm.js +1 -1
  302. package/dist/components/SoundcheckHeader/SoundcheckHeader.esm.js +1 -1
  303. package/dist/components/SoundcheckHeader/SoundcheckHeaderContext.esm.js +1 -1
  304. package/dist/components/SoundcheckHeader/headerUtil.esm.js +1 -1
  305. package/dist/components/SoundcheckMarkdownContent/ComponentRenders.esm.js +2 -0
  306. package/dist/components/SoundcheckMarkdownContent/SoundcheckMarkdownContent.esm.js +2 -0
  307. package/dist/components/SoundcheckQueryClientProvider/SoundcheckQueryClientProvider.esm.js +1 -1
  308. package/dist/components/SummaryCard/SummaryCard.esm.js +1 -1
  309. package/dist/components/SummaryCard/SummaryCardActionsMenu.esm.js +1 -1
  310. package/dist/components/TechHealth/Filters/FacetFilter.esm.js +1 -1
  311. package/dist/components/TechHealth/Filters/FilterProvider.esm.js +1 -1
  312. package/dist/components/TechHealth/Filters/Filters.esm.js +1 -1
  313. package/dist/components/TechHealth/Filters/FiltersHeader.esm.js +1 -1
  314. package/dist/components/TechHealth/Filters/FiltersSection.esm.js +1 -1
  315. package/dist/components/TechHealth/Filters/NumberOfDaysFilter.esm.js +1 -1
  316. package/dist/components/TechHealth/Filters/useFacetOptions.esm.js +1 -1
  317. package/dist/components/TechHealth/Loading/Emoji.esm.js +1 -1
  318. package/dist/components/TechHealth/Loading/EmojiFountain.esm.js +1 -1
  319. package/dist/components/TechHealth/Loading/Loading.esm.js +1 -1
  320. package/dist/components/TechHealth/Loading/TechHealthLoading.esm.js +1 -1
  321. package/dist/components/TechHealth/TechHealth.esm.js +1 -1
  322. package/dist/components/TechHealthSummary/SummaryAggregationsProvider.esm.js +1 -1
  323. package/dist/components/TechHealthSummary/TechHealthSummary.esm.js +1 -1
  324. package/dist/components/TechHealthTabs/ActionColumn.esm.js +1 -1
  325. package/dist/components/TechHealthTabs/CampaignResultsTab/CampaignResultsTab.esm.js +1 -1
  326. package/dist/components/TechHealthTabs/CheckResultsTab/CheckResultsTab.esm.js +1 -1
  327. package/dist/components/TechHealthTabs/CheckResultsTab/CheckTrendColumn.esm.js +1 -1
  328. package/dist/components/TechHealthTabs/EntityResultsTab/EntityResultsTab.esm.js +1 -1
  329. package/dist/components/TechHealthTabs/EntityResultsTab/EntityTrendColumn.esm.js +1 -1
  330. package/dist/components/TechHealthTabs/GroupResultsTab/GroupResultsTab.esm.js +1 -1
  331. package/dist/components/TechHealthTabs/GroupResultsTab/GroupTrendColumn.esm.js +1 -1
  332. package/dist/components/TechHealthTabs/MostRecentColumn.esm.js +1 -1
  333. package/dist/components/TechHealthTabs/NameColumn.esm.js +1 -1
  334. package/dist/components/TechHealthTabs/OwnerColumn.esm.js +1 -1
  335. package/dist/components/TechHealthTabs/PassRateTabHeader.esm.js +1 -1
  336. package/dist/components/TechHealthTabs/TrackResultsTab/TrackLevelTrendColumn.esm.js +1 -1
  337. package/dist/components/TechHealthTabs/TrackResultsTab/TrackResultsTab.esm.js +1 -1
  338. package/dist/components/TechHealthTabs/techHealthTabUtils.esm.js +1 -1
  339. package/dist/components/TopFailingChecksTable/TopFailingChecksTable.esm.js +2 -0
  340. package/dist/components/TrackCreatePage/TrackCreatePage.esm.js +1 -1
  341. package/dist/components/TrackEditPage/TrackEditPage.esm.js +1 -1
  342. package/dist/components/TrackEditPage/TrackEditView.esm.js +1 -1
  343. package/dist/components/TrackForm/Steps/LevelsStep/LevelsStepNew.esm.js +2 -0
  344. package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackBadgeTypeSelect/TrackBadgeTypeSelect.esm.js +1 -1
  345. package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackDescriptionInput/TrackDescriptionInput.esm.js +1 -1
  346. package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackDetailsStep.esm.js +1 -1
  347. package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackDocumentationUrlInput/TrackDocumentationUrlInput.esm.js +1 -1
  348. package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackDraftInput/TrackDraftInput.esm.js +2 -0
  349. package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackNameInput/TrackNameInput.esm.js +1 -1
  350. package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackOwnerSelect/TrackOwnerSelect.esm.js +1 -1
  351. package/dist/components/TrackForm/TrackForm.esm.js +1 -1
  352. package/dist/components/TrackForm/utils/useTrackForm.esm.js +1 -1
  353. package/dist/components/TrackHistoryChartCard/TrackHistoryChartCard.esm.js +1 -1
  354. package/dist/components/TrackPage/FilterBar/FilterBar.esm.js +1 -1
  355. package/dist/components/TrackPage/TrackEntitiesTable/TrackEntitiesTable.esm.js +1 -1
  356. package/dist/components/TrackPage/TrackEntitiesTable/TrackStatusChip.esm.js +1 -1
  357. package/dist/components/TrackPage/TrackEntitiesTable/columns.esm.js +1 -1
  358. package/dist/components/TrackPage/TrackEntitiesTable/utils.esm.js +1 -1
  359. package/dist/components/TrackPage/TrackHistoryChart.esm.js +1 -1
  360. package/dist/components/TrackPage/TrackPage.esm.js +1 -1
  361. package/dist/components/TrackPage/TrackProgressCard.esm.js +1 -1
  362. package/dist/components/TrackPage/TrackStatus.esm.js +2 -0
  363. package/dist/components/TrackPage/TrackStatusBar.esm.js +2 -0
  364. package/dist/components/TrackPage/TrackStatusTable.esm.js +2 -0
  365. package/dist/components/TracksPage/TrackListPage/TrackListPage.esm.js +1 -1
  366. package/dist/components/TracksPage/TrackListPage/TrackMetadata.esm.js +1 -1
  367. package/dist/components/TracksPage/TrackListPage/TrackSummaryCard.esm.js +1 -1
  368. package/dist/components/TracksPage/TrackListPage/TracksOverviewSkeleton.esm.js +1 -1
  369. package/dist/components/TracksPage/TracksPage.esm.js +1 -1
  370. package/dist/components/TracksTab/TracksTab.esm.js +1 -1
  371. package/dist/contexts/GenericFormContext.esm.js +1 -1
  372. package/dist/contexts/UserProvider.esm.js +1 -1
  373. package/dist/graphql/generated/index.esm.js +93 -45
  374. package/dist/hooks/aggregations/useCertificationStatus.esm.js +1 -1
  375. package/dist/hooks/aggregations/useCheckStatus.esm.js +1 -1
  376. package/dist/hooks/aggregations/useCheckStatuses.esm.js +1 -1
  377. package/dist/hooks/catalog/useGetEntityFacets.esm.js +1 -1
  378. package/dist/hooks/catalog/useGetEntityRefs.esm.js +1 -1
  379. package/dist/hooks/certifications/useAllCertifications.esm.js +1 -1
  380. package/dist/hooks/certifications/useCertificationDetails.esm.js +1 -1
  381. package/dist/hooks/certifications/useCertificationDetailsForTrack.esm.js +1 -1
  382. package/dist/hooks/checks/useCheck.esm.js +2 -0
  383. package/dist/hooks/checks/useDeleteCheck.esm.js +1 -1
  384. package/dist/hooks/checks/useGetChecks.esm.js +1 -1
  385. package/dist/hooks/checks/useSetManualResult.esm.js +1 -1
  386. package/dist/hooks/checks/useUpdateCheck.esm.js +1 -1
  387. package/dist/hooks/exemptions/useDeleteExemption.esm.js +1 -1
  388. package/dist/hooks/exemptions/useExemptCheckIds.esm.js +2 -0
  389. package/dist/hooks/exemptions/useSetEntityExempt.esm.js +1 -1
  390. package/dist/hooks/facets/useFacetFilters.esm.js +1 -1
  391. package/dist/hooks/graphqlKeys.esm.js +1 -1
  392. package/dist/hooks/tracks/useGetAllTracks.esm.js +1 -1
  393. package/dist/hooks/tracks/useTrack.esm.js +2 -0
  394. package/dist/hooks/tracks/useUpdateTrack.esm.js +1 -1
  395. package/dist/hooks/useConfirmationModal.esm.js +1 -1
  396. package/dist/hooks/useSoundcheckAlert.esm.js +1 -1
  397. package/dist/images/data-registry-blk.svg +36 -0
  398. package/dist/images/data-registry-wht.svg +36 -0
  399. package/dist/index.d.ts +4 -4
  400. package/dist/index.esm.js +1 -1
  401. package/dist/routes.esm.js +1 -1
  402. package/dist/utils/colors.esm.js +2 -0
  403. package/dist/utils/export.esm.js +3 -3
  404. package/dist/utils/formatters.esm.js +2 -0
  405. package/dist/utils/validation.esm.js +1 -1
  406. package/package.json +25 -21
  407. package/dist/components/Badges/badge.esm.js +0 -2
  408. package/dist/components/CampaignForm/Steps/CampaignTrackStep.esm.js +0 -2
  409. package/dist/components/CheckPage/CheckStatusBar.esm.js +0 -2
  410. package/dist/components/CheckPage/FilterBar/FilterBar.esm.js +0 -2
  411. package/dist/components/CheckPage/StatusRow.esm.js +0 -2
  412. package/dist/components/ChecksErrors/ChecksErrors.esm.js +0 -2
  413. package/dist/components/ContextMenu/ContextMenu.esm.js +0 -2
  414. package/dist/components/DraggableChip/DraggableChip.esm.js +0 -2
  415. package/dist/components/DraggableChip/chipStyles.esm.js +0 -2
  416. package/dist/components/DroppableInput/DroppableInput.esm.js +0 -2
  417. package/dist/components/LevelCard/LevelCard.esm.js +0 -2
  418. package/dist/components/LevelCard/LevelTooltip.esm.js +0 -2
  419. package/dist/components/TrackForm/Steps/LevelsStep/ChecksSection/ChecksSection.esm.js +0 -2
  420. package/dist/components/TrackForm/Steps/LevelsStep/LevelsSection/LevelChipsSection.esm.js +0 -2
  421. package/dist/components/TrackForm/Steps/LevelsStep/LevelsSection/LevelsSection.esm.js +0 -2
  422. package/dist/components/TrackForm/Steps/LevelsStep/LevelsStep.esm.js +0 -2
  423. package/dist/components/TrackPage/TrackLevelsChart.esm.js +0 -2
  424. package/dist/hooks/useContextMenu.esm.js +0 -2
@@ -1,2 +1,2 @@
1
- import{stringifyEntityRef as b}from"@backstage/catalog-model";import{useEntity as g}from"@backstage/plugin-catalog-react";import{makeStyles as k,Paper as I,Divider as C}from"@material-ui/core";import e,{useState as N,useCallback as P}from"react";import{useParams as x}from"react-router-dom";import{useAllCertifications as A}from"../../hooks/certifications/useAllCertifications.esm.js";import"@backstage/core-plugin-api";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{usePlaylists as R}from"../../hooks/playlists/usePlaylists.esm.js";import{AlertPanel as n}from"../AlertPanel/AlertPanel.esm.js";import{CertificationSidebar as S}from"../CertificationSidebar/CertificationSidebar.esm.js";import"../CertificationSidebar/CertificationSummary.esm.js";import"@material-ui/lab";import"../CertificationSidebar/Check.esm.js";import"../CertificationSidebar/LevelSummary.esm.js";import{isDarkTheme as D}from"../Charts/chartUtils.esm.js";import{CheckDetails as $}from"../CheckDetails/CheckDetails.esm.js";import"../CheckDryRun/CheckDryRun.esm.js";import"../SoundcheckDialog/SoundcheckDialog.esm.js";import"../CheckDryRun/CheckDryRunDetails.esm.js";import{CheckDryRunProvider as T}from"../CheckDryRun/CheckDryRunContext.esm.js";import"../CheckForm/utils/checkFormUtils.esm.js";import{NoCertifications as F}from"../EmptyState/EmptyState.esm.js";import{LevelUpParty as L}from"../LevelUpParty/LevelUpParty.esm.js";import{RefetchingIndicator as U}from"../RefetchingIndicator/RefetchingIndicator.esm.js";import{CertificationTabs as j}from"./CertificationTabs.esm.js";import{PlaylistComponent as q}from"./Playlist/PlaylistComponent.esm.js";const c=k(t=>({paper:{overflow:"hidden",position:"relative",border:D(t)?`1px solid ${t.palette.divider}`:void 0},view:{display:"grid",gridTemplateColumns:"1fr 2fr"},sidebar:{borderRight:`1px solid ${t.palette.divider}`}})),z=()=>{const{playlistId:t,trackId:r,checkId:l}=x(),m=c(),{entity:i}=g(),{isError:d,isFetched:f,data:h}=A(i),{isError:E,data:u}=R(i),[p,s]=N({showNotApplicable:!1,showExempt:!1}),y=P(({showNotApplicable:a,showExempt:w})=>{s({showNotApplicable:a,showExempt:w})},[s]);if(d||E)return e.createElement(n,{severity:"error",title:"Error loading certifications"});const o=t&&u?.find(a=>a.id===t);if(t&&!o)return e.createElement(n,{severity:"error",title:"Playlist ${playlistId} not found."});if(f&&!h?.length)return e.createElement(F,null);const v=i?b(i):void 0;return e.createElement(T,null,e.createElement(I,{className:m.paper},e.createElement(U,null),e.createElement(j,{playlistId:t,trackId:r,onSettingsChange:y}),e.createElement(C,null),o&&e.createElement(q,{playlist:o,entityRef:v}),!o&&r&&e.createElement("div",{"data-testid":"soundcheck-certification-view",className:m.view},e.createElement("div",{className:m.sidebar},e.createElement(S,{trackId:r,checkId:l,showNotApplicable:p.showNotApplicable,showExempt:p.showExempt})),e.createElement($,{programId:r,checkId:l}),e.createElement(L,{programId:r}))))};export{z as CertificationsPage,c as useStyles};
1
+ import{jsx as r,jsxs as d}from"react/jsx-runtime";import{stringifyEntityRef as k}from"@backstage/catalog-model";import{useEntity as I}from"@backstage/plugin-catalog-react";import{makeStyles as C,Paper as x,Divider as E}from"@material-ui/core";import{useState as N,useCallback as P}from"react";import{useParams as A}from"react-router-dom";import{useAllCertifications as R}from"../../hooks/certifications/useAllCertifications.esm.js";import"@backstage/core-plugin-api";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{usePlaylists as S}from"../../hooks/playlists/usePlaylists.esm.js";import{AlertPanel as n}from"../AlertPanel/AlertPanel.esm.js";import{CertificationSidebar as D}from"../CertificationSidebar/CertificationSidebar.esm.js";import"../CertificationSidebar/CertificationSummary.esm.js";import"@material-ui/lab";import"../CertificationSidebar/Check.esm.js";import"../CertificationSidebar/LevelSummary.esm.js";import{isDarkTheme as T}from"../Charts/chartUtils.esm.js";import{CheckDetails as $}from"../CheckDetails/CheckDetails.esm.js";import"../CheckDryRun/CheckDryRun.esm.js";import"../SoundcheckDialog/SoundcheckDialog.esm.js";import"../CheckDryRun/CheckDryRunDetails.esm.js";import{CheckDryRunProvider as j}from"../CheckDryRun/CheckDryRunContext.esm.js";import"../CheckForm/utils/checkFormUtils.esm.js";import{NoCertifications as F}from"../EmptyState/EmptyState.esm.js";import{LevelUpParty as L}from"../LevelUpParty/LevelUpParty.esm.js";import{RefetchingIndicator as U}from"../RefetchingIndicator/RefetchingIndicator.esm.js";import{CertificationTabs as q}from"./CertificationTabs.esm.js";import{PlaylistComponent as z}from"./Playlist/PlaylistComponent.esm.js";const c=C(i=>({paper:{overflow:"hidden",position:"relative",border:T(i)?`1px solid ${i.palette.divider}`:void 0},view:{display:"grid",gridTemplateColumns:"1fr 2fr"},sidebar:{borderRight:`1px solid ${i.palette.divider}`}})),B=()=>{const{playlistId:i,trackId:t,checkId:s}=A(),p=c(),{entity:o}=I(),{isError:f,isFetched:h,data:y}=R(o),{isError:v,data:u}=S(o),[a,l]=N({showNotApplicable:!1,showExempt:!1}),w=P(({showNotApplicable:m,showExempt:b})=>{l({showNotApplicable:m,showExempt:b})},[l]);if(f||v)return r(n,{severity:"error",title:"Error loading certifications"});const e=i&&u?.find(m=>m.id===i);if(i&&!e)return r(n,{severity:"error",title:"Playlist ${playlistId} not found."});if(h&&!y?.length)return r(F,{});const g=o?k(o):void 0;return r(j,{children:d(x,{className:p.paper,children:[r(U,{}),r(q,{playlistId:i,trackId:t,onSettingsChange:w}),r(E,{}),e&&r(z,{playlist:e,entityRef:g}),!e&&t&&d("div",{"data-testid":"soundcheck-certification-view",className:p.view,children:[r("div",{className:p.sidebar,children:r(D,{trackId:t,checkId:s,showNotApplicable:a.showNotApplicable,showExempt:a.showExempt})}),r($,{programId:t,checkId:s}),r(L,{programId:t})]})]})})};export{B as CertificationsPage,c as useStyles};
2
2
  //# sourceMappingURL=CertificationsPage.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as l}from"@material-ui/core";import t from"react";import{useParams as d}from"react-router-dom";import{CertificationAccordion as n}from"../../CertificationAccordion/CertificationAccordion.esm.js";import{CheckDetails as c}from"../../CheckDetails/CheckDetails.esm.js";import{PlaylistCertificationProvider as s}from"./PlaylistContext.esm.js";import{PlaylistSummary as p}from"./PlaylistSummary.esm.js";const g=l(e=>({root:{margin:0,display:"grid",gridTemplateColumns:"1fr",backgroundColor:e.palette.background.default},header:{backgroundColor:e.palette.background.paper,borderBottom:`1px solid ${e.palette.divider}`},section:{backgroundColor:e.palette.background.paper,border:`1px solid ${e.palette.divider}`,padding:0,marginTop:e.spacing(1),marginBottom:e.spacing(1),marginLeft:0,marginRight:e.spacing(1)},twoColumns:{display:"grid",gridTemplateColumns:"1fr 2fr"},sidebar:{display:"grid",gridTemplateColumns:"1fr",margin:e.spacing(1)}})),f=({playlist:e,entityRef:r})=>{const a=g(),{trackId:m,checkId:i}=d();return t.createElement("div",{className:a.root},t.createElement(s,{entityRef:r},t.createElement("div",{className:a.header},t.createElement(p,{playlist:e,entityRef:r})),t.createElement("div",{className:a.twoColumns},t.createElement("div",{className:a.sidebar},e.trackIds.map(o=>t.createElement(n,{key:o,playlistId:e.id,trackId:o,checkId:i}))),t.createElement("div",{className:a.section},t.createElement(c,{programId:m,checkId:i})))))};export{f as PlaylistComponent};
1
+ import{jsx as r,jsxs as d}from"react/jsx-runtime";import{makeStyles as s}from"@material-ui/core";import{useParams as m}from"react-router-dom";import{CertificationAccordion as n}from"../../CertificationAccordion/CertificationAccordion.esm.js";import{CheckDetails as c}from"../../CheckDetails/CheckDetails.esm.js";import{PlaylistCertificationProvider as p}from"./PlaylistContext.esm.js";import{PlaylistSummary as g}from"./PlaylistSummary.esm.js";const f=s(i=>({root:{margin:0,display:"grid",gridTemplateColumns:"1fr",backgroundColor:i.palette.background.default},header:{backgroundColor:i.palette.background.paper,borderBottom:`1px solid ${i.palette.divider}`},section:{backgroundColor:i.palette.background.paper,border:`1px solid ${i.palette.divider}`,padding:0,marginTop:i.spacing(1),marginBottom:i.spacing(1),marginLeft:0,marginRight:i.spacing(1)},twoColumns:{display:"grid",gridTemplateColumns:"1fr 2fr"},sidebar:{display:"grid",gridTemplateColumns:"1fr",margin:i.spacing(1)}})),u=({playlist:i,entityRef:a})=>{const e=f(),{trackId:l,checkId:o}=m();return r("div",{className:e.root,children:d(p,{entityRef:a,children:[r("div",{className:e.header,children:r(g,{playlist:i,entityRef:a})}),d("div",{className:e.twoColumns,children:[r("div",{className:e.sidebar,children:i.trackIds.map(t=>r(n,{playlistId:i.id,trackId:t,checkId:o},t))}),r("div",{className:e.section,children:r(c,{programId:l,checkId:o})})]})]})})};export{u as PlaylistComponent};
2
2
  //# sourceMappingURL=PlaylistComponent.esm.js.map
@@ -1,2 +1,2 @@
1
- import n,{createContext as m,useContext as s}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{useCertificationDetails as a}from"../../../hooks/certifications/useCertificationDetails.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-router-dom";const i=m(void 0),p=()=>{const t=s(i);if(!t)throw new Error("useAPlaylistCertificationContext must be used within an PlaylistCertificationProvider");return t},c=t=>{const{children:r,entityRef:e}=t,o=a(e);return n.createElement(i.Provider,{value:o},r)};export{c as PlaylistCertificationProvider,p as usePlaylistCertificationContext};
1
+ import{jsx as n}from"react/jsx-runtime";import{createContext as m,useContext as s}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{useCertificationDetails as p}from"../../../hooks/certifications/useCertificationDetails.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-router-dom";const i=m(void 0),a=()=>{const t=s(i);if(!t)throw new Error("useAPlaylistCertificationContext must be used within an PlaylistCertificationProvider");return t},c=t=>{const{children:r,entityRef:o}=t,e=p(o);return n(i.Provider,{value:e,children:r})};export{c as PlaylistCertificationProvider,a as usePlaylistCertificationContext};
2
2
  //# sourceMappingURL=PlaylistContext.esm.js.map
@@ -1,2 +1,2 @@
1
- import{LinearGauge as p}from"@backstage/core-components";import{makeStyles as f,useTheme as u,Typography as g}from"@material-ui/core";import i from"lodash";import t,{useMemo as k}from"react";import{ResultState as c}from"../../../graphql/generated/index.esm.js";import{LevelBadge as y}from"../../Badges/LevelBadge.esm.js";import{NoLevelBadge as x}from"../../Badges/NoLevelBadge.esm.js";import"../../Badges/CampaignBadge.esm.js";import{usePlaylistCertificationContext as h}from"./PlaylistContext.esm.js";const v=(s,a)=>{if(a)return a.filter(e=>s.trackIds.includes(e.track.id)).map(e=>{const o=i.sumBy(e.levels,l=>i.filter(l.checks,{result:c.Passed}).length),m=i.sumBy(e.levels,l=>i.reject(l.checks,{result:c.NotApplicable||c.Exempt}).length),r=m===0?0:o/m;return{id:e.track.id,name:e.track.name,checkPassRate:r}})},n=f(()=>({root:{margin:0,width:"250px"},trackItem:{display:"flex",flexDirection:"column",alignItems:"flex-start"},badgeAndName:{display:"flex",flexDirection:"row",alignItems:"center"},trackName:{marginLeft:"8px"}})),N=({playlist:s})=>{const a=n(),{data:e}=h(),o=u(),m=k(()=>v(s,e),[e,s]);return t.createElement("div",{className:a.root},m&&m.map(r=>{const l=e?.find(d=>d.track.id===r.id)?.track?.badge;return t.createElement("div",{className:a.trackItem,key:r.id},t.createElement("div",{className:a.badgeAndName},l?t.createElement(y,{badge:l}):t.createElement(x,null),t.createElement(g,{variant:"caption",color:"textSecondary",className:a.trackName},r.name)),t.createElement("div",{style:{width:"100%",marginBottom:"8px"}},t.createElement(p,{value:r.checkPassRate,getColor:()=>o.palette.status.ok})))}))};export{N as PlaylistProgress,n as useStyles};
1
+ import{jsx as i,jsxs as n}from"react/jsx-runtime";import{LinearGauge as f}from"@backstage/core-components";import{makeStyles as u,useTheme as g,Typography as k}from"@material-ui/core";import l from"lodash";import{useMemo as h}from"react";import{ResultState as c}from"../../../graphql/generated/index.esm.js";import{LevelBadge as x}from"../../Badges/LevelBadge.esm.js";import{NoLevelBadge as y}from"../../Badges/NoLevelBadge.esm.js";import"../../Badges/CampaignBadge.esm.js";import{usePlaylistCertificationContext as v}from"./PlaylistContext.esm.js";const N=(o,t)=>{if(t)return t.filter(e=>o.trackIds.includes(e.track.id)).map(e=>{const m=l.sumBy(e.levels,a=>l.filter(a.checks,{result:c.Passed}).length),s=l.sumBy(e.levels,a=>l.reject(a.checks,{result:c.NotApplicable||c.Exempt}).length),r=s===0?0:m/s;return{id:e.track.id,name:e.track.name,checkPassRate:r}})},d=u(()=>({root:{margin:0,width:"250px"},trackItem:{display:"flex",flexDirection:"column",alignItems:"flex-start"},badgeAndName:{display:"flex",flexDirection:"row",alignItems:"center"},trackName:{marginLeft:"8px"}})),P=({playlist:o})=>{const t=d(),{data:e}=v(),m=g(),s=h(()=>N(o,e),[e,o]);return i("div",{className:t.root,children:s&&s.map(r=>{const a=e?.find(p=>p.track.id===r.id)?.track?.badge;return n("div",{className:t.trackItem,children:[n("div",{className:t.badgeAndName,children:[a?i(x,{badge:a}):i(y,{}),i(k,{variant:"caption",color:"textSecondary",className:t.trackName,children:r.name})]}),i("div",{style:{width:"100%",marginBottom:"8px"},children:i(f,{value:r.checkPassRate,getColor:()=>m.palette.status.ok})})]},r.id)})})};export{P as PlaylistProgress,d as useStyles};
2
2
  //# sourceMappingURL=PlaylistProgress.esm.js.map
@@ -1,2 +1,2 @@
1
- import{MarkdownContent as i,Link as l}from"@backstage/core-components";import{makeStyles as m,Typography as c}from"@material-ui/core";import t from"react";import{PlaylistProgress as s}from"./PlaylistProgress.esm.js";const r=m(e=>({description:{padding:0,margin:0,display:"block","& p":{margin:0}},root:{padding:e.spacing(2),margin:0,display:"grid",gridTemplateColumns:"min-content auto",gridGap:e.spacing(2)},title:{fontSize:e.typography.pxToRem(18),fontWeight:700,lineHeight:1.235,marginBottom:"6px"},level:{textTransform:"uppercase",color:e.palette.text.secondary,fontWeight:700,letterSpacing:"1px"}}));function p({description:e,documentationUrl:n}){const o=r();return n?t.createElement("div",{className:o.description},t.createElement(i,{content:e}),t.createElement(l,{to:n},"Learn more")):t.createElement("div",{className:o.description},t.createElement(i,{content:e}))}const d=({playlist:e})=>{const n=r(),{name:o,description:a}=e;return t.createElement("div",{className:n.root},t.createElement(s,{playlist:e}),t.createElement("div",null,t.createElement(c,{className:n.title},o),a&&t.createElement(p,{description:a,documentationUrl:void 0})))};export{d as PlaylistSummary,r as useStyles};
1
+ import{jsxs as e,jsx as t}from"react/jsx-runtime";import{Link as s}from"@backstage/core-components";import{makeStyles as c,Typography as l}from"@material-ui/core";import{SoundcheckMarkdownContent as p}from"../../SoundcheckMarkdownContent/SoundcheckMarkdownContent.esm.js";import"react";import"react-markdown";import"rehype-raw";import"remark-gfm";import{PlaylistProgress as m}from"./PlaylistProgress.esm.js";const n=c(i=>({description:{padding:0,margin:0,display:"block","& p":{margin:0}},root:{padding:i.spacing(2),margin:0,display:"grid",gridTemplateColumns:"min-content auto",gridGap:i.spacing(2)},title:{fontSize:i.typography.pxToRem(18),fontWeight:700,lineHeight:1.235,marginBottom:"6px"},level:{textTransform:"uppercase",color:i.palette.text.secondary,fontWeight:700,letterSpacing:"1px"}}));function d({description:i,documentationUrl:o}){const r=n();return o?e("div",{className:r.description,children:[t(p,{content:i}),t(s,{to:o,children:"Learn more"})]}):t("div",{className:r.description,children:t(p,{content:i})})}const g=({playlist:i})=>{const o=n(),{name:r,description:a}=i;return e("div",{className:o.root,children:[t(m,{playlist:i}),e("div",{children:[t(l,{className:o.title,children:r}),a&&t(d,{description:a,documentationUrl:void 0})]})]})};export{g as PlaylistSummary,n as useStyles};
2
2
  //# sourceMappingURL=PlaylistSummary.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as n,Tab as p}from"@material-ui/core";import a from"react";import{Link as s}from"react-router-dom";import{PlaylistBadge as m}from"../Badges/PlaylistBadge.esm.js";const r=n(e=>({root:{maxWidth:"80ch",textTransform:"uppercase",paddingTop:e.spacing(2),paddingBottom:e.spacing(2)},wrapper:{display:"inline-block",textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden"},badge:{marginRight:e.spacing(1)}})),c=({id:e,name:o,href:i,selected:l=!1})=>{const t=r();return a.createElement(p,{className:t.root,classes:{wrapper:t.wrapper},value:e,label:a.createElement(a.Fragment,null,a.createElement(m,{className:t.badge}),o),component:s,to:i,selected:l})};export{c as PlaylistCertificationTab,r as useStyles};
1
+ import{jsx as r,jsxs as p,Fragment as l}from"react/jsx-runtime";import{makeStyles as n,Tab as m}from"@material-ui/core";import{Link as c}from"react-router-dom";import{PlaylistBadge as d}from"../Badges/PlaylistBadge.esm.js";const t=n(e=>({root:{maxWidth:"80ch",textTransform:"uppercase",paddingTop:e.spacing(2),paddingBottom:e.spacing(2)},wrapper:{display:"inline-block",textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden"},badge:{marginRight:e.spacing(1)}})),g=({id:e,name:o,href:i,selected:s=!1})=>{const a=t();return r(m,{className:a.root,classes:{wrapper:a.wrapper},value:e,label:p(l,{children:[r(d,{className:a.badge}),o]}),component:c,to:i,selected:s})};export{g as PlaylistCertificationTab,t as useStyles};
2
2
  //# sourceMappingURL=PlaylistCertificationTab.esm.js.map
@@ -1,2 +1,2 @@
1
- import{Tab as t}from"@material-ui/core";import{Skeleton as o}from"@material-ui/lab";import r from"react";import{useStyles as a}from"../CertificationTab.esm.js";const m=()=>{const e=a();return r.createElement(t,{className:e.root,classes:{wrapper:e.wrapper},label:r.createElement(o,{width:180})})};export{m as CertificationTabSkeleton};
1
+ import{jsx as r}from"react/jsx-runtime";import{Tab as t}from"@material-ui/core";import{Skeleton as e}from"@material-ui/lab";import{useStyles as s}from"../CertificationTab.esm.js";const a=()=>{const o=s();return r(t,{className:o.root,classes:{wrapper:o.wrapper},label:r(e,{width:180})})};export{a as CertificationTabSkeleton};
2
2
  //# sourceMappingURL=CertificationTabSkeleton.esm.js.map
@@ -1,2 +1,2 @@
1
- import{Tabs as r}from"@material-ui/core";import e from"react";import{FadeIn as l}from"../../FadeIn/FadeIn.esm.js";import{CertificationTabSkeleton as t}from"./CertificationTabSkeleton.esm.js";const o=()=>e.createElement(l,null,e.createElement(r,{value:!1,indicatorColor:"primary"},e.createElement(t,null),e.createElement(t,null),e.createElement(t,null)));export{o as CertificationTabsSkeleton};
1
+ import{jsx as o,jsxs as i}from"react/jsx-runtime";import{Tabs as t}from"@material-ui/core";import{FadeIn as e}from"../../FadeIn/FadeIn.esm.js";import{CertificationTabSkeleton as r}from"./CertificationTabSkeleton.esm.js";const a=()=>o(e,{children:i(t,{value:!1,indicatorColor:"primary",children:[o(r,{}),o(r,{}),o(r,{})]})});export{a as CertificationTabsSkeleton};
2
2
  //# sourceMappingURL=CertificationTabsSkeleton.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as _,useTheme as I}from"@material-ui/core";import a,{memo as g}from"react";import{BarChart as T,CartesianGrid as u,XAxis as S,YAxis as f,Tooltip as v,Legend as N,Bar as R,Cell as B}from"recharts";import{CARTESIAN_GRID_OPACITY as b,CHART_DATA_KEY as p,AXIS_DOMAIN as s,VERTICAL_Y_AXIS_WIDTH as L,HORIZONTAL_Y_AXIS_WIDTH as O,LEGEND_ICON_TYPE as k,LEGEND_ICON_SIZE as D}from"../ChartTypes.esm.js";import{getChartFontColor as i,getChartColors as H}from"../chartUtils.esm.js";import{ChartWrapper as K}from"../ChartWrapper/ChartWrapper.esm.js";import{BarChartPlaceholder as Y}from"./BarChartPlaceholder.esm.js";const z=_(e=>({legend:{color:i(e)}}));var d=(e=>(e.Horizontal="horizontal",e.Vertical="vertical",e))(d||{});const y=20,E=50;var C=(e=>(e.Category="category",e.Number="number",e))(C||{});const h={dataKey:"passRate",name:"Pass rate"},Z=g(({data:e,layout:l})=>{const t=l==="vertical",o=I(),n=H(o),c=i(o),A=z();return e.length?a.createElement(K,{"aria-label":"Bar chart representing data points."},a.createElement(T,{data:e,layout:l},a.createElement(u,{vertical:t,horizontal:!t,opacity:b}),a.createElement(S,{dataKey:t?void 0:p,type:t?"number":"category",domain:t?s:void 0,stroke:c}),a.createElement(f,{width:t?L:O,dataKey:t?p:void 0,type:t?"category":"number",domain:t?void 0:s,stroke:c}),a.createElement(v,{contentStyle:{backgroundColor:o.palette.background.paper},itemStyle:{color:i(o)},cursor:{fill:"transparent"}}),a.createElement(N,{iconType:k,iconSize:D,formatter:r=>a.createElement("span",{className:A.legend},r),payload:e.map(({name:r},m)=>({id:r,value:r,color:n[m%n.length]}))}),a.createElement(R,{barSize:t?y:E,dataKey:h.dataKey,name:h.name},e.map(({name:r},m)=>a.createElement(B,{key:r,fill:n[m%n.length]}))))):a.createElement(Y,{layout:l,theme:o})});export{C as AxisType,Z as BarChart,d as BarChartLayout,E as HORIZONTAL_BAR_SIZE,y as VERTICAL_BAR_SIZE};
1
+ import{jsx as t,jsxs as I}from"react/jsx-runtime";import{makeStyles as g,useTheme as T}from"@material-ui/core";import{memo as u}from"react";import{BarChart as E,CartesianGrid as S,XAxis as f,YAxis as v,Tooltip as N,Legend as R,Bar as B,Cell as L}from"recharts";import{CARTESIAN_GRID_OPACITY as b,CHART_DATA_KEY as d,AXIS_DOMAIN as p,VERTICAL_Y_AXIS_WIDTH as O,HORIZONTAL_Y_AXIS_WIDTH as D,LEGEND_ICON_TYPE as x,LEGEND_ICON_SIZE as H}from"../ChartTypes.esm.js";import{getChartFontColor as m,getChartColors as K}from"../chartUtils.esm.js";import{ChartWrapper as Y}from"../ChartWrapper/ChartWrapper.esm.js";import{BarChartPlaceholder as k}from"./BarChartPlaceholder.esm.js";const z=g(a=>({legend:{color:m(a)}}));var s=(a=>(a.Horizontal="horizontal",a.Vertical="vertical",a))(s||{});const h=20,y=50;var C=(a=>(a.Category="category",a.Number="number",a))(C||{});const A={dataKey:"passRate",name:"Pass rate"},Z=u(({data:a,layout:l})=>{const r=l==="vertical",o=T(),n=K(o),c=m(o),_=z();return a.length?t(Y,{"aria-label":"Bar chart representing data points.",children:I(E,{data:a,layout:l,children:[t(S,{vertical:r,horizontal:!r,opacity:b}),t(f,{dataKey:r?void 0:d,type:r?"number":"category",domain:r?p:void 0,stroke:c}),t(v,{width:r?O:D,dataKey:r?d:void 0,type:r?"category":"number",domain:r?void 0:p,stroke:c}),t(N,{contentStyle:{backgroundColor:o.palette.background.paper},itemStyle:{color:m(o)},cursor:{fill:"transparent"}}),t(R,{iconType:x,iconSize:H,formatter:e=>t("span",{className:_.legend,children:e}),payload:a.map(({name:e},i)=>({id:e,value:e,color:n[i%n.length]}))}),t(B,{barSize:r?h:y,dataKey:A.dataKey,name:A.name,children:a.map(({name:e},i)=>t(L,{fill:n[i%n.length]},e))})]})}):t(k,{layout:l,theme:o})});export{C as AxisType,Z as BarChart,s as BarChartLayout,y as HORIZONTAL_BAR_SIZE,h as VERTICAL_BAR_SIZE};
2
2
  //# sourceMappingURL=BarChart.esm.js.map
@@ -1,2 +1,2 @@
1
- import{Typography as d}from"@material-ui/core";import{makeStyles as s}from"@material-ui/core/styles";import t from"react";import{BarChart as c,CartesianGrid as y,XAxis as p,YAxis as A,Bar as x}from"recharts";import{CARTESIAN_GRID_OPACITY as h,AXIS_DOMAIN as i,VERTICAL_Y_AXIS_WIDTH as C,HORIZONTAL_Y_AXIS_WIDTH as I}from"../ChartTypes.esm.js";import{ChartWrapper as f}from"../ChartWrapper/ChartWrapper.esm.js";import{BarChartLayout as E,AxisType as r,VERTICAL_BAR_SIZE as _,HORIZONTAL_BAR_SIZE as g}from"./BarChart.esm.js";const u=s(a=>({container:{position:"relative"},chartMessage:{position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",fontWeight:"bold",backgroundColor:a.palette.background.default,padding:a.spacing(1),borderRadius:"5px",textAlign:"center",width:"50%",zIndex:2}})),T=({layout:a,theme:n})=>{const e=a===E.Vertical,l=[{x:"A",y:25},{x:"B",y:50},{x:"C",y:75}],m=[{x:"A",y:100},{x:"B",y:90},{x:"C",y:80},{x:"C",y:70},{x:"C",y:60}],o=u();return t.createElement("div",{className:o.container},t.createElement(f,null,t.createElement(c,{data:e?m:l,margin:{left:0},layout:a},t.createElement(y,{strokeDasharray:"3 3",vertical:e,horizontal:!e,opacity:h}),t.createElement(p,{dataKey:e?void 0:"x",type:e?r.Number:r.Category,domain:e?i:void 0,hide:!0}),t.createElement(A,{width:e?C:I,dataKey:e?"x":void 0,type:e?r.Category:r.Number,domain:e?void 0:i,hide:!0}),t.createElement(x,{dataKey:"y",fill:n.palette.divider,barSize:e?_:g}))),t.createElement(d,{className:o.chartMessage},"No Data"))};export{T as BarChartPlaceholder};
1
+ import{jsxs as i,jsx as r}from"react/jsx-runtime";import{Typography as y}from"@material-ui/core";import{makeStyles as m}from"@material-ui/core/styles";import{BarChart as p,CartesianGrid as c,XAxis as h,YAxis as x,Bar as A}from"recharts";import{CARTESIAN_GRID_OPACITY as C,AXIS_DOMAIN as d,VERTICAL_Y_AXIS_WIDTH as I,HORIZONTAL_Y_AXIS_WIDTH as _}from"../ChartTypes.esm.js";import{ChartWrapper as f}from"../ChartWrapper/ChartWrapper.esm.js";import{BarChartLayout as g,AxisType as e,VERTICAL_BAR_SIZE as u,HORIZONTAL_BAR_SIZE as T}from"./BarChart.esm.js";const N=m(t=>({container:{position:"relative"},chartMessage:{position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",fontWeight:"bold",backgroundColor:t.palette.background.default,padding:t.spacing(1),borderRadius:"5px",textAlign:"center",width:"50%",zIndex:2}})),R=({layout:t,theme:n})=>{const a=t===g.Vertical,l=[{x:"A",y:25},{x:"B",y:50},{x:"C",y:75}],s=[{x:"A",y:100},{x:"B",y:90},{x:"C",y:80},{x:"C",y:70},{x:"C",y:60}],o=N();return i("div",{className:o.container,children:[r(f,{children:i(p,{data:a?s:l,margin:{left:0},layout:t,children:[r(c,{strokeDasharray:"3 3",vertical:a,horizontal:!a,opacity:C}),r(h,{dataKey:a?void 0:"x",type:a?e.Number:e.Category,domain:a?d:void 0,hide:!0}),r(x,{width:a?I:_,dataKey:a?"x":void 0,type:a?e.Category:e.Number,domain:a?void 0:d,hide:!0}),r(A,{dataKey:"y",fill:n.palette.divider,barSize:a?u:T})]})}),r(y,{className:o.chartMessage,children:"No Data"})]})};export{R as BarChartPlaceholder};
2
2
  //# sourceMappingURL=BarChartPlaceholder.esm.js.map
@@ -1,2 +1,2 @@
1
- import{parseEntityRef as o}from"@backstage/catalog-model";import n from"react";import{useSummaryAggregationsContext as p}from"../../TechHealthSummary/SummaryAggregationsProvider.esm.js";import{BarChart as m,BarChartLayout as i}from"./BarChart.esm.js";const u=t=>t?.map(({node:a})=>{const{id:r,groupTitle:s,snapshotPassRate:e}=a;return{name:s??o(r).name,passRate:e}})??[],d=()=>{const{groupPassRatesOverviewTrends:{data:t}}=p(),a=t?.groupPassRates?.edges?.sort((s,e)=>e.node.snapshotPassRate-s.node.snapshotPassRate),r=u(a);return n.createElement(m,{data:r,layout:i.Vertical})};export{d as GroupPassRateHistoryBarChart};
1
+ import{jsx as e}from"react/jsx-runtime";import{parseEntityRef as n}from"@backstage/catalog-model";import{useSummaryAggregationsContext as p}from"../../TechHealthSummary/SummaryAggregationsProvider.esm.js";import{BarChart as m,BarChartLayout as i}from"./BarChart.esm.js";const u=t=>t?.map(({node:a})=>{const{id:s,groupTitle:r,snapshotPassRate:o}=a;return{name:r??n(s).name,passRate:o}})??[],d=()=>{const{groupPassRatesOverviewTrends:{data:t}}=p(),a=t?.groupPassRates?.edges?.sort((r,o)=>o.node.snapshotPassRate-r.node.snapshotPassRate),s=u(a);return e(m,{data:s,layout:i.Vertical})};export{d as GroupPassRateHistoryBarChart};
2
2
  //# sourceMappingURL=GroupPassRateHistoryBarChart.esm.js.map
@@ -1,2 +1,2 @@
1
- import{Typography as o}from"@material-ui/core";import e from"react";import{useSummaryAggregationsContext as s}from"../../TechHealthSummary/SummaryAggregationsProvider.esm.js";import{BarChart as m,BarChartLayout as n}from"./BarChart.esm.js";const l=r=>r?.overallTrackPassRate?.map(({levelOrdinal:a,snapshotPassRate:t})=>({name:`Level ${a}`,passRate:t}))??[],c=()=>{const{trackPassRateOverviewTrend:{data:r,isError:a}}=s();if(a)return e.createElement(o,{color:"error"},"Failed to load track data.");const t=l(r);return e.createElement(m,{data:t,layout:n.Horizontal})};export{c as TrackSummaryBarChart};
1
+ import{jsx as o}from"react/jsx-runtime";import{Typography as e}from"@material-ui/core";import{useSummaryAggregationsContext as s}from"../../TechHealthSummary/SummaryAggregationsProvider.esm.js";import{BarChart as m,BarChartLayout as n}from"./BarChart.esm.js";const i=r=>r?.overallTrackPassRate?.map(({levelOrdinal:a,snapshotPassRate:t})=>({name:`Level ${a}`,passRate:t}))??[],l=()=>{const{trackPassRateOverviewTrend:{data:r,isError:a}}=s();if(a)return o(e,{color:"error",children:"Failed to load track data."});const t=i(r);return o(m,{data:t,layout:n.Horizontal})};export{l as TrackSummaryBarChart};
2
2
  //# sourceMappingURL=TrackSummaryBarChart.esm.js.map
@@ -1,2 +1,2 @@
1
- import t from"react";import{ResponsiveContainer as o}from"recharts";import{MIN_CHART_HEIGHT as i}from"../ChartTypes.esm.js";const m=({children:r,height:e})=>t.createElement(o,{height:e,minHeight:e??i,debounce:1},r);export{m as ChartWrapper};
1
+ import{jsx as i}from"react/jsx-runtime";import{ResponsiveContainer as o}from"recharts";import{MIN_CHART_HEIGHT as t}from"../ChartTypes.esm.js";const h=({children:e,height:r})=>i(o,{height:r,minHeight:r??t,debounce:1,children:e});export{h as ChartWrapper};
2
2
  //# sourceMappingURL=ChartWrapper.esm.js.map
@@ -1,2 +1,2 @@
1
- import{parseEntityRef as c}from"@backstage/catalog-model";import{DateTime as d}from"luxon";import f from"react";import{useSummaryAggregationsContext as l}from"../../TechHealthSummary/SummaryAggregationsProvider.esm.js";import{formatDate as u}from"../chartUtils.esm.js";import{LineChart as y}from"./LineChart.esm.js";const R=t=>{const e=t?.overallEntityPassRates||[];if(!e.length)return[];const a=d.utc();return e.reduce((r,{trendPassRates:o,id:i},p)=>{const m=o?.map((n,s)=>({name:u(a,o.length-s-1),[i]:n}))??[];return p===0?m:r.map((n,s)=>({...n,...m[s]}))},[])},g=()=>{const{entityPassRatesOverviewTrends:{data:t}}=l(),e=t?.overallEntityPassRates?.map(({id:r})=>({dataKey:r,name:c(r).name}))??[],a=R(t);return f.createElement(y,{data:a,lines:e})};export{g as EntityPassRateHistoryLineChart};
1
+ import{jsx as f}from"react/jsx-runtime";import{parseEntityRef as c}from"@backstage/catalog-model";import{DateTime as d}from"luxon";import{useSummaryAggregationsContext as u}from"../../TechHealthSummary/SummaryAggregationsProvider.esm.js";import{formatDate as y}from"../chartUtils.esm.js";import{LineChart as l}from"./LineChart.esm.js";const P=t=>{const r=t?.overallEntityPassRates||[];if(!r.length)return[];const a=d.utc();return r.reduce((e,{trendPassRates:o,id:i},p)=>{const m=o?.map((s,n)=>({name:y(a,o.length-n-1),[i]:s}))??[];return p===0?m:e.map((s,n)=>({...s,...m[n]}))},[])},R=()=>{const{entityPassRatesOverviewTrends:{data:t}}=u(),r=t?.overallEntityPassRates?.map(({id:e})=>({dataKey:e,name:c(e).name}))??[],a=P(t);return f(l,{data:a,lines:r})};export{R as EntityPassRateHistoryLineChart};
2
2
  //# sourceMappingURL=EntityPassRateHistoryLineChart.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as p,useTheme as s}from"@material-ui/core";import e from"react";import{LineChart as h,CartesianGrid as C,XAxis as d,YAxis as _,Tooltip as T,Legend as A,Line as I}from"recharts";import{CARTESIAN_GRID_OPACITY as g,CHART_DATA_KEY as y,HORIZONTAL_Y_AXIS_WIDTH as L,AXIS_DOMAIN as N,TOOLTIP_Y_OFFSET as O,LEGEND_ICON_TYPE as f,LEGEND_ICON_SIZE as k,LINE_CHART_TYPE as S}from"../ChartTypes.esm.js";import{getChartFontColor as i,getChartColors as Y}from"../chartUtils.esm.js";import{ChartWrapper as D}from"../ChartWrapper/ChartWrapper.esm.js";import{LineChartPlaceholder as u}from"./LineChartPlaceholder.esm.js";const K=p(r=>({legend:{color:i(r)}})),P=({data:r,lines:o,height:l})=>{const a=s(),n=Y(a),m=i(a),c=K();return r.length?e.createElement(D,{height:l},e.createElement(h,{data:r},e.createElement(C,{vertical:!1,opacity:g}),e.createElement(d,{dataKey:y,stroke:m}),e.createElement(_,{width:L,domain:N,stroke:m}),e.createElement(T,{position:{y:O},contentStyle:{backgroundColor:a.palette.background.paper}}),o.length>1&&e.createElement(A,{iconType:f,iconSize:k,formatter:t=>e.createElement("span",{className:c.legend},t)}),o.map((t,E)=>e.createElement(I,{key:t.dataKey,dataKey:t.dataKey,stroke:n[E%n.length],strokeWidth:2,dot:!1,name:t.name,type:S})))):e.createElement(u,null)};export{P as LineChart};
1
+ import{jsx as t,jsxs as d}from"react/jsx-runtime";import{makeStyles as p,useTheme as C}from"@material-ui/core";import{LineChart as c,CartesianGrid as _,XAxis as T,YAxis as A,Tooltip as I,Legend as g,Line as E}from"recharts";import{CARTESIAN_GRID_OPACITY as L,CHART_DATA_KEY as y,HORIZONTAL_Y_AXIS_WIDTH as N,AXIS_DOMAIN as O,TOOLTIP_Y_OFFSET as f,LEGEND_ICON_TYPE as S,LEGEND_ICON_SIZE as k,LINE_CHART_TYPE as Y}from"../ChartTypes.esm.js";import{getChartFontColor as m,getChartColors as D}from"../chartUtils.esm.js";import{ChartWrapper as u}from"../ChartWrapper/ChartWrapper.esm.js";import{LineChartPlaceholder as x}from"./LineChartPlaceholder.esm.js";const K=p(r=>({legend:{color:m(r)}})),P=({data:r,lines:a,height:s})=>{const o=C(),i=D(o),n=m(o),h=K();return r.length?t(u,{height:s,children:d(c,{data:r,children:[t(_,{vertical:!1,opacity:L}),t(T,{dataKey:y,stroke:n}),t(A,{width:N,domain:O,stroke:n}),t(I,{position:{y:f},contentStyle:{backgroundColor:o.palette.background.paper}}),a.length>1&&t(g,{iconType:S,iconSize:k,formatter:e=>t("span",{className:h.legend,children:e})}),a.map((e,l)=>t(E,{dataKey:e.dataKey,stroke:i[l%i.length],strokeWidth:2,dot:!1,name:e.name,type:Y},e.dataKey))]})}):t(x,{})};export{P as LineChart};
2
2
  //# sourceMappingURL=LineChart.esm.js.map
@@ -1,2 +1,2 @@
1
- import{Typography as n}from"@material-ui/core";import{makeStyles as i}from"@material-ui/core/styles";import e from"react";import{LineChart as c,CartesianGrid as s,XAxis as m,YAxis as l,Line as d}from"recharts";import{CARTESIAN_GRID_OPACITY as p,AXIS_DOMAIN as h}from"../ChartTypes.esm.js";import{ChartWrapper as g}from"../ChartWrapper/ChartWrapper.esm.js";const y=i(t=>({container:{position:"relative"},chartMessage:{position:"absolute",top:"50%",left:"50%",fontWeight:"bold",transform:"translate(-50%, -50%)",backgroundColor:t.palette.background.default,padding:t.spacing(1),borderRadius:"5px",textAlign:"center",width:"50%",zIndex:2}})),x=({height:t,text:r})=>{const o=[{x:"A",y:0},{x:"B",y:50},{x:"C",y:100}],a=y();return e.createElement("div",{className:a.container},e.createElement(g,{height:t},e.createElement(c,{data:o},e.createElement(s,{strokeDasharray:"3 3",vertical:!1,opacity:p}),e.createElement(m,{dataKey:"x",stroke:"#ccc",hide:!0}),e.createElement(l,{domain:h,stroke:"#ccc",hide:!0}),e.createElement(d,{type:"monotone",dataKey:"y",stroke:"#ccc",dot:!1}))),e.createElement(n,{className:a.chartMessage},r??"No Data"))};export{x as LineChartPlaceholder};
1
+ import{jsxs as o,jsx as t}from"react/jsx-runtime";import{Typography as n}from"@material-ui/core";import{makeStyles as s}from"@material-ui/core/styles";import{LineChart as c,CartesianGrid as d,XAxis as h,YAxis as p,Line as l}from"recharts";import{CARTESIAN_GRID_OPACITY as m,AXIS_DOMAIN as x}from"../ChartTypes.esm.js";import{ChartWrapper as y}from"../ChartWrapper/ChartWrapper.esm.js";const g=s(e=>({container:{position:"relative"},chartMessage:{position:"absolute",top:"50%",left:"50%",fontWeight:"bold",transform:"translate(-50%, -50%)",backgroundColor:e.palette.background.default,padding:e.spacing(1),borderRadius:"5px",textAlign:"center",width:"50%",zIndex:2}})),f=({height:e,text:a})=>{const i=[{x:"A",y:0},{x:"B",y:50},{x:"C",y:100}],r=g();return o("div",{className:r.container,children:[t(y,{height:e,children:o(c,{data:i,children:[t(d,{strokeDasharray:"3 3",vertical:!1,opacity:m}),t(h,{dataKey:"x",stroke:"#ccc",hide:!0}),t(p,{domain:x,stroke:"#ccc",hide:!0}),t(l,{type:"monotone",dataKey:"y",stroke:"#ccc",dot:!1})]})}),t(n,{className:r.chartMessage,children:a??"No Data"})]})};export{f as LineChartPlaceholder};
2
2
  //# sourceMappingURL=LineChartPlaceholder.esm.js.map
@@ -1,2 +1,2 @@
1
- import e from"react";import{LineChart as n}from"./LineChart.esm.js";import{TableLineChart as s}from"./TableLineChart.esm.js";const o=({chartData:a,tableChart:r})=>{const t=[{dataKey:"passRate",name:"Pass rate"}];return r?e.createElement(s,{data:a,lines:t}):e.createElement(n,{data:a,lines:t})};export{o as PassRateHistoryLineChart};
1
+ import{jsx as r}from"react/jsx-runtime";import{LineChart as s}from"./LineChart.esm.js";import{TableLineChart as o}from"./TableLineChart.esm.js";const i=({chartData:t,tableChart:e})=>{const a=[{dataKey:"passRate",name:"Pass rate"}];return e?r(o,{data:t,lines:a}):r(s,{data:t,lines:a})};export{i as PassRateHistoryLineChart};
2
2
  //# sourceMappingURL=PassRateHistoryLineChart.esm.js.map
@@ -1,2 +1,2 @@
1
- import{useTheme as n}from"@material-ui/core";import e from"react";import{ResponsiveContainer as d,LineChart as h,XAxis as s,YAxis as l,Line as p}from"recharts";import{CHART_DATA_KEY as A,AXIS_DOMAIN as E,LINE_CHART_TYPE as c}from"../ChartTypes.esm.js";import{getChartColors as C}from"../chartUtils.esm.js";const y=({data:r,lines:o})=>{const m=n(),a=C(m);return e.createElement(d,{height:50,width:100},e.createElement(h,{data:r},e.createElement(s,{hide:!0,dataKey:A}),e.createElement(l,{width:0,domain:E}),o.map((t,i)=>e.createElement(p,{key:t.dataKey,dataKey:t.dataKey,stroke:a[i%a.length],strokeWidth:2,dot:!1,name:t.name,type:c}))))};export{y as TableLineChart};
1
+ import{jsx as t,jsxs as m}from"react/jsx-runtime";import{useTheme as d}from"@material-ui/core";import{ResponsiveContainer as s,LineChart as h,XAxis as p,YAxis as A,Line as C}from"recharts";import{CHART_DATA_KEY as l,AXIS_DOMAIN as T,LINE_CHART_TYPE as f}from"../ChartTypes.esm.js";import{getChartColors as x}from"../chartUtils.esm.js";const y=({data:i,lines:r})=>{const o=d(),a=x(o);return t(s,{height:50,width:100,children:m(h,{data:i,children:[t(p,{hide:!0,dataKey:l}),t(A,{width:0,domain:T}),r.map((e,n)=>t(C,{dataKey:e.dataKey,stroke:a[n%a.length],strokeWidth:2,dot:!1,name:e.name,type:f},e.dataKey))]})})};export{y as TableLineChart};
2
2
  //# sourceMappingURL=TableLineChart.esm.js.map
@@ -1,2 +1,2 @@
1
- import{Typography as d}from"@material-ui/core";import{DateTime as f}from"luxon";import l from"react";import{useSummaryAggregationsContext as u}from"../../TechHealthSummary/SummaryAggregationsProvider.esm.js";import{formatDate as v}from"../chartUtils.esm.js";import{LineChart as g}from"./LineChart.esm.js";const i=r=>{const t=r?.overallTrackPassRate||[];if(!t.length)return[];const a=f.utc();return t.reduce((o,{trendPassRates:e,levelOrdinal:c},p)=>{const s=e?.map((n,m)=>({name:v(a,e.length-m-1),[`Level${c}`]:n}))??[];return p===0?s:o.map((n,m)=>({...n,...s[m]}))},[])},h=()=>{const{trackPassRateOverviewTrend:{data:r,isError:t}}=u();if(t)return l.createElement(d,{color:"error"},"Failed to load track data.");const a=i(r),o=r?.overallTrackPassRate?.map(({levelOrdinal:e})=>({dataKey:`Level${e}`,name:`Level ${e}`}))??[];return l.createElement(g,{data:a,lines:o})};export{h as TrackPassRateHistoryLineChart,i as formatLineChartData};
1
+ import{jsx as i}from"react/jsx-runtime";import{Typography as p}from"@material-ui/core";import{DateTime as f}from"luxon";import{useSummaryAggregationsContext as u}from"../../TechHealthSummary/SummaryAggregationsProvider.esm.js";import{formatDate as v}from"../chartUtils.esm.js";import{LineChart as h}from"./LineChart.esm.js";const l=e=>{const t=e?.overallTrackPassRate||[];if(!t.length)return[];const a=f.utc();return t.reduce((o,{trendPassRates:r,levelOrdinal:c},d)=>{const m=r?.map((n,s)=>({name:v(a,r.length-s-1),[`Level${c}`]:n}))??[];return d===0?m:o.map((n,s)=>({...n,...m[s]}))},[])},g=()=>{const{trackPassRateOverviewTrend:{data:e,isError:t}}=u();if(t)return i(p,{color:"error",children:"Failed to load track data."});const a=l(e),o=e?.overallTrackPassRate?.map(({levelOrdinal:r})=>({dataKey:`Level${r}`,name:`Level ${r}`}))??[];return i(h,{data:a,lines:o})};export{g as TrackPassRateHistoryLineChart,l as formatLineChartData};
2
2
  //# sourceMappingURL=TrackPassRateHistoryLineChart.esm.js.map
@@ -0,0 +1,2 @@
1
+ import{jsx as t,jsxs as o}from"react/jsx-runtime";import{useTheme as v,Typography as h}from"@material-ui/core";import b from"@material-ui/icons/Timer";import{useState as y,useEffect as C}from"react";import{ResponsiveContainer as L,CartesianGrid as $,XAxis as A,YAxis as I,Area as E,Line as W,AreaChart as z,LineChart as O}from"recharts";import{ChartWrapper as S}from"./ChartWrapper/ChartWrapper.esm.js";const j=({type:r="area",numLines:a=3,height:l=250})=>{const e=v(),[m,d]=y([]),[x,f]=y(0);C(()=>{const n=()=>Array.from({length:7},(p,k)=>{const c={name:`Day ${k+1}`,totalEntities:1e3};for(let s=1;s<=a;s++)c[`Line ${s}`]=r==="area"?Math.random()*(100/a):Math.random()*100;return c});d(n());const i=setInterval(()=>{d(n())},1500),u=setInterval(()=>{f(p=>p+1)},1e3);return()=>{clearInterval(i),clearInterval(u)}},[a,r]);const g=r==="area"?z:O;return t(S,{children:o("div",{style:{height:l,width:"100%",position:"relative",borderRadius:"4px"},children:[t("div",{style:{position:"absolute",top:0,left:0,right:0,bottom:0,boxShadow:`inset 0 0 70px 100px ${e.palette.background.default}`,borderRadius:"4px",pointerEvents:"none",zIndex:1}}),t(L,{height:l,debounce:1,children:o(g,{data:m,margin:{top:0,right:0,bottom:0,left:0},children:[t("defs",{children:Array.from({length:a},(n,i)=>o("linearGradient",{id:`gradient-${i+1}`,x1:"0",y1:"0",x2:"0",y2:"1",children:[t("stop",{offset:"5%",stopColor:e.palette.text.secondary,stopOpacity:.4}),t("stop",{offset:"95%",stopColor:e.palette.text.secondary,stopOpacity:0})]},`gradient-${i+1}`))}),t($,{stroke:e.palette.divider,strokeWidth:1,horizontal:!0,vertical:!1}),t(A,{dataKey:"name",tickLine:!1,axisLine:!1,tick:{fill:e.palette.text.secondary}}),t(I,{tickLine:!1,axisLine:!1,tick:{fill:e.palette.text.secondary}}),Array.from({length:a},(n,i)=>r==="area"?t(E,{type:"monotone",dataKey:`Line ${i+1}`,stackId:"1",stroke:e.palette.text.secondary,strokeWidth:2,strokeOpacity:.3,fill:`url(#gradient-${i+1})`,animationDuration:1200,animationEasing:"ease-in-out",dot:!1},`line-${i+1}`):t(W,{type:"monotone",dataKey:`Line ${i+1}`,stroke:e.palette.text.secondary,strokeWidth:2,strokeOpacity:.3,animationDuration:1200,animationEasing:"ease-in-out",dot:!1},`line-${i+1}`))]})}),o("div",{style:{position:"absolute",top:"16px",left:"50%",transform:"translateX(-50%)",textAlign:"center",width:"100%",padding:"8px 0",zIndex:2},children:[t(h,{variant:"subtitle1",style:{color:e.palette.text.secondary,fontWeight:500,letterSpacing:"0.5px"},children:"Calculating..."}),o(h,{variant:"subtitle1",style:{color:e.palette.text.secondary,opacity:.8,display:"flex",alignItems:"center",justifyContent:"center",gap:"4px"},children:[t(b,{style:{fontSize:16}}),x,"s"]})]})]})})};export{j as LoadingChart};
2
+ //# sourceMappingURL=LoadingChart.esm.js.map
@@ -1,2 +1,2 @@
1
- const n=["#59A0F6","#95C90D","#FFA42C","#C87DFF","#7358FF","#F036A4"],C=["#59A0F6","#1BB552","#FFA42C","#C87DFF","#7358FF","#F036A4"];var F=(e=>(e.RED="red",e.GREEN="green",e))(F||{});const a={red:"#FF4834",green:"#1BB552"},d={red:"#FF001A",green:"#1CD760"},o=e=>e?e.palette.type:"",t=e=>o(e).toLowerCase()==="dark",g=e=>t(e)?e.palette.grey[200]:e.palette.grey[800],s=e=>t(e)?C:n;function l(e,r){return(r?e.minus({days:r}):e).toFormat("MMM dd")}const A=(e,r)=>t(e)?d[r]:a[r];export{F as TrendLineColor,l as formatDate,s as getChartColors,g as getChartFontColor,o as getThemeType,A as getTrendLineColor,t as isDarkTheme};
1
+ const n=["#59A0F6","#95C90D","#FFA42C","#C87DFF","#7358FF","#F036A4"],C=["#3B82F6","#10B981","#8B5CF6","#F59E0B","#6B7280","#06B6D4","#EC4899","#84CC16","#D946EF"];var o=(e=>(e.RED="red",e.GREEN="green",e))(o||{});const a={red:"#FF4834",green:"#1BB552"},d={red:"#FF001A",green:"#1CD760"},F=e=>e?e.palette.type:"",t=e=>F(e).toLowerCase()==="dark",g=e=>t(e)?e.palette.grey[200]:e.palette.grey[800],s=e=>t(e)?C:n;function B(e,r){return(r?e.minus({days:r}):e).toFormat("MMM dd")}const D=(e,r)=>t(e)?d[r]:a[r];export{o as TrendLineColor,B as formatDate,s as getChartColors,g as getChartFontColor,F as getThemeType,D as getTrendLineColor,t as isDarkTheme};
2
2
  //# sourceMappingURL=chartUtils.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as w,useTheme as v,Box as n,Paper as k,Typography as b,Tooltip as D}from"@material-ui/core";import u from"@material-ui/lab/Skeleton";import{DateTime as R}from"luxon";import t from"react";import{CircularProgressbar as $,buildStyles as B}from"react-circular-progressbar";import{getChartFontColor as x,formatDate as P}from"../Charts/chartUtils.esm.js";import{getApplicableCheckCount as d}from"../TrackPage/TrackEntitiesTable/utils.esm.js";import{getProgressColor as g}from"../TrackPage/utils.esm.js";import{CheckHistoryChart as T}from"./CheckHistoryChart.esm.js";import{getCheckName as W}from"./utils.esm.js";const y=w(e=>({card:{display:"flex",flexDirection:"column",border:`1px solid ${e.palette.divider}`,width:"99%"},title:{fontWeight:"bold",fontSize:"0.9rem",cursor:"default",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},headerRow:{display:"flex",padding:e.spacing(1.5,2),borderBottom:`1px solid ${e.palette.divider}`,width:"100%"},headerSection:{display:"flex",flexDirection:"column",gap:e.spacing(.5),flexGrow:1,width:"100%"},contentRow:{padding:e.spacing(1.5,2,.5),display:"flex"},leftSection:{width:"75px",minWidth:"75px"},summaryCard:{height:"100%",display:"flex",flexDirection:"column",justifyContent:"space-between"},chartSection:{flex:1,width:"100%",minWidth:"150px"},chartSkeletonSection:{flex:1,width:"100%",minWidth:"150px",padding:e.spacing(0,0,1,1)},overallSummaryBox:{display:"flex",flexDirection:"column",height:"100%",color:x(e),textAlign:"center",gap:e.spacing(2)}})),z=()=>{const e=y();return t.createElement(n,{className:e.contentRow},t.createElement(n,{className:e.leftSection},t.createElement(n,{className:e.summaryCard},t.createElement(u,{variant:"circle",height:75}))),t.createElement(n,{className:e.chartSkeletonSection},t.createElement(u,{variant:"rect",height:92})))};function A(e){if(!e)return[];const{history:i}=e,a=R.utc();return i.map((r,o)=>{const l=d(r);return{name:P(a,i.length-o-1),passRate:l?Math.round(r.passed/l*100):0}})}function M(e){if(!e)return 0;const{passed:i,exempt:a}=e,r=d(e);return r?Math.round((i+a)/r*100):0}function j(e){if(!e)return{numerator:0,denominator:0};const{passed:i,exempt:a}=e,r=d(e);return{numerator:i+a,denominator:r}}const F=({check:e,track:i,status:a,history:r})=>{const o=y(),l=v(),E={dataKey:"passRate",name:"Pass rate"},C=r?.history?.length??0,S=A(r),c=M(a);let m;a?m=`${c}%`:m="No Data";let p=!1,s;if(!a)s="No Data";else{const{numerator:N,denominator:f}=j(a);f>0?(p=!0,s=`${N} of ${f} entities passing`):s="No Applicable Entities"}const h=p?t.createElement(n,{className:o.overallSummaryBox},t.createElement($,{value:c,text:m,styles:B({textColor:x(l),pathColor:g(l,c),trailColor:l.palette.divider,textSize:C?void 0:10})})):null;return t.createElement(k,{className:o.card,elevation:0},t.createElement(n,{className:o.headerRow},t.createElement(n,{className:o.headerSection},t.createElement(b,{className:o.title},W(i,e)))),!a||!r?t.createElement(z,null):t.createElement(D,{title:s},t.createElement(n,{className:o.contentRow},h&&t.createElement(n,{className:o.leftSection},t.createElement(n,{className:o.summaryCard},h)),t.createElement(n,{className:o.chartSection},t.createElement(T,{data:p?S:[],lineConfig:E,color:g(l,c)})))))};export{F as CheckCard};
1
+ import{jsx as t,jsxs as p}from"react/jsx-runtime";import{makeStyles as b,useTheme as v,Box as a,Paper as k,Typography as D,Tooltip as R}from"@material-ui/core";import u from"@material-ui/lab/Skeleton";import{DateTime as A}from"luxon";import{CircularProgressbar as $,buildStyles as B}from"react-circular-progressbar";import{getChartFontColor as x,formatDate as O}from"../Charts/chartUtils.esm.js";import{getApplicableCheckCount as P}from"../TrackPage/TrackEntitiesTable/utils.esm.js";import{getProgressColor as g}from"../TrackPage/utils.esm.js";import{CheckHistoryChart as T}from"./CheckHistoryChart.esm.js";import{getCheckName as W}from"./utils.esm.js";const y=b(e=>({card:{display:"flex",flexDirection:"column",border:`1px solid ${e.palette.divider}`,width:"99%"},title:{fontWeight:"bold",fontSize:"0.9rem",cursor:"default",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},headerRow:{display:"flex",padding:e.spacing(1.5,2),borderBottom:`1px solid ${e.palette.divider}`,width:"100%"},headerSection:{display:"flex",flexDirection:"column",gap:e.spacing(.5),flexGrow:1,width:"100%"},contentRow:{padding:e.spacing(1.5,2,.5),display:"flex"},leftSection:{width:"75px",minWidth:"75px"},summaryCard:{height:"100%",display:"flex",flexDirection:"column",justifyContent:"space-between"},chartSection:{flex:1,width:"100%",minWidth:"150px"},chartSkeletonSection:{flex:1,width:"100%",minWidth:"150px",padding:e.spacing(0,0,1,1)},overallSummaryBox:{display:"flex",flexDirection:"column",height:"100%",color:x(e),textAlign:"center",gap:e.spacing(2)}})),j=()=>{const e=y();return p(a,{className:e.contentRow,children:[t(a,{className:e.leftSection,children:t(a,{className:e.summaryCard,children:t(u,{variant:"circle",height:75})})}),t(a,{className:e.chartSkeletonSection,children:t(u,{variant:"rect",height:92})})]})};function z(e){if(!e)return[];const{history:n}=e,r=A.utc();return n.map((i,o)=>{const l=P(i);return{name:O(r,n.length-o-1),passRate:l?Math.round(i.passed/l*100):0}})}function E(e){if(!e)return 0;const{passed:n,exempt:r}=e,i=e.numberOfEntities-e.notApplicable-e.exempt;return i?Math.round((n+r)/i*100):0}function H(e){if(!e)return{numerator:0,denominator:0};const{passed:n,exempt:r}=e,i=e.numberOfEntities-e.notApplicable-e.exempt;return{numerator:n+r,denominator:i}}const M=({check:e,track:n,status:r,history:i})=>{const o=y(),l=v(),C={dataKey:"passRate",name:"Pass rate"},S=i?.history?.length??0,N=z(i),s=E(r);let m;r?m=`${s}%`:m="No Data";let d=!1,c;if(!r)c="No Data";else{const{numerator:w,denominator:f}=H(r);f>0?(d=!0,c=`${w} of ${f} entities passing`):c="No Applicable Entities"}const h=d?t(a,{className:o.overallSummaryBox,children:t($,{value:s,text:m,styles:B({textColor:x(l),pathColor:g(l,s),trailColor:l.palette.divider,textSize:S?void 0:10})})}):null;return p(k,{className:o.card,elevation:0,children:[t(a,{className:o.headerRow,children:t(a,{className:o.headerSection,children:t(D,{className:o.title,children:W(n,e)})})}),!r||!i?t(j,{}):t(R,{title:c,children:p(a,{className:o.contentRow,children:[h&&t(a,{className:o.leftSection,children:t(a,{className:o.summaryCard,children:h})}),t(a,{className:o.chartSection,children:t(T,{data:d?N:[],lineConfig:C,color:g(l,s)})})]})})]})};export{M as CheckCard};
2
2
  //# sourceMappingURL=CheckCard.esm.js.map
@@ -1,2 +1,2 @@
1
- import{useTheme as m}from"@material-ui/core";import e from"react";import{ResponsiveContainer as n,AreaChart as l,CartesianGrid as c,XAxis as s,YAxis as p,Area as A}from"recharts";import{CARTESIAN_GRID_OPACITY as d,CHART_DATA_KEY as h,HORIZONTAL_Y_AXIS_WIDTH as C,AXIS_DOMAIN as f}from"../Charts/ChartTypes.esm.js";import"../Charts/LineChart/LineChart.esm.js";import{getChartFontColor as y}from"../Charts/chartUtils.esm.js";import"luxon";import"../TechHealthSummary/SummaryAggregationsProvider.esm.js";import"@backstage/catalog-model";import"../Charts/BarChart/BarChart.esm.js";import{LineChartPlaceholder as E}from"../Charts/LineChart/LineChartPlaceholder.esm.js";const I=({data:r,lineConfig:t,color:o})=>{const i=m(),a=y(i);return r.length?e.createElement(n,{minHeight:100,debounce:1},e.createElement(l,{data:r},e.createElement(c,{vertical:!1,opacity:d}),e.createElement(s,{dataKey:h,stroke:a,style:{fontSize:"0.7rem"}}),e.createElement(p,{width:C,domain:f,stroke:a,style:{fontSize:"0.7rem"}}),e.createElement(A,{key:t.dataKey,dataKey:t.dataKey,name:t.name,stackId:"1",type:"monotone",stroke:o,strokeWidth:1.2,fill:o}))):e.createElement(E,{height:100})};export{I as CheckHistoryChart};
1
+ import{jsx as t,jsxs as m}from"react/jsx-runtime";import{useTheme as n}from"@material-ui/core";import{ResponsiveContainer as s,AreaChart as d,CartesianGrid as h,XAxis as p,YAxis as A,Area as l}from"recharts";import{CARTESIAN_GRID_OPACITY as C,CHART_DATA_KEY as c,HORIZONTAL_Y_AXIS_WIDTH as f,AXIS_DOMAIN as y}from"../Charts/ChartTypes.esm.js";import"../Charts/LineChart/LineChart.esm.js";import{getChartFontColor as I}from"../Charts/chartUtils.esm.js";import"luxon";import"../TechHealthSummary/SummaryAggregationsProvider.esm.js";import"@backstage/catalog-model";import"../Charts/BarChart/BarChart.esm.js";import{LineChartPlaceholder as _}from"../Charts/LineChart/LineChartPlaceholder.esm.js";const T=({data:o,lineConfig:e,color:r})=>{const a=n(),i=I(a);return o.length?t(s,{minHeight:100,debounce:1,children:m(d,{data:o,children:[t(h,{vertical:!1,opacity:C}),t(p,{dataKey:c,stroke:i,style:{fontSize:"0.7rem"}}),t(A,{width:f,domain:y,stroke:i,style:{fontSize:"0.7rem"}}),t(l,{dataKey:e.dataKey,name:e.name,stackId:"1",type:"monotone",stroke:r,strokeWidth:1.2,fill:r},e.dataKey)]})}):t(_,{height:100})};export{T as CheckHistoryChart};
2
2
  //# sourceMappingURL=CheckHistoryChart.esm.js.map
@@ -1,2 +1,2 @@
1
- import t,{useEffect as n}from"react";import{v4 as u}from"uuid";import"../../contexts/TrackFormContext.esm.js";import{CheckFormProvider as d,useCheckFormContext as f}from"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";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"../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as g}from"../../hooks/useNavigateBack.esm.js";import{useCheckTemplates as h}from"../../hooks/checks/useCheckTemplates.esm.js";import{useCreateCheck as k}from"../../hooks/checks/useCreateCheck.esm.js";import{useSearchParam as C}from"../../hooks/useSearchParam.esm.js";import{checksPageRouteRef as y}from"../../routes.esm.js";import{CheckForm as E}from"../CheckForm/CheckForm.esm.js";import"../CheckForm/Steps/CheckDetailsStep.esm.js";import"../CheckForm/Steps/CheckRulesStep.esm.js";import{LoadingIndicator as I}from"../LoadingIndicator/LoadingIndicator.esm.js";import{PageWarningMessage as L}from"../PageWarningMessage/PageWarningMessage.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as F}from"../SoundcheckHeader/useHeader.esm.js";const P=({template:e})=>{const{setIsLoading:o,selectedItem:m,setSelectedItem:r}=f(),{mutateAsync:i,isLoading:a}=k();n(()=>{r(e?{...e,id:u()}:null)},[e,r]),n(()=>{o(a)},[o,a]);const[c,s]=g(y),p=async l=>{await i(l,{onSuccess:s})};return F({title:"Create a Check",description:"Identify if your software meets organizational standards by setting up a check.",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/checks"}),e&&!m?null:t.createElement(E,{onSave:p,onClose:c})},v=()=>{const[[e]]=C("template"),{isLoading:o,data:m}=h(),r=e&&m?m.find(i=>i.id===e)??null:null;return t.createElement(t.Fragment,null,t.createElement(L,{entityName:"check template",entityId:e,showNotFound:!!e&&!o&&!r}),o&&t.createElement(I,null),t.createElement(d,null,!o&&(!e||r)&&t.createElement(P,{template:r})))};export{v as CheckCreatePage};
1
+ import{jsxs as f,Fragment as l,jsx as r}from"react/jsx-runtime";import{useEffect as s}from"react";import{v4 as u}from"uuid";import"../../contexts/TrackFormContext.esm.js";import{CheckFormProvider as h,useCheckFormContext as g}from"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";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"../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as k}from"../../hooks/useNavigateBack.esm.js";import{useCheckTemplates as C}from"../../hooks/checks/useCheckTemplates.esm.js";import{useCreateCheck as y}from"../../hooks/checks/useCreateCheck.esm.js";import{useSearchParam as I}from"../../hooks/useSearchParam.esm.js";import{checksPageRouteRef as L}from"../../routes.esm.js";import{CheckForm as F}from"../CheckForm/CheckForm.esm.js";import"../CheckForm/Steps/CheckDetailsStep.esm.js";import"../CheckForm/Steps/CheckRulesStep.esm.js";import{LoadingIndicator as P}from"../LoadingIndicator/LoadingIndicator.esm.js";import{PageWarningMessage as v}from"../PageWarningMessage/PageWarningMessage.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as x}from"../SoundcheckHeader/useHeader.esm.js";const S=({template:t})=>{const{setIsLoading:e,selectedItem:m,setSelectedItem:o}=g(),{mutateAsync:i,isLoading:a}=y();s(()=>{o(t?{...t,id:u()}:null)},[t,o]),s(()=>{e(a)},[e,a]);const[c,n]=k(L),p=async d=>{await i(d,{onSuccess:n})};return x({title:"Create a Check",description:"Identify if your software meets organizational standards by setting up a check.",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/checks"}),t&&!m?null:r(F,{onSave:p,onClose:c})},w=()=>{const[[t]]=I("template"),{isLoading:e,data:m}=C(),o=t&&m?m.find(i=>i.id===t)??null:null;return f(l,{children:[r(v,{entityName:"check template",entityId:t,showNotFound:!!t&&!e&&!o}),e&&r(P,{}),r(h,{children:!e&&(!t||o)&&r(S,{template:o})})]})};export{w as CheckCreatePage};
2
2
  //# sourceMappingURL=CheckCreatePage.esm.js.map
@@ -1,2 +1,2 @@
1
- import{stringifyEntityRef as p}from"@backstage/catalog-model";import{MarkdownContent as F}from"@backstage/core-components";import{useApi as j,configApiRef as G}from"@backstage/core-plugin-api";import{useEntity as W}from"@backstage/plugin-catalog-react";import{makeStyles as J,Box as o,Typography as m,Divider as k,Button as u,Tooltip as Z}from"@material-ui/core";import{Alert as $}from"@material-ui/lab";import e,{useState as S}from"react";import{ResultState as d}from"../../graphql/generated/index.esm.js";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@spotify/backstage-plugin-soundcheck-common";import{useCheckDetails as q}from"../../hooks/checks/useCheckDetails.esm.js";import{useGetChecks as H}from"../../hooks/checks/useGetChecks.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import{useGetExemption as K}from"../../hooks/exemptions/useGetExemption.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{useSetManualResult as Q}from"../../hooks/checks/useSetManualResult.esm.js";import{AlertPanel as U}from"../AlertPanel/AlertPanel.esm.js";import{CheckResultInputPopup as V}from"../CertificationSidebar/CheckResultInputPopup.esm.js";import{ExemptionJustificationDialog as X}from"../CertificationSidebar/ExemptionJustificationDialog.esm.js";import{RelativeTime as Y}from"../RelativeTime/RelativeTime.esm.js";import{ResultStateBox as _}from"./ResultStateBox.esm.js";import{CheckDetailsSkeleton as ee}from"./skeletons/CheckDetailsSkeleton.esm.js";const l=J(t=>({root:{padding:`${t.spacing(3)}px ${t.spacing(5)}px`},title:{fontWeight:"normal",fontSize:t.typography.h5.fontSize},description:{padding:`${t.spacing(3)}px 0`},subtitle:{fontWeight:"normal",fontSize:t.typography.h6.fontSize},topBar:{display:"flex",justifyContent:"space-between",marginBottom:t.spacing(2)},exemptButton:{marginLeft:t.spacing(1)},exemptAlert:{marginBottom:t.spacing(2)}})),v=({setPopupDisplayed:t})=>{const i=l();return e.createElement(u,{className:i.exemptButton,size:"small",color:"primary",onClick:()=>t(!0),"aria-label":"Set Check Status Button",variant:"contained"},"Set Check Status")},C=({isExempt:t,setPopupDisplayed:i})=>{const a=l();return e.createElement(Z,{title:t?"Remove Exemption":"Set Exempt From Check"},e.createElement(u,{className:a.exemptButton,size:"small",color:"inherit",onClick:()=>i(!0),"aria-label":"Exempt From Check"},t?"Remove Exemption":"Add Exemption"))},te=({programId:t,checkId:i})=>{const a=l(),{entity:n}=W(),{data:f,isLoading:R,isError:B}=q(n,t,i),[b,E]=S(!1),[D,c]=S(!1),{data:r,isLoading:N}=K(p(n),i??""),{data:A}=H({ids:[i??""],first:1}),{mutateAsync:T,isLoading:ie}=Q(),w=j(G).getOptionalStringArray("soundcheck.flags")?.includes("enable-MCE");if(B)return e.createElement(o,{padding:2},e.createElement(U,{severity:"error",title:"Error loading check details"}));if(R||!t||!i)return e.createElement(ee,null);if(!f)return null;const h=A?.edges?.[0]?.node,g=h?.type==="manual",{name:y,description:I,result:s,timestamp:x,details:z}=f,P=async(L,O)=>{if(!n||!i)return;const M=p(n);await T({checkId:i,entityRef:M,justification:O,state:L})};return e.createElement("div",{className:a.root,"data-testid":"check-details-view"},e.createElement("div",{className:a.topBar},e.createElement(m,{variant:"h2",className:a.title},y),e.createElement(o,{display:"flex",alignItems:"center"},x?e.createElement(Y,{timestamp:x,description:"Last updated"}):null,g&&!r?.exemption&&s!==d.NotReported&&e.createElement(v,{setPopupDisplayed:c}),!N&&w&&e.createElement(C,{isExempt:!!r?.exemption,setPopupDisplayed:E}))),e.createElement(X,{entityRef:p(n),checkId:i,isOpen:b,setIsOpen:E}),e.createElement(V,{isOpen:D,setIsOpen:c,setCallback:P}),!r?.exemption&&s===d.Exempt&&e.createElement($,{className:a.exemptAlert,severity:"warning",variant:"outlined"},"This check's exemption for this entity was recently removed. The recent exemption state will clear once the check has been run."),!!r?.exemption&&e.createElement(o,{marginBottom:2},e.createElement(k,null),e.createElement(m,{variant:"h6",color:"textSecondary"},"This entity has been exempted from this check."),e.createElement(k,null)),g&&!r?.exemption&&s===d.NotReported?e.createElement(o,null,e.createElement(m,null,"This check is manual and must have its state set by a user."),e.createElement(o,{marginTop:1},e.createElement(u,{variant:"contained",color:"primary",onClick:()=>c(!0),"aria-label":"Set Result",size:"small"},"Set Check Status"))):e.createElement(e.Fragment,null,e.createElement(m,{className:a.subtitle},"Most Recent Result:"),e.createElement(_,{name:y,state:s,details:z,templateRef:h?.templateRef??void 0})),e.createElement("div",{className:a.description,"data-testid":"soundcheck-check-details-description"},e.createElement(m,{variant:"h3",className:a.subtitle},"Description"),e.createElement(F,{content:I})))};export{te as CheckDetails,C as ExemptDialogButton,v as SetCheckStatusButton,l as useStyles};
1
+ import{jsx as t,jsxs as o,Fragment as M}from"react/jsx-runtime";import{stringifyEntityRef as h}from"@backstage/catalog-model";import{useEntity as O}from"@backstage/plugin-catalog-react";import{makeStyles as F,Box as p,Typography as m,Button as u,Tooltip as $}from"@material-ui/core";import{Alert as C}from"@material-ui/lab";import{useState as v}from"react";import{CheckerType as W,ResultState as l}from"../../graphql/generated/index.esm.js";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@spotify/backstage-plugin-soundcheck-common";import{useCheck as G}from"../../hooks/checks/useCheck.esm.js";import{useCheckDetails as J}from"../../hooks/checks/useCheckDetails.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import{useGetExemption as q}from"../../hooks/exemptions/useGetExemption.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{useSetManualResult as H}from"../../hooks/checks/useSetManualResult.esm.js";import{AlertPanel as K}from"../AlertPanel/AlertPanel.esm.js";import{CheckResultInputPopup as Q}from"../CertificationSidebar/CheckResultInputPopup.esm.js";import{ExemptionJustificationDialog as U}from"../CertificationSidebar/ExemptionJustificationDialog.esm.js";import{RelativeTime as V}from"../RelativeTime/RelativeTime.esm.js";import{SoundcheckMarkdownContent as X}from"../SoundcheckMarkdownContent/SoundcheckMarkdownContent.esm.js";import"@backstage/core-components";import"react-markdown";import"rehype-raw";import"remark-gfm";import{ResultStateBox as Y}from"./ResultStateBox.esm.js";import{CheckDetailsSkeleton as Z}from"./skeletons/CheckDetailsSkeleton.esm.js";const c=F(e=>({root:{padding:`${e.spacing(3)}px ${e.spacing(5)}px`},title:{fontWeight:"normal",fontSize:e.typography.h5.fontSize},description:{padding:`${e.spacing(3)}px 0`},subtitle:{fontWeight:"normal",fontSize:e.typography.h6.fontSize},topBar:{display:"flex",justifyContent:"space-between",marginBottom:e.spacing(2)},exemptButton:{marginLeft:e.spacing(1)},exemptAlert:{marginBottom:e.spacing(2)}})),R=({setPopupDisplayed:e})=>{const i=c();return t(u,{className:i.exemptButton,size:"small",onClick:()=>e(!0),"aria-label":"Set Check Status Button",children:"Set Check Status"})},E=({isExempt:e,setPopupDisplayed:i})=>{const r=c();return t($,{title:e?"Remove Exemption":"Set Exempt From Check",children:t(u,{className:r.exemptButton,size:"small",color:"inherit",onClick:()=>i(!0),"aria-label":"Exempt From Check",children:e?"Remove Exemption":"Add Exemption"})})},_=({programId:e,checkId:i})=>{const r=c(),{entity:a}=O(),{data:f,isLoading:B,isError:N}=J(a,e,i),[b,x]=v(!1),[D,d]=v(!1),{data:n,isLoading:T}=q(h(a),i??""),{data:y}=G(i),{mutateAsync:w}=H();if(N)return t(p,{padding:2,children:t(K,{severity:"error",title:"Error loading check details"})});if(B||!e||!i)return t(Z,{});if(!f)return null;const k=y?.type===W.Manual,{name:g,description:z,result:s,timestamp:S,details:A}=f,I=async(P,j)=>{if(!a||!i)return;const L=h(a);await w({checkId:i,entityRef:L,justification:j,state:P})};return o("div",{className:r.root,"data-testid":"check-details-view",children:[o("div",{className:r.topBar,children:[t(m,{variant:"h2",className:r.title,children:g}),o(p,{display:"flex",alignItems:"center",children:[S?t(V,{timestamp:S,description:"Last updated"}):null,k&&!n?.exemption&&s!==l.NotReported&&t(R,{setPopupDisplayed:d}),!T&&s!==l.NotApplicable&&t(E,{isExempt:!!n?.exemption,setPopupDisplayed:x})]})]}),t(U,{entityRef:h(a),checkId:i,isOpen:b,setIsOpen:x}),t(Q,{isOpen:D,setIsOpen:d,setCallback:I}),!n?.exemption&&s===l.Exempt&&t(C,{className:r.exemptAlert,severity:"warning",variant:"outlined",children:"This check's exemption for this entity was recently removed. The recent exemption state will clear once the check has been run."}),!!n?.exemption&&t(p,{marginBottom:2,children:t(C,{className:r.exemptAlert,severity:"warning",variant:"outlined",children:"This entity has been exempted from this check."})}),k&&!n?.exemption&&s===l.NotReported?o(p,{children:[t(m,{children:"This check is manual and must have its state set by a user."}),t(p,{marginTop:1,children:t(u,{variant:"contained",color:"primary",onClick:()=>d(!0),"aria-label":"Set Check Status",size:"small",children:"Set Check Status"})})]}):o(M,{children:[t(m,{className:r.subtitle,children:"Most Recent Result:"}),t(Y,{name:g,state:s,details:A,templateRef:y?.templateRef??void 0})]}),o("div",{className:r.description,"data-testid":"soundcheck-check-details-description",children:[t(m,{variant:"h3",className:r.subtitle,children:"Description"}),t(X,{content:z})]})]})};export{_ as CheckDetails,E as ExemptDialogButton,R as SetCheckStatusButton,c as useStyles};
2
2
  //# sourceMappingURL=CheckDetails.esm.js.map
@@ -1,2 +1,2 @@
1
- import{Box as t,Typography as r}from"@material-ui/core";import e from"react";import{RuleResultComponent as a}from"../RuleResult/RuleResultComponent.esm.js";import{FactTable as m}from"./FactTable.esm.js";const n=({ruleResult:l})=>e.createElement(e.Fragment,null,e.createElement(t,{mt:2},e.createElement(r,{variant:"h3"},"Rule Evaluation"),e.createElement(t,{p:2},e.createElement(a,{ruleResult:l}))),e.createElement(r,{variant:"h3"},"Resolved Values"),e.createElement(t,{p:2},e.createElement(m,{ruleResult:l})));export{n as CheckResultDetails};
1
+ import{jsxs as r,Fragment as a,jsx as e}from"react/jsx-runtime";import{Box as l,Typography as i}from"@material-ui/core";import{RuleResultComponent as h}from"../RuleResult/RuleResultComponent.esm.js";import{FactTable as u}from"./FactTable.esm.js";const c=({ruleResult:t,applicabilityResult:n})=>r(a,{children:[n&&r(a,{children:[r(l,{mt:2,children:[e(i,{variant:"h3",children:"Applicability Rule Evaluation"}),e(l,{p:2,children:e(h,{ruleResult:n})})]}),e(i,{variant:"h3",children:"Resolved Values"}),e(l,{p:2,children:e(u,{ruleResult:n})})]}),t&&r(a,{children:[r(l,{mt:2,children:[e(i,{variant:"h3",children:"Check Rule Evaluation"}),e(l,{p:2,children:e(h,{ruleResult:t})})]}),e(i,{variant:"h3",children:"Resolved Values"}),e(l,{p:2,children:e(u,{ruleResult:t})})]})]});export{c as CheckResultDetails};
2
2
  //# sourceMappingURL=CheckResultDetails.esm.js.map
@@ -1,2 +1,2 @@
1
- import{TableRow as t,TableCell as n,IconButton as i,Collapse as c}from"@material-ui/core";import p from"@material-ui/icons/KeyboardArrowDown";import u from"@material-ui/icons/KeyboardArrowUp";import e,{useState as s}from"react";const d=({title:a,children:o,defaultOpen:r=!0})=>{const[l,m]=s(r);return e.createElement(e.Fragment,null,e.createElement(t,null,e.createElement(n,{colSpan:2,padding:"normal",align:"left",size:"small"},e.createElement(i,{"aria-label":"expand row",size:"small",onClick:()=>m(!l)},l?e.createElement(u,null):e.createElement(p,null)),e.createElement("strong",null,a))),e.createElement(t,null,e.createElement(n,{style:{paddingBottom:0,paddingTop:0},colSpan:2,padding:"normal",align:"left",size:"small"},e.createElement(c,{in:l,timeout:"auto",unmountOnExit:!0},o))))};export{d as CollapseRow};
1
+ import{jsxs as o,Fragment as m,jsx as l}from"react/jsx-runtime";import{TableRow as e,TableCell as i,IconButton as p,Collapse as s}from"@material-ui/core";import c from"@material-ui/icons/KeyboardArrowDown";import h from"@material-ui/icons/KeyboardArrowUp";import{useState as f}from"react";const g=({title:r,children:t,defaultOpen:a=!0})=>{const[n,d]=f(a);return o(m,{children:[l(e,{children:o(i,{colSpan:2,padding:"normal",align:"left",size:"small",children:[l(p,{"aria-label":"expand row",size:"small",onClick:()=>d(!n),children:n?l(h,{}):l(c,{})}),l("strong",{children:r})]})}),l(e,{children:l(i,{style:{paddingBottom:0,paddingTop:0},colSpan:2,padding:"normal",align:"left",size:"small",children:l(s,{in:n,timeout:"auto",unmountOnExit:!0,children:t})})})]})};export{g as CollapseRow};
2
2
  //# sourceMappingURL=CollapseRow.esm.js.map
@@ -1,2 +1,2 @@
1
- import{TableContainer as d,Paper as u,Table as f,TableBody as E,TableRow as r,TableCell as m,IconButton as g,Collapse as b,Box as C}from"@material-ui/core";import{makeStyles as T}from"@material-ui/core/styles";import w from"@material-ui/icons/KeyboardArrowDown";import v from"@material-ui/icons/KeyboardArrowUp";import{groupBy as y}from"lodash";import e,{useState as B,useMemo as R}from"react";import{findUniqueFacts as k}from"./findUniqueFacts.esm.js";import{ResolvedValueTable as x}from"./ResolvedValueTable.esm.js";const h=T(a=>({tableCell:{whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",maxWidth:200},selectedRow:{backgroundColor:a.palette.action.hover},factRow:{backgroundColor:a.palette.background.default},factCell:{paddingTop:a.spacing(1.5),paddingBottom:a.spacing(1.5),paddingLeft:`${a.spacing(2)}px !important`},dataCell:{"&::after":{display:"none"}}})),S=({ruleResult:a})=>{const o=h(),[n,c]=B({}),i=R(()=>y(k(a),"factRef"),[a]),p=t=>{c(l=>({...l,[t]:l[t]!==void 0?!l[t]:!1}))};return e.createElement(d,{component:u},e.createElement(f,null,e.createElement(E,null,Object.entries(i).map(([t,l],s)=>e.createElement(e.Fragment,{key:s},e.createElement(r,{className:o.factRow},e.createElement(m,{className:o.factCell},e.createElement(g,{size:"small",onClick:()=>p(t)},n[t]?e.createElement(v,null):e.createElement(w,null)),t)),e.createElement(r,null,e.createElement(m,{className:o.dataCell,style:{paddingBottom:0,paddingTop:0},colSpan:4},e.createElement(b,{in:n[t]===void 0||n[t],timeout:"auto",unmountOnExit:!0},e.createElement(C,{margin:1},e.createElement(x,{values:l}))))))))))};export{S as FactTable};
1
+ import{jsx as e,jsxs as r}from"react/jsx-runtime";import{TableContainer as f,Paper as u,Table as h,TableBody as g,TableRow as i,TableCell as c,IconButton as b,Collapse as C,Box as T}from"@material-ui/core";import{makeStyles as w}from"@material-ui/core/styles";import x from"@material-ui/icons/KeyboardArrowDown";import R from"@material-ui/icons/KeyboardArrowUp";import{groupBy as v}from"lodash";import{useState as B,useMemo as k,Fragment as y}from"react";import{findUniqueFacts as N}from"./findUniqueFacts.esm.js";import{ResolvedValueTable as S}from"./ResolvedValueTable.esm.js";const j=w(t=>({tableCell:{whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",maxWidth:200},selectedRow:{backgroundColor:t.palette.action.hover},factRow:{backgroundColor:t.palette.background.default},factCell:{paddingTop:t.spacing(1.5),paddingBottom:t.spacing(1.5),paddingLeft:`${t.spacing(2)}px !important`},dataCell:{"&::after":{display:"none"}}})),F=({ruleResult:t})=>{const l=j(),[n,d]=B({}),m=k(()=>v(N(t),"factRef"),[t]),p=o=>{d(a=>({...a,[o]:a[o]!==void 0?!a[o]:!1}))};return e(f,{component:u,children:e(h,{children:e(g,{children:Object.entries(m).map(([o,a],s)=>r(y,{children:[e(i,{className:l.factRow,children:r(c,{className:l.factCell,children:[e(b,{size:"small",onClick:()=>p(o),children:n[o]?e(R,{}):e(x,{})}),o]})}),e(i,{children:e(c,{className:l.dataCell,style:{paddingBottom:0,paddingTop:0},colSpan:4,children:e(C,{in:n[o]===void 0||n[o],timeout:"auto",unmountOnExit:!0,children:e(T,{margin:1,children:e(S,{values:a})})})})})]},s))})})})};export{F as FactTable};
2
2
  //# sourceMappingURL=FactTable.esm.js.map
@@ -1,2 +1,2 @@
1
- import{Progress as L}from"@backstage/core-components";import{useApi as u,errorApiRef as R}from"@backstage/core-plugin-api";import{useEntity as T}from"@backstage/plugin-catalog-react";import{scaffolderApiRef as b,useTemplateSecrets as I,useCustomFieldExtensions as B}from"@backstage/plugin-scaffolder-react";import{useTemplateParameterSchema as D,useFilteredSchemaProperties as F,Stepper as O}from"@backstage/plugin-scaffolder-react/alpha";import{makeStyles as P,Dialog as U,DialogTitle as A,Typography as N,IconButton as W,DialogContent as j}from"@material-ui/core";import G from"@material-ui/icons/Close";import J from"git-url-parse";import t,{useState as K,useEffect as M}from"react";import{useOutlet as Q}from"react-router-dom";import{OngoingTaskComponent as q}from"./OngoingTaskComponent.esm.js";import{ReviewStateComponent as z}from"./ReviewStateComponent.esm.js";class d{type;name;owner;lifecycle;title;description;sourceLocation;managedByLocation;slackChannel;entity;constructor(e){this.lifecycle=e.spec?.lifecycle||"unknown",this.name=e.metadata.name,this.owner=e.spec?.owner||"unknown",this.type=e.spec?.type||"unknown",this.title=e.metadata.title,this.description=e.metadata.description||"",this.sourceLocation=e.metadata.annotations?.["backstage.io/source-location"]?.replace("url:",""),this.managedByLocation=e.metadata.annotations?.["backstage.io/managed-by-location"],this.slackChannel=e.metadata.annotations?.["spotify.net/slack-channel"],this.entity=e}}const H=o=>{const e={};if(e.componentId=o.name,o.sourceLocation){const{name:n,owner:a,protocol:r,source:i}=J(o.sourceLocation);e.repoUrl=`${r}://${i}/${a}/${n}`,e.repo={host:i,org:a,repo:n,url:e.repoUrl,gitUrl:`git@${i}:${a}/${n}.git`,paramUrl:`${r}://${i}?owner=${a}&repo=${n}`}}e.facts=JSON.parse(o.entity.metadata.annotations?.["sysmodel.spotify.net/raw-component-facts"]||"{}");const s=o;return delete s.entity,{...e,...s}},V=P({titleContent:{display:"flex",justifyContent:"space-between",alignItems:"center"}}),X=o=>{const{title:e,open:s,setOpen:n,onClose:a,templateRef:r}=o,i=V(),c=u(R),y=u(b),{loading:g,manifest:h,error:l}=D(r),{secrets:w}=I(),E=Q(),k=B(E),m=F(h),{entity:C}=T(),[p,f]=K(void 0),$=async x=>{const{taskId:v}=await y.scaffold({templateRef:r,values:x,secrets:w});f(v)},S=()=>{n(!1),f(void 0)};return M(()=>{l&&c.post(new Error(`Failed to load template, ${l}`))},[l,c]),t.createElement(U,{open:s,onClose:a,fullWidth:!0,maxWidth:"md"},t.createElement(A,null,t.createElement("div",{className:i.titleContent},t.createElement(N,{variant:"h5"},e),t.createElement(W,{onClick:S},t.createElement(G,null)))),t.createElement(j,null,g&&t.createElement(L,null),p?t.createElement(q,{taskId:p}):m&&t.createElement(O,{manifest:m,onCreate:$,extensions:k,components:{createButtonText:"Execute",ReviewStateComponent:z},initialState:{backstage:H(new d(C))},...o})))};export{X as FixMeDialog,d as SimplifiedEntity};
1
+ import{jsxs as l,jsx as o}from"react/jsx-runtime";import{Progress as R}from"@backstage/core-components";import{useApi as u,errorApiRef as T}from"@backstage/core-plugin-api";import{useEntity as b}from"@backstage/plugin-catalog-react";import{scaffolderApiRef as D,useTemplateSecrets as I,useCustomFieldExtensions as B}from"@backstage/plugin-scaffolder-react";import{useTemplateParameterSchema as F,useFilteredSchemaProperties as O,Stepper as U}from"@backstage/plugin-scaffolder-react/alpha";import{makeStyles as j,Dialog as A,DialogTitle as P,Typography as J,IconButton as N,DialogContent as W}from"@material-ui/core";import M from"@material-ui/icons/Close";import Q from"git-url-parse";import{useState as V,useEffect as q}from"react";import{useOutlet as z}from"react-router-dom";import{OngoingTaskComponent as G}from"./OngoingTaskComponent.esm.js";import{ReviewStateComponent as H}from"./ReviewStateComponent.esm.js";class h{type;name;owner;lifecycle;title;description;sourceLocation;managedByLocation;slackChannel;entity;constructor(e){this.lifecycle=e.spec?.lifecycle||"unknown",this.name=e.metadata.name,this.owner=e.spec?.owner||"unknown",this.type=e.spec?.type||"unknown",this.title=e.metadata.title,this.description=e.metadata.description||"",this.sourceLocation=e.metadata.annotations?.["backstage.io/source-location"]?.replace("url:",""),this.managedByLocation=e.metadata.annotations?.["backstage.io/managed-by-location"],this.slackChannel=e.metadata.annotations?.["spotify.net/slack-channel"],this.entity=e}}const K=t=>{const e={};if(e.componentId=t.name,t.sourceLocation){const{name:n,owner:a,protocol:r,source:i}=Q(t.sourceLocation);e.repoUrl=`${r}://${i}/${a}/${n}`,e.repo={host:i,org:a,repo:n,url:e.repoUrl,gitUrl:`git@${i}:${a}/${n}.git`,paramUrl:`${r}://${i}?owner=${a}&repo=${n}`}}e.facts=JSON.parse(t.entity.metadata.annotations?.["sysmodel.spotify.net/raw-component-facts"]||"{}");const s=t;return delete s.entity,{...e,...s}},X=j({titleContent:{display:"flex",justifyContent:"space-between",alignItems:"center"}}),Y=t=>{const{title:e,open:s,setOpen:n,onClose:a,templateRef:r}=t,i=X(),m=u(T),y=u(D),{loading:g,manifest:w,error:c}=F(r),{secrets:k}=I(),C=z(),$=B(C),p=O(w),{entity:S}=b(),[d,f]=V(void 0),x=async E=>{const{taskId:L}=await y.scaffold({templateRef:r,values:E,secrets:k});f(L)},v=()=>{n(!1),f(void 0)};return q(()=>{c&&m.post(new Error(`Failed to load template, ${c}`))},[c,m]),l(A,{open:s,onClose:a,fullWidth:!0,maxWidth:"md",children:[o(P,{children:l("div",{className:i.titleContent,children:[o(J,{variant:"h5",children:e}),o(N,{onClick:v,children:o(M,{})})]})}),l(W,{children:[g&&o(R,{}),d?o(G,{taskId:d}):p&&o(U,{manifest:p,onCreate:x,extensions:$,components:{createButtonText:"Execute",ReviewStateComponent:H},initialState:{backstage:K(new h(S))},...t})]})]})};export{Y as FixMeDialog,h as SimplifiedEntity};
2
2
  //# sourceMappingURL=FixMeDialog.esm.js.map
@@ -1,2 +1,2 @@
1
- import{MarkdownContent as o}from"@backstage/core-components";import{Divider as s,Typography as i}from"@material-ui/core";import{JustificationDetailsSchema as u}from"@spotify/backstage-plugin-soundcheck-common";import{DateTime as c}from"luxon";import e from"react";import{EntityChip as p}from"../EntityChip/EntityChip.esm.js";const f=({justification:m,type:n})=>{const r=u.safeParse(m);if(!r.success)return null;const a=r.data,l=c.fromISO(a.timestamp).toFormat("MM/dd/yyyy");let t;switch(n){case"exemption":t="Exemption Details:";break;case"manual":t="Manually Submitted Check Result Details:";break;default:t="Unknown Justification Type";break}return e.createElement("div",null,e.createElement(s,null),e.createElement(i,{variant:"h6"},t),e.createElement("br",null),e.createElement(i,null,e.createElement(p,{entityOrRef:a.submittedBy,style:{}}),"submitted ",n==="exemption"?"an exemption":"a manual result"," on ",l,"."),e.createElement("br",null),e.createElement(i,null,"Reasoning for the ",n==="exemption"?"exemption":"manual result"," ","was:"),e.createElement(o,{content:a.justification}))};export{f as JustificationDetails};
1
+ import{jsxs as r,jsx as t}from"react/jsx-runtime";import{Divider as p,Typography as a,Box as l}from"@material-ui/core";import{JustificationDetailsSchema as c}from"@spotify/backstage-plugin-soundcheck-common";import{DateTime as u}from"luxon";import{EntityChip as d}from"../EntityChip/EntityChip.esm.js";import{SoundcheckMarkdownContent as f}from"../SoundcheckMarkdownContent/SoundcheckMarkdownContent.esm.js";import"@backstage/core-components";import"react";import"react-markdown";import"rehype-raw";import"remark-gfm";const h=({justification:m,type:i})=>{const n=c.safeParse(m);if(!n.success)return null;const o=n.data,s=u.fromISO(o.timestamp).toFormat("MM/dd/yyyy");let e;switch(i){case"exemption":e="Exemption Details:";break;case"manual":e="Manually Submitted Check Result Details:";break;default:e="Unknown Justification Type";break}return r("div",{children:[t(p,{}),t(a,{variant:"h6",children:e}),t("br",{}),r(a,{children:[t(d,{entityOrRef:o.submittedBy,style:{}}),"submitted ",i==="exemption"?"an exemption":"a manual result"," on ",s,"."]}),t("br",{}),r(a,{children:["Reasoning for the ",i==="exemption"?"exemption":"manual result"," ","was:"]}),t(l,{maxHeight:"400px",overflow:"auto",style:{wordWrap:"break-word",wordBreak:"break-word"},children:t(f,{content:o.justification})})]})};export{h as JustificationDetails};
2
2
  //# sourceMappingURL=JustificationDetails.esm.js.map
@@ -1,2 +1,2 @@
1
- import{Content as l,ErrorPanel as i}from"@backstage/core-components";import{useTaskEventStream as c}from"@backstage/plugin-scaffolder-react";import{TaskSteps as u,DefaultTemplateOutputs as f}from"@backstage/plugin-scaffolder-react/alpha";import{makeStyles as E,Box as n}from"@material-ui/core";import r,{useMemo as m}from"react";const d=E({contentWrapper:{display:"flex",flexDirection:"column"}}),k=s=>{const e=c(s.taskId),o=m(()=>e.task?.spec.steps.map(t=>({...t,...e?.steps?.[t.id]}))??[],[e]),p=m(()=>{for(let t=o.length-1;t>=0;t--)if(o[t].status!=="open")return t;return 0},[o]),a=d();return r.createElement(l,{className:a.contentWrapper},e.error?r.createElement(n,{paddingBottom:2},r.createElement(i,{error:e.error,title:e.error.message})):null,r.createElement(n,{paddingBottom:2},r.createElement(u,{steps:o,activeStep:p,isComplete:e.completed,isError:!!e.error})),r.createElement(f,{output:e.output}))};export{k as OngoingTaskComponent};
1
+ import{jsxs as i,jsx as e}from"react/jsx-runtime";import{Content as l,ErrorPanel as u}from"@backstage/core-components";import{useTaskEventStream as c}from"@backstage/plugin-scaffolder-react";import{TaskSteps as d,DefaultTemplateOutputs as f}from"@backstage/plugin-scaffolder-react/alpha";import{makeStyles as k,Box as s}from"@material-ui/core";import{useMemo as p}from"react";const g=k({contentWrapper:{display:"flex",flexDirection:"column"}}),x=n=>{const t=c(n.taskId),o=p(()=>t.task?.spec.steps.map(r=>({...r,...t?.steps?.[r.id]}))??[],[t]),m=p(()=>{for(let r=o.length-1;r>=0;r--)if(o[r].status!=="open")return r;return 0},[o]),a=g();return i(l,{className:a.contentWrapper,children:[t.error?e(s,{paddingBottom:2,children:e(u,{error:t.error,title:t.error.message})}):null,e(s,{paddingBottom:2,children:e(d,{steps:o,activeStep:m,isComplete:t.completed,isError:!!t.error})}),e(f,{output:t.output})]})};export{x as OngoingTaskComponent};
2
2
  //# sourceMappingURL=OngoingTaskComponent.esm.js.map
@@ -1,2 +1,2 @@
1
- import{Table as d,TableHead as f,TableRow as m,TableCell as a,TableBody as E,Tooltip as r,IconButton as s}from"@material-ui/core";import{makeStyles as b}from"@material-ui/core/styles";import i from"@material-ui/icons/FileCopy";import h from"copy-to-clipboard";import e from"react";import{useSelectedValue as v}from"./SelectedValueContext.esm.js";const C=b(o=>({tableCell:{whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",maxWidth:200},selectedRow:{backgroundColor:o.palette.action.hover}})),V=({values:o})=>{const t=C(),{selectedValue:n}=v(),c=l=>{h(l)};return e.createElement(d,{size:"small",padding:"none"},e.createElement(f,null,e.createElement(m,null,e.createElement(a,{className:t.tableCell},"Path"),e.createElement(a,{className:t.tableCell},"Value"))),e.createElement(E,null,o.map((l,p)=>{const u=l.factRef===n.factRef&&l.path===n.path;return e.createElement(m,{key:p,className:u?t.selectedRow:""},e.createElement(a,{className:t.tableCell},l.path&&e.createElement(e.Fragment,null,e.createElement(r,{title:"Copy path to clipboard"},e.createElement(s,{onClick:()=>c(l.path)},e.createElement(i,{fontSize:"small"}))),e.createElement(r,{title:l.path},e.createElement("span",null,l.path)))),e.createElement(a,{className:t.tableCell},e.createElement(r,{title:"Copy value to clipboard"},e.createElement(s,{onClick:()=>c(typeof l.resolvedValue=="string"?l.resolvedValue:JSON.stringify(l.resolvedValue))},e.createElement(i,{fontSize:"small"}))),typeof l.resolvedValue=="string"?l.resolvedValue:JSON.stringify(l.resolvedValue)))})))};export{V as ResolvedValueTable};
1
+ import{jsxs as a,jsx as l,Fragment as f}from"react/jsx-runtime";import{Table as u,TableHead as b,TableRow as c,TableCell as o,TableBody as v,Tooltip as i,IconButton as d}from"@material-ui/core";import{makeStyles as C}from"@material-ui/core/styles";import h from"@material-ui/icons/FileCopy";import V from"copy-to-clipboard";import{useSelectedValue as y}from"./SelectedValueContext.esm.js";const T=C(r=>({tableCell:{whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",maxWidth:200},selectedRow:{backgroundColor:r.palette.action.hover}})),g=({values:r})=>{const t=T(),{selectedValue:n}=y(),s=e=>{V(e)};return a(u,{size:"small",padding:"none",children:[l(b,{children:a(c,{children:[l(o,{className:t.tableCell,children:"Path"}),l(o,{className:t.tableCell,children:"Value"})]})}),l(v,{children:r.map((e,p)=>{const m=e.factRef===n.factRef&&e.path===n.path;return a(c,{className:m?t.selectedRow:"",children:[l(o,{className:t.tableCell,children:e.path&&a(f,{children:[l(i,{title:"Copy path to clipboard",children:l(d,{onClick:()=>s(e.path),children:l(h,{fontSize:"small"})})}),l(i,{title:e.path,children:l("span",{children:e.path})})]})}),a(o,{className:t.tableCell,children:[l(i,{title:"Copy value to clipboard",children:l(d,{onClick:()=>s(typeof e.resolvedValue=="string"?e.resolvedValue:JSON.stringify(e.resolvedValue)),children:l(h,{fontSize:"small"})})}),typeof e.resolvedValue=="string"?e.resolvedValue:JSON.stringify(e.resolvedValue)]})]},p)})})]})};export{g as ResolvedValueTable};
2
2
  //# sourceMappingURL=ResolvedValueTable.esm.js.map
@@ -1,2 +1,2 @@
1
- import{MarkdownContent as y}from"@backstage/core-components";import{useApi as B,configApiRef as F}from"@backstage/core-plugin-api";import{makeStyles as b,Paper as w,Typography as S,Divider as l,Box as g,Button as A}from"@material-ui/core";import{ToggleButtonGroup as D,ToggleButton as f}from"@material-ui/lab";import{NotesSchema as T}from"@spotify/backstage-plugin-soundcheck-common";import e,{useState as E}from"react";import{ResultState as t}from"../../graphql/generated/index.esm.js";import{CheckIcon as I}from"../CheckIcon/CheckIcon.esm.js";import{CheckResultDetails as P}from"./CheckResultDetails.esm.js";import{FixMeDialog as $}from"./FixMeDialog.esm.js";import{JustificationDetails as x}from"./JustificationDetails.esm.js";import{SelectedValueProvider as j}from"./SelectedValueContext.esm.js";const G=b(o=>({markdownContent:{"& :last-child":{marginBottom:0},"& pre":{background:`${o.palette.background.paper} !important`},"& :first-child":{marginTop:0}},root:{padding:o.spacing(2),display:"flex",flexDirection:"column",gap:o.spacing(1.5)},header:{display:"flex",alignItems:"center",justifyContent:"space-between"},iconContainer:{display:"flex",alignItems:"center"},toggleButtonGroup:{marginLeft:"auto"},toggleButton:{padding:o.spacing(.5),fontSize:o.typography.pxToRem(12)},passed:{},failed:{},warning:{},notReported:{},notApplicable:{},exempt:{},error:{},icon:{marginRight:o.spacing(.5)},divider:{marginTop:o.spacing(.5)}}),{name:"CheckResultStateBox"}),J={[t.Passed]:"Check passed",[t.Failed]:"Check did not pass",[t.Warning]:"Check produced warning(s)",[t.NotReported]:"Check not reported",[t.NotApplicable]:"Check not applicable",[t.Exempt]:"Exempt from check",[t.Error]:"Check encountered an error."},M={[t.Passed]:"passed",[t.Failed]:"failed",[t.Warning]:"warning",[t.NotReported]:"notReported",[t.NotApplicable]:"notApplicable",[t.Exempt]:"exempt",[t.Error]:"error"},O=({name:o,state:r,details:n,templateRef:c})=>{const a=G(),[h,i]=E(!1),[m,v]=E("notes"),k=B(F).getOptionalStringArray("soundcheck.flags")?.includes("enable-fix-me"),s=n&&n.ruleResult,C=()=>{i(!0)},N=()=>{i(!1)},R=(V,u)=>{u!==null&&v(u)},p=n?.notes?T.safeParse(n.notes):void 0,d=p?.success?p.data.data:void 0;return e.createElement(w,{variant:"outlined",className:`${a.root} ${a[M[r]]}`},e.createElement("div",{className:a.header},e.createElement("div",{className:a.iconContainer},e.createElement(I,{className:a.icon,result:r}),e.createElement(S,{variant:"subtitle1"},J[r])),s&&e.createElement(D,{value:m,exclusive:!0,onChange:R,className:a.toggleButtonGroup},e.createElement(f,{value:"notes",className:a.toggleButton},"Notes"),e.createElement(f,{value:"details",className:a.toggleButton},"Details"))),m==="notes"&&e.createElement(e.Fragment,null,n&&n.exemption&&e.createElement(e.Fragment,null,e.createElement(l,{className:a.divider}),e.createElement(x,{justification:n.exemption,type:"exemption"})),n&&n.manualResult&&e.createElement(e.Fragment,null,e.createElement(l,{className:a.divider}),e.createElement(x,{justification:n.manualResult,type:"manual"})),d&&e.createElement(g,{style:{maxHeight:"35vh",overflowY:"auto"}},e.createElement(l,{className:a.divider}),e.createElement(y,{className:a.markdownContent,content:d})),k&&r===t.Failed&&c&&e.createElement(g,{display:"flex",flexDirection:"column",alignItems:"flex-end",mt:2,width:"100%"},e.createElement(A,{color:"primary",variant:"contained",onClick:C},"Fix"),e.createElement($,{title:`Fix ${o}`,open:h,setOpen:i,onClose:N,templateRef:c}))),m==="details"&&e.createElement(e.Fragment,null,s&&e.createElement(e.Fragment,null,e.createElement(l,{className:a.divider}),e.createElement(j,null,e.createElement(P,{ruleResult:n.ruleResult})))))};export{O as ResultStateBox};
1
+ import{jsxs as n,jsx as e,Fragment as r}from"react/jsx-runtime";import{useApi as S,configApiRef as w}from"@backstage/core-plugin-api";import{makeStyles as A,Paper as D,Typography as F,Divider as s,Box as f,Button as j}from"@material-ui/core";import{ToggleButtonGroup as E,ToggleButton as x}from"@material-ui/lab";import{NotesSchema as P}from"@spotify/backstage-plugin-soundcheck-common";import{useState as v}from"react";import{ResultState as t}from"../../graphql/generated/index.esm.js";import{CheckIcon as T}from"../CheckIcon/CheckIcon.esm.js";import{SoundcheckMarkdownContent as $}from"../SoundcheckMarkdownContent/SoundcheckMarkdownContent.esm.js";import"@backstage/core-components";import"react-markdown";import"rehype-raw";import"remark-gfm";import{CheckResultDetails as I}from"./CheckResultDetails.esm.js";import{FixMeDialog as G}from"./FixMeDialog.esm.js";import{JustificationDetails as R}from"./JustificationDetails.esm.js";import{SelectedValueProvider as J}from"./SelectedValueContext.esm.js";const L=A(o=>({markdownContent:{"& :last-child":{marginBottom:0},"& pre":{background:`${o.palette.background.paper} !important`},"& :first-child":{marginTop:0}},root:{padding:o.spacing(2),display:"flex",flexDirection:"column",gap:o.spacing(1.5)},header:{display:"flex",alignItems:"center",justifyContent:"space-between"},iconContainer:{display:"flex",alignItems:"center"},toggleButtonGroup:{marginLeft:"auto"},toggleButton:{padding:o.spacing(.5),fontSize:o.typography.pxToRem(12)},passed:{},failed:{},warning:{},notReported:{},notApplicable:{},exempt:{},error:{},icon:{marginRight:o.spacing(.5)},divider:{margin:o.spacing(.5,0)}}),{name:"CheckResultStateBox"}),M={[t.Passed]:"Check passed",[t.Failed]:"Check did not pass",[t.Warning]:"Check produced warning(s)",[t.NotReported]:"Check not reported",[t.NotApplicable]:"Check not applicable",[t.Exempt]:"Exempt from check",[t.Error]:"Check encountered an error."},O={[t.Passed]:"passed",[t.Failed]:"failed",[t.Warning]:"warning",[t.NotReported]:"notReported",[t.NotApplicable]:"notApplicable",[t.Exempt]:"exempt",[t.Error]:"error"},W=({name:o,state:l,details:i,templateRef:d})=>{const a=L(),[k,c]=v(!1),[p,C]=v("notes"),N=S(w).getOptionalStringArray("soundcheck.flags")?.includes("enable-fix-me"),m=i&&(i.ruleResult||i.applicabilityResult),y=()=>{c(!0)},b=()=>{c(!1)},B=(z,h)=>{h!==null&&C(h)},u=i?.notes?P.safeParse(i.notes):void 0,g=u?.success?u.data.data:void 0;return n(D,{variant:"outlined",className:`${a.root} ${a[O[l]]}`,children:[n("div",{className:a.header,children:[n("div",{className:a.iconContainer,children:[e(T,{className:a.icon,result:l}),e(F,{variant:"subtitle1",children:M[l]})]}),m&&n(E,{value:p,exclusive:!0,onChange:B,className:a.toggleButtonGroup,children:[e(x,{value:"notes",className:a.toggleButton,children:"Notes"}),e(x,{value:"details",className:a.toggleButton,children:"Details"})]})]}),p==="notes"&&n(r,{children:[i&&i.exemption&&n(r,{children:[e(s,{className:a.divider}),e(R,{justification:i.exemption,type:"exemption"})]}),i&&i.manualResult&&n(r,{children:[e(s,{className:a.divider}),e(R,{justification:i.manualResult,type:"manual"})]}),g&&n(f,{style:{maxHeight:"35vh",overflowY:"auto"},children:[e(s,{className:a.divider}),e($,{className:a.markdownContent,content:g})]}),N&&l===t.Failed&&d&&n(f,{display:"flex",flexDirection:"column",alignItems:"flex-end",mt:2,width:"100%",children:[e(j,{color:"primary",variant:"contained",onClick:y,children:"Fix"}),e(G,{title:`Fix ${o}`,open:k,setOpen:c,onClose:b,templateRef:d})]})]}),p==="details"&&e(r,{children:m&&n(r,{children:[e(s,{className:a.divider}),e(J,{children:e(I,{ruleResult:i.ruleResult,applicabilityResult:i.applicabilityResult})})]})})]})};export{W as ResultStateBox};
2
2
  //# sourceMappingURL=ResultStateBox.esm.js.map
@@ -1,2 +1,2 @@
1
- import{useTheme as u,Typography as r,TableContainer as E,Table as o,TableBody as m,TableRow as d,TableCell as i}from"@material-ui/core";import{styled as f}from"@mui/styles";import e from"react";import{CollapseRow as c}from"./CollapseRow.esm.js";const s=f("pre")({fontSize:".9em",lineHeight:"1.6",maxHeight:"250px",width:"100%",overflow:"scroll"}),b=n=>{const p=u(),t={...n.formState};delete t.backstage;const g={...n.formState.backstage};return e.createElement(e.Fragment,null,e.createElement(r,{variant:"h6",style:{marginBottom:31}},"The codemod will run with the following input:"),e.createElement(E,null,e.createElement(o,{"aria-label":"collapsible table"},e.createElement(m,null,e.createElement(c,{title:"Context",defaultOpen:!1},e.createElement(s,null,JSON.stringify(g,null,2))),Object.keys(t).length>0&&e.createElement(c,{title:"Input"},e.createElement("div",{style:{width:"auto",paddingTop:p.spacing(1),alignContent:"center"}},e.createElement(o,{style:{width:"100%"}},e.createElement(m,null,Object.entries(t).map(([a,l])=>e.createElement(d,{key:a},e.createElement(i,{padding:"normal",align:"left",size:"small"},e.createElement("strong",null,a)),e.createElement(i,{padding:"normal",align:"left",size:"small"},typeof l=="object"?e.createElement(s,null,JSON.stringify(l,null,2)):e.createElement(r,null,l?.toString()))))))))))))};export{b as ReviewStateComponent};
1
+ import{jsxs as i,Fragment as g,jsx as e}from"react/jsx-runtime";import{useTheme as f,Typography as o,TableContainer as b,Table as a,TableBody as d,TableRow as y,TableCell as c}from"@material-ui/core";import{styled as w}from"@mui/styles";import{CollapseRow as h}from"./CollapseRow.esm.js";const s=w("pre")({fontSize:".9em",lineHeight:"1.6",maxHeight:"250px",width:"100%",overflow:"scroll"}),u=n=>{const m=f(),t={...n.formState};delete t.backstage;const p={...n.formState.backstage};return i(g,{children:[e(o,{variant:"h6",style:{marginBottom:31},children:"The codemod will run with the following input:"}),e(b,{children:e(a,{"aria-label":"collapsible table",children:i(d,{children:[e(h,{title:"Context",defaultOpen:!1,children:e(s,{children:JSON.stringify(p,null,2)})}),Object.keys(t).length>0&&e(h,{title:"Input",children:e("div",{style:{width:"auto",paddingTop:m.spacing(1),alignContent:"center"},children:e(a,{style:{width:"100%"},children:e(d,{children:Object.entries(t).map(([r,l])=>i(y,{children:[e(c,{padding:"normal",align:"left",size:"small",children:e("strong",{children:r})}),e(c,{padding:"normal",align:"left",size:"small",children:typeof l=="object"?e(s,{children:JSON.stringify(l,null,2)}):e(o,{children:l?.toString()})})]},r))})})})})]})})})]})};export{u as ReviewStateComponent};
2
2
  //# sourceMappingURL=ReviewStateComponent.esm.js.map
@@ -1,2 +1,2 @@
1
- import u,{createContext as o,useState as c,useContext as n}from"react";const t=o(void 0),a=({children:e})=>{const[r,l]=c({factRef:null,path:null});return u.createElement(t.Provider,{value:{selectedValue:r,setSelectedValue:l}},e)},d=()=>{const e=n(t);if(!e)throw new Error("useSelectedValue must be used within a SelectedProvider");return e};export{a as SelectedValueProvider,d as useSelectedValue};
1
+ import{jsx as o}from"react/jsx-runtime";import{createContext as u,useState as c,useContext as n}from"react";const t=u(void 0),d=({children:e})=>{const[r,l]=c({factRef:null,path:null});return o(t.Provider,{value:{selectedValue:r,setSelectedValue:l},children:e})},s=()=>{const e=n(t);if(!e)throw new Error("useSelectedValue must be used within a SelectedProvider");return e};export{d as SelectedValueProvider,s as useSelectedValue};
2
2
  //# sourceMappingURL=SelectedValueContext.esm.js.map
@@ -1,2 +1,2 @@
1
- import{Typography as r}from"@material-ui/core";import{Skeleton as t}from"@material-ui/lab";import e from"react";import{FadeIn as l}from"../../FadeIn/FadeIn.esm.js";import{useStyles as n}from"../CheckDetails.esm.js";const c=()=>{const a=n();return e.createElement(l,null,e.createElement("div",{className:a.root,"data-testid":"check-details-view"},e.createElement("div",{className:a.topBar},e.createElement(r,{variant:"h2",className:a.title},e.createElement(t,{width:300,height:32})),e.createElement(t,{width:100,height:32})),e.createElement(t,{variant:"rect",height:120}),e.createElement("div",{"data-testid":"soundcheck-check-details-description"},e.createElement(r,{variant:"h3"},e.createElement(t,null)),e.createElement(t,null),e.createElement(t,null),e.createElement(t,null))))};export{c as CheckDetailsSkeleton};
1
+ import{jsx as t,jsxs as r}from"react/jsx-runtime";import{Typography as a}from"@material-ui/core";import{Skeleton as e}from"@material-ui/lab";import{FadeIn as h}from"../../FadeIn/FadeIn.esm.js";import{useStyles as o}from"../CheckDetails.esm.js";const c=()=>{const i=o();return t(h,{children:r("div",{className:i.root,"data-testid":"check-details-view",children:[r("div",{className:i.topBar,children:[t(a,{variant:"h2",className:i.title,children:t(e,{width:300,height:32})}),t(e,{width:100,height:32})]}),t(e,{variant:"rect",height:120}),r("div",{"data-testid":"soundcheck-check-details-description",children:[t(a,{variant:"h3",children:t(e,{})}),t(e,{}),t(e,{}),t(e,{})]})]})})};export{c as CheckDetailsSkeleton};
2
2
  //# sourceMappingURL=CheckDetailsSkeleton.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as b,Tooltip as h,Box as o,IconButton as C,CircularProgress as $}from"@material-ui/core";import x from"@material-ui/icons/Refresh";import e,{useState as l,useCallback as D}from"react";import{useExecuteCheck as w}from"../../hooks/checks/useExecuteCheck.esm.js";import{CheckIcon as z}from"../CheckIcon/CheckIcon.esm.js";import"../SoundcheckDialog/SoundcheckDialog.esm.js";import{CheckDryRunDialogButton as B}from"./CheckDryRunDialogButton.esm.js";import"./CheckDryRunDetails.esm.js";import"./CheckDryRunContext.esm.js";import"../CheckForm/utils/checkFormUtils.esm.js";const F=b(()=>({root:{display:"flex",alignItems:"center"},buttonWrapper:{height:24}})),I=({entityRef:n,check:s,refreshFact:c=!1})=>{const{mutateAsync:m}=w(),[r,p]=l(),[i,d]=l(null),[a,u]=l(!1),[k,E]=l(),[y,R]=l(),f=F(),g=D(async()=>{if(a)return;u(!0);const t=await m({entityRef:n,checker:s,dryRun:!0,shouldRefreshFacts:c}).catch(S=>{});t?.details&&d(t.details),t?.facts&&E(t.facts),t?.ruleResults&&R(t.ruleResults),p(t?.result),u(!1)},[s,n,m,a,c]);return e.createElement("div",{className:f.root},r&&e.createElement(h,{arrow:!0,title:`${r}${i?`: ${i}`:""}`,placement:"left"},e.createElement("span",{className:f.buttonWrapper,"aria-label":"check result"},e.createElement(z,{result:r}))),e.createElement(h,{arrow:!0,placement:"top",title:e.createElement(o,null,a?e.createElement(e.Fragment,null,e.createElement(o,null,"Executing dry run..."),e.createElement(o,null,c?"Refreshing facts for dry run can take a significant amount of time.":"Dry run can take additional time if facts are not cached.")):`Dry runs will ${c?"refresh facts":"use cached facts if available"}.`)},e.createElement("span",null,e.createElement(C,{size:"small",color:"inherit",onClick:g,disabled:a,"aria-label":"refresh"},a?e.createElement($,{size:16}):e.createElement(x,{fontSize:"small"})))),r&&e.createElement(B,{entityRef:n,check:s,checkResult:{checkResult:r,details:i},facts:k,ruleResults:y}))};export{I as CheckDryRun};
1
+ import{jsxs as m,jsx as e,Fragment as D}from"react/jsx-runtime";import{makeStyles as w,Tooltip as z,Box as n,IconButton as B,CircularProgress as F}from"@material-ui/core";import I from"@material-ui/icons/Refresh";import{useState as r,useCallback as S}from"react";import{useExecuteCheck as j}from"../../hooks/checks/useExecuteCheck.esm.js";import{CheckIcon as v}from"../CheckIcon/CheckIcon.esm.js";import"../SoundcheckDialog/SoundcheckDialog.esm.js";import{CheckDryRunDialogButton as A}from"./CheckDryRunDialogButton.esm.js";import"./CheckDryRunDetails.esm.js";import"./CheckDryRunContext.esm.js";import"../CheckForm/utils/checkFormUtils.esm.js";const E=w(()=>({root:{display:"flex",alignItems:"center"},buttonWrapper:{height:24}})),N=({entityRef:s,check:l,refreshFact:c=!1})=>{const{mutateAsync:o}=j(),[i,f]=r(),[p,d]=r(null),[a,u]=r(!1),[y,R]=r(),[k,b]=r(),[g,x]=r(),h=E(),C=S(async()=>{if(a)return;u(!0);const t=await o({entityRef:s,checker:l,dryRun:!0,shouldRefreshFacts:c}).catch(T=>{});t?.details&&d(t.details),t?.facts&&R(t.facts),t?.ruleResults&&b(t.ruleResults),t?.applicabilityResults&&x(t.applicabilityResults),f(t?.result),u(!1)},[l,s,o,a,c]);return m("div",{className:h.root,children:[i&&e("span",{className:h.buttonWrapper,"aria-label":"check result",children:e(v,{result:i})}),e(z,{arrow:!0,placement:"top",title:e(n,{children:a?m(D,{children:[e(n,{children:"Executing dry run..."}),e(n,{children:c?"Refreshing facts for dry run can take a significant amount of time.":"Dry run can take additional time if facts are not cached."})]}):`Dry runs will ${c?"refresh facts":"use cached facts if available"}.`}),children:e("span",{children:e(B,{size:"small",color:"inherit",onClick:C,disabled:a,"aria-label":"refresh",children:a?e(F,{size:16}):e(I,{fontSize:"small"})})})}),i&&e(A,{entityRef:s,check:l,checkResult:{checkResult:i,details:p},facts:y,ruleResults:k,applicabilityResults:g})]})};export{N as CheckDryRun};
2
2
  //# sourceMappingURL=CheckDryRun.esm.js.map
@@ -1,2 +1,2 @@
1
- import p,{createContext as C,useState as t,useCallback as y}from"react";import"./CheckDryRun.esm.js";import{CheckDryRunDialog as D}from"./CheckDryRunDialog.esm.js";import"@material-ui/core";import"./CheckDryRunDetails.esm.js";import"../CheckForm/utils/checkFormUtils.esm.js";const n=C({updateEntityRef:()=>{},updateCheck:()=>{},updateOpen:()=>{},updateResult:()=>{},setValues:()=>{},updateFacts:()=>{},updateRuleResults:()=>{},open:!1}),E=({children:o})=>{const[R,u]=t(!1),[d,s]=t(""),[i,a]=t(),[h,c]=t(),[k,l]=t(),[f,r]=t(),m=y(e=>{u(!0),e.entityRef&&s(e.entityRef),e.check&&a(e.check),e.checkResult&&c(e.checkResult),e.facts&&l(e.facts),e.ruleResults&&r(e.ruleResults)},[]);return p.createElement(n.Provider,{value:{entityRef:d,updateEntityRef:s,check:i,updateCheck:a,open:R,updateOpen:u,result:h,updateResult:c,setValues:m,facts:k,updateFacts:l,ruleResults:f,updateRuleResults:r}},p.createElement(D,null),o)};export{n as CheckDryRunContext,E as CheckDryRunProvider};
1
+ import{jsxs as C,jsx as b}from"react/jsx-runtime";import{createContext as x,useState as e,useCallback as D}from"react";import"./CheckDryRun.esm.js";import{CheckDryRunDialog as v}from"./CheckDryRunDialog.esm.js";import"@material-ui/core";import"./CheckDryRunDetails.esm.js";import"../CheckForm/utils/checkFormUtils.esm.js";const r=x({updateEntityRef:()=>{},updateCheck:()=>{},updateOpen:()=>{},updateResult:()=>{},setValues:()=>{},updateFacts:()=>{},updateRuleResults:()=>{},updateApplicabilityResults:()=>{},open:!1}),j=({children:R})=>{const[o,u]=e(!1),[n,s]=e(""),[d,l]=e(),[y,p]=e(),[h,a]=e(),[k,i]=e(),[f,c]=e(),m=D(t=>{u(!0),t.entityRef&&s(t.entityRef),t.check&&l(t.check),t.checkResult&&p(t.checkResult),t.facts&&a(t.facts),t.ruleResults&&i(t.ruleResults),t.applicabilityResults&&c(t.applicabilityResults)},[]);return C(r.Provider,{value:{entityRef:n,updateEntityRef:s,check:d,updateCheck:l,open:o,updateOpen:u,result:y,updateResult:p,setValues:m,facts:h,updateFacts:a,ruleResults:k,updateRuleResults:i,applicabilityResults:f,updateApplicabilityResults:c},children:[b(v,{}),R]})};export{r as CheckDryRunContext,j as CheckDryRunProvider};
2
2
  //# sourceMappingURL=CheckDryRunContext.esm.js.map