@spotify/backstage-plugin-soundcheck 0.19.2 → 0.19.4

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 (290) hide show
  1. package/CHANGELOG.md +51 -0
  2. package/config.d.ts +54 -1
  3. package/dist/alpha/integrations.esm.js +1 -1
  4. package/dist/alpha/pages.esm.js +1 -1
  5. package/dist/alpha.d.ts +2 -2
  6. package/dist/api.esm.js +1 -1
  7. package/dist/blueprints/IntegrationPageBlueprint.esm.js +1 -1
  8. package/dist/components/Badges/NoLevelBadge.esm.js +2 -2
  9. package/dist/components/CampaignCreatePage/CampaignCreatePage.esm.js +1 -1
  10. package/dist/components/CampaignForm/CampaignForm.esm.js +1 -1
  11. package/dist/components/CampaignForm/Steps/CampaignDetailsStep/CampaignOwnerField.esm.js +1 -1
  12. package/dist/components/CampaignForm/hooks/useCampaignForm.esm.js +1 -1
  13. package/dist/components/CampaignPage/CampaignPage.esm.js +2 -0
  14. package/dist/components/CampaignPage/CampaignPageBUI.esm.js +2 -0
  15. package/dist/components/CampaignPage/CampaignPageDeprecated.esm.js +2 -0
  16. package/dist/components/CampaignPage/CampaignStatusHistoryChart.esm.js +2 -0
  17. package/dist/components/CampaignPage/CampaignStatusHistoryTile.esm.js +2 -0
  18. package/dist/components/CampaignPage/CampaignStatusTile.esm.js +2 -0
  19. package/dist/components/CampaignPage/CampaignTechInsightsExplorerPage.esm.js +2 -0
  20. package/dist/components/CampaignsPage/CampaignListPage/CampaignListPageDeprecated.esm.js +2 -0
  21. package/dist/components/CampaignsPage/CampaignListPage/CampaignSummaryCard.esm.js +1 -1
  22. package/dist/components/CampaignsPage/CampaignListPageBUI.esm.js +2 -0
  23. package/dist/components/CampaignsPage/CampaignsPage.esm.js +1 -1
  24. package/dist/components/CampaignsPage/EditCampaignView.esm.js +1 -1
  25. package/dist/components/Cards/CheckStatusCard/CheckStatusCard.esm.js +2 -0
  26. package/dist/components/Cards/DescriptionCard/DescriptionCard.esm.js +2 -0
  27. package/dist/components/Cards/HistoricalCheckStatusCard/HistoricalCheckStatusCard.esm.js +2 -0
  28. package/dist/components/Cards/HistoricalTrackStatusCard/HistoricalTrackStatusCard.esm.js +2 -0
  29. package/dist/components/Cards/TrackStatusCard/TrackStatusCard.esm.js +2 -0
  30. package/dist/components/CertificationAccordion/CertificationAccordion.esm.js +1 -1
  31. package/dist/components/CertificationSidebar/CertificationSidebar.esm.js +1 -1
  32. package/dist/components/CertificationSidebar/CertificationSummary.esm.js +1 -1
  33. package/dist/components/CertificationSidebar/Check.esm.js +1 -1
  34. package/dist/components/CertificationSidebar/ExemptionJustificationDialog.esm.js +1 -1
  35. package/dist/components/CertificationSidebar/LevelSummary.esm.js +1 -1
  36. package/dist/components/CertificationsPage/CertificationTab.esm.js +1 -1
  37. package/dist/components/CertificationsPage/CertificationTabs.esm.js +1 -1
  38. package/dist/components/CertificationsPage/CertificationsPage.esm.js +1 -1
  39. package/dist/components/CertificationsPage/Playlist/PlaylistComponent.esm.js +1 -1
  40. package/dist/components/CertificationsPage/Playlist/PlaylistContext.esm.js +1 -1
  41. package/dist/components/CertificationsPage/Playlist/PlaylistSummary.esm.js +1 -1
  42. package/dist/components/Charts/chartUtils.esm.js +1 -1
  43. package/dist/components/CheckCreatePage/CheckCreatePage.esm.js +1 -1
  44. package/dist/components/CheckDetails/CheckDetails.esm.js +1 -1
  45. package/dist/components/CheckDetails/JustificationDetails.esm.js +1 -1
  46. package/dist/components/CheckDetails/ResultStateBox.esm.js +1 -1
  47. package/dist/components/CheckForm/CheckForm.esm.js +1 -1
  48. package/dist/components/CheckForm/FormFields/CheckPathResolverInput.esm.js +1 -1
  49. package/dist/components/CheckForm/FormFields/RuleInput/AddMenuButton.esm.js +1 -1
  50. package/dist/components/CheckForm/FormFields/RuleInput/Conditions/RuleConditionInput.esm.js +1 -1
  51. package/dist/components/CheckForm/FormFields/RuleInput/Conditions/useRuleOptions.esm.js +1 -1
  52. package/dist/components/CheckForm/FormFields/RuleInput/RuleInputBox.esm.js +1 -1
  53. package/dist/components/CheckForm/FormFields/TeamDetailsInput/TeamDetailsInput.esm.js +1 -1
  54. package/dist/components/CheckForm/Steps/CheckApplicabilityStep.esm.js +1 -1
  55. package/dist/components/CheckForm/Steps/CheckDetailsStep.esm.js +1 -1
  56. package/dist/components/CheckForm/Steps/CheckRulesStep.esm.js +1 -1
  57. package/dist/components/CheckForm/useCheckForm.esm.js +1 -1
  58. package/dist/components/CheckPage/CheckEditPage.esm.js +1 -1
  59. package/dist/components/CheckPage/CheckEditView.esm.js +1 -1
  60. package/dist/components/CheckPage/CheckEntitiesTable/CheckEntitiesTableBUI.esm.js +2 -0
  61. package/dist/components/CheckPage/CheckPage.esm.js +2 -0
  62. package/dist/components/CheckPage/CheckPageBUI.esm.js +2 -0
  63. package/dist/components/CheckPage/CheckPageDeprecated.esm.js +2 -0
  64. package/dist/components/CheckPage/CheckStatusHistoryChart.esm.js +1 -1
  65. package/dist/components/CheckPage/CheckStatusHistoryChartBUI.esm.js +2 -0
  66. package/dist/components/CheckPage/CheckStatusTable.esm.js +1 -1
  67. package/dist/components/CheckPage/CheckStatusTableBUI.esm.js +2 -0
  68. package/dist/components/CheckPage/ExemptionsTableBUI.esm.js +2 -0
  69. package/dist/components/CheckPage/utils.esm.js +1 -1
  70. package/dist/components/CheckSelection/CheckPreview.esm.js +1 -1
  71. package/dist/components/CheckSelection/CheckSelection.esm.js +1 -1
  72. package/dist/components/CheckStatusBar/CheckStatusBar.esm.js +1 -1
  73. package/dist/components/CheckStatusBar/CheckStatusBarBUI.esm.js +2 -0
  74. package/dist/components/CheckTemplatesPage/CheckTemplatesPage.esm.js +1 -1
  75. package/dist/components/CheckTemplatesPage/CheckTemplatesPageBUI.esm.js +2 -0
  76. package/dist/components/CheckTemplatesPage/CheckTemplatesPageDeprecated.esm.js +2 -0
  77. package/dist/components/CheckTemplatesPage/TemplateCategoryBUI.esm.js +2 -0
  78. package/dist/components/ChecksPage/CheckListPage/CheckListPageDeprecated.esm.js +2 -0
  79. package/dist/components/ChecksPage/CheckListPage/CheckSummaryCard.esm.js +1 -1
  80. package/dist/components/ChecksPage/ChecksListPageBUI.esm.js +2 -0
  81. package/dist/components/ChecksPage/ChecksPage.esm.js +1 -1
  82. package/dist/components/ChecksTable/ChecksTable.esm.js +2 -0
  83. package/dist/components/ChipSelector/ChipSelector.esm.js +2 -0
  84. package/dist/components/CollapsablePanel/CollapsablePanel.esm.js +1 -1
  85. package/dist/components/CollectorPage/CollectorDetailsPage.esm.js +1 -1
  86. package/dist/components/CollectorPage/CollectorDetailsPageBUI.esm.js +2 -0
  87. package/dist/components/CollectorPage/CollectorDetailsPageDeprecated.esm.js +2 -0
  88. package/dist/components/CollectorPage/CollectorFactTable.esm.js +1 -1
  89. package/dist/components/CollectorPage/CollectorFactTableBUI.esm.js +2 -0
  90. package/dist/components/CollectorPage/CollectorPage.esm.js +1 -1
  91. package/dist/components/CollectorPage/Configurators/AzureDevOps/AzureDevOpsConfigurator.esm.js +1 -1
  92. package/dist/components/CollectorPage/Configurators/BigQuery/BigQueryConfigurator.esm.js +1 -1
  93. package/dist/components/CollectorPage/Configurators/Catalog/CatalogConfigurator.esm.js +1 -1
  94. package/dist/components/CollectorPage/Configurators/DataDog/DataDogConfigurator.esm.js +1 -1
  95. package/dist/components/CollectorPage/Configurators/DataRegistry/DataRegistryConfigurator.esm.js +1 -1
  96. package/dist/components/CollectorPage/Configurators/Github/CodeScanningAlertsFactDetails.esm.js +1 -1
  97. package/dist/components/CollectorPage/Configurators/Github/GithubConfigurator.esm.js +1 -1
  98. package/dist/components/CollectorPage/Configurators/Github/SecretScanningAlertsFactDetails.esm.js +1 -1
  99. package/dist/components/CollectorPage/Configurators/Github/SecurityAdvisoriesFactDetails.esm.js +1 -1
  100. package/dist/components/CollectorPage/Configurators/Gitlab/GitlabConfigurator.esm.js +1 -1
  101. package/dist/components/CollectorPage/Configurators/HTTP/HttpConfigurator.esm.js +1 -1
  102. package/dist/components/CollectorPage/Configurators/HTTP/HttpStatusesInput.esm.js +1 -1
  103. package/dist/components/CollectorPage/Configurators/Jira/IssuesFactDetailsComponent.esm.js +2 -0
  104. package/dist/components/CollectorPage/Configurators/Jira/JiraConfigurator.esm.js +1 -1
  105. package/dist/components/CollectorPage/Configurators/Jira/utils.esm.js +1 -1
  106. package/dist/components/CollectorPage/Configurators/Jira/validation.esm.js +1 -1
  107. package/dist/components/CollectorPage/Configurators/Kubernetes/KubernetesConfigurator.esm.js +1 -1
  108. package/dist/components/CollectorPage/Configurators/NewRelic/NewRelicConfigurator.esm.js +1 -1
  109. package/dist/components/CollectorPage/Configurators/PagerDuty/PagerDutyConfigurator.esm.js +1 -1
  110. package/dist/components/CollectorPage/Configurators/SCM/ScmConfigurator.esm.js +1 -1
  111. package/dist/components/CollectorPage/Configurators/SonarQube/SonarQubeConfigurator.esm.js +1 -1
  112. package/dist/components/CollectorPage/DependantCheckCard.esm.js +2 -0
  113. package/dist/components/CollectorsPage/CollectorListPage/CollectorListPageDeprecated.esm.js +2 -0
  114. package/dist/components/CollectorsPage/CollectorListPage/CollectorSummaryCard.esm.js +1 -1
  115. package/dist/components/CollectorsPage/CollectorsPage.esm.js +1 -1
  116. package/dist/components/CollectorsPage/IntegrationLogoBUI.esm.js +2 -0
  117. package/dist/components/CollectorsPage/IntegrationsListPageBUI.esm.js +2 -0
  118. package/dist/components/CustomCell/CustomCell.esm.js +2 -0
  119. package/dist/components/DescriptionCell/DescriptionCell.esm.js +2 -0
  120. package/dist/components/DocLinkButton/DocLinkButton.esm.js +2 -0
  121. package/dist/components/EmptyState/EmptyStateBUI.esm.js +2 -0
  122. package/dist/components/EmptyState/EmptyStateNoCampaigns.esm.js +2 -0
  123. package/dist/components/EmptyState/EmptyStateNoChecks.esm.js +2 -0
  124. package/dist/components/EmptyState/EmptyStateNoTracks.esm.js +2 -0
  125. package/dist/components/EntitiesAutocompletePicker/EntitiesAutocompletePicker.esm.js +1 -1
  126. package/dist/components/EntitySoundcheckCard/Card.esm.js +1 -1
  127. package/dist/components/ExpandableSection/ExpandableSection.esm.js +1 -1
  128. package/dist/components/FactExplorer/FactExplorer.esm.js +1 -1
  129. package/dist/components/FactExplorer/FactExplorerDialogBUI.esm.js +2 -0
  130. package/dist/components/FactExplorer/useFactOptions.esm.js +1 -1
  131. package/dist/components/Filter/EntityAutocompletePicker.esm.js +1 -1
  132. package/dist/components/Filter/FilterComponent.esm.js +1 -1
  133. package/dist/components/Filter/FilterPreviewTable/FilterPreviewTable.esm.js +1 -1
  134. package/dist/components/Filter/KeyValueInputDialog.esm.js +1 -1
  135. package/dist/components/FilterMenu/FilterMenu.esm.js +2 -0
  136. package/dist/components/FilterSidebar/FilterSidebar.esm.js +1 -1
  137. package/dist/components/FilterSidebar/StateFilter.esm.js +1 -1
  138. package/dist/components/FilterSidebar/useTrackFilterSidebar.esm.js +1 -1
  139. package/dist/components/FilterSidebar/util.esm.js +1 -1
  140. package/dist/components/FormControlledAutocomplete/FormControlledAutocomplete.esm.js +1 -1
  141. package/dist/components/FormControlledAutocomplete/FormControlledMultipleAutocomplete.esm.js +1 -1
  142. package/dist/components/FormControlledAutocomplete/useLabelValueOptions.esm.js +2 -0
  143. package/dist/components/FormMarkdownInput/FormMarkdownInput.esm.js +1 -1
  144. package/dist/components/FormattedPreview/FormattedPreview.esm.js +1 -1
  145. package/dist/components/GroupHierarchySelector/GroupHierarchyGroupInfo.esm.js +1 -1
  146. package/dist/components/GroupHierarchySelector/GroupHierarchySelector.esm.js +1 -1
  147. package/dist/components/GroupSelectorBUI/GroupSelectList.esm.js +2 -0
  148. package/dist/components/GroupSelectorBUI/GroupSelectionHistory.esm.js +2 -0
  149. package/dist/components/GroupSelectorBUI/GroupSelectorBUI.esm.js +2 -0
  150. package/dist/components/GroupSelectorBUI/GroupTag.esm.js +2 -0
  151. package/dist/components/GroupSelectorBUI/useGroupHistory.esm.js +2 -0
  152. package/dist/components/GroupSelectorBUI/usePreviousSelectedGroups.esm.js +2 -0
  153. package/dist/components/HierarchicalTechInsightsPage/HierarchicalTechInsightsPage.esm.js +1 -1
  154. package/dist/components/HierarchicalTechInsightsPage/HierarchyTable.esm.js +1 -1
  155. package/dist/components/HierarchicalTechInsightsPage/SelectedNodeSidebar.esm.js +1 -1
  156. package/dist/components/HierarchicalTechInsightsPage/visualizations/hierarchyToNivo.esm.js +1 -1
  157. package/dist/components/ImportExportPanel/ImportExportPanelBUI.esm.js +2 -0
  158. package/dist/components/ImportExportPanel/{ImportExportPanel.esm.js → ImportExportPanelDeprecated.esm.js} +2 -2
  159. package/dist/components/LevelUpParty/LevelUpParty.esm.js +1 -1
  160. package/dist/components/LevelsTable/CheckRowContent.esm.js +1 -1
  161. package/dist/components/LevelsTable/LevelsTable.esm.js +1 -1
  162. package/dist/components/ListPageCustomActions/ListPageCustomActions.esm.js +2 -0
  163. package/dist/components/LoadingTableSkeleton/LoadingTableSkeleton.esm.js +2 -0
  164. package/dist/components/Menus/SimpleMenu.esm.js +2 -0
  165. package/dist/components/Menus/useCampaignActions.esm.js +2 -0
  166. package/dist/components/Menus/useCheckActions.esm.js +2 -0
  167. package/dist/components/Menus/useTrackActions.esm.js +2 -0
  168. package/dist/components/OverviewPage/OverviewPage.esm.js +1 -1
  169. package/dist/components/OverviewPage/OverviewPageContent.esm.js +1 -1
  170. package/dist/components/OverviewTable/Cell/CheckCellTooltip.esm.js +1 -1
  171. package/dist/components/OverviewTable/Cell/CheckLabelCell.esm.js +1 -1
  172. package/dist/components/OverviewTable/OverviewTable.esm.js +1 -1
  173. package/dist/components/OverviewTable/ResultsTable.esm.js +1 -1
  174. package/dist/components/PageCustomActions/PageCustomActions.esm.js +2 -0
  175. package/dist/components/PassRateTable/PassRateTable.esm.js +1 -1
  176. package/dist/components/QuickstartPage/QuickstartPage.esm.js +2 -2
  177. package/dist/components/RefetchingIndicator/RefetchingIndicator.esm.js +1 -1
  178. package/dist/components/Router.esm.js +1 -1
  179. package/dist/components/RoutingPage/RoutingMainMenu.esm.js +2 -0
  180. package/dist/components/RoutingPage/RoutingPage.esm.js +1 -1
  181. package/dist/components/RoutingPage/RoutingPageBUI.esm.js +2 -0
  182. package/dist/components/RoutingPage/RoutingPageDeprecated.esm.js +2 -0
  183. package/dist/components/RoutingPage/RoutingPageWrapper.esm.js +2 -0
  184. package/dist/components/RoutingPage/RoutingPageWrapperBUI.esm.js +2 -0
  185. package/dist/components/RoutingPage/RoutingPageWrapperDeprecated.esm.js +2 -0
  186. package/dist/components/RoutingPage/index.esm.js +1 -1
  187. package/dist/components/SearchFilters/SearchFilters.esm.js +1 -1
  188. package/dist/components/SendCampaignNotificationDialog/SendCampaignNotificationDialog.esm.js +1 -1
  189. package/dist/components/SoundcheckHeader/SoundcheckHeaderBUI.esm.js +2 -0
  190. package/dist/components/SoundcheckMarkdownContent/ComponentRenders.esm.js +1 -1
  191. package/dist/components/SoundcheckMarkdownContent/SoundcheckMarkdownContentBUI.esm.js +2 -0
  192. package/dist/components/SoundcheckMarkdownContent/SoundcheckMarkdownContentDeprecated.esm.js +2 -0
  193. package/dist/components/StatusBar/StatusBar.esm.js +2 -0
  194. package/dist/components/SummaryCard/SummaryCard.esm.js +1 -1
  195. package/dist/components/SummaryCard/SummaryCardActionsMenu.esm.js +1 -1
  196. package/dist/components/TableRowWithOwner/TableRowWithOwner.esm.js +2 -0
  197. package/dist/components/TeamStatusBar/TeamStatusBar.esm.js +1 -1
  198. package/dist/components/TechHealth/Filters/FacetFilter.esm.js +1 -1
  199. package/dist/components/TechHealth/Filters/useFacetOptions.esm.js +1 -1
  200. package/dist/components/TechHealth/Loading/TechHealthLoading.esm.js +1 -1
  201. package/dist/components/TechHealth/TechHealth.esm.js +1 -1
  202. package/dist/components/TechHealthSummary/SummaryAggregationsProvider.esm.js +1 -1
  203. package/dist/components/TechHealthTabs/CampaignResultsTab/CampaignResultsTab.esm.js +1 -1
  204. package/dist/components/TechHealthTabs/CheckResultsTab/CheckResultsTab.esm.js +1 -1
  205. package/dist/components/TechHealthTabs/EntityResultsTab/EntityResultsTab.esm.js +1 -1
  206. package/dist/components/TechHealthTabs/GroupResultsTab/GroupResultsTab.esm.js +1 -1
  207. package/dist/components/TechHealthTabs/NameColumn.esm.js +1 -1
  208. package/dist/components/TechHealthTabs/TrackResultsTab/TrackResultsTab.esm.js +1 -1
  209. package/dist/components/TechInsights/FilterControls.esm.js +1 -1
  210. package/dist/components/TechInsights/SummaryTiles.esm.js +1 -1
  211. package/dist/components/TechInsights/SummaryTilesBUI.esm.js +2 -0
  212. package/dist/components/TechInsights/TechInsightsPage.esm.js +1 -1
  213. package/dist/components/TechInsights/TechInsightsPageBUI.esm.js +2 -0
  214. package/dist/components/TechInsights/TechInsightsPageDeprecated.esm.js +2 -0
  215. package/dist/components/TechInsights/TechInsightsTableBUI.esm.js +2 -0
  216. package/dist/components/TechInsights/TechInsightsTableView.esm.js +1 -1
  217. package/dist/components/TechInsightsExplorerTable/TechInsightsExplorerTable.esm.js +2 -0
  218. package/dist/components/TechInsightsGroupSelector/TechInsightsGroupSelector.esm.js +1 -1
  219. package/dist/components/TimePeriodBar/TimePeriodBar.esm.js +1 -1
  220. package/dist/components/TimePeriodBar/TimePeriodBarBUI.esm.js +2 -0
  221. package/dist/components/TopAndBottomPerformingTeams/TopAndBottomPerformingTeams.esm.js +2 -0
  222. package/dist/components/TopFailingChecksTable/TopFailingChecksTableBUI.esm.js +2 -0
  223. package/dist/components/TrackCreatePage/TrackCreatePage.esm.js +1 -1
  224. package/dist/components/TrackEditPage/TrackEditPage.esm.js +1 -1
  225. package/dist/components/TrackEditPage/TrackEditView.esm.js +1 -1
  226. package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackBadgeTypeSelect/TrackBadgeTypeSelect.esm.js +1 -1
  227. package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackOwnerSelect/TrackOwnerSelect.esm.js +1 -1
  228. package/dist/components/TrackForm/TrackForm.esm.js +1 -1
  229. package/dist/components/TrackForm/utils/useTrackForm.esm.js +1 -1
  230. package/dist/components/TrackPage/TrackEntitiesTable/TrackEntitiesTable.esm.js +1 -1
  231. package/dist/components/TrackPage/TrackEntitiesTable/TrackEntitiesTableBUI.esm.js +2 -0
  232. package/dist/components/TrackPage/TrackHistoryChart.esm.js +1 -1
  233. package/dist/components/TrackPage/TrackHistoryChartBUI.esm.js +2 -0
  234. package/dist/components/TrackPage/TrackPage.esm.js +1 -1
  235. package/dist/components/TrackPage/TrackPageBUI.esm.js +2 -0
  236. package/dist/components/TrackPage/TrackPageDeprecated.esm.js +2 -0
  237. package/dist/components/TrackPage/TrackStatusBarBUI.esm.js +2 -0
  238. package/dist/components/TrackPage/TrackStatusTableBUI.esm.js +2 -0
  239. package/dist/components/TrackPage/TrackTechInsightsExplorerPage.esm.js +2 -0
  240. package/dist/components/TrackSelection/TrackSelection.esm.js +1 -1
  241. package/dist/components/TracksPage/TrackListPage/TrackListPageDeprecated.esm.js +2 -0
  242. package/dist/components/TracksPage/TrackListPage/TrackSummaryCard.esm.js +1 -1
  243. package/dist/components/TracksPage/TracksListPageBUI.esm.js +2 -0
  244. package/dist/components/TracksPage/TracksPage.esm.js +1 -1
  245. package/dist/graphql/generated/index.esm.js +126 -117
  246. package/dist/hooks/aggregations/useCheckStatus.esm.js +1 -1
  247. package/dist/hooks/catalog/useGetEntityRefs.esm.js +1 -1
  248. package/dist/hooks/catalog/useGetLimitedEntityRefs.esm.js +1 -1
  249. package/dist/hooks/catalog/useProfileImages.esm.js +2 -0
  250. package/dist/hooks/checks/useCheckDetails.esm.js +1 -1
  251. package/dist/hooks/entities/useTrackEntities.esm.js +1 -1
  252. package/dist/hooks/filters/useFilters.esm.js +2 -0
  253. package/dist/hooks/graphqlKeys.esm.js +1 -1
  254. package/dist/hooks/groups/useAllGroups.esm.js +1 -1
  255. package/dist/hooks/groups/useGroupOptions.esm.js +1 -1
  256. package/dist/hooks/groups/useUsersGroupClaims.esm.js +1 -1
  257. package/dist/hooks/heirarchy/useBatchedHierarchicalTrackStatuses.esm.js +1 -1
  258. package/dist/hooks/heirarchy/useGroupHierarchy.esm.js +1 -1
  259. package/dist/hooks/tracks/useRecertifyTrack.esm.js +2 -0
  260. package/dist/hooks/tracks/useTracksApplicableToGroup.esm.js +1 -1
  261. package/dist/hooks/useConfirmationModal.esm.js +1 -1
  262. package/dist/hooks/useLoadTimeReporting.esm.js +2 -0
  263. package/dist/hooks/usePagination.esm.js +2 -0
  264. package/dist/hooks/useSearchName.esm.js +2 -0
  265. package/dist/hooks/useSortTableLocalStorage.esm.js +2 -0
  266. package/dist/routes.esm.js +1 -1
  267. package/dist/utils/charts.esm.js +1 -1
  268. package/dist/utils/formStyles.esm.js +1 -1
  269. package/dist/utils/formatters.esm.js +1 -1
  270. package/dist/utils/helpers.esm.js +1 -1
  271. package/dist/utils/lcpReporting.esm.js +1 -1
  272. package/dist/utils/time.esm.js +1 -1
  273. package/package.json +25 -33
  274. package/dist/components/CampaignInsightsPage/CampaignInsightsPage.esm.js +0 -2
  275. package/dist/components/CampaignInsightsPage/CampaignStatusHistoryTile.esm.js +0 -2
  276. package/dist/components/CampaignInsightsPage/CampaignStatusTile.esm.js +0 -2
  277. package/dist/components/CampaignsPage/CampaignListPage/CampaignListPage.esm.js +0 -2
  278. package/dist/components/CheckPage/CheckInsightsPage.esm.js +0 -2
  279. package/dist/components/ChecksPage/CheckListPage/CheckListPage.esm.js +0 -2
  280. package/dist/components/CollectorPage/Configurators/Jira/IssuesSearchFactDetailsComponent.esm.js +0 -2
  281. package/dist/components/CollectorsPage/CollectorListPage/CollectorListPage.esm.js +0 -2
  282. package/dist/components/GroupHierarchySelector/usePreviousSelectedGroups.esm.js +0 -2
  283. package/dist/components/SoundcheckMarkdownContent/SoundcheckMarkdownContent.esm.js +0 -2
  284. package/dist/components/TechInsights/TechInsightsCardsView.esm.js +0 -2
  285. package/dist/components/TechInsights/TrackStatusCard.esm.js +0 -2
  286. package/dist/components/TechInsights/ViewModeControls.esm.js +0 -2
  287. package/dist/components/TechInsights/convertToCommonTrackStatus.esm.js +0 -2
  288. package/dist/components/TracksPage/TrackListPage/TrackListPage.esm.js +0 -2
  289. /package/dist/components/{CampaignInsightsPage → CampaignPage}/DaysRemainingTile.esm.js +0 -0
  290. /package/dist/{components/GroupHierarchySelector → utils}/getAllOwnedEntityCount.esm.js +0 -0
@@ -1,2 +1,2 @@
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};
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"react-use/lib/useLocalStorage";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:p,showExempt:n})=>{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?p:d?.exemptCheckIds.includes(a.id)?n:!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{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};
1
+ import{jsxs as r,jsx as i}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{SoundcheckMarkdownContentDeprecated as p}from"../SoundcheckMarkdownContent/SoundcheckMarkdownContentDeprecated.esm.js";import"react";import"react-markdown";import"rehype-raw";import"remark-gfm";import"../SoundcheckMarkdownContent/SoundcheckMarkdownContentBUI.esm.js";import{StatusDetails as f}from"./StatusDetails.esm.js";const n=l(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 u({description:t,documentationUrl:e}){const o=n();return e?r("div",{className:o.description,children:[i(p,{content:t}),i(s,{to:e,children:"Learn more"})]}):i("div",{className:o.description,children:i(p,{content:t})})}const y=({name:t,badge:e,description:o,documentationUrl:d,trackType:m="standard"})=>{const a=n();return r("div",{className:a.root,children:[i(h,{badge:e,trackType:m,size:"large",showTooltip:!0}),r("div",{children:[i(g,{className:a.title,children:t}),r(c,{container:!0,direction:"column",spacing:0,children:[o&&i(c,{item:!0,children:i(u,{description:o,documentationUrl:d})}),i(f,{badge:e})]})]})]})};export{y as CertificationSummary,n as useStyles};
2
2
  //# sourceMappingURL=CertificationSummary.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as C,jsx as e,Fragment as N}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 $,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($,{flex:1,children:e(I,{variant:"body2",children:r})}),c&&!n?e(F,{timestamp:c}):null,!n&&e(N,{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};
1
+ import{jsxs as C,jsx as e,Fragment as N}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 $,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"react-use/lib/useLocalStorage";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 m=d(),k=A(m.root,{selected:u}),{entity:a}=v(),{mutateAsync:y,isLoading:n}=w(),{data:s}=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||!!s?.exemption||t===h.NotApplicable,b=()=>{const i="Cannot execute check";return a?o?l?n?`${i} - check is already executing.`:s?.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:m.checkIcon,result:t}),e($,{flex:1,children:e(I,{variant:"body2",children:r})}),c&&!n?e(F,{timestamp:c}):null,!n&&e(N,{children:e(R,{title:b(),children:e("span",{children:e(S,{size:"small",color:"inherit",onClick:x,disabled:g,"aria-label":"Execute Check",children:e(z,{fontSize:"small"})})})})}),n&&e(T,{color:"inherit",size:"1em"})]})};export{P as Check,d as useStyles};
2
2
  //# sourceMappingURL=Check.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as a,Fragment as w,jsx as n}from"react/jsx-runtime";import{makeStyles as R,DialogContent as S,Box as b,Typography as C,TextField as A,FormHelperText as F,DialogActions as j,Button as x}from"@material-ui/core";import{useState as f,useEffect as T,useCallback as h}from"react";import{ResultState as D}from"../../graphql/generated/index.esm.js";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import{useSoundcheckAlert as L}from"../../hooks/useSoundcheckAlert.esm.js";import{useGetExemption as I}from"../../hooks/exemptions/useGetExemption.esm.js";import{useSetEntityExempt as J}from"../../hooks/exemptions/useSetEntityExempt.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{useDeleteExemption as B}from"../../hooks/exemptions/useDeleteExemption.esm.js";import{FormFieldLabel as N}from"../FormFieldLabel/FormFieldLabel.esm.js";import{SoundcheckDialog as W}from"../SoundcheckDialog/SoundcheckDialog.esm.js";const g=R(e=>({buttonArea:{paddingLeft:e.spacing(1),paddingBottom:0,justifyContent:"flex-start"},content:{minWidth:480,maxWidth:640,marginTop:e.spacing(0),paddingLeft:e.spacing(1),paddingTop:e.spacing(0)}})),O=({entityRef:e,checkId:i,isOpen:y,setIsOpen:r})=>{const[P,m]=f(),{showAlert:s}=L(),p=g(),[o,l]=f(""),{mutateAsync:d}=J(),{mutateAsync:c}=B(),{data:t,isLoading:u}=I(e,i);T(()=>{t?.exemption&&l(t.exemption.justification)},[t?.exemption]);const v=h(async()=>{!e||!i||await d({checkId:i,entityRef:e,justification:o})&&m({id:i,entityRef:e,result:D.Exempt,details:{notes:{type:"notes",data:o,version:1}},facts:[],ruleResults:[]})},[e,i,o,d,m]),E=h(async()=>{if(!(!e||!i))try{await c({checkId:i,entityRef:e})}catch{s({severity:"error",title:"Failure",message:"Failed to delete exemption."})}},[e,i,c,s]);return a(w,{children:[u&&n("div",{children:"Loading..."}),!u&&a(W,{open:y,handleClose:()=>r(!1),title:t?.exemption?"Remove Exemption?":"Justify Exemption",fullScreen:!1,children:[n(S,{className:p.content,children:a(b,{children:[n(N,{title:t?.exemption?"Existing Justification":"Exemption Justification"}),!t?.exemption&&n(C,{variant:"caption",children:"Please explain why this exemption is necessary. Supports limited markdown."}),n(A,{disabled:!!t?.exemption,variant:"outlined",margin:"dense",fullWidth:!0,value:o,inputProps:{"aria-label":"Exemption Reason"},multiline:!0,rows:3,maxRows:6,onChange:k=>l(k.target.value)}),n(F,{children:"Note: The act of adding or removing an exemption is tied to your user id and is monitored and recorded. Exemptions should only be added or removed with proper cause."})]})}),a(j,{className:p.buttonArea,children:[n(x,{variant:"contained",onClick:async()=>{r(!1),t?.exemption?await E():await v()},color:"primary",disabled:!t?.exemption&&(!o||o?.length===0),children:t?.exemption?"Remove":"Submit"}),n(x,{onClick:()=>r(!1),color:"primary",children:"Cancel"})]})]})]})};export{O as ExemptionJustificationDialog,g as useStyles};
1
+ import{jsxs as a,Fragment as w,jsx as o}from"react/jsx-runtime";import{makeStyles as R,DialogContent as S,Box as b,Typography as C,TextField as A,FormHelperText as F,DialogActions as j,Button as x}from"@material-ui/core";import{useState as f,useEffect as T,useCallback as h}from"react";import{ResultState as D}from"../../graphql/generated/index.esm.js";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import{useSoundcheckAlert as L}from"../../hooks/useSoundcheckAlert.esm.js";import{useGetExemption as I}from"../../hooks/exemptions/useGetExemption.esm.js";import{useSetEntityExempt as J}from"../../hooks/exemptions/useSetEntityExempt.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import{useDeleteExemption as B}from"../../hooks/exemptions/useDeleteExemption.esm.js";import{FormFieldLabel as N}from"../FormFieldLabel/FormFieldLabel.esm.js";import{SoundcheckDialog as W}from"../SoundcheckDialog/SoundcheckDialog.esm.js";const g=R(e=>({buttonArea:{paddingLeft:e.spacing(1),paddingBottom:0,justifyContent:"flex-start"},content:{minWidth:480,maxWidth:640,marginTop:e.spacing(0),paddingLeft:e.spacing(1),paddingTop:e.spacing(0)}})),O=({entityRef:e,checkId:i,isOpen:y,setIsOpen:r})=>{const[P,m]=f(),{showAlert:s}=L(),p=g(),[n,l]=f(""),{mutateAsync:d}=J(),{mutateAsync:c}=B(),{data:t,isLoading:u}=I(e,i);T(()=>{t?.exemption&&l(t.exemption.justification)},[t?.exemption]);const v=h(async()=>{!e||!i||await d({checkId:i,entityRef:e,justification:n})&&m({id:i,entityRef:e,result:D.Exempt,details:{notes:{type:"notes",data:n,version:1}},facts:[],ruleResults:[]})},[e,i,n,d,m]),E=h(async()=>{if(!(!e||!i))try{await c({checkId:i,entityRef:e})}catch{s({severity:"error",title:"Failure",message:"Failed to delete exemption."})}},[e,i,c,s]);return a(w,{children:[u&&o("div",{children:"Loading..."}),!u&&a(W,{open:y,handleClose:()=>r(!1),title:t?.exemption?"Remove Exemption?":"Justify Exemption",fullScreen:!1,children:[o(S,{className:p.content,children:a(b,{children:[o(N,{title:t?.exemption?"Existing Justification":"Exemption Justification"}),!t?.exemption&&o(C,{variant:"caption",children:"Please explain why this exemption is necessary. Supports limited markdown."}),o(A,{disabled:!!t?.exemption,variant:"outlined",margin:"dense",fullWidth:!0,value:n,inputProps:{"aria-label":"Exemption Reason"},multiline:!0,rows:3,maxRows:6,onChange:k=>l(k.target.value)}),o(F,{children:"Note: The act of adding or removing an exemption is tied to your user id and is monitored and recorded. Exemptions should only be added or removed with proper cause."})]})}),a(j,{className:p.buttonArea,children:[o(x,{variant:"contained",onClick:async()=>{r(!1),t?.exemption?await E():await v()},color:"primary",disabled:!t?.exemption&&(!n||n?.length===0),children:t?.exemption?"Remove":"Submit"}),o(x,{onClick:()=>r(!1),color:"primary",children:"Cancel"})]})]})]})};export{O as ExemptionJustificationDialog,g as useStyles};
2
2
  //# sourceMappingURL=ExemptionJustificationDialog.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as t,jsx as r}from"react/jsx-runtime";import{makeStyles as p,Typography as d,Grid as o}from"@material-ui/core";import{LevelBadge as n}from"../Badges/LevelBadge.esm.js";import"../Badges/NoLevelBadge.esm.js";import"../Badges/CampaignBadge.esm.js";import{SoundcheckMarkdownContent as l}from"../SoundcheckMarkdownContent/SoundcheckMarkdownContent.esm.js";import"@backstage/core-components";import"react";import"react-markdown";import"rehype-raw";import"remark-gfm";import{StatusDetails as g}from"./StatusDetails.esm.js";const a=p(e=>({wrapper:{backgroundColor:e.palette.background.default,color:e.palette.text.primary,fontSize:e.typography.caption.fontSize,minHeight:"auto",borderTop:`1px solid ${e.palette.divider}`,borderBottom:`1px solid ${e.palette.divider}`,padding:e.spacing(1),display:"grid",gridTemplateAreas:({badge:i})=>[`"${i?"badge":"title"} title"`,`"${i?".":"description"} description"`].join(" "),gridTemplateColumns:"auto 1fr"},title:{gridArea:"title",textTransform:"uppercase",fontWeight:"bold",color:e.palette.text.primary,fontSize:e.typography.body2.fontSize,paddingTop:e.spacing(.5),paddingBottom:e.spacing(.5),lineHeight:1},badge:{gridArea:"badge",marginRight:e.spacing(1)},description:{gridArea:"description",color:e.palette.text.primary,fontSize:e.typography.subtitle2.fontSize,"& p":{marginBlockStart:0,marginBlockEnd:0}}})),m=e=>{const i=a({badge:e.badge});return t("div",{className:i.wrapper,children:[e.badge?r(n,{className:i.badge,badge:e.badge}):null,r(d,{className:i.title,children:e.title}),t(o,{container:!0,direction:"column",spacing:0,className:i.description,children:[e.description?r(o,{item:!0,children:r(l,{content:e.description})}):null,r(g,{badge:e.badge})]})]})};export{m as LevelSummary,a as useStyles};
1
+ import{jsxs as e,jsx as r}from"react/jsx-runtime";import{makeStyles as p,Typography as d,Grid as o}from"@material-ui/core";import{LevelBadge as n}from"../Badges/LevelBadge.esm.js";import"../Badges/NoLevelBadge.esm.js";import"../Badges/CampaignBadge.esm.js";import{SoundcheckMarkdownContentDeprecated as l}from"../SoundcheckMarkdownContent/SoundcheckMarkdownContentDeprecated.esm.js";import"@backstage/core-components";import"react";import"react-markdown";import"rehype-raw";import"remark-gfm";import"../SoundcheckMarkdownContent/SoundcheckMarkdownContentBUI.esm.js";import{StatusDetails as g}from"./StatusDetails.esm.js";const a=p(t=>({wrapper:{backgroundColor:t.palette.background.default,color:t.palette.text.primary,fontSize:t.typography.caption.fontSize,minHeight:"auto",borderTop:`1px solid ${t.palette.divider}`,borderBottom:`1px solid ${t.palette.divider}`,padding:t.spacing(1),display:"grid",gridTemplateAreas:({badge:i})=>[`"${i?"badge":"title"} title"`,`"${i?".":"description"} description"`].join(" "),gridTemplateColumns:"auto 1fr"},title:{gridArea:"title",textTransform:"uppercase",fontWeight:"bold",color:t.palette.text.primary,fontSize:t.typography.body2.fontSize,paddingTop:t.spacing(.5),paddingBottom:t.spacing(.5),lineHeight:1},badge:{gridArea:"badge",marginRight:t.spacing(1)},description:{gridArea:"description",color:t.palette.text.primary,fontSize:t.typography.subtitle2.fontSize,"& p":{marginBlockStart:0,marginBlockEnd:0}}})),m=t=>{const i=a({badge:t.badge});return e("div",{className:i.wrapper,children:[t.badge?r(n,{className:i.badge,badge:t.badge}):null,r(d,{className:i.title,children:t.title}),e(o,{container:!0,direction:"column",spacing:0,className:i.description,children:[t.description?r(o,{item:!0,children:r(l,{content:t.description})}):null,r(g,{badge:t.badge})]})]})};export{m as LevelSummary,a as useStyles};
2
2
  //# sourceMappingURL=LevelSummary.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as e,jsxs as c,Fragment as d}from"react/jsx-runtime";import{useEntity as l}from"@backstage/plugin-catalog-react";import{makeStyles as f,Tab as g}from"@material-ui/core";import{Link as w}from"react-router-dom";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import{useCertificationDetailsForTrack as b}from"../../hooks/certifications/useCertificationDetailsForTrack.esm.js";import"@spotify/backstage-plugin-soundcheck-common";import"react";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{CertificationBadge as h}from"../Badges/CertificationBadge.esm.js";const o=f(t=>({root:{maxWidth:"80ch",textTransform:"uppercase",paddingTop:t.spacing(2),paddingBottom:t.spacing(2)},wrapper:{textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden",flexDirection:"row"},badge:{marginRight:t.spacing(1)}})),x=({id:t,name:i,badge:a,href:p,selected:m=!1})=>{const r=o(),{entity:s}=l(),{data:n}=b(s,t);return e(g,{className:r.root,classes:{wrapper:r.wrapper},value:t,label:c(d,{children:[e(h,{badge:a,trackType:n?.track.type,className:r.badge}),i]}),component:w,to:p,selected:m})};export{x as CertificationTab,o as useStyles};
1
+ import{jsx as e,jsxs as c,Fragment as d}from"react/jsx-runtime";import{useEntity as l}from"@backstage/plugin-catalog-react";import{makeStyles as f,Tab as g}from"@material-ui/core";import{Link as w}from"react-router-dom";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import{useCertificationDetailsForTrack as b}from"../../hooks/certifications/useCertificationDetailsForTrack.esm.js";import"@spotify/backstage-plugin-soundcheck-common";import"react";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-use/lib/useLocalStorage";import{CertificationBadge as h}from"../Badges/CertificationBadge.esm.js";const o=f(t=>({root:{maxWidth:"80ch",textTransform:"uppercase",paddingTop:t.spacing(2),paddingBottom:t.spacing(2)},wrapper:{textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden",flexDirection:"row"},badge:{marginRight:t.spacing(1)}})),x=({id:t,name:i,badge:a,href:p,selected:m=!1})=>{const r=o(),{entity:s}=l(),{data:n}=b(s,t);return e(g,{className:r.root,classes:{wrapper:r.wrapper},value:t,label:c(d,{children:[e(h,{badge:a,trackType:n?.track.type,className:r.badge}),i]}),component:w,to:p,selected:m})};export{x as CertificationTab,o as useStyles};
2
2
  //# sourceMappingURL=CertificationTab.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as i,jsxs as n}from"react/jsx-runtime";import{useRouteRef as b}from"@backstage/core-plugin-api";import{useEntity as P}from"@backstage/plugin-catalog-react";import{makeStyles as v,Tabs as B,IconButton as M,Menu as j,MenuItem as u,Switch as k}from"@material-ui/core";import D from"@material-ui/icons/ArrowDropDown";import L from"@material-ui/icons/Settings.js";import{useState as O,useEffect as Q}from"react";import C from"react-use/lib/useLocalStorage";import{useAllCertifications as U}from"../../hooks/certifications/useAllCertifications.esm.js";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/catalog-model";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{usePlaylists as X}from"../../hooks/playlists/usePlaylists.esm.js";import{certificationPlaylistRouteRef as Y,certificationTrackRouteRef as q}from"../../routes.esm.js";import{CertificationTab as F}from"./CertificationTab.esm.js";import{PlaylistCertificationTab as G}from"./PlaylistCertificationTab.esm.js";import{CertificationTabsSkeleton as H}from"./skeletons/CertificationTabsSkeleton.esm.js";function J(r=[],a=[],c,l){if(c){const o=r.findIndex(s=>s.id===c);return o<0?!1:o}const e=a.findIndex(o=>o.track.id===l);return e<0?!1:e+r.length}const K=v(r=>({tabsContainer:{display:"flex",alignItems:"center"},tabs:{flex:1},settingsButton:{display:"flex",alignItems:"center",marginRight:r.spacing(1)}})),V=({playlistId:r,trackId:a,onSettingsChange:c})=>{const l=K(),[e,o]=O(null),[s,y]=C("soundcheck.certifications.showNotApplicable",!1),[m,x]=C("soundcheck.certifications.showExempt",!0),[f,I]=C("soundcheck.certifications.showDraftTracksAndCampaigns",!1);Q(()=>{c?.({showNotApplicable:!!s,showExempt:!!m})},[s,m,c]);const S=t=>{o({top:t.clientY,left:t.clientX})},w=()=>{o(null)},{entity:g}=P(),{isLoading:T,data:p}=U(g,!1,f),{isLoading:R,data:d}=X(g),z=b(Y),A=b(q);if(R||T||!a)return i(H,{});const E=J(d,p,r,a);return n("div",{className:l.tabsContainer,children:[n(B,{className:l.tabs,value:E,indicatorColor:"primary","aria-label":"Certifications",variant:"scrollable",children:[d?.length&&d.map(({id:t,name:h})=>i(G,{id:t,name:h,selected:t===a,href:z({playlistId:t})},t)),p&&p.filter(({track:{type:t}})=>t!=="playlist").map(({track:{id:t,name:h,badge:N}})=>i(F,{id:t,name:h,badge:N,selected:t===a,href:A({trackId:t})},t))]}),n(M,{className:l.settingsButton,onClick:S,size:"small",children:[i(L,{fontSize:"small"}),i(D,{fontSize:"small"})]}),n(j,{open:!!e,onClose:w,anchorReference:"anchorPosition",anchorPosition:e?{top:e.top,left:e.left}:void 0,transformOrigin:{vertical:"top",horizontal:"right"},children:[n(u,{onClick:()=>{y(!s)},dense:!0,children:[i(k,{size:"small",checked:s}),"Show Not Applicable Checks"]}),n(u,{onClick:()=>{x(!m)},dense:!0,children:[i(k,{size:"small",checked:m}),"Show Exempt Checks"]}),n(u,{onClick:()=>{I(!f)},dense:!0,children:[i(k,{size:"small",checked:f}),"Show Draft Tracks and Campaigns"]})]})]})};export{V as CertificationTabs};
1
+ import{jsx as i,jsxs as n}from"react/jsx-runtime";import{useRouteRef as b}from"@backstage/core-plugin-api";import{useEntity as P}from"@backstage/plugin-catalog-react";import{makeStyles as v,Tabs as B,IconButton as M,Menu as j,MenuItem as u,Switch as k}from"@material-ui/core";import D from"@material-ui/icons/ArrowDropDown";import L from"@material-ui/icons/Settings.js";import{useState as O,useEffect as Q}from"react";import C from"react-use/lib/useLocalStorage";import{useAllCertifications as U}from"../../hooks/certifications/useAllCertifications.esm.js";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/catalog-model";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{usePlaylists as X}from"../../hooks/playlists/usePlaylists.esm.js";import{certificationPlaylistRouteRef as Y,certificationTrackRouteRef as $}from"../../routes.esm.js";import{CertificationTab as q}from"./CertificationTab.esm.js";import{PlaylistCertificationTab as F}from"./PlaylistCertificationTab.esm.js";import{CertificationTabsSkeleton as G}from"./skeletons/CertificationTabsSkeleton.esm.js";function H(r=[],a=[],c,l){if(c){const o=r.findIndex(s=>s.id===c);return o<0?!1:o}const e=a.findIndex(o=>o.track.id===l);return e<0?!1:e+r.length}const J=v(r=>({tabsContainer:{display:"flex",alignItems:"center"},tabs:{flex:1},settingsButton:{display:"flex",alignItems:"center",marginRight:r.spacing(1)}})),K=({playlistId:r,trackId:a,onSettingsChange:c})=>{const l=J(),[e,o]=O(null),[s,y]=C("soundcheck.certifications.showNotApplicable",!1),[m,x]=C("soundcheck.certifications.showExempt",!0),[f,I]=C("soundcheck.certifications.showDraftTracksAndCampaigns",!1);Q(()=>{c?.({showNotApplicable:!!s,showExempt:!!m})},[s,m,c]);const S=t=>{o({top:t.clientY,left:t.clientX})},w=()=>{o(null)},{entity:g}=P(),{isLoading:T,data:p}=U(g,!1,f),{isLoading:R,data:d}=X(g),z=b(Y),A=b($);if(R||T||!a)return i(G,{});const E=H(d,p,r,a);return n("div",{className:l.tabsContainer,children:[n(B,{className:l.tabs,value:E,indicatorColor:"primary","aria-label":"Certifications",variant:"scrollable",children:[d?.length&&d.map(({id:t,name:h})=>i(F,{id:t,name:h,selected:t===a,href:z({playlistId:t})},t)),p&&p.filter(({track:{type:t}})=>t!=="playlist").map(({track:{id:t,name:h,badge:N}})=>i(q,{id:t,name:h,badge:N,selected:t===a,href:A({trackId:t})},t))]}),n(M,{className:l.settingsButton,onClick:S,size:"small",children:[i(L,{fontSize:"small"}),i(D,{fontSize:"small"})]}),n(j,{open:!!e,onClose:w,anchorReference:"anchorPosition",anchorPosition:e?{top:e.top,left:e.left}:void 0,transformOrigin:{vertical:"top",horizontal:"right"},children:[n(u,{onClick:()=>{y(!s)},dense:!0,children:[i(k,{size:"small",checked:s}),"Show Not Applicable Checks"]}),n(u,{onClick:()=>{x(!m)},dense:!0,children:[i(k,{size:"small",checked:m}),"Show Exempt Checks"]}),n(u,{onClick:()=>{I(!f)},dense:!0,children:[i(k,{size:"small",checked:f}),"Show Draft Tracks and Campaigns"]})]})]})};export{K as CertificationTabs};
2
2
  //# sourceMappingURL=CertificationTabs.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as r,jsxs as d}from"react/jsx-runtime";import{stringifyEntityRef as k}from"@backstage/catalog-model";import{useEntity as I}from"@backstage/plugin-catalog-react";import{makeStyles as C,Paper as x,Divider as E}from"@material-ui/core";import{useState as N,useCallback as P}from"react";import{useParams as A}from"react-router-dom";import{useAllCertifications as R}from"../../hooks/certifications/useAllCertifications.esm.js";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{usePlaylists as S}from"../../hooks/playlists/usePlaylists.esm.js";import{AlertPanel as n}from"../AlertPanel/AlertPanel.esm.js";import{CertificationSidebar as D}from"../CertificationSidebar/CertificationSidebar.esm.js";import"../CertificationSidebar/CertificationSummary.esm.js";import"@material-ui/lab";import"../CertificationSidebar/Check.esm.js";import"../CertificationSidebar/LevelSummary.esm.js";import{isDarkTheme as T}from"../Charts/chartUtils.esm.js";import{CheckDetails as $}from"../CheckDetails/CheckDetails.esm.js";import"../CheckDryRun/CheckDryRun.esm.js";import"../SoundcheckDialog/SoundcheckDialog.esm.js";import"../CheckDryRun/CheckDryRunDetails.esm.js";import{CheckDryRunProvider as j}from"../CheckDryRun/CheckDryRunContext.esm.js";import"../CheckForm/utils/checkFormUtils.esm.js";import{NoCertifications as F}from"../EmptyState/EmptyState.esm.js";import{LevelUpParty as L}from"../LevelUpParty/LevelUpParty.esm.js";import{RefetchingIndicator as U}from"../RefetchingIndicator/RefetchingIndicator.esm.js";import{CertificationTabs as q}from"./CertificationTabs.esm.js";import{PlaylistComponent as z}from"./Playlist/PlaylistComponent.esm.js";const c=C(i=>({paper:{overflow:"hidden",position:"relative",border:T(i)?`1px solid ${i.palette.divider}`:void 0},view:{display:"grid",gridTemplateColumns:"1fr 2fr"},sidebar:{borderRight:`1px solid ${i.palette.divider}`}})),B=()=>{const{playlistId:i,trackId:t,checkId:s}=A(),p=c(),{entity:o}=I(),{isError:f,isFetched:h,data:y}=R(o),{isError:v,data:u}=S(o),[a,l]=N({showNotApplicable:!1,showExempt:!1}),w=P(({showNotApplicable:m,showExempt:b})=>{l({showNotApplicable:m,showExempt:b})},[l]);if(f||v)return r(n,{severity:"error",title:"Error loading certifications"});const e=i&&u?.find(m=>m.id===i);if(i&&!e)return r(n,{severity:"error",title:"Playlist ${playlistId} not found."});if(h&&!y?.length)return r(F,{});const g=o?k(o):void 0;return r(j,{children:d(x,{className:p.paper,children:[r(U,{}),r(q,{playlistId:i,trackId:t,onSettingsChange:w}),r(E,{}),e&&r(z,{playlist:e,entityRef:g}),!e&&t&&d("div",{"data-testid":"soundcheck-certification-view",className:p.view,children:[r("div",{className:p.sidebar,children:r(D,{trackId:t,checkId:s,showNotApplicable:a.showNotApplicable,showExempt:a.showExempt})}),r($,{programId:t,checkId:s}),r(L,{programId:t})]})]})})};export{B as CertificationsPage,c as useStyles};
1
+ import{jsx as r,jsxs as d}from"react/jsx-runtime";import{stringifyEntityRef as I}from"@backstage/catalog-model";import{useEntity as C}from"@backstage/plugin-catalog-react";import{makeStyles as g,Paper as x,Divider as E}from"@material-ui/core";import{useState as N,useCallback as P}from"react";import{useParams as A}from"react-router-dom";import{useAllCertifications as R}from"../../hooks/certifications/useAllCertifications.esm.js";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{usePlaylists as S}from"../../hooks/playlists/usePlaylists.esm.js";import"react-use/lib/useLocalStorage";import{AlertPanel as c}from"../AlertPanel/AlertPanel.esm.js";import{CertificationSidebar as D}from"../CertificationSidebar/CertificationSidebar.esm.js";import"../CertificationSidebar/CertificationSummary.esm.js";import"@material-ui/lab";import"../CertificationSidebar/Check.esm.js";import"../CertificationSidebar/LevelSummary.esm.js";import{isDarkTheme as T}from"../Charts/chartUtils.esm.js";import{CheckDetails as $}from"../CheckDetails/CheckDetails.esm.js";import"../CheckDryRun/CheckDryRun.esm.js";import"../SoundcheckDialog/SoundcheckDialog.esm.js";import"../CheckDryRun/CheckDryRunDetails.esm.js";import{CheckDryRunProvider as j}from"../CheckDryRun/CheckDryRunContext.esm.js";import"../CheckForm/utils/checkFormUtils.esm.js";import{NoCertifications as F}from"../EmptyState/EmptyState.esm.js";import"../EmptyState/EmptyStateBUI.esm.js";import"@backstage/plugin-permission-react";import"@remixicon/react";import"../../routes.esm.js";import{LevelUpParty as L}from"../LevelUpParty/LevelUpParty.esm.js";import{RefetchingIndicator as U}from"../RefetchingIndicator/RefetchingIndicator.esm.js";import{CertificationTabs as q}from"./CertificationTabs.esm.js";import{PlaylistComponent as z}from"./Playlist/PlaylistComponent.esm.js";const n=g(i=>({paper:{overflow:"hidden",position:"relative",border:T(i)?`1px solid ${i.palette.divider}`:void 0},view:{display:"grid",gridTemplateColumns:"1fr 2fr"},sidebar:{borderRight:`1px solid ${i.palette.divider}`}})),B=()=>{const{playlistId:i,trackId:t,checkId:s}=A(),p=n(),{entity:o}=C(),{isError:f,isFetched:h,data:y}=R(o),{isError:v,data:u}=S(o),[a,l]=N({showNotApplicable:!1,showExempt:!1}),k=P(({showNotApplicable:m,showExempt:b})=>{l({showNotApplicable:m,showExempt:b})},[l]);if(f||v)return r(c,{severity:"error",title:"Error loading certifications"});const e=i&&u?.find(m=>m.id===i);if(i&&!e)return r(c,{severity:"error",title:"Playlist ${playlistId} not found."});if(h&&!y?.length)return r(F,{});const w=o?I(o):void 0;return r(j,{children:d(x,{className:p.paper,children:[r(U,{}),r(q,{playlistId:i,trackId:t,onSettingsChange:k}),r(E,{}),e&&r(z,{playlist:e,entityRef:w}),!e&&t&&d("div",{"data-testid":"soundcheck-certification-view",className:p.view,children:[r("div",{className:p.sidebar,children:r(D,{trackId:t,checkId:s,showNotApplicable:a.showNotApplicable,showExempt:a.showExempt})}),r($,{trackId:t,checkId:s}),r(L,{trackId:t})]})]})})};export{B as CertificationsPage,n as useStyles};
2
2
  //# sourceMappingURL=CertificationsPage.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as r,jsxs as d}from"react/jsx-runtime";import{makeStyles as s}from"@material-ui/core";import{useParams as m}from"react-router-dom";import{CertificationAccordion as n}from"../../CertificationAccordion/CertificationAccordion.esm.js";import{CheckDetails as c}from"../../CheckDetails/CheckDetails.esm.js";import{PlaylistCertificationProvider as p}from"./PlaylistContext.esm.js";import{PlaylistSummary as g}from"./PlaylistSummary.esm.js";const f=s(i=>({root:{margin:0,display:"grid",gridTemplateColumns:"1fr",backgroundColor:i.palette.background.default},header:{backgroundColor:i.palette.background.paper,borderBottom:`1px solid ${i.palette.divider}`},section:{backgroundColor:i.palette.background.paper,border:`1px solid ${i.palette.divider}`,padding:0,marginTop:i.spacing(1),marginBottom:i.spacing(1),marginLeft:0,marginRight:i.spacing(1)},twoColumns:{display:"grid",gridTemplateColumns:"1fr 2fr"},sidebar:{display:"grid",gridTemplateColumns:"1fr",margin:i.spacing(1)}})),u=({playlist:i,entityRef:a})=>{const e=f(),{trackId:l,checkId:o}=m();return r("div",{className:e.root,children:d(p,{entityRef:a,children:[r("div",{className:e.header,children:r(g,{playlist:i,entityRef:a})}),d("div",{className:e.twoColumns,children:[r("div",{className:e.sidebar,children:i.trackIds.map(t=>r(n,{playlistId:i.id,trackId:t,checkId:o},t))}),r("div",{className:e.section,children:r(c,{programId:l,checkId:o})})]})]})})};export{u as PlaylistComponent};
1
+ import{jsx as a,jsxs as d}from"react/jsx-runtime";import{makeStyles as s}from"@material-ui/core";import{useParams as n}from"react-router-dom";import{CertificationAccordion as c}from"../../CertificationAccordion/CertificationAccordion.esm.js";import{CheckDetails as m}from"../../CheckDetails/CheckDetails.esm.js";import{PlaylistCertificationProvider as p}from"./PlaylistContext.esm.js";import{PlaylistSummary as g}from"./PlaylistSummary.esm.js";const f=s(r=>({root:{margin:0,display:"grid",gridTemplateColumns:"1fr",backgroundColor:r.palette.background.default},header:{backgroundColor:r.palette.background.paper,borderBottom:`1px solid ${r.palette.divider}`},section:{backgroundColor:r.palette.background.paper,border:`1px solid ${r.palette.divider}`,padding:0,marginTop:r.spacing(1),marginBottom:r.spacing(1),marginLeft:0,marginRight:r.spacing(1)},twoColumns:{display:"grid",gridTemplateColumns:"1fr 2fr"},sidebar:{display:"grid",gridTemplateColumns:"1fr",margin:r.spacing(1)}})),k=({playlist:r,entityRef:t})=>{const e=f(),{trackId:l,checkId:i}=n();return a("div",{className:e.root,children:d(p,{entityRef:t,children:[a("div",{className:e.header,children:a(g,{playlist:r,entityRef:t})}),d("div",{className:e.twoColumns,children:[a("div",{className:e.sidebar,children:r.trackIds.map(o=>a(c,{playlistId:r.id,trackId:o,checkId:i},o))}),a("div",{className:e.section,children:a(m,{trackId:l,checkId:i})})]})]})})};export{k as PlaylistComponent};
2
2
  //# sourceMappingURL=PlaylistComponent.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as n}from"react/jsx-runtime";import{createContext as m,useContext as s}from"react";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../api.esm.js";import"../../../hooks/graphqlKeys.esm.js";import{useCertificationDetails as p}from"../../../hooks/certifications/useCertificationDetails.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../../hooks/useSoundcheckAlert.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import"react-router-dom";const i=m(void 0),a=()=>{const t=s(i);if(!t)throw new Error("useAPlaylistCertificationContext must be used within an PlaylistCertificationProvider");return t},c=t=>{const{children:r,entityRef:o}=t,e=p(o);return n(i.Provider,{value:e,children:r})};export{c as PlaylistCertificationProvider,a as usePlaylistCertificationContext};
1
+ import{jsx as n}from"react/jsx-runtime";import{createContext as m,useContext as s}from"react";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../api.esm.js";import"../../../hooks/graphqlKeys.esm.js";import{useCertificationDetails as p}from"../../../hooks/certifications/useCertificationDetails.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../../hooks/useSoundcheckAlert.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";const i=m(void 0),a=()=>{const t=s(i);if(!t)throw new Error("useAPlaylistCertificationContext must be used within an PlaylistCertificationProvider");return t},c=t=>{const{children:r,entityRef:o}=t,e=p(o);return n(i.Provider,{value:e,children:r})};export{c as PlaylistCertificationProvider,a as usePlaylistCertificationContext};
2
2
  //# sourceMappingURL=PlaylistContext.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as e,jsx as t}from"react/jsx-runtime";import{Link as s}from"@backstage/core-components";import{makeStyles as c,Typography as l}from"@material-ui/core";import{SoundcheckMarkdownContent as p}from"../../SoundcheckMarkdownContent/SoundcheckMarkdownContent.esm.js";import"react";import"react-markdown";import"rehype-raw";import"remark-gfm";import{PlaylistProgress as m}from"./PlaylistProgress.esm.js";const n=c(i=>({description:{padding:0,margin:0,display:"block","& p":{margin:0}},root:{padding:i.spacing(2),margin:0,display:"grid",gridTemplateColumns:"min-content auto",gridGap:i.spacing(2)},title:{fontSize:i.typography.pxToRem(18),fontWeight:700,lineHeight:1.235,marginBottom:"6px"},level:{textTransform:"uppercase",color:i.palette.text.secondary,fontWeight:700,letterSpacing:"1px"}}));function d({description:i,documentationUrl:o}){const r=n();return o?e("div",{className:r.description,children:[t(p,{content:i}),t(s,{to:o,children:"Learn more"})]}):t("div",{className:r.description,children:t(p,{content:i})})}const g=({playlist:i})=>{const o=n(),{name:r,description:a}=i;return e("div",{className:o.root,children:[t(m,{playlist:i}),e("div",{children:[t(l,{className:o.title,children:r}),a&&t(d,{description:a,documentationUrl:void 0})]})]})};export{g as PlaylistSummary,n as useStyles};
1
+ import{jsxs as e,jsx as i}from"react/jsx-runtime";import{Link as s}from"@backstage/core-components";import{makeStyles as c,Typography as m}from"@material-ui/core";import{SoundcheckMarkdownContentDeprecated as p}from"../../SoundcheckMarkdownContent/SoundcheckMarkdownContentDeprecated.esm.js";import"react";import"react-markdown";import"rehype-raw";import"remark-gfm";import"../../SoundcheckMarkdownContent/SoundcheckMarkdownContentBUI.esm.js";import{PlaylistProgress as l}from"./PlaylistProgress.esm.js";const n=c(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 d({description:t,documentationUrl:o}){const r=n();return o?e("div",{className:r.description,children:[i(p,{content:t}),i(s,{to:o,children:"Learn more"})]}):i("div",{className:r.description,children:i(p,{content:t})})}const g=({playlist:t})=>{const o=n(),{name:r,description:a}=t;return e("div",{className:o.root,children:[i(l,{playlist:t}),e("div",{children:[i(m,{className:o.title,children:r}),a&&i(d,{description:a,documentationUrl:void 0})]})]})};export{g as PlaylistSummary,n as useStyles};
2
2
  //# sourceMappingURL=PlaylistSummary.esm.js.map
@@ -1,2 +1,2 @@
1
- const n=["#59A0F6","#95C90D","#FFA42C","#C87DFF","#7358FF","#F036A4"],C=["#3B82F6","#10B981","#8B5CF6","#F59E0B","#6B7280","#06B6D4","#EC4899","#84CC16","#D946EF"];var o=(e=>(e.RED="red",e.GREEN="green",e))(o||{});const a={red:"#FF4834",green:"#1BB552"},d={red:"#FF001A",green:"#1CD760"},F=e=>e?e.palette.type:"",t=e=>F(e).toLowerCase()==="dark",g=e=>t(e)?e.palette.grey[200]:e.palette.grey[800],s=e=>t(e)?C:n;function B(e,r){return(r?e.minus({days:r}):e).toFormat("MMM dd")}const D=(e,r)=>t(e)?d[r]:a[r];export{o as TrendLineColor,B as formatDate,s as getChartColors,g as getChartFontColor,F as getThemeType,D as getTrendLineColor,t as isDarkTheme};
1
+ import{map as p}from"lodash";import{DateTime as g}from"luxon";import{compactNumberFormatter as l}from"../../utils/formatters.esm.js";const h=["#59A0F6","#95C90D","#FFA42C","#C87DFF","#7358FF","#F036A4"],D=["#3B82F6","#10B981","#8B5CF6","#F59E0B","#6B7280","#06B6D4","#EC4899","#84CC16","#D946EF"];var F=(t=>(t.RED="red",t.GREEN="green",t))(F||{});const B={red:"#FF4834",green:"#1BB552"},T={red:"#FF001A",green:"#1CD760"},C=t=>t?t.palette.type:"",n=t=>C(t).toLowerCase()==="dark",E=t=>n(t)?t.palette.grey[200]:t.palette.grey[800],v=t=>n(t)?D:h;function d(t,e){return(e?t.minus({days:e}):t).toFormat("MMM dd")}const L=(t,e)=>n(t)?T[e]:B[e],H=(t,e)=>{if(typeof t=="number"){const r=e.certificationStatusHistory.numberOfEntities??0,s=r>0?Math.round(t/r*100):0;return`${l(t)} of ${l(r)} (${s}%)`}return t},M=t=>{const e=t?.certificationStatusHistory.history??[],r=t?.certificationStatusHistory.numberOfEntities??0,s=g.utc();return p(e,(m,f)=>{let o={name:d(s,e.length-f-1)},c=0,u=0;m.statusByLevel.sort((a,i)=>i.ordinal-a.ordinal).forEach(a=>{const i=a.cumulativelyPassed-u;o={...o,[`Level ${a.ordinal}`]:i},c+=i,u=a.cumulativelyPassed}),m.statusByLevel.reverse();const y=Math.max(0,r-c);return o={...o,"No Level":y},o})};export{F as TrendLineColor,d as formatDate,H as formatTrackHistoryChartTooltip,v as getChartColors,E as getChartFontColor,C as getThemeType,M as getTrackHistoryLineChartData,L as getTrendLineColor,n as isDarkTheme};
2
2
  //# sourceMappingURL=chartUtils.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as f,Fragment as l,jsx as r}from"react/jsx-runtime";import{useEffect as s}from"react";import{v4 as u}from"uuid";import"../../contexts/TrackFormContext.esm.js";import{CheckFormProvider as h,useCheckFormContext as g}from"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as k}from"../../hooks/useNavigateBack.esm.js";import{useCheckTemplates as C}from"../../hooks/checks/useCheckTemplates.esm.js";import{useCreateCheck as y}from"../../hooks/checks/useCreateCheck.esm.js";import{useSearchParam as I}from"../../hooks/useSearchParam.esm.js";import{checksPageRouteRef as L}from"../../routes.esm.js";import{CheckForm as F}from"../CheckForm/CheckForm.esm.js";import"../CheckForm/Steps/CheckDetailsStep.esm.js";import"../CheckForm/Steps/CheckRulesStep.esm.js";import{LoadingIndicator as P}from"../LoadingIndicator/LoadingIndicator.esm.js";import{PageWarningMessage as v}from"../PageWarningMessage/PageWarningMessage.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as x}from"../SoundcheckHeader/useHeader.esm.js";const S=({template:t})=>{const{setIsLoading:e,selectedItem:m,setSelectedItem:o}=g(),{mutateAsync:i,isLoading:a}=y();s(()=>{o(t?{...t,id:u()}:null)},[t,o]),s(()=>{e(a)},[e,a]);const[c,n]=k(L),p=async d=>{await i(d,{onSuccess:n})};return x({title:"Create a Check",description:"Identify if your software meets organizational standards by setting up a check.",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/checks"}),t&&!m?null:r(F,{onSave:p,onClose:c})},w=()=>{const[[t]]=I("template"),{isLoading:e,data:m}=C(),o=t&&m?m.find(i=>i.id===t)??null:null;return f(l,{children:[r(v,{entityName:"check template",entityId:t,showNotFound:!!t&&!e&&!o}),e&&r(P,{}),r(h,{children:!e&&(!t||o)&&r(S,{template:o})})]})};export{w as CheckCreatePage};
1
+ import{jsxs as d,Fragment as h,jsx as t}from"react/jsx-runtime";import{useRouteRef as p}from"@backstage/core-plugin-api";import{Box as k,HeaderPage as g}from"@backstage/ui";import{useEffect as n}from"react";import{v4 as C}from"uuid";import"../../contexts/TrackFormContext.esm.js";import{CheckFormProvider as y,useCheckFormContext as b}from"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.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"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as F}from"../../hooks/useNavigateBack.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import{useCheckTemplates as I}from"../../hooks/checks/useCheckTemplates.esm.js";import{useCreateCheck as L}from"../../hooks/checks/useCreateCheck.esm.js";import{useFeatureFlag as P}from"../../hooks/useFeatureFlag.esm.js";import{useSearchParam as R}from"../../hooks/useSearchParam.esm.js";import{checkTemplatesRouteRef as x,checksPageRouteRef as l}from"../../routes.esm.js";import{CheckForm as S}from"../CheckForm/CheckForm.esm.js";import"../CheckForm/Steps/CheckDetailsStep.esm.js";import"../CheckForm/Steps/CheckRulesStep.esm.js";import{DocLinkButton as v}from"../DocLinkButton/DocLinkButton.esm.js";import{LoadingIndicator as w}from"../LoadingIndicator/LoadingIndicator.esm.js";import{PageWarningMessage as A}from"../PageWarningMessage/PageWarningMessage.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as B}from"../SoundcheckHeader/useHeader.esm.js";const N=({template:e})=>{const{setIsLoading:o,selectedItem:i,setSelectedItem:r}=b(),{mutateAsync:c,isLoading:m}=L();n(()=>{r(e?{...e,id:C()}:null)},[e,r]),n(()=>{o(m)},[o,m]);const[s,a]=F(l),u=async f=>{await c(f,{onSuccess:a})};return B({title:"Create a Check",description:"Identify if your software meets organizational standards by setting up a check.",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/checks"}),e&&!i?null:t(S,{onSave:u,onClose:s})},T=()=>{const[[e]]=R("template"),{isLoading:o,data:i}=I(),r=e&&i?i.find(a=>a.id===e)??null:null,c=P("backstage-ui"),m=p(x),s=p(l);return d(h,{children:[c&&t(k,{children:t(g,{title:"Create Check",breadcrumbs:[{label:"All Checks",href:s()},{label:"Templates",href:m()}],customActions:t(v,{href:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/checks/"})})}),t(A,{entityName:"check template",entityId:e,showNotFound:!!e&&!o&&!r}),o&&t(w,{}),t(y,{children:!o&&(!e||r)&&t(N,{template:r})})]})};export{T as CheckCreatePage};
2
2
  //# sourceMappingURL=CheckCreatePage.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as t,jsxs as o,Fragment as M}from"react/jsx-runtime";import{stringifyEntityRef as h}from"@backstage/catalog-model";import{useEntity as O}from"@backstage/plugin-catalog-react";import{makeStyles as F,Box as p,Typography as m,Button as u,Tooltip as $}from"@material-ui/core";import{Alert as C}from"@material-ui/lab";import{useState as v}from"react";import{CheckerType as W,ResultState as l}from"../../graphql/generated/index.esm.js";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@spotify/backstage-plugin-soundcheck-common";import{useCheck as G}from"../../hooks/checks/useCheck.esm.js";import{useCheckDetails as J}from"../../hooks/checks/useCheckDetails.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import{useGetExemption as q}from"../../hooks/exemptions/useGetExemption.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{useSetManualResult as H}from"../../hooks/checks/useSetManualResult.esm.js";import{AlertPanel as K}from"../AlertPanel/AlertPanel.esm.js";import{CheckResultInputPopup as Q}from"../CertificationSidebar/CheckResultInputPopup.esm.js";import{ExemptionJustificationDialog as U}from"../CertificationSidebar/ExemptionJustificationDialog.esm.js";import{RelativeTime as V}from"../RelativeTime/RelativeTime.esm.js";import{SoundcheckMarkdownContent as X}from"../SoundcheckMarkdownContent/SoundcheckMarkdownContent.esm.js";import"@backstage/core-components";import"react-markdown";import"rehype-raw";import"remark-gfm";import{ResultStateBox as Y}from"./ResultStateBox.esm.js";import{CheckDetailsSkeleton as Z}from"./skeletons/CheckDetailsSkeleton.esm.js";const c=F(e=>({root:{padding:`${e.spacing(3)}px ${e.spacing(5)}px`},title:{fontWeight:"normal",fontSize:e.typography.h5.fontSize},description:{padding:`${e.spacing(3)}px 0`},subtitle:{fontWeight:"normal",fontSize:e.typography.h6.fontSize},topBar:{display:"flex",justifyContent:"space-between",marginBottom:e.spacing(2)},exemptButton:{marginLeft:e.spacing(1)},exemptAlert:{marginBottom:e.spacing(2)}})),R=({setPopupDisplayed:e})=>{const i=c();return t(u,{className:i.exemptButton,size:"small",onClick:()=>e(!0),"aria-label":"Set Check Status Button",children:"Set Check Status"})},E=({isExempt:e,setPopupDisplayed:i})=>{const r=c();return t($,{title:e?"Remove Exemption":"Set Exempt From Check",children:t(u,{className:r.exemptButton,size:"small",color:"inherit",onClick:()=>i(!0),"aria-label":"Exempt From Check",children:e?"Remove Exemption":"Add Exemption"})})},_=({programId:e,checkId:i})=>{const r=c(),{entity:a}=O(),{data:f,isLoading:B,isError:N}=J(a,e,i),[b,x]=v(!1),[D,d]=v(!1),{data:n,isLoading:T}=q(h(a),i??""),{data:y}=G(i),{mutateAsync:w}=H();if(N)return t(p,{padding:2,children:t(K,{severity:"error",title:"Error loading check details"})});if(B||!e||!i)return t(Z,{});if(!f)return null;const k=y?.type===W.Manual,{name:g,description:z,result:s,timestamp:S,details:A}=f,I=async(P,j)=>{if(!a||!i)return;const L=h(a);await w({checkId:i,entityRef:L,justification:j,state:P})};return o("div",{className:r.root,"data-testid":"check-details-view",children:[o("div",{className:r.topBar,children:[t(m,{variant:"h2",className:r.title,children:g}),o(p,{display:"flex",alignItems:"center",children:[S?t(V,{timestamp:S,description:"Last updated"}):null,k&&!n?.exemption&&s!==l.NotReported&&t(R,{setPopupDisplayed:d}),!T&&s!==l.NotApplicable&&t(E,{isExempt:!!n?.exemption,setPopupDisplayed:x})]})]}),t(U,{entityRef:h(a),checkId:i,isOpen:b,setIsOpen:x}),t(Q,{isOpen:D,setIsOpen:d,setCallback:I}),!n?.exemption&&s===l.Exempt&&t(C,{className:r.exemptAlert,severity:"warning",variant:"outlined",children:"This check's exemption for this entity was recently removed. The recent exemption state will clear once the check has been run."}),!!n?.exemption&&t(p,{marginBottom:2,children:t(C,{className:r.exemptAlert,severity:"warning",variant:"outlined",children:"This entity has been exempted from this check."})}),k&&!n?.exemption&&s===l.NotReported?o(p,{children:[t(m,{children:"This check is manual and must have its state set by a user."}),t(p,{marginTop:1,children:t(u,{variant:"contained",color:"primary",onClick:()=>d(!0),"aria-label":"Set Check Status",size:"small",children:"Set Check Status"})})]}):o(M,{children:[t(m,{className:r.subtitle,children:"Most Recent Result:"}),t(Y,{name:g,state:s,details:A,templateRef:y?.templateRef??void 0})]}),o("div",{className:r.description,"data-testid":"soundcheck-check-details-description",children:[t(m,{variant:"h3",className:r.subtitle,children:"Description"}),t(X,{content:z})]})]})};export{_ as CheckDetails,E as ExemptDialogButton,R as SetCheckStatusButton,c as useStyles};
1
+ import{jsx as t,jsxs as o,Fragment as M}from"react/jsx-runtime";import{stringifyEntityRef as h}from"@backstage/catalog-model";import{useEntity as O}from"@backstage/plugin-catalog-react";import{makeStyles as F,Box as p,Typography as m,Button as u,Tooltip as $}from"@material-ui/core";import{Alert as C}from"@material-ui/lab";import{useState as v}from"react";import{CheckerType as W,ResultState as l}from"../../graphql/generated/index.esm.js";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@spotify/backstage-plugin-soundcheck-common";import{useCheck as G}from"../../hooks/checks/useCheck.esm.js";import{useCheckDetails as J}from"../../hooks/checks/useCheckDetails.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import{useGetExemption as q}from"../../hooks/exemptions/useGetExemption.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import{useSetManualResult as H}from"../../hooks/checks/useSetManualResult.esm.js";import{AlertPanel as K}from"../AlertPanel/AlertPanel.esm.js";import{CheckResultInputPopup as Q}from"../CertificationSidebar/CheckResultInputPopup.esm.js";import{ExemptionJustificationDialog as U}from"../CertificationSidebar/ExemptionJustificationDialog.esm.js";import{RelativeTime as V}from"../RelativeTime/RelativeTime.esm.js";import{SoundcheckMarkdownContentDeprecated as X}from"../SoundcheckMarkdownContent/SoundcheckMarkdownContentDeprecated.esm.js";import"@backstage/core-components";import"react-markdown";import"rehype-raw";import"remark-gfm";import"../SoundcheckMarkdownContent/SoundcheckMarkdownContentBUI.esm.js";import{ResultStateBox as Y}from"./ResultStateBox.esm.js";import{CheckDetailsSkeleton as Z}from"./skeletons/CheckDetailsSkeleton.esm.js";const c=F(e=>({root:{padding:`${e.spacing(3)}px ${e.spacing(5)}px`},title:{fontWeight:"normal",fontSize:e.typography.h5.fontSize},description:{padding:`${e.spacing(3)}px 0`},subtitle:{fontWeight:"normal",fontSize:e.typography.h6.fontSize},topBar:{display:"flex",justifyContent:"space-between",marginBottom:e.spacing(2)},exemptButton:{marginLeft:e.spacing(1)},exemptAlert:{marginBottom:e.spacing(2)}})),R=({setPopupDisplayed:e})=>{const i=c();return t(u,{className:i.exemptButton,size:"small",onClick:()=>e(!0),"aria-label":"Set Check Status Button",children:"Set Check Status"})},E=({isExempt:e,setPopupDisplayed:i})=>{const r=c();return t($,{title:e?"Remove Exemption":"Set Exempt From Check",children:t(u,{className:r.exemptButton,size:"small",color:"inherit",onClick:()=>i(!0),"aria-label":"Exempt From Check",children:e?"Remove Exemption":"Add Exemption"})})},_=({trackId:e,checkId:i})=>{const r=c(),{entity:a}=O(),{data:f,isLoading:B,isError:N}=J(a,e,i),[b,x]=v(!1),[D,d]=v(!1),{data:n,isLoading:T}=q(h(a),i??""),{data:k}=G(i),{mutateAsync:w}=H();if(N)return t(p,{padding:2,children:t(K,{severity:"error",title:"Error loading check details"})});if(B||!e||!i)return t(Z,{});if(!f)return null;const y=k?.type===W.Manual,{name:g,description:z,result:s,timestamp:S,details:A}=f,I=async(P,j)=>{if(!a||!i)return;const L=h(a);await w({checkId:i,entityRef:L,justification:j,state:P})};return o("div",{className:r.root,"data-testid":"check-details-view",children:[o("div",{className:r.topBar,children:[t(m,{variant:"h2",className:r.title,children:g}),o(p,{display:"flex",alignItems:"center",children:[S?t(V,{timestamp:S,description:"Last updated"}):null,y&&!n?.exemption&&s!==l.NotReported&&t(R,{setPopupDisplayed:d}),!T&&s!==l.NotApplicable&&t(E,{isExempt:!!n?.exemption,setPopupDisplayed:x})]})]}),t(U,{entityRef:h(a),checkId:i,isOpen:b,setIsOpen:x}),t(Q,{isOpen:D,setIsOpen:d,setCallback:I}),!n?.exemption&&s===l.Exempt&&t(C,{className:r.exemptAlert,severity:"warning",variant:"outlined",children:"This check's exemption for this entity was recently removed. The recent exemption state will clear once the check has been run."}),!!n?.exemption&&t(p,{marginBottom:2,children:t(C,{className:r.exemptAlert,severity:"warning",variant:"outlined",children:"This entity has been exempted from this check."})}),y&&!n?.exemption&&s===l.NotReported?o(p,{children:[t(m,{children:"This check is manual and must have its state set by a user."}),t(p,{marginTop:1,children:t(u,{variant:"contained",color:"primary",onClick:()=>d(!0),"aria-label":"Set Check Status",size:"small",children:"Set Check Status"})})]}):o(M,{children:[t(m,{className:r.subtitle,children:"Most Recent Result:"}),t(Y,{name:g,state:s,details:A,templateRef:k?.templateRef??void 0})]}),o("div",{className:r.description,"data-testid":"soundcheck-check-details-description",children:[t(m,{variant:"h3",className:r.subtitle,children:"Description"}),t(X,{content:z})]})]})};export{_ as CheckDetails,E as ExemptDialogButton,R as SetCheckStatusButton,c as useStyles};
2
2
  //# sourceMappingURL=CheckDetails.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as r,jsx as t}from"react/jsx-runtime";import{Divider as p,Typography as a,Box as l}from"@material-ui/core";import{JustificationDetailsSchema as c}from"@spotify/backstage-plugin-soundcheck-common";import{DateTime as u}from"luxon";import{EntityChip as d}from"../EntityChip/EntityChip.esm.js";import{SoundcheckMarkdownContent as f}from"../SoundcheckMarkdownContent/SoundcheckMarkdownContent.esm.js";import"@backstage/core-components";import"react";import"react-markdown";import"rehype-raw";import"remark-gfm";const h=({justification:m,type:i})=>{const n=c.safeParse(m);if(!n.success)return null;const o=n.data,s=u.fromISO(o.timestamp).toFormat("MM/dd/yyyy");let e;switch(i){case"exemption":e="Exemption Details:";break;case"manual":e="Manually Submitted Check Result Details:";break;default:e="Unknown Justification Type";break}return r("div",{children:[t(p,{}),t(a,{variant:"h6",children:e}),t("br",{}),r(a,{children:[t(d,{entityOrRef:o.submittedBy,style:{}}),"submitted ",i==="exemption"?"an exemption":"a manual result"," on ",s,"."]}),t("br",{}),r(a,{children:["Reasoning for the ",i==="exemption"?"exemption":"manual result"," ","was:"]}),t(l,{maxHeight:"400px",overflow:"auto",style:{wordWrap:"break-word",wordBreak:"break-word"},children:t(f,{content:o.justification})})]})};export{h as JustificationDetails};
1
+ import{jsxs as o,jsx as t}from"react/jsx-runtime";import{Divider as p,Typography as a,Box as c}from"@material-ui/core";import{JustificationDetailsSchema as l}from"@spotify/backstage-plugin-soundcheck-common";import{DateTime as u}from"luxon";import{EntityChip as d}from"../EntityChip/EntityChip.esm.js";import{SoundcheckMarkdownContentDeprecated as f}from"../SoundcheckMarkdownContent/SoundcheckMarkdownContentDeprecated.esm.js";import"@backstage/core-components";import"react";import"react-markdown";import"rehype-raw";import"remark-gfm";import"../SoundcheckMarkdownContent/SoundcheckMarkdownContentBUI.esm.js";const h=({justification:m,type:i})=>{const n=l.safeParse(m);if(!n.success)return null;const r=n.data,s=u.fromISO(r.timestamp).toFormat("MM/dd/yyyy");let e;switch(i){case"exemption":e="Exemption Details:";break;case"manual":e="Manually Submitted Check Result Details:";break;default:e="Unknown Justification Type";break}return o("div",{children:[t(p,{}),t(a,{variant:"h6",children:e}),t("br",{}),o(a,{children:[t(d,{entityOrRef:r.submittedBy,style:{}}),"submitted ",i==="exemption"?"an exemption":"a manual result"," on ",s,"."]}),t("br",{}),o(a,{children:["Reasoning for the ",i==="exemption"?"exemption":"manual result"," ","was:"]}),t(c,{maxHeight:"400px",overflow:"auto",style:{wordWrap:"break-word",wordBreak:"break-word"},children:t(f,{content:r.justification})})]})};export{h as JustificationDetails};
2
2
  //# sourceMappingURL=JustificationDetails.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as o,jsx as e,Fragment as l}from"react/jsx-runtime";import{useApi as w,configApiRef as A}from"@backstage/core-plugin-api";import{makeStyles as D,Paper as E,Typography as F,Divider as s,Box as d,Button as T}from"@material-ui/core";import{ToggleButtonGroup as j,ToggleButton as x}from"@material-ui/lab";import{NotesSchema as P}from"@spotify/backstage-plugin-soundcheck-common";import{useState as R}from"react";import{ResultState as i}from"../../graphql/generated/index.esm.js";import{CheckIcon as $}from"../CheckIcon/CheckIcon.esm.js";import{SoundcheckMarkdownContent as I}from"../SoundcheckMarkdownContent/SoundcheckMarkdownContent.esm.js";import"@backstage/core-components";import"react-markdown";import"rehype-raw";import"remark-gfm";import{CheckResultDetails as v}from"./CheckResultDetails.esm.js";import{FixMeDialog as G}from"./FixMeDialog.esm.js";import{JustificationDetails as k}from"./JustificationDetails.esm.js";import{SelectedValueProvider as J}from"./SelectedValueContext.esm.js";const L=D(n=>({markdownContent:{"& :last-child":{marginBottom:0},"& pre":{background:`${n.palette.background.paper} !important`},"& :first-child":{marginTop:0}},root:{padding:n.spacing(2),display:"flex",flexDirection:"column",gap:n.spacing(1.5)},header:{display:"flex",alignItems:"center",justifyContent:"space-between"},iconContainer:{display:"flex",alignItems:"center"},toggleButtonGroup:{marginLeft:"auto"},toggleButton:{padding:n.spacing(.5),fontSize:n.typography.pxToRem(12)},passed:{},failed:{},warning:{},notReported:{},notApplicable:{},exempt:{},error:{},icon:{marginRight:n.spacing(.5)},divider:{margin:n.spacing(.5,0)}}),{name:"CheckResultStateBox"}),M={[i.Passed]:"Check passed",[i.Failed]:"Check did not pass",[i.Warning]:"Check produced warning(s)",[i.NotReported]:"Check not reported",[i.NotApplicable]:"Check not applicable",[i.Exempt]:"Exempt from check",[i.Error]:"Check encountered an error."},O={[i.Passed]:"passed",[i.Failed]:"failed",[i.Warning]:"warning",[i.NotReported]:"notReported",[i.NotApplicable]:"notApplicable",[i.Exempt]:"exempt",[i.Error]:"error"},W=({name:n,state:r,details:t,templateRef:m})=>{const a=L(),[C,c]=R(!1),[p,y]=R("notes"),N=w(A).getOptionalStringArray("soundcheck.flags")?.includes("enable-fix-me"),u=t&&(t.ruleResult||t.applicabilityResult),b=()=>{c(!0)},B=()=>{c(!1)},S=(z,f)=>{f!==null&&y(f)},g=t?.notes?P.safeParse(t.notes):void 0,h=g?.success?g.data.data:void 0;return o(E,{variant:"outlined",className:`${a.root} ${a[O[r]]}`,children:[o("div",{className:a.header,children:[o("div",{className:a.iconContainer,children:[e($,{className:a.icon,result:r}),e(F,{variant:"subtitle1",children:M[r]})]}),u&&o(j,{value:p,exclusive:!0,onChange:S,className:a.toggleButtonGroup,children:[e(x,{value:"notes",className:a.toggleButton,children:"Notes"}),e(x,{value:"details",className:a.toggleButton,children:"Details"})]})]}),p==="notes"&&o(l,{children:[t&&t.exemption&&o(l,{children:[e(s,{className:a.divider}),e(k,{justification:t.exemption,type:"exemption"})]}),t&&t.manualResult&&o(l,{children:[e(s,{className:a.divider}),e(k,{justification:t.manualResult,type:"manual"})]}),h&&o(d,{style:{maxHeight:"35vh",overflowY:"auto"},children:[e(s,{className:a.divider}),e(d,{marginTop:1.5,children:e(I,{className:a.markdownContent,content:h})})]}),N&&r===i.Failed&&m&&o(d,{display:"flex",flexDirection:"column",alignItems:"flex-end",mt:2,width:"100%",children:[e(T,{color:"primary",variant:"contained",onClick:b,children:"Fix"}),e(G,{title:`Fix ${n}`,open:C,setOpen:c,onClose:B,templateRef:m})]})]}),p==="details"&&e(l,{children:u&&o(l,{children:[e(s,{className:a.divider}),o(J,{children:[t.applicabilityResult&&e(v,{ruleResult:t.applicabilityResult,title:"Applicability Rule Evaluation"}),t.ruleResult&&e(v,{ruleResult:t.ruleResult,title:"Check Rule Evaluation"})]})]})})]})};export{W as ResultStateBox};
1
+ import{jsxs as o,jsx as e,Fragment as n}from"react/jsx-runtime";import{useApi as w,configApiRef as A}from"@backstage/core-plugin-api";import{makeStyles as D,Paper as E,Typography as F,Divider as s,Box as d,Button as T}from"@material-ui/core";import{ToggleButtonGroup as j,ToggleButton as x}from"@material-ui/lab";import{NotesSchema as P}from"@spotify/backstage-plugin-soundcheck-common";import{useState as R}from"react";import{ResultState as i}from"../../graphql/generated/index.esm.js";import{CheckIcon as $}from"../CheckIcon/CheckIcon.esm.js";import{SoundcheckMarkdownContentDeprecated as I}from"../SoundcheckMarkdownContent/SoundcheckMarkdownContentDeprecated.esm.js";import"@backstage/core-components";import"react-markdown";import"rehype-raw";import"remark-gfm";import"../SoundcheckMarkdownContent/SoundcheckMarkdownContentBUI.esm.js";import{CheckResultDetails as v}from"./CheckResultDetails.esm.js";import{FixMeDialog as G}from"./FixMeDialog.esm.js";import{JustificationDetails as k}from"./JustificationDetails.esm.js";import{SelectedValueProvider as J}from"./SelectedValueContext.esm.js";const L=D(l=>({markdownContent:{"& :last-child":{marginBottom:0},"& pre":{background:`${l.palette.background.paper} !important`},"& :first-child":{marginTop:0}},root:{padding:l.spacing(2),display:"flex",flexDirection:"column",gap:l.spacing(1.5)},header:{display:"flex",alignItems:"center",justifyContent:"space-between"},iconContainer:{display:"flex",alignItems:"center"},toggleButtonGroup:{marginLeft:"auto"},toggleButton:{padding:l.spacing(.5),fontSize:l.typography.pxToRem(12)},passed:{},failed:{},warning:{},notReported:{},notApplicable:{},exempt:{},error:{},icon:{marginRight:l.spacing(.5)},divider:{margin:l.spacing(.5,0)}}),{name:"CheckResultStateBox"}),M={[i.Passed]:"Check passed",[i.Failed]:"Check did not pass",[i.Warning]:"Check produced warning(s)",[i.NotReported]:"Check not reported",[i.NotApplicable]:"Check not applicable",[i.Exempt]:"Exempt from check",[i.Error]:"Check encountered an error."},O={[i.Passed]:"passed",[i.Failed]:"failed",[i.Warning]:"warning",[i.NotReported]:"notReported",[i.NotApplicable]:"notApplicable",[i.Exempt]:"exempt",[i.Error]:"error"},W=({name:l,state:r,details:t,templateRef:m})=>{const a=L(),[C,c]=R(!1),[p,y]=R("notes"),N=w(A).getOptionalStringArray("soundcheck.flags")?.includes("enable-fix-me"),u=t&&(t.ruleResult||t.applicabilityResult),b=()=>{c(!0)},B=()=>{c(!1)},S=(z,f)=>{f!==null&&y(f)},g=t?.notes?P.safeParse(t.notes):void 0,h=g?.success?g.data.data:void 0;return o(E,{variant:"outlined",className:`${a.root} ${a[O[r]]}`,children:[o("div",{className:a.header,children:[o("div",{className:a.iconContainer,children:[e($,{className:a.icon,result:r}),e(F,{variant:"subtitle1",children:M[r]})]}),u&&o(j,{value:p,exclusive:!0,onChange:S,className:a.toggleButtonGroup,children:[e(x,{value:"notes",className:a.toggleButton,children:"Notes"}),e(x,{value:"details",className:a.toggleButton,children:"Details"})]})]}),p==="notes"&&o(n,{children:[t&&t.exemption&&o(n,{children:[e(s,{className:a.divider}),e(k,{justification:t.exemption,type:"exemption"})]}),t&&t.manualResult&&o(n,{children:[e(s,{className:a.divider}),e(k,{justification:t.manualResult,type:"manual"})]}),h&&o(d,{style:{maxHeight:"35vh",overflowY:"auto"},children:[e(s,{className:a.divider}),e(d,{marginTop:1.5,children:e(I,{className:a.markdownContent,content:h})})]}),N&&r===i.Failed&&m&&o(d,{display:"flex",flexDirection:"column",alignItems:"flex-end",mt:2,width:"100%",children:[e(T,{color:"primary",variant:"contained",onClick:b,children:"Fix"}),e(G,{title:`Fix ${l}`,open:C,setOpen:c,onClose:B,templateRef:m})]})]}),p==="details"&&e(n,{children:u&&o(n,{children:[e(s,{className:a.divider}),o(J,{children:[t.applicabilityResult&&e(v,{ruleResult:t.applicabilityResult,title:"Applicability Rule Evaluation"}),t.ruleResult&&e(v,{ruleResult:t.ruleResult,title:"Check Rule Evaluation"})]})]})})]})};export{W as ResultStateBox};
2
2
  //# sourceMappingURL=ResultStateBox.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as t}from"react/jsx-runtime";import{Content as s}from"@backstage/core-components";import{FormProvider as d}from"react-hook-form";import"../../contexts/TrackFormContext.esm.js";import{useCheckFormContext as h}from"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"react";import"../../contexts/UserProvider.esm.js";import{formStyles as f}from"../../utils/formStyles.esm.js";import"@material-ui/core";import"@material-ui/icons/Search";import"../SoundcheckDialog/SoundcheckDialog.esm.js";import"../FactExplorer/FactExplorer.esm.js";import{FactExplorerProvider as S}from"../FactExplorer/FactExplorerContext.esm.js";import{FormStepper as u}from"../FormStepper/FormStepper.esm.js";import"./FormFields/CheckNameInput/CheckNameInput.esm.js";import"./FormFields/PassFailMessageInput/PassFailMessageInput.esm.js";import"../FormMarkdownInput/FormMarkdownInput.esm.js";import"./utils/checkFormUtils.esm.js";import"./FormFields/TeamDetailsInput/TeamDetailsInput.esm.js";import"./FormFields/RuleInput/AddMenuButton.esm.js";import"./FormFields/RuleInput/RuleInputBox.esm.js";import"./FormFields/RuleInput/Expressions/ExpressionBox.esm.js";import"./FormFields/RuleInput/Expressions/ExpressionTypeToggle.esm.js";import"@material-ui/icons/Close";import"@material-ui/icons/Delete";import"@material-ui/icons/List";import"@spotify/backstage-plugin-soundcheck-common";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import"./FormFields/RuleInput/Conditions/styles.esm.js";import"@backstage/catalog-model";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import"./FormFields/RuleInput/Conditions/ValueListInput.esm.js";import"./FormFields/RuleInput/Conditions/ConditionList.esm.js";import{ScheduleSection as C}from"./FormFields/CheckScheduleSection/ScheduleSection.esm.js";import"./FormFields/CheckPathResolverInput.esm.js";import{CheckDetailsStep as b}from"./Steps/CheckDetailsStep.esm.js";import{CheckRulesStep as k}from"./Steps/CheckRulesStep.esm.js";import{CheckApplicabilityStep as g}from"./Steps/CheckApplicabilityStep.esm.js";import{CheckReviewStep as v}from"./Steps/CheckReviewStep.esm.js";import"./types/ExpressionType.esm.js";import{CheckStepNameMapping as y}from"./types/CheckFormTypes.esm.js";import"../Frequency/types.esm.js";import"../Frequency/util.esm.js";import"../Frequency/FrequencyComponent.esm.js";import"./types/Path.esm.js";import{useCheckForm as F}from"./useCheckForm.esm.js";const R=({onSave:p,onClose:r})=>{const{isLoading:n,isReadOnly:e,selectedItem:l}=h(),{formMethods:o,onSubmit:i}=F(p),c=f(),m=[{label:"Enter check details",content:()=>t(b,{})},{label:"Add rules",content:()=>t(k,{})},{label:"Choose the affected entities (Optional)",content:()=>t(g,{})},{label:"Review and test (Optional)",content:()=>t(v,{})},{label:"Set the check schedule (Not Recommended)",content:()=>t(C,{control:o.control,disabled:e})}],a=l?[...Array(m.length).keys()]:[0];return t(s,{className:c.formWrapper,children:t(d,{...o,children:t(S,{children:t("form",{onSubmit:o.handleSubmit(i),children:t(u,{onClose:()=>r?r():void 0,handleSubmit:o.handleSubmit,trigger:o.trigger,onSubmit:i,initialVisited:a,stepNameMap:y,steps:m,isLoading:n,isReadOnly:e,saveButtonText:"Save Check"})})})})})};export{R as CheckForm};
1
+ import{jsx as t}from"react/jsx-runtime";import{Content as d}from"@backstage/core-components";import{FormProvider as h}from"react-hook-form";import"../../contexts/TrackFormContext.esm.js";import{useCheckFormContext as f}from"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"react";import"../../contexts/UserProvider.esm.js";import{useFeatureFlag as S}from"../../hooks/useFeatureFlag.esm.js";import{formStyles as u}from"../../utils/formStyles.esm.js";import"@material-ui/core";import"@material-ui/icons/Search";import"../SoundcheckDialog/SoundcheckDialog.esm.js";import"../FactExplorer/FactExplorer.esm.js";import{FactExplorerProvider as b}from"../FactExplorer/FactExplorerContext.esm.js";import{FormStepper as C}from"../FormStepper/FormStepper.esm.js";import"./FormFields/CheckNameInput/CheckNameInput.esm.js";import"./FormFields/PassFailMessageInput/PassFailMessageInput.esm.js";import"../FormMarkdownInput/FormMarkdownInput.esm.js";import"./utils/checkFormUtils.esm.js";import"./FormFields/TeamDetailsInput/TeamDetailsInput.esm.js";import"./FormFields/RuleInput/AddMenuButton.esm.js";import"./FormFields/RuleInput/RuleInputBox.esm.js";import"./FormFields/RuleInput/Expressions/ExpressionBox.esm.js";import"./FormFields/RuleInput/Expressions/ExpressionTypeToggle.esm.js";import"@material-ui/icons/Close";import"@material-ui/icons/Delete";import"@material-ui/icons/List";import"@spotify/backstage-plugin-soundcheck-common";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import"./FormFields/RuleInput/Conditions/styles.esm.js";import"@backstage/catalog-model";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import"./FormFields/RuleInput/Conditions/ValueListInput.esm.js";import"./FormFields/RuleInput/Conditions/ConditionList.esm.js";import{ScheduleSection as k}from"./FormFields/CheckScheduleSection/ScheduleSection.esm.js";import"./FormFields/CheckPathResolverInput.esm.js";import{CheckDetailsStep as g}from"./Steps/CheckDetailsStep.esm.js";import{CheckRulesStep as v}from"./Steps/CheckRulesStep.esm.js";import{CheckApplicabilityStep as F}from"./Steps/CheckApplicabilityStep.esm.js";import{CheckReviewStep as y}from"./Steps/CheckReviewStep.esm.js";import"./types/ExpressionType.esm.js";import{CheckStepNameMapping as R}from"./types/CheckFormTypes.esm.js";import"../Frequency/types.esm.js";import"../Frequency/util.esm.js";import"../Frequency/FrequencyComponent.esm.js";import"./types/Path.esm.js";import{useCheckForm as x}from"./useCheckForm.esm.js";const N=({onSave:n,onClose:r})=>{const{isLoading:l,isReadOnly:e,selectedItem:a}=f(),{formMethods:o,onSubmit:i}=x(n),m=u(),c=S("backstage-ui"),p=[{label:"Enter check details",content:()=>t(g,{})},{label:"Add rules",content:()=>t(v,{})},{label:"Choose the affected entities (Optional)",content:()=>t(F,{})},{label:"Review and test (Optional)",content:()=>t(y,{})},{label:"Set the check schedule (Not Recommended)",content:()=>t(k,{control:o.control,disabled:e})}],s=a?[...Array(p.length).keys()]:[0];return t(d,{className:c?m.formWrapperBUI:m.formWrapper,children:t(h,{...o,children:t(b,{children:t("form",{onSubmit:o.handleSubmit(i),children:t(C,{onClose:()=>r?r():void 0,handleSubmit:o.handleSubmit,trigger:o.trigger,onSubmit:i,initialVisited:s,stepNameMap:R,steps:p,isLoading:l,isReadOnly:e,saveButtonText:"Save Check"})})})})})};export{N as CheckForm};
2
2
  //# sourceMappingURL=CheckForm.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as i,jsx as e}from"react/jsx-runtime";import{makeStyles as l}from"@material-ui/core";import{useMemo as m}from"react";import{useGetPathResolvers as n}from"../../../hooks/useGetPathResolvers.esm.js";import{FormControlledAutocomplete as c}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"../../FormControlledAutocomplete/ControlledAutocomplete.esm.js";import{FormFieldLabel as d}from"../../FormFieldLabel/FormFieldLabel.esm.js";const h=l(t=>({wrapper:{marginBottom:t.spacing(2)}})),u=({control:t})=>{const p=h(),{data:r,isLoading:s}=n(),a=m(()=>r?.map(o=>o.id),[r]);return i("div",{className:p.wrapper,children:[e(d,{title:"Path resolver (Optional)",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/checks#path-resolvers"}),e("div",{children:e(c,{control:t,name:"rulesStep.pathResolver",disabled:s,options:a??[],freeSolo:!1,disableClearable:!0,width:250,getOptionLabel:o=>o==="jsonpath"?"jsonpath (default)":o,getOptionValue:o=>o&&o==="jsonpath (default)"?"jsonpath":o??"",placeholder:"path resolver"})})]})};export{u as CheckPathResolverInput};
1
+ import{jsxs as i,jsx as r}from"react/jsx-runtime";import{makeStyles as n}from"@material-ui/core";import{useMemo as m}from"react";import{useGetPathResolvers as c}from"../../../hooks/useGetPathResolvers.esm.js";import{FormControlledAutocomplete as d}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"../../FormControlledAutocomplete/ControlledAutocomplete.esm.js";import{FormFieldLabel as h}from"../../FormFieldLabel/FormFieldLabel.esm.js";const u=n(e=>({wrapper:{marginBottom:e.spacing(2)}})),f=({control:e})=>{const p=u(),{data:l,isLoading:a}=c(),s=m(()=>l?.map(({id:o})=>({label:o,value:o})),[l]);return i("div",{className:p.wrapper,children:[r(h,{title:"Path resolver (Optional)",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/checks#path-resolvers"}),r("div",{children:r(d,{control:e,name:"rulesStep.pathResolver",disabled:a,options:s??[],freeSolo:!1,disableClearable:!0,width:250,getOptionLabel:o=>{let t="";return typeof o=="string"?t=o:t=o.label??"",t==="jsonpath"?"jsonpath (default)":t},getOptionValue:o=>{let t="";return typeof o=="string"?t=o:t=o?.value??"",t==="jsonpath (default)"?"jsonpath":t},placeholder:"path resolver"})})]})};export{f as CheckPathResolverInput};
2
2
  //# sourceMappingURL=CheckPathResolverInput.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as i,jsx as e}from"react/jsx-runtime";import{makeStyles as m,Box as a,ButtonGroup as g,Button as b,Menu as h,MenuItem as l}from"@material-ui/core";import x from"@material-ui/icons/ArrowDropDown";import{useState as C}from"react";const A=m(d=>({label:{padding:d.spacing(0,1.5,0,0)},icon:{borderLeft:`1px solid ${d.palette.divider}`,display:"flex",alignItems:"center",padding:0},menu:{margin:0,backgroundColor:d.palette.background.paper},button:{padding:d.spacing(.5,1.5),paddingRight:d.spacing(.5)}})),f=({onAddCondition:d,onAddExpression:p})=>{const n=A(),[r,s]=C(null),o=!!r,c=u=>{s(u.currentTarget)},t=()=>{s(null)};return i(a,{children:[e(g,{color:"primary",children:i(b,{className:n.button,"data-testid":"add-button",id:"add-button","aria-controls":o?"add-menu":void 0,"aria-haspopup":"true","aria-expanded":o?"true":void 0,onClick:c,size:"medium",children:[e(a,{className:n.label,children:"Add"}),e(a,{className:n.icon,children:e(x,{})})]})}),i(h,{id:"add-menu",anchorEl:r,open:o,onClose:t,classes:{paper:n.menu},MenuListProps:{"aria-labelledby":"add-button"},children:[e(l,{"data-testid":"add-condition",onClick:()=>{d(),t()},children:"Add Condition"}),e(l,{"data-testid":"add-expression",onClick:()=>{p(),t()},children:"Add Expression"})]})]})};export{f as AddMenuButton};
1
+ import{jsxs as i,jsx as e}from"react/jsx-runtime";import{makeStyles as m,Box as a,ButtonGroup as g,Button as b,Menu as h,MenuItem as l}from"@material-ui/core";import x from"@material-ui/icons/ArrowDropDown";import{useState as A}from"react";const C=m(d=>({label:{padding:d.spacing(0,1.5,0,0)},icon:{borderLeft:`1px solid ${d.palette.divider}`,display:"flex",alignItems:"center",padding:0},menu:{margin:0,backgroundColor:d.palette.background.paper},button:{padding:d.spacing(.5,1.5),paddingRight:d.spacing(.5)}})),f=({onAddCondition:d,onAddExpression:p})=>{const n=C(),[r,s]=A(null),o=!!r,c=u=>{s(u.currentTarget)},t=()=>{s(null)};return i(a,{children:[e(g,{color:"primary",children:i(b,{className:n.button,"data-testid":"add-button",id:"add-button","aria-controls":o?"add-menu":void 0,"aria-haspopup":"true","aria-expanded":o?"true":void 0,onClick:c,size:"medium",children:[e(a,{className:n.label,children:"Add"}),e(a,{className:n.icon,children:e(x,{})})]})}),i(h,{id:"add-menu",anchorEl:r,open:o,onClose:t,classes:{paper:n.menu},MenuListProps:{"aria-labelledby":"add-button"},children:[e(l,{"data-testid":"add-condition",onClick:()=>{d(),t()},children:"Add Condition"}),e(l,{"data-testid":"add-expression",onClick:()=>{p(),t()},children:"Add Expression"})]})]})};export{f as AddMenuButton};
2
2
  //# sourceMappingURL=AddMenuButton.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as n,jsx as a,Fragment as D}from"react/jsx-runtime";import{Box as r,FormLabel as c,TextField as T,IconButton as A}from"@material-ui/core";import k from"@material-ui/icons/Close";import E from"@material-ui/icons/Delete";import G from"@material-ui/icons/List";import{asArray as M}from"@spotify/backstage-plugin-soundcheck-common";import{useMemo as R,useCallback as b}from"react";import{useFormContext as W,Controller as z}from"react-hook-form";import{useOperators as H}from"../../../../../hooks/operators/useOperators.esm.js";import{FactExplorerDialogButton as F}from"../../../../FactExplorer/FactExplorerDialog.esm.js";import"../../../../FactExplorer/FactExplorerContext.esm.js";import{FormControlledAutocomplete as v}from"../../../../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import{FactValueDisplay as q}from"./FactValueDisplay.esm.js";import{useRuleConditionStyles as J}from"./styles.esm.js";import{useRuleOptions as K}from"./useRuleOptions.esm.js";import{ValueListInputDialogButton as O}from"./ValueListInput.esm.js";const Q=({name:l,handleDelete:w,disabled:d,disableDelete:y})=>{const t=J(),{control:p,setValue:s,watch:m,clearErrors:h}=W(),{data:N,isLoading:g}=H(),S=m("rulesStep.pathResolver")==="jsonpath",f=R(()=>N?.map(e=>({value:e.name,label:e.title})).sort((e,o)=>e.label.localeCompare(o.label))??[],[N]),j=R(()=>f.map(e=>e.value),[f]),{pathOptions:B,factRefOptions:u,isLoading:L}=K(l,p),I=R(()=>u?.map(e=>e.value)??[],[u]),P=b(({factRef:e,path:o})=>{s(`${l}.factRef`,e),s(`${l}.path`,o),h()},[h,l,s]),V=b(({factRef:e,path:o})=>{s(`${l}.value`,{factRef:e,path:o}),h()},[h,l,s]),C=b(e=>{s(`${l}.value`,e.length>0?e:""),h()},[h,l,s]),i=m(`${l}.value`),$=b(()=>{s(`${l}.value`,"")},[l,s]);return n(r,{className:t.container,children:[a(r,{className:t.connector}),n(r,{paddingTop:2,paddingLeft:2,paddingRight:2,paddingBottom:2,width:"100%",className:t.innerContainer,children:[n(r,{className:t.inputsContainer,children:[u&&n(r,{children:[a(c,{className:t.formLabel,children:"Fact"}),a(v,{name:`${l}.factRef`,control:p,placeholder:"Fact",options:I,getOptionLabel:e=>u?.find(o=>e===o.value)?.label??e,getOptionValue:e=>u?.find(o=>e===o.label)?.value??e??"",disabled:d||L,width:428})]}),n(r,{flexGrow:1,children:[a(c,{className:t.formLabel,children:"Path"}),a(v,{name:`${l}.path`,placeholder:"Path",control:p,disabled:d||L,options:S?B:[],fullWidth:!0})]}),n(r,{children:[a(c,{className:t.formLabel,style:{visibility:"hidden"},children:"Explore"}),a(r,{width:150,children:a(F,{factRef:m(`${l}.factRef`),path:m(`${l}.path`),onSave:P,pathResolver:m("rulesStep.pathResolver"),className:t.exploreButton,hideIcon:!0})})]})]}),n(r,{className:t.inputsContainer,children:[f&&n(D,{children:[n(r,{children:[a(c,{className:t.formLabel,children:"Prefix (Optional)"}),a(v,{name:`${l}.operatorPrefix`,control:p,placeholder:"Prefix",options:["all","any","none"],disabled:g||d,width:120})]}),n(r,{children:[a(c,{className:t.formLabel,children:"Operator"}),a(v,{name:`${l}.operator`,control:p,placeholder:"Operator",options:j,disabled:g||d,getOptionLabel:e=>(o=>f?.find(x=>o===x.value)?.label??o??"")(e),getOptionValue:e=>(o=>f?.find(x=>o===x.label)?.value??o??"")(e),width:300})]})]}),n(r,{flexGrow:1,children:[a(c,{className:t.formLabel,children:"Value"}),typeof i=="object"&&!Array.isArray(i)?a(q,{value:i,handleClear:$}):a(z,{name:`${l}.value`,control:p,defaultValue:"",render:({field:e,fieldState:o})=>a(T,{...e,variant:"outlined",placeholder:"Enter a value",FormHelperTextProps:{className:t.helperText},error:o.invalid,helperText:o.error?o.error.message:null,margin:"dense",disabled:d||typeof i=="object",className:t.noMargin,fullWidth:!0,InputProps:{endAdornment:a(A,{onClick:$,size:"small",children:a(k,{})}),startAdornment:Array.isArray(i)?a(O,{values:i,onSave:C,iconButton:a(G,{})}):null}})})]}),n(r,{children:[a(c,{className:t.formLabel,style:{visibility:"hidden"},children:"Alternative Input"}),n(r,{display:"flex",width:150,children:[a(F,{factRef:typeof i=="object"?i?.factRef:void 0,path:typeof i=="object"?i?.path:void 0,onSave:V,pathResolver:m("rulesStep.pathResolver"),className:t.exploreButton,text:"Fact",hideIcon:!0}),a(O,{values:typeof i=="object"&&!Array.isArray(i)?void 0:M(i),onSave:C})]})]})]})]}),a(A,{onClick:w,className:t.deleteButton,"data-testid":`${l}-delete-button`,disabled:d||y,hidden:d||y,style:{visibility:d||y?"hidden":void 0},children:a(E,{className:t.deleteIcon})})]})};export{Q as RuleConditionInput};
1
+ import{jsxs as n,jsx as a,Fragment as G}from"react/jsx-runtime";import{Box as o,FormLabel as p,TextField as H,IconButton as S}from"@material-ui/core";import M from"@material-ui/icons/Close";import W from"@material-ui/icons/Delete";import z from"@material-ui/icons/List";import{asArray as q}from"@spotify/backstage-plugin-soundcheck-common";import{useMemo as u,useCallback as b}from"react";import{useFormContext as J,Controller as K}from"react-hook-form";import{useOperators as Q}from"../../../../../hooks/operators/useOperators.esm.js";import{FactExplorerDialogButton as V}from"../../../../FactExplorer/FactExplorerDialog.esm.js";import"../../../../FactExplorer/FactExplorerContext.esm.js";import{FormControlledAutocomplete as v}from"../../../../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import{FactValueDisplay as U}from"./FactValueDisplay.esm.js";import{useRuleConditionStyles as X}from"./styles.esm.js";import{useRuleOptions as Y}from"./useRuleOptions.esm.js";import{ValueListInputDialogButton as j}from"./ValueListInput.esm.js";const Z=({name:l,handleDelete:w,disabled:d,disableDelete:y})=>{const t=X(),{control:c,setValue:s,watch:m,clearErrors:f}=J(),{data:L,isLoading:O}=Q(),B=m("rulesStep.pathResolver")==="jsonpath",h=u(()=>L?.map(e=>({value:e.name,label:e.title})).sort((e,r)=>e.label.localeCompare(r.label))??[],[L]),I=u(()=>h.map(({value:e})=>({label:e,value:e})),[h]),{pathOptions:$,factRefOptions:g,isLoading:C}=Y(l,c),P=u(()=>g?.map(({value:e})=>({label:e,value:e}))??[],[g]),T=u(()=>$?.map(e=>({label:e,value:e}))??[],[$]),D=["all","any","none"].map(e=>({label:e,value:e})),E=b(({factRef:e,path:r})=>{s(`${l}.factRef`,e),s(`${l}.path`,r),f()},[f,l,s]),k=b(({factRef:e,path:r})=>{s(`${l}.value`,{factRef:e,path:r}),f()},[f,l,s]),F=b(e=>{s(`${l}.value`,e.length>0?e:""),f()},[f,l,s]),i=m(`${l}.value`),A=b(()=>{s(`${l}.value`,"")},[l,s]),x=e=>typeof e=="string"?e:e.label??"",R=e=>typeof e=="string"?e:e?.value??"";return n(o,{className:t.container,children:[a(o,{className:t.connector}),n(o,{paddingTop:2,paddingLeft:2,paddingRight:2,paddingBottom:2,width:"100%",className:t.innerContainer,children:[n(o,{className:t.inputsContainer,children:[g&&n(o,{children:[a(p,{className:t.formLabel,children:"Fact"}),a(v,{name:`${l}.factRef`,control:c,placeholder:"Fact",options:P,getOptionLabel:x,getOptionValue:R,disabled:d||C,width:428})]}),n(o,{flexGrow:1,children:[a(p,{className:t.formLabel,children:"Path"}),a(v,{name:`${l}.path`,placeholder:"Path",control:c,disabled:d||C,options:B?T:[],fullWidth:!0,getOptionLabel:x,getOptionValue:R})]}),n(o,{children:[a(p,{className:t.formLabel,style:{visibility:"hidden"},children:"Explore"}),a(o,{width:150,children:a(V,{factRef:m(`${l}.factRef`),path:m(`${l}.path`),onSave:E,pathResolver:m("rulesStep.pathResolver"),className:t.exploreButton,hideIcon:!0})})]})]}),n(o,{className:t.inputsContainer,children:[h&&n(G,{children:[n(o,{children:[a(p,{className:t.formLabel,children:"Prefix (Optional)"}),a(v,{name:`${l}.operatorPrefix`,control:c,placeholder:"Prefix",options:D,disabled:O||d,width:120,getOptionLabel:x,getOptionValue:R})]}),n(o,{children:[a(p,{className:t.formLabel,children:"Operator"}),a(v,{name:`${l}.operator`,control:c,placeholder:"Operator",options:I,disabled:O||d,getOptionLabel:e=>(r=>h?.find(N=>r===N.value)?.label??r??"")(typeof e=="string"?e:e.label),getOptionValue:e=>(r=>h?.find(N=>r===N.label)?.value??r??"")(typeof e=="string"?e:e?.label??""),width:300})]})]}),n(o,{flexGrow:1,children:[a(p,{className:t.formLabel,children:"Value"}),typeof i=="object"&&!Array.isArray(i)?a(U,{value:i,handleClear:A}):a(K,{name:`${l}.value`,control:c,defaultValue:"",render:({field:e,fieldState:r})=>a(H,{...e,variant:"outlined",placeholder:"Enter a value",FormHelperTextProps:{className:t.helperText},error:r.invalid,helperText:r.error?r.error.message:null,margin:"dense",disabled:d||typeof i=="object",className:t.noMargin,fullWidth:!0,InputProps:{endAdornment:a(S,{onClick:A,size:"small",children:a(M,{})}),startAdornment:Array.isArray(i)?a(j,{values:i,onSave:F,iconButton:a(z,{})}):null}})})]}),n(o,{children:[a(p,{className:t.formLabel,style:{visibility:"hidden"},children:"Alternative Input"}),n(o,{display:"flex",width:150,children:[a(V,{factRef:typeof i=="object"?i?.factRef:void 0,path:typeof i=="object"?i?.path:void 0,onSave:k,pathResolver:m("rulesStep.pathResolver"),className:t.exploreButton,text:"Fact",hideIcon:!0}),a(j,{values:typeof i=="object"&&!Array.isArray(i)?void 0:q(i),onSave:F})]})]})]})]}),a(S,{onClick:w,className:t.deleteButton,"data-testid":`${l}-delete-button`,disabled:d||y,hidden:d||y,style:{visibility:d||y?"hidden":void 0},children:a(W,{className:t.deleteIcon})})]})};export{Z as RuleConditionInput};
2
2
  //# sourceMappingURL=RuleConditionInput.esm.js.map
@@ -1,2 +1,2 @@
1
- import{parseFactRef as p,stringifyFactRef as $}from"@spotify/backstage-plugin-soundcheck-common";import{useState as b,useEffect as y,useMemo as f}from"react";import{useWatch as C}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"../../../../../hooks/useSoundcheckAlert.esm.js";import{useGetAllTracks as F}from"../../../../../hooks/tracks/useGetAllTracks.esm.js";import"../../../../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{useGetCollectors as G}from"../../../../../hooks/collectors/useGetCollectors.esm.js";import{useGetFactSchema as O}from"../../../../../hooks/collectors/useGetFactSchema.esm.js";import{generateJsonPaths as L}from"../../../utils/checkFormUtils.esm.js";const M=(o,d)=>{const{data:m,isLoading:h}=G(),{data:s}=F({}),r=C({control:d,name:`${o}.factRef`}),[i,g]=b(()=>l(r));y(()=>{g(l(r))},[r]);const{data:n}=O(i?.source,i?.name),k=f(()=>n?L(n.schema):[],[n]),R=f(()=>m?.flatMap(e=>e.factNames.map(a=>{const t=e.id==="soundcheck"?{source:e.id,scope:"default",name:a}:p(a,{defaultSource:e.id,defaultScope:"default"});let u=t.name;if(t.source==="soundcheck"){const c=s?.edges.find(S=>S.node.id===t.name.replace("track/",""))?.node;u=c?`${c.type==="campaign"?"Campaign: ":"Track: "}${c.name}`:t.name}return{label:`${t.source} - ${u}`,value:$(t)}}))?.sort((e,a)=>e.label.localeCompare(a.label))??[],[m,s]);return{isLoading:h,pathOptions:k,factRefOptions:R}};function l(o){if(o)try{return p(o,{defaultSource:"unknown",defaultScope:"default"})}catch{return null}return null}export{M as useRuleOptions};
1
+ import{parseFactRef as p,stringifyFactRef as $}from"@spotify/backstage-plugin-soundcheck-common";import{useState as b,useEffect as y,useMemo as f}from"react";import{useWatch as C}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"../../../../../hooks/useSoundcheckAlert.esm.js";import{useGetAllTracks as F}from"../../../../../hooks/tracks/useGetAllTracks.esm.js";import"../../../../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import{useGetCollectors as G}from"../../../../../hooks/collectors/useGetCollectors.esm.js";import{useGetFactSchema as O}from"../../../../../hooks/collectors/useGetFactSchema.esm.js";import{generateJsonPaths as L}from"../../../utils/checkFormUtils.esm.js";const M=(o,d)=>{const{data:m,isLoading:h}=G(),{data:i}=F({}),r=C({control:d,name:`${o}.factRef`}),[s,g]=b(()=>l(r));y(()=>{g(l(r))},[r]);const{data:n}=O(s?.source,s?.name),k=f(()=>n?L(n.schema):[],[n]),R=f(()=>m?.flatMap(e=>e.factNames.map(a=>{const t=e.id==="soundcheck"?{source:e.id,scope:"default",name:a}:p(a,{defaultSource:e.id,defaultScope:"default"});let u=t.name;if(t.source==="soundcheck"){const c=i?.edges.find(S=>S.node.id===t.name.replace("track/",""))?.node;u=c?`${c.type==="campaign"?"Campaign: ":"Track: "}${c.name}`:t.name}return{label:`${t.source} - ${u}`,value:$(t)}}))?.sort((e,a)=>e.label.localeCompare(a.label))??[],[m,i]);return{isLoading:h,pathOptions:k,factRefOptions:R}};function l(o){if(o)try{return p(o,{defaultSource:"unknown",defaultScope:"default"})}catch{return null}return null}export{M as useRuleOptions};
2
2
  //# sourceMappingURL=useRuleOptions.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as n,jsx as o}from"react/jsx-runtime";import{Box as r,Grid as p,Button as y}from"@material-ui/core";import{makeStyles as B}from"@material-ui/core/styles";import{useFormContext as b,useFieldArray as x}from"react-hook-form";import{ExpressionType as N}from"../../types/ExpressionType.esm.js";import"../../../Frequency/types.esm.js";import"../../../Frequency/util.esm.js";import"../../../Frequency/FrequencyComponent.esm.js";import"../../types/Path.esm.js";import{AddMenuButton as $}from"./AddMenuButton.esm.js";import"@material-ui/icons/Close";import"@material-ui/icons/Delete";import"@material-ui/icons/List";import"@spotify/backstage-plugin-soundcheck-common";import"react";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../../api.esm.js";import"@material-ui/icons/Search";import"../../../SoundcheckDialog/SoundcheckDialog.esm.js";import"../../../FactExplorer/FactExplorer.esm.js";import"../../../FactExplorer/FactExplorerContext.esm.js";import"../../../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import"./Conditions/styles.esm.js";import"@backstage/catalog-model";import"../../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../../../hooks/useSoundcheckAlert.esm.js";import"../../../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import"../../utils/checkFormUtils.esm.js";import"./Conditions/ValueListInput.esm.js";import{ConditionList as A}from"./Conditions/ConditionList.esm.js";import{ExpressionBox as E}from"./Expressions/ExpressionBox.esm.js";import{ExpressionTypeToggle as P}from"./Expressions/ExpressionTypeToggle.esm.js";const L=B(e=>({root:{padding:0},inner:{marginLeft:e.spacing(2),paddingBottom:e.spacing(2),borderLeft:`1px solid ${e.palette.border}`,display:"flex",flexDirection:"row",gap:0},connector:{borderBottom:`1px solid ${e.palette.border}`,padding:e.spacing(0),width:"15px",height:"20px"},noPadding:{padding:0},marginBottom:{marginBottom:e.spacing(1)},empty:{border:`1px solid ${e.palette.error.main}`,padding:e.spacing(2),margin:e.spacing(2,0)},gap:{borderLeft:`1px solid ${e.palette.border}`,marginLeft:e.spacing(2)},removeButton:{padding:e.spacing(.5,1.5),color:e.palette.text.primary}})),T=({name:e,depth:m,disabled:t,removeExpression:s})=>{const i=L(),{control:l}=b(),{fields:a,append:f,remove:h}=x({control:l,name:`${e}.expressions`}),{fields:d,append:u,remove:v}=x({control:l,name:`${e}.conditions`});return n(r,{className:m>0?i.inner:i.root,children:[m>0&&o(r,{className:i.connector}),n(p,{container:!0,spacing:0,direction:"column",className:i.noPadding,children:[o(p,{item:!0,className:i.noPadding,children:o(P,{disabled:t,name:`${e}.expressionType`})}),n(p,{item:!0,container:!0,spacing:0,direction:"column",className:i.noPadding,children:[d.length===0&&!a.length&&o(r,{className:i.empty,children:"Add an expression or condition."}),d.length===0&&a.length>0&&o(r,{padding:1,className:i.gap}),o(A,{remove:v,conditions:d,disabled:t,name:e}),a.map((c,g)=>o(E,{exists:!!c,name:`${e}.expressions[${g}]`,depth:m,disabled:t,removeExpression:()=>h(g)},c.id))]}),!t&&o(p,{item:!0,className:i.noPadding,children:n(r,{display:"flex",gridGap:8,children:[o($,{onAddCondition:()=>u({factRef:"",path:"",operator:"",value:""}),onAddExpression:()=>f({expressionType:N.AllOf,expressions:void 0,conditions:[{factRef:"",path:"",operator:"",value:""}]})}),s&&o(y,{className:i.removeButton,variant:"text",onClick:s,children:"Remove"})]})})]})]})};export{T as RuleInputBox};
1
+ import{jsxs as n,jsx as o}from"react/jsx-runtime";import{Box as r,Grid as p,Button as y}from"@material-ui/core";import{makeStyles as B}from"@material-ui/core/styles";import{useFormContext as b,useFieldArray as x}from"react-hook-form";import{ExpressionType as N}from"../../types/ExpressionType.esm.js";import"../../../Frequency/types.esm.js";import"../../../Frequency/util.esm.js";import"../../../Frequency/FrequencyComponent.esm.js";import"../../types/Path.esm.js";import{AddMenuButton as $}from"./AddMenuButton.esm.js";import"@material-ui/icons/Close";import"@material-ui/icons/Delete";import"@material-ui/icons/List";import"@spotify/backstage-plugin-soundcheck-common";import"react";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../../api.esm.js";import"@material-ui/icons/Search";import"../../../SoundcheckDialog/SoundcheckDialog.esm.js";import"../../../FactExplorer/FactExplorer.esm.js";import"../../../FactExplorer/FactExplorerContext.esm.js";import"../../../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import"./Conditions/styles.esm.js";import"@backstage/catalog-model";import"../../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../../../hooks/useSoundcheckAlert.esm.js";import"../../../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import"../../utils/checkFormUtils.esm.js";import"./Conditions/ValueListInput.esm.js";import{ConditionList as A}from"./Conditions/ConditionList.esm.js";import{ExpressionBox as E}from"./Expressions/ExpressionBox.esm.js";import{ExpressionTypeToggle as P}from"./Expressions/ExpressionTypeToggle.esm.js";const L=B(e=>({root:{padding:0},inner:{marginLeft:e.spacing(2),paddingBottom:e.spacing(2),borderLeft:`1px solid ${e.palette.border}`,display:"flex",flexDirection:"row",gap:0},connector:{borderBottom:`1px solid ${e.palette.border}`,padding:e.spacing(0),width:"15px",height:"20px"},noPadding:{padding:0},marginBottom:{marginBottom:e.spacing(1)},empty:{border:`1px solid ${e.palette.error.main}`,padding:e.spacing(2),margin:e.spacing(2,0)},gap:{borderLeft:`1px solid ${e.palette.border}`,marginLeft:e.spacing(2)},removeButton:{padding:e.spacing(.5,1.5),color:e.palette.text.primary}})),T=({name:e,depth:m,disabled:t,removeExpression:s})=>{const i=L(),{control:l}=b(),{fields:a,append:f,remove:h}=x({control:l,name:`${e}.expressions`}),{fields:d,append:u,remove:v}=x({control:l,name:`${e}.conditions`});return n(r,{className:m>0?i.inner:i.root,children:[m>0&&o(r,{className:i.connector}),n(p,{container:!0,spacing:0,direction:"column",className:i.noPadding,children:[o(p,{item:!0,className:i.noPadding,children:o(P,{disabled:t,name:`${e}.expressionType`})}),n(p,{item:!0,container:!0,spacing:0,direction:"column",className:i.noPadding,children:[d.length===0&&!a.length&&o(r,{className:i.empty,children:"Add an expression or condition."}),d.length===0&&a.length>0&&o(r,{padding:1,className:i.gap}),o(A,{remove:v,conditions:d,disabled:t,name:e}),a.map((c,g)=>o(E,{exists:!!c,name:`${e}.expressions[${g}]`,depth:m,disabled:t,removeExpression:()=>h(g)},c.id))]}),!t&&o(p,{item:!0,className:i.noPadding,children:n(r,{display:"flex",gridGap:8,children:[o($,{onAddCondition:()=>u({factRef:"",path:"",operator:"",value:""}),onAddExpression:()=>f({expressionType:N.AllOf,expressions:void 0,conditions:[{factRef:"",path:"",operator:"",value:""}]})}),s&&o(y,{className:i.removeButton,variant:"text",onClick:s,children:"Remove"})]})})]})]})};export{T as RuleInputBox};
2
2
  //# sourceMappingURL=RuleInputBox.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as y,jsx as i}from"react/jsx-runtime";import{parseEntityRef as h}from"@backstage/catalog-model";import{Typography as b}from"@material-ui/core";import{makeStyles as g}from"@material-ui/core/styles";import{uniqBy as x}from"lodash";import{useFormContext as E}from"react-hook-form";import"../../../../contexts/TrackFormContext.esm.js";import"../../../../contexts/CheckFormContext.esm.js";import"../../../../contexts/CampaignFormContext.esm.js";import"react";import{useLoggedInUser as w}from"../../../../contexts/UserProvider.esm.js";import{useGroupOptions as L}from"../../../../hooks/groups/useGroupOptions.esm.js";import{FormControlledAutocomplete as S}from"../../../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import"@material-ui/icons/CheckBox";import"@material-ui/icons/CheckBoxOutlineBlank";import"@material-ui/lab";import"../../../ListboxVirtualized/ListboxVirtualized.esm.js";import{useLabelOptions as C}from"../../../FormControlledAutocomplete/useLabelOptions.esm.js";import"../../../FormControlledAutocomplete/ControlledAutocomplete.esm.js";import{CHECK_FIELDS as R}from"../../utils/checkFormUtils.esm.js";const T=g(m=>({container:{display:"flex",flexDirection:"column",gap:m.spacing(1)}})),D=({control:m,disabled:a,error:n})=>{const l=T(),{options:p,isLoading:s}=L();let e=x(p.map(r=>({value:r.ref,label:r.name})),"value");const{user:c,userEntityRef:t}=w();t&&(e=[{value:t,label:c?.metadata?.name??t},...e]);const{watch:d}=E(),o=d("detailsStep.ownerEntityRef");o&&t!==o&&!e.some(r=>r.value===o)&&(e=[{value:o,label:h(o).name},...e]);const f=C(e),{owner:{name:u,selectLabel:v}}=R.details;return y("div",{className:l.container,children:[i("div",{children:i(b,{variant:"subtitle2",children:u})}),i("div",{children:i(S,{freeSolo:!1,name:"detailsStep.ownerEntityRef",control:m,placeholder:v,width:250,helperText:n?.message??void 0,disabled:a||s,...f})})]})};export{D as TeamDetailsInput};
1
+ import{jsxs as y,jsx as i}from"react/jsx-runtime";import{parseEntityRef as h}from"@backstage/catalog-model";import{Typography as b}from"@material-ui/core";import{makeStyles as g}from"@material-ui/core/styles";import{uniqBy as x}from"lodash";import{useFormContext as E}from"react-hook-form";import"../../../../contexts/TrackFormContext.esm.js";import"../../../../contexts/CheckFormContext.esm.js";import"../../../../contexts/CampaignFormContext.esm.js";import"react";import{useLoggedInUser as w}from"../../../../contexts/UserProvider.esm.js";import{useGroupOptions as L}from"../../../../hooks/groups/useGroupOptions.esm.js";import{FormControlledAutocomplete as S}from"../../../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import"@material-ui/icons/CheckBox";import"@material-ui/icons/CheckBoxOutlineBlank";import"@material-ui/lab";import"../../../ListboxVirtualized/ListboxVirtualized.esm.js";import{useLabelValueOptions as C}from"../../../FormControlledAutocomplete/useLabelValueOptions.esm.js";import"../../../FormControlledAutocomplete/ControlledAutocomplete.esm.js";import{CHECK_FIELDS as R}from"../../utils/checkFormUtils.esm.js";const T=g(m=>({container:{display:"flex",flexDirection:"column",gap:m.spacing(1)}})),D=({control:m,disabled:n,error:p})=>{const l=T(),{options:s,isLoading:d}=L();let e=x(s.map(t=>({value:t.ref,label:t.name,description:t.description})),"value");const{user:a,userEntityRef:r}=w();r&&(e=[{value:r,label:a?.metadata?.name??r,description:a?.metadata.description},...e]);const{watch:c}=E(),o=c("detailsStep.ownerEntityRef");o&&r!==o&&!e.some(t=>t.value===o)&&(e=[{value:o,label:h(o).name,description:void 0},...e]);const f=C(e),{owner:{name:u,selectLabel:v}}=R.details;return y("div",{className:l.container,children:[i("div",{children:i(b,{variant:"subtitle2",children:u})}),i("div",{children:i(S,{freeSolo:!1,name:"detailsStep.ownerEntityRef",control:m,placeholder:v,width:250,helperText:p?.message??void 0,disabled:n||d,...f})})]})};export{D as TeamDetailsInput};
2
2
  //# sourceMappingURL=TeamDetailsInput.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as i,jsx as e}from"react/jsx-runtime";import{FormControlLabel as y,Switch as b,Typography as m}from"@material-ui/core";import{makeStyles as x}from"@material-ui/core/styles";import{useFormContext as g}from"react-hook-form";import"../../../contexts/TrackFormContext.esm.js";import{useCheckFormContext as k}from"../../../contexts/CheckFormContext.esm.js";import"../../../contexts/CampaignFormContext.esm.js";import"react";import"../../../contexts/UserProvider.esm.js";import{FormFieldLabel as s}from"../../FormFieldLabel/FormFieldLabel.esm.js";import{FormFilterSection as F}from"../../FormFilterSection/FormFilterSection.esm.js";import{FormMarkdownInput as v}from"../../FormMarkdownInput/FormMarkdownInput.esm.js";import"../FormFields/CheckNameInput/CheckNameInput.esm.js";import"../FormFields/PassFailMessageInput/PassFailMessageInput.esm.js";import{CHECK_FIELDS as C}from"../utils/checkFormUtils.esm.js";import"../FormFields/TeamDetailsInput/TeamDetailsInput.esm.js";import"../FormFields/RuleInput/AddMenuButton.esm.js";import{RuleInputBox as S}from"../FormFields/RuleInput/RuleInputBox.esm.js";import"../FormFields/RuleInput/Expressions/ExpressionBox.esm.js";import"../FormFields/RuleInput/Expressions/ExpressionTypeToggle.esm.js";import"@material-ui/icons/Close";import"@material-ui/icons/Delete";import"@material-ui/icons/List";import"@spotify/backstage-plugin-soundcheck-common";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../api.esm.js";import"@material-ui/icons/Search";import"../../SoundcheckDialog/SoundcheckDialog.esm.js";import"../../FactExplorer/FactExplorer.esm.js";import"../../FactExplorer/FactExplorerContext.esm.js";import"../../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import"../FormFields/RuleInput/Conditions/styles.esm.js";import"@backstage/catalog-model";import"../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../../hooks/useSoundcheckAlert.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import"../FormFields/RuleInput/Conditions/ValueListInput.esm.js";import"../FormFields/RuleInput/Conditions/ConditionList.esm.js";import"../FormFields/CheckScheduleSection/ScheduleSection.esm.js";import"../FormFields/CheckPathResolverInput.esm.js";import{ExpressionType as N}from"../types/ExpressionType.esm.js";import"../../Frequency/types.esm.js";import"../../Frequency/util.esm.js";import"../../Frequency/FrequencyComponent.esm.js";import"../types/Path.esm.js";const w=x(t=>({container:{display:"flex",flexDirection:"column",gap:t.spacing(2)},innerContainer:{display:"flex",flexDirection:"column"}})),E=()=>{const t=w(),{isLoading:r,isReadOnly:o}=k(),{control:d,watch:c,setValue:a}=g(),l="filtersStep.applicabilityExpressions",n="filtersStep.notApplicableMessage",h=c("detailsStep.type"),p=c(l),f=u=>{u.target.checked?(a(l,{expressionType:N.AllOf,conditions:[{factRef:"",path:"",operator:"",operatorPrefix:"",value:""}]}),a(n,"")):(a(l,void 0),a(n,void 0))};return i("div",{className:t.container,children:[e(F,{name:"filtersStep.filter",keyValueFilterName:"filtersStep.keyValueFilter",disabled:r||o,description:C.filter.description,excludeFilterName:"filtersStep.excludeFilter",excludeKeyValueFilterName:"filtersStep.excludeKeyValueFilter"}),h!=="manual"&&i("div",{className:t.container,children:[i("div",{className:t.innerContainer,children:[e(y,{label:e(s,{title:"Applicability rule (Optional)",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/checks/#applicability-rule"}),disabled:r||o,control:e(b,{checked:!!p?.conditions||!!p?.expressions,onChange:f})}),e(m,{variant:"caption",children:"The check applies to all entities that match the catalog filters above. If you want to add an extra fact-based applicability rule, turn on the toggle and define the fact-based rule. With this rule enabled, the check will only apply to entities that match both the catalog filters and the fact-based rule. The fact-based rule is re-checked every time the check runs."})]}),(!!p?.conditions||!!p?.expressions)&&i("div",{className:t.container,children:[e("div",{className:t.innerContainer,children:e(S,{disabled:r||o,name:l,depth:0})}),i("div",{className:t.innerContainer,children:[e(s,{title:"Not applicable message (Optional)"}),e(m,{variant:"caption",children:"Add a message explaining why the check doesn't apply if an entity fails the fact-based rule."}),e(v,{name:n,control:d,placeholder:"Enter not applicable message...",disabled:r||o})]})]})]})]})};export{E as CheckApplicabilityStep};
1
+ import{jsxs as i,jsx as e}from"react/jsx-runtime";import{FormControlLabel as y,Switch as b,Typography as m}from"@material-ui/core";import{makeStyles as x}from"@material-ui/core/styles";import{useFormContext as g}from"react-hook-form";import"../../../contexts/TrackFormContext.esm.js";import{useCheckFormContext as k}from"../../../contexts/CheckFormContext.esm.js";import"../../../contexts/CampaignFormContext.esm.js";import"react";import"../../../contexts/UserProvider.esm.js";import{FormFieldLabel as s}from"../../FormFieldLabel/FormFieldLabel.esm.js";import{FormFilterSection as F}from"../../FormFilterSection/FormFilterSection.esm.js";import{FormMarkdownInput as v}from"../../FormMarkdownInput/FormMarkdownInput.esm.js";import"../FormFields/CheckNameInput/CheckNameInput.esm.js";import"../FormFields/PassFailMessageInput/PassFailMessageInput.esm.js";import{CHECK_FIELDS as C}from"../utils/checkFormUtils.esm.js";import"../FormFields/TeamDetailsInput/TeamDetailsInput.esm.js";import"../FormFields/RuleInput/AddMenuButton.esm.js";import{RuleInputBox as S}from"../FormFields/RuleInput/RuleInputBox.esm.js";import"../FormFields/RuleInput/Expressions/ExpressionBox.esm.js";import"../FormFields/RuleInput/Expressions/ExpressionTypeToggle.esm.js";import"@material-ui/icons/Close";import"@material-ui/icons/Delete";import"@material-ui/icons/List";import"@spotify/backstage-plugin-soundcheck-common";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../api.esm.js";import"@material-ui/icons/Search";import"../../SoundcheckDialog/SoundcheckDialog.esm.js";import"../../FactExplorer/FactExplorer.esm.js";import"../../FactExplorer/FactExplorerContext.esm.js";import"../../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import"../FormFields/RuleInput/Conditions/styles.esm.js";import"@backstage/catalog-model";import"../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../../hooks/useSoundcheckAlert.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import"../FormFields/RuleInput/Conditions/ValueListInput.esm.js";import"../FormFields/RuleInput/Conditions/ConditionList.esm.js";import"../FormFields/CheckScheduleSection/ScheduleSection.esm.js";import"../FormFields/CheckPathResolverInput.esm.js";import{ExpressionType as N}from"../types/ExpressionType.esm.js";import"../../Frequency/types.esm.js";import"../../Frequency/util.esm.js";import"../../Frequency/FrequencyComponent.esm.js";import"../types/Path.esm.js";const w=x(t=>({container:{display:"flex",flexDirection:"column",gap:t.spacing(2)},innerContainer:{display:"flex",flexDirection:"column"}})),E=()=>{const t=w(),{isLoading:r,isReadOnly:o}=k(),{control:d,watch:c,setValue:a}=g(),l="filtersStep.applicabilityExpressions",n="filtersStep.notApplicableMessage",h=c("detailsStep.type"),p=c(l),f=u=>{u.target.checked?(a(l,{expressionType:N.AllOf,conditions:[{factRef:"",path:"",operator:"",operatorPrefix:"",value:""}]}),a(n,"")):(a(l,void 0),a(n,void 0))};return i("div",{className:t.container,children:[e(F,{name:"filtersStep.filter",keyValueFilterName:"filtersStep.keyValueFilter",disabled:r||o,description:C.filter.description,excludeFilterName:"filtersStep.excludeFilter",excludeKeyValueFilterName:"filtersStep.excludeKeyValueFilter"}),h!=="manual"&&i("div",{className:t.container,children:[i("div",{className:t.innerContainer,children:[e(y,{label:e(s,{title:"Applicability rule (Optional)",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/checks/#applicability-rule"}),disabled:r||o,control:e(b,{checked:!!p?.conditions||!!p?.expressions,onChange:f})}),e(m,{variant:"caption",children:"The check applies to all entities that match the catalog filters above. If you want to add an extra fact-based applicability rule, turn on the toggle and define the fact-based rule. With this rule enabled, the check will only apply to entities that match both the catalog filters and the fact-based rule. The fact-based rule is re-checked every time the check runs."})]}),(!!p?.conditions||!!p?.expressions)&&i("div",{className:t.container,children:[e("div",{className:t.innerContainer,children:e(S,{disabled:r||o,name:l,depth:0})}),i("div",{className:t.innerContainer,children:[e(s,{title:"Not applicable message (Optional)"}),e(m,{variant:"caption",children:"Add a message explaining why the check doesn't apply if an entity fails the fact-based rule."}),e(v,{name:n,control:d,placeholder:"Enter not applicable message...",disabled:r||o})]})]})]})]})};export{E as CheckApplicabilityStep};
2
2
  //# sourceMappingURL=CheckApplicabilityStep.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as e,jsx as t}from"react/jsx-runtime";import{makeStyles as n}from"@material-ui/core/styles";import{useFormContext as s}from"react-hook-form";import"../../../contexts/TrackFormContext.esm.js";import{useCheckFormContext as a}from"../../../contexts/CheckFormContext.esm.js";import"../../../contexts/CampaignFormContext.esm.js";import"react";import"../../../contexts/UserProvider.esm.js";import{CheckNameInput as c}from"../FormFields/CheckNameInput/CheckNameInput.esm.js";import"../FormFields/PassFailMessageInput/PassFailMessageInput.esm.js";import{CheckDescriptionInput as l}from"../FormFields/CheckDescriptionInput/CheckDescriptionInput.esm.js";import{TeamDetailsInput as d}from"../FormFields/TeamDetailsInput/TeamDetailsInput.esm.js";import"../FormFields/RuleInput/AddMenuButton.esm.js";import"../FormFields/RuleInput/RuleInputBox.esm.js";import"../FormFields/RuleInput/Expressions/ExpressionBox.esm.js";import"../FormFields/RuleInput/Expressions/ExpressionTypeToggle.esm.js";import"@material-ui/core";import"@material-ui/icons/Close";import"@material-ui/icons/Delete";import"@material-ui/icons/List";import"@spotify/backstage-plugin-soundcheck-common";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../api.esm.js";import"@material-ui/icons/Search";import"../../SoundcheckDialog/SoundcheckDialog.esm.js";import"../../FactExplorer/FactExplorer.esm.js";import"../../FactExplorer/FactExplorerContext.esm.js";import"../../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import"../FormFields/RuleInput/Conditions/styles.esm.js";import"@backstage/catalog-model";import"../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../../hooks/useSoundcheckAlert.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import"../utils/checkFormUtils.esm.js";import"../FormFields/RuleInput/Conditions/ValueListInput.esm.js";import"../FormFields/RuleInput/Conditions/ConditionList.esm.js";import"../FormFields/CheckScheduleSection/ScheduleSection.esm.js";import"../FormFields/CheckPathResolverInput.esm.js";import{CheckTypeInput as f}from"../FormFields/CheckTypeInput/CheckTypeInput.esm.js";const u=n(i=>({container:{display:"flex",flexDirection:"column",gap:i.spacing(1)}})),x=()=>{const i=u(),{isLoading:m,isReadOnly:o}=a(),{control:r,formState:{errors:p}}=s();return e("div",{className:i.container,children:[t(c,{control:r,error:p?.detailsStep?.name,isLoading:m,disabled:o}),t(l,{control:r,error:p?.detailsStep?.description,isLoading:m,disabled:o}),t(d,{control:r,disabled:o,error:p?.detailsStep?.ownerEntityRef}),t(f,{control:r,disabled:o,isLoading:m})]})};export{x as CheckDetailsStep};
1
+ import{jsxs as e,jsx as t}from"react/jsx-runtime";import{makeStyles as n}from"@material-ui/core/styles";import{useFormContext as s}from"react-hook-form";import"../../../contexts/TrackFormContext.esm.js";import{useCheckFormContext as a}from"../../../contexts/CheckFormContext.esm.js";import"../../../contexts/CampaignFormContext.esm.js";import"react";import"../../../contexts/UserProvider.esm.js";import{CheckNameInput as c}from"../FormFields/CheckNameInput/CheckNameInput.esm.js";import"../FormFields/PassFailMessageInput/PassFailMessageInput.esm.js";import{CheckDescriptionInput as l}from"../FormFields/CheckDescriptionInput/CheckDescriptionInput.esm.js";import{TeamDetailsInput as d}from"../FormFields/TeamDetailsInput/TeamDetailsInput.esm.js";import"../FormFields/RuleInput/AddMenuButton.esm.js";import"../FormFields/RuleInput/RuleInputBox.esm.js";import"../FormFields/RuleInput/Expressions/ExpressionBox.esm.js";import"../FormFields/RuleInput/Expressions/ExpressionTypeToggle.esm.js";import"@material-ui/core";import"@material-ui/icons/Close";import"@material-ui/icons/Delete";import"@material-ui/icons/List";import"@spotify/backstage-plugin-soundcheck-common";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../api.esm.js";import"@material-ui/icons/Search";import"../../SoundcheckDialog/SoundcheckDialog.esm.js";import"../../FactExplorer/FactExplorer.esm.js";import"../../FactExplorer/FactExplorerContext.esm.js";import"../../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import"../FormFields/RuleInput/Conditions/styles.esm.js";import"@backstage/catalog-model";import"../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../../hooks/useSoundcheckAlert.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import"../utils/checkFormUtils.esm.js";import"../FormFields/RuleInput/Conditions/ValueListInput.esm.js";import"../FormFields/RuleInput/Conditions/ConditionList.esm.js";import"../FormFields/CheckScheduleSection/ScheduleSection.esm.js";import"../FormFields/CheckPathResolverInput.esm.js";import{CheckTypeInput as f}from"../FormFields/CheckTypeInput/CheckTypeInput.esm.js";const u=n(i=>({container:{display:"flex",flexDirection:"column",gap:i.spacing(1)}})),x=()=>{const i=u(),{isLoading:m,isReadOnly:o}=a(),{control:r,formState:{errors:p}}=s();return e("div",{className:i.container,children:[t(c,{control:r,error:p?.detailsStep?.name,isLoading:m,disabled:o}),t(l,{control:r,error:p?.detailsStep?.description,isLoading:m,disabled:o}),t(d,{control:r,disabled:o,error:p?.detailsStep?.ownerEntityRef}),t(f,{control:r,disabled:o,isLoading:m})]})};export{x as CheckDetailsStep};
2
2
  //# sourceMappingURL=CheckDetailsStep.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as r,Fragment as h,jsx as e}from"react/jsx-runtime";import{Typography as t,FormControlLabel as u,Checkbox as f}from"@material-ui/core";import{makeStyles as C}from"@material-ui/core/styles";import{useFormContext as s,Controller as v}from"react-hook-form";import"../../../contexts/TrackFormContext.esm.js";import{useCheckFormContext as g}from"../../../contexts/CheckFormContext.esm.js";import"../../../contexts/CampaignFormContext.esm.js";import"react";import"../../../contexts/UserProvider.esm.js";import{FormFieldLabel as k}from"../../FormFieldLabel/FormFieldLabel.esm.js";import"../FormFields/CheckNameInput/CheckNameInput.esm.js";import{PassFailMessageInput as x}from"../FormFields/PassFailMessageInput/PassFailMessageInput.esm.js";import"../../FormMarkdownInput/FormMarkdownInput.esm.js";import{CHECK_FIELDS as y}from"../utils/checkFormUtils.esm.js";import"../FormFields/TeamDetailsInput/TeamDetailsInput.esm.js";import"../FormFields/RuleInput/AddMenuButton.esm.js";import{RuleInputBox as b}from"../FormFields/RuleInput/RuleInputBox.esm.js";import"../FormFields/RuleInput/Expressions/ExpressionBox.esm.js";import"../FormFields/RuleInput/Expressions/ExpressionTypeToggle.esm.js";import"@material-ui/icons/Close";import"@material-ui/icons/Delete";import"@material-ui/icons/List";import"@spotify/backstage-plugin-soundcheck-common";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../api.esm.js";import"@material-ui/icons/Search";import"../../SoundcheckDialog/SoundcheckDialog.esm.js";import"../../FactExplorer/FactExplorer.esm.js";import"../../FactExplorer/FactExplorerContext.esm.js";import"../../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import"../FormFields/RuleInput/Conditions/styles.esm.js";import"@backstage/catalog-model";import"../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../../hooks/useSoundcheckAlert.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import"../FormFields/RuleInput/Conditions/ValueListInput.esm.js";import"../FormFields/RuleInput/Conditions/ConditionList.esm.js";import"../FormFields/CheckScheduleSection/ScheduleSection.esm.js";import{CheckPathResolverInput as F}from"../FormFields/CheckPathResolverInput.esm.js";const S=C(o=>({container:{display:"flex",flexDirection:"column",gap:o.spacing(2)},innerContainer:{display:"flex",flexDirection:"column"}})),L=()=>{const o=S(),{isLoading:c,isReadOnly:n}=g(),{control:m}=s(),{rules:p,warnings:a}=y.rulesStep,{watch:d}=s(),i=d("detailsStep.type");return r(h,{children:[i==="manual"&&e("div",{className:o.container,children:e("div",{className:o.innerContainer,children:e(t,{children:"Rules do not apply to manual checks. These types of checks are meant to have their state manually set by users, not executed by Soundcheck."})})}),(i==="default"||i===void 0||i===null)&&r("div",{className:o.container,children:[r("div",{className:o.innerContainer,children:[e(F,{control:m}),r("div",{children:[e(k,{title:p.name,docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/checks#rules"}),e(t,{variant:"caption",children:p.description})]}),e(b,{disabled:n,name:"rulesStep.expressions",depth:0})]}),e(x,{control:m,isLoading:c,disabled:n}),e("div",{className:o.container,children:r("div",{className:o.innerContainer,children:[r("div",{children:[e(t,{variant:"subtitle2",children:a.name}),e(t,{variant:"caption",children:a.description})]}),e(v,{name:"rulesStep.warning",control:m,render:({field:l})=>e(u,{disabled:n,control:e(f,{checked:l.value,onChange:l.onChange}),label:a.label})})]})})]})]})};export{L as CheckRulesStep};
1
+ import{jsxs as r,Fragment as h,jsx as e}from"react/jsx-runtime";import{Typography as t,FormControlLabel as u,Checkbox as f}from"@material-ui/core";import{makeStyles as C}from"@material-ui/core/styles";import{useFormContext as s,Controller as v}from"react-hook-form";import"../../../contexts/TrackFormContext.esm.js";import{useCheckFormContext as g}from"../../../contexts/CheckFormContext.esm.js";import"../../../contexts/CampaignFormContext.esm.js";import"react";import"../../../contexts/UserProvider.esm.js";import{FormFieldLabel as k}from"../../FormFieldLabel/FormFieldLabel.esm.js";import"../FormFields/CheckNameInput/CheckNameInput.esm.js";import{PassFailMessageInput as x}from"../FormFields/PassFailMessageInput/PassFailMessageInput.esm.js";import"../../FormMarkdownInput/FormMarkdownInput.esm.js";import{CHECK_FIELDS as y}from"../utils/checkFormUtils.esm.js";import"../FormFields/TeamDetailsInput/TeamDetailsInput.esm.js";import"../FormFields/RuleInput/AddMenuButton.esm.js";import{RuleInputBox as b}from"../FormFields/RuleInput/RuleInputBox.esm.js";import"../FormFields/RuleInput/Expressions/ExpressionBox.esm.js";import"../FormFields/RuleInput/Expressions/ExpressionTypeToggle.esm.js";import"@material-ui/icons/Close";import"@material-ui/icons/Delete";import"@material-ui/icons/List";import"@spotify/backstage-plugin-soundcheck-common";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../api.esm.js";import"@material-ui/icons/Search";import"../../SoundcheckDialog/SoundcheckDialog.esm.js";import"../../FactExplorer/FactExplorer.esm.js";import"../../FactExplorer/FactExplorerContext.esm.js";import"../../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import"../FormFields/RuleInput/Conditions/styles.esm.js";import"@backstage/catalog-model";import"../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../../hooks/useSoundcheckAlert.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import"../FormFields/RuleInput/Conditions/ValueListInput.esm.js";import"../FormFields/RuleInput/Conditions/ConditionList.esm.js";import"../FormFields/CheckScheduleSection/ScheduleSection.esm.js";import{CheckPathResolverInput as F}from"../FormFields/CheckPathResolverInput.esm.js";const S=C(o=>({container:{display:"flex",flexDirection:"column",gap:o.spacing(2)},innerContainer:{display:"flex",flexDirection:"column"}})),L=()=>{const o=S(),{isLoading:c,isReadOnly:n}=g(),{control:m}=s(),{rules:p,warnings:a}=y.rulesStep,{watch:d}=s(),i=d("detailsStep.type");return r(h,{children:[i==="manual"&&e("div",{className:o.container,children:e("div",{className:o.innerContainer,children:e(t,{children:"Rules do not apply to manual checks. These types of checks are meant to have their state manually set by users, not executed by Soundcheck."})})}),(i==="default"||i===void 0||i===null)&&r("div",{className:o.container,children:[r("div",{className:o.innerContainer,children:[e(F,{control:m}),r("div",{children:[e(k,{title:p.name,docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/checks#rules"}),e(t,{variant:"caption",children:p.description})]}),e(b,{disabled:n,name:"rulesStep.expressions",depth:0})]}),e(x,{control:m,isLoading:c,disabled:n}),e("div",{className:o.container,children:r("div",{className:o.innerContainer,children:[r("div",{children:[e(t,{variant:"subtitle2",children:a.name}),e(t,{variant:"caption",children:a.description})]}),e(v,{name:"rulesStep.warning",control:m,render:({field:l})=>e(u,{disabled:n,control:e(f,{checked:l.value,onChange:l.onChange}),label:a.label})})]})})]})]})};export{L as CheckRulesStep};
2
2
  //# sourceMappingURL=CheckRulesStep.esm.js.map
@@ -1,2 +1,2 @@
1
- import{zodResolver as a}from"@hookform/resolvers/zod";import{useForm as u}from"react-hook-form";import"../../contexts/TrackFormContext.esm.js";import{useCheckFormContext as c}from"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"react/jsx-runtime";import"react";import{useLoggedInUser as l}from"../../contexts/UserProvider.esm.js";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as f}from"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{mapCheckerToFormValues as d,mapToCheckerInput as h,DEFAULT_FORM_VALUES as C}from"./utils/checkFormUtils.esm.js";import{manualCheckFormSchema as S,defaultCheckFormSchema as k}from"./utils/validation.esm.js";const F=p=>{const{selectedItem:r}=c(),{userEntityRef:m}=l();let e=C;r&&(e=d(r)),m&&!e.detailsStep.ownerEntityRef&&(e.detailsStep.ownerEntityRef=m);const s=u({defaultValues:e,mode:"onChange",resolver:(o,t,i)=>o.detailsStep.type==="manual"?a(S)(o,t,i):a(k)(o,t,i)}),{showModal:n}=f();return{formMethods:s,onSubmit:async o=>{if(!await n({title:"Save Check",message:`Are you sure you want to save check: ${o.detailsStep.name}?`,error:!1}))return;const t=h(o,r);p(t)}}};export{F as useCheckForm};
1
+ import{zodResolver as p}from"@hookform/resolvers/zod";import{useForm as u}from"react-hook-form";import"../../contexts/TrackFormContext.esm.js";import{useCheckFormContext as c}from"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"react/jsx-runtime";import"react";import{useLoggedInUser as l}from"../../contexts/UserProvider.esm.js";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as f}from"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import{mapCheckerToFormValues as d,mapToCheckerInput as h,DEFAULT_FORM_VALUES as C}from"./utils/checkFormUtils.esm.js";import{manualCheckFormSchema as S,defaultCheckFormSchema as k}from"./utils/validation.esm.js";const F=a=>{const{selectedItem:r}=c(),{userEntityRef:m}=l();let e=C;r&&(e=d(r)),m&&!e.detailsStep.ownerEntityRef&&(e.detailsStep.ownerEntityRef=m);const s=u({defaultValues:e,mode:"onChange",resolver:(o,t,i)=>o.detailsStep.type==="manual"?p(S)(o,t,i):p(k)(o,t,i)}),{showModal:n}=f();return{formMethods:s,onSubmit:async o=>{if(!await n({title:"Save Check",message:`Are you sure you want to save check: ${o.detailsStep.name}?`,error:!1}))return;const t=h(o,r);a(t)}}};export{F as useCheckForm};
2
2
  //# sourceMappingURL=useCheckForm.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as n,Fragment as c,jsx as i}from"react/jsx-runtime";import{usePermission as a}from"@backstage/plugin-permission-react";import{soundcheckCheckUpdatePermission as d}from"@spotify/backstage-plugin-soundcheck-common";import{useParams as h}from"react-router-dom";import"../../contexts/TrackFormContext.esm.js";import{CheckFormProvider as f}from"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"react";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{useCheck as k}from"../../hooks/checks/useCheck.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{LoadingIndicator as g}from"../LoadingIndicator/LoadingIndicator.esm.js";import{PageWarningMessage as u}from"../PageWarningMessage/PageWarningMessage.esm.js";import{CheckEditView as l}from"./CheckEditView.esm.js";const C=()=>{const{checkId:t}=h(),{data:o,isLoading:e}=k(t),{loading:p,allowed:s}=a({permission:d,resourceRef:t}),r=p||e,m=s&&o?.isEditable;return n(c,{children:[i(u,{entityName:"check",entityId:t,showCannotEdit:!r&&!m,showNotFound:!r&&!o}),r&&i(g,{}),i(f,{children:!r&&!!o&&m&&i(l,{check:o})})]})};export{C as CheckEditPage};
1
+ import{jsxs as h,Fragment as f,jsx as o}from"react/jsx-runtime";import{useRouteRef as m}from"@backstage/core-plugin-api";import{usePermission as k}from"@backstage/plugin-permission-react";import{Box as u,HeaderPage as l}from"@backstage/ui";import{soundcheckCheckUpdatePermission as g}from"@spotify/backstage-plugin-soundcheck-common";import{useParams as C}from"react-router-dom";import"../../contexts/TrackFormContext.esm.js";import{CheckFormProvider as P}from"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"react";import"../../contexts/UserProvider.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{useCheck as b}from"../../hooks/checks/useCheck.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-use/lib/useLocalStorage";import{useFeatureFlag as R}from"../../hooks/useFeatureFlag.esm.js";import{checkDetailsRouteRef as E,checksPageRouteRef as F}from"../../routes.esm.js";import{DocLinkButton as w}from"../DocLinkButton/DocLinkButton.esm.js";import{LoadingIndicator as x}from"../LoadingIndicator/LoadingIndicator.esm.js";import{PageWarningMessage as I}from"../PageWarningMessage/PageWarningMessage.esm.js";import{CheckEditView as y}from"./CheckEditView.esm.js";const D=()=>{const{checkId:e}=C(),{data:r,isLoading:c}=b(e),{loading:s,allowed:a}=k({permission:g,resourceRef:e}),t=s||c,i=a&&r?.isEditable,p=R("backstage-ui"),n=m(E),d=m(F);return h(f,{children:[p&&o(u,{children:o(l,{title:`Edit ${r?.name??e??"Check"}`,breadcrumbs:[{label:"All Checks",href:d()},{label:"Details",href:n({checkId:e??""})}],customActions:o(w,{href:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/checks/"})})}),o(I,{entityName:"check",entityId:e,showCannotEdit:!t&&!i,showNotFound:!t&&!r}),t&&o(x,{}),o(P,{children:!t&&!!r&&i&&o(y,{check:r})})]})};export{D as CheckEditPage};
2
2
  //# sourceMappingURL=CheckEditPage.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as d}from"react/jsx-runtime";import{useEffect as i}from"react";import"../../contexts/TrackFormContext.esm.js";import{useCheckFormContext as m}from"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as u}from"../../hooks/useNavigateBack.esm.js";import{useUpdateCheck as f}from"../../hooks/checks/useUpdateCheck.esm.js";import{checksPageRouteRef as h}from"../../routes.esm.js";import{CheckForm as g}from"../CheckForm/CheckForm.esm.js";import"../CheckForm/Steps/CheckDetailsStep.esm.js";import"../CheckForm/Steps/CheckRulesStep.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as l}from"../SoundcheckHeader/useHeader.esm.js";const C=({check:t})=>{const{selectedItem:c,setSelectedItem:o}=m(),{setIsLoading:e}=m(),{mutateAsync:s,isLoading:r}=f();i(()=>{e(r)},[e,r]),i(()=>{o(t)},[t,o]);const[p,a]=u(h),n=async k=>{await s(k,{onSuccess:a})};return l({title:"Edit a Check",description:"Make changes to your check\u2019s facts, rules and other details.",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/checks"}),c&&d(g,{onClose:p,onSave:n})};export{C as CheckEditView};
1
+ import{jsx as d}from"react/jsx-runtime";import{useEffect as i}from"react";import"../../contexts/TrackFormContext.esm.js";import{useCheckFormContext as m}from"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as u}from"../../hooks/useNavigateBack.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import{useUpdateCheck as f}from"../../hooks/checks/useUpdateCheck.esm.js";import{checksPageRouteRef as h}from"../../routes.esm.js";import{CheckForm as g}from"../CheckForm/CheckForm.esm.js";import"../CheckForm/Steps/CheckDetailsStep.esm.js";import"../CheckForm/Steps/CheckRulesStep.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as l}from"../SoundcheckHeader/useHeader.esm.js";const C=({check:t})=>{const{selectedItem:c,setSelectedItem:o}=m(),{setIsLoading:e}=m(),{mutateAsync:s,isLoading:r}=f();i(()=>{e(r)},[e,r]),i(()=>{o(t)},[t,o]);const[p,a]=u(h),n=async k=>{await s(k,{onSuccess:a})};return l({title:"Edit a Check",description:"Make changes to your check\u2019s facts, rules and other details.",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/checks"}),c&&d(g,{onClose:p,onSave:n})};export{C as CheckEditView};
2
2
  //# sourceMappingURL=CheckEditView.esm.js.map