@spotify/backstage-plugin-soundcheck 0.16.0 → 0.16.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (430) hide show
  1. package/CHANGELOG.md +67 -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 +62 -47
  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 +2 -0
  54. package/dist/components/CertificationSidebar/CheckResultSummaryList.esm.js +1 -1
  55. package/dist/components/CertificationSidebar/ExemptionJustificationDialog.esm.js +2 -0
  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 +2 -0
  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 +2 -0
  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 +2 -0
  167. package/dist/components/CollectorPage/Configurators/Github/DependabotAlertsFactDetails.esm.js +2 -0
  168. package/dist/components/CollectorPage/Configurators/Github/GithubConfigurator.esm.js +1 -1
  169. package/dist/components/CollectorPage/Configurators/Github/SecretScanningAlertsFactDetails.esm.js +2 -0
  170. package/dist/components/CollectorPage/Configurators/Github/SecurityAdvisoriesFactDetails.esm.js +2 -0
  171. package/dist/components/CollectorPage/Configurators/Github/types.esm.js +2 -0
  172. package/dist/components/CollectorPage/Configurators/Github/utils.esm.js +1 -1
  173. package/dist/components/CollectorPage/Configurators/Github/validation.esm.js +2 -0
  174. package/dist/components/CollectorPage/Configurators/Gitlab/GitlabConfigurator.esm.js +1 -1
  175. package/dist/components/CollectorPage/Configurators/HTTP/HttpConfigurator.esm.js +1 -1
  176. package/dist/components/CollectorPage/Configurators/HTTP/HttpRequestComponent.esm.js +1 -1
  177. package/dist/components/CollectorPage/Configurators/HTTP/HttpResponseComponent.esm.js +1 -1
  178. package/dist/components/CollectorPage/Configurators/HTTP/HttpRetriesComponent.esm.js +1 -1
  179. package/dist/components/CollectorPage/Configurators/HTTP/HttpStatusesInput.esm.js +1 -1
  180. package/dist/components/CollectorPage/Configurators/HTTP/RequestFactDetailsComponent.esm.js +1 -1
  181. package/dist/components/CollectorPage/Configurators/HTTP/validation.esm.js +1 -1
  182. package/dist/components/CollectorPage/Configurators/Jira/IssuesSearchFactDetailsComponent.esm.js +1 -1
  183. package/dist/components/CollectorPage/Configurators/Jira/JiraConfigurator.esm.js +1 -1
  184. package/dist/components/CollectorPage/Configurators/Jira/validation.esm.js +1 -1
  185. package/dist/components/CollectorPage/Configurators/Kubernetes/KubernetesConfigurator.esm.js +1 -1
  186. package/dist/components/CollectorPage/Configurators/Kubernetes/KubernetesFactDetails.esm.js +1 -1
  187. package/dist/components/CollectorPage/Configurators/Kubernetes/validation.esm.js +1 -1
  188. package/dist/components/CollectorPage/Configurators/NewRelic/NewRelicConfigurator.esm.js +1 -1
  189. package/dist/components/CollectorPage/Configurators/PagerDuty/IncidentsFactDetailsComponent.esm.js +1 -1
  190. package/dist/components/CollectorPage/Configurators/PagerDuty/PagerDutyConfigurator.esm.js +1 -1
  191. package/dist/components/CollectorPage/Configurators/PagerDuty/StatusesComponent.esm.js +1 -1
  192. package/dist/components/CollectorPage/Configurators/PagerDuty/validation.esm.js +1 -1
  193. package/dist/components/CollectorPage/Configurators/SCM/ExistsFactDetailsComponent.esm.js +1 -1
  194. package/dist/components/CollectorPage/Configurators/SCM/FactDetailsComponent.esm.js +1 -1
  195. package/dist/components/CollectorPage/Configurators/SCM/JsonFactDetailsComponent.esm.js +1 -1
  196. package/dist/components/CollectorPage/Configurators/SCM/RegexFactDetailsComponent.esm.js +1 -1
  197. package/dist/components/CollectorPage/Configurators/SCM/ScmConfigurator.esm.js +1 -1
  198. package/dist/components/CollectorPage/Configurators/SCM/utils.esm.js +1 -1
  199. package/dist/components/CollectorPage/Configurators/SCM/validation.esm.js +1 -1
  200. package/dist/components/CollectorPage/Configurators/SonarQube/IssuesFactDetailsInput.esm.js +2 -0
  201. package/dist/components/CollectorPage/Configurators/SonarQube/MeasuresFactDetailsInput.esm.js +1 -1
  202. package/dist/components/CollectorPage/Configurators/SonarQube/MetricsInput.esm.js +1 -1
  203. package/dist/components/CollectorPage/Configurators/SonarQube/SonarQubeConfigurator.esm.js +1 -1
  204. package/dist/components/CollectorPage/Configurators/SonarQube/utils.esm.js +1 -1
  205. package/dist/components/CollectorPage/Configurators/SonarQube/validation.esm.js +1 -1
  206. package/dist/components/CollectorsPage/CollectorListPage/CollectorListPage.esm.js +1 -1
  207. package/dist/components/CollectorsPage/CollectorListPage/CollectorListSkeleton.esm.js +1 -1
  208. package/dist/components/CollectorsPage/CollectorListPage/CollectorLogo.esm.js +1 -1
  209. package/dist/components/CollectorsPage/CollectorListPage/CollectorSummaryCard.esm.js +1 -1
  210. package/dist/components/CollectorsPage/CollectorsPage.esm.js +1 -1
  211. package/dist/components/EmptyState/EmptyState.esm.js +1 -1
  212. package/dist/components/EntitiesAutocompletePicker/EntitiesAutocompletePicker.esm.js +2 -0
  213. package/dist/components/EntityChip/EntityChip.esm.js +1 -1
  214. package/dist/components/EntityContent/EntityContent.esm.js +1 -1
  215. package/dist/components/EntityPassRateCard/EntityPassRateCard.esm.js +1 -1
  216. package/dist/components/EntitySoundcheckCard/Card.esm.js +1 -1
  217. package/dist/components/EntitySoundcheckCard/EntitySoundcheckCard.esm.js +1 -1
  218. package/dist/components/EntitySoundcheckCard/skeletons/CardSkeleton.esm.js +1 -1
  219. package/dist/components/EntitySoundcheckContent.esm.js +1 -1
  220. package/dist/components/Expand/Expand.esm.js +1 -1
  221. package/dist/components/ExpandableSection/ExpandableSection.esm.js +1 -1
  222. package/dist/components/FactExplorer/FactExplorer.esm.js +1 -1
  223. package/dist/components/FactExplorer/FactExplorerContext.esm.js +1 -1
  224. package/dist/components/FactExplorer/FactExplorerDialog.esm.js +1 -1
  225. package/dist/components/FadeIn/FadeIn.esm.js +1 -1
  226. package/dist/components/Filter/EntityAutocompletePicker.esm.js +1 -1
  227. package/dist/components/Filter/FilterComponent.esm.js +1 -1
  228. package/dist/components/Filter/FilterKeyValueInput.esm.js +1 -1
  229. package/dist/components/Filter/FilterPreviewTable/EntityTableColumns.esm.js +1 -1
  230. package/dist/components/Filter/FilterPreviewTable/FilterPreviewTable.esm.js +1 -1
  231. package/dist/components/Filter/KeyValueInputDialog.esm.js +1 -1
  232. package/dist/components/FilterSidebar/FilterSidebar.esm.js +2 -0
  233. package/dist/components/FilterSidebar/StateFilter.esm.js +2 -0
  234. package/dist/components/FooterButtons/FooterButtons.esm.js +1 -1
  235. package/dist/components/FormControlledAutocomplete/ControlledAutocomplete.esm.js +1 -1
  236. package/dist/components/FormControlledAutocomplete/FormControlledAutocomplete.esm.js +1 -1
  237. package/dist/components/FormControlledAutocomplete/FormControlledMultipleAutocomplete.esm.js +2 -0
  238. package/dist/components/FormControlledSelect/FormControlledSelect.esm.js +1 -1
  239. package/dist/components/FormControlledTextField/FormControlledTextField.esm.js +1 -1
  240. package/dist/components/FormFieldLabel/FormFieldLabel.esm.js +1 -1
  241. package/dist/components/FormFilterSection/FormFilterSection.esm.js +1 -1
  242. package/dist/components/FormMarkdownInput/FormMarkdownInput.esm.js +1 -1
  243. package/dist/components/FormStepper/FormStepper.esm.js +1 -1
  244. package/dist/components/FormTextInput/FormTextInput.esm.js +1 -1
  245. package/dist/components/FormattedPreview/FormattedPreview.esm.js +2 -2
  246. package/dist/components/Frequency/FrequencyComponent.esm.js +1 -1
  247. package/dist/components/GroupPassRateCard/GroupPassRateCard.esm.js +1 -1
  248. package/dist/components/GroupSelector/GroupSelector.esm.js +1 -1
  249. package/dist/components/LevelUpParty/LevelUpParty.esm.js +1 -1
  250. package/dist/components/LevelsTable/CheckRowContent.esm.js +2 -0
  251. package/dist/components/LevelsTable/LevelsTable.esm.js +2 -0
  252. package/dist/components/ListboxVirtualized/ListboxVirtualized.esm.js +1 -1
  253. package/dist/components/LoadingIndicator/LoadingIndicator.esm.js +1 -1
  254. package/dist/components/MultiSelectFilter/MultiSelectFilter.esm.js +1 -1
  255. package/dist/components/NoBorderButton/NoBorderButton.esm.js +1 -1
  256. package/dist/components/OrgHealth/OrgHealthPage.esm.js +2 -0
  257. package/dist/components/OverviewChartCard/OverviewChartCard.esm.js +1 -1
  258. package/dist/components/OverviewPage/FixedGroupOverviewPage.esm.js +1 -1
  259. package/dist/components/OverviewPage/OverviewPage.esm.js +1 -1
  260. package/dist/components/OverviewPage/OverviewPageContent.esm.js +1 -1
  261. package/dist/components/OverviewPage/OverviewPageHeader.esm.js +1 -1
  262. package/dist/components/OverviewTable/Cell/CheckCell.esm.js +1 -1
  263. package/dist/components/OverviewTable/Cell/CheckCellTooltip.esm.js +1 -1
  264. package/dist/components/OverviewTable/Cell/CheckLabelCell.esm.js +1 -1
  265. package/dist/components/OverviewTable/Cell/CheckNameCell.esm.js +1 -1
  266. package/dist/components/OverviewTable/Cell/EntityRefCell.esm.js +1 -1
  267. package/dist/components/OverviewTable/Cell/TrackBadgeCell.esm.js +1 -1
  268. package/dist/components/OverviewTable/Cell/TrackCheckIndicator.esm.js +1 -1
  269. package/dist/components/OverviewTable/Cell/TrackLevelHeaderCell.esm.js +1 -1
  270. package/dist/components/OverviewTable/Cell/TrackTitleCell.esm.js +1 -1
  271. package/dist/components/OverviewTable/Cell/cellRenderer.esm.js +1 -1
  272. package/dist/components/OverviewTable/OverviewTable.esm.js +1 -1
  273. package/dist/components/OverviewTable/OverviewTableContent.esm.js +1 -1
  274. package/dist/components/OverviewTable/OverviewTableSkeleton.esm.js +1 -1
  275. package/dist/components/OverviewTable/ResultsTable.esm.js +1 -1
  276. package/dist/components/OverviewTable/ResultsTableHeader.esm.js +1 -1
  277. package/dist/components/OverviewTable/ResultsTableRow.esm.js +1 -1
  278. package/dist/components/PageWarningMessage/PageWarningMessage.esm.js +1 -1
  279. package/dist/components/Pagination/CursorPagination.esm.js +1 -1
  280. package/dist/components/Pagination/Pagination.esm.js +1 -1
  281. package/dist/components/PassRateGrid/PassRateGrid.esm.js +1 -1
  282. package/dist/components/PassRateGrid/PassRateMetadata.esm.js +1 -1
  283. package/dist/components/PassRateTable/NewPassRateTable.esm.js +1 -1
  284. package/dist/components/PassRateTable/PassRateTable.esm.js +2 -2
  285. package/dist/components/QuickstartPage/HowDoIListItem.esm.js +1 -1
  286. package/dist/components/QuickstartPage/QuickStartChecksCard.esm.js +1 -1
  287. package/dist/components/QuickstartPage/QuickstartCardBase.esm.js +1 -1
  288. package/dist/components/QuickstartPage/QuickstartCollectorConfigurationsCard.esm.js +1 -1
  289. package/dist/components/QuickstartPage/QuickstartPage.esm.js +1 -1
  290. package/dist/components/QuickstartPage/QuickstartTracksCard.esm.js +1 -1
  291. package/dist/components/QuickstartPage/WelcomeHelpSection.esm.js +6 -6
  292. package/dist/components/QuickstartPage/WelcomeModal.esm.js +1 -1
  293. package/dist/components/RefetchingIndicator/RefetchingIndicator.esm.js +1 -1
  294. package/dist/components/RelativeTime/RelativeTime.esm.js +1 -1
  295. package/dist/components/RichTooltip/RichTooltip.esm.js +1 -1
  296. package/dist/components/Router.esm.js +1 -1
  297. package/dist/components/RoutingPage/RoutingPage.esm.js +1 -1
  298. package/dist/components/RuleResult/BranchResultComponent.esm.js +1 -1
  299. package/dist/components/RuleResult/ConditionResultComponent.esm.js +1 -1
  300. package/dist/components/RuleResult/RuleResultComponent.esm.js +1 -1
  301. package/dist/components/SearchBar/SearchBar.esm.js +1 -1
  302. package/dist/components/SearchFilters/SearchFilters.esm.js +1 -1
  303. package/dist/components/SoundcheckDialog/SoundcheckDialog.esm.js +1 -1
  304. package/dist/components/SoundcheckHeader/Breadcrumbs.esm.js +1 -1
  305. package/dist/components/SoundcheckHeader/SoundcheckHeader.esm.js +1 -1
  306. package/dist/components/SoundcheckHeader/SoundcheckHeaderContext.esm.js +1 -1
  307. package/dist/components/SoundcheckHeader/headerUtil.esm.js +1 -1
  308. package/dist/components/SoundcheckMarkdownContent/ComponentRenders.esm.js +2 -0
  309. package/dist/components/SoundcheckMarkdownContent/SoundcheckMarkdownContent.esm.js +2 -0
  310. package/dist/components/SoundcheckQueryClientProvider/SoundcheckQueryClientProvider.esm.js +1 -1
  311. package/dist/components/SummaryCard/SummaryCard.esm.js +1 -1
  312. package/dist/components/SummaryCard/SummaryCardActionsMenu.esm.js +1 -1
  313. package/dist/components/TechHealth/Filters/FacetFilter.esm.js +1 -1
  314. package/dist/components/TechHealth/Filters/FilterProvider.esm.js +1 -1
  315. package/dist/components/TechHealth/Filters/Filters.esm.js +1 -1
  316. package/dist/components/TechHealth/Filters/FiltersHeader.esm.js +1 -1
  317. package/dist/components/TechHealth/Filters/FiltersSection.esm.js +1 -1
  318. package/dist/components/TechHealth/Filters/NumberOfDaysFilter.esm.js +1 -1
  319. package/dist/components/TechHealth/Filters/useFacetOptions.esm.js +1 -1
  320. package/dist/components/TechHealth/Loading/Emoji.esm.js +1 -1
  321. package/dist/components/TechHealth/Loading/EmojiFountain.esm.js +1 -1
  322. package/dist/components/TechHealth/Loading/Loading.esm.js +1 -1
  323. package/dist/components/TechHealth/Loading/TechHealthLoading.esm.js +1 -1
  324. package/dist/components/TechHealth/TechHealth.esm.js +1 -1
  325. package/dist/components/TechHealthSummary/SummaryAggregationsProvider.esm.js +1 -1
  326. package/dist/components/TechHealthSummary/TechHealthSummary.esm.js +1 -1
  327. package/dist/components/TechHealthTabs/ActionColumn.esm.js +1 -1
  328. package/dist/components/TechHealthTabs/CampaignResultsTab/CampaignResultsTab.esm.js +1 -1
  329. package/dist/components/TechHealthTabs/CheckResultsTab/CheckResultsTab.esm.js +1 -1
  330. package/dist/components/TechHealthTabs/CheckResultsTab/CheckTrendColumn.esm.js +1 -1
  331. package/dist/components/TechHealthTabs/EntityResultsTab/EntityResultsTab.esm.js +1 -1
  332. package/dist/components/TechHealthTabs/EntityResultsTab/EntityTrendColumn.esm.js +1 -1
  333. package/dist/components/TechHealthTabs/GroupResultsTab/GroupResultsTab.esm.js +1 -1
  334. package/dist/components/TechHealthTabs/GroupResultsTab/GroupTrendColumn.esm.js +1 -1
  335. package/dist/components/TechHealthTabs/MostRecentColumn.esm.js +1 -1
  336. package/dist/components/TechHealthTabs/NameColumn.esm.js +1 -1
  337. package/dist/components/TechHealthTabs/OwnerColumn.esm.js +1 -1
  338. package/dist/components/TechHealthTabs/PassRateTabHeader.esm.js +1 -1
  339. package/dist/components/TechHealthTabs/TrackResultsTab/TrackLevelTrendColumn.esm.js +1 -1
  340. package/dist/components/TechHealthTabs/TrackResultsTab/TrackResultsTab.esm.js +1 -1
  341. package/dist/components/TechHealthTabs/techHealthTabUtils.esm.js +1 -1
  342. package/dist/components/TopFailingChecksTable/TopFailingChecksTable.esm.js +2 -0
  343. package/dist/components/TrackCreatePage/TrackCreatePage.esm.js +1 -1
  344. package/dist/components/TrackEditPage/TrackEditPage.esm.js +1 -1
  345. package/dist/components/TrackEditPage/TrackEditView.esm.js +1 -1
  346. package/dist/components/TrackForm/Steps/LevelsStep/LevelsStepNew.esm.js +2 -0
  347. package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackBadgeTypeSelect/TrackBadgeTypeSelect.esm.js +1 -1
  348. package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackDescriptionInput/TrackDescriptionInput.esm.js +1 -1
  349. package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackDetailsStep.esm.js +1 -1
  350. package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackDocumentationUrlInput/TrackDocumentationUrlInput.esm.js +1 -1
  351. package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackDraftInput/TrackDraftInput.esm.js +2 -0
  352. package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackNameInput/TrackNameInput.esm.js +1 -1
  353. package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackOwnerSelect/TrackOwnerSelect.esm.js +1 -1
  354. package/dist/components/TrackForm/TrackForm.esm.js +1 -1
  355. package/dist/components/TrackForm/utils/useTrackForm.esm.js +1 -1
  356. package/dist/components/TrackHistoryChartCard/TrackHistoryChartCard.esm.js +1 -1
  357. package/dist/components/TrackPage/FilterBar/FilterBar.esm.js +1 -1
  358. package/dist/components/TrackPage/TrackEntitiesTable/TrackEntitiesTable.esm.js +1 -1
  359. package/dist/components/TrackPage/TrackEntitiesTable/TrackStatusChip.esm.js +1 -1
  360. package/dist/components/TrackPage/TrackEntitiesTable/columns.esm.js +1 -1
  361. package/dist/components/TrackPage/TrackEntitiesTable/utils.esm.js +1 -1
  362. package/dist/components/TrackPage/TrackHistoryChart.esm.js +1 -1
  363. package/dist/components/TrackPage/TrackPage.esm.js +1 -1
  364. package/dist/components/TrackPage/TrackProgressCard.esm.js +1 -1
  365. package/dist/components/TrackPage/TrackStatus.esm.js +2 -0
  366. package/dist/components/TrackPage/TrackStatusBar.esm.js +2 -0
  367. package/dist/components/TrackPage/TrackStatusTable.esm.js +2 -0
  368. package/dist/components/TracksPage/TrackListPage/TrackListPage.esm.js +1 -1
  369. package/dist/components/TracksPage/TrackListPage/TrackMetadata.esm.js +1 -1
  370. package/dist/components/TracksPage/TrackListPage/TrackSummaryCard.esm.js +1 -1
  371. package/dist/components/TracksPage/TrackListPage/TracksOverviewSkeleton.esm.js +1 -1
  372. package/dist/components/TracksPage/TracksPage.esm.js +1 -1
  373. package/dist/components/TracksTab/TracksTab.esm.js +1 -1
  374. package/dist/contexts/GenericFormContext.esm.js +1 -1
  375. package/dist/contexts/UserProvider.esm.js +1 -1
  376. package/dist/graphql/generated/index.esm.js +152 -65
  377. package/dist/hooks/aggregations/useCertificationStatus.esm.js +1 -1
  378. package/dist/hooks/aggregations/useCheckStatus.esm.js +1 -1
  379. package/dist/hooks/aggregations/useCheckStatuses.esm.js +1 -1
  380. package/dist/hooks/catalog/useGetEntityFacets.esm.js +1 -1
  381. package/dist/hooks/catalog/useGetEntityRefs.esm.js +1 -1
  382. package/dist/hooks/certifications/useAllCertifications.esm.js +1 -1
  383. package/dist/hooks/certifications/useCertificationDetails.esm.js +1 -1
  384. package/dist/hooks/certifications/useCertificationDetailsForTrack.esm.js +1 -1
  385. package/dist/hooks/checks/useCheck.esm.js +2 -0
  386. package/dist/hooks/checks/useDeleteCheck.esm.js +1 -1
  387. package/dist/hooks/checks/useGetChecks.esm.js +1 -1
  388. package/dist/hooks/checks/useSetManualResult.esm.js +2 -0
  389. package/dist/hooks/checks/useUpdateCheck.esm.js +1 -1
  390. package/dist/hooks/exemptions/useDeleteExemption.esm.js +2 -0
  391. package/dist/hooks/exemptions/useExemptCheckIds.esm.js +2 -0
  392. package/dist/hooks/exemptions/useGetExemption.esm.js +2 -0
  393. package/dist/hooks/exemptions/useSetEntityExempt.esm.js +2 -0
  394. package/dist/hooks/facets/useFacetFilters.esm.js +1 -1
  395. package/dist/hooks/graphqlKeys.esm.js +1 -1
  396. package/dist/hooks/tracks/useGetAllTracks.esm.js +1 -1
  397. package/dist/hooks/tracks/useTrack.esm.js +2 -0
  398. package/dist/hooks/tracks/useUpdateTrack.esm.js +1 -1
  399. package/dist/hooks/useConfirmationModal.esm.js +1 -1
  400. package/dist/hooks/useSoundcheckAlert.esm.js +1 -1
  401. package/dist/images/data-registry-blk.svg +36 -0
  402. package/dist/images/data-registry-wht.svg +36 -0
  403. package/dist/index.d.ts +4 -5
  404. package/dist/index.esm.js +1 -1
  405. package/dist/routes.esm.js +1 -1
  406. package/dist/utils/colors.esm.js +2 -0
  407. package/dist/utils/export.esm.js +3 -3
  408. package/dist/utils/formatters.esm.js +2 -0
  409. package/dist/utils/validation.esm.js +1 -1
  410. package/package.json +30 -26
  411. package/dist/components/Badges/badge.esm.js +0 -2
  412. package/dist/components/CampaignForm/Steps/CampaignTrackStep.esm.js +0 -2
  413. package/dist/components/CheckDetails/ExemptionDetails.esm.js +0 -2
  414. package/dist/components/CheckDryRun/checkDryRunUtils.esm.js +0 -2
  415. package/dist/components/CheckPage/CheckStatusBar.esm.js +0 -2
  416. package/dist/components/CheckPage/FilterBar/FilterBar.esm.js +0 -2
  417. package/dist/components/CheckPage/StatusRow.esm.js +0 -2
  418. package/dist/components/ChecksErrors/ChecksErrors.esm.js +0 -2
  419. package/dist/components/ContextMenu/ContextMenu.esm.js +0 -2
  420. package/dist/components/DraggableChip/DraggableChip.esm.js +0 -2
  421. package/dist/components/DraggableChip/chipStyles.esm.js +0 -2
  422. package/dist/components/DroppableInput/DroppableInput.esm.js +0 -2
  423. package/dist/components/LevelCard/LevelCard.esm.js +0 -2
  424. package/dist/components/LevelCard/LevelTooltip.esm.js +0 -2
  425. package/dist/components/TrackForm/Steps/LevelsStep/ChecksSection/ChecksSection.esm.js +0 -2
  426. package/dist/components/TrackForm/Steps/LevelsStep/LevelsSection/LevelChipsSection.esm.js +0 -2
  427. package/dist/components/TrackForm/Steps/LevelsStep/LevelsSection/LevelsSection.esm.js +0 -2
  428. package/dist/components/TrackForm/Steps/LevelsStep/LevelsStep.esm.js +0 -2
  429. package/dist/components/TrackPage/TrackLevelsChart.esm.js +0 -2
  430. package/dist/hooks/useContextMenu.esm.js +0 -2
@@ -1,2 +1,2 @@
1
- import{makeStyles as u,Typography as l}from"@material-ui/core";import{uniqBy as g}from"lodash";import e from"react";import"../../../../contexts/TrackFormContext.esm.js";import"../../../../contexts/CheckFormContext.esm.js";import"../../../../contexts/CampaignFormContext.esm.js";import{useLoggedInUser as E}from"../../../../contexts/UserProvider.esm.js";import{useGroupOptions as v}from"../../../../hooks/groups/useGroupOptions.esm.js";import{FormControlledAutocomplete as y}from"../../../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import{useLabelOptions as b}from"../../../FormControlledAutocomplete/useLabelOptions.esm.js";import"@material-ui/lab";import"../../../ListboxVirtualized/ListboxVirtualized.esm.js";import{CAMPAIGN_FIELDS as h}from"../../utils/campaignFormUtils.esm.js";const w=u(t=>({helperText:{marginLeft:0},selectField:{display:"flex",flexDirection:"column",gap:t.spacing(1),marginBottom:t.spacing(2)},fieldContainer:{width:"250px"}})),x=({control:t,errors:m,isLoading:p,disabled:s})=>{const o=w(),{owner:i}=h.details,{options:c}=v(),{user:d,userEntityRef:a}=E();let r=g(c?.map(n=>({value:n.ref,label:n.name})),"value");const f=b(r);return a&&(r=[{value:a,label:d?.metadata.name},...r]),e.createElement("div",{className:o.selectField},e.createElement("header",null,e.createElement(l,{variant:"subtitle2"},i.name),e.createElement(l,{variant:"caption"},i.description)),e.createElement("div",{className:o.fieldContainer},e.createElement(y,{name:"detailsStep.ownerEntityRef",control:t,placeholder:"Owner",freeSolo:!1,disabled:s||p,helperText:m?.ownerEntityRef?.message??void 0,...f})))};export{x as CampaignOwnerField};
1
+ import{jsxs as l,jsx as o}from"react/jsx-runtime";import{makeStyles as g,Typography as m}from"@material-ui/core";import{uniqBy as h}from"lodash";import"../../../../contexts/TrackFormContext.esm.js";import"../../../../contexts/CheckFormContext.esm.js";import"../../../../contexts/CampaignFormContext.esm.js";import"react";import{useLoggedInUser as v}from"../../../../contexts/UserProvider.esm.js";import{useGroupOptions as x}from"../../../../hooks/groups/useGroupOptions.esm.js";import{FormControlledAutocomplete as y}from"../../../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import"@material-ui/icons/CheckBox";import"@material-ui/icons/CheckBoxOutlineBlank";import"@material-ui/lab";import"react-hook-form";import"../../../ListboxVirtualized/ListboxVirtualized.esm.js";import{useLabelOptions as w}from"../../../FormControlledAutocomplete/useLabelOptions.esm.js";import{CAMPAIGN_FIELDS as b}from"../../utils/campaignFormUtils.esm.js";const C=g(e=>({helperText:{marginLeft:0},selectField:{display:"flex",flexDirection:"column",gap:e.spacing(1),marginBottom:e.spacing(2)},fieldContainer:{width:"250px"}})),F=({control:e,errors:p,isLoading:s,disabled:d})=>{const i=C(),{owner:t}=b.details,{options:c}=x(),{user:f,userEntityRef:n}=v();let r=h(c?.map(a=>({value:a.ref,label:a.name})),"value");const u=w(r);return n&&(r=[{value:n,label:f?.metadata.name},...r]),l("div",{className:i.selectField,children:[l("header",{children:[o(m,{variant:"subtitle2",children:t.name}),o(m,{variant:"caption",children:t.description})]}),o("div",{className:i.fieldContainer,children:o(y,{name:"detailsStep.ownerEntityRef",control:e,placeholder:"Owner",freeSolo:!1,disabled:d||s,helperText:p?.ownerEntityRef?.message??void 0,...u})})]})};export{F as CampaignOwnerField};
2
2
  //# sourceMappingURL=CampaignOwnerField.esm.js.map
@@ -1,2 +1,2 @@
1
- import h from"@date-io/luxon";import{makeStyles as N,Typography as m}from"@material-ui/core";import{KeyboardDatePicker as C}from"@material-ui/pickers/DatePicker";import{MuiPickersUtilsProvider as b}from"@material-ui/pickers/MuiPickersUtilsProvider";import e,{useState as i}from"react";import{Controller as D}from"react-hook-form";import{CAMPAIGN_FIELDS as k}from"../../utils/campaignFormUtils.esm.js";import{EndDateChips as F}from"./EndDateChips.esm.js";const S=N(t=>({helperText:{margin:t.spacing(.5,0)},selectFieldGroup:{display:"flex",flexDirection:"column",gap:t.spacing(2),marginBottom:t.spacing(2)},selectField:{display:"flex",flexDirection:"column",gap:t.spacing(1),padding:0},scheduleTitle:{fontWeight:"bold"},fieldContainer:{width:"250px"},select:{width:"100%",height:"100%",paddingRight:t.spacing(.5),"& button":{paddingTop:0,paddingBottom:0,"&:hover":{backgroundColor:"transparent"}}},dialog:{padding:0,"& [class*=MuiToolbar-root]":{backgroundColor:t.palette.background.paper,borderBottom:`1px solid ${t.palette.divider}`,"& [class*=MuiPickersToolbarText]":{color:t.palette.text.primary}},"& [class*=MuiDialogActions-root]":{borderTop:`1px solid ${t.palette.divider}`,padding:t.spacing(1),"& [class*=MuiButton-label]":{color:t.palette.text.primary}}}})),O=({control:t,errors:o,isLoading:n,disabled:s,startDate:x})=>{const a=S(),[v,d]=i(!1),[y,p]=i(!1),[E,T]=i(x),[P,g]=i(void 0),{startingDate:u,endingDate:f}=k.details;return e.createElement("div",{className:a.selectFieldGroup},e.createElement(m,{variant:"subtitle1",className:a.scheduleTitle},"Campaign schedule"),e.createElement("div",{className:a.selectField},e.createElement(m,{variant:"subtitle2"},u.name),e.createElement("div",{className:a.fieldContainer},e.createElement(D,{control:t,name:"detailsStep.startDate",render:({field:r})=>{const{ref:M,...c}=r;return e.createElement(b,{utils:h},e.createElement(C,{inputRef:r.ref,...c,format:"MMMM dd, yyyy",autoOk:!0,FormHelperTextProps:{className:a.helperText},inputVariant:"outlined",className:a.select,error:!!o?.startDate,helperText:o?.startDate?.message??void 0,onChange:l=>{T(l),r.onChange(l)},open:v,disabled:n||s,DialogProps:{PaperProps:{className:a.dialog}},margin:"dense",size:"small",InputProps:{readOnly:!0,placeholder:u.placeholder,onClick:()=>d(!0),className:a.select},onOpen:()=>d(!0),onClose:()=>d(!1)}))}}))),e.createElement("div",{className:a.selectField},e.createElement(m,{variant:"subtitle2"},f.name),e.createElement("div",{className:a.fieldContainer},e.createElement(D,{name:"detailsStep.targetCompletionDate",control:t,render:({field:r})=>{const{ref:M,...c}=r;return e.createElement(b,{utils:h},e.createElement(C,{inputRef:r.ref,...c,disablePast:!0,format:"MMMM dd, yyyy",autoOk:!0,FormHelperTextProps:{className:a.helperText},inputVariant:"outlined",className:a.select,error:!!o?.targetCompletionDate,helperText:o?.targetCompletionDate?.message??void 0,onChange:l=>{r.onChange(l)},open:y,disabled:n||s,DialogProps:{PaperProps:{className:a.dialog}},InputProps:{readOnly:!0,placeholder:f.placeholder,onClick:()=>p(!0),className:a.select,margin:"dense"},margin:"dense",onOpen:()=>{g(void 0),p(!0)},onClose:()=>p(!1),ToolbarComponent:l=>e.createElement(F,{props:l,isLoading:n,disabled:!!s,startDate:E,selectedDuration:P,setSelectedDuration:g})}))}}))))};export{O as CampaignScheduleField};
1
+ import{jsxs as m,jsx as a}from"react/jsx-runtime";import C from"@date-io/luxon";import{makeStyles as F,Typography as g}from"@material-ui/core";import{KeyboardDatePicker as x}from"@material-ui/pickers/DatePicker";import{MuiPickersUtilsProvider as D}from"@material-ui/pickers/MuiPickersUtilsProvider";import{useState as l}from"react";import{Controller as b}from"react-hook-form";import{CAMPAIGN_FIELDS as S}from"../../utils/campaignFormUtils.esm.js";import{EndDateChips as O}from"./EndDateChips.esm.js";const B=F(e=>({helperText:{margin:e.spacing(.5,0)},selectFieldGroup:{display:"flex",flexDirection:"column",gap:e.spacing(2),marginBottom:e.spacing(2)},selectField:{display:"flex",flexDirection:"column",gap:e.spacing(1),padding:0},scheduleTitle:{fontWeight:"bold"},fieldContainer:{width:"250px"},select:{width:"100%",height:"100%",paddingRight:e.spacing(.5),"& button":{paddingTop:0,paddingBottom:0,"&:hover":{backgroundColor:"transparent"}}},dialog:{padding:0,"& [class*=MuiToolbar-root]":{backgroundColor:e.palette.background.paper,borderBottom:`1px solid ${e.palette.divider}`,"& [class*=MuiPickersToolbarText]":{color:e.palette.text.primary}},"& [class*=MuiDialogActions-root]":{borderTop:`1px solid ${e.palette.divider}`,padding:e.spacing(1),"& [class*=MuiButton-label]":{color:e.palette.text.primary}}}})),I=({control:e,errors:i,isLoading:s,disabled:n,startDate:y})=>{const t=B(),[v,d]=l(!1),[T,p]=l(!1),[P,M]=l(y),[N,u]=l(void 0),{startingDate:h,endingDate:f}=S.details;return m("div",{className:t.selectFieldGroup,children:[a(g,{variant:"subtitle1",className:t.scheduleTitle,children:"Campaign schedule"}),m("div",{className:t.selectField,children:[a(g,{variant:"subtitle2",children:h.name}),a("div",{className:t.fieldContainer,children:a(b,{control:e,name:"detailsStep.startDate",render:({field:o})=>{const{ref:k,...c}=o;return a(D,{utils:C,children:a(x,{inputRef:o.ref,...c,format:"MMMM dd, yyyy",autoOk:!0,FormHelperTextProps:{className:t.helperText},inputVariant:"outlined",className:t.select,error:!!i?.startDate,helperText:i?.startDate?.message??void 0,onChange:r=>{M(r),o.onChange(r)},open:v,disabled:s||n,DialogProps:{PaperProps:{className:t.dialog}},margin:"dense",size:"small",InputProps:{readOnly:!0,placeholder:h.placeholder,onClick:()=>d(!0),className:t.select},onOpen:()=>d(!0),onClose:()=>d(!1)})})}})})]}),m("div",{className:t.selectField,children:[a(g,{variant:"subtitle2",children:f.name}),a("div",{className:t.fieldContainer,children:a(b,{name:"detailsStep.targetCompletionDate",control:e,render:({field:o})=>{const{ref:k,...c}=o;return a(D,{utils:C,children:a(x,{inputRef:o.ref,...c,disablePast:!0,format:"MMMM dd, yyyy",autoOk:!0,FormHelperTextProps:{className:t.helperText},inputVariant:"outlined",className:t.select,error:!!i?.targetCompletionDate,helperText:i?.targetCompletionDate?.message??void 0,onChange:r=>{o.onChange(r)},open:T,disabled:s||n,DialogProps:{PaperProps:{className:t.dialog}},InputProps:{readOnly:!0,placeholder:f.placeholder,onClick:()=>p(!0),className:t.select,margin:"dense"},margin:"dense",onOpen:()=>{u(void 0),p(!0)},onClose:()=>p(!1),ToolbarComponent:r=>a(O,{props:r,isLoading:s,disabled:!!n,startDate:P,selectedDuration:N,setSelectedDuration:u})})})}})})]})]})};export{I as CampaignScheduleField};
2
2
  //# sourceMappingURL=CampaignScheduleField.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as p,Typography as o}from"@material-ui/core";import e from"react";import{FormTextInput as m}from"../../../FormTextInput/FormTextInput.esm.js";import{CAMPAIGN_FIELDS as s}from"../../utils/campaignFormUtils.esm.js";const d=p(t=>({fieldContainer:{width:"250px"},container:{marginBottom:t.spacing(2)}})),c=({control:t,errors:a,isLoading:i,disabled:l})=>{const n=d(),{support:r}=s.details;return e.createElement("div",{className:n.container},e.createElement(o,{variant:"subtitle2"},r.name),e.createElement(o,{variant:"caption"},r.description),e.createElement("div",{className:n.fieldContainer},e.createElement(m,{name:"detailsStep.supportChannel",control:t,placeholder:r.placeholder,disabled:l||i,variant:"outlined",margin:"dense",error:a?.supportChannel,helperText:a?.supportChannel?.message??void 0})))};export{c as CampaignSupportChannelField};
1
+ import{jsxs as l,jsx as e}from"react/jsx-runtime";import{makeStyles as s,Typography as i}from"@material-ui/core";import{FormTextInput as d}from"../../../FormTextInput/FormTextInput.esm.js";import{CAMPAIGN_FIELDS as m}from"../../utils/campaignFormUtils.esm.js";const c=s(r=>({fieldContainer:{width:"250px"},container:{marginBottom:r.spacing(2)}})),h=({control:r,errors:t,isLoading:a,disabled:p})=>{const o=c(),{support:n}=m.details;return l("div",{className:o.container,children:[e(i,{variant:"subtitle2",children:n.name}),e(i,{variant:"caption",children:n.description}),e("div",{className:o.fieldContainer,children:e(d,{name:"detailsStep.supportChannel",control:r,placeholder:n.placeholder,disabled:p||a,variant:"outlined",margin:"dense",error:t?.supportChannel,helperText:t?.supportChannel?.message??void 0})})]})};export{h as CampaignSupportChannelField};
2
2
  //# sourceMappingURL=CampaignSupportChannelField.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as d,Grid as n,Chip as h}from"@material-ui/core";import{DatePickerToolbar as g}from"@material-ui/pickers/DatePicker/DatePickerToolbar";import{DateTime as b}from"luxon";import a from"react";const u=d(e=>({chip:{backgroundColor:e.palette.primary.main,color:e.palette.primary.contrastText},chips:{width:"310px",marginLeft:e.spacing(1)},chipContainer:{paddingBottom:"0 !important",paddingTop:"0 !important",marginBottom:e.spacing(.75)},noPadding:{padding:e.spacing(0)}})),v=[{value:{days:7},label:"1 week"},{value:{days:14},label:"2 weeks"},{value:{month:1},label:"1 month"},{value:{months:3},label:"3 months"},{value:{months:6},label:"6 months"},{value:{year:1},label:"1 year"}],y=({props:e,startDate:l,selectedDuration:i,setSelectedDuration:m,isLoading:s,disabled:c})=>{const t=u();return a.createElement(n,{container:!0,direction:"column"},a.createElement(n,{item:!0,className:t.noPadding},a.createElement(g,{...e})),a.createElement(n,{container:!0,item:!0,className:t.chips},v.map(({value:o,label:r})=>a.createElement(n,{key:r,item:!0,className:t.chipContainer},a.createElement(h,{label:r,className:i===o?t.chip:void 0,color:i===o?"primary":void 0,size:"small",onClick:()=>{if(l){m(o);const p=b.fromISO(l.toString()).plus(o);e.onChange(p,!1)}},disabled:s||c})))))};export{y as EndDateChips};
1
+ import{jsxs as d,jsx as e}from"react/jsx-runtime";import{makeStyles as h,Grid as t,Chip as g}from"@material-ui/core";import{DatePickerToolbar as b}from"@material-ui/pickers/DatePicker/DatePickerToolbar";import{DateTime as u}from"luxon";const v=h(a=>({chip:{backgroundColor:a.palette.primary.main,color:a.palette.primary.contrastText},chips:{width:"310px",marginLeft:a.spacing(1)},chipContainer:{paddingBottom:"0 !important",paddingTop:"0 !important",marginBottom:a.spacing(.75)},noPadding:{padding:a.spacing(0)}})),y=[{value:{days:7},label:"1 week"},{value:{days:14},label:"2 weeks"},{value:{month:1},label:"1 month"},{value:{months:3},label:"3 months"},{value:{months:6},label:"6 months"},{value:{year:1},label:"1 year"}],f=({props:a,startDate:n,selectedDuration:l,setSelectedDuration:s,isLoading:m,disabled:c})=>{const i=v();return d(t,{container:!0,direction:"column",children:[e(t,{item:!0,className:i.noPadding,children:e(b,{...a})}),e(t,{container:!0,item:!0,className:i.chips,children:y.map(({value:o,label:r})=>e(t,{item:!0,className:i.chipContainer,children:e(g,{label:r,className:l===o?i.chip:void 0,color:l===o?"primary":void 0,size:"small",onClick:()=>{if(n){s(o);const p=u.fromISO(n.toString()).plus(o);a.onChange(p,!1)}},disabled:m||c})},r))})]})};export{f as EndDateChips};
2
2
  //# sourceMappingURL=EndDateChips.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as b,Divider as y,Grid as p,Typography as m,TextField as E}from"@material-ui/core";import N from"@material-ui/icons/Remove";import e from"react";import{useFieldArray as C,Controller as u}from"react-hook-form";import{NoBorderButton as x}from"../../NoBorderButton/NoBorderButton.esm.js";import{CAMPAIGN_FIELDS as F}from"../utils/campaignFormUtils.esm.js";const S=b(a=>({milestoneHeader:{display:"flex",alignItems:"center",marginBottom:a.spacing(1)},divider:{margin:"20px 0"},helperText:{marginLeft:0},selectContainer:{width:"250px"},section:{marginBottom:a.spacing(2)}})),R=({control:a,errors:n,isLoading:s,disabled:l})=>{const r=S(),{name:o,description:d,passrate:c}=F.milestones,{fields:f,append:g,remove:h}=C({control:a,name:"milestonesStep.milestones"}),v=()=>g({name:"",description:"",passRate:"0"});return e.createElement(e.Fragment,null,f.map((T,t)=>e.createElement("div",{key:T.id},t!==0&&e.createElement(y,{className:r.divider}),e.createElement(p,{container:!0,spacing:1,className:r.milestoneHeader},e.createElement(p,{item:!0,xs:!0},e.createElement(m,{variant:"subtitle2"},o.name),e.createElement(u,{name:`milestonesStep.milestones.${t}.name`,control:a,defaultValue:"",render:({field:i})=>e.createElement(E,{...i,FormHelperTextProps:{className:r.helperText},variant:"outlined",fullWidth:!0,placeholder:o.placeholder,disabled:s||l,type:"text",margin:"dense",error:!!n?.milestones?.[t]?.name,helperText:n?.milestones?.[t]?.name?.message??o.helperText})})),t!==0&&!l&&e.createElement(p,{item:!0},e.createElement(x,{label:"Remove Milestone",startIcon:e.createElement(N,null),onClick:()=>h(t),disabled:l}))),e.createElement("div",{className:r.section},e.createElement(m,{variant:"subtitle2"},d.name),e.createElement(m,{variant:"caption"},d.description),e.createElement(u,{name:`milestonesStep.milestones.${t}.description`,control:a,defaultValue:"",render:({field:i})=>e.createElement(E,{...i,FormHelperTextProps:{className:r.helperText},variant:"outlined",multiline:!0,minRows:4,fullWidth:!0,placeholder:d.placeholder,disabled:s||l,type:"text",margin:"dense",error:!!n?.milestones?.[t]?.description,helperText:n?.milestones?.[t]?.description?.message})})),e.createElement("div",{className:r.section},e.createElement(m,{variant:"subtitle2"},c.name),e.createElement(m,{variant:"caption"},c.description),e.createElement("div",{className:r.selectContainer},e.createElement(u,{name:`milestonesStep.milestones.${t}.passRate`,control:a,defaultValue:"",render:({field:i})=>e.createElement(E,{...i,FormHelperTextProps:{className:r.helperText},variant:"outlined",fullWidth:!0,placeholder:c.placeholder,disabled:s||l,type:"number",margin:"dense",error:!!n?.milestones?.[t]?.passRate,helperText:n?.milestones?.[t]?.passRate?.message??void 0})}))))),e.createElement(x,{label:"Add Milestone",onClick:()=>v(),disabled:l}))};export{R as CampaignMilestonesStep};
1
+ import{jsxs as l,Fragment as y,jsx as e}from"react/jsx-runtime";import{makeStyles as S,Divider as C,Grid as h,Typography as o,TextField as x}from"@material-ui/core";import F from"@material-ui/icons/Remove";import{useFieldArray as R,Controller as u}from"react-hook-form";import{NoBorderButton as f}from"../../NoBorderButton/NoBorderButton.esm.js";import{CAMPAIGN_FIELDS as H}from"../utils/campaignFormUtils.esm.js";const A=S(s=>({milestoneHeader:{display:"flex",alignItems:"center",marginBottom:s.spacing(1)},divider:{margin:"20px 0"},helperText:{marginLeft:0},selectContainer:{width:"250px"},section:{marginBottom:s.spacing(2)}})),B=({control:s,errors:n,isLoading:d,disabled:t})=>{const r=A(),{name:m,description:p,passrate:c}=H.milestones,{fields:g,append:v,remove:T}=R({control:s,name:"milestonesStep.milestones"}),b=()=>v({name:"",description:"",passRate:"0"});return l(y,{children:[g.map((N,i)=>l("div",{children:[i!==0&&e(C,{className:r.divider}),l(h,{container:!0,spacing:1,className:r.milestoneHeader,children:[l(h,{item:!0,xs:!0,children:[e(o,{variant:"subtitle2",children:m.name}),e(u,{name:`milestonesStep.milestones.${i}.name`,control:s,defaultValue:"",render:({field:a})=>e(x,{...a,FormHelperTextProps:{className:r.helperText},variant:"outlined",fullWidth:!0,placeholder:m.placeholder,disabled:d||t,type:"text",margin:"dense",error:!!n?.milestones?.[i]?.name,helperText:n?.milestones?.[i]?.name?.message??m.helperText})})]}),i!==0&&!t&&e(h,{item:!0,children:e(f,{label:"Remove Milestone",startIcon:e(F,{}),onClick:()=>T(i),disabled:t})})]}),l("div",{className:r.section,children:[e(o,{variant:"subtitle2",children:p.name}),e(o,{variant:"caption",children:p.description}),e(u,{name:`milestonesStep.milestones.${i}.description`,control:s,defaultValue:"",render:({field:a})=>e(x,{...a,FormHelperTextProps:{className:r.helperText},variant:"outlined",multiline:!0,minRows:4,fullWidth:!0,placeholder:p.placeholder,disabled:d||t,type:"text",margin:"dense",error:!!n?.milestones?.[i]?.description,helperText:n?.milestones?.[i]?.description?.message})})]}),l("div",{className:r.section,children:[e(o,{variant:"subtitle2",children:c.name}),e(o,{variant:"caption",children:c.description}),e("div",{className:r.selectContainer,children:e(u,{name:`milestonesStep.milestones.${i}.passRate`,control:s,defaultValue:"",render:({field:a})=>e(x,{...a,FormHelperTextProps:{className:r.helperText},variant:"outlined",fullWidth:!0,placeholder:c.placeholder,disabled:d||t,type:"number",margin:"dense",error:!!n?.milestones?.[i]?.passRate,helperText:n?.milestones?.[i]?.passRate?.message??void 0})})})]})]},N.id)),e(f,{label:"Add Milestone",onClick:()=>b(),disabled:t})]})};export{B as CampaignMilestonesStep};
2
2
  //# sourceMappingURL=CampaignMilestonesStep.esm.js.map
@@ -0,0 +1,2 @@
1
+ import{jsxs as t,jsx as r}from"react/jsx-runtime";import{Box as i,Typography as C}from"@material-ui/core";import{get as x}from"lodash";import{useCallback as l}from"react";import{useFormContext as g,useFieldArray as v}from"react-hook-form";import{CheckSelection as S}from"../../CheckSelection/CheckSelection.esm.js";import{CheckPreview as u}from"../../CheckSelection/CheckPreview.esm.js";import{CheckPreviewProvider as w}from"../../CheckSelection/CheckPreviewContext.esm.js";import{FormFieldLabel as p}from"../../FormFieldLabel/FormFieldLabel.esm.js";const y=()=>{const{control:s,formState:{errors:d},watch:h}=g(),{append:c,remove:m}=v({control:s,name:"tracksStep.checks"}),n=x(d,"tracksStep.checks"),o=h("tracksStep.checks").map(e=>e.id),k=l(e=>{e&&!o.includes(e.id)&&c({id:e.id,name:e.name??"",description:e.description??""})},[c,o]),f=l(e=>{const a=o.indexOf(e);a>-1&&m(a)},[m,o]);return t(i,{children:[r(C,{variant:"body2",children:"Select relevant checks for your campaign below."}),r(w,{children:t(i,{display:"flex",alignItems:"top",gridGap:16,marginTop:1,maxHeight:"75vh",minHeight:300,children:[t(i,{flex:1,children:[r(p,{title:"Checks"}),r(S,{currentSectionCheckIds:o,addCheckToSelection:k,removeCheck:f,error:!!n,helperText:n?.message})]}),t(i,{flex:1,children:[r(p,{title:"Check Preview"}),r(u,{})]})]})})]})};export{y as CampaignTrackStepNew};
2
+ //# sourceMappingURL=CampaignTrackStepNew.esm.js.map
@@ -1,2 +1,2 @@
1
- import{zodResolver as c}from"@hookform/resolvers/zod";import{useMemo as u}from"react";import{useForm as f}from"react-hook-form";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{useConfirmationModal as h}from"../../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{useGetChecksMap as g}from"../../../hooks/tracks/useGetChecksMap.esm.js";import{DEFAULT_FORM_VALUES as C}from"../utils/campaignFormUtils.esm.js";import{campaignFormSchema as d}from"../utils/validation.esm.js";import{mapCampaignToFormValues as l,mapCampaignFormDataToCampaignInput as F}from"./utils.esm.js";const M=(r,o)=>{const a=u(()=>o?l(o):C,[o]),e=f({defaultValues:a,mode:"onChange",resolver:c(d)}),{showModal:t}=h(),{checksMap:i,checkChips:p,checksLoading:s}=g();return{formMethods:e,onSubmit:async m=>{if(!await t({title:"Save Campaign",message:`Are you sure you want to save campaign: ${m.detailsStep.name}?`,error:!1}))return;const n=F(m,o,i);r(n)},checkChips:p,checksLoading:s}};export{M as useCampaignForm};
1
+ import{zodResolver as s}from"@hookform/resolvers/zod";import{useMemo as n}from"react";import{useForm as u}from"react-hook-form";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{useConfirmationModal as f}from"../../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{useGetChecksMap as c}from"../../../hooks/tracks/useGetChecksMap.esm.js";import{DEFAULT_FORM_VALUES as g}from"../utils/campaignFormUtils.esm.js";import{campaignFormSchema as l}from"../utils/validation.esm.js";import{mapCampaignToFormValues as C,mapCampaignFormDataToCampaignInput as d}from"./utils.esm.js";const F=(r,o)=>{const a=n(()=>o?C(o):g,[o]),t=u({defaultValues:a,mode:"onChange",resolver:s(l)}),{showModal:e}=f(),{checksMap:i}=c();return{formMethods:t,onSubmit:async m=>{if(!await e({title:"Save Campaign",message:`Are you sure you want to save campaign: ${m.detailsStep.name}?`,error:!1}))return;const p=d(m,o,i);r(p)}}};export{F as useCampaignForm};
2
2
  //# sourceMappingURL=useCampaignForm.esm.js.map
@@ -1,2 +1,2 @@
1
- import{v4 as C}from"uuid";import{mapInputFilterToFormFilters as d,mapCatalogFilterToFormKeyValueFilters as u}from"../../Filter/utils.esm.js";import"../../Filter/FilterComponent.esm.js";import{mapTrackFormToInput as S}from"../../TrackForm/utils/useTrackForm.esm.js";const h=({name:l,ownerEntityRef:a,description:p,targetCompletionDate:o,supportChannel:i,milestones:s,startDate:r,track:t})=>({detailsStep:{name:l,description:p,ownerEntityRef:a,supportChannel:i,startDate:r,targetCompletionDate:o},tracksStep:{checks:t?.levels?.[0].checks.map(e=>({id:e.id,name:e.name??e.id,description:e.description}))},filtersStep:{filter:d(t.filter),keyValueFilter:u(t.filter),excludeFilter:d(t.exclude),excludeKeyValueFilter:u(t.exclude)},milestonesStep:{milestones:s.map(e=>({id:Number(e.id),name:e.name,description:e.description,passRate:e.targetPercent.toString()}))}}),D=(l,a,p)=>{const{tracksStep:{checks:o},detailsStep:{name:i,description:s,ownerEntityRef:r,supportChannel:t,startDate:e,targetCompletionDate:m},filtersStep:n,milestonesStep:{milestones:F}}=l,c=S({detailsStep:{name:`${i}`,description:`The checks for the ${i} campaign.`,ownerEntityRef:r},levelsStep:{levels:[{name:"Level 1",checks:o,description:""}]},filtersStep:{filter:n.filter,keyValueFilter:n.keyValueFilter,excludeFilter:n.excludeFilter,excludeKeyValueFilter:n.excludeKeyValueFilter}},p??{},a?.track);return{id:a?.id??C(),track:{...c,type:"campaign"},name:i,description:s,ownerEntityRef:r,supportChannel:t,startDate:e,targetCompletionDate:m,milestones:F.map(({id:f,name:k,description:g,passRate:y})=>({id:f,trackId:c.id,name:k,description:g,targetPercent:parseInt(y,10),targetCompletionDate:m}))}};export{D as mapCampaignFormDataToCampaignInput,h as mapCampaignToFormValues};
1
+ import{v4 as S}from"uuid";import{mapInputFilterToFormFilters as d,mapCatalogFilterToFormKeyValueFilters as u}from"../../Filter/utils.esm.js";import"../../Filter/FilterComponent.esm.js";import{mapTrackFormToInput as h}from"../../TrackForm/utils/useTrackForm.esm.js";const D=({name:l,ownerEntityRef:r,description:p,targetCompletionDate:o,supportChannel:a,milestones:s,startDate:i,track:t})=>({detailsStep:{name:l,description:p,ownerEntityRef:r,supportChannel:a,startDate:i,targetCompletionDate:o,draft:t.draft??!1},tracksStep:{checks:t?.levels?.[0].checks.map(e=>({id:e.id,name:e.name??e.id,description:e.description}))},filtersStep:{filter:d(t.filter),keyValueFilter:u(t.filter),excludeFilter:d(t.exclude),excludeKeyValueFilter:u(t.exclude)},milestonesStep:{milestones:s.map(e=>({id:Number(e.id),name:e.name,description:e.description,passRate:e.targetPercent.toString()}))}}),x=(l,r,p)=>{const{tracksStep:{checks:o},detailsStep:{name:a,description:s,ownerEntityRef:i,supportChannel:t,startDate:e,targetCompletionDate:m,draft:f},filtersStep:n,milestonesStep:{milestones:F}}=l,c=h({detailsStep:{name:`${a}`,description:`The checks for the ${a} campaign.`,ownerEntityRef:i,draft:f},levelsStep:{levels:[{name:"Level 1",checks:o,description:""}]},filtersStep:{filter:n.filter,keyValueFilter:n.keyValueFilter,excludeFilter:n.excludeFilter,excludeKeyValueFilter:n.excludeKeyValueFilter}},p??{},r?.track);return{id:r?.id??S(),track:{...c,type:"campaign"},name:a,description:s,ownerEntityRef:i,supportChannel:t,startDate:e,targetCompletionDate:m,milestones:F.map(({id:k,name:g,description:y,passRate:C})=>({id:k,trackId:c.id,name:g,description:y,targetPercent:parseInt(C,10),targetCompletionDate:m}))}};export{x as mapCampaignFormDataToCampaignInput,D as mapCampaignToFormValues};
2
2
  //# sourceMappingURL=utils.esm.js.map
@@ -1,3 +1,3 @@
1
- import{emptyFilters as e,emptyKeyValueFilters as t}from"../../Filter/types.esm.js";import{CAMPAIGN_NAME_MAX_LENGTH as a,MILESTONE_NAME_MAX_LENGTH as i}from"./validation.esm.js";const n={detailsStep:{name:"",description:"",ownerEntityRef:"",supportChannel:"",startDate:null,targetCompletionDate:null},tracksStep:{checks:[]},filtersStep:{filter:e(),keyValueFilter:t(),excludeFilter:e(),excludeKeyValueFilter:t()},milestonesStep:{milestones:[{name:"",description:"",passRate:"0"}]}},l={details:{name:{name:"Campaign name",helperText:`Max ${a} characters`,placeholder:"Example: Check for latest version of javascript and Readme files"},description:{name:"Campaign description",placeholder:"Example: Check for the latest versions of JavaScript and README files to meet this quarter's quality standards."},owner:{name:"Campaign owner",description:"Add a team as the owner of this Campaign."},support:{name:"Support channel (Optional)",description:"Set up a Slack channel for notifications.",placeholder:"Channel name"},startingDate:{name:"Starting date",placeholder:"Starting date"},endingDate:{name:"Ending date",placeholder:"Ending date"}},milestones:{name:{name:"Milestone name",helperText:`Max ${i} characters`,placeholder:"Example: 80% pass rate"},description:{name:"Milestone description",description:"Provide a detailed description of this milestone, outlining its objectives.",placeholder:"Example: The track in my campaign expects a pass rate of 80% or above"},passrate:{name:"Milestone pass rate",description:"Enter the pass rate that your tracks have to meet.",placeholder:"Example: 80%"}},filter:{description:`Use the filters below to narrow the scope of the Campaign. Only Entities that match the selected include and exclude filters will be monitored. Exclude filters must be used with with an include filter.
1
+ import{emptyFilters as e,emptyKeyValueFilters as t}from"../../Filter/types.esm.js";import{CAMPAIGN_NAME_MAX_LENGTH as a,MILESTONE_NAME_MAX_LENGTH as i}from"./validation.esm.js";const n={detailsStep:{name:"",description:"",ownerEntityRef:"",supportChannel:"",startDate:null,targetCompletionDate:null,draft:!1},tracksStep:{checks:[]},filtersStep:{filter:e(),keyValueFilter:t(),excludeFilter:e(),excludeKeyValueFilter:t()},milestonesStep:{milestones:[{name:"",description:"",passRate:"0"}]}},l={details:{name:{name:"Campaign name",helperText:`Max ${a} characters`,placeholder:"Example: Check for latest version of javascript and Readme files"},description:{name:"Campaign description",placeholder:"Example: Check for the latest versions of JavaScript and README files to meet this quarter's quality standards."},owner:{name:"Campaign owner",description:"Add a team as the owner of this Campaign."},support:{name:"Support channel (Optional)",description:"Set up a Slack channel for notifications.",placeholder:"Channel name"},startingDate:{name:"Starting date",placeholder:"Starting date"},endingDate:{name:"Ending date",placeholder:"Ending date"}},milestones:{name:{name:"Milestone name",helperText:`Max ${i} characters`,placeholder:"Example: 80% pass rate"},description:{name:"Milestone description",description:"Provide a detailed description of this milestone, outlining its objectives.",placeholder:"Example: The track in my campaign expects a pass rate of 80% or above"},passrate:{name:"Milestone pass rate",description:"Enter the pass rate that your tracks have to meet.",placeholder:"Example: 80%"}},filter:{description:`Use the filters below to narrow the scope of the Campaign. Only Entities that match the selected include and exclude filters will be monitored. Exclude filters must be used with with an include filter.
2
2
  For example, selecting an include filter of 'Kind' as 'Component' and an exclude filter of 'Type' as 'Service' will select all entities with kind Component where type is NOT Service.`}};export{l as CAMPAIGN_FIELDS,n as DEFAULT_FORM_VALUES};
3
3
  //# sourceMappingURL=campaignFormUtils.esm.js.map
@@ -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 p}from"@backstage/plugin-catalog-react";import{makeStyles as d,Box as s}from"@material-ui/core";import e 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 f}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 k}from"../AlertPanel/AlertPanel.esm.js";import{CertificationLevel as u}from"./CertificationLevel.esm.js";import{CertificationSummary as y}from"./CertificationSummary.esm.js";import{CertificationSidebarSkeleton as E}from"./skeletons/CertificationSidebarSkeleton.esm.js";import"@material-ui/lab";const g=d(()=>({checks:{padding:0,margin:0,flex:1,listStyle:"none"}})),S=({playlistId:o,trackId:r,checkId:a})=>{const{entity:n}=p(),{data:t,isLoading:m,isError:c}=f(n,r);if(c)return e.createElement("div",null,e.createElement(s,{padding:2},e.createElement(k,{severity:"error",title:"Error loading certification"})));if(m||!r)return e.createElement(E,null);if(!t)return null;const l=t.track.type==="campaign";return e.createElement("div",null,e.createElement(y,{name:t.track.name,badge:t.track.badge,description:t.track.description,documentationUrl:t.track.documentationURL,trackType:t.track.type}),t?.levels.map(i=>e.createElement(u,{key:i.ordinal,level:i,checkId:a,trackId:r,playlistId:o,isCampaign:l})))};export{S as CertificationSidebar,g 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 h}from"@backstage/catalog-model";import{useEntity as b}from"@backstage/plugin-catalog-react";import{makeStyles as v,Typography as I,Tooltip as N,IconButton as x,CircularProgress as T}from"@material-ui/core";import z from"@material-ui/icons/Refresh";import S from"classnames";import e,{useState as D,useMemo as F}from"react";import{Link as L}from"react-router-dom";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{useGetChecks as w}from"../../hooks/checks/useGetChecks.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useExecuteCheck as A}from"../../hooks/checks/useExecuteCheck.esm.js";import"../CheckDryRun/CheckDryRun.esm.js";import"../SoundcheckDialog/SoundcheckDialog.esm.js";import{CheckDryRunDialogButton as B}from"../CheckDryRun/CheckDryRunDialogButton.esm.js";import"../CheckDryRun/CheckDryRunDetails.esm.js";import"../CheckDryRun/CheckDryRunContext.esm.js";import{mapCheckToCheckInput as G}from"../CheckDryRun/checkDryRunUtils.esm.js";import{CheckIcon as H}from"../CheckIcon/CheckIcon.esm.js";import{RelativeTime as M}from"../RelativeTime/RelativeTime.esm.js";const d=v(t=>({root:{display:"grid",width:"100%",gridTemplateColumns:"auto 1fr 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}})),P=({className:t,href:a,name:r,children:c})=>a?e.createElement(L,{"aria-label":`select check ${r}`,to:a,className:t},c):e.createElement("div",{className:t},c),$=({result:t,name:a,id:r,timestamp:c,isExecutable:f=!1,selected:k=!1,href:g})=>{const n=d(),E=S(n.root,{selected:k}),{entity:m}=b(),{mutateAsync:y,isLoading:l}=A(),[o,C]=D(),{data:s}=w({ids:r?[r]:[]},!!o),u=F(()=>{const i=s?.edges?.[0]?.node;return i?G(i):null},[s?.edges]),R=async()=>{if(!m||!r)return;const i=await y({checkerId:r,entityRef:h(m),shouldRefreshFacts:!0}).catch(j=>{});i&&C(i)},p=!m||!r||!f;return e.createElement(P,{href:g,className:E,name:a},e.createElement(H,{className:n.checkIcon,result:t}),e.createElement(I,{variant:"body2"},a),c&&!l?e.createElement(M,{timestamp:c}):null,!l&&e.createElement(e.Fragment,null,e.createElement(N,{title:"Execute Check",disableHoverListener:p},e.createElement("span",null,e.createElement(x,{size:"small",color:"inherit",onClick:R,disabled:p,"aria-label":"Execute Check"},e.createElement(z,{fontSize:"small"})))),!!o&&!!u&&e.createElement(B,{entityRef:h(m),check:u,checkResult:{checkResult:o.result,details:o.details??""},facts:o.facts,ruleResults:o.ruleResults,size:"small"})),l&&e.createElement(T,{color:"inherit",size:"1em"}))};export{$ as Check,d 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
@@ -0,0 +1,2 @@
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
+ //# sourceMappingURL=CheckResultInputPopup.esm.js.map