@spotify/backstage-plugin-soundcheck 0.16.1 → 0.16.3

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 +37 -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{TrackCheckSchema as o,CampaignDetailsSchema as S}from"@spotify/backstage-plugin-soundcheck-common";import{z as t}from"zod";import{CHECK_IS_REQUIRED_MSG as p,FIELD_IS_REQUIRED_MSG as a,formFiltersSchema as E}from"../../../utils/validation.esm.js";const r=0,i=100,_=100,s=100,c="Ending date must come after the Starting Date",l=t.strictObject({checks:t.array(o.extend({key:t.string().optional()})).min(1,p)}),g=t.strictObject({id:t.number().optional(),name:t.string().min(1,a).max(s,`Input must be less than ${s} characters`),description:t.string().min(1,a),passRate:t.coerce.number().min(r,`Minimum pass rate is ${r}%`).max(i,`Maximum pass rate is ${i}%`)}),D=t.strictObject({milestones:t.array(g).min(1,a)}),m=t.coerce.string().nullable().refine(e=>e!==null,{message:a}),M=t.strictObject({startDate:m,targetCompletionDate:m}),A=({startDate:e,targetCompletionDate:n})=>e&&n?new Date(e)<new Date(n):!0,T=S.merge(M),h=e=>e.refine(A,{message:c,path:["targetCompletionDate"]}),I=t.strictObject({detailsStep:h(T),tracksStep:l,filtersStep:E,milestonesStep:D});export{_ as CAMPAIGN_NAME_MAX_LENGTH,c as END_AFTER_START_DATE_MSG,i as MILESTONE_MAX_PASS_RATE,r as MILESTONE_MIN_PASS_RATE,s as MILESTONE_NAME_MAX_LENGTH,m as campaignDateTimeSchema,I as campaignFormSchema};
1
+ import{TrackCheckSchema as o,CampaignDetailsSchema as p}from"@spotify/backstage-plugin-soundcheck-common";import{z as t}from"zod";import{CHECK_IS_REQUIRED_MSG as S,FIELD_IS_REQUIRED_MSG as a,formFiltersSchema as E}from"../../../utils/validation.esm.js";const r=0,i=100,_=100,s=100,c="Ending date must come after the Starting Date",l=t.strictObject({checks:t.array(o.extend({key:t.string().optional()})).min(1,S)}),g=t.strictObject({id:t.number().optional(),name:t.string().min(1,a).max(s,`Input must be less than ${s} characters`),description:t.string().min(1,a),passRate:t.coerce.number().min(r,`Minimum pass rate is ${r}%`).max(i,`Maximum pass rate is ${i}%`)}),D=t.strictObject({milestones:t.array(g).min(1,a)}),m=t.coerce.string().nullable().refine(e=>e!==null,{message:a}),M=t.strictObject({startDate:m,targetCompletionDate:m}),A=t.strictObject({draft:t.boolean().optional()}),T=({startDate:e,targetCompletionDate:n})=>e&&n?new Date(e)<new Date(n):!0,b=p.merge(M).merge(A),h=e=>e.refine(T,{message:c,path:["targetCompletionDate"]}),I=t.strictObject({detailsStep:h(b),tracksStep:l,filtersStep:E,milestonesStep:D});export{_ as CAMPAIGN_NAME_MAX_LENGTH,c as END_AFTER_START_DATE_MSG,i as MILESTONE_MAX_PASS_RATE,r as MILESTONE_MIN_PASS_RATE,s as MILESTONE_NAME_MAX_LENGTH,m as campaignDateTimeSchema,I as campaignFormSchema};
2
2
  //# sourceMappingURL=validation.esm.js.map
@@ -1,2 +1,2 @@
1
- import{MarkdownContent as U,Content as N}from"@backstage/core-components";import{useRouteRef as A}from"@backstage/core-plugin-api";import{EntityRefLink as V}from"@backstage/plugin-catalog-react";import{usePermission as R}from"@backstage/plugin-permission-react";import{makeStyles as W,Button as $,Paper as j,Grid as o,Typography as b,Box as q}from"@material-ui/core";import{soundcheckCampaignReadPermission as J,soundcheckCampaignUpdatePermission as K}from"@spotify/backstage-plugin-soundcheck-common";import{DateTime as S}from"luxon";import t,{useMemo as d}from"react";import{useParams as Q,useNavigate as X}from"react-router-dom";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import{useGetCampaigns as Y}from"../../hooks/campaigns/useGetCampaigns.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useCheckStatuses as Z}from"../../hooks/aggregations/useCheckStatuses.esm.js";import{useCheckStatusHistories as _}from"../../hooks/aggregations/useCheckStatusHistories.esm.js";import{useSearchParam as g}from"../../hooks/useSearchParam.esm.js";import{campaignEditRouteRef as ee}from"../../routes.esm.js";import{CheckCard as te}from"../CheckCard/CheckCard.esm.js";import{LoadingIndicator as ae}from"../LoadingIndicator/LoadingIndicator.esm.js";import{PageWarningMessage as ie}from"../PageWarningMessage/PageWarningMessage.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as re}from"../SoundcheckHeader/useHeader.esm.js";import{FilterBar as ne}from"../TrackPage/FilterBar/FilterBar.esm.js";import{toFilter as oe}from"../TrackPage/FilterBar/util.esm.js";import{TrackEntitiesTable as se}from"../TrackPage/TrackEntitiesTable/TrackEntitiesTable.esm.js";import{CampaignStatusHistoryTile as me}from"./CampaignStatusHistoryTile.esm.js";import{CampaignStatusTile as ce}from"./CampaignStatusTile.esm.js";import{DaysRemainingTile as le}from"./DaysRemainingTile.esm.js";const pe=W(e=>({root:{height:"100%",background:e.palette.background.default},header:{backgroundColor:e.palette.background.paper,borderRadius:0,marginBottom:e.spacing(2),paddingLeft:e.spacing(1),borderLeft:"none",borderRight:"none"},progressContainer:{display:"flex",marginBottom:e.spacing(3)},campaignContainerContent:{paddingTop:e.spacing(1),paddingBottom:e.spacing(1),backgroundColor:e.palette.background.paper},editButton:{marginLeft:"auto"},checksContainer:{},entitiesContainer:{marginTop:e.spacing(3)},headerDescription:{fontSize:e.typography.body2.fontSize,margin:e.spacing(.5,0,0),"& p":{margin:0},"& a":{color:"inherit",textDecoration:"underline"}},content:{paddingTop:0},ownerLink:{"& span":{color:"inherit","&:hover":{textDecoration:"underline"}}},sectionTitle:{paddingBottom:e.spacing(1)}})),de=()=>{const e=pe(),[s,T]=g("owners"),[m,x]=g("lifecycles"),[c,I]=g("types"),[l,L]=g("systems"),p=d(()=>oe({lifecycles:m,owners:s,types:c,systems:l}),[m,s,c,l]),{campaignId:n}=Q(),{data:B,isLoading:u}=Y({ids:[n],first:1}),r=B?.edges?.[0]?.node,a=r?.track,y=a?.levels?.[0],{loading:D,allowed:P}=R({permission:J,resourceRef:n}),{loading:h,allowed:E}=R({permission:K,resourceRef:n}),k=r?S.fromISO(r.startDate):void 0,M=k?Math.max(Math.ceil(S.now().diff(k,"days").days),1):void 0,C=Array.from(new Set(a?.levels.flatMap(i=>i.checks).map(i=>i.id)??[])),{data:z}=Z({trackId:a?.id,checkIds:C,filter:p},!!a),{data:F}=_({trackId:a?.id,checkIds:C,numberOfDays:M??30,filter:p},!!a),w=X(),v=A(ee),H=d(()=>a?.ownerEntityRef?t.createElement(V,{color:"inherit",entityRef:a.ownerEntityRef,className:e.ownerLink}):null,[a?.ownerEntityRef,e.ownerLink]),O=d(()=>!h&&E&&a?.isEditable?t.createElement($,{className:e.editButton,variant:"contained",color:"primary",onClick:()=>{w(v({campaignId:n}))}},"Edit Campaign"):null,[E,e.editButton,v,h,w,a,n]),G=d(()=>a?.description?t.createElement(U,{className:e.headerDescription,content:a.description}):null,[e.headerDescription,a?.description]);return re({title:a?.name,description:G,customSubtitle:H,sectionRight:O}),t.createElement("div",null,t.createElement(ie,{entityName:"track",entityId:n,showNotFound:!u&&!r,showCannotView:!D&&!P}),u&&t.createElement(ae,null),a&&t.createElement("div",{className:e.root},t.createElement(j,{elevation:1,className:e.header},t.createElement(N,{className:e.campaignContainerContent},t.createElement(ne,{track:a,owners:s,setOwners:T,lifecycles:m,setLifecycles:x,types:c,setTypes:I,systems:l,setSystems:L}))),t.createElement(N,{className:e.content},t.createElement("div",{className:e.progressContainer},t.createElement(o,{container:!0,spacing:2},t.createElement(o,{item:!0,xs:2},t.createElement(le,{campaign:r})),t.createElement(o,{item:!0,xs:4},t.createElement(ce,{campaign:r,filter:p})),t.createElement(o,{item:!0,xs:6},t.createElement(me,{campaign:r,filter:p})))),t.createElement("div",{className:e.checksContainer},t.createElement(b,{variant:"h3",className:e.sectionTitle},"Checks"),y&&t.createElement(q,{className:e.content},t.createElement(o,{container:!0,spacing:1},y.checks.map(i=>t.createElement(o,{item:!0,xs:12,sm:6,md:4,key:i.id},t.createElement(te,{track:a,check:i,status:z?.find(f=>f.id===i.id),history:F?.find(f=>f.id===i.id)}))))),a&&t.createElement("div",{className:e.entitiesContainer},t.createElement(b,{variant:"h3",className:e.sectionTitle},"Entities"),t.createElement(se,{track:a,initialPageSize:10,lifecycles:m,owners:s,types:c,systems:l}))))))};export{de as CampaignInsightsPage};
1
+ import{jsx as i,jsxs as a}from"react/jsx-runtime";import{Content as S}from"@backstage/core-components";import{useRouteRef as U}from"@backstage/core-plugin-api";import{EntityRefLink as A}from"@backstage/plugin-catalog-react";import{usePermission as b}from"@backstage/plugin-permission-react";import{makeStyles as V,Button as W,Paper as q,Grid as s,Typography as T,Box as J}from"@material-ui/core";import{soundcheckCampaignReadPermission as K,soundcheckCampaignUpdatePermission as Q}from"@spotify/backstage-plugin-soundcheck-common";import{DateTime as x}from"luxon";import{useMemo as g}from"react";import{useParams as X,useNavigate as Y}from"react-router-dom";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import{useGetCampaigns as Z}from"../../hooks/campaigns/useGetCampaigns.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useCheckStatuses as _}from"../../hooks/aggregations/useCheckStatuses.esm.js";import{useCheckStatusHistories as $}from"../../hooks/aggregations/useCheckStatusHistories.esm.js";import{useSearchParam as f}from"../../hooks/useSearchParam.esm.js";import{campaignEditRouteRef as ee}from"../../routes.esm.js";import{CheckCard as ie}from"../CheckCard/CheckCard.esm.js";import{LoadingIndicator as te}from"../LoadingIndicator/LoadingIndicator.esm.js";import{PageWarningMessage as re}from"../PageWarningMessage/PageWarningMessage.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as oe}from"../SoundcheckHeader/useHeader.esm.js";import{SoundcheckMarkdownContent as ne}from"../SoundcheckMarkdownContent/SoundcheckMarkdownContent.esm.js";import"react-markdown";import"rehype-raw";import"remark-gfm";import{FilterBar as ae}from"../TrackPage/FilterBar/FilterBar.esm.js";import{toFilter as se}from"../TrackPage/FilterBar/util.esm.js";import{TrackEntitiesTable as me}from"../TrackPage/TrackEntitiesTable/TrackEntitiesTable.esm.js";import{CampaignStatusHistoryTile as ce}from"./CampaignStatusHistoryTile.esm.js";import{CampaignStatusTile as de}from"./CampaignStatusTile.esm.js";import{DaysRemainingTile as pe}from"./DaysRemainingTile.esm.js";const le=V(e=>({root:{height:"100%",background:e.palette.background.default},header:{backgroundColor:e.palette.background.paper,borderRadius:0,marginBottom:e.spacing(2),paddingLeft:e.spacing(1),borderLeft:"none",borderRight:"none"},progressContainer:{display:"flex",marginBottom:e.spacing(3)},campaignContainerContent:{paddingTop:e.spacing(1),paddingBottom:e.spacing(1),backgroundColor:e.palette.background.paper},editButton:{marginLeft:"auto"},checksContainer:{},entitiesContainer:{marginTop:e.spacing(3)},headerDescription:{fontSize:e.typography.body2.fontSize,margin:e.spacing(.5,0,0),"& p":{margin:0},"& a":{color:"inherit",textDecoration:"underline"}},content:{paddingTop:0},ownerLink:{"& span":{color:"inherit","&:hover":{textDecoration:"underline"}}},sectionTitle:{paddingBottom:e.spacing(1)}})),ge=()=>{const e=le(),[m,I]=f("owners"),[c,L]=f("lifecycles"),[d,B]=f("types"),[p,D]=f("systems"),l=g(()=>se({lifecycles:c,owners:m,types:d,systems:p}),[c,m,d,p]),{campaignId:n}=X(),{data:E,isLoading:u}=Z({ids:[n],first:1}),o=E?.edges?.[0]?.node,t=o?.track,y=t?.levels?.[0],{loading:P,allowed:M}=b({permission:K,resourceRef:n}),{loading:k,allowed:C}=b({permission:Q,resourceRef:n}),w=o?x.fromISO(o.startDate):void 0,z=w?Math.max(Math.ceil(x.now().diff(w,"days").days),1):void 0,R=Array.from(new Set(t?.levels.flatMap(r=>r.checks).map(r=>r.id)??[])),{data:F}=_({trackId:t?.id,checkIds:R,filter:l},!!t),{data:H}=$({trackId:t?.id,checkIds:R,numberOfDays:z??30,filter:l},!!t),v=Y(),N=U(ee),O=g(()=>t?.ownerEntityRef?i(A,{color:"inherit",entityRef:t.ownerEntityRef,className:e.ownerLink}):null,[t?.ownerEntityRef,e.ownerLink]),G=g(()=>!k&&C&&t?.isEditable?i(W,{className:e.editButton,variant:"contained",color:"primary",onClick:()=>{v(N({campaignId:n}))},children:"Edit Campaign"}):null,[C,e.editButton,N,k,v,t,n]),j=g(()=>t?.description?i(ne,{className:e.headerDescription,content:t.description}):null,[e.headerDescription,t?.description]);return oe({title:t?.name,description:j,customSubtitle:O,sectionRight:G}),a("div",{children:[i(re,{entityName:"track",entityId:n,showNotFound:!u&&!o,showCannotView:!P&&!M}),u&&i(te,{}),t&&a("div",{className:e.root,children:[i(q,{elevation:1,className:e.header,children:i(S,{className:e.campaignContainerContent,children:i(ae,{track:t,owners:m,setOwners:I,lifecycles:c,setLifecycles:L,types:d,setTypes:B,systems:p,setSystems:D})})}),a(S,{className:e.content,children:[i("div",{className:e.progressContainer,children:a(s,{container:!0,spacing:2,children:[i(s,{item:!0,xs:2,children:i(pe,{campaign:o})}),i(s,{item:!0,xs:4,children:i(de,{campaign:o,filter:l})}),i(s,{item:!0,xs:6,children:i(ce,{campaign:o,filter:l})})]})}),a("div",{className:e.checksContainer,children:[i(T,{variant:"h3",className:e.sectionTitle,children:"Checks"}),y&&i(J,{className:e.content,children:i(s,{container:!0,spacing:1,children:y.checks.map(r=>i(s,{item:!0,xs:12,sm:6,md:4,children:i(ie,{track:t,check:r,status:F?.find(h=>h.id===r.id),history:H?.find(h=>h.id===r.id)})},r.id))})}),t&&a("div",{className:e.entitiesContainer,children:[i(T,{variant:"h3",className:e.sectionTitle,children:"Entities"}),i(me,{track:t,initialPageSize:10,lifecycles:c,owners:m,types:d,systems:p})]})]})]})]})]})};export{ge as CampaignInsightsPage};
2
2
  //# sourceMappingURL=CampaignInsightsPage.esm.js.map
@@ -1,2 +1,2 @@
1
- import{useTheme as d,Paper as f,Box as h}from"@material-ui/core";import{makeStyles as u}from"@material-ui/core/styles";import{DateTime as m}from"luxon";import i,{useMemo as g}from"react";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useCertificationStatusHistory as y}from"../../hooks/aggregations/useCertificationStatusHistory.esm.js";import"react-router-dom";import{AreaChart as x}from"../AreaChart/AreaChart.esm.js";import{LineChartPlaceholder as S}from"../Charts/LineChart/LineChartPlaceholder.esm.js";const C=u(t=>({card:{display:"flex",flexDirection:"column",border:`1px solid ${t.palette.divider}`,height:"100%",width:"100%"},title:{fontWeight:"bold",fontSize:"1.1rem",lineHeight:`${t.typography.h5.fontSize}px`,cursor:"default"},content:{padding:t.spacing(1,2,1,0),width:"100%",height:"100%"}}));function E({campaign:t,filter:n}){const p=d(),r=C(),c=m.fromISO(t.startDate),l=Math.max(Math.ceil(m.now().diff(c,"days").days),1),{data:a}=y({trackId:t.track.id,filter:n,numberOfDays:l},!!t),e=a?.certificationStatusHistory.numberOfEntities??0,o=g(()=>e>0?a?.certificationStatusHistory.history.map(s=>({date:s.date,Passed:s.statusByLevel[0].passed/e*100})):[],[e,a]);return i.createElement(f,{className:r.card},i.createElement(h,{className:r.content},o?.length?i.createElement(x,{data:o,categories:["Passed"],categoryColors:{Passed:p.palette.success.main},index:"date",minValue:0,maxValue:100,showLegend:!1}):i.createElement(S,{height:200,text:e>0?"No Historical Data":"No Applicable Entities"})))}export{E as CampaignStatusHistoryTile};
1
+ import{jsx as i}from"react/jsx-runtime";import{useTheme as l,Paper as f,Box as h}from"@material-ui/core";import{makeStyles as u}from"@material-ui/core/styles";import{DateTime as m}from"luxon";import{useMemo as g}from"react";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useCertificationStatusHistory as y}from"../../hooks/aggregations/useCertificationStatusHistory.esm.js";import"react-router-dom";import{AreaChart as x}from"../AreaChart/AreaChart.esm.js";import{LineChartPlaceholder as S}from"../Charts/LineChart/LineChartPlaceholder.esm.js";const C=u(t=>({card:{display:"flex",flexDirection:"column",border:`1px solid ${t.palette.divider}`,height:"100%",width:"100%"},title:{fontWeight:"bold",fontSize:"1.1rem",lineHeight:`${t.typography.h5.fontSize}px`,cursor:"default"},content:{padding:t.spacing(1,2,1,0),width:"100%",height:"100%"}}));function H({campaign:t,filter:p}){const n=l(),a=C(),c=m.fromISO(t.startDate),d=Math.max(Math.ceil(m.now().diff(c,"days").days),1),{data:r}=y({trackId:t.track.id,filter:p,numberOfDays:d},!!t),e=r?.certificationStatusHistory.numberOfEntities??0,o=g(()=>e>0?r?.certificationStatusHistory.history.map(s=>({date:s.date,Passed:s.statusByLevel[0].passed/e*100})):[],[e,r]);return i(f,{className:a.card,children:i(h,{className:a.content,children:o?.length?i(x,{data:o,categories:["Passed"],categoryColors:{Passed:n.palette.success.main},index:"date",minValue:0,maxValue:100,showLegend:!1}):i(S,{height:200,text:e>0?"No Historical Data":"No Applicable Entities"})})})}export{H as CampaignStatusHistoryTile};
2
2
  //# sourceMappingURL=CampaignStatusHistoryTile.esm.js.map
@@ -1,2 +1,2 @@
1
- import{useTheme as D,Paper as x,Box as n,Grid as v,Typography as u}from"@material-ui/core";import{makeStyles as I}from"@material-ui/core/styles";import N from"@material-ui/icons/TrendingDown";import C from"@material-ui/icons/TrendingFlat";import k from"@material-ui/icons/TrendingUp";import{DateTime as h}from"luxon";import e,{useMemo as B}from"react";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useCertificationStatus as R}from"../../hooks/aggregations/useCertificationStatus.esm.js";import{useCertificationStatusHistory as T}from"../../hooks/aggregations/useCertificationStatusHistory.esm.js";import"react-router-dom";import{CategoryBar as w}from"../CategoryBar/CategoryBar.esm.js";import{LoadingIndicator as L}from"../LoadingIndicator/LoadingIndicator.esm.js";const b=I(t=>({card:{display:"flex",flexDirection:"column",border:`1px solid ${t.palette.divider}`,height:"100%"},content:{padding:t.spacing(1),display:"flex",margin:t.spacing(1),gap:t.spacing(1)},item:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:t.spacing(.5)},legendDash:{width:t.spacing(2),height:t.spacing(1),borderRadius:t.spacing(.375),marginRight:t.spacing(1)},category:{display:"flex",alignItems:"center",flex:1,marginRight:t.spacing(2)}}));function E({label:t,value:m,total:a,color:s,valueFormatter:c}){const p=b();return e.createElement(v,{item:!0,xs:12,className:p.item},e.createElement(n,{className:p.category},e.createElement("span",{className:p.legendDash,style:{backgroundColor:s}}),e.createElement(u,null,t)),a&&e.createElement(u,null,c(m)," of ",c(a)," (",Math.round(m/a*100),"%)"))}function M({campaign:t,filter:m}){const a=D(),s=b(),{data:c,isLoading:p}=R({trackId:t.track.id,filter:m},!0),i=c?.certificationStatus.statusByLevel[0],F=Math.max(Math.ceil(h.now().diff(h.fromISO(t.startDate),"days").days),1),{data:f}=T({trackId:t.track.id,filter:m,numberOfDays:F},!!t),o=c?.certificationStatus.numberOfEntities??0,d=B(()=>{if(o===void 0||f===void 0||i===void 0)return;const r=(f.certificationStatusHistory.history[0]?.statusByLevel[0].passed??0)/o*100;return i.passed/o*100-r},[f,i,o]),g=r=>r>=1e6?`${(r/1e6).toFixed(1)}M`:r>=1e3?`${(r/1e3).toFixed(1)}K`:r.toString();let y=C,l;return d&&(l=`${d.toFixed(0)}% since campaign start`,d<=-1?(y=N,l=`-${l}`):d>=1&&(y=k,l=`+${l}`)),p?e.createElement(x,{className:s.card},e.createElement(L,null)):e.createElement(x,{className:s.card},i?e.createElement(n,{className:s.content},e.createElement(n,{width:"100%"},e.createElement(w,{data:i,valueFormatter:g,categories:["passed","failed","notReported"],categoryFormatter:r=>r.replace(/\b\w/g,S=>S.toUpperCase()),colors:[a.palette.success.main,a.palette.error.main,a.palette.text.disabled]}),e.createElement(n,{paddingTop:"12px"},e.createElement(v,{spacing:2},e.createElement(E,{label:"Passing",value:i.passed,total:o,color:a.palette.success.main,valueFormatter:g}),e.createElement(E,{label:"Failing",value:i.failed,total:o,color:a.palette.error.main,valueFormatter:g}),e.createElement(E,{label:"Not Reported",value:i.notReported,total:o,color:a.palette.text.disabled,valueFormatter:g}),!!d&&e.createElement(n,{display:"flex",alignItems:"center",paddingTop:"12px"},e.createElement(y,null),e.createElement(u,{style:{marginLeft:a.spacing(1)}},l)))))):e.createElement(n,{margin:"auto"},e.createElement(u,{variant:"subtitle1"},"No Data")))}export{M as CampaignStatusTile};
1
+ import{jsx as t,jsxs as s}from"react/jsx-runtime";import{useTheme as C,Paper as v,Box as l,Grid as b,Typography as g}from"@material-ui/core";import{makeStyles as I}from"@material-ui/core/styles";import k from"@material-ui/icons/TrendingDown";import B from"@material-ui/icons/TrendingFlat";import R from"@material-ui/icons/TrendingUp";import{DateTime as N}from"luxon";import{useMemo as T}from"react";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useCertificationStatus as w}from"../../hooks/aggregations/useCertificationStatus.esm.js";import{useCertificationStatusHistory as L}from"../../hooks/aggregations/useCertificationStatusHistory.esm.js";import"react-router-dom";import{compactNumberFormatter as f}from"../../utils/formatters.esm.js";import{CategoryBar as M}from"../CategoryBar/CategoryBar.esm.js";import{LoadingIndicator as $}from"../LoadingIndicator/LoadingIndicator.esm.js";const F=I(e=>({card:{display:"flex",flexDirection:"column",border:`1px solid ${e.palette.divider}`,height:"100%"},content:{padding:e.spacing(1),display:"flex",margin:e.spacing(1),gap:e.spacing(1)},item:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:e.spacing(.5)},legendDash:{width:e.spacing(2),height:e.spacing(1),borderRadius:e.spacing(.375),marginRight:e.spacing(1)},category:{display:"flex",alignItems:"center",flex:1,marginRight:e.spacing(2)}}));function x({label:e,value:n,total:a,color:m,valueFormatter:c}){const p=F();return s(b,{item:!0,xs:12,className:p.item,children:[s(l,{className:p.category,children:[t("span",{className:p.legendDash,style:{backgroundColor:m}}),t(g,{children:e})]}),a&&s(g,{children:[c(n)," of ",c(a)," (",Math.round(n/a*100),"%)"]})]})}function j({campaign:e,filter:n}){const a=C(),m=F(),{data:c,isLoading:p}=w({trackId:e.track.id,filter:n},!0),r=c?.certificationStatus.statusByLevel[0],D=Math.max(Math.ceil(N.now().diff(N.fromISO(e.startDate),"days").days),1),{data:u}=L({trackId:e.track.id,filter:n,numberOfDays:D},!!e),i=c?.certificationStatus.numberOfEntities??0,d=T(()=>{if(i===void 0||u===void 0||r===void 0)return;const y=(u.certificationStatusHistory.history[0]?.statusByLevel[0].passed??0)/i*100;return r.passed/i*100-y},[u,r,i]);let h=B,o;return d&&(o=`${d.toFixed(0)}% since campaign start`,d<=-1?(h=k,o=`-${o}`):d>=1&&(h=R,o=`+${o}`)),p?t(v,{className:m.card,children:t($,{})}):t(v,{className:m.card,children:r?t(l,{className:m.content,children:s(l,{width:"100%",children:[t(M,{data:r,valueFormatter:f,categories:["passed","failed","notReported"],categoryFormatter:y=>y.replace(/\b\w/g,S=>S.toUpperCase()),colors:[a.palette.success.main,a.palette.error.main,a.palette.text.disabled]}),t(l,{paddingTop:"12px",children:s(b,{spacing:2,children:[t(x,{label:"Passing",value:r.passed,total:i,color:a.palette.success.main,valueFormatter:f}),t(x,{label:"Failing",value:r.failed,total:i,color:a.palette.error.main,valueFormatter:f}),t(x,{label:"Not Reported",value:r.notReported,total:i,color:a.palette.text.disabled,valueFormatter:f}),!!d&&s(l,{display:"flex",alignItems:"center",paddingTop:"12px",children:[t(h,{}),t(g,{style:{marginLeft:a.spacing(1)},children:o})]})]})})]})}):t(l,{margin:"auto",children:t(g,{variant:"subtitle1",children:"No Data"})})})}export{j as CampaignStatusTile};
2
2
  //# sourceMappingURL=CampaignStatusTile.esm.js.map
@@ -1,2 +1,2 @@
1
- import{Paper as m,Typography as i,Divider as s}from"@material-ui/core";import{makeStyles as d}from"@material-ui/core/styles";import{DateTime as n}from"luxon";import t from"react";const p=d(a=>({root:{display:"flex",flexDirection:"column",alignItems:"center",overflow:"hidden",width:"100%",height:"100%",padding:0},textWrapper:{display:"flex",flexDirection:"column",flexGrow:1,alignItems:"center",justifyContent:"center",padding:a.spacing(1)},daysRemaining:{textAlign:"center",marginBottom:a.spacing(.5)},daysRemainingText:{textAlign:"center",fontWeight:"bold"},divider:{width:"100%"},dateContainer:{display:"flex",flexDirection:"row",justifyContent:"flex-start",width:"100%",padding:a.spacing(1),flexGrow:0},dateSection:{width:"100%",paddingLeft:a.spacing(.5)},dateLabel:{fontSize:a.typography.caption.fontSize,color:a.palette.text.secondary},dateValue:{fontSize:a.typography.subtitle2.fontSize,color:a.palette.text.primary},verticalDivider:{height:"100%"}}));function g({campaign:a}){const e=p(),l=n.fromISO(a.startDate),r=n.fromISO(a.targetCompletionDate),c=n.now(),o=Math.max(Math.ceil(r.diff(c,"days").days),0);return t.createElement(m,{className:e.root},t.createElement("div",{className:e.textWrapper},t.createElement(i,{variant:"h1",className:e.daysRemaining},o),t.createElement(i,{variant:"subtitle2",className:e.daysRemainingText},o===1?"DAY REMAINING":"DAYS REMAINING")),t.createElement(s,{className:e.divider}),t.createElement("div",{className:e.dateContainer},t.createElement("div",{className:e.dateSection},t.createElement(i,{className:e.dateLabel},"START"),t.createElement(i,{className:e.dateValue},l.toLocaleString({month:"short",day:"numeric"}).toLocaleUpperCase())),t.createElement("div",{className:`${e.dateSection}`},t.createElement(i,{className:e.dateLabel},"END"),t.createElement(i,{className:e.dateValue},r.toLocaleString({month:"short",day:"numeric"}).toLocaleUpperCase()))))}export{g as DaysRemainingTile};
1
+ import{jsxs as n,jsx as a}from"react/jsx-runtime";import{Paper as c,Typography as i,Divider as m}from"@material-ui/core";import{makeStyles as p}from"@material-ui/core/styles";import{DateTime as r}from"luxon";const h=p(t=>({root:{display:"flex",flexDirection:"column",alignItems:"center",overflow:"hidden",width:"100%",height:"100%",padding:0},textWrapper:{display:"flex",flexDirection:"column",flexGrow:1,alignItems:"center",justifyContent:"center",padding:t.spacing(1)},daysRemaining:{textAlign:"center",marginBottom:t.spacing(.5)},daysRemainingText:{textAlign:"center",fontWeight:"bold"},divider:{width:"100%"},dateContainer:{display:"flex",flexDirection:"row",justifyContent:"flex-start",width:"100%",padding:t.spacing(1),flexGrow:0},dateSection:{width:"100%",paddingLeft:t.spacing(.5)},dateLabel:{fontSize:t.typography.caption.fontSize,color:t.palette.text.secondary},dateValue:{fontSize:t.typography.subtitle2.fontSize,color:t.palette.text.primary},verticalDivider:{height:"100%"}}));function g({campaign:t}){const e=h(),d=r.fromISO(t.startDate),o=r.fromISO(t.targetCompletionDate),s=r.now(),l=Math.max(Math.ceil(o.diff(s,"days").days),0);return n(c,{className:e.root,children:[n("div",{className:e.textWrapper,children:[a(i,{variant:"h1",className:e.daysRemaining,children:l}),a(i,{variant:"subtitle2",className:e.daysRemainingText,children:l===1?"DAY REMAINING":"DAYS REMAINING"})]}),a(m,{className:e.divider}),n("div",{className:e.dateContainer,children:[n("div",{className:e.dateSection,children:[a(i,{className:e.dateLabel,children:"START"}),a(i,{className:e.dateValue,children:d.toLocaleString({month:"short",day:"numeric"}).toLocaleUpperCase()})]}),n("div",{className:`${e.dateSection}`,children:[a(i,{className:e.dateLabel,children:"END"}),a(i,{className:e.dateValue,children:o.toLocaleString({month:"short",day:"numeric"}).toLocaleUpperCase()})]})]})]})}export{g as DaysRemainingTile};
2
2
  //# sourceMappingURL=DaysRemainingTile.esm.js.map
@@ -1,2 +1,2 @@
1
- import{useRouteRef as m}from"@backstage/core-plugin-api";import{usePermission as n}from"@backstage/plugin-permission-react";import{Button as s}from"@material-ui/core";import{soundcheckCampaignCreatePermission as p}from"@spotify/backstage-plugin-soundcheck-common";import e from"react";import{useNavigate as c}from"react-router-dom";import l from"../../images/no-results.svg";import{campaignCreateRouteRef as g}from"../../routes.esm.js";import{EmptyState as d}from"../EmptyState/EmptyState.esm.js";var a=(t=>(t.title="Create a campaign",t.description="A soundcheck campaign allows you to define a tech health goal, assign it to a team and monitor progress.",t.callToAction="Get started",t))(a||{});const f=()=>{const{loading:t,allowed:o}=n({permission:p}),i=c(),r=m(g);return e.createElement(d,{title:"Create a campaign",description:"A soundcheck campaign allows you to define a tech health goal, assign it to a team and monitor progress.",imgSrc:l,action:!t&&e.createElement(s,{disabled:!o,variant:"contained",color:"primary",onClick:()=>i(r())},"Get started")})};export{a as CampaignEmptyState,f as EmptyCampaignState};
1
+ import{jsx as o}from"react/jsx-runtime";import{useRouteRef as m}from"@backstage/core-plugin-api";import{usePermission as n}from"@backstage/plugin-permission-react";import{Button as s}from"@material-ui/core";import{soundcheckCampaignCreatePermission as p}from"@spotify/backstage-plugin-soundcheck-common";import{useNavigate as c}from"react-router-dom";import l from"../../images/no-results.svg";import{campaignCreateRouteRef as d}from"../../routes.esm.js";import{EmptyState as g}from"../EmptyState/EmptyState.esm.js";var a=(t=>(t.title="Create a campaign",t.description="A soundcheck campaign allows you to define a tech health goal, assign it to a team and monitor progress.",t.callToAction="Get started",t))(a||{});const f=()=>{const{loading:t,allowed:e}=n({permission:p}),i=c(),r=m(d);return o(g,{title:"Create a campaign",description:"A soundcheck campaign allows you to define a tech health goal, assign it to a team and monitor progress.",imgSrc:l,action:!t&&o(s,{disabled:!e,variant:"contained",color:"primary",onClick:()=>i(r()),children:"Get started"})})};export{a as CampaignEmptyState,f as EmptyCampaignState};
2
2
  //# sourceMappingURL=CampaignEmptyState.esm.js.map
@@ -1,2 +1,2 @@
1
- import{useRouteRef as Y,useApi as $,featureFlagsApiRef as z}from"@backstage/core-plugin-api";import{usePermission as J}from"@backstage/plugin-permission-react";import{makeStyles as K,Grid as i,Button as Q}from"@material-ui/core";import{soundcheckCampaignCreatePermission as U}from"@spotify/backstage-plugin-soundcheck-common";import e,{useState as n,useEffect as y}from"react";import{useNavigate as V}from"react-router-dom";import X from"react-use/lib/useDebounce";import{useGetCampaignOwners as Z}from"../../../hooks/campaigns/useGetCampaignOwners.esm.js";import{useGetCampaigns as _}from"../../../hooks/campaigns/useGetCampaigns.esm.js";import{campaignCreateRouteRef as ee}from"../../../routes.esm.js";import{FilterDefault as p}from"../../../utils/filters.esm.js";import{EmptyCampaignState as ae}from"../CampaignEmptyState.esm.js";import{EmptyState as te}from"../../EmptyState/EmptyState.esm.js";import{Pagination as re}from"../../Pagination/Pagination.esm.js";import{SearchFilters as ne}from"../../SearchFilters/SearchFilters.esm.js";import{CampaignsOverviewSkeleton as ie}from"./CampaignsOverviewSkeleton.esm.js";import{CampaignSummaryCard as se}from"./CampaignSummaryCard.esm.js";import oe from"./useArchiveConfirmationModal.esm.js";var S=(a=>(a.title="No campaigns found",a.description="No campaigns matched your search. Consider changing search term and filters.",a))(S||{});const me=K(a=>({headerButtons:{display:"flex",gap:a.spacing(1),flexWrap:"nowrap",justifyContent:"end",alignItems:"end"},header:{padding:a.spacing(0,0,1)},container:{padding:a.spacing(3),gap:a.spacing(3)},createButton:{lineHeight:"1.25rem",paddingTop:a.spacing(1.5),paddingBottom:a.spacing(1.5)}})),le=({campaignsPerPage:a,currentCursor:x})=>{const s=me(),[d,u]=n(x),[m,b]=n(""),[f,w]=n(""),[h,B]=n(p.Alpha),[C,k]=n(p.Owner),[P,A]=n(p.Status),{data:F,isLoading:I}=Z();X(()=>{w(m)},500,[m]);const{loading:R,allowed:O}=J({permission:U}),{data:r,isLoading:l}=_({ids:void 0,first:a,after:d,orderAlphabetical:h,searchByOwner:C,searchByName:f,searchByStatus:P}),L=V(),G=Y(ee),T=()=>L(G()),[c,D]=n(r),g=c?.edges.map(t=>t.node),[E,v]=n([]);y(()=>{u(void 0),v([])},[f]);const N=$(z),W=!N.getRegisteredFlags().find(t=>t.name==="soundcheck-enable-campaigns")||N.isActive("soundcheck-enable-campaigns"),j=!O||!W,H=t=>{B(t.target.value)},q=t=>{k(t.target.value)},M=t=>{A(t.target.value)};if(y(()=>{r&&D(()=>({totalCount:r.totalCount,edges:r.edges,pageInfo:{startCursor:r.pageInfo.startCursor,endCursor:r.pageInfo.endCursor,hasNextPage:r?.pageInfo.hasNextPage??!1,hasPreviousPage:r?.pageInfo.hasPreviousPage??!1}}))},[r]),!l&&!g)return e.createElement(ae,null);let o;return l?o=e.createElement(ie,null):g?.length?o=g.map(t=>e.createElement(i,{key:t.id,xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem","aria-label":"result"},e.createElement(oe,null,e.createElement(se,{campaign:t})))):o=e.createElement(i,{xs:12,item:!0,role:"listitem","aria-label":"result"},e.createElement(te,{title:"No campaigns found",description:"No campaigns matched your search. Consider changing search term and filters."})),e.createElement(i,{container:!0,direction:"row",className:s.container},e.createElement(i,{container:!0,className:s.header},e.createElement(ne,{searchPlaceholder:"Search Available Campaigns",isLoading:l||I,searchTerm:m,setSearchTerm:b,filterAlpha:h,handleAlphabeticalFilterChange:H,filterOwner:C,handleOwnerFilterChange:q,filterStatus:P,handleStatusFilterChange:M,owners:F}),e.createElement(i,{item:!0,xs:2,className:s.headerButtons},!R&&e.createElement(Q,{disabled:j,variant:"contained",color:"primary",onClick:T,className:s.createButton},"Create Campaign"))),e.createElement(i,{container:!0,spacing:4,role:"list","aria-label":"campaigns"},o),(c?.pageInfo.hasNextPage||E?.length>0)&&e.createElement(i,{item:!0,xs:12},e.createElement(re,{response:c,listingsPerPage:a,cursor:d,setCursor:u,prevCursors:E,setPrevCursors:v,labelPerPageDropdown:"Campaigns Per Page:",urlRoute:"campaigns?campaignsPerPage="})))};export{le as CampaignListPage,S as CampaignNoResults};
1
+ import{jsx as a,jsxs as S}from"react/jsx-runtime";import{useRouteRef as $,useApi as z,featureFlagsApiRef as J}from"@backstage/core-plugin-api";import{usePermission as K}from"@backstage/plugin-permission-react";import{makeStyles as Q,Grid as n,Button as U}from"@material-ui/core";import{soundcheckCampaignCreatePermission as V}from"@spotify/backstage-plugin-soundcheck-common";import{useState as t,useEffect as y}from"react";import{useNavigate as X}from"react-router-dom";import Y from"react-use/lib/useDebounce";import{useGetCampaignOwners as _}from"../../../hooks/campaigns/useGetCampaignOwners.esm.js";import{useGetCampaigns as ee}from"../../../hooks/campaigns/useGetCampaigns.esm.js";import{campaignCreateRouteRef as ae}from"../../../routes.esm.js";import{FilterDefault as c}from"../../../utils/filters.esm.js";import{EmptyCampaignState as re}from"../CampaignEmptyState.esm.js";import{EmptyState as ie}from"../../EmptyState/EmptyState.esm.js";import{Pagination as te}from"../../Pagination/Pagination.esm.js";import{SearchFilters as ne}from"../../SearchFilters/SearchFilters.esm.js";import{CampaignsOverviewSkeleton as se}from"./CampaignsOverviewSkeleton.esm.js";import{CampaignSummaryCard as oe}from"./CampaignSummaryCard.esm.js";import me from"./useArchiveConfirmationModal.esm.js";var b=(e=>(e.title="No campaigns found",e.description="No campaigns matched your search. Consider changing search term and filters.",e))(b||{});const le=Q(e=>({headerButtons:{display:"flex",gap:e.spacing(1),flexWrap:"nowrap",justifyContent:"end",alignItems:"end"},header:{padding:e.spacing(0,0,1)},container:{padding:e.spacing(3),gap:e.spacing(3)},createButton:{lineHeight:"1.25rem",paddingTop:e.spacing(1.5),paddingBottom:e.spacing(1.5)}})),ge=({campaignsPerPage:e,currentCursor:w})=>{const s=le(),[d,u]=t(w),[m,B]=t(""),[h,R]=t(""),[f,A]=t(c.Alpha),[C,I]=t(c.Owner),[P,k]=t(c.Status),{data:F,isLoading:O}=_();Y(()=>{R(m)},500,[m]);const{loading:L,allowed:j}=K({permission:V}),{data:i,isLoading:l}=ee({ids:void 0,first:e,after:d,orderAlphabetical:f,searchByOwner:C,searchByName:h,searchByStatus:P}),E=X(),G=$(ae),T=()=>E(G()),[g,D]=t(i),p=g?.edges.map(r=>r.node),[v,N]=t([]);y(()=>{u(void 0),N([])},[h]);const x=z(J),W=!x.getRegisteredFlags().find(r=>r.name==="soundcheck-enable-campaigns")||x.isActive("soundcheck-enable-campaigns"),H=!j||!W,q=r=>{A(r.target.value)},M=r=>{I(r.target.value)},Z=r=>{k(r.target.value)};if(y(()=>{i&&D(()=>({totalCount:i.totalCount,edges:i.edges,pageInfo:{startCursor:i.pageInfo.startCursor,endCursor:i.pageInfo.endCursor,hasNextPage:i?.pageInfo.hasNextPage??!1,hasPreviousPage:i?.pageInfo.hasPreviousPage??!1}}))},[i]),!l&&!p)return a(re,{});let o;return l?o=a(se,{}):p?.length?o=p.map(r=>a(n,{xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem","aria-label":"result",children:a(me,{children:a(oe,{campaign:r})})},r.id)):o=a(n,{xs:12,item:!0,role:"listitem","aria-label":"result",children:a(ie,{title:"No campaigns found",description:"No campaigns matched your search. Consider changing search term and filters."})}),S(n,{container:!0,direction:"row",className:s.container,children:[S(n,{container:!0,className:s.header,children:[a(ne,{searchPlaceholder:"Search Available Campaigns",isLoading:l||O,searchTerm:m,setSearchTerm:B,filterAlpha:f,handleAlphabeticalFilterChange:q,filterOwner:C,handleOwnerFilterChange:M,filterStatus:P,handleStatusFilterChange:Z,owners:F}),a(n,{item:!0,xs:2,className:s.headerButtons,children:!L&&a(U,{disabled:H,variant:"contained",color:"primary",onClick:T,className:s.createButton,children:"Create Campaign"})})]}),a(n,{container:!0,spacing:4,role:"list","aria-label":"campaigns",children:o}),(g?.pageInfo.hasNextPage||v?.length>0)&&a(n,{item:!0,xs:12,children:a(te,{response:g,listingsPerPage:e,cursor:d,setCursor:u,prevCursors:v,setPrevCursors:N,labelPerPageDropdown:"Campaigns Per Page:",urlRoute:"campaigns?campaignsPerPage="})})]})};export{ge as CampaignListPage,b as CampaignNoResults};
2
2
  //# sourceMappingURL=CampaignListPage.esm.js.map
@@ -1,2 +1,2 @@
1
- import{EntityRefLink as n}from"@backstage/plugin-catalog-react";import{makeStyles as r,List as o,Typography as s,ListItem as i,Tooltip as m,ListItemIcon as c,ListItemText as l,Badge as d}from"@material-ui/core";import p from"@material-ui/icons/Group";import e from"react";const g=r(t=>({root:{position:"relative",height:"100%"},cardSection:{marginBottom:t.spacing(2)},listItem:{padding:0},listItemText:{margin:0},campaignDetails:{display:"flex",flexDirection:"column",gap:t.spacing(1)},archivedBadge:{"& span":{position:"relative",transform:"none",transformOrigin:"unset",backgroundColor:t.palette.action.disabledBackground}},iconContainer:{minWidth:"auto",paddingRight:t.spacing(1)},ownerLink:{"& span":{"&:hover":{textDecoration:"underline"}}}})),E=({campaign:t})=>{const a=g();return e.createElement(o,{dense:!0,disablePadding:!0,className:a.cardSection},e.createElement(s,{variant:"overline",color:"textSecondary"},"Campaign Details"),e.createElement("div",{className:a.campaignDetails},t.ownerEntityRef&&e.createElement(i,{disableGutters:!0,className:a.listItem},e.createElement(m,{title:"Owner"},e.createElement(c,{className:a.iconContainer},e.createElement(p,{color:"inherit",fontSize:"small"}))),e.createElement(l,{className:a.listItemText,primary:e.createElement(n,{entityRef:t.ownerEntityRef,className:a.ownerLink,hideIcon:!0})})),t.archived&&e.createElement(i,{disableGutters:!0,className:a.listItem},e.createElement(d,{badgeContent:"Archived",className:a.archivedBadge}))))};export{E as CampaignMetadata};
1
+ import{jsxs as a,jsx as e}from"react/jsx-runtime";import{EntityRefLink as s}from"@backstage/plugin-catalog-react";import{makeStyles as o,List as l,Typography as c,ListItem as n,Tooltip as m,ListItemIcon as d,ListItemText as g,Badge as r}from"@material-ui/core";import p from"@material-ui/icons/Group";const h=o(i=>({root:{position:"relative",height:"100%"},cardSection:{marginBottom:i.spacing(2)},listItem:{padding:0},listItemText:{margin:0},campaignDetails:{display:"flex",flexDirection:"column",gap:i.spacing(1)},badge:{"& span":{position:"relative",transform:"none",transformOrigin:"unset",backgroundColor:i.palette.action.disabledBackground}},iconContainer:{minWidth:"auto",paddingRight:i.spacing(1)},ownerLink:{"& span":{"&:hover":{textDecoration:"underline"}}}})),f=({campaign:i})=>{const t=h();return a(l,{dense:!0,disablePadding:!0,className:t.cardSection,children:[e(c,{variant:"overline",color:"textSecondary",children:"Campaign Details"}),a("div",{className:t.campaignDetails,children:[i.ownerEntityRef&&a(n,{disableGutters:!0,className:t.listItem,children:[e(m,{title:"Owner",children:e(d,{className:t.iconContainer,children:e(p,{color:"inherit",fontSize:"small"})})}),e(g,{className:t.listItemText,primary:e(s,{entityRef:i.ownerEntityRef,className:t.ownerLink,hideIcon:!0})})]}),i.archived&&e(n,{disableGutters:!0,className:t.listItem,children:e(r,{badgeContent:"Archived",className:t.badge})}),i.track.draft&&e(n,{disableGutters:!0,className:t.listItem,children:e(r,{badgeContent:"Draft",className:t.badge})})]})]})};export{f as CampaignMetadata};
2
2
  //# sourceMappingURL=CampaignMetadata.esm.js.map
@@ -1,2 +1,2 @@
1
- import{useRouteRef as d}from"@backstage/core-plugin-api";import{usePermission as p}from"@backstage/plugin-permission-react";import{soundcheckCampaignUpdatePermission as M,soundcheckCampaignDeletePermission as P}from"@spotify/backstage-plugin-soundcheck-common";import c,{useCallback as I}from"react";import{useNavigate as L}from"react-router-dom";import{v4 as S}from"uuid";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../../api.esm.js";import"../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../../hooks/useSoundcheckAlert.esm.js";import{useArchiveCampaign as U}from"../../../hooks/campaigns/useArchiveCampaign.esm.js";import{useDeleteCampaign as T}from"../../../hooks/campaigns/useDeleteCampaign.esm.js";import{useCreateTrack as b}from"../../../hooks/tracks/useCreateTrack.esm.js";import{useConfirmationModal as x}from"../../../hooks/useConfirmationModal.esm.js";import{campaignDetailsRouteRef as N,campaignEditRouteRef as V}from"../../../routes.esm.js";import{SummaryCard as j}from"../../SummaryCard/SummaryCard.esm.js";import{CampaignMetadata as q}from"./CampaignMetadata.esm.js";import{useArchiveConfirmationModal as z}from"./useArchiveConfirmationModal.esm.js";const B=({campaign:e})=>{const{id:l,name:u,description:f,ownerEntityRef:g,archived:h}=e,v=d(N),C=d(V),o=L(),t=e.archived,{showModal:r}=x(),{showArchiveModal:w}=z(),{mutate:y}=b(),{mutate:m}=T(),{mutate:R}=U(),{loading:A,allowed:k}=p({permission:M,resourceRef:e.id}),{loading:n,allowed:s}=p({permission:P,resourceRef:e.id}),E=I(async()=>{await r({title:"Delete Campaign",message:`Are you sure you want to delete campaign ${e.name}?`})&&m(e.id)},[r,m,e.id,e.name]),D=()=>{const{track:i}=e,a={id:S(),ownerEntityRef:i.ownerEntityRef,description:i.description??"",name:i.name,documentationURL:i.documentationURL,type:"standard",levels:i.levels??[],filter:i.filter};y(a)};return c.createElement(j,{title:u??l,description:f,viewIsPrimaryAction:!0,children:(g||h)&&c.createElement(q,{campaign:e}),handleView:()=>o(v({campaignId:e.id})),handleEdit:!A&&k&&!t?()=>o(C({campaignId:e.id})):void 0,handleDelete:!n&&s?E:void 0,handleArchive:!n&&s&&!t?async()=>{const{saveTrack:i,confirmed:a}=await w({title:"Archive Campaign",message:`Are you sure you want to archive campaign ${e.name}?`});a&&(i&&D(),R(e.id))}:void 0})};export{B as CampaignSummaryCard};
1
+ import{jsx as p}from"react/jsx-runtime";import{useRouteRef as c}from"@backstage/core-plugin-api";import{usePermission as l}from"@backstage/plugin-permission-react";import{soundcheckCampaignUpdatePermission as P,soundcheckCampaignDeletePermission as x}from"@spotify/backstage-plugin-soundcheck-common";import{useCallback as b}from"react";import{useNavigate as I}from"react-router-dom";import{v4 as L}from"uuid";import{BadgeVariant as S}from"../../../graphql/generated/index.esm.js";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../../api.esm.js";import"../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../../hooks/useSoundcheckAlert.esm.js";import{useArchiveCampaign as T}from"../../../hooks/campaigns/useArchiveCampaign.esm.js";import{useDeleteCampaign as U}from"../../../hooks/campaigns/useDeleteCampaign.esm.js";import{useCreateTrack as N}from"../../../hooks/tracks/useCreateTrack.esm.js";import{useConfirmationModal as V}from"../../../hooks/useConfirmationModal.esm.js";import{campaignDetailsRouteRef as $,campaignEditRouteRef as j}from"../../../routes.esm.js";import{SummaryCard as B}from"../../SummaryCard/SummaryCard.esm.js";import{CampaignMetadata as q}from"./CampaignMetadata.esm.js";import{useArchiveConfirmationModal as z}from"./useArchiveConfirmationModal.esm.js";const F=({campaign:a})=>{const{id:u,name:f,description:g,ownerEntityRef:v,archived:h}=a,y=c($),C=c(j),r=I(),t=a.archived,{showModal:m}=V(),{showArchiveModal:w}=z(),{mutate:R}=N(),{mutate:n}=U(),{mutate:k}=T(),{loading:A,allowed:D}=l({permission:P,resourceRef:a.id}),{loading:d,allowed:s}=l({permission:x,resourceRef:a.id}),E=b(async()=>{await m({title:"Delete Campaign",message:`Are you sure you want to delete campaign ${a.name}?`})&&n(a.id)},[m,n,a.id,a.name]),M=()=>{const{track:e}=a,o={id:L(),ownerEntityRef:e.ownerEntityRef,description:e.description??"",name:e.name,documentationURL:e.documentationURL,type:"standard",levels:e.levels.map(i=>({checks:i.checks,description:i.description,name:i.name,ordinal:i.ordinal})),filter:e.filter??void 0,exclude:e.exclude??void 0,badgeType:e.badge?.variant===S.Status?"status":"medal",draft:e.draft??!1};R(o)};return p(B,{title:f??u,description:g,viewIsPrimaryAction:!0,children:(v||h)&&p(q,{campaign:a}),handleView:()=>r(y({campaignId:a.id})),handleEdit:!A&&D&&!t?()=>r(C({campaignId:a.id})):void 0,handleDelete:!d&&s?E:void 0,handleArchive:!d&&s&&!t?async()=>{const{saveTrack:e,confirmed:o}=await w({title:"Archive Campaign",message:`Are you sure you want to archive campaign ${a.name}?`});o&&(e&&M(),k(a.id))}:void 0})};export{F as CampaignSummaryCard};
2
2
  //# sourceMappingURL=CampaignSummaryCard.esm.js.map
@@ -1,2 +1,2 @@
1
- import{Grid as t}from"@material-ui/core";import{Skeleton as m}from"@material-ui/lab";import e from"react";const i=()=>e.createElement(t,{item:!0,container:!0,"data-testid":"campaigns-skeleton"},Array.from({length:6},(o,r)=>e.createElement(t,{key:`loading-${r}`,xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem"},e.createElement(m,{variant:"rect",height:385}))));export{i as CampaignsOverviewSkeleton};
1
+ import{jsx as e}from"react/jsx-runtime";import{Grid as t}from"@material-ui/core";import{Skeleton as r}from"@material-ui/lab";const o=()=>e(t,{item:!0,container:!0,"data-testid":"campaigns-skeleton",children:Array.from({length:6},(m,i)=>e(t,{xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem",children:e(r,{variant:"rect",height:385})},`loading-${i}`))});export{o as CampaignsOverviewSkeleton};
2
2
  //# sourceMappingURL=CampaignsOverviewSkeleton.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as T,Modal as B,Box as u,Typography as c,FormControlLabel as N,Checkbox as w,Button as f}from"@material-ui/core";import e,{createContext as M,useState as m,useRef as A,useCallback as s,useContext as P}from"react";const S=T(t=>({modalContent:{position:"absolute",display:"flex",flexDirection:"column",gap:t.spacing(1),top:"50%",left:"50%",transform:"translate(-50%, -50%)",backgroundColor:t.palette.background.paper},modalButtons:{display:"flex",justifyContent:"flex-end","& button":{width:"40%",maxWidth:"185px"},padding:t.spacing(2,3),borderTop:`1px solid ${t.palette.divider}`},checkbox:{marginBottom:t.spacing(2)},cancelButton:{color:t.palette.text.primary},modalText:{padding:t.spacing(2,3,0,3)},modalTop:{marginBottom:t.spacing(1)}})),b=M({showArchiveModal:()=>Promise.resolve({confirmed:!1,saveTrack:!1})}),L=t=>{const a=S(),[h,n]=m(!1),[o,x]=m(null),[r,d]=m(!1),l=A(),v=s(({title:i,message:C,error:E})=>(x({title:i,message:C,error:E}),d(!1),n(!0),new Promise(y=>{l.current=y})),[]),g=s(()=>{l.current?.({confirmed:!0,saveTrack:r}),n(!1)},[r]),p=s(()=>{l.current?.({confirmed:!1,saveTrack:r}),n(!1)},[r]),k=i=>{d(i.target.checked)};return e.createElement(b.Provider,{value:{showArchiveModal:v}},t.children,o&&e.createElement(B,{open:h,onClose:p,"aria-labelledby":"confirmation-modal-title","aria-describedby":"confirmation-modal-description"},e.createElement(u,{className:a.modalContent},e.createElement("div",{className:a.modalText},e.createElement("div",{className:a.modalTop},e.createElement(c,{id:"confirmation-modal-title",variant:"h6"},o.title),e.createElement(c,{id:"confirmation-modal-description",variant:"body1"},o.message)),e.createElement(u,{className:a.checkbox},e.createElement(N,{control:e.createElement(w,{"data-testid":"save-track-checkbox",checked:r,onChange:k,size:"small"}),label:"Create Track"}),e.createElement(c,{id:"confirmation-modal-check-box-description",variant:"subtitle2",color:"textSecondary"},"Create a track from this campaign if you wish to promote it to a long term health initiative."))),e.createElement("div",{className:a.modalButtons},!o.error&&e.createElement(f,{onClick:p,variant:"text","aria-label":"cancel",className:a.cancelButton},"Cancel"),e.createElement(f,{color:"primary",onClick:g,variant:"contained","aria-label":"confirm"},o.error?"Ok":"Confirm")))))},W=()=>P(b);export{L as default,W as useArchiveConfirmationModal};
1
+ import{jsxs as t,jsx as a}from"react/jsx-runtime";import{makeStyles as N,Modal as w,Box as u,Typography as d,FormControlLabel as M,Checkbox as j,Button as f}from"@material-ui/core";import{createContext as A,useState as s,useRef as P,useCallback as m,useContext as S}from"react";const L=N(e=>({modalContent:{position:"absolute",display:"flex",flexDirection:"column",gap:e.spacing(1),top:"50%",left:"50%",transform:"translate(-50%, -50%)",backgroundColor:e.palette.background.paper},modalButtons:{display:"flex",justifyContent:"flex-end","& button":{width:"40%",maxWidth:"185px"},padding:e.spacing(2,3),borderTop:`1px solid ${e.palette.divider}`},checkbox:{marginBottom:e.spacing(2)},cancelButton:{color:e.palette.text.primary},modalText:{padding:e.spacing(2,3,0,3)},modalTop:{marginBottom:e.spacing(1)}})),x=A({showArchiveModal:()=>Promise.resolve({confirmed:!1,saveTrack:!1})}),W=e=>{const o=L(),[b,n]=s(!1),[r,g]=s(null),[i,p]=s(!1),l=P(),k=m(({title:c,message:y,error:T})=>(g({title:c,message:y,error:T}),p(!1),n(!0),new Promise(B=>{l.current=B})),[]),v=m(()=>{l.current?.({confirmed:!0,saveTrack:i}),n(!1)},[i]),h=m(()=>{l.current?.({confirmed:!1,saveTrack:i}),n(!1)},[i]),C=c=>{p(c.target.checked)};return t(x.Provider,{value:{showArchiveModal:k},children:[e.children,r&&a(w,{open:b,onClose:h,"aria-labelledby":"confirmation-modal-title","aria-describedby":"confirmation-modal-description",children:t(u,{className:o.modalContent,children:[t("div",{className:o.modalText,children:[t("div",{className:o.modalTop,children:[a(d,{id:"confirmation-modal-title",variant:"h6",children:r.title}),a(d,{id:"confirmation-modal-description",variant:"body1",children:r.message})]}),t(u,{className:o.checkbox,children:[a(M,{control:a(j,{"data-testid":"save-track-checkbox",checked:i,onChange:C,size:"small"}),label:"Create Track"}),a(d,{id:"confirmation-modal-check-box-description",variant:"subtitle2",color:"textSecondary",children:"Create a track from this campaign if you wish to promote it to a long term health initiative."})]})]}),t("div",{className:o.modalButtons,children:[!r.error&&a(f,{onClick:h,variant:"text","aria-label":"cancel",className:o.cancelButton,children:"Cancel"}),a(f,{color:"primary",onClick:v,variant:"contained","aria-label":"confirm",children:r.error?"Ok":"Confirm"})]})]})})]})},z=()=>S(x);export{W as default,z as useArchiveConfirmationModal};
2
2
  //# sourceMappingURL=useArchiveConfirmationModal.esm.js.map
@@ -1,2 +1,2 @@
1
- import r from"react";import{useSearchParams as a}from"react-router-dom";import"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import{CampaignFormProvider as o}from"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";import{RESULTS_PER_PAGE as i}from"../../utils/filters.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useSetHeaderDefault as p}from"../SoundcheckHeader/useHeader.esm.js";import{CampaignListPage as n}from"./CampaignListPage/CampaignListPage.esm.js";import"./CampaignListPage/CampaignTypes.esm.js";const g=()=>{const[m]=a(),e=m.get("campaignsPerPage"),t=e?parseInt(e,10):i;return p(),r.createElement(o,null,r.createElement("div",null,r.createElement(n,{campaignsPerPage:t})))};export{g as CampaignsPage};
1
+ import{jsx as r}from"react/jsx-runtime";import{useSearchParams as t}from"react-router-dom";import"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import{CampaignFormProvider as e}from"../../contexts/CampaignFormContext.esm.js";import"react";import"../../contexts/UserProvider.esm.js";import{RESULTS_PER_PAGE as a}from"../../utils/filters.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useSetHeaderDefault as p}from"../SoundcheckHeader/useHeader.esm.js";import{CampaignListPage as n}from"./CampaignListPage/CampaignListPage.esm.js";import"./CampaignListPage/CampaignTypes.esm.js";const s=()=>{const[o]=t(),m=o.get("campaignsPerPage"),i=m?parseInt(m,10):a;return p(),r(e,{children:r("div",{children:r(n,{campaignsPerPage:i})})})};export{s as CampaignsPage};
2
2
  //# sourceMappingURL=CampaignsPage.esm.js.map
@@ -1,2 +1,2 @@
1
- import{usePermission as u}from"@backstage/plugin-permission-react";import{soundcheckCampaignUpdatePermission as f}from"@spotify/backstage-plugin-soundcheck-common";import e,{useEffect as C}from"react";import{useParams as E}from"react-router-dom";import"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import{useCampaignFormContext as y}from"../../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"../../hooks/useSoundcheckAlert.esm.js";import{useUpdateCampaign as h}from"../../hooks/campaigns/useUpdateCampaign.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as k}from"../../hooks/useNavigateBack.esm.js";import{useGetCampaign as L}from"../../hooks/campaigns/useGetCampaign.esm.js";import{campaignsPageRouteRef as P}from"../../routes.esm.js";import{CampaignForm as w}from"../CampaignForm/CampaignForm.esm.js";import{PageWarningMessage as F}from"../PageWarningMessage/PageWarningMessage.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as U}from"../SoundcheckHeader/useHeader.esm.js";import{Loading as I}from"../TechHealth/Loading/Loading.esm.js";import{EmptyCampaignState as R}from"./CampaignEmptyState.esm.js";const S=()=>{U({title:"Update Campaign",description:"Update your campaign, including schedule, milestones, and other associated details.",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/campaigns"});const[r,n]=k(P),{campaignId:p}=E(),{setIsLoading:o}=y(),{mutateAsync:s,isLoading:i}=h(),{data:c,isLoading:m}=L(p??""),t=c?.edges?.[0]?.node,{loading:d,allowed:a}=u({permission:f,resourceRef:t?.id});if(C(()=>o(i),[o,i]),!m&&!t)return e.createElement(R,null);const g=async l=>{await s(l,{onSuccess:n})};return e.createElement(e.Fragment,null,e.createElement(F,{entityId:t?.id,entityName:t?.name??"",showCannotEdit:!d&&!a}),m?e.createElement(I,null):e.createElement(e.Fragment,null,a&&e.createElement(w,{onSave:g,onCancel:r,selectedCampaign:t})))};export{S as EditCampaignView};
1
+ import{jsx as i,jsxs as l,Fragment as r}from"react/jsx-runtime";import{usePermission as C}from"@backstage/plugin-permission-react";import{soundcheckCampaignUpdatePermission as h}from"@spotify/backstage-plugin-soundcheck-common";import{useEffect as y}from"react";import{useParams as k}from"react-router-dom";import"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import{useCampaignFormContext as L}from"../../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"../../hooks/useSoundcheckAlert.esm.js";import{useUpdateCampaign as P}from"../../hooks/campaigns/useUpdateCampaign.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as w}from"../../hooks/useNavigateBack.esm.js";import{useGetCampaign as x}from"../../hooks/campaigns/useGetCampaign.esm.js";import{campaignsPageRouteRef as E}from"../../routes.esm.js";import{CampaignForm as U}from"../CampaignForm/CampaignForm.esm.js";import{PageWarningMessage as F}from"../PageWarningMessage/PageWarningMessage.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as I}from"../SoundcheckHeader/useHeader.esm.js";import{Loading as R}from"../TechHealth/Loading/Loading.esm.js";import{EmptyCampaignState as S}from"./CampaignEmptyState.esm.js";const j=()=>{I({title:"Update Campaign",description:"Update your campaign, including schedule, milestones, and other associated details.",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/campaigns"});const[n,p]=w(E),{campaignId:s}=k(),{setIsLoading:t}=L(),{mutateAsync:c,isLoading:e}=P(),{data:d,isLoading:m}=x(s??""),o=d?.edges?.[0]?.node,{loading:g,allowed:a}=C({permission:h,resourceRef:o?.id});if(y(()=>t(e),[t,e]),!m&&!o)return i(S,{});const f=async u=>{await c(u,{onSuccess:p})};return l(r,{children:[i(F,{entityId:o?.id,entityName:o?.name??"",showCannotEdit:!g&&!a}),m?i(R,{}):i(r,{children:a&&i(U,{onSave:f,onCancel:n,selectedCampaign:o})})]})};export{j as EditCampaignView};
2
2
  //# sourceMappingURL=EditCampaignView.esm.js.map
@@ -1,2 +1,2 @@
1
- import{Typography as w,useTheme as I,Tooltip as R}from"@material-ui/core";import{makeStyles as U,createStyles as j}from"@material-ui/core/styles";import{schemeCategory10 as q}from"d3-scale-chromatic";import N from"lodash";import a,{useRef as A,useState as H,useEffect as X,useMemo as k}from"react";const F=e=>{let l=e;for(;l;){const t=window.getComputedStyle(l).backgroundColor;if(t&&t!=="rgba(0, 0, 0, 0)"&&t!=="transparent")return t;l=l.parentElement}return"transparent"},_=(e,l,t,i,s)=>{if(N.isUndefined(e))return"";if(e===0){for(let r=0;r<l.length;r++)if(l[r]>0)return s?.[t[r]]??i[r]}let m=0;for(let r=0;r<l.length;r++)if(m+=l[r],m>=e)return s?.[t[r]]??i[r];return s?.[t[l.length-1]]??i[l.length-1]},T=(e,l)=>e?e/l*100:0,W=U(e=>j({container:{display:"flex",flexDirection:"column",width:"100%"},barWrapper:{position:"relative",width:"100%"},barContainer:{display:"flex",height:e.spacing(1),overflow:"hidden",borderRadius:4,width:"100%"},barSegment:{height:"100%"},barLabel:{position:"absolute",fontSize:"0.875rem",whiteSpace:"nowrap",transform:"translateX(-50%)"},marker:{position:"absolute",width:6,height:16,top:0,bottom:0,borderRadius:4,transform:"translate(-50%, -25%)"},tooltip:{backgroundColor:e.palette.background.paper,color:e.palette.text.primary,boxShadow:e.shadows[1],fontSize:12,border:`1px solid ${e.palette.divider}`,borderRadius:e.shape.borderRadius,padding:e.spacing(1)},arrow:{color:e.palette.background.paper},item:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:e.spacing(.5)},legendDash:{width:e.spacing(2),height:e.spacing(.375),borderRadius:e.spacing(.375),marginRight:e.spacing(1)},category:{display:"flex",alignItems:"center",flex:1,fontSize:"0.875rem",color:e.palette.text.secondary,marginRight:e.spacing(2)},value:{fontWeight:e.typography.fontWeightMedium,fontSize:"0.875rem",color:e.palette.text.primary}})),P=a.memo(({data:e,categories:l,valueFormatter:t,type:i,labelPosition:s})=>{const m=W(),r=l.map(p=>e[p]),o=N.sum(r);let c=0,f=0;return a.createElement("div",{className:m.barWrapper},r.map((p,C)=>{c+=p;const y=(p>=.1*o||f>=.09*o)&&o-c>=.1*o&&c>=.1*o&&c<.9*o;f=y?0:f+=p;const g=T(c,o),$=i==="percent"?`${Math.round(c/o*100)}%`:t(c);return a.createElement("div",{key:`item-${C}`,className:m.barLabel,style:{left:`${g}%`,top:s==="top"?"-1.5rem":"1.5rem"}},y&&a.createElement(w,{variant:"caption"},$))}),a.createElement(w,{variant:"caption",style:{position:"absolute",bottom:0,left:0}},i==="percent"?"0%":t(0)),a.createElement(w,{variant:"caption",style:{position:"absolute",bottom:0,right:0}},i==="percent"?"100%":t(o)))}),G=a.memo(e=>{const l=I(),t=W(),{data:i={},categories:s=[],colors:m=q,categoryColors:r,marker:o,showLabels:c=!1,showTooltip:f=!0,valueFormatter:p=n=>n.toString(),categoryFormatter:C=n=>n,type:y="value",labelPosition:g="top",className:$,...z}=e,v=s.map(n=>i[n]).filter(n=>typeof n=="number"),E=A(null),[B,D]=H("transparent");X(()=>{if(E.current){const n=F(E.current);D(n)}},[E]);const L=k(()=>_(o?.value,v,s,m,r),[o,v,s,m,r]),d=k(()=>N.sum(v),[v]),S=k(()=>{if(!N.isUndefined(o))return o.value<0?0:o.value>d?d:o.value},[o,d]),M=k(()=>T(S,d),[S,d]);return a.createElement("div",{ref:E,className:`${$} ${t.container}`,...z},a.createElement("div",{className:t.barWrapper},c&&g==="top"&&a.createElement(P,{data:i,categories:s,valueFormatter:p,type:y,labelPosition:g}),a.createElement("div",{className:t.barContainer},f?a.createElement(R,{title:a.createElement("div",{className:t.tooltip},s.map((n,u)=>{const b=i[n],h=r?.[n]??m[u]??"gray";return a.createElement("div",{key:`tooltip-item-${u}`,className:t.item},a.createElement("div",{className:t.category},a.createElement("span",{className:t.legendDash,style:{backgroundColor:h}}),a.createElement(w,null,C(n))),a.createElement("div",{className:t.value},p(b)," of ",p(d)," (",Math.round(b/d*100),"%)"))})),placement:"top",arrow:!0,classes:{tooltip:t.tooltip,arrow:t.arrow}},a.createElement("div",{className:t.barContainer},s.map((n,u)=>{const b=i[n],h=r?.[n]??m[u]??"gray",x=b/d*100;return a.createElement("div",{key:`item-${u}`,className:t.barSegment,style:{backgroundColor:h,width:`${x}%`}})}))):a.createElement("div",{className:t.barContainer},s.map((n,u)=>{const b=i[n],h=r?.[n]??m[u]??l.palette.text.disabled,x=b/d*100;return a.createElement("div",{key:`item-${u}`,className:t.barSegment,style:{backgroundColor:h,width:`${x}%`}})}))),o!==void 0&&a.createElement(R,{title:o.tooltip||"",arrow:!0},a.createElement("div",{className:t.marker,style:{left:`${M}%`,backgroundColor:L,border:`1px solid ${B}`,transition:o.showAnimation?"all 0.3s ease-in-out":"none"}})),c&&g==="bottom"&&a.createElement(P,{data:i,categories:s,valueFormatter:p,type:y,labelPosition:g})))});export{G as CategoryBar,F as getEffectiveBackgroundColor};
1
+ import{jsxs as v,jsx as i}from"react/jsx-runtime";import{Typography as w,useTheme as U,Tooltip as M}from"@material-ui/core";import{makeStyles as q,createStyles as A}from"@material-ui/core/styles";import{schemeCategory10 as G}from"d3-scale-chromatic";import x from"lodash";import{memo as W,useRef as H,useState as X,useEffect as J,useMemo as $}from"react";const z=t=>{let n=t;for(;n;){const e=window.getComputedStyle(n).backgroundColor;if(e&&e!=="rgba(0, 0, 0, 0)"&&e!=="transparent")return e;n=n.parentElement}return"transparent"},K=(t,n,e,l,s)=>{if(x.isUndefined(t))return"";if(t===0){for(let r=0;r<n.length;r++)if(n[r]>0)return s?.[e[r]]??l[r]}let c=0;for(let r=0;r<n.length;r++)if(c+=n[r],c>=t)return s?.[e[r]]??l[r];return s?.[e[n.length-1]]??l[n.length-1]},L=(t,n)=>t?t/n*100:0,P=q(t=>A({container:{display:"flex",flexDirection:"column",width:"100%"},barWrapper:{position:"relative",width:"100%"},barContainer:{display:"flex",height:t.spacing(1),overflow:"hidden",borderRadius:4,width:"100%"},barSegment:{height:"100%"},barLabel:{position:"absolute",fontSize:"0.875rem",whiteSpace:"nowrap",transform:"translateX(-50%)"},marker:{position:"absolute",width:6,height:16,top:0,bottom:0,borderRadius:4,transform:"translate(-50%, -25%)"},tooltip:{color:t.palette.text.primary,fontSize:12,borderRadius:t.shape.borderRadius,padding:t.spacing(1)},item:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:t.spacing(.5)},legendDash:{width:t.spacing(2),height:t.spacing(.75),borderRadius:t.spacing(.375),marginRight:t.spacing(1)},category:{display:"flex",alignItems:"center",flex:1,fontSize:"0.875rem",marginRight:t.spacing(2)},value:{fontWeight:t.typography.fontWeightMedium,fontSize:"0.875rem",color:t.palette.text.primary}})),B=W(({data:t,categories:n,valueFormatter:e,type:l,labelPosition:s})=>{const c=P(),r=n.map(d=>t[d]),o=x.sum(r);let p=0,f=0;return v("div",{className:c.barWrapper,children:[r.map((d,S)=>{p+=d;const b=(d>=.1*o||f>=.09*o)&&o-p>=.1*o&&p>=.1*o&&p<.9*o;f=b?0:f+=d;const h=L(p,o),k=l==="percent"?`${Math.round(p/o*100)}%`:e(p);return i("div",{className:c.barLabel,style:{left:`${h}%`,top:s==="top"?"-1.5rem":"1.5rem"},children:b&&i(w,{variant:"caption",children:k})},`item-${S}`)}),i(w,{variant:"caption",style:{position:"absolute",bottom:0,left:0},children:l==="percent"?"0%":e(0)}),i(w,{variant:"caption",style:{position:"absolute",bottom:0,right:0},children:l==="percent"?"100%":e(o)})]})}),O=W(t=>{const n=U(),e=P(),{data:l={},categories:s=[],colors:c=G,categoryColors:r,marker:o,showLabels:p=!1,showTooltip:f=!0,valueFormatter:d=a=>a.toString(),categoryFormatter:S=a=>a,type:b="value",labelPosition:h="top",className:k,...D}=t,N=s.map(a=>l[a]).filter(a=>typeof a=="number"),C=H(null),[E,T]=X("transparent");J(()=>{if(C.current){const a=z(C.current);T(a)}},[C]);const j=$(()=>K(o?.value,N,s,c,r),[o,N,s,c,r]),m=$(()=>x.sum(N),[N]),F=$(()=>{if(!x.isUndefined(o))return o.value<0?0:o.value>m?m:o.value},[o,m]),I=$(()=>L(F,m),[F,m]);return i("div",{ref:C,className:`${k} ${e.container}`,...D,children:v("div",{className:e.barWrapper,children:[p&&h==="top"&&i(B,{data:l,categories:s,valueFormatter:d,type:b,labelPosition:h}),i("div",{className:e.barContainer,children:f?i(M,{title:i("div",{className:e.tooltip,children:s.filter(a=>l[a]>0).map((a,g)=>{const u=l[a],y=r?.[a]??c[g]??"gray";return v("div",{className:e.item,children:[v("div",{className:e.category,children:[i("span",{className:e.legendDash,style:{backgroundColor:y}}),i(w,{variant:"caption",children:S(a)})]}),i("div",{className:e.value,children:v(w,{variant:"caption",children:[d(u)," of ",d(m)," ","(",Math.round(u/m*100),"%)"]})})]},`tooltip-item-${g}`)})}),placement:"top",arrow:!0,classes:{tooltip:e.tooltip},children:i("div",{className:e.barContainer,children:s.map((a,g)=>{const u=l[a],y=r?.[a]??c[g]??"gray",R=u/m*100;return i("div",{className:e.barSegment,style:{backgroundColor:y,width:`${R}%`}},`item-${g}`)})})}):i("div",{className:e.barContainer,children:s.map((a,g)=>{const u=l[a],y=r?.[a]??c[g]??n.palette.text.disabled,R=u/m*100;return i("div",{className:e.barSegment,style:{backgroundColor:y,width:`${R}%`}},`item-${g}`)})})}),o!==void 0&&i(M,{title:o.tooltip||"",arrow:!0,children:i("div",{className:e.marker,style:{left:`${I}%`,backgroundColor:j,border:`1px solid ${E}`,transition:o.showAnimation?"all 0.3s ease-in-out":"none"}})}),p&&h==="bottom"&&i(B,{data:l,categories:s,valueFormatter:d,type:b,labelPosition:h})]})})});export{O as CategoryBar,z as getEffectiveBackgroundColor};
2
2
  //# sourceMappingURL=CategoryBar.esm.js.map
@@ -1,2 +1,2 @@
1
- import{useEntity as f}from"@backstage/plugin-catalog-react";import{styled as o,Accordion as g,AccordionSummary as E,AccordionDetails as b,makeStyles as k,Box as y}from"@material-ui/core";import R from"@material-ui/icons/ExpandMore";import e,{useRef as h}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{useCertificationDetailsForTrack as x}from"../../hooks/certifications/useCertificationDetailsForTrack.esm.js";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{AlertPanel as v}from"../AlertPanel/AlertPanel.esm.js";import"../CertificationSidebar/CertificationSidebar.esm.js";import{CertificationSummary as I}from"../CertificationSidebar/CertificationSummary.esm.js";import{CertificationSidebarSkeleton as T}from"../CertificationSidebar/skeletons/CertificationSidebarSkeleton.esm.js";import"@material-ui/lab";import{CertificationLevel as C}from"../CertificationSidebar/CertificationLevel.esm.js";const L=o(g)(({theme:t})=>({margin:"0",border:`1px solid ${t.palette.divider}`,borderRadius:0,"&.Mui-expanded":{borderRadius:0},"&:first-child":{borderTopLeftRadius:0,borderTopRightRadius:0},"&:last-child":{borderBottomLeftRadius:0,borderBottomRightRadius:0},"&:not(:first-child)":{borderTop:`1px solid ${t.palette.divider}`},"&:not(:last-child)":{marginBottom:t.spacing(1)}})),S=o(({...t})=>e.createElement(E,{classes:{content:"content",expanded:"expanded"},...t}))(({theme:t})=>({borderRadius:0,paddingTop:0,paddingLeft:0,paddingRight:t.spacing(1),"& > .content":{margin:"0 !important",padding:"0 !important"},"& > .content.expanded":{margin:"0 !important",padding:"0 !important"}})),A=o(b)(()=>({margin:"0 !important",borderRadius:0,padding:0})),n=k(()=>({sidebar:{width:"100%"}})),B=({playlistId:t,trackId:i,checkId:d})=>{const m=n(),{entity:c}=f(),l=h(null),{data:r,isLoading:p,isError:s}=x(c,i);if(s)return e.createElement("div",null,e.createElement(y,{padding:2},e.createElement(v,{severity:"error",title:"Error loading certification"})));if(p||!i)return e.createElement(T,null);if(!r)return null;const u=r.track.type==="campaign";return e.createElement(L,{ref:l,defaultExpanded:!0,elevation:0},e.createElement(S,{expandIcon:e.createElement(R,null),"aria-controls":"certification-content",id:"certification-summary"},e.createElement(I,{name:r.track.name,badge:r.track.badge,description:r.track.description,documentationUrl:r.track.documentationURL,trackType:r.track.type})),e.createElement(A,null,e.createElement("div",{className:m.sidebar},r?.levels.map(a=>e.createElement(C,{key:a.ordinal,level:a,checkId:d,trackId:i,playlistId:t,isCampaign:u})))))};export{B as CertificationAccordion,n as useStyles};
1
+ import{jsx as i,jsxs as u}from"react/jsx-runtime";import{useEntity as g}from"@backstage/plugin-catalog-react";import{styled as o,Accordion as h,AccordionSummary as b,AccordionDetails as k,makeStyles as y,Box as R}from"@material-ui/core";import x from"@material-ui/icons/ExpandMore";import{useRef as v}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{useCertificationDetailsForTrack as I}from"../../hooks/certifications/useCertificationDetailsForTrack.esm.js";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{AlertPanel as L}from"../AlertPanel/AlertPanel.esm.js";import"../CertificationSidebar/CertificationSidebar.esm.js";import{CertificationSummary as T}from"../CertificationSidebar/CertificationSummary.esm.js";import{CertificationSidebarSkeleton as C}from"../CertificationSidebar/skeletons/CertificationSidebarSkeleton.esm.js";import"@material-ui/lab";import{CertificationLevel as S}from"../CertificationSidebar/CertificationLevel.esm.js";const A=o(h)(({theme:t})=>({margin:"0",border:`1px solid ${t.palette.divider}`,borderRadius:0,"&.Mui-expanded":{borderRadius:0},"&:first-child":{borderTopLeftRadius:0,borderTopRightRadius:0},"&:last-child":{borderBottomLeftRadius:0,borderBottomRightRadius:0},"&:not(:first-child)":{borderTop:`1px solid ${t.palette.divider}`},"&:not(:last-child)":{marginBottom:t.spacing(1)}})),B=o(({...t})=>i(b,{classes:{content:"content",expanded:"expanded"},...t}))(({theme:t})=>({borderRadius:0,paddingTop:0,paddingLeft:0,paddingRight:t.spacing(1),"& > .content":{margin:"0 !important",padding:"0 !important"},"& > .content.expanded":{margin:"0 !important",padding:"0 !important"}})),E=o(k)(()=>({margin:"0 !important",borderRadius:0,padding:0})),d=y(()=>({sidebar:{width:"100%"}})),D=({playlistId:t,trackId:e,checkId:n})=>{const c=d(),{entity:m}=g(),p=v(null),{data:r,isLoading:s,isError:l}=I(m,e);if(l)return i("div",{children:i(R,{padding:2,children:i(L,{severity:"error",title:"Error loading certification"})})});if(s||!e)return i(C,{});if(!r)return null;const f=r.track.type==="campaign";return u(A,{ref:p,defaultExpanded:!0,elevation:0,children:[i(B,{expandIcon:i(x,{}),"aria-controls":"certification-content",id:"certification-summary",children:i(T,{name:r.track.name,badge:r.track.badge,description:r.track.description,documentationUrl:r.track.documentationURL,trackType:r.track.type})}),i(E,{children:i("div",{className:c.sidebar,children:r?.levels.map(a=>i(S,{level:a,checkId:n,trackId:e,playlistId:t,isCampaign:f},a.ordinal))})})]})};export{D as CertificationAccordion,d as useStyles};
2
2
  //# sourceMappingURL=CertificationAccordion.esm.js.map
@@ -1,2 +1,2 @@
1
- import t from"react";import{CheckResultSummaryList as m}from"./CheckResultSummaryList.esm.js";import{LevelSummary as l}from"./LevelSummary.esm.js";const n=({level:e,checkId:c,trackId:r,playlistId:a,isCampaign:i})=>t.createElement(t.Fragment,null,!i&&t.createElement(l,{badge:e.badge,title:e.name,description:e.description}),t.createElement(m,{checks:e.checks??[],playlistId:a,trackId:r,checkId:c}));export{n as CertificationLevel};
1
+ import{jsxs as m,Fragment as s,jsx as t}from"react/jsx-runtime";import{CheckResultSummaryList as d}from"./CheckResultSummaryList.esm.js";import{LevelSummary as l}from"./LevelSummary.esm.js";const o=({level:e,checkId:i,trackId:c,playlistId:r,isCampaign:a})=>m(s,{children:[!a&&t(l,{badge:e.badge,title:e.name,description:e.description}),t(d,{checks:e.checks??[],playlistId:r,trackId:c,checkId:i})]});export{o as CertificationLevel};
2
2
  //# sourceMappingURL=CertificationLevel.esm.js.map
@@ -1,2 +1,2 @@
1
- import{useEntity as k}from"@backstage/plugin-catalog-react";import{makeStyles as y,Box as E}from"@material-ui/core";import e from"react";import{ResultState as o}from"../../graphql/generated/index.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{useCertificationDetailsForTrack as g}from"../../hooks/certifications/useCertificationDetailsForTrack.esm.js";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{AlertPanel as S}from"../AlertPanel/AlertPanel.esm.js";import{CertificationLevel as b}from"./CertificationLevel.esm.js";import{CertificationSummary as h}from"./CertificationSummary.esm.js";import{CertificationSidebarSkeleton as v}from"./skeletons/CertificationSidebarSkeleton.esm.js";import"@material-ui/lab";const x=y(()=>({checks:{padding:0,margin:0,flex:1,listStyle:"none"}})),C=({playlistId:m,trackId:a,checkId:l,showNotApplicable:c,showExempt:n})=>{const{entity:p}=k(),{data:t,isLoading:s,isError:d}=g(p,a,!0);if(d)return e.createElement("div",null,e.createElement(E,{padding:2},e.createElement(S,{severity:"error",title:"Error loading certification"})));if(s||!a)return e.createElement(v,null);if(!t)return null;const f=t.track.type==="campaign",u=t.levels.map(r=>({...r,checks:r.checks?.filter(i=>c&&i.result===o.NotApplicable||n&&i.result===o.Exempt||i.result!==o.NotApplicable&&i.result!==o.Exempt)}));return e.createElement("div",null,e.createElement(h,{name:t.track.name,badge:t.track.badge,description:t.track.description,documentationUrl:t.track.documentationURL,trackType:t.track.type}),u.map(r=>e.createElement(b,{key:r.ordinal,level:r,checkId:l,trackId:a,playlistId:m,isCampaign:f})))};export{C as CertificationSidebar,x as useStyles};
1
+ import{jsx as i,jsxs as y}from"react/jsx-runtime";import{stringifyEntityRef as h}from"@backstage/catalog-model";import{useEntity as g}from"@backstage/plugin-catalog-react";import{makeStyles as x,Box as C}from"@material-ui/core";import{ResultState as I}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{useCertificationDetailsForTrack as S}from"../../hooks/certifications/useCertificationDetailsForTrack.esm.js";import"@spotify/backstage-plugin-soundcheck-common";import"react";import"../../hooks/useSoundcheckAlert.esm.js";import{useExemptCheckIds as b}from"../../hooks/exemptions/useExemptCheckIds.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{AlertPanel as v}from"../AlertPanel/AlertPanel.esm.js";import{CertificationLevel as E}from"./CertificationLevel.esm.js";import{CertificationSummary as L}from"./CertificationSummary.esm.js";import{CertificationSidebarSkeleton as A}from"./skeletons/CertificationSidebarSkeleton.esm.js";import"@material-ui/lab";const R=x(()=>({checks:{padding:0,margin:0,flex:1,listStyle:"none"}})),j=({playlistId:m,trackId:e,checkId:c,showNotApplicable:n,showExempt:p})=>{const{entity:o}=g(),{data:t,isLoading:l,isError:s}=S(o,e),{data:d,isLoading:f}=b(h(o),e);if(s)return i("div",{children:i(C,{padding:2,children:i(v,{severity:"error",title:"Error loading certification"})})});if(l||f||!e)return i(A,{});if(!t)return null;const k=t.track.type==="campaign",u=t.levels.map(r=>({...r,checks:r.checks?.filter(a=>a.result===I.NotApplicable?n:d?.exemptCheckIds.includes(a.id)?p:!0)}));return y("div",{children:[i(L,{name:t.track.name,badge:t.track.badge,description:t.track.description,documentationUrl:t.track.documentationURL,trackType:t.track.type}),u.map(r=>i(E,{level:r,checkId:c,trackId:e,playlistId:m,isCampaign:k},r.ordinal))]})};export{j as CertificationSidebar,R as useStyles};
2
2
  //# sourceMappingURL=CertificationSidebar.esm.js.map
@@ -1,2 +1,2 @@
1
- import{MarkdownContent as o,Link as p}from"@backstage/core-components";import{makeStyles as s,Typography as d,Grid as c}from"@material-ui/core";import e from"react";import{CertificationBadge as g}from"../Badges/CertificationBadge.esm.js";import{StatusDetails as u}from"./StatusDetails.esm.js";const i=s(t=>({description:{padding:0,margin:0,display:"block","& p":{margin:0}},root:{padding:t.spacing(2),margin:0,display:"grid",gridTemplateColumns:"min-content auto",gridGap:t.spacing(2)},title:{fontSize:t.typography.pxToRem(18),fontWeight:700,lineHeight:1.235,marginBottom:"6px"},level:{textTransform:"uppercase",color:t.palette.text.secondary,fontWeight:700,letterSpacing:"1px"}}));function y({description:t,documentationUrl:n}){const a=i();return n?e.createElement("div",{className:a.description},e.createElement(o,{content:t}),e.createElement(p,{to:n},"Learn more")):e.createElement("div",{className:a.description},e.createElement(o,{content:t}))}const E=({name:t,badge:n,description:a,documentationUrl:m,trackType:l="standard"})=>{const r=i();return e.createElement("div",{className:r.root},e.createElement(g,{badge:n,trackType:l,size:"large",showTooltip:!0}),e.createElement("div",null,e.createElement(d,{className:r.title},t),e.createElement(c,{container:!0,direction:"column",spacing:0},a&&e.createElement(c,{item:!0},e.createElement(y,{description:a,documentationUrl:m})),e.createElement(u,{badge:n}))))};export{E as CertificationSummary,i as useStyles};
1
+ import{jsxs as n,jsx as t}from"react/jsx-runtime";import{Link as s}from"@backstage/core-components";import{makeStyles as l,Typography as g,Grid as c}from"@material-ui/core";import{CertificationBadge as h}from"../Badges/CertificationBadge.esm.js";import{SoundcheckMarkdownContent as d}from"../SoundcheckMarkdownContent/SoundcheckMarkdownContent.esm.js";import"react";import"react-markdown";import"rehype-raw";import"remark-gfm";import{StatusDetails as f}from"./StatusDetails.esm.js";const r=l(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 u({description:i,documentationUrl:e}){const o=r();return e?n("div",{className:o.description,children:[t(d,{content:i}),t(s,{to:e,children:"Learn more"})]}):t("div",{className:o.description,children:t(d,{content:i})})}const y=({name:i,badge:e,description:o,documentationUrl:p,trackType:m="standard"})=>{const a=r();return n("div",{className:a.root,children:[t(h,{badge:e,trackType:m,size:"large",showTooltip:!0}),n("div",{children:[t(g,{className:a.title,children:i}),n(c,{container:!0,direction:"column",spacing:0,children:[o&&t(c,{item:!0,children:t(u,{description:o,documentationUrl:p})}),t(f,{badge:e})]})]})]})};export{y as CertificationSummary,r as useStyles};
2
2
  //# sourceMappingURL=CertificationSummary.esm.js.map
@@ -1,2 +1,2 @@
1
- import{stringifyEntityRef as p}from"@backstage/catalog-model";import{useEntity as b}from"@backstage/plugin-catalog-react";import{makeStyles as C,Box as $,Typography as v,Tooltip as N,IconButton as I,CircularProgress as R}from"@material-ui/core";import S from"@material-ui/icons/Refresh";import T from"classnames";import e from"react";import{Link as z}from"react-router-dom";import{ResultState as h}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"../../hooks/useSoundcheckAlert.esm.js";import{useGetExemption as A}from"../../hooks/exemptions/useGetExemption.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useExecuteCheck as w}from"../../hooks/checks/useExecuteCheck.esm.js";import{CheckIcon as B}from"../CheckIcon/CheckIcon.esm.js";import{RelativeTime as F}from"../RelativeTime/RelativeTime.esm.js";const u=C(t=>({root:{display:"flex",width:"100%",gridTemplateColumns:"auto 1fr auto auto auto auto",gridColumnGap:t.spacing(.5),padding:t.spacing(1),alignItems:"center","&.selected":{backgroundColor:t.palette.action.hover},"&:hover, &:active, &:focus":{backgroundColor:t.palette.action.hover}},checkIcon:{height:20}})),G=({className:t,href:r,name:c,children:a})=>r?e.createElement(z,{"aria-label":`select check ${c}`,to:r,className:t},a):e.createElement("div",{className:t},a),L=({result:t,name:r,id:c,timestamp:a,isExecutable:m=!1,selected:d=!1,href:f})=>{const n=u(),k=T(n.root,{selected:d}),{entity:i}=b(),{mutateAsync:y,isLoading:l}=w(),{data:s}=A(p(i),c),E=async()=>{if(!(!i||!c))try{await y({checkerId:c,entityRef:p(i),shouldRefreshFacts:!0})}catch{}},g=!i||!c||!m||l||!!s?.exemption||t===h.NotApplicable,x=()=>{const o="Cannot execute check";return i?c?m?l?`${o} - check is already executing.`:s?.exemption?`${o} - entity has been exempted from this check.`:t===h.NotApplicable?`${o} - check is not applicable to entity.`:"Execute Check":`${o} - check is not executable by Soundcheck`:`${o} - no check id.`:`${o} - no entity.`};return e.createElement(G,{href:f,className:k,name:r},e.createElement(B,{className:n.checkIcon,result:t}),e.createElement($,{flex:1},e.createElement(v,{variant:"body2"},r)),a&&!l?e.createElement(F,{timestamp:a}):null,!l&&e.createElement(e.Fragment,null,e.createElement(N,{title:x()},e.createElement("span",null,e.createElement(I,{size:"small",color:"inherit",onClick:E,disabled:g,"aria-label":"Execute Check"},e.createElement(S,{fontSize:"small"}))))),l&&e.createElement(R,{color:"inherit",size:"1em"}))};export{L as Check,u as useStyles};
1
+ import{jsxs as C,jsx as e,Fragment as $}from"react/jsx-runtime";import{stringifyEntityRef as p}from"@backstage/catalog-model";import{useEntity as v}from"@backstage/plugin-catalog-react";import{makeStyles as E,Box as N,Typography as I,Tooltip as R,IconButton as S,CircularProgress as T}from"@material-ui/core";import z from"@material-ui/icons/Refresh";import A from"classnames";import{Link as L}from"react-router-dom";import{ResultState as h}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"react";import"../../hooks/useSoundcheckAlert.esm.js";import{useGetExemption as j}from"../../hooks/exemptions/useGetExemption.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useExecuteCheck as w}from"../../hooks/checks/useExecuteCheck.esm.js";import{CheckIcon as B}from"../CheckIcon/CheckIcon.esm.js";import{RelativeTime as F}from"../RelativeTime/RelativeTime.esm.js";const d=E(t=>({root:{display:"flex",width:"100%",gridTemplateColumns:"auto 1fr auto auto auto auto",gridColumnGap:t.spacing(.5),padding:t.spacing(1),alignItems:"center","&.selected":{backgroundColor:t.palette.action.hover},"&:hover, &:active, &:focus":{backgroundColor:t.palette.action.hover}},checkIcon:{height:20}})),G=({className:t,href:r,name:o,children:c})=>r?e(L,{"aria-label":`select check ${o}`,to:r,className:t,children:c}):e("div",{className:t,children:c}),P=({result:t,name:r,id:o,timestamp:c,isExecutable:l=!1,selected:u=!1,href:f})=>{const s=d(),k=A(s.root,{selected:u}),{entity:a}=v(),{mutateAsync:y,isLoading:n}=w(),{data:m}=j(p(a),o),x=async()=>{if(!(!a||!o))try{await y({checkerId:o,entityRef:p(a),shouldRefreshFacts:!0})}catch{}},g=!a||!o||!l||n||!!m?.exemption||t===h.NotApplicable,b=()=>{const i="Cannot execute check";return a?o?l?n?`${i} - check is already executing.`:m?.exemption?`${i} - entity has been exempted from this check.`:t===h.NotApplicable?`${i} - check is not applicable to entity.`:"Execute Check":`${i} - check is not executable by Soundcheck`:`${i} - no check id.`:`${i} - no entity.`};return C(G,{href:f,className:k,name:r,children:[e(B,{className:s.checkIcon,result:t}),e(N,{flex:1,children:e(I,{variant:"body2",children:r})}),c&&!n?e(F,{timestamp:c}):null,!n&&e($,{children:e(R,{title:b(),children:e("span",{children:e(S,{size:"small",color:"inherit",onClick:x,disabled:g,"aria-label":"Execute Check",children:e(z,{fontSize:"small"})})})})}),n&&e(T,{color:"inherit",size:"1em"})]})};export{P as Check,d as useStyles};
2
2
  //# sourceMappingURL=Check.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as g,DialogContent as f,Box as h,Typography as S,Select as C,MenuItem as E,TextField as b,DialogActions as k,Button as r}from"@material-ui/core";import e from"react";import{ResultState as c}from"../../graphql/generated/index.esm.js";import{FormFieldLabel as s}from"../FormFieldLabel/FormFieldLabel.esm.js";import{SoundcheckDialog as v}from"../SoundcheckDialog/SoundcheckDialog.esm.js";const m=g(a=>({buttonArea:{paddingLeft:a.spacing(1),paddingBottom:0,justifyContent:"flex-start"},content:{minWidth:600,width:"61.8%",marginTop:a.spacing(0),paddingLeft:a.spacing(1),paddingTop:a.spacing(0)}})),y=({isOpen:a,setIsOpen:n,setCallback:u})=>{const l=m(),[i,p]=e.useState(c.Passed),[o,d]=e.useState("");return e.createElement(v,{title:"Set Check Status",open:a,handleClose:()=>n(!1),fullScreen:!1},e.createElement(f,{className:l.content},e.createElement(h,{marginBottom:2},e.createElement(s,{title:"State"}),e.createElement(S,{variant:"caption"},"Set the state of the check for this entity."),e.createElement(C,{labelId:"result-state-label",value:i,onChange:t=>p(t.target.value),label:"Select State",variant:"outlined",fullWidth:!0,margin:"dense"},Object.values(c).map(t=>e.createElement(E,{key:t,value:t},t)))),e.createElement(s,{title:"Justification"}),e.createElement(b,{margin:"dense",fullWidth:!0,value:o,variant:"outlined",inputProps:{"aria-label":"Check Status Justification"},onChange:t=>d(t.target.value)})),e.createElement(k,{className:l.buttonArea},e.createElement(r,{onClick:()=>{n(!1),u(i,o)},color:"primary",variant:"contained"},"Submit"),e.createElement(r,{onClick:()=>n(!1),color:"primary"},"Cancel")))};export{y as CheckResultInputPopup,m as useStyles};
1
+ import{jsxs as a,jsx as e}from"react/jsx-runtime";import{makeStyles as f,DialogContent as S,Box as C,Typography as b,Select as v,MenuItem as k,TextField as x,DialogActions as y,Button as c}from"@material-ui/core";import{useState as d}from"react";import{ResultState as l}from"../../graphql/generated/index.esm.js";import{FormFieldLabel as p}from"../FormFieldLabel/FormFieldLabel.esm.js";import{SoundcheckDialog as j}from"../SoundcheckDialog/SoundcheckDialog.esm.js";const u=f(n=>({buttonArea:{paddingLeft:n.spacing(1),paddingBottom:0,justifyContent:"flex-start"},content:{minWidth:600,width:"61.8%",marginTop:n.spacing(0),paddingLeft:n.spacing(1),paddingTop:n.spacing(0)}})),B=({isOpen:n,setIsOpen:i,setCallback:m})=>{const o=u(),[r,h]=d(l.Passed),[s,g]=d("");return a(j,{title:"Set Check Status",open:n,handleClose:()=>i(!1),fullScreen:!1,children:[a(S,{className:o.content,children:[a(C,{marginBottom:2,children:[e(p,{title:"State"}),e(b,{variant:"caption",children:"Set the state of the check for this entity."}),e(v,{labelId:"result-state-label",value:r,onChange:t=>h(t.target.value),label:"Select State",variant:"outlined",fullWidth:!0,margin:"dense",children:Object.values(l).filter(t=>t!==l.Exempt).map(t=>e(k,{value:t,children:t},t))})]}),e(p,{title:"Justification"}),e(x,{margin:"dense",fullWidth:!0,value:s,variant:"outlined",multiline:!0,rows:3,maxRows:6,inputProps:{"aria-label":"Check Status Justification"},onChange:t=>g(t.target.value)})]}),a(y,{className:o.buttonArea,children:[e(c,{onClick:()=>{i(!1),m(r,s)},color:"primary",variant:"contained",children:"Submit"}),e(c,{onClick:()=>i(!1),color:"primary",children:"Cancel"})]})]})};export{B as CheckResultInputPopup,u as useStyles};
2
2
  //# sourceMappingURL=CheckResultInputPopup.esm.js.map
@@ -1,2 +1,2 @@
1
- import{useRouteRef as l}from"@backstage/core-plugin-api";import{makeStyles as k,Typography as h}from"@material-ui/core";import c from"react";import{useExecutableChecks as y}from"../../hooks/checks/useExecutableChecks.esm.js";import{certificationRouteRef as f,certificationPlaylistTrackCheckRouteRef as u}from"../../routes.esm.js";import{Check as g}from"./Check.esm.js";const r=k(e=>({noChecks:{padding:e.spacing(1)},checks:{padding:0,margin:0,flex:1,listStyle:"none"},checkItem:{borderBottom:`1px solid ${e.palette.divider}`,"&:last-of-type":{borderBottom:"0"},color:e.palette.text.primary,"& a":{color:e.palette.text.primary,textDecoration:"none"}}})),I=({checks:e,playlistId:o,trackId:i,checkId:s})=>{const a=r(),m=l(f),d=l(u),{data:n,isLoading:p}=y();return e.length?c.createElement("ul",{className:a.checks},e.map(t=>c.createElement("li",{key:t.id,className:a.checkItem},c.createElement(g,{...t,isExecutable:!p&&n?.includes(t.id),selected:t.id===s,href:o?d({playlistId:o,trackId:i,checkId:t.id}):m({trackId:i,checkId:t.id})})))):c.createElement(h,{variant:"body2",className:a.noChecks},"No applicable checks at this level. Toggle your visibility settings to see not applicable checks.")};export{I as CheckResultSummaryList,r as useStyles};
1
+ import{jsx as c}from"react/jsx-runtime";import{useRouteRef as l}from"@backstage/core-plugin-api";import{makeStyles as h,Typography as k}from"@material-ui/core";import{useExecutableChecks as y}from"../../hooks/checks/useExecutableChecks.esm.js";import{certificationRouteRef as f,certificationPlaylistTrackCheckRouteRef as u}from"../../routes.esm.js";import{Check as g}from"./Check.esm.js";const r=h(e=>({noChecks:{padding:e.spacing(1)},checks:{padding:0,margin:0,flex:1,listStyle:"none"},checkItem:{borderBottom:`1px solid ${e.palette.divider}`,"&:last-of-type":{borderBottom:"0"},color:e.palette.text.primary,"& a":{color:e.palette.text.primary,textDecoration:"none"}}})),I=({checks:e,playlistId:o,trackId:a,checkId:s})=>{const i=r(),d=l(f),m=l(u),{data:p,isLoading:n}=y();return e.length?c("ul",{className:i.checks,children:e.map(t=>c("li",{className:i.checkItem,children:c(g,{...t,isExecutable:!n&&p?.includes(t.id),selected:t.id===s,href:o?m({playlistId:o,trackId:a,checkId:t.id}):d({trackId:a,checkId:t.id})})},t.id))}):c(k,{variant:"body2",className:i.noChecks,children:"No applicable checks at this level. Toggle your visibility settings to see not applicable checks."})};export{I as CheckResultSummaryList,r as useStyles};
2
2
  //# sourceMappingURL=CheckResultSummaryList.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as k,DialogContent as S,Box as b,Typography as w,TextField as R,FormHelperText as C,DialogActions as A,Button as u}from"@material-ui/core";import t,{useState as f,useEffect as F,useCallback as x}from"react";import{ResultState as T}from"../../graphql/generated/index.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{useSoundcheckAlert as D}from"../../hooks/useSoundcheckAlert.esm.js";import{useGetExemption as L}from"../../hooks/exemptions/useGetExemption.esm.js";import{useSetEntityExempt as I}from"../../hooks/exemptions/useSetEntityExempt.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{useDeleteExemption as J}from"../../hooks/exemptions/useDeleteExemption.esm.js";import{FormFieldLabel as j}from"../FormFieldLabel/FormFieldLabel.esm.js";import{SoundcheckDialog as B}from"../SoundcheckDialog/SoundcheckDialog.esm.js";const y=k(e=>({buttonArea:{paddingLeft:e.spacing(1),paddingBottom:0,justifyContent:"flex-start"},content:{minWidth:480,width:"61.8%",marginTop:e.spacing(0),paddingLeft:e.spacing(1),paddingTop:e.spacing(0)}})),N=({entityRef:e,checkId:n,isOpen:g,setIsOpen:a})=>{const[P,r]=f(),{showAlert:m}=D(),l=y(),[o,s]=f(""),{mutateAsync:p}=I(),{mutateAsync:c}=J(),{data:i,isLoading:d}=L(e,n);F(()=>{i?.exemption&&s(i.exemption.justification)},[i?.exemption]);const E=x(async()=>{!e||!n||await p({checkId:n,entityRef:e,justification:o})&&r({id:n,entityRef:e,result:T.Exempt,details:{notes:{type:"notes",data:o,version:1}},facts:[],ruleResults:[]})},[e,n,o,p,r]),h=x(async()=>{if(!(!e||!n))try{await c({checkId:n,entityRef:e})}catch{m({severity:"error",title:"Failure",message:"Failed to delete exemption."})}},[e,n,c,m]);return t.createElement(t.Fragment,null,d&&t.createElement("div",null,"Loading..."),!d&&t.createElement(B,{open:g,handleClose:()=>a(!1),title:i?.exemption?"Remove Exemption?":"Justify Exemption",fullScreen:!1},t.createElement(S,{className:l.content},t.createElement(b,null,t.createElement(j,{title:i?.exemption?"Existing Justification":"Exemption Justification"}),!i?.exemption&&t.createElement(w,{variant:"caption"},"Please explain why this exemption is necessary. Supports limited markdown."),t.createElement(R,{disabled:!!i?.exemption,variant:"outlined",margin:"dense",fullWidth:!0,value:o,inputProps:{"aria-label":"Exemption Reason"},multiline:!0,onChange:v=>s(v.target.value)}),t.createElement(C,null,"Note: The act of adding or removing an exemption is tied to your user id and is monitored and recorded. Exemptions should only be added or removed with proper cause."))),t.createElement(A,{className:l.buttonArea},t.createElement(u,{variant:"contained",onClick:async()=>{a(!1),i?.exemption?await h():await E()},color:"primary",disabled:!i?.exemption&&(!o||o?.length===0)},i?.exemption?"Remove":"Submit"),t.createElement(u,{onClick:()=>a(!1),color:"primary"},"Cancel"))))};export{N as ExemptionJustificationDialog,y as useStyles};
1
+ import{jsxs as a,Fragment as k,jsx as n}from"react/jsx-runtime";import{makeStyles as R,DialogContent as S,Box as b,Typography as C,TextField as A,FormHelperText as F,DialogActions as T,Button as x}from"@material-ui/core";import{useState as f,useEffect as j,useCallback as h}from"react";import{ResultState as D}from"../../graphql/generated/index.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{useSoundcheckAlert as L}from"../../hooks/useSoundcheckAlert.esm.js";import{useGetExemption as I}from"../../hooks/exemptions/useGetExemption.esm.js";import{useSetEntityExempt as J}from"../../hooks/exemptions/useSetEntityExempt.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{useDeleteExemption as B}from"../../hooks/exemptions/useDeleteExemption.esm.js";import{FormFieldLabel as N}from"../FormFieldLabel/FormFieldLabel.esm.js";import{SoundcheckDialog as H}from"../SoundcheckDialog/SoundcheckDialog.esm.js";const g=R(e=>({buttonArea:{paddingLeft:e.spacing(1),paddingBottom:0,justifyContent:"flex-start"},content:{minWidth:480,width:"61.8%",marginTop:e.spacing(0),paddingLeft:e.spacing(1),paddingTop:e.spacing(0)}})),O=({entityRef:e,checkId:i,isOpen:y,setIsOpen:r})=>{const[P,m]=f(),{showAlert:s}=L(),p=g(),[o,l]=f(""),{mutateAsync:d}=J(),{mutateAsync:c}=B(),{data:t,isLoading:u}=I(e,i);j(()=>{t?.exemption&&l(t.exemption.justification)},[t?.exemption]);const v=h(async()=>{!e||!i||await d({checkId:i,entityRef:e,justification:o})&&m({id:i,entityRef:e,result:D.Exempt,details:{notes:{type:"notes",data:o,version:1}},facts:[],ruleResults:[]})},[e,i,o,d,m]),E=h(async()=>{if(!(!e||!i))try{await c({checkId:i,entityRef:e})}catch{s({severity:"error",title:"Failure",message:"Failed to delete exemption."})}},[e,i,c,s]);return a(k,{children:[u&&n("div",{children:"Loading..."}),!u&&a(H,{open:y,handleClose:()=>r(!1),title:t?.exemption?"Remove Exemption?":"Justify Exemption",fullScreen:!1,children:[n(S,{className:p.content,children:a(b,{children:[n(N,{title:t?.exemption?"Existing Justification":"Exemption Justification"}),!t?.exemption&&n(C,{variant:"caption",children:"Please explain why this exemption is necessary. Supports limited markdown."}),n(A,{disabled:!!t?.exemption,variant:"outlined",margin:"dense",fullWidth:!0,value:o,inputProps:{"aria-label":"Exemption Reason"},multiline:!0,rows:3,maxRows:6,onChange:w=>l(w.target.value)}),n(F,{children:"Note: The act of adding or removing an exemption is tied to your user id and is monitored and recorded. Exemptions should only be added or removed with proper cause."})]})}),a(T,{className:p.buttonArea,children:[n(x,{variant:"contained",onClick:async()=>{r(!1),t?.exemption?await E():await v()},color:"primary",disabled:!t?.exemption&&(!o||o?.length===0),children:t?.exemption?"Remove":"Submit"}),n(x,{onClick:()=>r(!1),color:"primary",children:"Cancel"})]})]})]})};export{O as ExemptionJustificationDialog,g as useStyles};
2
2
  //# sourceMappingURL=ExemptionJustificationDialog.esm.js.map
@@ -1,2 +1,2 @@
1
- import{MarkdownContent as i}from"@backstage/core-components";import{makeStyles as n,Typography as p,Grid as a}from"@material-ui/core";import r from"react";import{LevelBadge as d}from"../Badges/LevelBadge.esm.js";import"../Badges/NoLevelBadge.esm.js";import"../Badges/CampaignBadge.esm.js";import{StatusDetails as l}from"./StatusDetails.esm.js";const o=n(e=>({wrapper:{backgroundColor:e.palette.background.default,color:e.palette.text.primary,fontSize:e.typography.caption.fontSize,minHeight:"auto",borderTop:`1px solid ${e.palette.divider}`,borderBottom:`1px solid ${e.palette.divider}`,padding:e.spacing(1),display:"grid",gridTemplateAreas:({badge:t})=>[`"${t?"badge":"title"} title"`,`"${t?".":"description"} description"`].join(" "),gridTemplateColumns:"auto 1fr"},title:{gridArea:"title",textTransform:"uppercase",fontWeight:"bold",color:e.palette.text.primary,fontSize:e.typography.body2.fontSize,paddingTop:e.spacing(.5),paddingBottom:e.spacing(.5),lineHeight:1},badge:{gridArea:"badge",marginRight:e.spacing(1)},description:{gridArea:"description",color:e.palette.text.primary,fontSize:e.typography.subtitle2.fontSize,"& p":{marginBlockStart:0,marginBlockEnd:0}}})),m=e=>{const t=o({badge:e.badge});return r.createElement("div",{className:t.wrapper},e.badge?r.createElement(d,{className:t.badge,badge:e.badge}):null,r.createElement(p,{className:t.title},e.title),r.createElement(a,{container:!0,direction:"column",spacing:0,className:t.description},e.description?r.createElement(a,{item:!0},r.createElement(i,{content:e.description})):null,r.createElement(l,{badge:e.badge})))};export{m as LevelSummary,o as useStyles};
1
+ import{jsxs as t,jsx as r}from"react/jsx-runtime";import{makeStyles as p,Typography as d,Grid as o}from"@material-ui/core";import{LevelBadge as n}from"../Badges/LevelBadge.esm.js";import"../Badges/NoLevelBadge.esm.js";import"../Badges/CampaignBadge.esm.js";import{SoundcheckMarkdownContent as l}from"../SoundcheckMarkdownContent/SoundcheckMarkdownContent.esm.js";import"@backstage/core-components";import"react";import"react-markdown";import"rehype-raw";import"remark-gfm";import{StatusDetails as g}from"./StatusDetails.esm.js";const a=p(e=>({wrapper:{backgroundColor:e.palette.background.default,color:e.palette.text.primary,fontSize:e.typography.caption.fontSize,minHeight:"auto",borderTop:`1px solid ${e.palette.divider}`,borderBottom:`1px solid ${e.palette.divider}`,padding:e.spacing(1),display:"grid",gridTemplateAreas:({badge:i})=>[`"${i?"badge":"title"} title"`,`"${i?".":"description"} description"`].join(" "),gridTemplateColumns:"auto 1fr"},title:{gridArea:"title",textTransform:"uppercase",fontWeight:"bold",color:e.palette.text.primary,fontSize:e.typography.body2.fontSize,paddingTop:e.spacing(.5),paddingBottom:e.spacing(.5),lineHeight:1},badge:{gridArea:"badge",marginRight:e.spacing(1)},description:{gridArea:"description",color:e.palette.text.primary,fontSize:e.typography.subtitle2.fontSize,"& p":{marginBlockStart:0,marginBlockEnd:0}}})),m=e=>{const i=a({badge:e.badge});return t("div",{className:i.wrapper,children:[e.badge?r(n,{className:i.badge,badge:e.badge}):null,r(d,{className:i.title,children:e.title}),t(o,{container:!0,direction:"column",spacing:0,className:i.description,children:[e.description?r(o,{item:!0,children:r(l,{content:e.description})}):null,r(g,{badge:e.badge})]})]})};export{m as LevelSummary,a as useStyles};
2
2
  //# sourceMappingURL=LevelSummary.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as i,Grid as l,Typography as m}from"@material-ui/core";import e from"react";import{BadgeVariant as p}from"../../graphql/generated/index.esm.js";const s=i(a=>({status:{fontSize:"12px",color:a.palette.text.secondary}})),c=a=>{const n=s();if(a.badge?.variant!==p.Status)return e.createElement(e.Fragment,null);const t=a.badge.options.status;if(!t)return e.createElement(e.Fragment,null);const r=t.passed+t.failed+t.warning+t.error+t.notReported,o=r?t.passed/r*100:0;return e.createElement(l,{item:!0},e.createElement(m,{variant:"caption",className:n.status},`${t.passed}/${r} checks passed (${Math.round(o)}%)`))};export{c as StatusDetails,s as useStyles};
1
+ import{jsx as r,Fragment as a}from"react/jsx-runtime";import{makeStyles as p,Grid as d,Typography as c}from"@material-ui/core";import{BadgeVariant as m}from"../../graphql/generated/index.esm.js";const o=p(e=>({status:{fontSize:"12px",color:e.palette.text.secondary}})),u=e=>{const n=o();if(e.badge?.variant!==m.Status)return r(a,{});const t=e.badge.options.status;if(!t)return r(a,{});const s=t.passed+t.failed+t.warning+t.error+t.notReported,i=s?t.passed/s*100:0;return r(d,{item:!0,children:r(c,{variant:"caption",className:n.status,children:`${t.passed}/${s} checks passed (${Math.round(i)}%)`})})};export{u as StatusDetails,o as useStyles};
2
2
  //# sourceMappingURL=StatusDetails.esm.js.map
@@ -1,2 +1,2 @@
1
- import e from"react";import{useStyles as n}from"../CertificationSidebar.esm.js";import{CertificationSummarySkeleton as m}from"./CertificationSummarySkeleton.esm.js";import{CheckSkeleton as t}from"./CheckSkeleton.esm.js";import{LevelSummarySkeleton as o}from"./LevelSummarySkeleton.esm.js";const a=()=>{const l=n();return e.createElement("div",null,e.createElement(m,null),new Array(3).fill(null).map((c,r)=>e.createElement(e.Fragment,{key:`skeleton-level-${r}`},e.createElement(o,null),e.createElement("ul",{className:l.checks},e.createElement(t,null),e.createElement(t,null),e.createElement(t,null)))))};export{a as CertificationSidebarSkeleton};
1
+ import{jsxs as r,jsx as e}from"react/jsx-runtime";import{Fragment as i}from"react";import{useStyles as l}from"../CertificationSidebar.esm.js";import{CertificationSummarySkeleton as n}from"./CertificationSummarySkeleton.esm.js";import{CheckSkeleton as o}from"./CheckSkeleton.esm.js";import{LevelSummarySkeleton as s}from"./LevelSummarySkeleton.esm.js";const c=()=>{const t=l();return r("div",{children:[e(n,{}),new Array(3).fill(null).map((a,m)=>r(i,{children:[e(s,{}),r("ul",{className:t.checks,children:[e(o,{}),e(o,{}),e(o,{})]})]},`skeleton-level-${m}`))]})};export{c as CertificationSidebarSkeleton};
2
2
  //# sourceMappingURL=CertificationSidebarSkeleton.esm.js.map
@@ -1,2 +1,2 @@
1
- import{Typography as a}from"@material-ui/core";import{Skeleton as t}from"@material-ui/lab";import e from"react";import{FadeIn as m}from"../../FadeIn/FadeIn.esm.js";import{useStyles as n}from"../CertificationSummary.esm.js";const i=({hideDescription:l=!1})=>{const r=n();return e.createElement(m,null,e.createElement("div",{className:r.root},e.createElement(t,{width:44,height:44}),e.createElement("div",null,e.createElement(a,{variant:"caption",className:r.level},e.createElement(t,{width:100})),e.createElement(a,{variant:"h4",className:r.title},e.createElement(t,{width:300})),!l&&e.createElement(a,{variant:"body2"},e.createElement(t,null)))))};export{i as CertificationSummarySkeleton};
1
+ import{jsx as i,jsxs as o}from"react/jsx-runtime";import{Typography as e}from"@material-ui/core";import{Skeleton as r}from"@material-ui/lab";import{FadeIn as a}from"../../FadeIn/FadeIn.esm.js";import{useStyles as l}from"../CertificationSummary.esm.js";const m=({hideDescription:n=!1})=>{const t=l();return i(a,{children:o("div",{className:t.root,children:[i(r,{width:44,height:44}),o("div",{children:[i(e,{variant:"caption",className:t.level,children:i(r,{width:100})}),i(e,{variant:"h4",className:t.title,children:i(r,{width:300})}),!n&&i(e,{variant:"body2",children:i(r,{})})]})]})})};export{m as CertificationSummarySkeleton};
2
2
  //# sourceMappingURL=CertificationSummarySkeleton.esm.js.map
@@ -1,2 +1,2 @@
1
- import{Typography as o}from"@material-ui/core";import{Skeleton as t}from"@material-ui/lab";import e from"react";import{FadeIn as m}from"../../FadeIn/FadeIn.esm.js";import{useStyles as n}from"../Check.esm.js";const l=()=>{const r=n();return e.createElement(m,null,e.createElement("div",{className:r.root},e.createElement(t,{width:24,height:24}),e.createElement(o,{variant:"body2"},e.createElement(t,null)),e.createElement(t,{width:100,height:24})))};export{l as CheckSkeleton};
1
+ import{jsx as o,jsxs as e}from"react/jsx-runtime";import{Typography as i}from"@material-ui/core";import{Skeleton as r}from"@material-ui/lab";import{FadeIn as h}from"../../FadeIn/FadeIn.esm.js";import{useStyles as m}from"../Check.esm.js";const n=()=>{const t=m();return o(h,{children:e("div",{className:t.root,children:[o(r,{width:24,height:24}),o(i,{variant:"body2",children:o(r,{})}),o(r,{width:100,height:24})]})})};export{n as CheckSkeleton};
2
2
  //# sourceMappingURL=CheckSkeleton.esm.js.map
@@ -1,2 +1,2 @@
1
- import{Typography as m}from"@material-ui/core";import{Skeleton as r}from"@material-ui/lab";import e from"react";import{FadeIn as o}from"../../FadeIn/FadeIn.esm.js";import{useStyles as l}from"../LevelSummary.esm.js";const a=()=>{const t=l({});return e.createElement(o,null,e.createElement("div",{className:t.wrapper},e.createElement(r,{className:t.title}),e.createElement(m,{className:t.description},e.createElement(r,null))))};export{a as LevelSummarySkeleton};
1
+ import{jsx as r,jsxs as m}from"react/jsx-runtime";import{Typography as t}from"@material-ui/core";import{Skeleton as o}from"@material-ui/lab";import{FadeIn as s}from"../../FadeIn/FadeIn.esm.js";import{useStyles as i}from"../LevelSummary.esm.js";const l=()=>{const e=i({});return r(s,{children:m("div",{className:e.wrapper,children:[r(o,{className:e.title}),r(t,{className:e.description,children:r(o,{})})]})})};export{l as LevelSummarySkeleton};
2
2
  //# sourceMappingURL=LevelSummarySkeleton.esm.js.map
@@ -1,2 +1,2 @@
1
- import{useEntity as c}from"@backstage/plugin-catalog-react";import{makeStyles as l,Tab as d}from"@material-ui/core";import t from"react";import{Link as f}from"react-router-dom";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import{useCertificationDetailsForTrack as g}from"../../hooks/certifications/useCertificationDetailsForTrack.esm.js";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{CertificationBadge as b}from"../Badges/CertificationBadge.esm.js";const a=l(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)}})),u=({id:e,name:i,badge:o,href:p,selected:m=!1})=>{const r=a(),{entity:n}=c(),{data:s}=g(n,e);return t.createElement(d,{className:r.root,classes:{wrapper:r.wrapper},value:e,label:t.createElement(t.Fragment,null,t.createElement(b,{badge:o,trackType:s?.track.type,className:r.badge}),i),component:f,to:p,selected:m})};export{u as CertificationTab,a as useStyles};
1
+ import{jsx as e,jsxs as c,Fragment as l}from"react/jsx-runtime";import{useEntity as d}from"@backstage/plugin-catalog-react";import{makeStyles as f,Tab as g}from"@material-ui/core";import{Link as b}from"react-router-dom";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import{useCertificationDetailsForTrack as h}from"../../hooks/certifications/useCertificationDetailsForTrack.esm.js";import"@spotify/backstage-plugin-soundcheck-common";import"react";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{CertificationBadge as w}from"../Badges/CertificationBadge.esm.js";const i=f(t=>({root:{maxWidth:"80ch",textTransform:"uppercase",paddingTop:t.spacing(2),paddingBottom:t.spacing(2)},wrapper:{display:"inline-block",textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden"},badge:{marginRight:t.spacing(1)}})),y=({id:t,name:o,badge:a,href:p,selected:m=!1})=>{const r=i(),{entity:s}=d(),{data:n}=h(s,t);return e(g,{className:r.root,classes:{wrapper:r.wrapper},value:t,label:c(l,{children:[e(w,{badge:a,trackType:n?.track.type,className:r.badge}),o]}),component:b,to:p,selected:m})};export{y as CertificationTab,i as useStyles};
2
2
  //# sourceMappingURL=CertificationTab.esm.js.map
@@ -1,2 +1,2 @@
1
- import{useRouteRef as u}from"@backstage/core-plugin-api";import{useEntity as T}from"@backstage/plugin-catalog-react";import{makeStyles as v,Tabs as N,IconButton as A,Menu as B,MenuItem as h,Switch as g}from"@material-ui/core";import P from"@material-ui/icons/ArrowDropDown";import L from"@material-ui/icons/Settings.js";import t,{useState as M,useEffect as O}from"react";import k from"react-use/lib/useLocalStorage";import{useAllCertifications as K}from"../../hooks/certifications/useAllCertifications.esm.js";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/catalog-model";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{usePlaylists as Q}from"../../hooks/playlists/usePlaylists.esm.js";import{certificationPlaylistRouteRef as j,certificationTrackRouteRef as q}from"../../routes.esm.js";import{CertificationTab as D}from"./CertificationTab.esm.js";import{PlaylistCertificationTab as F}from"./PlaylistCertificationTab.esm.js";import{CertificationTabsSkeleton as G}from"./skeletons/CertificationTabsSkeleton.esm.js";function H(a=[],o=[],n,l){if(n){const i=a.findIndex(r=>r.id===n);return i<0?!1:i}const c=o.findIndex(i=>i.track.id===l);return c<0?!1:c+a.length}const J=v(a=>({tabsContainer:{display:"flex",alignItems:"center"},tabs:{flex:1},settingsButton:{display:"flex",alignItems:"center",marginRight:a.spacing(1)}})),U=({playlistId:a,trackId:o,onSettingsChange:n})=>{const l=J(),[c,i]=M(null),[r,E]=k("soundcheck.certifications.showNotApplicable",!1),[s,b]=k("soundcheck.certifications.showExempt",!0);O(()=>{n?.({showNotApplicable:!!r,showExempt:!!s})},[r,s,n]);const C=e=>{i(e.currentTarget)},y=()=>{i(null)},{entity:d}=T(),{isLoading:I,data:m}=K(d),{isLoading:x,data:f}=Q(d),S=u(j),w=u(q);if(x||I||!o)return t.createElement(G,null);const z=H(f,m,a,o);return t.createElement("div",{className:l.tabsContainer},t.createElement(N,{className:l.tabs,value:z,indicatorColor:"primary","aria-label":"Certifications",variant:"scrollable"},f?.length&&f.map(({id:e,name:p})=>t.createElement(F,{key:e,id:e,name:p,selected:e===o,href:S({playlistId:e})})),m&&m.filter(({track:{type:e}})=>e!=="playlist").map(({track:{id:e,name:p,badge:R}})=>t.createElement(D,{key:e,id:e,name:p,badge:R,selected:e===o,href:w({trackId:e})}))),t.createElement(A,{className:l.settingsButton,onClick:C,size:"small"},t.createElement(L,{fontSize:"small"}),t.createElement(P,{fontSize:"small"})),t.createElement(B,{anchorEl:c,open:!!c,onClose:y,anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"}},t.createElement(h,{onClick:()=>{E(!r)},dense:!0},t.createElement(g,{size:"small",checked:r}),"Show Not Applicable Checks"),t.createElement(h,{onClick:()=>{b(!s)},dense:!0},t.createElement(g,{size:"small",checked:s}),"Show Exempt Checks")))};export{U as CertificationTabs};
1
+ import{jsx as i,jsxs as o}from"react/jsx-runtime";import{useRouteRef as b}from"@backstage/core-plugin-api";import{useEntity as N}from"@backstage/plugin-catalog-react";import{makeStyles as B,Tabs as M,IconButton as P,Menu as j,MenuItem as u,Switch as k}from"@material-ui/core";import D from"@material-ui/icons/ArrowDropDown";import L from"@material-ui/icons/Settings.js";import{useState as O,useEffect as V}from"react";import g from"react-use/lib/useLocalStorage";import{useAllCertifications as W}from"../../hooks/certifications/useAllCertifications.esm.js";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/catalog-model";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{usePlaylists as X}from"../../hooks/playlists/usePlaylists.esm.js";import{certificationPlaylistRouteRef as q,certificationTrackRouteRef as F}from"../../routes.esm.js";import{CertificationTab as G}from"./CertificationTab.esm.js";import{PlaylistCertificationTab as H}from"./PlaylistCertificationTab.esm.js";import{CertificationTabsSkeleton as J}from"./skeletons/CertificationTabsSkeleton.esm.js";function K(r=[],n=[],s,c){if(s){const e=r.findIndex(a=>a.id===s);return e<0?!1:e}const l=n.findIndex(e=>e.track.id===c);return l<0?!1:l+r.length}const Q=B(r=>({tabsContainer:{display:"flex",alignItems:"center"},tabs:{flex:1},settingsButton:{display:"flex",alignItems:"center",marginRight:r.spacing(1)}})),U=({playlistId:r,trackId:n,onSettingsChange:s})=>{const c=Q(),[l,e]=O(null),[a,y]=g("soundcheck.certifications.showNotApplicable",!1),[m,x]=g("soundcheck.certifications.showExempt",!0),[f,I]=g("soundcheck.certifications.showDraftTracksAndCampaigns",!1);V(()=>{s?.({showNotApplicable:!!a,showExempt:!!m})},[a,m,s]);const S=t=>{e(t.currentTarget)},w=()=>{e(null)},{entity:C}=N(),{isLoading:T,data:p}=W(C,!1,f),{isLoading:z,data:d}=X(C),E=b(q),R=b(F);if(z||T||!n)return i(J,{});const v=K(d,p,r,n);return o("div",{className:c.tabsContainer,children:[o(M,{className:c.tabs,value:v,indicatorColor:"primary","aria-label":"Certifications",variant:"scrollable",children:[d?.length&&d.map(({id:t,name:h})=>i(H,{id:t,name:h,selected:t===n,href:E({playlistId:t})},t)),p&&p.filter(({track:{type:t}})=>t!=="playlist").map(({track:{id:t,name:h,badge:A}})=>i(G,{id:t,name:h,badge:A,selected:t===n,href:R({trackId:t})},t))]}),o(P,{className:c.settingsButton,onClick:S,size:"small",children:[i(L,{fontSize:"small"}),i(D,{fontSize:"small"})]}),o(j,{anchorEl:l,open:!!l,onClose:w,anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},children:[o(u,{onClick:()=>{y(!a)},dense:!0,children:[i(k,{size:"small",checked:a}),"Show Not Applicable Checks"]}),o(u,{onClick:()=>{x(!m)},dense:!0,children:[i(k,{size:"small",checked:m}),"Show Exempt Checks"]}),o(u,{onClick:()=>{I(!f)},dense:!0,children:[i(k,{size:"small",checked:f}),"Show Draft Tracks and Campaigns"]})]})]})};export{U as CertificationTabs};
2
2
  //# sourceMappingURL=CertificationTabs.esm.js.map