@spotify/backstage-plugin-soundcheck 0.22.4 → 0.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (227) hide show
  1. package/CHANGELOG.md +47 -0
  2. package/dist/alpha/CampaignsRouterPage.esm.js +2 -0
  3. package/dist/alpha/ChecksRouterPage.esm.js +2 -0
  4. package/dist/alpha/IntegrationsRouterPage.esm.js +2 -0
  5. package/dist/alpha/OverviewPageWrapper.esm.js +2 -0
  6. package/dist/alpha/TracksRouterPage.esm.js +2 -0
  7. package/dist/alpha/plugin.esm.js +1 -1
  8. package/dist/alpha.d.ts +155 -59
  9. package/dist/blueprints/IntegrationPageBlueprint.esm.js +1 -1
  10. package/dist/components/Badge/Badge.esm.js +2 -0
  11. package/dist/components/Badges/LevelBadge.esm.js +1 -1
  12. package/dist/components/Badges/StatusBadge.esm.js +1 -1
  13. package/dist/components/CampaignCreatePage/CampaignCreatePage.esm.js +1 -1
  14. package/dist/components/CampaignForm/hooks/useCampaignForm.esm.js +1 -1
  15. package/dist/components/CampaignForm/utils/validation.esm.js +1 -1
  16. package/dist/components/CampaignPage/CampaignPageBUI.esm.js +1 -1
  17. package/dist/components/CampaignPage/CampaignStatusBarBUI.esm.js +1 -1
  18. package/dist/components/CampaignPage/CampaignTechInsightsExplorerPage.esm.js +1 -1
  19. package/dist/components/CampaignsPage/CampaignListPageBUI.esm.js +1 -1
  20. package/dist/components/CampaignsPage/CampaignsPage.esm.js +1 -1
  21. package/dist/components/CampaignsPage/EditCampaignView.esm.js +1 -1
  22. package/dist/components/Cards/CheckStatusCard/CheckStatusCard.esm.js +1 -1
  23. package/dist/components/CertificationAccordion/CertificationAccordion.esm.js +1 -1
  24. package/dist/components/CertificationSidebar/CertificationSidebar.esm.js +1 -1
  25. package/dist/components/CertificationSidebar/Check.esm.js +1 -1
  26. package/dist/components/CertificationSidebar/ExemptionJustificationDialog.esm.js +1 -1
  27. package/dist/components/CertificationsPage/CertificationTab.esm.js +1 -1
  28. package/dist/components/CertificationsPage/CertificationTabs.esm.js +1 -1
  29. package/dist/components/CertificationsPage/CertificationsPage.esm.js +1 -1
  30. package/dist/components/CertificationsPage/Playlist/PlaylistContext.esm.js +1 -1
  31. package/dist/components/CheckCreatePage/CheckCreatePage.esm.js +1 -1
  32. package/dist/components/CheckDetails/CheckDetails.esm.js +1 -1
  33. package/dist/components/CheckDetails/CheckPullRequest.esm.js +1 -1
  34. package/dist/components/CheckDetails/FixMeDialog.esm.js +1 -1
  35. package/dist/components/CheckForm/CheckForm.esm.js +1 -1
  36. package/dist/components/CheckForm/FormFields/RuleInput/Conditions/RuleConditionInput.esm.js +1 -1
  37. package/dist/components/CheckForm/FormFields/RuleInput/Conditions/useRuleOptions.esm.js +1 -1
  38. package/dist/components/CheckForm/FormFields/RuleInput/RuleInputBox.esm.js +1 -1
  39. package/dist/components/CheckForm/Steps/CheckApplicabilityStep.esm.js +1 -1
  40. package/dist/components/CheckForm/Steps/CheckDetailsStep.esm.js +1 -1
  41. package/dist/components/CheckForm/Steps/CheckRulesStep.esm.js +1 -1
  42. package/dist/components/CheckForm/useCheckForm.esm.js +1 -1
  43. package/dist/components/CheckForm/utils/validation.esm.js +1 -1
  44. package/dist/components/CheckIcon/CheckIcon.esm.js +1 -1
  45. package/dist/components/CheckPage/CheckEditPage.esm.js +1 -1
  46. package/dist/components/CheckPage/CheckEditView.esm.js +1 -1
  47. package/dist/components/CheckPage/CheckEntitiesTable/CheckEntitiesTableBUI.esm.js +1 -1
  48. package/dist/components/CheckPage/CheckPageBUI.esm.js +1 -1
  49. package/dist/components/CheckPage/ExemptionsTableBUI.esm.js +1 -1
  50. package/dist/components/CheckPage/utils.esm.js +1 -1
  51. package/dist/components/CheckSelection/CheckSelection.esm.js +1 -1
  52. package/dist/components/CheckStatusBar/CheckStatusBarBUI.esm.js +1 -1
  53. package/dist/components/CheckTemplatesPage/CheckTemplatesPageBUI.esm.js +1 -1
  54. package/dist/components/ChecksPage/ChecksListPageBUI.esm.js +1 -1
  55. package/dist/components/ChecksTable/ChecksTable.esm.js +1 -1
  56. package/dist/components/ChecksTable/FixMeCell.esm.js +1 -1
  57. package/dist/components/ChecksTable/PullRequestsTable.esm.js +1 -1
  58. package/dist/components/ChecksTable/utils.esm.js +2 -0
  59. package/dist/components/CollectorPage/CollectorDetailsPageBUI.esm.js +1 -1
  60. package/dist/components/CollectorPage/CollectorPage.esm.js +1 -1
  61. package/dist/components/CollectorPage/CollectorStatus.esm.js +2 -0
  62. package/dist/components/CollectorPage/Configurators/AzureDevOps/AzureDevOpsConfigurator.esm.js +1 -1
  63. package/dist/components/CollectorPage/Configurators/AzureDevOps/validation.esm.js +1 -1
  64. package/dist/components/CollectorPage/Configurators/BigQuery/BigQueryConfigurator.esm.js +1 -1
  65. package/dist/components/CollectorPage/Configurators/BigQuery/validation.esm.js +1 -1
  66. package/dist/components/CollectorPage/Configurators/Catalog/CatalogConfigurator.esm.js +1 -1
  67. package/dist/components/CollectorPage/Configurators/Common/CollectorOption.esm.js +1 -1
  68. package/dist/components/CollectorPage/Configurators/Common/utils.esm.js +1 -1
  69. package/dist/components/CollectorPage/Configurators/Configurator.esm.js +1 -1
  70. package/dist/components/CollectorPage/Configurators/DataDog/DataDogConfigurator.esm.js +1 -1
  71. package/dist/components/CollectorPage/Configurators/DataRegistry/DataRegistryConfigurator.esm.js +1 -1
  72. package/dist/components/CollectorPage/Configurators/Github/GithubConfigurator.esm.js +1 -1
  73. package/dist/components/CollectorPage/Configurators/Github/validation.esm.js +1 -1
  74. package/dist/components/CollectorPage/Configurators/Gitlab/GitlabConfigurator.esm.js +1 -1
  75. package/dist/components/CollectorPage/Configurators/HTTP/HttpConfigurator.esm.js +1 -1
  76. package/dist/components/CollectorPage/Configurators/HTTP/validation.esm.js +1 -1
  77. package/dist/components/CollectorPage/Configurators/Jira/JiraConfigurator.esm.js +1 -1
  78. package/dist/components/CollectorPage/Configurators/Jira/validation.esm.js +1 -1
  79. package/dist/components/CollectorPage/Configurators/Kubernetes/KubernetesConfigurator.esm.js +1 -1
  80. package/dist/components/CollectorPage/Configurators/Kubernetes/validation.esm.js +1 -1
  81. package/dist/components/CollectorPage/Configurators/NewRelic/NewRelicConfigurator.esm.js +1 -1
  82. package/dist/components/CollectorPage/Configurators/PagerDuty/PagerDutyConfigurator.esm.js +1 -1
  83. package/dist/components/CollectorPage/Configurators/PagerDuty/validation.esm.js +1 -1
  84. package/dist/components/CollectorPage/Configurators/SCM/RegexFactDetailsComponent.esm.js +1 -1
  85. package/dist/components/CollectorPage/Configurators/SCM/ScmConfigurator.esm.js +1 -1
  86. package/dist/components/CollectorPage/Configurators/SCM/utils.esm.js +1 -1
  87. package/dist/components/CollectorPage/Configurators/SCM/validation.esm.js +1 -1
  88. package/dist/components/CollectorPage/Configurators/SchemaBased/SchemaBasedConfigurator.esm.js +2 -0
  89. package/dist/components/CollectorPage/Configurators/SchemaBased/SchemaField.esm.js +2 -0
  90. package/dist/components/CollectorPage/Configurators/SchemaBased/utils.esm.js +2 -0
  91. package/dist/components/CollectorPage/Configurators/SonarQube/SonarQubeConfigurator.esm.js +1 -1
  92. package/dist/components/CollectorPage/Configurators/SonarQube/validation.esm.js +1 -1
  93. package/dist/components/CollectorPage/utils.esm.js +2 -0
  94. package/dist/components/CollectorsPage/CollectorsPage.esm.js +1 -1
  95. package/dist/components/CollectorsPage/IntegrationLogoBUI.esm.js +1 -1
  96. package/dist/components/CollectorsPage/IntegrationsListPageBUI.esm.js +1 -1
  97. package/dist/components/CreateNewTrackPage/CreateNewTrackPage.esm.js +1 -1
  98. package/dist/components/DescriptionCell/DescriptionCell.esm.js +1 -1
  99. package/dist/components/EntityChip/EntityChip.esm.js +1 -1
  100. package/dist/components/EntitySoundcheckCard/Card.esm.js +1 -1
  101. package/dist/components/FactExplorer/FactExplorer.esm.js +1 -1
  102. package/dist/components/FactExplorer/useFactOptions.esm.js +1 -1
  103. package/dist/components/Filter/FilterComponent.esm.js +1 -1
  104. package/dist/components/Filter/FilterPreviewDisplay.esm.js +2 -0
  105. package/dist/components/FilterSidebar/useTrackFilterSidebar.esm.js +1 -1
  106. package/dist/components/FilterSidebar/util.esm.js +1 -1
  107. package/dist/components/FixMeBetaBadge/FixMeBetaBadge.esm.js +2 -0
  108. package/dist/components/FixMeButton/FixMeButton.esm.js +1 -1
  109. package/dist/components/FormControlledAutocomplete/ControlledAutocomplete.esm.js +1 -1
  110. package/dist/components/FormattedPreview/FormattedPreview.esm.js +3 -3
  111. package/dist/components/GroupSelectorBUI/GroupSelectList.esm.js +1 -1
  112. package/dist/components/GroupSelectorBUI/GroupSelectionHistory.esm.js +1 -1
  113. package/dist/components/GroupSelectorBUI/GroupSelectorBUI.esm.js +1 -1
  114. package/dist/components/GroupSelectorBUI/GroupTagsDisplay.esm.js +2 -0
  115. package/dist/components/GroupSelectorBUI/ListViewMode.esm.js +2 -0
  116. package/dist/components/LevelUpParty/LevelUpParty.esm.js +1 -1
  117. package/dist/components/ListPageCustomActions/ListPageCustomActions.esm.js +1 -1
  118. package/dist/components/Menus/useCampaignActions.esm.js +1 -1
  119. package/dist/components/Menus/useCheckActions.esm.js +1 -1
  120. package/dist/components/Menus/useTrackActions.esm.js +1 -1
  121. package/dist/components/OverviewTable/ResultsTable.esm.js +1 -1
  122. package/dist/components/RefetchingIndicator/RefetchingIndicator.esm.js +1 -1
  123. package/dist/components/Router.esm.js +1 -1
  124. package/dist/components/RoutingPage/RoutingPageBUI.esm.js +1 -1
  125. package/dist/components/RoutingPage/RoutingPageWrapperBUI.esm.js +1 -1
  126. package/dist/components/SendCampaignNotificationDialog/SendCampaignNotificationDialogBUI.esm.js +1 -1
  127. package/dist/components/StatusBar/StatusBar.esm.js +1 -1
  128. package/dist/components/Stepper/Stepper.esm.js +1 -1
  129. package/dist/components/TableRowWithOwner/TableRowWithOwner.esm.js +1 -1
  130. package/dist/components/TechInsights/TechInsightsPageBUI.esm.js +1 -1
  131. package/dist/components/TechInsights/TechInsightsTableBUI.esm.js +1 -1
  132. package/dist/components/TechInsights/hierarchyToNivo.esm.js +2 -0
  133. package/dist/components/TechInsightsExplorerTable/TechInsightsExplorerTable.esm.js +1 -1
  134. package/dist/components/TechInsightsGroupSelector/TechInsightsGroupSelector.esm.js +1 -1
  135. package/dist/components/TimePeriodBar/TimePeriodBarBUI.esm.js +1 -1
  136. package/dist/components/TopAndBottomPerformingTeams/TopAndBottomPerformingTeams.esm.js +1 -1
  137. package/dist/components/TopFailingChecksTable/TopFailingChecksTableBUI.esm.js +1 -1
  138. package/dist/components/TrackBuilderPage/components/SelectProviderStep/SelectProviderStep.esm.js +1 -1
  139. package/dist/components/TrackCreatePage/TrackCreatePage.esm.js +1 -1
  140. package/dist/components/TrackEditPage/TrackEditPage.esm.js +1 -1
  141. package/dist/components/TrackEditPage/TrackEditView.esm.js +1 -1
  142. package/dist/components/TrackForm/utils/useTrackForm.esm.js +1 -1
  143. package/dist/components/TrackForm/utils/validation.esm.js +1 -1
  144. package/dist/components/TrackPage/TrackEntitiesTable/TrackEntitiesTableBUI.esm.js +1 -1
  145. package/dist/components/TrackPage/TrackPageBUI.esm.js +1 -1
  146. package/dist/components/TrackPage/TrackStatusBarBUI.esm.js +1 -1
  147. package/dist/components/TrackPage/TrackStatusTableBUI.esm.js +1 -1
  148. package/dist/components/TrackPage/TrackTechInsightsExplorerPage.esm.js +1 -1
  149. package/dist/components/TracksPage/TracksListPageBUI.esm.js +1 -1
  150. package/dist/contexts/UserProvider.esm.js +1 -1
  151. package/dist/graphql/generated/index.esm.js +22 -13
  152. package/dist/hooks/catalog/useEntityPresentation.esm.js +2 -0
  153. package/dist/hooks/catalog/useEntityPrimaryTitle.esm.js +2 -0
  154. package/dist/hooks/catalog/useGetEntityRefs.esm.js +1 -1
  155. package/dist/hooks/checks/useChecks.esm.js +2 -0
  156. package/dist/hooks/checks/useDeleteCheck.esm.js +1 -1
  157. package/dist/hooks/collectors/useGetCollectors.esm.js +1 -1
  158. package/dist/hooks/filters/useFilters.esm.js +1 -1
  159. package/dist/hooks/filters/useListPageFilters.esm.js +2 -0
  160. package/dist/hooks/fixMe/useFixMe.esm.js +1 -1
  161. package/dist/hooks/fixWithAika/useFixWithAika.esm.js +1 -1
  162. package/dist/hooks/groups/useGroupOptions.esm.js +1 -1
  163. package/dist/hooks/useChipScopedUrlState.esm.js +2 -0
  164. package/dist/hooks/usePagination.esm.js +1 -1
  165. package/dist/index.d.ts +130 -4
  166. package/dist/index.esm.js +1 -1
  167. package/dist/plugins/soundcheck/package.json.esm.js +2 -0
  168. package/dist/utils/charts.esm.js +1 -1
  169. package/dist/utils/facetFilters/utils.esm.js +1 -1
  170. package/dist/utils/filters.esm.js +1 -1
  171. package/dist/utils/validation.esm.js +1 -1
  172. package/package.json +24 -22
  173. package/dist/alpha/pages.esm.js +0 -2
  174. package/dist/components/CategoryBar/CategoryBar.esm.js +0 -2
  175. package/dist/components/CheckStatusBar/CheckStatusBar.esm.js +0 -2
  176. package/dist/components/CheckTemplatesPage/CheckTemplatesPageDeprecated.esm.js +0 -2
  177. package/dist/components/CheckTemplatesPage/TemplateCategory.esm.js +0 -2
  178. package/dist/components/CollectorPage/CollectorDetailsPageDeprecated.esm.js +0 -2
  179. package/dist/components/CollectorPage/CollectorFactTable.esm.js +0 -2
  180. package/dist/components/CollectorsPage/CollectorListPage/CollectorListPageDeprecated.esm.js +0 -2
  181. package/dist/components/CollectorsPage/CollectorListPage/CollectorLogo.esm.js +0 -2
  182. package/dist/components/CollectorsPage/CollectorListPage/CollectorSummaryCard.esm.js +0 -2
  183. package/dist/components/HierarchicalTechInsightsPage/getLeafNodes.esm.js +0 -2
  184. package/dist/components/HierarchicalTechInsightsPage/visualizations/LoadingOverlay.esm.js +0 -2
  185. package/dist/components/HierarchicalTechInsightsPage/visualizations/NivoCirclePacking.esm.js +0 -2
  186. package/dist/components/HierarchicalTechInsightsPage/visualizations/NivoHeatmap.esm.js +0 -2
  187. package/dist/components/HierarchicalTechInsightsPage/visualizations/NivoIcicle.esm.js +0 -2
  188. package/dist/components/HierarchicalTechInsightsPage/visualizations/NivoSunburst.esm.js +0 -2
  189. package/dist/components/HierarchicalTechInsightsPage/visualizations/NivoTreemap.esm.js +0 -2
  190. package/dist/components/HierarchicalTechInsightsPage/visualizations/VisualizationBreadcrumb.esm.js +0 -2
  191. package/dist/components/HierarchicalTechInsightsPage/visualizations/hierarchyToNivo.esm.js +0 -2
  192. package/dist/components/ImportExportPanel/ImportExportPanelDeprecated.esm.js +0 -2
  193. package/dist/components/SummaryCard/SummaryCard.esm.js +0 -2
  194. package/dist/components/SummaryCard/SummaryCardActionsMenu.esm.js +0 -2
  195. package/dist/images/GitHub_Logo.svg +0 -9
  196. package/dist/images/GitHub_Logo_White.svg +0 -9
  197. package/dist/images/SCM_DARK.svg +0 -10
  198. package/dist/images/SCM_LIGHT.svg +0 -10
  199. package/dist/images/azure-devops-rgb.svg +0 -13
  200. package/dist/images/azure-devops-white.svg +0 -13
  201. package/dist/images/bigquery-rgb.svg +0 -15
  202. package/dist/images/bigquery-white.svg +0 -15
  203. package/dist/images/cat-blk.svg +0 -12
  204. package/dist/images/cat-wht.svg +0 -12
  205. package/dist/images/data-registry-blk.svg +0 -36
  206. package/dist/images/data-registry-wht.svg +0 -36
  207. package/dist/images/dd_logo_h_rgb.svg +0 -17
  208. package/dist/images/dd_logo_h_white.svg +0 -17
  209. package/dist/images/gitlab-rgb.svg +0 -1
  210. package/dist/images/gitlab-white.svg +0 -1
  211. package/dist/images/http-rgb.svg +0 -11
  212. package/dist/images/http-white.svg +0 -11
  213. package/dist/images/jira-rgb.svg +0 -25
  214. package/dist/images/jira-white.svg +0 -25
  215. package/dist/images/k8s_blue.svg +0 -108
  216. package/dist/images/k8s_white.svg +0 -108
  217. package/dist/images/new-relic-rgb.svg +0 -1
  218. package/dist/images/new-relic-white.svg +0 -1
  219. package/dist/images/pd-black.svg +0 -9
  220. package/dist/images/pd-white.svg +0 -9
  221. package/dist/images/sonarqube-rgb.svg +0 -14
  222. package/dist/images/sonarqube-white.svg +0 -14
  223. package/dist/images/soundcheck-black.svg +0 -13
  224. package/dist/images/soundcheck-white.svg +0 -13
  225. package/dist/images/tech-black.svg +0 -11
  226. package/dist/images/tech-white.svg +0 -11
  227. /package/dist/components/CampaignsPage/{CampaignListPage/useArchiveConfirmationModal.esm.js → useArchiveConfirmationModal.esm.js} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,52 @@
1
1
  # @spotify/backstage-plugin-soundcheck
2
2
 
3
+ ## 0.23.0
4
+
5
+ ### Minor Changes
6
+
7
+ - Added job queue status to intergrations. Minor version bump due to new graphql field for collectors.
8
+ - Initial Soundcheck MCP work - not yet publicly released
9
+ - Added support for configuring custom fact collectors via the UI for Portal customers.
10
+
11
+ ### Patch Changes
12
+
13
+ - Updated dependency `backstage` to `1.49.0`.
14
+ - Fixed notifications being sent for draft campaigns in Soundcheck.
15
+ - Fixed owner field showing entity ID instead of display name on Track page.
16
+ - Added Liquid template variable support for campaign reminder notifications. Custom notification titles and descriptions now support Liquid template variables (e.g., `{{ campaign.name }}`, `{{ ownerEntityRef }}`) and markdown-style hyperlinks.
17
+ - Fix PagerDuty schedule display in Soundcheck integrations
18
+ - Fixed bug where check and track filters were not applying to the entity table by default
19
+ - Fix custom badge colors from track YAML not being applied in the frontend.
20
+ - Added owner and status filters to Track, Campaign, and Check List pages.
21
+ - Added 'Beta' label for new Fleetshift features.
22
+ - Add matchAll option to the SCM regex fact collector. When enabled, the extractor finds all occurrences of a pattern in a file and returns { matchCount: number, matches: string[] } instead of { matches: boolean }. The NCUI gains a new "Match All Mode" radio option, mutually exclusive with Capture Groups mode.
23
+ - Fixed Soundcheck Historical Status chart's custom number of days filter.
24
+ - Added UI support for the SCM `cacheFullResultsForEtags` setting so it can be configured from the integrations page without editing YAML. Also improved UI-config detection so SCM configurations that only set this global option are correctly treated as UI-managed.
25
+ - Hide documentation info icon for custom fact collectors that do not have a corresponding documentation page.
26
+ - Added copy to clipboard button to fact explorer, check dry run, and yaml preview.
27
+ - Added "Not Applicable" count to Current Status on the Soundcheck Checks page.
28
+ - Fixed column display condition for 'Fix With Fleetshift' in Checks Table.
29
+ - Fixed dropdown behavior in Check selection to ensure selected checks remain visible.
30
+ - Fix issue where incorrect titles appeared on page load in Soundcheck by dynamically loading names from the catalog entity fetch.
31
+ - Soundcheck will now detect and inform the user on the check page if the check is defined in both yaml and NCUI, as well as providing a remediation.
32
+ - Improve soundcheck's group selector
33
+ - Changed default table page size to 20 results per page.
34
+ - Added Filter by Entity Kind to Soundcheck's Track and Check Insights pages.
35
+ - Updated package to be compatible with zod versions 3 and 4.
36
+ - Updated dependencies
37
+ - Updated dependencies
38
+ - Updated dependencies
39
+ - Updated dependencies
40
+ - @spotify/backstage-plugin-core@0.8.16
41
+ - @spotify/backstage-plugin-soundcheck-common@0.22.0
42
+
43
+ ## 0.22.5
44
+
45
+ ### Patch Changes
46
+
47
+ - Updated Soundcheck AI FM integration to support additional information sent from Fleetshift (PR status, PR branch and shift name).
48
+ - Fixed column display condition for 'Fix With Fleetshift' in Checks Table.
49
+
3
50
  ## 0.22.4
4
51
 
5
52
  ### Patch Changes
@@ -0,0 +1,2 @@
1
+ import{jsx as e,jsxs as p}from"react/jsx-runtime";import{useApi as s,featureFlagsApiRef as g,useRouteRef as c}from"@backstage/core-plugin-api";import{usePermission as l}from"@backstage/plugin-permission-react";import{soundcheckCampaignCreatePermission as d}from"@spotify/backstage-plugin-soundcheck-common";import{Routes as f,Route as a,useParams as u,Navigate as h}from"react-router-dom";import{CampaignActionsProvider as C}from"../components/CampaignPage/CampaignActionsContext.esm.js";import{CampaignPageBUI as I}from"../components/CampaignPage/CampaignPageBUI.esm.js";import{CampaignTechInsightsExplorerPage as P}from"../components/CampaignPage/CampaignTechInsightsExplorerPage.esm.js";import{CampaignListPageBUI as R}from"../components/CampaignsPage/CampaignListPageBUI.esm.js";import"../components/CampaignsPage/useArchiveConfirmationModal.esm.js";import{CampaignCreatePage as v}from"../components/CampaignCreatePage/CampaignCreatePage.esm.js";import{EditCampaignView as x}from"../components/CampaignsPage/EditCampaignView.esm.js";import{campaignOverviewRouteRef as A}from"../routes.esm.js";const w=()=>{const{campaignId:i}=u(),m=c(A);return i?e(h,{to:m({campaignId:i}),replace:!0}):null},k=()=>{const i=s(g),m=!i.getRegisteredFlags().find(n=>n.name==="soundcheck-enable-campaigns")||i.isActive("soundcheck-enable-campaigns"),{loading:r,allowed:t}=l({permission:d}),o=!r&&t;return m?e(C,{actions:[],children:p(f,{children:[e(a,{index:!0,element:e(R,{})}),e(a,{path:":campaignId/edit",element:e(x,{})}),e(a,{path:":campaignId",element:e(w,{})}),e(a,{path:":campaignId/overview",element:e(I,{})}),e(a,{path:":campaignId/explorer",element:e(P,{})}),o&&e(a,{path:"create",element:e(v,{})})]})}):null};export{k as CampaignsRouterPage};
2
+ //# sourceMappingURL=CampaignsRouterPage.esm.js.map
@@ -0,0 +1,2 @@
1
+ import{jsxs as r,jsx as e,Fragment as s}from"react/jsx-runtime";import{useApi as h,featureFlagsApiRef as p}from"@backstage/core-plugin-api";import{usePermission as l}from"@backstage/plugin-permission-react";import{soundcheckCheckCreatePermission as d}from"@spotify/backstage-plugin-soundcheck-common";import{Routes as k,Route as t}from"react-router-dom";import{CheckCreatePage as f}from"../components/CheckCreatePage/CheckCreatePage.esm.js";import{CheckEditPage as g}from"../components/CheckPage/CheckEditPage.esm.js";import{CheckPageBUI as u}from"../components/CheckPage/CheckPageBUI.esm.js";import{ChecksTab as C}from"../components/ChecksTab/ChecksTab.esm.js";import{CheckTemplatesPageBUI as P}from"../components/CheckTemplatesPage/CheckTemplatesPageBUI.esm.js";const R=()=>{const o=h(p),m=o.getRegisteredFlags(),{loading:i,allowed:c}=l({permission:d}),a=!m.find(n=>n.name==="soundcheck-enable-check-creation")||o.isActive("soundcheck-enable-check-creation");return r(k,{children:[e(t,{index:!0,element:e(C,{})}),e(t,{path:":checkId",element:e(u,{})}),e(t,{path:":checkId/edit",element:e(g,{})}),!i&&c&&a&&r(s,{children:[e(t,{path:"create",element:e(f,{})}),e(t,{path:"templates",element:e(P,{})})]})]})};export{R as ChecksRouterPage};
2
+ //# sourceMappingURL=ChecksRouterPage.esm.js.map
@@ -0,0 +1,2 @@
1
+ import{jsxs as r,jsx as t}from"react/jsx-runtime";import{Routes as i,Route as e}from"react-router-dom";import{CollectorPage as n}from"../components/CollectorPage/CollectorPage.esm.js";import{CollectorDetailsPageBUI as a}from"../components/CollectorPage/CollectorDetailsPageBUI.esm.js";import{CollectorsPage as m}from"../components/CollectorsPage/CollectorsPage.esm.js";const l=({integrations:o})=>r(i,{children:[t(e,{index:!0,element:t(m,{integrations:o})}),t(e,{path:":integrationId",element:t(a,{integrations:o})}),t(e,{path:":integrationId/edit",element:t(n,{})})]});export{l as IntegrationsRouterPage};
2
+ //# sourceMappingURL=IntegrationsRouterPage.esm.js.map
@@ -0,0 +1,2 @@
1
+ import{jsx as r}from"react/jsx-runtime";import{Box as e}from"@backstage/ui";import{OverviewPageContent as o}from"../components/OverviewPage/OverviewPageContent.esm.js";const i=()=>r(e,{style:{padding:"0 var(--bui-space-3)"},children:r(o,{})});export{i as OverviewPageWrapper};
2
+ //# sourceMappingURL=OverviewPageWrapper.esm.js.map
@@ -0,0 +1,2 @@
1
+ import{jsx as e,jsxs as d,Fragment as f}from"react/jsx-runtime";import{useApi as h,featureFlagsApiRef as g,useRouteRef as n}from"@backstage/core-plugin-api";import{usePermission as R}from"@backstage/plugin-permission-react";import{soundcheckTrackCreatePermission as b}from"@spotify/backstage-plugin-soundcheck-common";import{Routes as T,Route as r,Outlet as P,useParams as I,useLocation as v,Navigate as u}from"react-router-dom";import{CheckPageBUI as w}from"../components/CheckPage/CheckPageBUI.esm.js";import{CreateNewTrackPage as B}from"../components/CreateNewTrackPage/CreateNewTrackPage.esm.js";import{TrackBuilderPage as C}from"../components/TrackBuilderPage/TrackBuilderPage.esm.js";import{TrackCreatePage as x}from"../components/TrackCreatePage/TrackCreatePage.esm.js";import{TrackEditPage as N}from"../components/TrackEditPage/TrackEditPage.esm.js";import{TrackPageBUI as O}from"../components/TrackPage/TrackPageBUI.esm.js";import{TrackTechInsightsExplorerPage as A}from"../components/TrackPage/TrackTechInsightsExplorerPage.esm.js";import{TracksTab as F}from"../components/TracksTab/TracksTab.esm.js";import{trackOverviewRouteRef as j,tracksPageRouteRef as y,trackCreateRouteRef as E,newTrackRouteRef as U,trackBuilderRouteRef as W}from"../routes.esm.js";const L=()=>{const t=n(j),a=n(y),o=n(E),i=n(U),c=n(W);return{buildOverview:t,buildTracks:a,buildCreate:o,buildNew:i,buildBuilder:c}},m=t=>{try{return t?.()??null}catch{return null}},S=()=>{const{trackId:t}=I(),a=v(),{buildOverview:o,buildTracks:i,buildCreate:c,buildNew:l,buildBuilder:k}=L();if(!t)return null;const s=[m(c),m(l),m(k)].filter(Boolean).find(p=>a.pathname.endsWith(p));if(s)return e(u,{to:s,replace:!0});try{return e(u,{to:o({trackId:t}),replace:!0})}catch{return e(u,{to:i?.()??"/soundcheck/tracks",replace:!0})}},q=()=>{const t=h(g),a=t.getRegisteredFlags(),{loading:o,allowed:i}=R({permission:b}),c=!a.find(l=>l.name==="soundcheck-enable-track-creation")||t.isActive("soundcheck-enable-track-creation");return e(T,{children:d(r,{element:e(P,{}),children:[e(r,{index:!0,element:e(F,{})}),e(r,{path:"builder",element:e(C,{})}),!o&&i&&c&&d(f,{children:[e(r,{path:"create",element:e(x,{})}),e(r,{path:"new",element:e(B,{})})]}),e(r,{path:":trackId/edit",element:e(N,{})}),e(r,{path:":trackId",element:e(S,{})}),e(r,{path:":trackId/overview",element:e(O,{})}),e(r,{path:":trackId/explorer",element:e(A,{})}),e(r,{path:":trackId/checks/:checkId",element:e(w,{})})]})})};export{q as TracksRouterPage};
2
+ //# sourceMappingURL=TracksRouterPage.esm.js.map
@@ -1,2 +1,2 @@
1
- import{createFrontendPlugin as t}from"@backstage/frontend-plugin-api";import{soundcheckApi as n}from"./apis.esm.js";import{entitySoundcheckContent as e,entitySoundcheckCard as o,groupSoundcheckContent as r}from"./entity-content.esm.js";import{azureIntegration as i,bigqueryIntegration as a,catalogIntegration as g,datadogIntegration as c,dataRegistryIntegration as u,githubIntegration as d,gitlabIntegration as I,httpIntegration as m,jiraIntegration as p,kubernetesIntegration as s,newrelicIntegration as h,pagerdutyIntegration as k,scmIntegration as f,sonarqubeIntegration as l}from"./integrations.esm.js";import{soundcheckRoutingPage as b,soundcheckOverviewPage as y}from"./pages.esm.js";import{soundcheckSidebarItem as S}from"./sidebar-item.esm.js";var v=t({pluginId:"soundcheck",extensions:[b,y,n,e,o,r,S,i,a,g,c,u,d,I,m,p,s,h,k,f,l]});export{v as default};
1
+ import{jsx as i}from"react/jsx-runtime";import{PageBlueprint as c,SubPageBlueprint as e,createFrontendPlugin as p}from"@backstage/frontend-plugin-api";import{RiCheckDoubleLine as m}from"@remixicon/react";import s from"react";import{rootRouteRef as g}from"../routes.esm.js";import{soundcheckApi as h}from"./apis.esm.js";import{entitySoundcheckContent as u,entitySoundcheckCard as d,groupSoundcheckContent as l}from"./entity-content.esm.js";import{azureIntegration as k,bigqueryIntegration as I,catalogIntegration as f,datadogIntegration as w,dataRegistryIntegration as v,githubIntegration as R,gitlabIntegration as C,httpIntegration as P,jiraIntegration as b,kubernetesIntegration as y,newrelicIntegration as S,pagerdutyIntegration as x,scmIntegration as T,sonarqubeIntegration as j}from"./integrations.esm.js";import{soundcheckSidebarItem as B}from"./sidebar-item.esm.js";const $=async(a,n)=>{const r=await import("../components/RoutingPage/RoutingPageWrapperBUI.esm.js");return i(r.RoutingPageWrapperBUI,{title:a,hideHeader:!0,children:n})},t=(a,n,r,F)=>async()=>{const o=(await n())[r];if(!o)throw new Error(`Soundcheck page loader could not find export "${r}" for "${a}"`);if(typeof o!="function"&&!(typeof o=="object"&&o!==null))throw new Error(`Soundcheck page loader export "${r}" for "${a}" is not a React component`);return $(a,s.createElement(o,{}))},q=c.make({params:{path:"/soundcheck",routeRef:g,title:"Soundcheck"}}),E=e.make({name:"overview",params:{path:"overview",title:"Overview",loader:t("Overview",()=>import("./OverviewPageWrapper.esm.js"),"OverviewPageWrapper")}}),O=e.make({name:"tech-insights",params:{path:"tech-insights",title:"Tech Insights",loader:t("Tech Insights",()=>import("../components/TechInsights/TechInsightsPageBUI.esm.js"),"TechInsightsPageBUI")}}),U=e.make({name:"tracks",params:{path:"tracks",title:"Tracks",loader:t("Tracks",()=>import("./TracksRouterPage.esm.js"),"TracksRouterPage")}}),W=e.make({name:"checks",params:{path:"checks",title:"Checks",loader:t("Checks",()=>import("./ChecksRouterPage.esm.js"),"ChecksRouterPage")}}),z=e.make({name:"campaigns",params:{path:"campaigns",title:"Campaigns",loader:t("Campaigns",()=>import("./CampaignsRouterPage.esm.js"),"CampaignsRouterPage")}}),A=e.make({name:"integrations",params:{path:"integrations",title:"Integrations",loader:t("Integrations",()=>import("./IntegrationsRouterPage.esm.js"),"IntegrationsRouterPage")}});var D=p({pluginId:"soundcheck",title:"Soundcheck",icon:i(m,{}),info:{packageJson:()=>import("../plugins/soundcheck/package.json.esm.js")},extensions:[q,O,W,U,z,A,E,h,u,d,l,B,k,I,f,w,v,R,C,P,b,y,S,x,T,j]});export{D as default};
2
2
  //# sourceMappingURL=plugin.esm.js.map
package/dist/alpha.d.ts CHANGED
@@ -1,10 +1,10 @@
1
1
  import * as _backstage_frontend_plugin_api from '@backstage/frontend-plugin-api';
2
- import * as react from 'react';
2
+ import React__default from 'react';
3
3
 
4
4
  /**
5
5
  * @public
6
- **
7
- * The Soundcheck plugin for use within Backstage´s new frontend system
6
+ *
7
+ * The Soundcheck plugin for use within Backstage's new frontend system
8
8
  */
9
9
  declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin<{}, {}, {
10
10
  "integration:soundcheck/azure": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
@@ -12,7 +12,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
12
12
  name: "azure";
13
13
  config: {};
14
14
  configInput: {};
15
- output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
15
+ output: _backstage_frontend_plugin_api.ExtensionDataRef<React__default.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
16
16
  optional: true;
17
17
  }> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "soundcheck.integrationId", {}>;
18
18
  inputs: {};
@@ -28,7 +28,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
28
28
  name: "bigquery";
29
29
  config: {};
30
30
  configInput: {};
31
- output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
31
+ output: _backstage_frontend_plugin_api.ExtensionDataRef<React__default.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
32
32
  optional: true;
33
33
  }> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "soundcheck.integrationId", {}>;
34
34
  inputs: {};
@@ -44,7 +44,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
44
44
  name: "catalog";
45
45
  config: {};
46
46
  configInput: {};
47
- output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
47
+ output: _backstage_frontend_plugin_api.ExtensionDataRef<React__default.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
48
48
  optional: true;
49
49
  }> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "soundcheck.integrationId", {}>;
50
50
  inputs: {};
@@ -60,7 +60,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
60
60
  name: "datadog";
61
61
  config: {};
62
62
  configInput: {};
63
- output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
63
+ output: _backstage_frontend_plugin_api.ExtensionDataRef<React__default.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
64
64
  optional: true;
65
65
  }> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "soundcheck.integrationId", {}>;
66
66
  inputs: {};
@@ -76,7 +76,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
76
76
  name: "data-registry";
77
77
  config: {};
78
78
  configInput: {};
79
- output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
79
+ output: _backstage_frontend_plugin_api.ExtensionDataRef<React__default.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
80
80
  optional: true;
81
81
  }> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "soundcheck.integrationId", {}>;
82
82
  inputs: {};
@@ -92,7 +92,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
92
92
  name: "github";
93
93
  config: {};
94
94
  configInput: {};
95
- output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
95
+ output: _backstage_frontend_plugin_api.ExtensionDataRef<React__default.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
96
96
  optional: true;
97
97
  }> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "soundcheck.integrationId", {}>;
98
98
  inputs: {};
@@ -108,7 +108,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
108
108
  name: "gitlab";
109
109
  config: {};
110
110
  configInput: {};
111
- output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
111
+ output: _backstage_frontend_plugin_api.ExtensionDataRef<React__default.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
112
112
  optional: true;
113
113
  }> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "soundcheck.integrationId", {}>;
114
114
  inputs: {};
@@ -124,7 +124,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
124
124
  name: "http";
125
125
  config: {};
126
126
  configInput: {};
127
- output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
127
+ output: _backstage_frontend_plugin_api.ExtensionDataRef<React__default.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
128
128
  optional: true;
129
129
  }> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "soundcheck.integrationId", {}>;
130
130
  inputs: {};
@@ -140,7 +140,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
140
140
  name: "jira";
141
141
  config: {};
142
142
  configInput: {};
143
- output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
143
+ output: _backstage_frontend_plugin_api.ExtensionDataRef<React__default.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
144
144
  optional: true;
145
145
  }> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "soundcheck.integrationId", {}>;
146
146
  inputs: {};
@@ -156,7 +156,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
156
156
  name: "kubernetes";
157
157
  config: {};
158
158
  configInput: {};
159
- output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
159
+ output: _backstage_frontend_plugin_api.ExtensionDataRef<React__default.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
160
160
  optional: true;
161
161
  }> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "soundcheck.integrationId", {}>;
162
162
  inputs: {};
@@ -172,7 +172,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
172
172
  name: "newrelic";
173
173
  config: {};
174
174
  configInput: {};
175
- output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
175
+ output: _backstage_frontend_plugin_api.ExtensionDataRef<React__default.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
176
176
  optional: true;
177
177
  }> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "soundcheck.integrationId", {}>;
178
178
  inputs: {};
@@ -188,7 +188,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
188
188
  name: "pagerduty";
189
189
  config: {};
190
190
  configInput: {};
191
- output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
191
+ output: _backstage_frontend_plugin_api.ExtensionDataRef<React__default.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
192
192
  optional: true;
193
193
  }> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "soundcheck.integrationId", {}>;
194
194
  inputs: {};
@@ -204,7 +204,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
204
204
  name: "scm";
205
205
  config: {};
206
206
  configInput: {};
207
- output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
207
+ output: _backstage_frontend_plugin_api.ExtensionDataRef<React__default.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
208
208
  optional: true;
209
209
  }> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "soundcheck.integrationId", {}>;
210
210
  inputs: {};
@@ -220,7 +220,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
220
220
  name: "sonarqube";
221
221
  config: {};
222
222
  configInput: {};
223
- output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
223
+ output: _backstage_frontend_plugin_api.ExtensionDataRef<React__default.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
224
224
  optional: true;
225
225
  }> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "soundcheck.integrationId", {}>;
226
226
  inputs: {};
@@ -248,16 +248,18 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
248
248
  routeRef: _backstage_frontend_plugin_api.RouteRef<undefined>;
249
249
  };
250
250
  }>;
251
- "page:soundcheck/SoundcheckRoutingPage": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
251
+ "page:soundcheck": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
252
+ kind: "page";
253
+ name: undefined;
252
254
  config: {
253
255
  path: string | undefined;
254
256
  title: string | undefined;
255
257
  };
256
258
  configInput: {
257
- title?: string | undefined | undefined;
258
- path?: string | undefined | undefined;
259
+ title?: string | undefined;
260
+ path?: string | undefined;
259
261
  };
260
- output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
262
+ output: _backstage_frontend_plugin_api.ExtensionDataRef<React__default.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
261
263
  optional: true;
262
264
  }> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.title", {
263
265
  optional: true;
@@ -265,7 +267,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
265
267
  optional: true;
266
268
  }>;
267
269
  inputs: {
268
- pages: _backstage_frontend_plugin_api.ExtensionInput<_backstage_frontend_plugin_api.ConfigurableExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
270
+ pages: _backstage_frontend_plugin_api.ExtensionInput<_backstage_frontend_plugin_api.ConfigurableExtensionDataRef<React__default.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
269
271
  optional: true;
270
272
  }> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "core.title", {
271
273
  optional: true;
@@ -276,33 +278,93 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
276
278
  optional: false;
277
279
  internal: false;
278
280
  }>;
279
- integrations: _backstage_frontend_plugin_api.ExtensionInput<_backstage_frontend_plugin_api.ConfigurableExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "soundcheck.integrationId", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
280
- optional: true;
281
- }>, {
282
- singleton: false;
283
- optional: false;
284
- internal: false;
285
- }>;
286
- campaignActions: _backstage_frontend_plugin_api.ExtensionInput<_backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "soundcheck.campaignAction.label", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "soundcheck.campaignAction.id", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<(campaignId: string) => string, "soundcheck.campaignAction.href", {}>, {
287
- singleton: false;
288
- optional: false;
289
- internal: false;
290
- }>;
291
281
  };
292
- kind: "page";
293
- name: "SoundcheckRoutingPage";
294
282
  params: {
295
- defaultPath?: [Error: `Use the 'path' param instead`];
296
283
  path: string;
297
284
  title?: string;
298
285
  icon?: _backstage_frontend_plugin_api.IconElement;
299
- loader?: () => Promise<react.JSX.Element>;
286
+ loader?: () => Promise<React__default.JSX.Element>;
300
287
  routeRef?: _backstage_frontend_plugin_api.RouteRef;
301
288
  noHeader?: boolean;
302
289
  };
303
290
  }>;
304
- "page:soundcheck/overview": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
305
- kind: "page";
291
+ "sub-page:soundcheck/campaigns": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
292
+ kind: "sub-page";
293
+ name: "campaigns";
294
+ config: {
295
+ path: string | undefined;
296
+ title: string | undefined;
297
+ };
298
+ configInput: {
299
+ title?: string | undefined;
300
+ path?: string | undefined;
301
+ };
302
+ output: _backstage_frontend_plugin_api.ExtensionDataRef<React__default.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
303
+ optional: true;
304
+ }> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.title", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.IconElement, "core.icon", {
305
+ optional: true;
306
+ }>;
307
+ inputs: {};
308
+ params: {
309
+ path: string;
310
+ title: string;
311
+ icon?: _backstage_frontend_plugin_api.IconElement;
312
+ loader: () => Promise<JSX.Element>;
313
+ routeRef?: _backstage_frontend_plugin_api.RouteRef;
314
+ };
315
+ }>;
316
+ "sub-page:soundcheck/checks": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
317
+ kind: "sub-page";
318
+ name: "checks";
319
+ config: {
320
+ path: string | undefined;
321
+ title: string | undefined;
322
+ };
323
+ configInput: {
324
+ title?: string | undefined;
325
+ path?: string | undefined;
326
+ };
327
+ output: _backstage_frontend_plugin_api.ExtensionDataRef<React__default.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
328
+ optional: true;
329
+ }> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.title", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.IconElement, "core.icon", {
330
+ optional: true;
331
+ }>;
332
+ inputs: {};
333
+ params: {
334
+ path: string;
335
+ title: string;
336
+ icon?: _backstage_frontend_plugin_api.IconElement;
337
+ loader: () => Promise<JSX.Element>;
338
+ routeRef?: _backstage_frontend_plugin_api.RouteRef;
339
+ };
340
+ }>;
341
+ "sub-page:soundcheck/integrations": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
342
+ kind: "sub-page";
343
+ name: "integrations";
344
+ config: {
345
+ path: string | undefined;
346
+ title: string | undefined;
347
+ };
348
+ configInput: {
349
+ title?: string | undefined;
350
+ path?: string | undefined;
351
+ };
352
+ output: _backstage_frontend_plugin_api.ExtensionDataRef<React__default.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
353
+ optional: true;
354
+ }> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.title", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.IconElement, "core.icon", {
355
+ optional: true;
356
+ }>;
357
+ inputs: {};
358
+ params: {
359
+ path: string;
360
+ title: string;
361
+ icon?: _backstage_frontend_plugin_api.IconElement;
362
+ loader: () => Promise<JSX.Element>;
363
+ routeRef?: _backstage_frontend_plugin_api.RouteRef;
364
+ };
365
+ }>;
366
+ "sub-page:soundcheck/overview": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
367
+ kind: "sub-page";
306
368
  name: "overview";
307
369
  config: {
308
370
  path: string | undefined;
@@ -312,34 +374,68 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
312
374
  title?: string | undefined;
313
375
  path?: string | undefined;
314
376
  };
315
- output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
377
+ output: _backstage_frontend_plugin_api.ExtensionDataRef<React__default.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
316
378
  optional: true;
317
- }> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.title", {
379
+ }> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.title", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.IconElement, "core.icon", {
318
380
  optional: true;
319
- }> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.IconElement, "core.icon", {
381
+ }>;
382
+ inputs: {};
383
+ params: {
384
+ path: string;
385
+ title: string;
386
+ icon?: _backstage_frontend_plugin_api.IconElement;
387
+ loader: () => Promise<JSX.Element>;
388
+ routeRef?: _backstage_frontend_plugin_api.RouteRef;
389
+ };
390
+ }>;
391
+ "sub-page:soundcheck/tech-insights": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
392
+ kind: "sub-page";
393
+ name: "tech-insights";
394
+ config: {
395
+ path: string | undefined;
396
+ title: string | undefined;
397
+ };
398
+ configInput: {
399
+ title?: string | undefined;
400
+ path?: string | undefined;
401
+ };
402
+ output: _backstage_frontend_plugin_api.ExtensionDataRef<React__default.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
403
+ optional: true;
404
+ }> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.title", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.IconElement, "core.icon", {
320
405
  optional: true;
321
406
  }>;
322
- inputs: {
323
- pages: _backstage_frontend_plugin_api.ExtensionInput<_backstage_frontend_plugin_api.ConfigurableExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
324
- optional: true;
325
- }> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "core.title", {
326
- optional: true;
327
- }> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<_backstage_frontend_plugin_api.IconElement, "core.icon", {
328
- optional: true;
329
- }>, {
330
- singleton: false;
331
- optional: false;
332
- internal: false;
333
- }>;
407
+ inputs: {};
408
+ params: {
409
+ path: string;
410
+ title: string;
411
+ icon?: _backstage_frontend_plugin_api.IconElement;
412
+ loader: () => Promise<JSX.Element>;
413
+ routeRef?: _backstage_frontend_plugin_api.RouteRef;
334
414
  };
415
+ }>;
416
+ "sub-page:soundcheck/tracks": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
417
+ kind: "sub-page";
418
+ name: "tracks";
419
+ config: {
420
+ path: string | undefined;
421
+ title: string | undefined;
422
+ };
423
+ configInput: {
424
+ title?: string | undefined;
425
+ path?: string | undefined;
426
+ };
427
+ output: _backstage_frontend_plugin_api.ExtensionDataRef<React__default.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
428
+ optional: true;
429
+ }> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.title", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.IconElement, "core.icon", {
430
+ optional: true;
431
+ }>;
432
+ inputs: {};
335
433
  params: {
336
- defaultPath?: [Error: `Use the 'path' param instead`];
337
434
  path: string;
338
- title?: string;
435
+ title: string;
339
436
  icon?: _backstage_frontend_plugin_api.IconElement;
340
- loader?: () => Promise<react.JSX.Element>;
437
+ loader: () => Promise<JSX.Element>;
341
438
  routeRef?: _backstage_frontend_plugin_api.RouteRef;
342
- noHeader?: boolean;
343
439
  };
344
440
  }>;
345
441
  }>;
@@ -1,2 +1,2 @@
1
- import{jsx as r}from"react/jsx-runtime";import{compatWrapper as u}from"@backstage/core-compat-api";import{createExtensionDataRef as c,createExtensionBlueprint as l,coreExtensionData as t,ExtensionBoundary as s}from"@backstage/frontend-plugin-api";import{lazy as f}from"react";import"@backstage/core-plugin-api";import"@backstage/plugin-permission-react";import"@backstage/ui";import"@spotify/backstage-plugin-soundcheck-common";import"react-helmet";import"react-router-dom";import"../routes.esm.js";import"../components/CampaignPage/CampaignPageBUI.esm.js";import"../components/CampaignPage/CampaignActionsContext.esm.js";import"../components/CampaignPage/CampaignTechInsightsExplorerPage.esm.js";import"../components/CampaignsPage/CampaignListPage/useArchiveConfirmationModal.esm.js";import"../components/CampaignsPage/CampaignListPageBUI.esm.js";import"../contexts/TrackFormContext.esm.js";import"../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"../hooks/useSoundcheckAlert.esm.js";import"../hooks/useConfirmationModal.esm.js";import"react-use/lib/useLocalStorage";import"react-use/lib/useAsync";import"../graphql/generated/index.esm.js";import"react-use/lib/useAsyncRetry";import"../components/CampaignForm/CampaignForm.esm.js";import"@remixicon/react";import"../components/SoundcheckHeader/SoundcheckHeader.esm.js";import"../components/SoundcheckHeader/SoundcheckHeaderContext.esm.js";import"../components/Loading/Loading.esm.js";import"../components/PageWarningMessage/PageWarningMessage.esm.js";import"../components/CampaignsPage/CampaignEmptyState.esm.js";import"uuid";import"@backstage/core-components";import"react-hook-form";import"../utils/formStyles.esm.js";import"@material-ui/core";import"@material-ui/icons/Search";import"../components/SoundcheckDialog/SoundcheckDialog.esm.js";import"../components/FactExplorer/FactExplorer.esm.js";import"../components/FactExplorer/FactExplorerContext.esm.js";import"../components/FormStepper/FormStepper.esm.js";import"../components/CheckForm/FormFields/CheckNameInput/CheckNameInput.esm.js";import"../components/CheckForm/FormFields/PassFailMessageInput/PassFailMessageInput.esm.js";import"../components/FormMarkdownInput/FormMarkdownInput.esm.js";import"../components/CheckForm/utils/checkFormUtils.esm.js";import"../components/CheckForm/FormFields/TeamDetailsInput/TeamDetailsInput.esm.js";import"../components/CheckForm/FormFields/RuleInput/AddMenuButton.esm.js";import"../components/CheckForm/FormFields/RuleInput/RuleInputBox.esm.js";import"../components/CheckForm/FormFields/RuleInput/Expressions/ExpressionBox.esm.js";import"../components/CheckForm/FormFields/RuleInput/Expressions/ExpressionTypeToggle.esm.js";import"@material-ui/icons/Close";import"@material-ui/icons/Delete";import"@material-ui/icons/List";import"../components/FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import"../components/CheckForm/FormFields/RuleInput/Conditions/styles.esm.js";import"../components/CheckForm/FormFields/RuleInput/Conditions/ValueListInput.esm.js";import"../components/CheckForm/FormFields/RuleInput/Conditions/ConditionList.esm.js";import"../components/CheckForm/FormFields/CheckScheduleSection/ScheduleSection.esm.js";import"../components/CheckForm/FormFields/CheckPathResolverInput.esm.js";import"../components/CheckForm/Steps/CheckDetailsStep.esm.js";import"../components/CheckForm/Steps/CheckRulesStep.esm.js";import"../components/CheckForm/Steps/CheckApplicabilityStep.esm.js";import"../components/CheckForm/Steps/CheckReviewStep.esm.js";import"../components/CheckForm/types/ExpressionType.esm.js";import"../components/Frequency/types.esm.js";import"../components/Frequency/util.esm.js";import"../components/Frequency/FrequencyComponent.esm.js";import"../components/CheckForm/types/Path.esm.js";import"@hookform/resolvers/zod";import"../components/CheckForm/utils/validation.esm.js";import"../components/LoadingIndicator/LoadingIndicator.esm.js";import"../components/CheckPage/CheckPageBUI.esm.js";import"../components/ChecksPage/ChecksListPageBUI.esm.js";import"../components/CheckTemplatesPage/CheckTemplatesPageBUI.esm.js";import"../components/CheckTemplatesPage/CheckTemplatesPageDeprecated.esm.js";import"../components/CollectorPage/Configurators/AzureDevOps/AzureDevOpsConfigurator.esm.js";import"../components/CollectorPage/Configurators/BigQuery/BigQueryConfigurator.esm.js";import"../components/CollectorPage/Configurators/Catalog/CatalogConfigurator.esm.js";import"../components/CollectorPage/Configurators/DataDog/DataDogConfigurator.esm.js";import"../components/CollectorPage/Configurators/DataRegistry/DataRegistryConfigurator.esm.js";import"../components/CollectorPage/Configurators/Github/GithubConfigurator.esm.js";import"../components/CollectorPage/Configurators/Gitlab/GitlabConfigurator.esm.js";import"../components/CollectorPage/Configurators/HTTP/HttpConfigurator.esm.js";import"../components/CollectorPage/Configurators/Jira/JiraConfigurator.esm.js";import"../components/CollectorPage/Configurators/Kubernetes/KubernetesConfigurator.esm.js";import"../components/CollectorPage/Configurators/NewRelic/NewRelicConfigurator.esm.js";import"../components/CollectorPage/Configurators/PagerDuty/PagerDutyConfigurator.esm.js";import"../components/CollectorPage/Configurators/SCM/ScmConfigurator.esm.js";import"../components/CollectorPage/Configurators/SonarQube/SonarQubeConfigurator.esm.js";import"../components/CollectorPage/CollectorDetailsPageBUI.esm.js";import"../components/CollectorPage/CollectorDetailsPageDeprecated.esm.js";import"../components/CollectorsPage/IntegrationsListPageBUI.esm.js";import"../components/CreateNewTrackPage/CreateNewTrackPage.esm.js";import"../components/OverviewPage/OverviewPageContent.esm.js";import"../components/TechInsights/TechInsightsPageBUI.esm.js";import"../components/TrackBuilderPage/TrackBuilderPage.esm.js";import"lodash";import"../components/Filter/FilterComponent.esm.js";import"../components/TrackForm/Steps/LevelsStep/LevelsStepNew.esm.js";import"../components/TrackForm/Steps/TrackDetailsStep/TrackDetailsStep.esm.js";import"../components/TrackForm/utils/validation.esm.js";import"../components/TrackPage/TrackPageBUI.esm.js";import"../components/TrackPage/TrackTechInsightsExplorerPage.esm.js";import"../components/TracksPage/TracksListPageBUI.esm.js";import"@spotify/backstage-plugin-core";import"../components/SoundcheckQueryClientProvider/SoundcheckQueryClientProvider.esm.js";import{RoutingPageWrapper as g}from"../components/RoutingPage/RoutingPageWrapper.esm.js";const o=c().with({id:"soundcheck.integrationId"}),h=l({kind:"integration",attachTo:{id:"app/routes",input:"routes"},output:[t.routePath,t.reactElement,t.routeRef.optional(),o],dataRefs:{integrationId:o},*factory({integrationId:i,loader:m,path:e,routeRef:p},{node:n}){const a=f(()=>m().then(d=>({default:()=>d})));yield t.routePath(e??`/soundcheck/integrations/${i}/edit`),yield t.reactElement(u(r(s,{node:n,children:r(g,{children:r(a,{})})}))),p&&(yield t.routeRef(p)),yield o(i)}});export{h as IntegrationPageBlueprint,o as integrationIdExtensionDataRef};
1
+ import{jsx as r}from"react/jsx-runtime";import{compatWrapper as u}from"@backstage/core-compat-api";import{createExtensionDataRef as c,createExtensionBlueprint as l,coreExtensionData as t,ExtensionBoundary as s}from"@backstage/frontend-plugin-api";import{lazy as f}from"react";import"@backstage/core-plugin-api";import"@backstage/plugin-permission-react";import"@backstage/ui";import"@spotify/backstage-plugin-soundcheck-common";import"react-helmet";import"react-router-dom";import"../routes.esm.js";import"../components/CampaignPage/CampaignPageBUI.esm.js";import"../components/CampaignPage/CampaignActionsContext.esm.js";import"../components/CampaignPage/CampaignTechInsightsExplorerPage.esm.js";import"../components/CampaignsPage/CampaignListPageBUI.esm.js";import"../components/CampaignsPage/useArchiveConfirmationModal.esm.js";import"../contexts/TrackFormContext.esm.js";import"../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"../hooks/useSoundcheckAlert.esm.js";import"../hooks/useConfirmationModal.esm.js";import"react-use/lib/useLocalStorage";import"react-use/lib/useAsync";import"../components/ChecksTable/utils.esm.js";import"../graphql/generated/index.esm.js";import"react-use/lib/useAsyncRetry";import"../components/CampaignForm/CampaignForm.esm.js";import"@remixicon/react";import"../components/SoundcheckHeader/SoundcheckHeader.esm.js";import"../components/SoundcheckHeader/SoundcheckHeaderContext.esm.js";import"../components/Loading/Loading.esm.js";import"../components/PageWarningMessage/PageWarningMessage.esm.js";import"../components/CampaignsPage/CampaignEmptyState.esm.js";import"uuid";import"@backstage/core-components";import"react-hook-form";import"../utils/formStyles.esm.js";import"@material-ui/core";import"@material-ui/icons/Search";import"../components/SoundcheckDialog/SoundcheckDialog.esm.js";import"../components/FactExplorer/FactExplorer.esm.js";import"../components/FactExplorer/FactExplorerContext.esm.js";import"../components/FormStepper/FormStepper.esm.js";import"../components/CheckForm/FormFields/CheckNameInput/CheckNameInput.esm.js";import"../components/CheckForm/FormFields/PassFailMessageInput/PassFailMessageInput.esm.js";import"../components/FormMarkdownInput/FormMarkdownInput.esm.js";import"../components/CheckForm/utils/checkFormUtils.esm.js";import"../components/CheckForm/FormFields/TeamDetailsInput/TeamDetailsInput.esm.js";import"../components/CheckForm/FormFields/RuleInput/AddMenuButton.esm.js";import"../components/CheckForm/FormFields/RuleInput/RuleInputBox.esm.js";import"../components/CheckForm/FormFields/RuleInput/Expressions/ExpressionBox.esm.js";import"../components/CheckForm/FormFields/RuleInput/Expressions/ExpressionTypeToggle.esm.js";import"@material-ui/icons/Close";import"@material-ui/icons/Delete";import"@material-ui/icons/List";import"../components/FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import"../components/CheckForm/FormFields/RuleInput/Conditions/styles.esm.js";import"../components/CheckForm/FormFields/RuleInput/Conditions/ValueListInput.esm.js";import"../components/CheckForm/FormFields/RuleInput/Conditions/ConditionList.esm.js";import"../components/CheckForm/FormFields/CheckScheduleSection/ScheduleSection.esm.js";import"../components/CheckForm/FormFields/CheckPathResolverInput.esm.js";import"../components/CheckForm/Steps/CheckDetailsStep.esm.js";import"../components/CheckForm/Steps/CheckRulesStep.esm.js";import"../components/CheckForm/Steps/CheckApplicabilityStep.esm.js";import"../components/CheckForm/Steps/CheckReviewStep.esm.js";import"../components/CheckForm/types/ExpressionType.esm.js";import"../components/Frequency/types.esm.js";import"../components/Frequency/util.esm.js";import"../components/Frequency/FrequencyComponent.esm.js";import"../components/CheckForm/types/Path.esm.js";import"@hookform/resolvers/standard-schema";import"../components/CheckForm/utils/validation.esm.js";import"../components/LoadingIndicator/LoadingIndicator.esm.js";import"../components/CheckPage/CheckPageBUI.esm.js";import"../components/ChecksPage/ChecksListPageBUI.esm.js";import"../components/CheckTemplatesPage/CheckTemplatesPageBUI.esm.js";import"../components/CollectorPage/Configurators/AzureDevOps/AzureDevOpsConfigurator.esm.js";import"../components/CollectorPage/Configurators/BigQuery/BigQueryConfigurator.esm.js";import"../components/CollectorPage/Configurators/Catalog/CatalogConfigurator.esm.js";import"../components/CollectorPage/Configurators/DataDog/DataDogConfigurator.esm.js";import"../components/CollectorPage/Configurators/DataRegistry/DataRegistryConfigurator.esm.js";import"../components/CollectorPage/Configurators/Github/GithubConfigurator.esm.js";import"../components/CollectorPage/Configurators/Gitlab/GitlabConfigurator.esm.js";import"../components/CollectorPage/Configurators/HTTP/HttpConfigurator.esm.js";import"../components/CollectorPage/Configurators/Jira/JiraConfigurator.esm.js";import"../components/CollectorPage/Configurators/Kubernetes/KubernetesConfigurator.esm.js";import"../components/CollectorPage/Configurators/NewRelic/NewRelicConfigurator.esm.js";import"../components/CollectorPage/Configurators/PagerDuty/PagerDutyConfigurator.esm.js";import"../components/CollectorPage/Configurators/SchemaBased/SchemaBasedConfigurator.esm.js";import"../components/CollectorPage/Configurators/SCM/ScmConfigurator.esm.js";import"../components/CollectorPage/Configurators/SonarQube/SonarQubeConfigurator.esm.js";import"../components/CollectorPage/CollectorDetailsPageBUI.esm.js";import"../components/CollectorsPage/IntegrationsListPageBUI.esm.js";import"../components/CreateNewTrackPage/CreateNewTrackPage.esm.js";import"../components/OverviewPage/OverviewPageContent.esm.js";import"../components/TechInsights/TechInsightsPageBUI.esm.js";import"../components/TrackBuilderPage/TrackBuilderPage.esm.js";import"lodash";import"../components/Filter/FilterComponent.esm.js";import"../components/TrackForm/Steps/LevelsStep/LevelsStepNew.esm.js";import"../components/TrackForm/Steps/TrackDetailsStep/TrackDetailsStep.esm.js";import"../components/TrackForm/utils/validation.esm.js";import"../components/TrackPage/TrackPageBUI.esm.js";import"../components/TrackPage/TrackTechInsightsExplorerPage.esm.js";import"../components/TracksPage/TracksListPageBUI.esm.js";import"@spotify/backstage-plugin-core";import"../components/SoundcheckQueryClientProvider/SoundcheckQueryClientProvider.esm.js";import{RoutingPageWrapper as g}from"../components/RoutingPage/RoutingPageWrapper.esm.js";const o=c().with({id:"soundcheck.integrationId"}),h=l({kind:"integration",attachTo:{id:"app/routes",input:"routes"},output:[t.routePath,t.reactElement,t.routeRef.optional(),o],dataRefs:{integrationId:o},*factory({integrationId:i,loader:m,path:e,routeRef:p},{node:n}){const a=f(()=>m().then(d=>({default:()=>d})));yield t.routePath(e??`/soundcheck/integrations/${i}/edit`),yield t.reactElement(u(r(s,{node:n,children:r(g,{children:r(a,{})})}))),p&&(yield t.routeRef(p)),yield o(i)}});export{h as IntegrationPageBlueprint,o as integrationIdExtensionDataRef};
2
2
  //# sourceMappingURL=IntegrationPageBlueprint.esm.js.map
@@ -0,0 +1,2 @@
1
+ import{jsxs as s,jsx as g}from"react/jsx-runtime";const c={default:{bg:"var(--bui-bg-neutral-1)",color:"var(--bui-fg-secondary)",border:"1px solid var(--bui-border-2)"},info:{bg:"var(--bui-bg-info)",color:"var(--bui-fg-info)",border:"1px solid var(--bui-border-info)"},success:{bg:"var(--bui-bg-success)",color:"var(--bui-fg-success)",border:"1px solid var(--bui-border-success)"},warning:{bg:"var(--bui-bg-warning)",color:"var(--bui-fg-warning)",border:"1px solid var(--bui-border-warning)"},danger:{bg:"var(--bui-bg-danger)",color:"var(--bui-fg-danger)",border:"1px solid var(--bui-border-danger)"}},u=({children:a,icon:b,variant:i="default",bg:e,color:d,border:n})=>{const r=c[i],o={bg:e??r.bg,color:d??r.color,border:n??r.border};return s("span",{style:{display:"inline-flex",alignItems:"center",padding:"var(--bui-space-1) var(--bui-space-3)",borderRadius:"var(--bui-radius-full)",backgroundColor:o.bg,color:o.color,border:o.border},children:[b&&g("span",{style:{marginRight:"var(--bui-space-1)"},children:b}),a]})};export{u as Badge};
2
+ //# sourceMappingURL=Badge.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as r,Fragment as l}from"react/jsx-runtime";import{makeStyles as n,alpha as m,Box as p}from"@material-ui/core";import d from"classnames";import{BadgeVariant as s}from"../../graphql/generated/index.esm.js";import{BaseBadge as c}from"./BaseBadge.esm.js";import{StatusBadge as g}from"./StatusBadge.esm.js";const x=n(t=>({root:{background:({color:e})=>e,color:({color:e})=>e?t.palette.getContrastText(e):t.palette.text.primary,border:({size:e})=>t.palette.type==="dark"?void 0:`${e==="small"?"1px":"2px"} solid ${m(t.palette.text.primary,.8)}`,"&::after":{position:"absolute",display:"block",content:'""',top:0,left:0,width:"100%",height:"100%",borderRadius:"50%",boxShadow:["inset 0 -0.10em 0 0 rgba(0, 0, 0, 0.15)","inset 0px 0.10em 0px 0px rgba(255, 255, 255, 0.4)","inset 0px 0.9em 0px -0.4em rgba(255, 255, 255, 0.1)"].join(",")}},borderTheme:{borderColor:t.palette.text.primary,borderStyle:"solid",color:t.palette.text.primary}})),b=({className:t,badge:e,size:a="small"})=>{const i=x({color:"color"in e.options?e.options.color:void 0,size:a});if(e.variant===s.Status){const o=e.options;return r(g,{className:t,size:a,status:o.status})}if(e.variant===s.Medal){const o=e.options;return o.svg?r(p,{width:a==="small"?24:48,display:"inline-flex",alignItems:"center",justifyContent:"center",marginRight:1,children:r("img",{src:`data:image/svg+xml;utf8,${encodeURIComponent(o.svg)}`,alt:"level-badge"})}):r(c,{className:d(t,o.color?i.root:i.borderTheme),size:a,label:`L${o.level}`})}return r(l,{})};export{b as LevelBadge};
1
+ import{jsx as r,Fragment as s}from"react/jsx-runtime";import{makeStyles as n,alpha as p,Box as m}from"@material-ui/core";import d from"classnames";import{BadgeVariant as l}from"../../graphql/generated/index.esm.js";import{BaseBadge as c}from"./BaseBadge.esm.js";import{StatusBadge as g}from"./StatusBadge.esm.js";const x=n(e=>({root:{background:({color:t})=>t,color:({color:t})=>t?e.palette.getContrastText(t):e.palette.text.primary,border:({size:t})=>e.palette.type==="dark"?void 0:`${t==="small"?"1px":"2px"} solid ${p(e.palette.text.primary,.8)}`,"&::after":{position:"absolute",display:"block",content:'""',top:0,left:0,width:"100%",height:"100%",borderRadius:"50%",boxShadow:["inset 0 -0.10em 0 0 rgba(0, 0, 0, 0.15)","inset 0px 0.10em 0px 0px rgba(255, 255, 255, 0.4)","inset 0px 0.9em 0px -0.4em rgba(255, 255, 255, 0.1)"].join(",")}},borderTheme:{borderColor:e.palette.text.primary,borderStyle:"solid",color:e.palette.text.primary}})),b=({className:e,badge:t,size:a="small"})=>{const i=x({color:"color"in t.options?t.options.color:void 0,size:a});if(t.variant===l.Status){const o=t.options;return r(g,{className:e,size:a,status:o.status,pathColor:o.pathColor})}if(t.variant===l.Medal){const o=t.options;return o.svg?r(m,{width:a==="small"?24:48,display:"inline-flex",alignItems:"center",justifyContent:"center",marginRight:1,children:r("img",{src:`data:image/svg+xml;utf8,${encodeURIComponent(o.svg)}`,alt:"level-badge"})}):r(c,{className:d(e,o.color?i.root:i.borderTheme),size:a,label:`L${o.level}`})}return r(s,{})};export{b as LevelBadge};
2
2
  //# sourceMappingURL=LevelBadge.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as e,Fragment as C,jsxs as d}from"react/jsx-runtime";import{makeStyles as b,useTheme as y,Box as v,Tooltip as z}from"@material-ui/core";import $ from"@material-ui/icons/Check";import x from"@material-ui/icons/Close";import N from"@material-ui/icons/HelpOutline";import W from"@material-ui/icons/PriorityHigh";import w from"classnames";import{CircularProgressbarWithChildren as p,buildStyles as c}from"react-circular-progressbar";import"react-circular-progressbar/dist/styles.css";const f=24,L=15,h=s=>s==="small"?1:2,S=b(s=>({root:{position:"relative",display:"inline-block",alignItems:"center",justifyContent:"center",cursor:"default",lineHeight:0,width:({size:t})=>`${f*h(t)}px`,height:({size:t})=>`${f*h(t)}px`},icon:{color:s.palette.background.default,fontSize:({size:t})=>L*h(t)}})),j=({className:s,status:t,size:g="small",hideTooltip:k})=>{const l=S({size:g}),n=y();if(!t)return e(C,{});const o=t.passed+t.failed+t.warning+t.error+t.notReported,r=o?t.passed/o*100:0,a=o?t.warning/o*100:0,i=o?(t.failed+t.error)/o*100:0,m=100-r-a-i,u=e(v,{className:w(s,l.root),role:"img","aria-label":`${r} badge`,children:d(p,{value:r,strokeWidth:r<100?15:50,styles:c({pathColor:n.palette.success.main,trailColor:"transparent",strokeLinecap:"butt",rotation:0}),children:[r===100&&e($,{className:l.icon}),r<100&&d(p,{value:a,strokeWidth:a<100?15:50,styles:c({pathColor:n.palette.warning.main,trailColor:"transparent",strokeLinecap:"butt",rotation:r/100}),children:[a===100&&e(W,{className:l.icon}),a<100&&d(p,{value:i,strokeWidth:i<100?15:50,styles:c({pathColor:n.palette.error.main,trailColor:"transparent",strokeLinecap:"butt",rotation:(r+a)/100}),children:[i===100&&e(x,{className:l.icon}),i<100&&e(p,{value:m,strokeWidth:m<100?15:50,styles:c({pathColor:n.palette.divider,trailColor:"transparent",strokeLinecap:"butt",rotation:(r+a+i)/100}),children:m===100&&e(N,{className:l.icon})})]})]})]})});return k?u:e(z,{title:`${t.passed}/${o} checks passed (${Math.round(r)}%)`,children:u})};export{j as StatusBadge};
1
+ import{jsx as e,Fragment as b,jsxs as d}from"react/jsx-runtime";import{makeStyles as y,useTheme as v,Box as N,Tooltip as $}from"@material-ui/core";import x from"@material-ui/icons/Check";import z from"@material-ui/icons/Close";import W from"@material-ui/icons/HelpOutline";import w from"@material-ui/icons/PriorityHigh";import L from"classnames";import{CircularProgressbarWithChildren as p,buildStyles as c}from"react-circular-progressbar";import"react-circular-progressbar/dist/styles.css";const f=24,S=15,h=s=>s==="small"?1:2,T=y(s=>({root:{position:"relative",display:"inline-block",alignItems:"center",justifyContent:"center",cursor:"default",lineHeight:0,width:({size:t})=>`${f*h(t)}px`,height:({size:t})=>`${f*h(t)}px`},icon:{color:s.palette.background.default,fontSize:({size:t})=>S*h(t)}})),j=({className:s,status:t,size:g="small",hideTooltip:C,pathColor:k})=>{const l=T({size:g}),n=v();if(!t)return e(b,{});const o=t.passed+t.failed+t.warning+t.error+t.notReported,r=o?t.passed/o*100:0,a=o?t.warning/o*100:0,i=o?(t.failed+t.error)/o*100:0,m=100-r-a-i,u=e(N,{className:L(s,l.root),role:"img","aria-label":`${r} badge`,children:d(p,{value:r,strokeWidth:r<100?15:50,styles:c({pathColor:k??n.palette.success.main,trailColor:"transparent",strokeLinecap:"butt",rotation:0}),children:[r===100&&e(x,{className:l.icon}),r<100&&d(p,{value:a,strokeWidth:a<100?15:50,styles:c({pathColor:n.palette.warning.main,trailColor:"transparent",strokeLinecap:"butt",rotation:r/100}),children:[a===100&&e(w,{className:l.icon}),a<100&&d(p,{value:i,strokeWidth:i<100?15:50,styles:c({pathColor:n.palette.error.main,trailColor:"transparent",strokeLinecap:"butt",rotation:(r+a)/100}),children:[i===100&&e(z,{className:l.icon}),i<100&&e(p,{value:m,strokeWidth:m<100?15:50,styles:c({pathColor:n.palette.divider,trailColor:"transparent",strokeLinecap:"butt",rotation:(r+a+i)/100}),children:m===100&&e(W,{className:l.icon})})]})]})]})});return C?u:e($,{title:`${t.passed}/${o} checks passed (${Math.round(r)}%)`,children:u})};export{j as StatusBadge};
2
2
  //# sourceMappingURL=StatusBadge.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as c,Fragment as g,jsx as o}from"react/jsx-runtime";import{useRouteRef as f}from"@backstage/core-plugin-api";import{HeaderPage as u}from"@backstage/ui";import{useEffect as d}from"react";import"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import{CampaignFormProvider as e,useCampaignFormContext as C}from"../../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{useCreateCampaign as l}from"../../hooks/campaigns/useCreateCampaign.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as h}from"../../hooks/useNavigateBack.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import"react-use/lib/useAsync";import"../../graphql/generated/index.esm.js";import"react-use/lib/useAsyncRetry";import{campaignsPageRouteRef as i}from"../../routes.esm.js";import{CampaignForm as k}from"../CampaignForm/CampaignForm.esm.js";import{DocLinkButton as b}from"../DocLinkButton/DocLinkButton.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as y}from"../SoundcheckHeader/useHeader.esm.js";const x=()=>{const{setIsLoading:t}=C(),{mutateAsync:m,isLoading:r}=l();d(()=>{t(r)},[t,r]);const[a,p]=h(i),s=async n=>{await m(n,{onSuccess:p})};return y({title:"Create a Campaign",description:"Create, monitor, and manage software updates or system transitions.",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/campaigns"}),o(e,{children:o(k,{onSave:s,onCancel:a})})},F=()=>{const t=f(i);return c(g,{children:[o(u,{title:"Create Campaign",breadcrumbs:[{label:"All Campaigns",href:t()}],customActions:o(b,{href:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/campaigns/"})}),o(e,{children:o(x,{})})]})};export{F as CampaignCreatePage};
1
+ import{jsxs as c,Fragment as g,jsx as o}from"react/jsx-runtime";import{useRouteRef as f}from"@backstage/core-plugin-api";import{HeaderPage as u}from"@backstage/ui";import{useEffect as d}from"react";import"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import{CampaignFormProvider as i,useCampaignFormContext as C}from"../../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{useCreateCampaign as l}from"../../hooks/campaigns/useCreateCampaign.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as h}from"../../hooks/useNavigateBack.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import"react-use/lib/useAsync";import"../ChecksTable/utils.esm.js";import"../../graphql/generated/index.esm.js";import"react-use/lib/useAsyncRetry";import{campaignsPageRouteRef as m}from"../../routes.esm.js";import{CampaignForm as k}from"../CampaignForm/CampaignForm.esm.js";import{DocLinkButton as b}from"../DocLinkButton/DocLinkButton.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as y}from"../SoundcheckHeader/useHeader.esm.js";const x=()=>{const{setIsLoading:t}=C(),{mutateAsync:e,isLoading:r}=l();d(()=>{t(r)},[t,r]);const[a,p]=h(m),s=async n=>{await e(n,{onSuccess:p})};return y({title:"Create a Campaign",description:"Create, monitor, and manage software updates or system transitions.",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/campaigns"}),o(i,{children:o(k,{onSave:s,onCancel:a})})},F=()=>{const t=f(m);return c(g,{children:[o(u,{title:"Create Campaign",breadcrumbs:[{label:"All Campaigns",href:t()}],customActions:o(b,{href:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/campaigns/"})}),o(i,{children:o(x,{})})]})};export{F as CampaignCreatePage};
2
2
  //# sourceMappingURL=CampaignCreatePage.esm.js.map
@@ -1,2 +1,2 @@
1
- import{zodResolver as s}from"@hookform/resolvers/zod";import{useMemo as n}from"react";import{useForm as u}from"react-hook-form";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../api.esm.js";import"../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as f}from"../../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import"react-use/lib/useAsync";import"../../../graphql/generated/index.esm.js";import"react-use/lib/useAsyncRetry";import{useGetChecksMap as c}from"../../../hooks/tracks/useGetChecksMap.esm.js";import{DEFAULT_FORM_VALUES as g}from"../utils/campaignFormUtils.esm.js";import{campaignFormSchema as l}from"../utils/validation.esm.js";import{mapCampaignToFormValues as C,mapCampaignFormDataToCampaignInput as d}from"./utils.esm.js";const F=(r,o)=>{const t=n(()=>o?C(o):g,[o]),a=u({defaultValues:t,mode:"onChange",resolver:s(l)}),{showModal:i}=f(),{checksMap:e}=c();return{formMethods:a,onSubmit:async m=>{if(!await i({title:"Save Campaign",message:`Are you sure you want to save campaign: ${m.detailsStep.name}?`,error:!1}))return;const p=d(m,o,e);r(p)}}};export{F as useCampaignForm};
1
+ import{standardSchemaResolver as s}from"@hookform/resolvers/standard-schema";import{useMemo as n}from"react";import{useForm as u}from"react-hook-form";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../api.esm.js";import"../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as f}from"../../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import"react-use/lib/useAsync";import"../../ChecksTable/utils.esm.js";import"../../../graphql/generated/index.esm.js";import"react-use/lib/useAsyncRetry";import{useGetChecksMap as c}from"../../../hooks/tracks/useGetChecksMap.esm.js";import{DEFAULT_FORM_VALUES as g}from"../utils/campaignFormUtils.esm.js";import{campaignFormSchema as l}from"../utils/validation.esm.js";import{mapCampaignToFormValues as d,mapCampaignFormDataToCampaignInput as C}from"./utils.esm.js";const h=(r,o)=>{const t=n(()=>o?d(o):g,[o]),a=u({defaultValues:t,mode:"onChange",resolver:s(l)}),{showModal:i}=f(),{checksMap:e}=c();return{formMethods:a,onSubmit:async m=>{if(!await i({title:"Save Campaign",message:`Are you sure you want to save campaign: ${m.detailsStep.name}?`,error:!1}))return;const p=C(m,o,e);r(p)}}};export{h as useCampaignForm};
2
2
  //# sourceMappingURL=useCampaignForm.esm.js.map