@spotify/backstage-plugin-soundcheck 0.19.3 → 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 (224) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/alpha/integrations.esm.js +1 -1
  3. package/dist/alpha/pages.esm.js +1 -1
  4. package/dist/alpha.d.ts +2 -2
  5. package/dist/api.esm.js +1 -1
  6. package/dist/blueprints/IntegrationPageBlueprint.esm.js +1 -1
  7. package/dist/components/Badges/NoLevelBadge.esm.js +2 -2
  8. package/dist/components/CampaignCreatePage/CampaignCreatePage.esm.js +1 -1
  9. package/dist/components/CampaignForm/CampaignForm.esm.js +1 -1
  10. package/dist/components/CampaignForm/hooks/useCampaignForm.esm.js +1 -1
  11. package/dist/components/CampaignPage/CampaignPageBUI.esm.js +1 -1
  12. package/dist/components/CampaignPage/CampaignPageDeprecated.esm.js +1 -1
  13. package/dist/components/CampaignPage/CampaignStatusHistoryChart.esm.js +2 -0
  14. package/dist/components/CampaignPage/CampaignStatusHistoryTile.esm.js +1 -1
  15. package/dist/components/CampaignPage/CampaignStatusTile.esm.js +1 -1
  16. package/dist/components/CampaignPage/CampaignTechInsightsExplorerPage.esm.js +2 -0
  17. package/dist/components/CampaignsPage/CampaignListPage/CampaignListPageDeprecated.esm.js +1 -1
  18. package/dist/components/CampaignsPage/CampaignListPage/CampaignSummaryCard.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 +2 -0
  23. package/dist/components/Cards/DescriptionCard/DescriptionCard.esm.js +1 -1
  24. package/dist/components/Cards/HistoricalCheckStatusCard/HistoricalCheckStatusCard.esm.js +2 -0
  25. package/dist/components/Cards/HistoricalTrackStatusCard/HistoricalTrackStatusCard.esm.js +2 -0
  26. package/dist/components/Cards/TrackStatusCard/TrackStatusCard.esm.js +2 -0
  27. package/dist/components/CertificationAccordion/CertificationAccordion.esm.js +1 -1
  28. package/dist/components/CertificationSidebar/CertificationSidebar.esm.js +1 -1
  29. package/dist/components/CertificationSidebar/CertificationSummary.esm.js +1 -1
  30. package/dist/components/CertificationSidebar/Check.esm.js +1 -1
  31. package/dist/components/CertificationSidebar/ExemptionJustificationDialog.esm.js +1 -1
  32. package/dist/components/CertificationSidebar/LevelSummary.esm.js +1 -1
  33. package/dist/components/CertificationsPage/CertificationTab.esm.js +1 -1
  34. package/dist/components/CertificationsPage/CertificationsPage.esm.js +1 -1
  35. package/dist/components/CertificationsPage/Playlist/PlaylistContext.esm.js +1 -1
  36. package/dist/components/CertificationsPage/Playlist/PlaylistSummary.esm.js +1 -1
  37. package/dist/components/Charts/chartUtils.esm.js +1 -1
  38. package/dist/components/CheckCreatePage/CheckCreatePage.esm.js +1 -1
  39. package/dist/components/CheckDetails/CheckDetails.esm.js +1 -1
  40. package/dist/components/CheckDetails/JustificationDetails.esm.js +1 -1
  41. package/dist/components/CheckDetails/ResultStateBox.esm.js +1 -1
  42. package/dist/components/CheckForm/CheckForm.esm.js +1 -1
  43. package/dist/components/CheckForm/FormFields/RuleInput/AddMenuButton.esm.js +1 -1
  44. package/dist/components/CheckForm/FormFields/RuleInput/Conditions/useRuleOptions.esm.js +1 -1
  45. package/dist/components/CheckForm/FormFields/RuleInput/RuleInputBox.esm.js +1 -1
  46. package/dist/components/CheckForm/Steps/CheckApplicabilityStep.esm.js +1 -1
  47. package/dist/components/CheckForm/Steps/CheckDetailsStep.esm.js +1 -1
  48. package/dist/components/CheckForm/Steps/CheckRulesStep.esm.js +1 -1
  49. package/dist/components/CheckForm/useCheckForm.esm.js +1 -1
  50. package/dist/components/CheckPage/CheckEditPage.esm.js +1 -1
  51. package/dist/components/CheckPage/CheckEditView.esm.js +1 -1
  52. package/dist/components/CheckPage/CheckEntitiesTable/CheckEntitiesTableBUI.esm.js +2 -0
  53. package/dist/components/CheckPage/CheckPage.esm.js +2 -0
  54. package/dist/components/CheckPage/CheckPageBUI.esm.js +2 -0
  55. package/dist/components/CheckPage/CheckPageDeprecated.esm.js +2 -0
  56. package/dist/components/CheckPage/CheckStatusHistoryChartBUI.esm.js +2 -0
  57. package/dist/components/CheckPage/CheckStatusTableBUI.esm.js +2 -0
  58. package/dist/components/CheckPage/ExemptionsTableBUI.esm.js +2 -0
  59. package/dist/components/CheckSelection/CheckPreview.esm.js +1 -1
  60. package/dist/components/CheckSelection/CheckSelection.esm.js +1 -1
  61. package/dist/components/CheckStatusBar/CheckStatusBarBUI.esm.js +1 -1
  62. package/dist/components/CheckTemplatesPage/CheckTemplatesPage.esm.js +1 -1
  63. package/dist/components/CheckTemplatesPage/CheckTemplatesPageBUI.esm.js +2 -0
  64. package/dist/components/CheckTemplatesPage/CheckTemplatesPageDeprecated.esm.js +2 -0
  65. package/dist/components/CheckTemplatesPage/TemplateCategoryBUI.esm.js +2 -0
  66. package/dist/components/ChecksPage/CheckListPage/CheckListPageDeprecated.esm.js +1 -1
  67. package/dist/components/ChecksPage/CheckListPage/CheckSummaryCard.esm.js +1 -1
  68. package/dist/components/ChecksPage/ChecksListPageBUI.esm.js +1 -1
  69. package/dist/components/ChecksTable/ChecksTable.esm.js +1 -1
  70. package/dist/components/CollapsablePanel/CollapsablePanel.esm.js +1 -1
  71. package/dist/components/CollectorPage/CollectorDetailsPage.esm.js +1 -1
  72. package/dist/components/CollectorPage/CollectorDetailsPageBUI.esm.js +2 -0
  73. package/dist/components/CollectorPage/CollectorDetailsPageDeprecated.esm.js +2 -0
  74. package/dist/components/CollectorPage/CollectorFactTableBUI.esm.js +2 -0
  75. package/dist/components/CollectorPage/CollectorPage.esm.js +1 -1
  76. package/dist/components/CollectorPage/Configurators/AzureDevOps/AzureDevOpsConfigurator.esm.js +1 -1
  77. package/dist/components/CollectorPage/Configurators/BigQuery/BigQueryConfigurator.esm.js +1 -1
  78. package/dist/components/CollectorPage/Configurators/Catalog/CatalogConfigurator.esm.js +1 -1
  79. package/dist/components/CollectorPage/Configurators/DataDog/DataDogConfigurator.esm.js +1 -1
  80. package/dist/components/CollectorPage/Configurators/DataRegistry/DataRegistryConfigurator.esm.js +1 -1
  81. package/dist/components/CollectorPage/Configurators/Github/GithubConfigurator.esm.js +1 -1
  82. package/dist/components/CollectorPage/Configurators/Gitlab/GitlabConfigurator.esm.js +1 -1
  83. package/dist/components/CollectorPage/Configurators/HTTP/HttpConfigurator.esm.js +1 -1
  84. package/dist/components/CollectorPage/Configurators/HTTP/HttpStatusesInput.esm.js +1 -1
  85. package/dist/components/CollectorPage/Configurators/Jira/JiraConfigurator.esm.js +1 -1
  86. package/dist/components/CollectorPage/Configurators/Kubernetes/KubernetesConfigurator.esm.js +1 -1
  87. package/dist/components/CollectorPage/Configurators/NewRelic/NewRelicConfigurator.esm.js +1 -1
  88. package/dist/components/CollectorPage/Configurators/PagerDuty/PagerDutyConfigurator.esm.js +1 -1
  89. package/dist/components/CollectorPage/Configurators/SCM/ScmConfigurator.esm.js +1 -1
  90. package/dist/components/CollectorPage/Configurators/SonarQube/SonarQubeConfigurator.esm.js +1 -1
  91. package/dist/components/CollectorPage/DependantCheckCard.esm.js +2 -0
  92. package/dist/components/CollectorsPage/CollectorListPage/{CollectorListPage.esm.js → CollectorListPageDeprecated.esm.js} +2 -2
  93. package/dist/components/CollectorsPage/CollectorListPage/CollectorSummaryCard.esm.js +1 -1
  94. package/dist/components/CollectorsPage/CollectorsPage.esm.js +1 -1
  95. package/dist/components/CollectorsPage/IntegrationLogoBUI.esm.js +2 -0
  96. package/dist/components/CollectorsPage/IntegrationsListPageBUI.esm.js +2 -0
  97. package/dist/components/CustomCell/CustomCell.esm.js +1 -1
  98. package/dist/components/DescriptionCell/DescriptionCell.esm.js +2 -0
  99. package/dist/components/DocLinkButton/DocLinkButton.esm.js +2 -0
  100. package/dist/components/EmptyState/EmptyStateBUI.esm.js +1 -1
  101. package/dist/components/EmptyState/EmptyStateNoCampaigns.esm.js +1 -1
  102. package/dist/components/EmptyState/EmptyStateNoChecks.esm.js +1 -1
  103. package/dist/components/EmptyState/EmptyStateNoTracks.esm.js +1 -1
  104. package/dist/components/EntitiesAutocompletePicker/EntitiesAutocompletePicker.esm.js +1 -1
  105. package/dist/components/EntitySoundcheckCard/Card.esm.js +1 -1
  106. package/dist/components/ExpandableSection/ExpandableSection.esm.js +1 -1
  107. package/dist/components/FactExplorer/FactExplorerDialogBUI.esm.js +2 -0
  108. package/dist/components/FactExplorer/useFactOptions.esm.js +1 -1
  109. package/dist/components/Filter/EntityAutocompletePicker.esm.js +1 -1
  110. package/dist/components/Filter/FilterComponent.esm.js +1 -1
  111. package/dist/components/FilterMenu/FilterMenu.esm.js +2 -0
  112. package/dist/components/FilterSidebar/StateFilter.esm.js +1 -1
  113. package/dist/components/FormControlledAutocomplete/FormControlledAutocomplete.esm.js +1 -1
  114. package/dist/components/FormControlledAutocomplete/FormControlledMultipleAutocomplete.esm.js +1 -1
  115. package/dist/components/FormMarkdownInput/FormMarkdownInput.esm.js +1 -1
  116. package/dist/components/FormattedPreview/FormattedPreview.esm.js +1 -1
  117. package/dist/components/GroupHierarchySelector/GroupHierarchyGroupInfo.esm.js +1 -1
  118. package/dist/components/GroupHierarchySelector/GroupHierarchySelector.esm.js +1 -1
  119. package/dist/components/GroupSelectorBUI/GroupSelectList.esm.js +2 -0
  120. package/dist/components/GroupSelectorBUI/GroupSelectionHistory.esm.js +2 -0
  121. package/dist/components/GroupSelectorBUI/GroupSelectorBUI.esm.js +2 -0
  122. package/dist/components/GroupSelectorBUI/GroupTag.esm.js +2 -0
  123. package/dist/components/GroupSelectorBUI/useGroupHistory.esm.js +2 -0
  124. package/dist/components/GroupSelectorBUI/usePreviousSelectedGroups.esm.js +2 -0
  125. package/dist/components/HierarchicalTechInsightsPage/HierarchicalTechInsightsPage.esm.js +1 -1
  126. package/dist/components/HierarchicalTechInsightsPage/HierarchyTable.esm.js +1 -1
  127. package/dist/components/HierarchicalTechInsightsPage/SelectedNodeSidebar.esm.js +1 -1
  128. package/dist/components/HierarchicalTechInsightsPage/visualizations/hierarchyToNivo.esm.js +1 -1
  129. package/dist/components/ImportExportPanel/ImportExportPanelBUI.esm.js +2 -0
  130. package/dist/components/ImportExportPanel/{ImportExportPanel.esm.js → ImportExportPanelDeprecated.esm.js} +2 -2
  131. package/dist/components/LevelUpParty/LevelUpParty.esm.js +1 -1
  132. package/dist/components/LevelsTable/CheckRowContent.esm.js +1 -1
  133. package/dist/components/ListPageCustomActions/ListPageCustomActions.esm.js +1 -1
  134. package/dist/components/Menus/SimpleMenu.esm.js +2 -0
  135. package/dist/components/Menus/useCampaignActions.esm.js +2 -0
  136. package/dist/components/Menus/useCheckActions.esm.js +2 -0
  137. package/dist/components/Menus/useTrackActions.esm.js +2 -0
  138. package/dist/components/OverviewTable/Cell/CheckCellTooltip.esm.js +1 -1
  139. package/dist/components/OverviewTable/Cell/CheckLabelCell.esm.js +1 -1
  140. package/dist/components/OverviewTable/OverviewTable.esm.js +1 -1
  141. package/dist/components/OverviewTable/ResultsTable.esm.js +1 -1
  142. package/dist/components/PageCustomActions/PageCustomActions.esm.js +1 -1
  143. package/dist/components/PassRateTable/PassRateTable.esm.js +1 -1
  144. package/dist/components/QuickstartPage/QuickstartPage.esm.js +2 -2
  145. package/dist/components/RefetchingIndicator/RefetchingIndicator.esm.js +1 -1
  146. package/dist/components/Router.esm.js +1 -1
  147. package/dist/components/RoutingPage/RoutingMainMenu.esm.js +2 -0
  148. package/dist/components/RoutingPage/RoutingPage.esm.js +1 -1
  149. package/dist/components/RoutingPage/RoutingPageBUI.esm.js +2 -0
  150. package/dist/components/RoutingPage/RoutingPageDeprecated.esm.js +2 -0
  151. package/dist/components/RoutingPage/RoutingPageWrapper.esm.js +2 -0
  152. package/dist/components/RoutingPage/RoutingPageWrapperBUI.esm.js +2 -0
  153. package/dist/components/RoutingPage/RoutingPageWrapperDeprecated.esm.js +2 -0
  154. package/dist/components/RoutingPage/index.esm.js +1 -1
  155. package/dist/components/SendCampaignNotificationDialog/SendCampaignNotificationDialog.esm.js +1 -1
  156. package/dist/components/SoundcheckHeader/SoundcheckHeaderBUI.esm.js +2 -0
  157. package/dist/components/SoundcheckMarkdownContent/ComponentRenders.esm.js +1 -1
  158. package/dist/components/SoundcheckMarkdownContent/SoundcheckMarkdownContentBUI.esm.js +2 -0
  159. package/dist/components/SoundcheckMarkdownContent/SoundcheckMarkdownContentDeprecated.esm.js +2 -0
  160. package/dist/components/StatusBar/StatusBar.esm.js +2 -0
  161. package/dist/components/SummaryCard/SummaryCard.esm.js +1 -1
  162. package/dist/components/TableRowWithOwner/TableRowWithOwner.esm.js +1 -1
  163. package/dist/components/TechHealth/Filters/FacetFilter.esm.js +1 -1
  164. package/dist/components/TechHealth/Filters/useFacetOptions.esm.js +1 -1
  165. package/dist/components/TechHealth/Loading/TechHealthLoading.esm.js +1 -1
  166. package/dist/components/TechHealth/TechHealth.esm.js +1 -1
  167. package/dist/components/TechHealthSummary/SummaryAggregationsProvider.esm.js +1 -1
  168. package/dist/components/TechHealthTabs/CampaignResultsTab/CampaignResultsTab.esm.js +1 -1
  169. package/dist/components/TechHealthTabs/CheckResultsTab/CheckResultsTab.esm.js +1 -1
  170. package/dist/components/TechHealthTabs/EntityResultsTab/EntityResultsTab.esm.js +1 -1
  171. package/dist/components/TechHealthTabs/GroupResultsTab/GroupResultsTab.esm.js +1 -1
  172. package/dist/components/TechHealthTabs/NameColumn.esm.js +1 -1
  173. package/dist/components/TechHealthTabs/TrackResultsTab/TrackResultsTab.esm.js +1 -1
  174. package/dist/components/TechInsights/SummaryTiles.esm.js +1 -1
  175. package/dist/components/TechInsights/SummaryTilesBUI.esm.js +2 -0
  176. package/dist/components/TechInsights/TechInsightsPage.esm.js +1 -1
  177. package/dist/components/TechInsights/TechInsightsPageBUI.esm.js +2 -0
  178. package/dist/components/TechInsights/TechInsightsPageDeprecated.esm.js +2 -0
  179. package/dist/components/TechInsights/TechInsightsTableBUI.esm.js +1 -1
  180. package/dist/components/TechInsights/TechInsightsTableView.esm.js +1 -1
  181. package/dist/components/TechInsightsExplorerTable/TechInsightsExplorerTable.esm.js +2 -0
  182. package/dist/components/TechInsightsGroupSelector/TechInsightsGroupSelector.esm.js +1 -1
  183. package/dist/components/TimePeriodBar/TimePeriodBar.esm.js +1 -1
  184. package/dist/components/TimePeriodBar/TimePeriodBarBUI.esm.js +2 -0
  185. package/dist/components/TopAndBottomPerformingTeams/TopAndBottomPerformingTeams.esm.js +2 -0
  186. package/dist/components/TopFailingChecksTable/TopFailingChecksTableBUI.esm.js +1 -1
  187. package/dist/components/TrackCreatePage/TrackCreatePage.esm.js +1 -1
  188. package/dist/components/TrackEditPage/TrackEditPage.esm.js +1 -1
  189. package/dist/components/TrackEditPage/TrackEditView.esm.js +1 -1
  190. package/dist/components/TrackForm/TrackForm.esm.js +1 -1
  191. package/dist/components/TrackForm/utils/useTrackForm.esm.js +1 -1
  192. package/dist/components/TrackPage/TrackEntitiesTable/TrackEntitiesTableBUI.esm.js +1 -1
  193. package/dist/components/TrackPage/TrackHistoryChartBUI.esm.js +2 -0
  194. package/dist/components/TrackPage/TrackPageBUI.esm.js +1 -1
  195. package/dist/components/TrackPage/TrackPageDeprecated.esm.js +1 -1
  196. package/dist/components/TrackPage/TrackStatusBarBUI.esm.js +2 -0
  197. package/dist/components/TrackPage/TrackStatusTableBUI.esm.js +2 -0
  198. package/dist/components/TrackPage/TrackTechInsightsExplorerPage.esm.js +2 -0
  199. package/dist/components/TrackSelection/TrackSelection.esm.js +1 -1
  200. package/dist/components/TracksPage/TrackListPage/TrackListPageDeprecated.esm.js +1 -1
  201. package/dist/components/TracksPage/TrackListPage/TrackSummaryCard.esm.js +1 -1
  202. package/dist/components/TracksPage/TracksListPageBUI.esm.js +1 -1
  203. package/dist/components/TracksPage/TracksPage.esm.js +1 -1
  204. package/dist/graphql/generated/index.esm.js +1 -0
  205. package/dist/hooks/filters/useFilters.esm.js +2 -0
  206. package/dist/hooks/groups/useGroupOptions.esm.js +1 -1
  207. package/dist/hooks/heirarchy/useGroupHierarchy.esm.js +1 -1
  208. package/dist/hooks/tracks/useTracksApplicableToGroup.esm.js +1 -1
  209. package/dist/hooks/usePagination.esm.js +1 -1
  210. package/dist/hooks/useSortTableLocalStorage.esm.js +2 -0
  211. package/dist/routes.esm.js +1 -1
  212. package/dist/utils/charts.esm.js +1 -1
  213. package/dist/utils/formStyles.esm.js +1 -1
  214. package/dist/utils/time.esm.js +1 -1
  215. package/package.json +21 -20
  216. package/dist/components/Cards/CurrentStatusCard/CurrentStatusCard.esm.js +0 -2
  217. package/dist/components/Cards/CurrentStatusCard/CurrentStatusCardRow.esm.js +0 -2
  218. package/dist/components/CheckPage/CheckInsightsPage.esm.js +0 -2
  219. package/dist/components/CheckStatusBar/CheckStatusBarCell.esm.js +0 -2
  220. package/dist/components/GroupHierarchySelector/usePreviousSelectedGroups.esm.js +0 -2
  221. package/dist/components/SoundcheckMarkdownContent/SoundcheckMarkdownContent.esm.js +0 -2
  222. package/dist/hooks/checks/useCheckStatusTotals.esm.js +0 -2
  223. package/dist/utils/checks.esm.js +0 -2
  224. /package/dist/{components/GroupHierarchySelector → utils}/getAllOwnedEntityCount.esm.js +0 -0
@@ -0,0 +1,2 @@
1
+ import{jsx as i,jsxs as n}from"react/jsx-runtime";import{Text as c}from"@backstage/ui";import{makeStyles as g,createStyles as f}from"@material-ui/core/styles";import{Skeleton as v}from"@material-ui/lab";import{memo as y,Fragment as b}from"react";import{chartStatuses as x,getChartStatusKey as C,getChartStatusColor as S}from"../../utils/charts.esm.js";import{compactNumberFormatter as d}from"../../utils/formatters.esm.js";import{CheckStateCategories as k,CheckState as N}from"./utils.esm.js";const T=g(()=>f({container:{display:"grid",gridTemplateColumns:"3fr 2fr",gap:"var(--bui-space-1)",minWidth:0},item:{display:"flex",alignItems:"center",minWidth:0},legendDash:{width:"var(--bui-space-3)",height:"var(--bui-space-1_5)",borderRadius:"var(--bui-space-1)",marginRight:"var(--bui-space-2)"},category:{display:"flex",alignItems:"center",minWidth:0,flex:1},categoryText:{whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",minWidth:0,flex:1},valueCell:{justifyContent:"flex-end",whiteSpace:"nowrap"},percentage:{marginLeft:"var(--bui-space-1)"}})),w=y(({checkStatus:r,states:l})=>{const a=T(),p=x.map(t=>{const e=C(t),s=S(e);return{name:t,key:e,color:s}}),o=r?r.numberOfEntities-r.notApplicable-r.exempt:-1,h=t=>{let e=!1;return l?.length&&(t===k.NOT_REPORTED?e=l.includes(N.NOT_REPORTED):e=l.includes(t.toUpperCase())),!l?.length||e?Number(r?.[t]??0)??0:0};return i("div",{className:a.container,children:p.map(({name:t,key:e,color:s})=>{const m=h(e),u=o>0?Math.round(m/o*100):0;return n(b,{children:[i("div",{className:a.item,children:n("div",{className:a.category,children:[i("span",{className:a.legendDash,style:{backgroundColor:s}}),i(c,{className:a.categoryText,variant:"body-small",children:t})]})}),i("div",{className:`${a.item} ${a.valueCell}`,children:r?n(c,{variant:"body-small",children:[d(m)," of"," ",d(o)," (",u,"%)"]}):i(v,{width:120,height:20})})]},e)})})});export{w as CheckStatusTableBUI};
2
+ //# sourceMappingURL=CheckStatusTableBUI.esm.js.map
@@ -0,0 +1,2 @@
1
+ import{jsx as i,jsxs as m,Fragment as D}from"react/jsx-runtime";import{parseEntityRef as o}from"@backstage/catalog-model";import{useRouteRef as N,useApi as U}from"@backstage/core-plugin-api";import{entityRouteRef as $,entityPresentationApiRef as F}from"@backstage/plugin-catalog-react";import{Table as H,TableHeader as M,Column as d,TableBody as O,Row as z,Cell as y,TooltipTrigger as J,Button as V,Tooltip as q,TablePagination as G}from"@backstage/ui";import{makeStyles as K}from"@material-ui/core";import{useState as _,useMemo as l,useCallback as Q}from"react";import{useNavigate as X}from"react-router-dom";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{usePagination as Y}from"../../hooks/usePagination.esm.js";import"react-use/lib/useLocalStorage";import{useExemptions as Z}from"../../hooks/exemptions/useExemptions.esm.js";import{formatTimestamp as ee}from"../../utils/time.esm.js";import{CustomCell as te}from"../CustomCell/CustomCell.esm.js";import"../EmptyState/EmptyState.esm.js";import{EmptyStateBUI as C}from"../EmptyState/EmptyStateBUI.esm.js";import"@backstage/plugin-permission-react";import"@remixicon/react";import"../../routes.esm.js";import{LoadingTableSkeleton as ie}from"../LoadingTableSkeleton/LoadingTableSkeleton.esm.js";const S=10,re=K(f=>({justificationCell:{overflow:"hidden",textOverflow:"ellipsis",display:"-webkit-box",WebkitLineClamp:2,WebkitBoxOrient:"vertical",whiteSpace:"pre-line",wordBreak:"break-word",fontWeight:"normal",textAlign:"left",background:"none !important",padding:0},emptyStateWrapper:{padding:f.spacing(2)}})),oe=({checkId:f,searchValue:u})=>{const j=re(),w=X(),b=N($),[c,R]=_("ascending"),[h,P]=_("entity"),{data:p,isLoading:B,error:E}=Z(f),v=l(()=>p?.totalCount??0,[p]),g=l(()=>p?.edges??[],[p]),L=Q(t=>{const e=o(t),r=b(e);w(`${r}/soundcheck`)},[w,b]),s=l(()=>{const t=(e,r)=>e<r?c==="ascending"?-1:1:e>r?c==="ascending"?1:-1:0;return[...g].sort((e,r)=>{const n=e.node,a=r.node;switch(h){case"entity":return t(o(n.entity_ref).name,o(a.entity_ref).name);case"justification":return t(n.justification??"",a.justification??"");case"user":return t(o(n.user_ref).name,o(a.user_ref).name);case"date":return t(n.timestamp,a.timestamp);default:return 0}})},[g,h,c]),k=U(F),x=l(()=>{const t=new Map;for(const{node:e}of s){const r=k.forEntity(e.entity_ref)?.snapshot?.primaryTitle;r&&t.set(e.entity_ref,r)}return t},[s,k]),T=l(()=>{if(!u?.length)return s;const t=u.toLowerCase().trim();return s.filter(({node:e})=>x.get(e.entity_ref)?.toLowerCase().includes(t))},[s,u,x]),A=v>S,{paginatedItems:I,paginationProps:W}=Y({pageParam:"perPage",defaultPageSize:S,items:T});return B?i(ie,{}):E?i(C,{title:"Exemptions failed",body:"Failed to load exemptions."}):!g.length||!T.length?i(C,{title:"No check exemptions found",body:"There are no check exemptions found."}):m(D,{children:[m(H,{onSortChange:({direction:t,column:e})=>{P(e),R(t)},sortDescriptor:{direction:c,column:h},children:[m(M,{children:[i(d,{id:"entity",allowsSorting:!0,isRowHeader:!0,style:{width:"35%"},children:"Entity"}),i(d,{id:"justification",style:{width:"40%"},children:"Justification"}),i(d,{id:"user",allowsSorting:!0,style:{width:"15%"},children:"User"}),i(d,{id:"date",allowsSorting:!0,style:{width:"10%"},children:"Date"})]}),i(O,{children:I.map(t=>{const e=t.node,r=ee(e.timestamp),n=o(e.user_ref),a=o(e.entity_ref);return m(z,{onAction:()=>L(e.entity_ref),children:[i(y,{title:a.name}),i(te,{children:m(J,{children:[i(V,{variant:"tertiary",className:j.justificationCell,children:e.justification}),i(q,{children:e.justification})]})}),i(y,{title:n.name}),i(y,{title:r})]},`${e.entity_ref}-${e.check_id}`)})})]}),A&&i(G,{...W})]})};export{oe as ExemptionsTableBUI};
2
+ //# sourceMappingURL=ExemptionsTableBUI.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as a,jsx as e}from"react/jsx-runtime";import{EntityRefLink as c}from"@backstage/plugin-catalog-react";import{makeStyles as o,Box as i,Typography as n}from"@material-ui/core";import{dump as l}from"js-yaml";import{useContext as d}from"react";import{SoundcheckMarkdownContent as m}from"../SoundcheckMarkdownContent/SoundcheckMarkdownContent.esm.js";import"@backstage/core-components";import"react-markdown";import"rehype-raw";import"remark-gfm";import{CheckPreviewContext as s}from"./CheckPreviewContext.esm.js";const h=o(r=>({checkPreview:{padding:r.spacing(1,2),border:`1px solid ${r.palette.divider}`,borderRadius:r.spacing(1),height:"99%",overflow:"auto"},markdownArea:{border:`1px solid ${r.palette.divider}`,borderRadius:r.spacing(1),padding:r.spacing(0,1.5),"& p":{margin:r.spacing(1,0)},maxHeight:300,overflow:"auto"},yamlArea:{margin:r.spacing(.5,0),marginLeft:r.spacing(1)}})),p=()=>{const r=h(),{check:t}=d(s);return a(i,{className:r.checkPreview,children:[t&&a(i,{children:[e(i,{marginBottom:1,children:e(n,{variant:"subtitle1",children:t.name})}),a(i,{marginBottom:2,children:[e(n,{variant:"subtitle2",children:"Id"}),e(n,{variant:"body2",children:t.id})]}),a(i,{marginBottom:2,children:[e(n,{variant:"subtitle2",children:"Description"}),e(m,{className:r.markdownArea,content:t.description??"N/A"})]}),t.ownerEntityRef&&a(i,{marginBottom:2,children:[e(n,{variant:"subtitle2",children:"Owner"}),e(i,{children:e(c,{target:"_blank",rel:"noreferrer",entityRef:t.ownerEntityRef})})]}),a(i,{marginBottom:2,children:[e(n,{variant:"subtitle2",children:"Type"}),e(i,{children:e(n,{variant:"body2",children:t.type??"default"})})]}),a(i,{marginBottom:2,children:[e(n,{variant:"subtitle2",children:"Check Rule"}),e(i,{children:e("pre",{className:r.yamlArea,children:l(t.rule)})})]}),t.filter&&a(i,{marginBottom:2,children:[e(n,{variant:"subtitle2",children:"Inclusion Filters"}),e(i,{children:e("pre",{className:r.yamlArea,children:l(t.filter)})})]}),t.exclude&&a(i,{marginBottom:2,children:[e(n,{variant:"subtitle2",children:"Exclusion Filters"}),e(i,{children:e("pre",{className:r.yamlArea,children:l(t.exclude)})})]}),t.applicable&&a(i,{marginBottom:2,children:[e(n,{variant:"subtitle2",children:"Applicability Rule"}),e(i,{children:e("pre",{className:r.yamlArea,children:l(t.applicable)})})]})]}),!t&&e(i,{textAlign:"center",height:"100%",display:"flex",justifyContent:"center",alignItems:"center",children:e(n,{children:"Click a check to view it's properties."})})]})};export{p as CheckPreview};
1
+ import{jsxs as a,jsx as e}from"react/jsx-runtime";import{EntityRefLink as c}from"@backstage/plugin-catalog-react";import{makeStyles as o,Box as r,Typography as n}from"@material-ui/core";import{dump as l}from"js-yaml";import{useContext as d}from"react";import{SoundcheckMarkdownContentDeprecated as m}from"../SoundcheckMarkdownContent/SoundcheckMarkdownContentDeprecated.esm.js";import"@backstage/core-components";import"react-markdown";import"rehype-raw";import"remark-gfm";import"../SoundcheckMarkdownContent/SoundcheckMarkdownContentBUI.esm.js";import{CheckPreviewContext as s}from"./CheckPreviewContext.esm.js";const h=o(i=>({checkPreview:{padding:i.spacing(1,2),border:`1px solid ${i.palette.divider}`,borderRadius:i.spacing(1),height:"99%",overflow:"auto"},markdownArea:{border:`1px solid ${i.palette.divider}`,borderRadius:i.spacing(1),padding:i.spacing(0,1.5),"& p":{margin:i.spacing(1,0)},maxHeight:300,overflow:"auto"},yamlArea:{margin:i.spacing(.5,0),marginLeft:i.spacing(1)}})),p=()=>{const i=h(),{check:t}=d(s);return a(r,{className:i.checkPreview,children:[t&&a(r,{children:[e(r,{marginBottom:1,children:e(n,{variant:"subtitle1",children:t.name})}),a(r,{marginBottom:2,children:[e(n,{variant:"subtitle2",children:"Id"}),e(n,{variant:"body2",children:t.id})]}),a(r,{marginBottom:2,children:[e(n,{variant:"subtitle2",children:"Description"}),e(m,{className:i.markdownArea,content:t.description??"N/A"})]}),t.ownerEntityRef&&a(r,{marginBottom:2,children:[e(n,{variant:"subtitle2",children:"Owner"}),e(r,{children:e(c,{target:"_blank",rel:"noreferrer",entityRef:t.ownerEntityRef})})]}),a(r,{marginBottom:2,children:[e(n,{variant:"subtitle2",children:"Type"}),e(r,{children:e(n,{variant:"body2",children:t.type??"default"})})]}),a(r,{marginBottom:2,children:[e(n,{variant:"subtitle2",children:"Check Rule"}),e(r,{children:e("pre",{className:i.yamlArea,children:l(t.rule)})})]}),t.filter&&a(r,{marginBottom:2,children:[e(n,{variant:"subtitle2",children:"Inclusion Filters"}),e(r,{children:e("pre",{className:i.yamlArea,children:l(t.filter)})})]}),t.exclude&&a(r,{marginBottom:2,children:[e(n,{variant:"subtitle2",children:"Exclusion Filters"}),e(r,{children:e("pre",{className:i.yamlArea,children:l(t.exclude)})})]}),t.applicable&&a(r,{marginBottom:2,children:[e(n,{variant:"subtitle2",children:"Applicability Rule"}),e(r,{children:e("pre",{className:i.yamlArea,children:l(t.applicable)})})]})]}),!t&&e(r,{textAlign:"center",height:"100%",display:"flex",justifyContent:"center",alignItems:"center",children:e(n,{children:"Click a check to view it's properties."})})]})};export{p as CheckPreview};
2
2
  //# sourceMappingURL=CheckPreview.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as n,Fragment as w,jsx as o}from"react/jsx-runtime";import{makeStyles as I,Box as c,Checkbox as $,Typography as B,FormHelperText as N,Button as T}from"@material-ui/core";import L from"@material-ui/icons/CheckCircleOutlined";import{isEmpty as O,last as A,difference as R}from"lodash";import{useContext as f,useMemo as u}from"react";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import{useGetChecks as z}from"../../hooks/checks/useGetChecks.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import"../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{ControlledAutocomplete as E}from"../FormControlledAutocomplete/ControlledAutocomplete.esm.js";import{CheckPreviewContext as x}from"./CheckPreviewContext.esm.js";const C=I(e=>({checkSelectCard:{padding:e.spacing(1,2),border:`1px solid ${e.palette.divider}`,borderRadius:e.spacing(.25),"&:hover":{cursor:"pointer"},display:"flex",alignItems:"center",background:e.palette.background.default,minWidth:200},selectedCard:{border:`1px solid ${e.palette.border}`},selectedIcon:{color:e.palette.text.secondary},checkCardInfo:{textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden"},selectArea:{display:"flex",flexDirection:"column",gap:e.spacing(.75)},removeButton:{margin:0,marginLeft:e.spacing(1),padding:0,color:e.palette.text.primary},wrapper:{padding:e.spacing(1),border:`1px solid ${e.palette.divider}`,borderRadius:e.spacing(1)},wrapperError:{border:`1px solid ${e.palette.error.main}`},checkSearch:{background:e.palette.background.paper}})),j=({check:e,removeCheck:h})=>{const i=C(),{updateCheck:d,check:p}=f(x),m=e&&p?.id===e.id;return e?n(c,{className:`${i.checkSelectCard} ${m?i.selectedCard:""}`,onClick:()=>d(e),children:[o(L,{className:m?i.selectedIcon:"",fontSize:"small"}),o(c,{className:i.checkCardInfo,flex:1,marginLeft:2,children:e.name}),o(T,{onClick:()=>{h(e.id)},className:i.removeButton,variant:"text",size:"small","aria-label":`remove check ${e.id}`,children:"Remove"})]}):null},F=({currentSectionCheckIds:e,addCheckToSelection:h,removeCheck:i,error:d,helperText:p,blankText:m})=>{const s=C(),{data:k,isLoading:b}=z({ids:void 0}),{updateCheck:v}=f(x),a=u(()=>k?.edges.map(r=>r.node)??[],[k]),S=u(()=>a.map(r=>r.id)??[],[a]),y=r=>{if(r.length>e.length){const t=A(r),l=a.find(g=>g.id===t);h(l),l&&v(l)}if(r.length<e.length){const t=R(e,r)?.[0];t&&i(t)}};return n(w,{children:[n(c,{className:`${s.wrapper} ${d?s.wrapperError:""}`,children:[o(c,{className:s.checkSearch,marginBottom:1,children:o(E,{multiple:!0,disableCloseOnSelect:!0,options:S,renderOption:(r,{selected:t})=>{const l=a.find(g=>g.id===r);return n(c,{display:"flex",alignItems:"center",gridGap:4,children:[o($,{checked:t,size:"small",color:"primary"}),o(c,{children:l?l.name:r})]})},getOptionLabel:r=>a.find(t=>t.id===r)?.name??r,multipleValue:e,onChange:y,isLoading:b,placeholder:"Check Search",autoSelect:!1,testId:"check-search",getOptionSelected:(r,t)=>t.includes(r)})}),n(c,{className:s.selectArea,children:[O(e)&&o(c,{marginTop:1,marginBottom:1,textAlign:"center",children:o(B,{children:m??"Select checks from the dropdown above."})}),e.map(r=>o(j,{removeCheck:i,check:a.find(t=>t.id===r)},r))]})]}),p&&o(N,{error:d,children:p})]})};export{F as CheckSelection};
1
+ import{jsxs as n,Fragment as w,jsx as o}from"react/jsx-runtime";import{makeStyles as I,Box as c,Checkbox as $,Typography as B,FormHelperText as N,Button as T}from"@material-ui/core";import L from"@material-ui/icons/CheckCircleOutlined";import{isEmpty as O,last as A,difference as R}from"lodash";import{useContext as f,useMemo as u}from"react";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import{useGetChecks as z}from"../../hooks/checks/useGetChecks.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import"../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{ControlledAutocomplete as E}from"../FormControlledAutocomplete/ControlledAutocomplete.esm.js";import{CheckPreviewContext as x}from"./CheckPreviewContext.esm.js";const C=I(e=>({checkSelectCard:{padding:e.spacing(1,2),border:`1px solid ${e.palette.divider}`,borderRadius:e.spacing(.25),"&:hover":{cursor:"pointer"},display:"flex",alignItems:"center",background:e.palette.background.default,minWidth:200},selectedCard:{border:`1px solid ${e.palette.border}`},selectedIcon:{color:e.palette.text.secondary},checkCardInfo:{textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden"},selectArea:{display:"flex",flexDirection:"column",gap:e.spacing(.75)},removeButton:{margin:0,marginLeft:e.spacing(1),padding:0,color:e.palette.text.primary},wrapper:{padding:e.spacing(1),border:`1px solid ${e.palette.divider}`,borderRadius:e.spacing(1)},wrapperError:{border:`1px solid ${e.palette.error.main}`},checkSearch:{background:e.palette.background.paper}})),j=({check:e,removeCheck:h})=>{const i=C(),{updateCheck:d,check:p}=f(x),m=e&&p?.id===e.id;return e?n(c,{className:`${i.checkSelectCard} ${m?i.selectedCard:""}`,onClick:()=>d(e),children:[o(L,{className:m?i.selectedIcon:"",fontSize:"small"}),o(c,{className:i.checkCardInfo,flex:1,marginLeft:2,children:e.name}),o(T,{onClick:()=>{h(e.id)},className:i.removeButton,variant:"text",size:"small","aria-label":`remove check ${e.id}`,children:"Remove"})]}):null},F=({currentSectionCheckIds:e,addCheckToSelection:h,removeCheck:i,error:d,helperText:p,blankText:m})=>{const s=C(),{data:k,isLoading:b}=z({ids:void 0}),{updateCheck:v}=f(x),a=u(()=>k?.edges.map(r=>r.node)??[],[k]),S=u(()=>a.map(r=>r.id)??[],[a]),y=r=>{if(r.length>e.length){const t=A(r),l=a.find(g=>g.id===t);h(l),l&&v(l)}if(r.length<e.length){const t=R(e,r)?.[0];t&&i(t)}};return n(w,{children:[n(c,{className:`${s.wrapper} ${d?s.wrapperError:""}`,children:[o(c,{className:s.checkSearch,marginBottom:1,children:o(E,{multiple:!0,disableCloseOnSelect:!0,options:S,renderOption:(r,{selected:t})=>{const l=a.find(g=>g.id===r);return n(c,{display:"flex",alignItems:"center",gridGap:4,children:[o($,{checked:t,size:"small",color:"primary"}),o(c,{children:l?l.name:r})]})},getOptionLabel:r=>a.find(t=>t.id===r)?.name??r,multipleValue:e,onChange:y,isLoading:b,placeholder:"Check Search",autoSelect:!1,testId:"check-search",getOptionSelected:(r,t)=>t.includes(r)})}),n(c,{className:s.selectArea,children:[O(e)&&o(c,{marginTop:1,marginBottom:1,textAlign:"center",children:o(B,{children:m??"Select checks from the dropdown above."})}),e.map(r=>o(j,{removeCheck:i,check:a.find(t=>t.id===r)},r))]})]}),p&&o(N,{error:d,children:p})]})};export{F as CheckSelection};
2
2
  //# sourceMappingURL=CheckSelection.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as r,jsxs as u}from"react/jsx-runtime";import{Box as e,Flex as n}from"@backstage/ui";import{makeStyles as t}from"@material-ui/core";const g=t(()=>({container:{gap:"var(--bui-space-1)",width:"100%"},passedBar:{height:"var(--bui-space-1_5)",background:"var(--bui-fg-success)",border:"var(--bui-space-0_5) solid var(--bui-fg-success)",borderRadius:"var(--bui-space-1)"},failedBar:{height:"var(--bui-space-1_5)",background:"var(--bui-fg-danger)",border:"var(--bui-space-0_5) solid var(--bui-fg-danger)",borderRadius:"var(--bui-space-1)"},warningBar:{height:"var(--bui-space-1_5)",background:"var(--bui-fg-warning)",border:"var(--bui-space-0_5) solid var(--bui-fg-warning)",borderRadius:"var(--bui-space-1)"},noneBar:{height:"var(--bui-space-1_5)",background:"var(--bui-fg-disabled)",border:"var(--bui-space-0_5) solid var(--bui-fg-disabled)",borderRadius:"var(--bui-space-1)"}})),l=({passedPercent:i,failedPercent:s,warningPercent:d})=>{const a=g(),c=[i,s,d].filter(b=>!!b),o=c.length===1;return c.every(b=>b===0)?r(e,{width:"100%",className:a.noneBar}):u(n,{className:a.container,children:[!!i&&r(e,{className:a.passedBar,style:{flexGrow:i,width:o?"100%":void 0}}),!!s&&r(e,{className:a.failedBar,style:{flexGrow:s,width:o?"100%":void 0}}),!!d&&r(e,{className:a.warningBar,style:{flexGrow:d,width:o?"100%":void 0}})]})};export{l as CheckStatusBarBUI};
1
+ import{jsx as l}from"react/jsx-runtime";import{Box as m,Flex as R}from"@backstage/ui";import{makeStyles as S}from"@material-ui/core/styles";import{useMemo as u}from"react";import{getChartStatusKeys as y,calculateAdjustedBarWidths as E,getChartStatusColor as k}from"../../utils/charts.esm.js";import{CheckState as a}from"../CheckPage/utils.esm.js";const v=S(()=>({container:{gap:"var(--bui-space-1)",width:"100%"},barSegment:{height:"var(--bui-space-1_5)",borderRadius:"var(--bui-space-1)"},emptyBar:{width:"100%",background:"var(--bui-fg-disabled)"}})),x=({status:r,states:e})=>{const s=v(),n=u(()=>({passed:!e?.length||e.includes(a.PASSED)?r?.passed??0:0,failed:!e?.length||e.includes(a.FAILED)?r?.failed??0:0,warning:!e?.length||e.includes(a.WARNING)?r?.warning??0:0,error:!e?.length||e.includes(a.ERROR)?r?.error??0:0,exempt:!e?.length||e.includes(a.EXEMPT)?r?.exempt??0:0,notReported:!e?.length||e.includes(a.NOT_REPORTED)?r?.notReported??0:0}),[r,e]),o=y(),c=o.map(t=>n[t]).filter(t=>typeof t=="number"),p=o.every(t=>(n[t]||0)===0),g=u(()=>E(c),[c]);let i;return p?i=l(m,{className:`${s.barSegment} ${s.emptyBar}`}):i=o.map((t,d)=>{const h=n[t],b=k(t)||"var(--bui-fg-disabled)",f=g[d]||0;return h<=0?null:l(m,{className:s.barSegment,style:{backgroundColor:b,width:`${f}%`}},`check-status-bar-segment-${d}`)}),l(R,{className:s.container,children:i})};export{x as CheckStatusBarBUI};
2
2
  //# sourceMappingURL=CheckStatusBarBUI.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as n,jsx as e}from"react/jsx-runtime";import{Content as f,ItemCardGrid as g}from"@backstage/core-components";import{useRouteRef as k}from"@backstage/core-plugin-api";import{Typography as a,Box as l,Card as C,CardContent as y}from"@material-ui/core";import{makeStyles as L}from"@material-ui/core/styles";import b from"lodash";import{useMemo as d,useEffect as x}from"react";import{Link as v}from"react-router-dom";import{useCheckTemplates as N}from"../../hooks/checks/useCheckTemplates.esm.js";import{useLCPReporting as R}from"../../hooks/useLCPReporting.esm.js";import{useLoadTimeReporting as T}from"../../hooks/useLoadTimeReporting.esm.js";import{checkCreateRouteRef as j}from"../../routes.esm.js";import{LoadingIndicator as P}from"../LoadingIndicator/LoadingIndicator.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as B}from"../SoundcheckHeader/useHeader.esm.js";import{TemplateCategory as D}from"./TemplateCategory.esm.js";const G=L(t=>({content:{display:"flex",flexDirection:"column",gap:t.spacing(2)},grid:{marginLeft:t.spacing(2)},cardContent:{"&:hover":{backgroundColor:t.palette.action.hover}},docsLink:{color:t.palette.text.primary},link:{textDecoration:"none"}})),I=()=>{const t=d(()=>({routeName:"soundcheck-check-templates"}),[]),{reportContentLoaded:m}=T(t),{reporter:h}=R(t),r=G(),u=k(j),{data:o,isLoading:c}=N(),s=d(()=>b.groupBy(o??[],"category"),[o]);B({title:"What would you like to check?",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/checks"});const p=h?.getLCPValue();return x(()=>{c||m({lcp:p})},[c,m,p]),n("div",{children:[c&&e(P,{}),o&&o.length===0&&e(a,{children:"No check templates."}),o&&o.length&&n(f,{className:r.content,children:[e(l,{className:r.grid,children:e(g,{children:e(v,{to:u(),className:r.link,children:e(C,{children:n(y,{className:r.cardContent,children:[e(l,{mb:1,children:e(a,{variant:"subtitle1",style:{fontWeight:"bold"},component:"div",children:"Custom Check"})}),e(a,{variant:"body1",children:"Create a custom check using the facts collected about your entities."})]})})})})}),Object.keys(s).sort().map(i=>e(D,{name:i,templates:s[i]},i))]})]})};export{I as CheckTemplatesPage};
1
+ import{jsx as e}from"react/jsx-runtime";import{useFeatureFlag as t}from"../../hooks/useFeatureFlag.esm.js";import{CheckTemplatesPageBUI as a}from"./CheckTemplatesPageBUI.esm.js";import{CheckTemplatesPageDeprecated as m}from"./CheckTemplatesPageDeprecated.esm.js";const r=()=>t("backstage-ui")?e(a,{}):e(m,{});export{r as CheckTemplatesPage};
2
2
  //# sourceMappingURL=CheckTemplatesPage.esm.js.map
@@ -0,0 +1,2 @@
1
+ import{jsx as e,jsxs as o,Fragment as m}from"react/jsx-runtime";import{useRouteRef as u}from"@backstage/core-plugin-api";import{Grid as f,Link as y,Card as R,CardHeader as x,Text as l,CardBody as L,Box as n,HeaderPage as B}from"@backstage/ui";import{makeStyles as N}from"@material-ui/core/styles";import{groupBy as T}from"lodash";import{useMemo as g,useEffect as v}from"react";import{useCheckTemplates as P}from"../../hooks/checks/useCheckTemplates.esm.js";import{useLCPReporting as H}from"../../hooks/useLCPReporting.esm.js";import{useLoadTimeReporting as I}from"../../hooks/useLoadTimeReporting.esm.js";import{checkCreateRouteRef as j,checksPageRouteRef as D}from"../../routes.esm.js";import{DocLinkButton as U}from"../DocLinkButton/DocLinkButton.esm.js";import"../EmptyState/EmptyState.esm.js";import{EmptyStateBUI as A}from"../EmptyState/EmptyStateBUI.esm.js";import"@backstage/plugin-permission-react";import"@remixicon/react";import"@spotify/backstage-plugin-soundcheck-common";import"react-router-dom";import{LoadingIndicator as E}from"../LoadingIndicator/LoadingIndicator.esm.js";import{TemplateCategoryBUI as O}from"./TemplateCategoryBUI.esm.js";const S=N(()=>({container:{padding:"0 var(--bui-space-5) var(--bui-space-6)"},link:{"&:hover":{textDecoration:"none"}},fullHeightCard:{height:"100%",display:"flex",flexDirection:"column"}})),F=()=>{const s=g(()=>({routeName:"soundcheck-check-templates"}),[]),{reportContentLoaded:p}=I(s),{reporter:k}=H(s),r=S(),C=u(j),{data:c,isLoading:i}=P(),d=g(()=>T(c??[],"category"),[c]),h=k?.getLCPValue();v(()=>{i||p({lcp:h})},[i,p,h]);const b=u(D);let t;return i?t=e(E,{}):c?.length?t=o(m,{children:[e(f.Root,{columns:"5",gap:"3",mb:"6",children:e(y,{href:C(),className:r.link,children:o(R,{className:r.fullHeightCard,children:[e(x,{children:e(l,{variant:"body-large",style:{fontWeight:"bold"},children:"Custom Check"})}),e(L,{children:e(l,{children:"Create a custom check using the facts collected about your entities."})})]})})}),Object.keys(d).sort().map(a=>o(m,{children:[e(n,{mb:"3",children:e(l,{variant:"title-x-small",children:a})}),e(f.Root,{columns:"5",gap:"3",mb:"6",children:e(O,{templates:d[a]},a)})]}))]}):t=e(A,{title:"No check templates",body:"No check templates found."}),o(m,{children:[e(n,{children:e(B,{title:"Check Templates",breadcrumbs:[{label:"All Checks",href:b()}],customActions:e(U,{href:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/checks/"})})}),e(n,{className:r.container,children:t})]})};export{F as CheckTemplatesPageBUI};
2
+ //# sourceMappingURL=CheckTemplatesPageBUI.esm.js.map
@@ -0,0 +1,2 @@
1
+ import{jsxs as c,Fragment as C,jsx as e}from"react/jsx-runtime";import{Content as y,ItemCardGrid as b}from"@backstage/core-components";import{useRouteRef as p}from"@backstage/core-plugin-api";import{Box as L,HeaderPage as x}from"@backstage/ui";import{Typography as n,Box as d,Card as R,CardContent as v}from"@material-ui/core";import{makeStyles as N}from"@material-ui/core/styles";import T from"lodash";import{useMemo as h,useEffect as B}from"react";import{Link as P}from"react-router-dom";import{useCheckTemplates as D}from"../../hooks/checks/useCheckTemplates.esm.js";import{useFeatureFlag as j}from"../../hooks/useFeatureFlag.esm.js";import{useLCPReporting as F}from"../../hooks/useLCPReporting.esm.js";import{useLoadTimeReporting as A}from"../../hooks/useLoadTimeReporting.esm.js";import{checkCreateRouteRef as H,checksPageRouteRef as I}from"../../routes.esm.js";import{DocLinkButton as S}from"../DocLinkButton/DocLinkButton.esm.js";import{LoadingIndicator as W}from"../LoadingIndicator/LoadingIndicator.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as $}from"../SoundcheckHeader/useHeader.esm.js";import{TemplateCategory as w}from"./TemplateCategory.esm.js";const E=N(t=>({content:{display:"flex",flexDirection:"column",gap:t.spacing(2)},grid:{marginLeft:t.spacing(2)},cardContent:{"&:hover":{backgroundColor:t.palette.action.hover}},docsLink:{color:t.palette.text.primary},link:{textDecoration:"none"}})),G=()=>{const t=h(()=>({routeName:"soundcheck-check-templates"}),[]),{reportContentLoaded:m}=A(t),{reporter:u}=F(t),r=E(),f=p(H),{data:o,isLoading:i}=D(),s=h(()=>T.groupBy(o??[],"category"),[o]);$({title:"What would you like to check?",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/checks"});const l=u?.getLCPValue();B(()=>{i||m({lcp:l})},[i,m,l]);const g=j("backstage-ui"),k=p(I);return c(C,{children:[g&&e(L,{children:e(x,{title:"Check Templates",breadcrumbs:[{label:"All Checks",href:k()}],customActions:e(S,{href:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/checks/"})})}),c("div",{children:[i&&e(W,{}),o&&o.length===0&&e(n,{children:"No check templates."}),o&&o.length&&c(y,{className:r.content,children:[e(d,{className:r.grid,children:e(b,{children:e(P,{to:f(),className:r.link,children:e(R,{children:c(v,{className:r.cardContent,children:[e(d,{mb:1,children:e(n,{variant:"subtitle1",style:{fontWeight:"bold"},component:"div",children:"Custom Check"})}),e(n,{variant:"body1",children:"Create a custom check using the facts collected about your entities."})]})})})})}),Object.keys(s).sort().map(a=>e(w,{name:a,templates:s[a]},a))]})]})]})};export{G as CheckTemplatesPageDeprecated};
2
+ //# sourceMappingURL=CheckTemplatesPageDeprecated.esm.js.map
@@ -0,0 +1,2 @@
1
+ import{jsx as e,Fragment as a,jsxs as m}from"react/jsx-runtime";import{useRouteRef as n}from"@backstage/core-plugin-api";import{Link as d,Card as c,CardHeader as s,Text as i,CardBody as h}from"@backstage/ui";import{makeStyles as f}from"@material-ui/core/styles";import{sortBy as p}from"lodash";import{checkCreateRouteRef as u}from"../../routes.esm.js";const y=f(()=>({link:{"&:hover":{textDecoration:"none"}},fullHeightCard:{height:"100%",display:"flex",flexDirection:"column"}})),g=({templates:o})=>{const t=y(),l=n(u);return e(a,{children:p(o,"title").map(r=>e(d,{href:`${l()}?template=${r.id}`,className:t.link,children:m(c,{className:t.fullHeightCard,children:[e(s,{children:e(i,{variant:"body-large",style:{fontWeight:"bold"},children:r.title})}),e(h,{children:e(i,{children:r.summary})})]})},r.id))})};export{g as TemplateCategoryBUI};
2
+ //# sourceMappingURL=TemplateCategoryBUI.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as t,jsxs as C}from"react/jsx-runtime";import{useApi as I,featureFlagsApiRef as re,useRouteRef as te}from"@backstage/core-plugin-api";import{usePermission as oe}from"@backstage/plugin-permission-react";import{makeStyles as ae,Button as B,Grid as a}from"@material-ui/core";import{soundcheckCheckCreatePermission as ie}from"@spotify/backstage-plugin-soundcheck-common";import{useState as i,useMemo as se,useEffect as P}from"react";import{useNavigate as ce}from"react-router-dom";import ne from"react-use/lib/useDebounce";import{soundcheckApiRef as me}from"../../../api.esm.js";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import{useGetChecks as le}from"../../../hooks/checks/useGetChecks.esm.js";import"../../../hooks/useSoundcheckAlert.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import{useGetCheckOwners as pe}from"../../../hooks/checks/useGetCheckOwners.esm.js";import{useImportChecks as de}from"../../../hooks/checks/useImportChecks.esm.js";import{useLCPReporting as he}from"../../../hooks/useLCPReporting.esm.js";import{useLoadTimeReporting as ge}from"../../../hooks/useLoadTimeReporting.esm.js";import ue from"../../../images/no-results.svg";import{checkTemplatesRouteRef as fe}from"../../../routes.esm.js";import{exportChecks as ke}from"../../../utils/export.esm.js";import{FilterDefault as L}from"../../../utils/filters.esm.js";import{EmptyState as O}from"../../EmptyState/EmptyState.esm.js";import"../../EmptyState/EmptyStateBUI.esm.js";import"@backstage/ui";import{ImportExportPanel as Ce}from"../../ImportExportPanel/ImportExportPanel.esm.js";import{Pagination as Pe}from"../../Pagination/Pagination.esm.js";import{SearchFilters as be}from"../../SearchFilters/SearchFilters.esm.js";import{ChecksOverviewSkeleton as ve}from"../skeletons/ChecksOverviewSkeleton.esm.js";import{CheckSummaryCard as xe}from"./CheckSummaryCard.esm.js";var T=(e=>(e.title="Create a check",e.description="A check is a comparison between a defined acceptable outcome and the actual outcome of a given process.",e.callToAction="Get started",e))(T||{}),F=(e=>(e.title="No checks found",e.description="No checks matched your search. Consider changing search term and filters.",e))(F||{});const ye=ae(e=>({headerButtons:{display:"flex",gap:e.spacing(1),flexWrap:"nowrap",justifyContent:"end",alignItems:"end"},header:{padding:e.spacing(0,0,1)},container:{padding:e.spacing(3),gap:e.spacing(3)},createButton:{lineHeight:"1.25rem",paddingTop:e.spacing(1.5),paddingBottom:e.spacing(1.5)}})),Ae=({checksPerPage:e,currentCursor:E})=>{const[m,b]=i(E),[g,G]=i(""),[c,j]=i(L.Alpha),[n,D]=i(L.Owner),[l,H]=i(""),v=se(()=>({routeName:"soundcheck-checks",additionalAttributes:{checksPerPage:e,pageCursor:m||"",sortOrder:c||"",ownerFilter:n||"",nameSearch:l||""}}),[e,m,c,n,l]),{reportContentLoaded:x}=ge(v),{reporter:M}=he(v),p=ye(),{data:V,isLoading:u}=pe();ne(()=>{H(g)},500,[g]);const{loading:y,allowed:W}=oe({permission:ie}),{data:o,isLoading:s}=le({ids:void 0,first:e,after:m,orderAlphabetical:c,searchByOwner:n,searchByName:l}),[f,$]=i(o),d=f?.edges?.map(r=>r.node),[A,w]=i([]);P(()=>{b(void 0),w([])},[l,c,n]);const N=I(re),q=!N.getRegisteredFlags().find(r=>r.name==="soundcheck-enable-check-creation")||N.isActive("soundcheck-enable-check-creation"),k=!W||!q,z=r=>{j(r.target.value)},J=r=>{D(r.target.value)};P(()=>{o&&$(()=>({totalCount:o.totalCount,edges:o.edges,pageInfo:{startCursor:o.pageInfo.startCursor,endCursor:o.pageInfo.endCursor,hasNextPage:o?.pageInfo.hasNextPage??!1,hasPreviousPage:o?.pageInfo.hasPreviousPage??!1}}))},[o]);const K=ce(),Q=te(fe),R=()=>K(Q()),U=I(me),{mutateAsync:X}=de(),Y=async r=>X(r),Z=async()=>{const r=await U.getChecks({orderAlphabetical:"asc"});return ke(r.edges.map(ee=>ee.node))},S=M?.getLCPValue();if(P(()=>{!s&&!u&&x({lcp:S})},[s,u,x,S]),!s&&!d)return t(O,{title:"Create a check",description:"A check is a comparison between a defined acceptable outcome and the actual outcome of a given process.",imgSrc:ue,action:!y&&t(B,{disabled:k,variant:"contained",color:"primary",onClick:R,children:"Get started"})});let h;s?h=t(ve,{}):d?.length?h=d?.map(r=>t(a,{xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem","aria-label":`check card ${r.id}`,children:t(xe,{check:r})},r.id)):h=t(a,{xs:12,item:!0,role:"listitem","aria-label":"result",children:t(O,{title:"No checks found",description:"No checks matched your search. Consider changing search term and filters."})});const _=f?.pageInfo.hasNextPage||A?.length>0;return C(a,{container:!0,direction:"row",className:p.container,children:[C(a,{container:!0,className:p.header,children:[t(be,{searchPlaceholder:"Search Available Checks",isLoading:s||u,searchTerm:g,setSearchTerm:G,filterAlpha:c,handleAlphabeticalFilterChange:z,filterOwner:n,handleOwnerFilterChange:J,owners:V}),C(a,{item:!0,xs:4,className:p.headerButtons,children:[t(Ce,{resourceType:"check",disableImport:k,disableExport:s||!d?.length,onImport:Y,onExport:Z}),!y&&t(B,{disabled:k,variant:"contained",color:"primary",onClick:R,className:p.createButton,children:"Create Check"})]})]}),t(a,{container:!0,spacing:4,role:"list","aria-label":"checks",children:h}),_&&t(a,{item:!0,xs:12,children:t(Pe,{response:f,listingsPerPage:e,cursor:m,setCursor:b,prevCursors:A,setPrevCursors:w,labelPerPageDropdown:"Checks Per Page:",urlRoute:"checks?checksPerPage="})})]})};export{T as CheckEmptyState,Ae as CheckListPage,F as CheckNoResults};
1
+ import{jsx as t,jsxs as C}from"react/jsx-runtime";import{useApi as I,featureFlagsApiRef as re,useRouteRef as te}from"@backstage/core-plugin-api";import{usePermission as oe}from"@backstage/plugin-permission-react";import{makeStyles as ae,Button as B,Grid as a}from"@material-ui/core";import{soundcheckCheckCreatePermission as ie}from"@spotify/backstage-plugin-soundcheck-common";import{useState as i,useMemo as se,useEffect as P}from"react";import{useNavigate as ce}from"react-router-dom";import ne from"react-use/lib/useDebounce";import{soundcheckApiRef as me}from"../../../api.esm.js";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import{useGetChecks as pe}from"../../../hooks/checks/useGetChecks.esm.js";import"../../../hooks/useSoundcheckAlert.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import"react-use/lib/useLocalStorage";import{useGetCheckOwners as le}from"../../../hooks/checks/useGetCheckOwners.esm.js";import{useImportChecks as de}from"../../../hooks/checks/useImportChecks.esm.js";import{useLCPReporting as he}from"../../../hooks/useLCPReporting.esm.js";import{useLoadTimeReporting as ge}from"../../../hooks/useLoadTimeReporting.esm.js";import ue from"../../../images/no-results.svg";import{checkTemplatesRouteRef as fe}from"../../../routes.esm.js";import{exportChecks as ke}from"../../../utils/export.esm.js";import{FilterDefault as L}from"../../../utils/filters.esm.js";import{EmptyState as O}from"../../EmptyState/EmptyState.esm.js";import"../../EmptyState/EmptyStateBUI.esm.js";import"@remixicon/react";import{ImportExportPanelDeprecated as Ce}from"../../ImportExportPanel/ImportExportPanelDeprecated.esm.js";import{Pagination as Pe}from"../../Pagination/Pagination.esm.js";import{SearchFilters as be}from"../../SearchFilters/SearchFilters.esm.js";import{ChecksOverviewSkeleton as ve}from"../skeletons/ChecksOverviewSkeleton.esm.js";import{CheckSummaryCard as xe}from"./CheckSummaryCard.esm.js";var T=(e=>(e.title="Create a check",e.description="A check is a comparison between a defined acceptable outcome and the actual outcome of a given process.",e.callToAction="Get started",e))(T||{}),F=(e=>(e.title="No checks found",e.description="No checks matched your search. Consider changing search term and filters.",e))(F||{});const ye=ae(e=>({headerButtons:{display:"flex",gap:e.spacing(1),flexWrap:"nowrap",justifyContent:"end",alignItems:"end"},header:{padding:e.spacing(0,0,1)},container:{padding:e.spacing(3),gap:e.spacing(3)},createButton:{lineHeight:"1.25rem",paddingTop:e.spacing(1.5),paddingBottom:e.spacing(1.5)}})),Ae=({checksPerPage:e,currentCursor:E})=>{const[m,b]=i(E),[g,G]=i(""),[c,j]=i(L.Alpha),[n,D]=i(L.Owner),[p,H]=i(""),v=se(()=>({routeName:"soundcheck-checks",additionalAttributes:{checksPerPage:e,pageCursor:m||"",sortOrder:c||"",ownerFilter:n||"",nameSearch:p||""}}),[e,m,c,n,p]),{reportContentLoaded:x}=ge(v),{reporter:M}=he(v),l=ye(),{data:V,isLoading:u}=le();ne(()=>{H(g)},500,[g]);const{loading:y,allowed:W}=oe({permission:ie}),{data:o,isLoading:s}=pe({ids:void 0,first:e,after:m,orderAlphabetical:c,searchByOwner:n,searchByName:p}),[f,$]=i(o),d=f?.edges?.map(r=>r.node),[A,w]=i([]);P(()=>{b(void 0),w([])},[p,c,n]);const N=I(re),q=!N.getRegisteredFlags().find(r=>r.name==="soundcheck-enable-check-creation")||N.isActive("soundcheck-enable-check-creation"),k=!W||!q,z=r=>{j(r.target.value)},J=r=>{D(r.target.value)};P(()=>{o&&$(()=>({totalCount:o.totalCount,edges:o.edges,pageInfo:{startCursor:o.pageInfo.startCursor,endCursor:o.pageInfo.endCursor,hasNextPage:o?.pageInfo.hasNextPage??!1,hasPreviousPage:o?.pageInfo.hasPreviousPage??!1}}))},[o]);const K=ce(),Q=te(fe),R=()=>K(Q()),U=I(me),{mutateAsync:X}=de(),Y=async r=>X(r),Z=async()=>{const r=await U.getChecks({orderAlphabetical:"asc"});return ke(r.edges.map(ee=>ee.node))},S=M?.getLCPValue();if(P(()=>{!s&&!u&&x({lcp:S})},[s,u,x,S]),!s&&!d)return t(O,{title:"Create a check",description:"A check is a comparison between a defined acceptable outcome and the actual outcome of a given process.",imgSrc:ue,action:!y&&t(B,{disabled:k,variant:"contained",color:"primary",onClick:R,children:"Get started"})});let h;s?h=t(ve,{}):d?.length?h=d?.map(r=>t(a,{xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem","aria-label":`check card ${r.id}`,children:t(xe,{check:r})},r.id)):h=t(a,{xs:12,item:!0,role:"listitem","aria-label":"result",children:t(O,{title:"No checks found",description:"No checks matched your search. Consider changing search term and filters."})});const _=f?.pageInfo.hasNextPage||A?.length>0;return C(a,{container:!0,direction:"row",className:l.container,children:[C(a,{container:!0,className:l.header,children:[t(be,{searchPlaceholder:"Search Available Checks",isLoading:s||u,searchTerm:g,setSearchTerm:G,filterAlpha:c,handleAlphabeticalFilterChange:z,filterOwner:n,handleOwnerFilterChange:J,owners:V}),C(a,{item:!0,xs:4,className:l.headerButtons,children:[t(Ce,{resourceType:"check",disableImport:k,disableExport:s||!d?.length,onImport:Y,onExport:Z}),!y&&t(B,{disabled:k,variant:"contained",color:"primary",onClick:R,className:l.createButton,children:"Create Check"})]})]}),t(a,{container:!0,spacing:4,role:"list","aria-label":"checks",children:h}),_&&t(a,{item:!0,xs:12,children:t(Pe,{response:f,listingsPerPage:e,cursor:m,setCursor:b,prevCursors:A,setPrevCursors:w,labelPerPageDropdown:"Checks Per Page:",urlRoute:"checks?checksPerPage="})})]})};export{T as CheckEmptyState,Ae as CheckListPage,F as CheckNoResults};
2
2
  //# sourceMappingURL=CheckListPageDeprecated.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as n}from"react/jsx-runtime";import{useRouteRef as p}from"@backstage/core-plugin-api";import{usePermission as l}from"@backstage/plugin-permission-react";import{soundcheckCheckUpdatePermission as E,soundcheckCheckDeletePermission as P}from"@spotify/backstage-plugin-soundcheck-common";import{useCallback as t}from"react";import{useNavigate as v}from"react-router-dom";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{useConfirmationModal as x}from"../../../hooks/useConfirmationModal.esm.js";import{useDeleteCheck as I}from"../../../hooks/checks/useDeleteCheck.esm.js";import{checkDetailsRouteRef as M,checkEditRouteRef as b}from"../../../routes.esm.js";import{exportCheck as A}from"../../../utils/export.esm.js";import{SummaryCard as N}from"../../SummaryCard/SummaryCard.esm.js";import{CheckMetadata as S}from"./CheckMetadata.esm.js";const j=({check:o})=>{const{id:e,name:i,description:h,isEditable:m,ownerEntityRef:u}=o,r=v(),c=p(M),a=p(b),{loading:f,allowed:k}=l({permission:E,resourceRef:e}),{loading:C,allowed:R}=l({permission:P,resourceRef:e}),{showModal:s}=x(),{mutate:d}=I(),w=t(async()=>{await s({title:"Delete Check",message:`Are you sure you want to delete the check '${i??e}'?`})&&d(e)},[s,i,d,e]),y=t(()=>{r(c({checkId:e}))},[c,e,r]),D=t(()=>{r(a({checkId:e}))},[a,e,r]),g=t(()=>{A(o)},[o]);return n(N,{title:i??e,description:h,children:u&&n(S,{check:o}),handleView:y,handleEdit:m&&!f&&k?D:void 0,handleDelete:m&&!C&&R?w:void 0,handleExport:g,viewIsPrimaryAction:!0})};export{j as CheckSummaryCard};
1
+ import{jsx as n}from"react/jsx-runtime";import{useRouteRef as p}from"@backstage/core-plugin-api";import{usePermission as l}from"@backstage/plugin-permission-react";import{soundcheckCheckUpdatePermission as E,soundcheckCheckDeletePermission as P}from"@spotify/backstage-plugin-soundcheck-common";import{useCallback as t}from"react";import{useNavigate as v}from"react-router-dom";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{useConfirmationModal as x}from"../../../hooks/useConfirmationModal.esm.js";import"react-use/lib/useLocalStorage";import{useDeleteCheck as I}from"../../../hooks/checks/useDeleteCheck.esm.js";import{checkDetailsRouteRef as M,checkEditRouteRef as b}from"../../../routes.esm.js";import{exportCheck as A}from"../../../utils/export.esm.js";import{SummaryCard as N}from"../../SummaryCard/SummaryCard.esm.js";import{CheckMetadata as S}from"./CheckMetadata.esm.js";const j=({check:o})=>{const{id:e,name:i,description:h,isEditable:m,ownerEntityRef:u}=o,r=v(),c=p(M),a=p(b),{loading:f,allowed:k}=l({permission:E,resourceRef:e}),{loading:C,allowed:R}=l({permission:P,resourceRef:e}),{showModal:s}=x(),{mutate:d}=I(),w=t(async()=>{await s({title:"Delete Check",message:`Are you sure you want to delete the check '${i??e}'?`})&&d(e)},[s,i,d,e]),y=t(()=>{r(c({checkId:e}))},[c,e,r]),D=t(()=>{r(a({checkId:e}))},[a,e,r]),g=t(()=>{A(o)},[o]);return n(N,{title:i??e,description:h,children:u&&n(S,{check:o}),handleView:y,handleEdit:m&&!f&&k?D:void 0,handleDelete:m&&!C&&R?w:void 0,handleExport:g,viewIsPrimaryAction:!0})};export{j as CheckSummaryCard};
2
2
  //# sourceMappingURL=CheckSummaryCard.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as a,Fragment as B,jsx as t}from"react/jsx-runtime";import{useRouteRef as w,useApi as N}from"@backstage/core-plugin-api";import{entityPresentationApiRef as v}from"@backstage/plugin-catalog-react";import{usePermission as A}from"@backstage/plugin-permission-react";import{Box as k,HeaderPage as H,Table as M,TableHeader as D,Column as m,TableBody as j,TablePagination as F}from"@backstage/ui";import{makeStyles as O}from"@material-ui/core";import{soundcheckCheckCreatePermission as U}from"@spotify/backstage-plugin-soundcheck-common";import{sortBy as V,isEmpty as z,upperFirst as G}from"lodash";import{useState as l,useMemo as R}from"react";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import{useGetChecks as W}from"../../hooks/checks/useGetChecks.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{useSearchName as Y}from"../../hooks/useSearchName.esm.js";import{usePagination as q}from"../../hooks/usePagination.esm.js";import{useProfileImages as J}from"../../hooks/catalog/useProfileImages.esm.js";import{checkTemplatesRouteRef as K,checkDetailsRouteRef as Q}from"../../routes.esm.js";import"../EmptyState/EmptyState.esm.js";import{EmptyStateBUI as X}from"../EmptyState/EmptyStateBUI.esm.js";import{EmptyStateNoChecks as Z}from"../EmptyState/EmptyStateNoChecks.esm.js";import{ListPageCustomActions as _}from"../ListPageCustomActions/ListPageCustomActions.esm.js";import{LoadingTableSkeleton as $}from"../LoadingTableSkeleton/LoadingTableSkeleton.esm.js";import{TableRowWithOwner as ee}from"../TableRowWithOwner/TableRowWithOwner.esm.js";const P=10,te=O(()=>({container:{padding:"0 var(--bui-space-3)"},emptySpacing:{margin:"var(--bui-space-3) 0"}})),re=({check:r,profileImageMap:o})=>{const s=w(Q);return t(ee,{ownerEntityRef:r.ownerEntityRef??"",href:s({checkId:r.id}),profileImageSrc:o[r.ownerEntityRef??""],actions:["edit","export","delete"],cells:[{title:r.name??r.id},{title:G(r.type??"Default")}]})},ie=()=>{const r=te(),[o,s]=l(""),[c,S]=l("ascending"),[n,C]=l(""),{isLoading:d,data:f}=W({}),h=R(()=>f?.edges?.map(e=>e.node)??[],[f?.edges]),{loading:E,allowed:T}=A({permission:U}),b=w(K),{profileImageMap:I}=J(h.filter(e=>e.ownerEntityRef).map(e=>e.ownerEntityRef)),p=Y({items:h,searchTerm:o}),u=N(v),g=R(()=>{if(!n)return p;const e=V(p,i=>n==="owner"?i.ownerEntityRef?u.forEntity(i.ownerEntityRef).snapshot.primaryTitle:-1:n==="type"?i.type?i.type:"default":i?.name?.toLowerCase()??i.id.toLowerCase());return c==="descending"&&e.reverse(),e},[n,p,c,u]),{paginatedItems:y,reset:x,paginationProps:L}=q({pageParam:"checksPerPage",defaultPageSize:P,items:g});return a(B,{children:[t(k,{children:t(H,{customActions:t(_,{searchValue:o,setSearchValue:e=>{x(),s(e)},canCreate:!E&&T,createHref:b()}),title:"Checks"})}),a(k,{className:r.container,children:[a(M,{onSortChange:({direction:e,column:i})=>{C(String(i)),S(e)},sortDescriptor:{direction:c,column:n},children:[a(D,{children:[t(m,{id:"name",allowsSorting:!0,isRowHeader:!0,children:"Name"}),t(m,{id:"type",style:{width:"120px"},allowsSorting:!0,children:"Type"}),t(m,{id:"owner",allowsSorting:!0,children:"Check Owner"}),t(m,{id:"actions",style:{width:"30px"}})]}),t(j,{children:y.map(e=>t(re,{check:e,profileImageMap:I??{}},e.id))})]}),g.length>P&&t(F,{...L}),d&&t($,{rowCount:10}),!d&&z(y)&&t("div",{className:r.emptySpacing,children:o?t(X,{title:"No checks found",body:"Your current search term did not return any checks. Please try a different search term."}):t(Z,{})})]})]})};export{ie as ChecksListPageBUI};
1
+ import{jsx as t,jsxs as m,Fragment as G}from"react/jsx-runtime";import{useRouteRef as P,useApi as E}from"@backstage/core-plugin-api";import{entityPresentationApiRef as O}from"@backstage/plugin-catalog-react";import{usePermission as z}from"@backstage/plugin-permission-react";import{Box as I,HeaderPage as W,Flex as Y,Table as q,TableHeader as J,Column as p,TableBody as K,TablePagination as Q}from"@backstage/ui";import{makeStyles as X}from"@material-ui/core";import{soundcheckCheckCreatePermission as Z}from"@spotify/backstage-plugin-soundcheck-common";import{sortBy as _,isEmpty as h,upperFirst as $}from"lodash";import{useState as u,useMemo as b}from"react";import{soundcheckApiRef as ee}from"../../api.esm.js";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../hooks/graphqlKeys.esm.js";import{useGetChecks as te}from"../../hooks/checks/useGetChecks.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{useSearchName as re}from"../../hooks/useSearchName.esm.js";import{usePagination as oe}from"../../hooks/usePagination.esm.js";import"react-use/lib/useLocalStorage";import{useProfileImages as ie}from"../../hooks/catalog/useProfileImages.esm.js";import{useImportChecks as ne}from"../../hooks/checks/useImportChecks.esm.js";import{checkTemplatesRouteRef as ae,checkDetailsRouteRef as me}from"../../routes.esm.js";import{exportChecks as se}from"../../utils/export.esm.js";import"../EmptyState/EmptyState.esm.js";import{EmptyStateBUI as pe}from"../EmptyState/EmptyStateBUI.esm.js";import"@remixicon/react";import{EmptyStateNoChecks as ce}from"../EmptyState/EmptyStateNoChecks.esm.js";import{ImportExportPanelBUI as le}from"../ImportExportPanel/ImportExportPanelBUI.esm.js";import"../ImportExportPanel/ImportExportPanelDeprecated.esm.js";import{ListPageCustomActions as de}from"../ListPageCustomActions/ListPageCustomActions.esm.js";import{LoadingTableSkeleton as fe}from"../LoadingTableSkeleton/LoadingTableSkeleton.esm.js";import"../Menus/SimpleMenu.esm.js";import{useCheckActions as he}from"../Menus/useCheckActions.esm.js";import"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";import"uuid";import"../CampaignsPage/CampaignListPage/useArchiveConfirmationModal.esm.js";import{TableRowWithOwner as ue}from"../TableRowWithOwner/TableRowWithOwner.esm.js";const T=10,ge=X(()=>({container:{padding:"0 var(--bui-space-3) var(--bui-space-6)"},emptySpacing:{margin:"var(--bui-space-3) 0"}})),ye=({check:r,profileImageMap:i})=>{const c=P(me),n=he(r);return t(ue,{ownerEntityRef:r.ownerEntityRef??"",href:c({checkId:r.id}),profileImageSrc:i[r.ownerEntityRef??""],menuActions:n,name:r.name??r.id,description:r.description??"",cells:[{title:$(r.type??"Default")}]})},we=()=>{const r=ge(),[i,c]=u(""),[n,x]=u("ascending"),[a,A]=u(""),{isLoading:s,data:g}=te({}),l=b(()=>g?.edges?.map(e=>e.node)??[],[g?.edges]),{loading:y,allowed:w}=z({permission:Z}),B=P(ae),{profileImageMap:L}=ie(l.filter(e=>e.ownerEntityRef).map(e=>e.ownerEntityRef)),d=re({items:l,searchTerm:i}),k=E(O),C=b(()=>{if(!a)return d;const e=_(d,o=>a==="owner"?o.ownerEntityRef?k.forEntity(o.ownerEntityRef).snapshot.primaryTitle:-1:a==="type"?o.type?o.type:"default":o?.name?.toLowerCase()??o.id.toLowerCase());return n==="descending"&&e.reverse(),e},[a,d,n,k]),{mutateAsync:N}=ne(),v=async e=>N(e),H=E(ee),M=async()=>{const e=await H.getChecks({orderAlphabetical:"asc"});return se(e.edges.map(o=>o.node))},{paginatedItems:f,reset:D,paginationProps:F}=oe({pageParam:"perPage",defaultPageSize:T,items:C}),U=s,R=!s&&h(f),V=!s&&!h(f),j=C.length>T;let S=null;return R&&(S=i?t(pe,{title:"No checks found",body:"Your current search term did not return any checks. Please try a different search term."}):t(ce,{})),m(G,{children:[t(I,{children:t(W,{customActions:m(Y,{gap:"2",align:"center",children:[t(le,{resourceType:"check",disableImport:!y&&!w,disableExport:s||h(l),onImport:v,onExport:M}),t(de,{searchValue:i,setSearchValue:e=>{D(),c(e)},canCreate:!y&&w,createHref:B()})]}),title:"Checks"})}),m(I,{className:r.container,children:[U&&t(fe,{rowCount:10}),R&&t("div",{className:r.emptySpacing,children:S}),V&&m(q,{onSortChange:({direction:e,column:o})=>{A(String(o)),x(e)},sortDescriptor:{direction:n,column:a},children:[m(J,{children:[t(p,{id:"name",allowsSorting:!0,isRowHeader:!0,style:{width:"73%"},children:"Name"}),t(p,{id:"type",style:{width:"10%"},allowsSorting:!0,children:"Type"}),t(p,{id:"owner",allowsSorting:!0,style:{width:"15%"},children:"Check Owner"}),t(p,{id:"actions",style:{width:"2%"}})]}),t(K,{children:f.map(e=>t(ye,{check:e,profileImageMap:L??{}},e.id))})]}),j&&t(Q,{...F})]})]})};export{we as ChecksListPageBUI};
2
2
  //# sourceMappingURL=ChecksListPageBUI.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as o,jsx as e,Fragment as w}from"react/jsx-runtime";import{useRouteRef as y}from"@backstage/core-plugin-api";import{Row as S,Cell as g,Flex as v,Box as f,Text as x,Table as B,TableHeader as R,Column as u,TableBody as T}from"@backstage/ui";import{makeStyles as N}from"@material-ui/core";import{memo as F,useMemo as k,useState as b}from"react";import{CircularProgressbar as I}from"react-circular-progressbar";import{useNavigate as j}from"react-router-dom";import{TrackEntityField as A}from"../../graphql/generated/index.esm.js";import{checkDetailsRouteRef as D}from"../../routes.esm.js";import{getCheckStatusPercentages as E}from"../../utils/checks.esm.js";import"../CheckStatusBar/CheckStatusBar.esm.js";import{CheckStatusBarBUI as H}from"../CheckStatusBar/CheckStatusBarBUI.esm.js";import"lodash";import{CustomCell as L}from"../CustomCell/CustomCell.esm.js";const M=N(()=>({statusBar:{width:"30%"},customCell:{padding:"0 var(--bui-space-3)"},circularProgressbar:{width:"60%"}}));A.Name;const O=F(({check:a,checkStatuses:m})=>{const i=M(),d=y(D),p=j(),r=m?.find(n=>n.id===a.id),{passPercent:c,failPercent:t,warningPercent:s,applicableChecks:h}=k(()=>{const n=r?r.numberOfEntities-r.notApplicable-r.exempt:0,{passPercentage:l,failPercentage:C,warningPercentage:P}=E(r?.passed??0,r?.failed??0,r?.warning??0,n);return{passPercent:l,failPercent:C,warningPercent:P,applicableChecks:n}},[r]);return o(S,{onAction:()=>p(d({checkId:a.id})),children:[e(g,{leadingIcon:e("div",{className:i.circularProgressbar,children:e(I,{value:c,strokeWidth:12,styles:{path:{stroke:c===100?"var(--bui-fg-success)":"var(--bui-fg-danger)"},trail:{stroke:'rgba(var("--bui-fg-secondary"), 0.25)'}}})}),title:`${c}%`}),e(g,{title:a.name}),e(L,{children:o(v,{align:"center",gap:"3",children:[e(f,{children:o(x,{color:"secondary",children:[r?.passed??0," of ",h," checks passing"]})}),e(f,{className:i.statusBar,children:e(H,{passedPercent:c,failedPercent:t,warningPercent:s})})]})})]},a.id)}),U=({checks:a,checkStatuses:m})=>{const[i,d]=b("ascending"),[p,r]=b("name"),c=k(()=>[...a??[]].sort((t,s)=>{const h=t.name.toLowerCase().trim(),n=s.name.toLowerCase().trim(),l=h.localeCompare(n,void 0,{sensitivity:"base"});return i==="ascending"?l:-l}),[a,i]);return e(w,{children:o(B,{onSortChange:({direction:t,column:s})=>{r(String(s)),d(t)},sortDescriptor:{direction:i,column:p},children:[o(R,{children:[e(u,{id:"compliance",style:{width:"5%"},children:"Compliance"}),e(u,{id:"name",allowsSorting:!0,isRowHeader:!0,style:{width:"75%"},children:"Name"}),e(u,{id:"checks",style:{width:"20%"},children:"Checks"})]}),e(T,{children:c.map(t=>e(O,{check:t,checkStatuses:m},t.id))})]})})};export{U as ChecksTable};
1
+ import{jsxs as n,jsx as e,Fragment as B}from"react/jsx-runtime";import{useRouteRef as x}from"@backstage/core-plugin-api";import{Row as R,Cell as C,Flex as N,Box as b,Text as L,Table as E,TableHeader as F,Column as g,TableBody as $,TablePagination as j}from"@backstage/ui";import{makeStyles as A}from"@material-ui/core";import{memo as D,useMemo as f,useState as P}from"react";import{CircularProgressbar as H}from"react-circular-progressbar";import{useNavigate as U,useLocation as z}from"react-router-dom";import{TrackEntityField as K}from"../../graphql/generated/index.esm.js";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{usePagination as M}from"../../hooks/usePagination.esm.js";import"react-use/lib/useLocalStorage";import{trackCheckDetailsRouteRef as O}from"../../routes.esm.js";import{getPercentage as Q}from"../../utils/formatters.esm.js";import"../CheckStatusBar/CheckStatusBar.esm.js";import{CheckStatusBarBUI as V}from"../CheckStatusBar/CheckStatusBarBUI.esm.js";import{CustomCell as W}from"../CustomCell/CustomCell.esm.js";import"../EmptyState/EmptyState.esm.js";import{EmptyStateBUI as q}from"../EmptyState/EmptyStateBUI.esm.js";import"@backstage/plugin-permission-react";import"@remixicon/react";const G=A(()=>({statusBar:{width:"30%"},customCell:{padding:"0 var(--bui-space-3)"},circularProgressbar:{width:"60%"}})),w=10;K.Name;const J=D(({trackId:d,check:i,checkStatuses:p,searchParams:s})=>{const c=G(),h=x(O),u=U(),t=p?.find(r=>r.id===i.id),{passPercent:m,applicableChecks:a}=f(()=>{const r=t?t.numberOfEntities-t.notApplicable-t.exempt:0;return{passPercent:Q(t?.passed,r),applicableChecks:r}},[t]);return n(R,{onAction:()=>{const r=h({trackId:d,checkId:i.id});u(s?`${r}${s}`:r)},children:[e(C,{leadingIcon:e("div",{className:c.circularProgressbar,children:e(H,{value:m,strokeWidth:12,styles:{path:{stroke:m===100?"var(--bui-fg-success)":"var(--bui-fg-danger)"},trail:{stroke:'rgba(var("--bui-fg-secondary"), 0.25)'}}})}),title:`${m}%`}),e(C,{title:i.name}),e(W,{children:n(N,{align:"center",gap:"3",children:[e(b,{children:n(L,{color:"secondary",children:[t?.passed??0," of ",a," checks passing"]})}),e(b,{className:c.statusBar,children:e(V,{status:t})})]})})]},i.id)}),X=({trackId:d,checks:i,checkStatuses:p,searchValue:s})=>{const[c,h]=P("ascending"),[u,t]=P("name"),m=z().search,a=f(()=>[...i??[]].sort((o,l)=>{const I=o.name.toLowerCase().trim(),T=l.name.toLowerCase().trim(),k=I.localeCompare(T,void 0,{sensitivity:"base"});return c==="ascending"?k:-k}),[i,c]),r=f(()=>{if(!s?.length)return a;const o=s.toLowerCase();return a.filter(({name:l})=>l.toLowerCase().includes(o))},[a,s]),{paginatedItems:y,paginationProps:S}=M({pageParam:"perPage",defaultPageSize:w,items:r}),v=a.length>w;return!a?.length||!r.length?e(q,{title:"No checks",body:"There are no checks found."}):n(B,{children:[n(E,{onSortChange:({direction:o,column:l})=>{t(String(l)),h(o)},sortDescriptor:{direction:c,column:u},children:[n(F,{children:[e(g,{id:"compliance",style:{width:"5%"},children:"Compliance"}),e(g,{id:"name",allowsSorting:!0,isRowHeader:!0,style:{width:"75%"},children:"Name"}),e(g,{id:"checks",style:{width:"20%"},children:"Checks"})]}),e($,{children:y.map(o=>e(J,{trackId:d,check:o,checkStatuses:p,searchParams:m},o.id))})]}),v&&e(j,{...S})]})};export{X as ChecksTable};
2
2
  //# sourceMappingURL=ChecksTable.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as o,jsx as e}from"react/jsx-runtime";import{makeStyles as f,Box as i,Typography as h,Tooltip as x,Icon as y,IconButton as b}from"@material-ui/core";import I from"@material-ui/icons/ArrowDropDown";import u from"@material-ui/icons/ArrowDropUp";import g from"@material-ui/icons/HelpOutline";import v from"../Expand/Expand.esm.js";const C=f(({palette:l})=>({header:{display:"flex",alignItems:"left",flexDirection:"row",cursor:"pointer",justifyContent:"space-between"},label:{display:"flex",alignItems:"center"},tooltipIcon:{display:"flex",alignItems:"center",justifyContent:"center",color:l.text.primary}})),D=({label:l,tooltip:r,isExpanded:a,setIsExpanded:p,children:d,onExpandDone:m=()=>{}})=>{const n=C(),s=()=>{p(t=>!t)},c=t=>{(t.key==="Enter"||t.key===" ")&&s()};return o(i,{children:[o("div",{className:n.header,onClick:s,onKeyDown:c,role:"button",tabIndex:0,children:[o("div",{className:n.label,children:[e(i,{children:e(h,{variant:"subtitle2",children:l})}),r&&e(x,{title:r,className:n.tooltipIcon,children:e(y,{children:e(g,{style:{fontSize:16,verticalAlign:"text-top"}})})})]}),e(i,{children:e(b,{size:"small",onKeyDown:c,children:a?e(u,{fontSize:"small"}):e(I,{fontSize:"small"})})})]}),e(v,{visible:a,onExpandDone:m,children:d})]})};export{D as CollapsablePanel};
1
+ import{jsxs as o,jsx as e}from"react/jsx-runtime";import{makeStyles as f,Box as i,Typography as h,Tooltip as x,Icon as y,IconButton as I}from"@material-ui/core";import b from"@material-ui/icons/ArrowDropDown";import u from"@material-ui/icons/ArrowDropUp";import g from"@material-ui/icons/HelpOutline";import v from"../Expand/Expand.esm.js";const D=f(({palette:l})=>({header:{display:"flex",alignItems:"left",flexDirection:"row",cursor:"pointer",justifyContent:"space-between"},label:{display:"flex",alignItems:"center"},tooltipIcon:{display:"flex",alignItems:"center",justifyContent:"center",color:l.text.primary}})),E=({label:l,tooltip:r,isExpanded:a,setIsExpanded:p,children:d,onExpandDone:m=()=>{}})=>{const n=D(),s=()=>{p(t=>!t)},c=t=>{(t.key==="Enter"||t.key===" ")&&s()};return o(i,{children:[o("div",{className:n.header,onClick:s,onKeyDown:c,role:"button",tabIndex:0,children:[o("div",{className:n.label,children:[e(i,{children:e(h,{variant:"subtitle2",children:l})}),r&&e(x,{title:r,className:n.tooltipIcon,children:e(y,{children:e(g,{style:{fontSize:16,verticalAlign:"text-top"}})})})]}),e(i,{children:e(I,{size:"small",onKeyDown:c,children:a?e(u,{fontSize:"small"}):e(b,{fontSize:"small"})})})]}),e(v,{visible:a,onExpandDone:m,children:d})]})};export{E as CollapsablePanel};
2
2
  //# sourceMappingURL=CollapsablePanel.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as n,jsx as e}from"react/jsx-runtime";import{Content as $,LinkButton as O}from"@backstage/core-components";import{useRouteRef as b}from"@backstage/core-plugin-api";import{usePermission as F}from"@backstage/plugin-permission-react";import{makeStyles as W,Box as r,Button as x,Typography as l,Card as q,CardHeader as z,CardContent as Y,Tooltip as _,CardActions as J}from"@material-ui/core";import{Alert as K}from"@material-ui/lab";import{soundcheckCollectorReadPermission as Q,soundcheckCollectorUpdatePermission as X,parseFactRef as M,asArray as Z}from"@spotify/backstage-plugin-soundcheck-common";import{isEmpty as U,uniq as ee}from"lodash";import{useMemo as N,useCallback as te,useEffect as oe}from"react";import{useParams as ie,useNavigate as re}from"react-router-dom";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{useConfirmationModal as ne}from"../../hooks/useConfirmationModal.esm.js";import{useGetCollectors as ae}from"../../hooks/collectors/useGetCollectors.esm.js";import{useDeleteCollectorConfig as ce}from"../../hooks/collectors/useDeleteCollectorConfig.esm.js";import{useLCPReporting as se}from"../../hooks/useLCPReporting.esm.js";import{useLoadTimeReporting as de}from"../../hooks/useLoadTimeReporting.esm.js";import{integrationEditRouteRef as le,integrationsPageRouteRef as me,checkDetailsRouteRef as pe}from"../../routes.esm.js";import{mapRuleToExpression as fe}from"../CheckForm/utils/checkFormUtils.esm.js";import{ConfigurableCollectorIds as he}from"../CollectorsPage/CollectorListPage/CollectorListPage.esm.js";import"@material-ui/icons/Search";import"../SoundcheckDialog/SoundcheckDialog.esm.js";import"../FactExplorer/FactExplorer.esm.js";import{FactExplorerProvider as ge}from"../FactExplorer/FactExplorerContext.esm.js";import{LoadingIndicator as ue}from"../LoadingIndicator/LoadingIndicator.esm.js";import{PageWarningMessage as Ce}from"../PageWarningMessage/PageWarningMessage.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as ye}from"../SoundcheckHeader/useHeader.esm.js";import{SoundcheckMarkdownContent as ve}from"../SoundcheckMarkdownContent/SoundcheckMarkdownContent.esm.js";import"react-markdown";import"rehype-raw";import"remark-gfm";import{CollectorFactTable as Re}from"./CollectorFactTable.esm.js";const ke=W(d=>({card:{width:360},cardDescription:{"& p":{marginTop:d.spacing(.5),marginBottom:d.spacing(.5)}},cardContent:{flexGrow:1}})),Ie=({id:d,title:g,description:u,rules:t,integrationId:m,hasSchedule:C})=>{const p=ke(),k=b(pe),y=N(()=>{const c=[],v=s=>{for(const a of s.conditions??[])c.push(a.factRef),typeof a.value=="object"&&Object.hasOwn(a.value,"factRef")&&c.push(a.value.factRef);for(const a of s.expressions??[])v(a)};return t&&v(t),ee(c).filter(s=>{try{return M(s).source===m}catch{return!1}})},[m,t]);return n(q,{className:p.card,children:[e(z,{title:g}),n(Y,{className:p.cardContent,children:[u&&e(r,{overflow:"auto",maxHeight:200,children:e(ve,{className:p.cardDescription,content:u})}),!U(y)&&n(r,{marginTop:1,overflow:"auto",maxHeight:120,children:[e(l,{variant:"subtitle2",children:"Used Fact Refs"}),y.map(c=>e(r,{children:c},"factRef"))]}),C&&e(r,{marginTop:1,children:e(_,{title:"Configure this integration's collection schedule instead.",children:e(K,{severity:"warning",children:"Check Schedule Detected"})})})]}),e(J,{children:e(O,{variant:"outlined",to:k({checkId:d}),target:"_blank",children:"View"})})]})},we=({id:d,integrations:g})=>{const u=ie(),t=d??u.integrationId,m=N(()=>({routeName:"soundcheck-integration-details",additionalAttributes:{integrationId:t||""}}),[t]),{reportContentLoaded:C}=de(m),{reporter:p}=se(m),{data:k,isLoading:y}=ae([t??""]),{loading:c,allowed:v}=F({permission:Q}),{loading:s,allowed:a}=F({permission:X}),{showModal:P}=ne(),{mutate:B,isPending:I}=ce(t??""),G=te(async()=>{!await P({title:"Are you sure you want to delete stored UI config?",message:"This action cannot be undone and will remove any stored configs for this integration from the database."})||I||B()},[B,I,P]),o=k?.[0],f=y||s||c,S=g?.map(i=>i.integrationId)??he,T=g?.find(i=>i.integrationId===t)?.routePath,A=!s&&a&&o?.isEditable&&o?.isConfigurable&&S.includes(t??""),w=re(),L=b(le),E=b(me),H=o?.hasUIConfig,j=N(()=>n(r,{display:"flex",gridGap:12,children:[e(x,{variant:"contained",color:"primary",onClick:()=>{w(E())},children:"All Integrations"}),t&&A&&e(x,{variant:"contained",color:"primary",onClick:()=>{w(T??L({integrationId:t}))},children:"Edit Integration"})]}),[E,T,L,t,A,w]);ye({title:o?.name??t,description:o?o.description??"":"",docLink:o?`https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/fact-collectors/3p-integrations/${o.id}`:"",sectionRight:j});const D=p?.getLCPValue();return oe(()=>{f||C({lcp:D})},[f,C,D]),e(ge,{hidePath:!0,children:n($,{children:[f&&e(ue,{}),e(Ce,{entityName:"Integration",entityId:t,showNotFound:!f&&!o,showCannotView:!f&&!v}),o&&n(r,{children:[n(r,{marginBottom:2,children:[e(l,{variant:"h6",children:"Facts"}),e(r,{marginBottom:2,children:e(Re,{facts:o.factNames.map(i=>{const R=(h=>{try{return M(h).name}catch{return h}})(i),V=Z(o.config?.collects).find(h=>h?.type===R||h?.factName===R);return{factRef:`${t}:default/${R}`,factName:R,config:V,uiConfig:!!o.hasUIConfig,parentConfig:o.config}})})})]}),n(r,{marginBottom:2,children:[e(l,{variant:"h6",children:"Dependant Checks"}),U(o.dependentChecks)?e(l,{variant:"body2",children:"No dependant checks"}):e(r,{display:"flex",gridGap:12,flexWrap:"wrap",children:o.dependentChecks.map(i=>e(Ie,{id:i.id,title:i.name??i.id,description:i.description??void 0,rules:fe(i.rule),integrationId:t,hasSchedule:i.schedule},i.id))})]}),a&&H&&n(r,{marginBottom:2,children:[e(l,{variant:"h6",children:"Admin Actions"}),o.hasUIConfig&&n(r,{marginTop:1,display:"flex",alignItems:"center",gridGap:16,children:[e(x,{disabled:I,size:"small",variant:"contained",color:"secondary",onClick:G,children:"Remove Config"}),e(l,{variant:"body2",color:"textSecondary",children:"Revert to using YAML to config this integration by deleting the stored UI config from the database."})]})]})]})]})})};export{we as CollectorDetailsPage};
1
+ import{jsx as e}from"react/jsx-runtime";import{useFeatureFlag as o}from"../../hooks/useFeatureFlag.esm.js";import{CollectorDetailsPageBUI as r}from"./CollectorDetailsPageBUI.esm.js";import{CollectorDetailsPageDeprecated as a}from"./CollectorDetailsPageDeprecated.esm.js";const i=({integrations:t})=>o("backstage-ui")?e(r,{integrations:t}):e(a,{integrations:t});export{i as CollectorDetailsPage};
2
2
  //# sourceMappingURL=CollectorDetailsPage.esm.js.map
@@ -0,0 +1,2 @@
1
+ import{jsx as e,jsxs as n,Fragment as k}from"react/jsx-runtime";import{useRouteRef as v}from"@backstage/core-plugin-api";import{usePermission as R}from"@backstage/plugin-permission-react";import{Box as r,Text as d,Grid as O,Flex as P,Button as w,HeaderPage as V}from"@backstage/ui";import{makeStyles as Y}from"@material-ui/core";import{soundcheckCollectorReadPermission as J,soundcheckCollectorUpdatePermission as K,parseFactRef as Q,asArray as X}from"@spotify/backstage-plugin-soundcheck-common";import{isEmpty as Z}from"lodash";import{useMemo as _,useCallback as ee,useEffect as te}from"react";import{useParams as oe,useNavigate as ie}from"react-router-dom";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{useConfirmationModal as re}from"../../hooks/useConfirmationModal.esm.js";import"react-use/lib/useLocalStorage";import{useGetCollectors as ne}from"../../hooks/collectors/useGetCollectors.esm.js";import{useDeleteCollectorConfig as ae}from"../../hooks/collectors/useDeleteCollectorConfig.esm.js";import{useLCPReporting as se}from"../../hooks/useLCPReporting.esm.js";import{useLoadTimeReporting as le}from"../../hooks/useLoadTimeReporting.esm.js";import{integrationEditRouteRef as de,integrationsPageRouteRef as ce}from"../../routes.esm.js";import{mapRuleToExpression as me}from"../CheckForm/utils/checkFormUtils.esm.js";import{ConfigurableCollectorIds as pe}from"../CollectorsPage/CollectorListPage/CollectorListPageDeprecated.esm.js";import{DocLinkButton as fe}from"../DocLinkButton/DocLinkButton.esm.js";import"../EmptyState/EmptyState.esm.js";import{EmptyStateBUI as f}from"../EmptyState/EmptyStateBUI.esm.js";import"@remixicon/react";import"@material-ui/icons/Search";import"../SoundcheckDialog/SoundcheckDialog.esm.js";import"../FactExplorer/FactExplorer.esm.js";import{FactExplorerProvider as ge}from"../FactExplorer/FactExplorerContext.esm.js";import{LoadingIndicator as he}from"../LoadingIndicator/LoadingIndicator.esm.js";import{CollectorFactTableBUI as ue}from"./CollectorFactTableBUI.esm.js";import{DependantCheckCard as be}from"./DependantCheckCard.esm.js";const Ce=Y(()=>({container:{padding:"0 var(--bui-space-5) var(--bui-space-6)"}})),ye=({id:N,integrations:U})=>{const L=Ce(),x=oe(),o=N??x.integrationId,g=_(()=>({routeName:"soundcheck-integration-details",additionalAttributes:{integrationId:o||""}}),[o]),{reportContentLoaded:h}=le(g),{reporter:A}=se(g),{data:E,isLoading:D}=ne([o??""]),{loading:F,allowed:T}=R({permission:J}),{loading:u,allowed:b}=R({permission:K}),{showModal:C}=re(),{mutate:y,isPending:c}=ae(o??""),$=ee(async()=>{!await C({title:"Are you sure you want to delete stored UI config?",message:"This action cannot be undone and will remove any stored configs for this integration from the database."})||c||y()},[y,c,C]),t=E?.[0],m=D||u||F,B=U?.map(p=>p.integrationId)??pe,M=!u&&b&&t?.isEditable&&t?.isConfigurable&&B.includes(o??""),S=ie(),W=v(de),G=v(ce),j=t?.hasUIConfig;let a;if(m)a=e(he,{});else if(!T)a=e(f,{title:"Cannot view Integration",body:`User does not have permission to view Integration id: ${o}`});else if(!t)a=e(f,{title:"Integration not found",body:`There is no integration with the requested id: ${o}.`});else{const p=n(r,{mb:"6",children:[e(r,{mb:"3",children:e(d,{variant:"title-small",style:{fontWeight:"bold"},children:"Facts"})}),e(r,{children:e(ue,{facts:t.factNames.map(i=>{const l=(s=>{try{return Q(s).name}catch{return s}})(i),H=X(t.config?.collects).find(s=>s?.type===l||s?.factName===l);return{factRef:`${o}:default/${l}`,factName:l,config:H,uiConfig:!!t.hasUIConfig,parentConfig:t.config}})})})]}),q=n(r,{mb:"6",children:[e(r,{mb:"3",children:e(d,{variant:"title-small",style:{fontWeight:"bold"},children:"Dependant Checks"})}),Z(t.dependentChecks)?e(f,{title:"No dependant checks",body:"No dependant checks"}):e(O.Root,{columns:"5",gap:"3",children:t.dependentChecks.map(i=>e(be,{id:i.id,title:i.name??i.id,description:i.description??void 0,rules:me(i.rule),integrationId:o,hasSchedule:i.schedule},i.id))})]}),z=b&&j&&n(r,{mb:"6",children:[e(r,{mb:"3",children:e(d,{variant:"title-small",style:{fontWeight:"bold"},children:"Admin Actions"})}),t.hasUIConfig&&n(P,{align:"center",gap:"2",children:[e(w,{isDisabled:c,size:"small",variant:"secondary",onClick:$,children:"Remove Config"}),e(d,{color:"secondary",children:"Revert to using YAML to config this integration by deleting the stored UI config from the database."})]})]});a=n(k,{children:[p,q,z]})}const I=A?.getLCPValue();return te(()=>{m||h({lcp:I})},[m,h,I]),n(k,{children:[e(r,{children:e(V,{title:t?.name??t?.id??"Integration",breadcrumbs:[{label:"Integrations",href:G()}],customActions:n(P,{align:"center",children:[M?e(w,{onClick:()=>S(W({integrationId:o??""})),children:"Configure"}):void 0,e(fe,{href:`https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/fact-collectors/3p-integrations/${t?.id}`})]})})}),e(r,{className:L.container,children:e(ge,{hidePath:!0,children:a})})]})};export{ye as CollectorDetailsPageBUI};
2
+ //# sourceMappingURL=CollectorDetailsPageBUI.esm.js.map
@@ -0,0 +1,2 @@
1
+ import{jsxs as r,jsx as e,Fragment as O}from"react/jsx-runtime";import{Content as W,LinkButton as q}from"@backstage/core-components";import{useRouteRef as P}from"@backstage/core-plugin-api";import{usePermission as U}from"@backstage/plugin-permission-react";import{Box as z,HeaderPage as Y,Flex as _,Button as J}from"@backstage/ui";import{makeStyles as K,Box as n,Button as N,Typography as l,Card as Q,CardHeader as X,CardContent as Z,Tooltip as ee,CardActions as te}from"@material-ui/core";import{Alert as oe}from"@material-ui/lab";import{soundcheckCollectorReadPermission as ie,soundcheckCollectorUpdatePermission as re,parseFactRef as $,asArray as ne}from"@spotify/backstage-plugin-soundcheck-common";import{isEmpty as E,uniq as ae}from"lodash";import{useMemo as A,useCallback as ce,useEffect as se}from"react";import{useParams as de,useNavigate as le}from"react-router-dom";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{useConfirmationModal as me}from"../../hooks/useConfirmationModal.esm.js";import"react-use/lib/useLocalStorage";import{useGetCollectors as pe}from"../../hooks/collectors/useGetCollectors.esm.js";import{useDeleteCollectorConfig as fe}from"../../hooks/collectors/useDeleteCollectorConfig.esm.js";import{useFeatureFlag as ge}from"../../hooks/useFeatureFlag.esm.js";import{useLCPReporting as he}from"../../hooks/useLCPReporting.esm.js";import{useLoadTimeReporting as ue}from"../../hooks/useLoadTimeReporting.esm.js";import{integrationEditRouteRef as Ce,integrationsPageRouteRef as ye,checkDetailsRouteRef as ke}from"../../routes.esm.js";import{mapRuleToExpression as Ie}from"../CheckForm/utils/checkFormUtils.esm.js";import{ConfigurableCollectorIds as be}from"../CollectorsPage/CollectorListPage/CollectorListPageDeprecated.esm.js";import{DocLinkButton as ve}from"../DocLinkButton/DocLinkButton.esm.js";import"@material-ui/icons/Search";import"../SoundcheckDialog/SoundcheckDialog.esm.js";import"../FactExplorer/FactExplorer.esm.js";import{FactExplorerProvider as Re}from"../FactExplorer/FactExplorerContext.esm.js";import{LoadingIndicator as xe}from"../LoadingIndicator/LoadingIndicator.esm.js";import{PageWarningMessage as we}from"../PageWarningMessage/PageWarningMessage.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as Be}from"../SoundcheckHeader/useHeader.esm.js";import{SoundcheckMarkdownContentDeprecated as Pe}from"../SoundcheckMarkdownContent/SoundcheckMarkdownContentDeprecated.esm.js";import"react-markdown";import"rehype-raw";import"remark-gfm";import"../SoundcheckMarkdownContent/SoundcheckMarkdownContentBUI.esm.js";import{CollectorFactTable as Ne}from"./CollectorFactTable.esm.js";const Ae=K(d=>({card:{width:360},cardDescription:{"& p":{marginTop:d.spacing(.5),marginBottom:d.spacing(.5)}},cardContent:{flexGrow:1}})),De=({id:d,title:h,description:u,rules:o,integrationId:m,hasSchedule:C})=>{const p=Ae(),v=P(ke),y=A(()=>{const c=[],k=s=>{for(const a of s.conditions??[])c.push(a.factRef),typeof a.value=="object"&&Object.hasOwn(a.value,"factRef")&&c.push(a.value.factRef);for(const a of s.expressions??[])k(a)};return o&&k(o),ae(c).filter(s=>{try{return $(s).source===m}catch{return!1}})},[m,o]);return r(Q,{className:p.card,children:[e(X,{title:h}),r(Z,{className:p.cardContent,children:[u&&e(n,{overflow:"auto",maxHeight:200,children:e(Pe,{className:p.cardDescription,content:u})}),!E(y)&&r(n,{marginTop:1,overflow:"auto",maxHeight:120,children:[e(l,{variant:"subtitle2",children:"Used Fact Refs"}),y.map(c=>e(n,{children:c},"factRef"))]}),C&&e(n,{marginTop:1,children:e(ee,{title:"Configure this integration's collection schedule instead.",children:e(oe,{severity:"warning",children:"Check Schedule Detected"})})})]}),e(te,{children:e(q,{variant:"outlined",to:v({checkId:d}),target:"_blank",children:"View"})})]})},Fe=({id:d,integrations:h})=>{const u=de(),o=d??u.integrationId,m=A(()=>({routeName:"soundcheck-integration-details",additionalAttributes:{integrationId:o||""}}),[o]),{reportContentLoaded:C}=ue(m),{reporter:p}=he(m),{data:v,isLoading:y}=pe([o??""]),{loading:c,allowed:k}=U({permission:ie}),{loading:s,allowed:a}=U({permission:re}),{showModal:D}=me(),{mutate:F,isPending:R}=fe(o??""),M=ce(async()=>{!await D({title:"Are you sure you want to delete stored UI config?",message:"This action cannot be undone and will remove any stored configs for this integration from the database."})||R||F()},[F,R,D]),t=v?.[0],f=y||s||c,G=h?.map(i=>i.integrationId)??be,T=h?.find(i=>i.integrationId===o)?.routePath,x=!s&&a&&t?.isEditable&&t?.isConfigurable&&G.includes(o??""),I=le(),w=P(Ce),B=P(ye),H=t?.hasUIConfig,S=A(()=>r(n,{display:"flex",gridGap:12,children:[e(N,{variant:"contained",color:"primary",onClick:()=>{I(B())},children:"All Integrations"}),o&&x&&e(N,{variant:"contained",color:"primary",onClick:()=>{I(T??w({integrationId:o}))},children:"Edit Integration"})]}),[B,T,w,o,x,I]);Be({title:t?.name??o,description:t?t.description??"":"",docLink:t?`https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/fact-collectors/3p-integrations/${t.id}`:"",sectionRight:S});const L=p?.getLCPValue();se(()=>{f||C({lcp:L})},[f,C,L]);const j=ge("backstage-ui");return r(O,{children:[j&&e(z,{children:e(Y,{title:t?.name??t?.id??"Integration",breadcrumbs:[{label:"Integrations",href:B()}],customActions:r(_,{align:"center",children:[x?e(J,{onClick:()=>I(w({integrationId:o??""})),children:"Configure"}):void 0,e(ve,{href:`https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/fact-collectors/3p-integrations/${t?.id}`})]})})}),e(Re,{hidePath:!0,children:r(W,{children:[f&&e(xe,{}),e(we,{entityName:"Integration",entityId:o,showNotFound:!f&&!t,showCannotView:!f&&!k}),t&&r(n,{children:[r(n,{marginBottom:2,children:[e(l,{variant:"h6",children:"Facts"}),e(n,{marginBottom:2,children:e(Ne,{facts:t.factNames.map(i=>{const b=(g=>{try{return $(g).name}catch{return g}})(i),V=ne(t.config?.collects).find(g=>g?.type===b||g?.factName===b);return{factRef:`${o}:default/${b}`,factName:b,config:V,uiConfig:!!t.hasUIConfig,parentConfig:t.config}})})})]}),r(n,{marginBottom:2,children:[e(l,{variant:"h6",children:"Dependant Checks"}),E(t.dependentChecks)?e(l,{variant:"body2",children:"No dependant checks"}):e(n,{display:"flex",gridGap:12,flexWrap:"wrap",children:t.dependentChecks.map(i=>e(De,{id:i.id,title:i.name??i.id,description:i.description??void 0,rules:Ie(i.rule),integrationId:o,hasSchedule:i.schedule},i.id))})]}),a&&H&&r(n,{marginBottom:2,children:[e(l,{variant:"h6",children:"Admin Actions"}),t.hasUIConfig&&r(n,{marginTop:1,display:"flex",alignItems:"center",gridGap:16,children:[e(N,{disabled:R,size:"small",variant:"contained",color:"secondary",onClick:M,children:"Remove Config"}),e(l,{variant:"body2",color:"textSecondary",children:"Revert to using YAML to config this integration by deleting the stored UI config from the database."})]})]})]})]})})]})};export{Fe as CollectorDetailsPageDeprecated};
2
+ //# sourceMappingURL=CollectorDetailsPageDeprecated.esm.js.map
@@ -0,0 +1,2 @@
1
+ import{jsx as r,jsxs as i}from"react/jsx-runtime";import{Table as b,TableHeader as g,Row as m,Column as n,TableBody as C,Cell as s,Box as c,Text as a}from"@backstage/ui";import{makeStyles as v}from"@material-ui/core";import{isEmpty as N}from"lodash";import{getCronDescription as x}from"../../utils/cron.esm.js";import{CustomCell as f}from"../CustomCell/CustomCell.esm.js";import"../EmptyState/EmptyState.esm.js";import{EmptyStateBUI as F}from"../EmptyState/EmptyStateBUI.esm.js";import"@backstage/core-plugin-api";import"@backstage/plugin-permission-react";import"@remixicon/react";import"@spotify/backstage-plugin-soundcheck-common";import"react-router-dom";import"../../routes.esm.js";import{FactExplorerDialogButtonBUI as T}from"../FactExplorer/FactExplorerDialogBUI.esm.js";const B=v(()=>({noConfig:{color:"var(--bui-fg-disabled)"}})),S=({frequency:o})=>{if(o){let e;return o.cron?e=r(c,{children:i(a,{variant:"body-small",children:["cron(",o.cron,") ",x(o.cron)]})}):e=r(c,{children:i(a,{variant:"body-small",color:"secondary",children:["Every ",Object.values(o)[0]," ",Object.keys(o)[0]]})}),r(c,{pt:"1",pb:"1",children:e})}return r(a,{color:"secondary",children:"No Schedule Configured"})},I=({facts:o})=>{const e=B(),p=(l,t)=>l?t?"UI":"YAML":"No Config";return N(o)?r(F,{title:"No Available Facts Found",body:"No Available Facts Found for Integration."}):i(b,{children:[r(g,{children:i(m,{children:[r(n,{id:"fact-name",allowsSorting:!0,isRowHeader:!0,style:{width:"35%"},children:"Fact Name"}),r(n,{children:"Source"}),r(n,{children:"Schedule"}),r(n,{children:"Test"})]})}),r(C,{children:o.map(({factName:l,config:t,uiConfig:h,factRef:d,parentConfig:u})=>{const y=t?.frequency??u?.frequency;return i(m,{children:[r(s,{title:l}),r(s,{className:t?void 0:e.noConfig,title:p(t,h)}),r(f,{children:r(S,{frequency:y})}),r(f,{children:r(T,{factRef:d,size:"small",text:"Test",variant:"secondary"})})]},d)})})]})};export{I as CollectorFactTableBUI};
2
+ //# sourceMappingURL=CollectorFactTableBUI.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as c,jsx as r}from"react/jsx-runtime";import{Content as p}from"@backstage/core-components";import{usePermission as f}from"@backstage/plugin-permission-react";import{soundcheckCollectorUpdatePermission as g}from"@spotify/backstage-plugin-soundcheck-common";import{useParams as u}from"react-router-dom";import{useGetCollectors as C}from"../../hooks/collectors/useGetCollectors.esm.js";import{LoadingIndicator as I}from"../LoadingIndicator/LoadingIndicator.esm.js";import{PageWarningMessage as P}from"../PageWarningMessage/PageWarningMessage.esm.js";import{Configurator as h}from"./Configurators/Configurator.esm.js";const w=({collectorId:n})=>{const s=u(),e=n??s.integrationId,{data:m,isLoading:a}=C([e??""]),{loading:d,allowed:l}=f({permission:g}),o=m?.[0],t=a||d,i=l&&o?.isEditable;return c(p,{children:[t&&r(I,{}),r(P,{entityName:"Integration",entityId:e,showNotFound:!t&&!o,showCannotEdit:!t&&!i}),o&&i&&r(h,{selectedCollector:o})]})};export{w as CollectorPage};
1
+ import{jsxs as a,Fragment as b,jsx as o}from"react/jsx-runtime";import{Content as C}from"@backstage/core-components";import{useRouteRef as m}from"@backstage/core-plugin-api";import{usePermission as R}from"@backstage/plugin-permission-react";import{Box as P,HeaderPage as k,ButtonLink as y}from"@backstage/ui";import{RiInformationLine as x}from"@remixicon/react";import{soundcheckCollectorUpdatePermission as F}from"@spotify/backstage-plugin-soundcheck-common";import{useParams as L}from"react-router-dom";import{useGetCollectors as w}from"../../hooks/collectors/useGetCollectors.esm.js";import{useFeatureFlag as B}from"../../hooks/useFeatureFlag.esm.js";import{integrationsPageRouteRef as M,integrationDetailsRouteRef as N}from"../../routes.esm.js";import{formStyles as j}from"../../utils/formStyles.esm.js";import{LoadingIndicator as E}from"../LoadingIndicator/LoadingIndicator.esm.js";import{PageWarningMessage as H}from"../PageWarningMessage/PageWarningMessage.esm.js";import{RoutingMainMenu as S}from"../RoutingPage/RoutingMainMenu.esm.js";import{Configurator as U}from"./Configurators/Configurator.esm.js";const W=({collectorId:s,includeHeader:l})=>{const c=L(),r=s??c.integrationId,t=B("backstage-ui"),{data:f,isLoading:d}=w([r??""]),{loading:p,allowed:g}=R({permission:F}),u=m(M),h=m(N),e=f?.[0],i=d||p,n=g&&e?.isEditable,I=j();return a(b,{children:[t&&l&&o(S,{children:null}),t&&o(P,{children:o(k,{title:"Configuration",breadcrumbs:[{label:"Integrations",href:u()},{label:e?.name??e?.id??"Integration",href:h({integrationId:r??""})}],customActions:o(y,{iconStart:o(x,{}),href:`https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/fact-collectors/3p-integrations/${e?.id}`,target:"_blank",rel:"noopener noreferrer",variant:"secondary"})})}),a(C,{className:t?I.formWrapperBUI:"",children:[i&&o(E,{}),o(H,{entityName:"Integration",entityId:r,showNotFound:!i&&!e,showCannotEdit:!i&&!n}),e&&n&&o(U,{selectedCollector:e})]})]})};export{W as CollectorPage};
2
2
  //# sourceMappingURL=CollectorPage.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as u,Fragment as S,jsx as e}from"react/jsx-runtime";import{zodResolver as k}from"@hookform/resolvers/zod";import{makeStyles as B,Paper as A,Divider as n}from"@material-ui/core";import{useCallback as F}from"react";import{useForm as N,FormProvider as R}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 I}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as W}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import{useUpdateCollectorConfig as q}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as z}from"../../../../routes.esm.js";import{FooterButtons as w}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as x}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as r}from"../Common/FactCollectionConfig.esm.js";import"../Common/CollectorConfigAlert.esm.js";import{defaultCollectorOption as l}from"../Common/CollectorOption.esm.js";import{collectorHeaderContent as j,confirmationModalContent as M}from"../Common/utils.esm.js";import{NumberOfDaysComponent as b}from"./NumberOfDaysComponent.esm.js";import{NumberOfWorkItemsComponent as T}from"./NumberOfWorkItemsComponent.esm.js";import{mapConfigToAzureDevOpsCollectorConfig as H,defaultAzureDevOpsConfig as U,numberOfDaysCollectorConfig as d,numberOfWorkItemsCollectorConfig as V,mapAzureDevOpsCollectorConfigToConfig as L}from"./utils.esm.js";import{azureDevOpsCollectorFormSchema as E}from"./validation.esm.js";const G=B(t=>({spacer:{height:t.spacing(8),width:"100%"},section:{marginBottom:t.spacing(2)}})),J=({disabled:t,selectedCollector:i})=>{const C=F(async(o,...s)=>{const a={enabled:!1,collectors:[]},P={repositoryDetails:o.repositoryDetails.enabled?o.repositoryDetails:l(),branchPolicies:o.branchPolicies.enabled?o.branchPolicies:l(),branchStatus:o.branchStatus.enabled?o.branchStatus:l(),numberOfBranches:o.numberOfBranches.enabled?o.numberOfBranches:a,numberOfActivePullRequests:o.numberOfActivePullRequests.enabled?o.numberOfActivePullRequests:a,numberOfWorkItems:o.numberOfWorkItems.enabled?o.numberOfWorkItems:a};return k(E)(P,...s)},[]),m=N({defaultValues:i?H(i.config):U(),mode:"onChange",resolver:C}),{formState:{isValid:h},handleSubmit:c}=m,f=G(),g=!h,{mutateAsync:O}=q(),[y,v]=W(z),{showModal:D}=I(),p=async o=>{if(!await D(M(i)))return;const s=L(o);await O({collectorId:i.id,config:s})&&v()};return x(j(i)),u(S,{children:[e(A,{className:f.section,children:e(R,{...m,children:u("form",{onSubmit:c(p),children:[e(r,{name:"repositoryDetails",label:"Repository Details",description:"Collects details about an entity's repository.",disabled:t}),e(n,{}),e(r,{name:"branchPolicies",label:"Branch Policies",description:"Collects branch policies information from an entity's repository.",disabled:t}),e(n,{}),e(r,{name:"branchStatus",label:"Branch Status",description:"Collects the latest branch status information from an entity's repository.",disabled:t}),e(n,{}),e(r,{name:"numberOfBranches",label:"Number Of Branches",description:"Collects the number of branches from an entity's repository.",disabled:t,FactDetailsComponent:b,multipleCollectors:{enable:!0,defaultConfig:d()}}),e(n,{}),e(r,{name:"numberOfActivePullRequests",label:"Number Of Active Pull Requests",description:"Collects the number of active pull requests from an entity's repository.",disabled:t,FactDetailsComponent:b,multipleCollectors:{enable:!0,defaultConfig:d()}}),e(n,{}),e(r,{name:"numberOfWorkItems",label:"Number Of Work Items",description:"Collects the number of work items from an entity's project.",disabled:t,FactDetailsComponent:T,multipleCollectors:{enable:!0,defaultConfig:V()}})]})})}),e("div",{className:f.section,children:e(w,{onCancel:y,saveButtonText:"Save",isLoading:!1,onSave:c(p),disableSave:g})})]})};export{J as AzureDevOpsConfigurator};
1
+ import{jsxs as u,Fragment as S,jsx as e}from"react/jsx-runtime";import{zodResolver as k}from"@hookform/resolvers/zod";import{makeStyles as B,Paper as A,Divider as n}from"@material-ui/core";import{useCallback as F}from"react";import{useForm as N,FormProvider as R}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 I}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as W}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import{useUpdateCollectorConfig as q}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as z}from"../../../../routes.esm.js";import{FooterButtons as w}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as x}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as r}from"../Common/FactCollectionConfig.esm.js";import"../Common/CollectorConfigAlert.esm.js";import{defaultCollectorOption as l}from"../Common/CollectorOption.esm.js";import{collectorHeaderContent as j,confirmationModalContent as M}from"../Common/utils.esm.js";import{NumberOfDaysComponent as b}from"./NumberOfDaysComponent.esm.js";import{NumberOfWorkItemsComponent as T}from"./NumberOfWorkItemsComponent.esm.js";import{mapConfigToAzureDevOpsCollectorConfig as H,defaultAzureDevOpsConfig as U,numberOfDaysCollectorConfig as d,numberOfWorkItemsCollectorConfig as V,mapAzureDevOpsCollectorConfigToConfig as L}from"./utils.esm.js";import{azureDevOpsCollectorFormSchema as E}from"./validation.esm.js";const G=B(t=>({spacer:{height:t.spacing(8),width:"100%"},section:{marginBottom:t.spacing(2)}})),J=({disabled:t,selectedCollector:i})=>{const C=F(async(o,...s)=>{const a={enabled:!1,collectors:[]},P={repositoryDetails:o.repositoryDetails.enabled?o.repositoryDetails:l(),branchPolicies:o.branchPolicies.enabled?o.branchPolicies:l(),branchStatus:o.branchStatus.enabled?o.branchStatus:l(),numberOfBranches:o.numberOfBranches.enabled?o.numberOfBranches:a,numberOfActivePullRequests:o.numberOfActivePullRequests.enabled?o.numberOfActivePullRequests:a,numberOfWorkItems:o.numberOfWorkItems.enabled?o.numberOfWorkItems:a};return k(E)(P,...s)},[]),m=N({defaultValues:i?H(i.config):U(),mode:"onChange",resolver:C}),{formState:{isValid:h},handleSubmit:c}=m,f=G(),g=!h,{mutateAsync:O}=q(),[y,v]=W(z),{showModal:D}=I(),p=async o=>{if(!await D(M(i)))return;const s=L(o);await O({collectorId:i.id,config:s})&&v()};return x(j(i)),u(S,{children:[e(A,{className:f.section,children:e(R,{...m,children:u("form",{onSubmit:c(p),children:[e(r,{name:"repositoryDetails",label:"Repository Details",description:"Collects details about an entity's repository.",disabled:t}),e(n,{}),e(r,{name:"branchPolicies",label:"Branch Policies",description:"Collects branch policies information from an entity's repository.",disabled:t}),e(n,{}),e(r,{name:"branchStatus",label:"Branch Status",description:"Collects the latest branch status information from an entity's repository.",disabled:t}),e(n,{}),e(r,{name:"numberOfBranches",label:"Number Of Branches",description:"Collects the number of branches from an entity's repository.",disabled:t,FactDetailsComponent:b,multipleCollectors:{enable:!0,defaultConfig:d()}}),e(n,{}),e(r,{name:"numberOfActivePullRequests",label:"Number Of Active Pull Requests",description:"Collects the number of active pull requests from an entity's repository.",disabled:t,FactDetailsComponent:b,multipleCollectors:{enable:!0,defaultConfig:d()}}),e(n,{}),e(r,{name:"numberOfWorkItems",label:"Number Of Work Items",description:"Collects the number of work items from an entity's project.",disabled:t,FactDetailsComponent:T,multipleCollectors:{enable:!0,defaultConfig:V()}})]})})}),e("div",{className:f.section,children:e(w,{onCancel:y,saveButtonText:"Save",isLoading:!1,onSave:c(p),disableSave:g})})]})};export{J as AzureDevOpsConfigurator};
2
2
  //# sourceMappingURL=AzureDevOpsConfigurator.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as h,Fragment as b,jsx as o}from"react/jsx-runtime";import{zodResolver as B}from"@hookform/resolvers/zod";import{makeStyles as v,Paper as F}from"@material-ui/core";import{useCallback as Q}from"react";import{useForm as S,FormProvider as q}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 N}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as w}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import{useUpdateCollectorConfig as x}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as k}from"../../../../routes.esm.js";import{FooterButtons as I}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as M}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as P}from"../Common/FactCollectionConfig.esm.js";import{CollectorConfigAlert as R}from"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as T,confirmationModalContent as U}from"../Common/utils.esm.js";import{QueryFactDetailsComponent as j}from"./QueryFactDetailsComponent.esm.js";import{mapConfigToBigQueryCollectorConfig as A,defaultBigQueryConfig as D,queryCollectorConfig as H,mapBigQueryCollectorConfigToConfig as V}from"./utils.esm.js";import{bigQueryCollectorFormSchema as z}from"./validation.esm.js";const L=v(e=>({spacer:{height:e.spacing(8),width:"100%"},section:{marginBottom:e.spacing(2)}})),O=({disabled:e,selectedCollector:r})=>{const c=Q(async(t,...i)=>{const C={enabled:!1,collectors:[]},y={query:t.query.enabled?t.query:C};return B(z)(y,...i)},[]),m=S({defaultValues:r?A(r.config):D(),mode:"onChange",resolver:c}),{formState:{isValid:s},handleSubmit:a}=m,n=L(),p=!s,{mutateAsync:f}=x(),[d,u]=w(k),{showModal:g}=N(),l=async t=>{if(!await g(U(r)))return;const i=V(t);await f({collectorId:r.id,config:i})&&u()};return M(T(r)),h(b,{children:[o(R,{collectorName:"Bigquery",collectorId:r.id,hasNonUIOptions:!0}),o(F,{className:n.section,children:o(q,{...m,children:o("form",{onSubmit:a(l),children:o(P,{name:"query",label:"Query",description:"Collects data from BigQuery.",disabled:e,FactDetailsComponent:j,multipleCollectors:{enable:!0,defaultConfig:H()}})})})}),o("div",{className:n.section,children:o(I,{onCancel:d,saveButtonText:"Save",isLoading:!1,onSave:a(l),disableSave:p})})]})};export{O as BigQueryConfigurator};
1
+ import{jsxs as h,Fragment as b,jsx as o}from"react/jsx-runtime";import{zodResolver as B}from"@hookform/resolvers/zod";import{makeStyles as v,Paper as F}from"@material-ui/core";import{useCallback as Q}from"react";import{useForm as S,FormProvider as q}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 N}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as w}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import{useUpdateCollectorConfig as x}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as k}from"../../../../routes.esm.js";import{FooterButtons as I}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as M}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as P}from"../Common/FactCollectionConfig.esm.js";import{CollectorConfigAlert as R}from"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as T,confirmationModalContent as U}from"../Common/utils.esm.js";import{QueryFactDetailsComponent as j}from"./QueryFactDetailsComponent.esm.js";import{mapConfigToBigQueryCollectorConfig as A,defaultBigQueryConfig as D,queryCollectorConfig as H,mapBigQueryCollectorConfigToConfig as V}from"./utils.esm.js";import{bigQueryCollectorFormSchema as z}from"./validation.esm.js";const L=v(e=>({spacer:{height:e.spacing(8),width:"100%"},section:{marginBottom:e.spacing(2)}})),O=({disabled:e,selectedCollector:r})=>{const c=Q(async(t,...i)=>{const C={enabled:!1,collectors:[]},y={query:t.query.enabled?t.query:C};return B(z)(y,...i)},[]),m=S({defaultValues:r?A(r.config):D(),mode:"onChange",resolver:c}),{formState:{isValid:s},handleSubmit:a}=m,n=L(),p=!s,{mutateAsync:f}=x(),[d,u]=w(k),{showModal:g}=N(),l=async t=>{if(!await g(U(r)))return;const i=V(t);await f({collectorId:r.id,config:i})&&u()};return M(T(r)),h(b,{children:[o(R,{collectorName:"Bigquery",collectorId:r.id,hasNonUIOptions:!0}),o(F,{className:n.section,children:o(q,{...m,children:o("form",{onSubmit:a(l),children:o(P,{name:"query",label:"Query",description:"Collects data from BigQuery.",disabled:e,FactDetailsComponent:j,multipleCollectors:{enable:!0,defaultConfig:H()}})})})}),o("div",{className:n.section,children:o(I,{onCancel:d,saveButtonText:"Save",isLoading:!1,onSave:a(l),disableSave:p})})]})};export{O as BigQueryConfigurator};
2
2
  //# sourceMappingURL=BigQueryConfigurator.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as C,Fragment as u,jsx as o}from"react/jsx-runtime";import{makeStyles as h,Paper as S}from"@material-ui/core";import{useForm as v,FormProvider as b}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"react";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as y}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as B}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import{useUpdateCollectorConfig as w}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as x}from"../../../../routes.esm.js";import{FooterButtons as F}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as N}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as k}from"../Common/FactCollectionConfig.esm.js";import"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as D,confirmationModalContent as M}from"../Common/utils.esm.js";import{mapConfigToCatalogCollectorConfig as P,defaultCatalogConfig as T,mapCatalogCollectorConfigToConfig as j}from"./utils.esm.js";const H=h(t=>({spacer:{height:t.spacing(8),width:"100%"},section:{marginBottom:t.spacing(2)},form:{marginBottom:t.spacing(2)}})),R=({disabled:t,selectedCollector:r})=>{const i=v({defaultValues:r?P(r.config):T(),mode:"onChange"}),{formState:{errors:n},handleSubmit:e}=i,a=H(),s=!!n.entityDescriptor,{mutateAsync:l}=w(),[c,p]=B(x),{showModal:f}=y(),m=async g=>{if(!await f(M(r)))return;const d=j(g);await l({collectorId:r.id,config:d})&&p()};return N(D(r)),C(u,{children:[o(S,{className:a.form,children:o(b,{...i,children:o("form",{onSubmit:e(m),children:o(k,{name:"entityDescriptor",label:"Entity Descriptor",description:"Collects entities from Backstage's Software Catalog.",disabled:t})})})}),o("div",{className:a.section,children:o(F,{onCancel:c,saveButtonText:"Save",isLoading:!1,onSave:e(m),disableSave:s})})]})};export{R as CatalogConfigurator};
1
+ import{jsxs as C,Fragment as u,jsx as o}from"react/jsx-runtime";import{makeStyles as h,Paper as S}from"@material-ui/core";import{useForm as v,FormProvider as b}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"react";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as y}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as B}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import{useUpdateCollectorConfig as w}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as x}from"../../../../routes.esm.js";import{FooterButtons as F}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as N}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as k}from"../Common/FactCollectionConfig.esm.js";import"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as D,confirmationModalContent as M}from"../Common/utils.esm.js";import{mapConfigToCatalogCollectorConfig as P,defaultCatalogConfig as T,mapCatalogCollectorConfigToConfig as j}from"./utils.esm.js";const H=h(t=>({spacer:{height:t.spacing(8),width:"100%"},section:{marginBottom:t.spacing(2)},form:{marginBottom:t.spacing(2)}})),R=({disabled:t,selectedCollector:r})=>{const i=v({defaultValues:r?P(r.config):T(),mode:"onChange"}),{formState:{errors:n},handleSubmit:e}=i,a=H(),s=!!n.entityDescriptor,{mutateAsync:l}=w(),[c,p]=B(x),{showModal:f}=y(),m=async g=>{if(!await f(M(r)))return;const d=j(g);await l({collectorId:r.id,config:d})&&p()};return N(D(r)),C(u,{children:[o(S,{className:a.form,children:o(b,{...i,children:o("form",{onSubmit:e(m),children:o(k,{name:"entityDescriptor",label:"Entity Descriptor",description:"Collects entities from Backstage's Software Catalog.",disabled:t})})})}),o("div",{className:a.section,children:o(F,{onCancel:c,saveButtonText:"Save",isLoading:!1,onSave:e(m),disableSave:s})})]})};export{R as CatalogConfigurator};
2
2
  //# sourceMappingURL=CatalogConfigurator.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as c,Fragment as D,jsx as e}from"react/jsx-runtime";import{makeStyles as b,Paper as h,Divider as S}from"@material-ui/core";import{useForm as y,FormProvider as j}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"react";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as N}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as F}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import{useUpdateCollectorConfig as L}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as O}from"../../../../routes.esm.js";import{FooterButtons as k}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as w}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as l}from"../Common/FactCollectionConfig.esm.js";import{CollectorConfigAlert as x}from"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as B,confirmationModalContent as I}from"../Common/utils.esm.js";import{mapConfigToDataDogCollectorConfig as M,defaultDataDogConfig as P,mapDataDogCollectorConfigToConfig as T}from"./utils.esm.js";const A=b(i=>({spacer:{height:i.spacing(8),width:"100%"},section:{marginBottom:i.spacing(2)}})),H=({disabled:i,selectedCollector:o})=>{const t=y({defaultValues:o?M(o.config):P(),mode:"onChange"}),{formState:{errors:r},handleSubmit:a}=t,n=A(),s=!!r.serviceDefinition||!!r.serviceLevelObjective,{mutateAsync:d}=L(),[f,p]=F(O),{showModal:g}=N(),m=async C=>{if(!await g(I(o)))return;const u=T(C);await d({collectorId:o.id,config:u})&&p()};w(B(o));const v=!o.config?.apiKey||!o.config?.appKey;return c(D,{children:[e(x,{collectorName:"Datadog",collectorId:o.id,invalidConfig:v,hasNonUIOptions:!0}),e(h,{className:n.section,children:e(j,{...t,children:c("form",{onSubmit:a(m),children:[e(l,{name:"serviceDefinition",label:"Service Definition",description:"Collects details about Datadog service linked to an entity.",disabled:i}),e(S,{}),e(l,{name:"serviceLevelObjective",label:"Service Level Objective",description:"Collects details about SLOs configured for a Datadog service linked to an entity.",disabled:i})]})})}),e("div",{className:n.section,children:e(k,{onCancel:f,saveButtonText:"Save",isLoading:!1,onSave:a(m),disableSave:s})})]})};export{H as DataDogConfigurator};
1
+ import{jsxs as c,Fragment as D,jsx as e}from"react/jsx-runtime";import{makeStyles as b,Paper as h,Divider as S}from"@material-ui/core";import{useForm as y,FormProvider as j}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"react";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as N}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as F}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import{useUpdateCollectorConfig as L}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as O}from"../../../../routes.esm.js";import{FooterButtons as k}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as w}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as l}from"../Common/FactCollectionConfig.esm.js";import{CollectorConfigAlert as x}from"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as B,confirmationModalContent as I}from"../Common/utils.esm.js";import{mapConfigToDataDogCollectorConfig as M,defaultDataDogConfig as P,mapDataDogCollectorConfigToConfig as T}from"./utils.esm.js";const A=b(i=>({spacer:{height:i.spacing(8),width:"100%"},section:{marginBottom:i.spacing(2)}})),H=({disabled:i,selectedCollector:o})=>{const t=y({defaultValues:o?M(o.config):P(),mode:"onChange"}),{formState:{errors:r},handleSubmit:a}=t,n=A(),s=!!r.serviceDefinition||!!r.serviceLevelObjective,{mutateAsync:d}=L(),[p,f]=F(O),{showModal:g}=N(),m=async C=>{if(!await g(I(o)))return;const u=T(C);await d({collectorId:o.id,config:u})&&f()};w(B(o));const v=!o.config?.apiKey||!o.config?.appKey;return c(D,{children:[e(x,{collectorName:"Datadog",collectorId:o.id,invalidConfig:v,hasNonUIOptions:!0}),e(h,{className:n.section,children:e(j,{...t,children:c("form",{onSubmit:a(m),children:[e(l,{name:"serviceDefinition",label:"Service Definition",description:"Collects details about Datadog service linked to an entity.",disabled:i}),e(S,{}),e(l,{name:"serviceLevelObjective",label:"Service Level Objective",description:"Collects details about SLOs configured for a Datadog service linked to an entity.",disabled:i})]})})}),e("div",{className:n.section,children:e(k,{onCancel:p,saveButtonText:"Save",isLoading:!1,onSave:a(m),disableSave:s})})]})};export{H as DataDogConfigurator};
2
2
  //# sourceMappingURL=DataDogConfigurator.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as C,Fragment as u,jsx as o}from"react/jsx-runtime";import{makeStyles as h,Paper as S}from"@material-ui/core";import{useForm as y,FormProvider as v}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"react";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as R}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as b}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import{useUpdateCollectorConfig as D}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as B}from"../../../../routes.esm.js";import{FooterButtons as F}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as w}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as x}from"../Common/FactCollectionConfig.esm.js";import"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as N,confirmationModalContent as T}from"../Common/utils.esm.js";import{mapConfigToDataRegistryCollectorConfig as M,defaultDataRegistryConfig as P,mapDataRegistryCollectorConfigToConfig as j}from"./utils.esm.js";const k=h(t=>({spacer:{height:t.spacing(8),width:"100%"},section:{marginBottom:t.spacing(2)},form:{marginBottom:t.spacing(2)}})),H=({disabled:t,selectedCollector:e})=>{const r=y({defaultValues:e?M(e.config):P(),mode:"onChange"}),{formState:{errors:n},handleSubmit:i}=r,a=k(),s=!!n.datasetSchema,{mutateAsync:c}=D(),[l,p]=b(B),{showModal:f}=R(),m=async d=>{if(!await f(T(e)))return;const g=j(d);await c({collectorId:e.id,config:g})&&p()};return w(N(e)),C(u,{children:[o(S,{className:a.form,children:o(v,{...r,children:o("form",{onSubmit:i(m),children:o(x,{name:"datasetSchema",label:"Dataset Schema",description:"Collects fields (name, type, description) from a dataset in Data Registry.",disabled:t})})})}),o("div",{className:a.section,children:o(F,{onCancel:l,saveButtonText:"Save",isLoading:!1,onSave:i(m),disableSave:s})})]})};export{H as DataRegistryConfigurator};
1
+ import{jsxs as C,Fragment as u,jsx as o}from"react/jsx-runtime";import{makeStyles as h,Paper as S}from"@material-ui/core";import{useForm as y,FormProvider as v}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"react";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as R}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as b}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import{useUpdateCollectorConfig as D}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as B}from"../../../../routes.esm.js";import{FooterButtons as F}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as w}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as x}from"../Common/FactCollectionConfig.esm.js";import"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as N,confirmationModalContent as T}from"../Common/utils.esm.js";import{mapConfigToDataRegistryCollectorConfig as M,defaultDataRegistryConfig as P,mapDataRegistryCollectorConfigToConfig as j}from"./utils.esm.js";const k=h(t=>({spacer:{height:t.spacing(8),width:"100%"},section:{marginBottom:t.spacing(2)},form:{marginBottom:t.spacing(2)}})),H=({disabled:t,selectedCollector:r})=>{const e=y({defaultValues:r?M(r.config):P(),mode:"onChange"}),{formState:{errors:n},handleSubmit:i}=e,a=k(),s=!!n.datasetSchema,{mutateAsync:c}=D(),[l,p]=b(B),{showModal:f}=R(),m=async d=>{if(!await f(T(r)))return;const g=j(d);await c({collectorId:r.id,config:g})&&p()};return w(N(r)),C(u,{children:[o(S,{className:a.form,children:o(v,{...e,children:o("form",{onSubmit:i(m),children:o(x,{name:"datasetSchema",label:"Dataset Schema",description:"Collects fields (name, type, description) from a dataset in Data Registry.",disabled:t})})})}),o("div",{className:a.section,children:o(F,{onCancel:l,saveButtonText:"Save",isLoading:!1,onSave:i(m),disableSave:s})})]})};export{H as DataRegistryConfigurator};
2
2
  //# sourceMappingURL=DataRegistryConfigurator.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as d,Fragment as S,jsx as e}from"react/jsx-runtime";import{zodResolver as A}from"@hookform/resolvers/zod";import{makeStyles as F,Paper as v,Divider as r}from"@material-ui/core";import{useForm as D,FormProvider as R}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"react";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as B}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as L}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import{useUpdateCollectorConfig as T}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as x}from"../../../../routes.esm.js";import{FooterButtons as N}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as P}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as i}from"../Common/FactCollectionConfig.esm.js";import"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as w,confirmationModalContent as G}from"../Common/utils.esm.js";import{CodeScanningAlertsFactDetails as E}from"./CodeScanningAlertsFactDetails.esm.js";import{DependabotAlertsFactDetails as I}from"./DependabotAlertsFactDetails.esm.js";import{SecretScanningAlertsFactDetails as M}from"./SecretScanningAlertsFactDetails.esm.js";import{SecurityAdvisoriesFactDetails as O}from"./SecurityAdvisoriesFactDetails.esm.js";import{mapConfigToGithubCollectorConfig as _,defaultGithubConfig as j,DEFAULT_NEW_COLLECTOR_CONFIG as n,mapGithubCollectorConfigToConfig as k}from"./utils.esm.js";import{githubCollectorFormSchema as H}from"./validation.esm.js";const p=F(o=>({spacer:{height:o.spacing(8),width:"100%"},section:{marginBottom:o.spacing(2)},form:{marginBottom:o.spacing(2)},root:{paddingTop:o.spacing(1)},formInput:{marginTop:0,marginBottom:o.spacing(2),width:"500px"},helperText:{marginLeft:0}})),U=({disabled:o,selectedCollector:a})=>{const s=D({defaultValues:a?_(a.config):j(),mode:"onChange",resolver:A(H)}),{formState:{errors:t},handleSubmit:l}=s,c=p(),f=!!t.branchProtections||!!t.branchRules||!!t.codeScanningAlerts||!!t.dependabotAlerts||!!t.repositoryDetails||!!t.repositoryLanguages||!!t.secretScanningAlerts||!!t.securityAdvisories,{mutateAsync:u}=T(),[g,b]=L(x),{showModal:C}=B(),m=async y=>{if(!await C(G(a)))return;const h=k(y);await u({collectorId:a.id,config:h})&&b()};return P(w(a)),d(S,{children:[e(v,{className:c.form,children:e(R,{...s,children:d("form",{onSubmit:l(m),children:[e(i,{name:"branchProtections",label:"Branch Protections",description:"Collects branch protection information from an entity's repository.",disabled:o}),e(r,{}),e(i,{name:"branchRules",label:"Branch Rules",description:"Collects branch rules information from an entity's repository.",disabled:o}),e(r,{}),e(i,{name:"codeScanningAlerts",label:"Code Scanning Alerts",description:"Collects details about code scanning alerts for an entity's repository.",disabled:o,FactDetailsComponent:E,multipleCollectors:{enable:!0,defaultConfig:n}}),e(r,{}),e(i,{name:"dependabotAlerts",label:"Dependabot Alerts",description:"Collects details about dependabot alerts for an entity's repository.",disabled:o,FactDetailsComponent:I,multipleCollectors:{enable:!0,defaultConfig:n}}),e(r,{}),e(i,{name:"repositoryDetails",label:"Repository Details",description:"Collects details about an entity's repository.",disabled:o}),e(r,{}),e(i,{name:"repositoryLanguages",label:"Repository Languages",description:"Collects details about the languages used in an entity's repository.",disabled:o}),e(r,{}),e(i,{name:"secretScanningAlerts",label:"Secret Scanning Alerts",description:"Collects details about secret scanning alerts for an entity's repository.",disabled:o,FactDetailsComponent:M,multipleCollectors:{enable:!0,defaultConfig:n}}),e(r,{}),e(i,{name:"securityAdvisories",label:"Security Advisories",description:"Collects details about security advisories for an entity's repository.",disabled:o,FactDetailsComponent:O,multipleCollectors:{enable:!0,defaultConfig:n}})]})})}),e("div",{className:c.section,children:e(N,{onCancel:g,saveButtonText:"Save",isLoading:!1,onSave:l(m),disableSave:f})})]})};export{U as GithubConfigurator,p as useStyles};
1
+ import{jsxs as p,Fragment as S,jsx as e}from"react/jsx-runtime";import{zodResolver as A}from"@hookform/resolvers/zod";import{makeStyles as F,Paper as v,Divider as r}from"@material-ui/core";import{useForm as D,FormProvider as R}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"react";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as B}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as L}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import{useUpdateCollectorConfig as T}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as x}from"../../../../routes.esm.js";import{FooterButtons as N}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as P}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as i}from"../Common/FactCollectionConfig.esm.js";import"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as w,confirmationModalContent as G}from"../Common/utils.esm.js";import{CodeScanningAlertsFactDetails as E}from"./CodeScanningAlertsFactDetails.esm.js";import{DependabotAlertsFactDetails as I}from"./DependabotAlertsFactDetails.esm.js";import{SecretScanningAlertsFactDetails as M}from"./SecretScanningAlertsFactDetails.esm.js";import{SecurityAdvisoriesFactDetails as O}from"./SecurityAdvisoriesFactDetails.esm.js";import{mapConfigToGithubCollectorConfig as _,defaultGithubConfig as j,DEFAULT_NEW_COLLECTOR_CONFIG as n,mapGithubCollectorConfigToConfig as k}from"./utils.esm.js";import{githubCollectorFormSchema as H}from"./validation.esm.js";const d=F(o=>({spacer:{height:o.spacing(8),width:"100%"},section:{marginBottom:o.spacing(2)},form:{marginBottom:o.spacing(2)},root:{paddingTop:o.spacing(1)},formInput:{marginTop:0,marginBottom:o.spacing(2),width:"500px"},helperText:{marginLeft:0}})),U=({disabled:o,selectedCollector:a})=>{const s=D({defaultValues:a?_(a.config):j(),mode:"onChange",resolver:A(H)}),{formState:{errors:t},handleSubmit:l}=s,c=d(),f=!!t.branchProtections||!!t.branchRules||!!t.codeScanningAlerts||!!t.dependabotAlerts||!!t.repositoryDetails||!!t.repositoryLanguages||!!t.secretScanningAlerts||!!t.securityAdvisories,{mutateAsync:u}=T(),[g,b]=L(x),{showModal:C}=B(),m=async y=>{if(!await C(G(a)))return;const h=k(y);await u({collectorId:a.id,config:h})&&b()};return P(w(a)),p(S,{children:[e(v,{className:c.form,children:e(R,{...s,children:p("form",{onSubmit:l(m),children:[e(i,{name:"branchProtections",label:"Branch Protections",description:"Collects branch protection information from an entity's repository.",disabled:o}),e(r,{}),e(i,{name:"branchRules",label:"Branch Rules",description:"Collects branch rules information from an entity's repository.",disabled:o}),e(r,{}),e(i,{name:"codeScanningAlerts",label:"Code Scanning Alerts",description:"Collects details about code scanning alerts for an entity's repository.",disabled:o,FactDetailsComponent:E,multipleCollectors:{enable:!0,defaultConfig:n}}),e(r,{}),e(i,{name:"dependabotAlerts",label:"Dependabot Alerts",description:"Collects details about dependabot alerts for an entity's repository.",disabled:o,FactDetailsComponent:I,multipleCollectors:{enable:!0,defaultConfig:n}}),e(r,{}),e(i,{name:"repositoryDetails",label:"Repository Details",description:"Collects details about an entity's repository.",disabled:o}),e(r,{}),e(i,{name:"repositoryLanguages",label:"Repository Languages",description:"Collects details about the languages used in an entity's repository.",disabled:o}),e(r,{}),e(i,{name:"secretScanningAlerts",label:"Secret Scanning Alerts",description:"Collects details about secret scanning alerts for an entity's repository.",disabled:o,FactDetailsComponent:M,multipleCollectors:{enable:!0,defaultConfig:n}}),e(r,{}),e(i,{name:"securityAdvisories",label:"Security Advisories",description:"Collects details about security advisories for an entity's repository.",disabled:o,FactDetailsComponent:O,multipleCollectors:{enable:!0,defaultConfig:n}})]})})}),e("div",{className:c.section,children:e(N,{onCancel:g,saveButtonText:"Save",isLoading:!1,onSave:l(m),disableSave:f})})]})};export{U as GithubConfigurator,d as useStyles};
2
2
  //# sourceMappingURL=GithubConfigurator.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as l,Fragment as h,jsx as o}from"react/jsx-runtime";import{makeStyles as j,Paper as v,Divider as c}from"@material-ui/core";import{useForm as P,FormProvider as S}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"react";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as y}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as B}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import{useUpdateCollectorConfig as F}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as w}from"../../../../routes.esm.js";import{FooterButtons as x}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as D}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as r}from"../Common/FactCollectionConfig.esm.js";import"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as G,confirmationModalContent as L}from"../Common/utils.esm.js";import{mapConfigToGitlabCollectorConfig as N,defaultGitlabConfig as T,mapGitlabCollectorConfigToConfig as M}from"./utils.esm.js";const k=j(t=>({spacer:{height:t.spacing(8),width:"100%"},section:{marginBottom:t.spacing(2)},form:{marginBottom:t.spacing(2)}})),H=({disabled:t,selectedCollector:e})=>{const a=P({defaultValues:e?N(e.config):T(),mode:"onChange"}),{formState:{errors:i},handleSubmit:n}=a,m=k(),p=!!i.branchProtections||!!i.projectDetails||!!i.projectLanguages,{mutateAsync:d}=F(),[f,g]=B(w),{showModal:u}=y(),s=async C=>{if(!await u(L(e)))return;const b=M(C);await d({collectorId:e.id,config:b})&&g()};return D(G(e)),l(h,{children:[o(v,{className:m.form,children:o(S,{...a,children:l("form",{onSubmit:n(s),children:[o(r,{name:"branchProtections",label:"Branch Protections",description:"Collects branch protection information from an entity's project.",disabled:t}),o(c,{}),o(r,{name:"projectDetails",label:"Project Details",description:"Collects details about an entity's project.",disabled:t}),o(c,{}),o(r,{name:"projectLanguages",label:"Project Languages",description:"Collects details about the languages used in an entity's project.",disabled:t})]})})}),o("div",{className:m.section,children:o(x,{onCancel:f,saveButtonText:"Save",isLoading:!1,onSave:n(s),disableSave:p})})]})};export{H as GitlabConfigurator};
1
+ import{jsxs as l,Fragment as h,jsx as o}from"react/jsx-runtime";import{makeStyles as j,Paper as v,Divider as c}from"@material-ui/core";import{useForm as P,FormProvider as S}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"react";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as y}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as B}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import{useUpdateCollectorConfig as F}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as w}from"../../../../routes.esm.js";import{FooterButtons as x}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as D}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as r}from"../Common/FactCollectionConfig.esm.js";import"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as G,confirmationModalContent as L}from"../Common/utils.esm.js";import{mapConfigToGitlabCollectorConfig as N,defaultGitlabConfig as T,mapGitlabCollectorConfigToConfig as M}from"./utils.esm.js";const k=j(t=>({spacer:{height:t.spacing(8),width:"100%"},section:{marginBottom:t.spacing(2)},form:{marginBottom:t.spacing(2)}})),H=({disabled:t,selectedCollector:e})=>{const a=P({defaultValues:e?N(e.config):T(),mode:"onChange"}),{formState:{errors:i},handleSubmit:n}=a,m=k(),p=!!i.branchProtections||!!i.projectDetails||!!i.projectLanguages,{mutateAsync:d}=F(),[f,g]=B(w),{showModal:u}=y(),s=async C=>{if(!await u(L(e)))return;const b=M(C);await d({collectorId:e.id,config:b})&&g()};return D(G(e)),l(h,{children:[o(v,{className:m.form,children:o(S,{...a,children:l("form",{onSubmit:n(s),children:[o(r,{name:"branchProtections",label:"Branch Protections",description:"Collects branch protection information from an entity's project.",disabled:t}),o(c,{}),o(r,{name:"projectDetails",label:"Project Details",description:"Collects details about an entity's project.",disabled:t}),o(c,{}),o(r,{name:"projectLanguages",label:"Project Languages",description:"Collects details about the languages used in an entity's project.",disabled:t})]})})}),o("div",{className:m.section,children:o(x,{onCancel:f,saveButtonText:"Save",isLoading:!1,onSave:n(s),disableSave:p})})]})};export{H as GitlabConfigurator};
2
2
  //# sourceMappingURL=GitlabConfigurator.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as b,Fragment as v,jsx as o}from"react/jsx-runtime";import{zodResolver as F}from"@hookform/resolvers/zod";import{makeStyles as H,Paper as S}from"@material-ui/core";import{useCallback as q}from"react";import{useForm as N,FormProvider as R}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 T}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as w}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import{useUpdateCollectorConfig as x}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as y}from"../../../../routes.esm.js";import{FooterButtons as B}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as P}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as k}from"../Common/FactCollectionConfig.esm.js";import{CollectorConfigAlert as I}from"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as M,confirmationModalContent as U}from"../Common/utils.esm.js";import{RequestFactDetailsComponent as j}from"./RequestFactDetailsComponent.esm.js";import{mapConfigToHttpCollectorConfig as A,defaultHttpConfig as D,defaultRequestCollectorConfig as V,mapHttpCollectorConfigToConfig as z}from"./utils.esm.js";import{httpCollectorFormSchema as L}from"./validation.esm.js";const O=H(e=>({spacer:{height:e.spacing(8),width:"100%"},section:{marginBottom:e.spacing(2)}})),E=({disabled:e,selectedCollector:t})=>{const s=q(async(r,...i)=>{const g={enabled:!1,collectors:[]},h={request:r.request.enabled?r.request:g};return F(L)(h,...i)},[]),n=N({defaultValues:t?A(t.config):D(),mode:"onChange",resolver:s}),{formState:{isValid:c},handleSubmit:a}=n,m=O(),p=!c,{mutateAsync:f}=x(),[d,u]=w(y),{showModal:C}=T(),l=async r=>{if(!await C(U(t)))return;const i=z(r);await f({collectorId:t.id,config:i})&&u()};return P(M(t)),b(v,{children:[o(I,{collectorName:"Http",collectorId:t.id,hasNonUIOptions:!0}),o(S,{className:m.section,children:o(R,{...n,children:o("form",{onSubmit:a(l),children:o(k,{name:"request",label:"Request",description:"Collects data from HTTP endpoint.",disabled:e,FactDetailsComponent:j,multipleCollectors:{enable:!0,defaultConfig:V()}})})})}),o("div",{className:m.section,children:o(B,{onCancel:d,saveButtonText:"Save",isLoading:!1,onSave:a(l),disableSave:p})})]})};export{E as HttpConfigurator};
1
+ import{jsxs as b,Fragment as v,jsx as o}from"react/jsx-runtime";import{zodResolver as F}from"@hookform/resolvers/zod";import{makeStyles as H,Paper as S}from"@material-ui/core";import{useCallback as q}from"react";import{useForm as N,FormProvider as R}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 T}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as w}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import{useUpdateCollectorConfig as x}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as y}from"../../../../routes.esm.js";import{FooterButtons as B}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as P}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as k}from"../Common/FactCollectionConfig.esm.js";import{CollectorConfigAlert as I}from"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as M,confirmationModalContent as U}from"../Common/utils.esm.js";import{RequestFactDetailsComponent as j}from"./RequestFactDetailsComponent.esm.js";import{mapConfigToHttpCollectorConfig as A,defaultHttpConfig as D,defaultRequestCollectorConfig as V,mapHttpCollectorConfigToConfig as z}from"./utils.esm.js";import{httpCollectorFormSchema as L}from"./validation.esm.js";const O=H(e=>({spacer:{height:e.spacing(8),width:"100%"},section:{marginBottom:e.spacing(2)}})),E=({disabled:e,selectedCollector:t})=>{const s=q(async(r,...i)=>{const g={enabled:!1,collectors:[]},h={request:r.request.enabled?r.request:g};return F(L)(h,...i)},[]),m=N({defaultValues:t?A(t.config):D(),mode:"onChange",resolver:s}),{formState:{isValid:c},handleSubmit:n}=m,a=O(),p=!c,{mutateAsync:f}=x(),[d,u]=w(y),{showModal:C}=T(),l=async r=>{if(!await C(U(t)))return;const i=z(r);await f({collectorId:t.id,config:i})&&u()};return P(M(t)),b(v,{children:[o(I,{collectorName:"Http",collectorId:t.id,hasNonUIOptions:!0}),o(S,{className:a.section,children:o(R,{...m,children:o("form",{onSubmit:n(l),children:o(k,{name:"request",label:"Request",description:"Collects data from HTTP endpoint.",disabled:e,FactDetailsComponent:j,multipleCollectors:{enable:!0,defaultConfig:V()}})})})}),o("div",{className:a.section,children:o(B,{onCancel:d,saveButtonText:"Save",isLoading:!1,onSave:n(l),disableSave:p})})]})};export{E as HttpConfigurator};
2
2
  //# sourceMappingURL=HttpConfigurator.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as b,jsx as o}from"react/jsx-runtime";import{makeStyles as x,Box as c,Chip as g,TextField as T,FormControlLabel as C,Checkbox as S}from"@material-ui/core";import v from"@material-ui/icons/CheckBox";import N from"@material-ui/icons/CheckBoxOutlineBlank";import{Autocomplete as k}from"@material-ui/lab";import{useState as I,useEffect as L}from"react";import{ListboxVirtualized as z}from"../../../ListboxVirtualized/ListboxVirtualized.esm.js";import{HTTP_STATUSES as p}from"./utils.esm.js";const H=x(a=>({statusInput:{marginTop:0},statusChips:{marginBottom:a.spacing(1)},helperText:{marginLeft:0}})),P=({value:a,onChange:i,disabled:r,errors:m,helperText:d})=>{const n=H(),[s,u]=I(a??[]);L(()=>{i&&i(s.map(e=>Number(e)))},[s,i]);const f=(e,t)=>{u(s?.filter(l=>l!==t))},h=(e,t)=>{const l=t.length?t[t.length-1]:void 0;l&&isNaN(Number(l))||u(t)};return b(c,{children:[o(c,{children:s.map(e=>o(g,{label:e,size:"small",className:n.statusChips,onDelete:t=>f(t,e),clickable:!1,disabled:r},e))}),o(k,{disableCloseOnSelect:!0,fullWidth:!0,multiple:!0,freeSolo:!0,popupIcon:null,renderTags:()=>null,disabled:r,options:p.map(e=>e.value),getOptionLabel:e=>p.find(t=>t.value===e)?.label??"",value:s,onChange:(e,t)=>h(e,t),ListboxComponent:z,ListboxProps:{itemHeight:40},renderInput:e=>o(T,{...e,variant:"outlined",margin:"dense",className:n.statusInput,placeholder:"Example: 500",disabled:r,error:!!m,helperText:m?.message??d,FormHelperTextProps:{className:n.helperText}}),renderOption:(e,{selected:t})=>o(C,{onClick:l=>l.preventDefault(),control:o(S,{icon:o(N,{fontSize:"small"}),checkedIcon:o(v,{fontSize:"small"}),checked:t,disabled:r}),label:p.find(l=>l.value===e)?.label??""})})]})};export{P as HttpStatusesInput};
1
+ import{jsxs as b,jsx as o}from"react/jsx-runtime";import{makeStyles as x,Box as c,Chip as g,TextField as T,FormControlLabel as C,Checkbox as S}from"@material-ui/core";import v from"@material-ui/icons/CheckBox";import N from"@material-ui/icons/CheckBoxOutlineBlank";import{Autocomplete as k}from"@material-ui/lab";import{useState as I,useEffect as L}from"react";import{ListboxVirtualized as z}from"../../../ListboxVirtualized/ListboxVirtualized.esm.js";import{HTTP_STATUSES as p}from"./utils.esm.js";const H=x(a=>({statusInput:{marginTop:0},statusChips:{marginBottom:a.spacing(1)},helperText:{marginLeft:0}})),E=({value:a,onChange:i,disabled:r,errors:m,helperText:d})=>{const n=H(),[s,u]=I(a??[]);L(()=>{i&&i(s.map(e=>Number(e)))},[s,i]);const f=(e,t)=>{u(s?.filter(l=>l!==t))},h=(e,t)=>{const l=t.length?t[t.length-1]:void 0;l&&isNaN(Number(l))||u(t)};return b(c,{children:[o(c,{children:s.map(e=>o(g,{label:e,size:"small",className:n.statusChips,onDelete:t=>f(t,e),clickable:!1,disabled:r},e))}),o(k,{disableCloseOnSelect:!0,fullWidth:!0,multiple:!0,freeSolo:!0,popupIcon:null,renderTags:()=>null,disabled:r,options:p.map(e=>e.value),getOptionLabel:e=>p.find(t=>t.value===e)?.label??"",value:s,onChange:(e,t)=>h(e,t),ListboxComponent:z,ListboxProps:{itemHeight:40},renderInput:e=>o(T,{...e,variant:"outlined",margin:"dense",className:n.statusInput,placeholder:"Example: 500",disabled:r,error:!!m,helperText:m?.message??d,FormHelperTextProps:{className:n.helperText}}),renderOption:(e,{selected:t})=>o(C,{onClick:l=>l.preventDefault(),control:o(S,{icon:o(N,{fontSize:"small"}),checkedIcon:o(v,{fontSize:"small"}),checked:t,disabled:r}),label:p.find(l=>l.value===e)?.label??""})})]})};export{E as HttpStatusesInput};
2
2
  //# sourceMappingURL=HttpStatusesInput.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as i,Fragment as N,jsx as o}from"react/jsx-runtime";import{DismissableBanner as w}from"@backstage/core-components";import{zodResolver as y}from"@hookform/resolvers/zod";import{makeStyles as D,Typography as F,Link as l,Paper as j,Divider as L}from"@material-ui/core";import{useForm as A,FormProvider as P}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"react";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as T}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as x}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import{useUpdateCollectorConfig as B}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as M}from"../../../../routes.esm.js";import{FooterButtons as R}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as U}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as m}from"../Common/FactCollectionConfig.esm.js";import{CollectorConfigAlert as q}from"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as H,confirmationModalContent as O}from"../Common/utils.esm.js";import{IssuesFactDetailsComponent as p}from"./IssuesFactDetailsComponent.esm.js";import{mapConfigToJiraCollectorConfig as Q,defaultJiraConfig as _,issuesCollectorConfig as d,mapJiraCollectorConfigToConfig as z}from"./utils.esm.js";import{jiraCollectorFormSchema as V}from"./validation.esm.js";const E=D(r=>({spacer:{height:r.spacing(8),width:"100%"},section:{marginBottom:r.spacing(2)},apiLink:{color:r.palette.text.primary}})),G=({disabled:r,selectedCollector:e})=>{const t=A({defaultValues:e?Q(e.config):_(),mode:"onChange",resolver:y(V)}),{formState:{errors:u},handleSubmit:n}=t,a=E(),f=!!u.issuesSearch,{mutateAsync:h}=B(),[g,C]=x(M),{showModal:S}=T(),c=async k=>{if(!await S(O(e)))return;const I=z(k);await h({collectorId:e.id,config:I})&&C()};U(H(e));const b=!e.config?.apiToken||!e.config?.username,v=!e.config?.personalAccessToken,J=!e.config?.baseUrl||b&&v,s={issuesSearchDeprecated:{name:"Search for issues using JQL",href:"https://developer.atlassian.com/cloud/jira/platform/rest/v2/api-group-issue-search/#api-rest-api-2-search-get"},issuesSearchNew:{name:"Search for issues using JQL enhanced search",href:"https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-search/#api-rest-api-3-search-jql-post"}};return i(N,{children:[o(q,{collectorName:"Jira",collectorId:e.id,invalidConfig:J,hasNonUIOptions:!0}),o(w,{message:i(F,{variant:"body2",children:["Issues Search fact collector now uses the updated",o(l,{href:s.issuesSearchNew.href,target:"_blank",children:i("span",{className:a.apiLink,children:[" ",s.issuesSearchNew.name," "]})}),"API, as the previous",o(l,{href:s.issuesSearchDeprecated.href,target:"_blank",children:i("span",{className:a.apiLink,children:[" ",s.issuesSearchDeprecated.name," "]})}),"API was deprecated and removed for Jira Cloud instances. Jira Cloud users may be required to update their dependent checks due to this minor API schema change."]}),variant:"warning",id:"jiraDeprecatedIssuesSearch"}),o(j,{className:a.section,children:o(P,{...t,children:i("form",{onSubmit:n(c),children:[o(m,{name:"issuesSearch",label:"Issues Search",description:"Collects details about Jira issues.",disabled:r,FactDetailsComponent:p,multipleCollectors:{enable:!0,defaultConfig:d(e.config)}}),o(L,{}),o(m,{name:"issuesCount",label:"Issues Count",description:"Collects details about a total number of Jira issues.",disabled:r,FactDetailsComponent:p,multipleCollectors:{enable:!0,defaultConfig:d(e.config)}})]})})}),o("div",{className:a.section,children:o(R,{onCancel:g,saveButtonText:"Save",isLoading:!1,onSave:n(c),disableSave:f})})]})};export{G as JiraConfigurator};
1
+ import{jsxs as i,Fragment as N,jsx as o}from"react/jsx-runtime";import{DismissableBanner as w}from"@backstage/core-components";import{zodResolver as y}from"@hookform/resolvers/zod";import{makeStyles as D,Typography as F,Link as l,Paper as j,Divider as L}from"@material-ui/core";import{useForm as A,FormProvider as P}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"react";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as T}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as x}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import{useUpdateCollectorConfig as B}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as M}from"../../../../routes.esm.js";import{FooterButtons as R}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as U}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as m}from"../Common/FactCollectionConfig.esm.js";import{CollectorConfigAlert as q}from"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as H,confirmationModalContent as O}from"../Common/utils.esm.js";import{IssuesFactDetailsComponent as p}from"./IssuesFactDetailsComponent.esm.js";import{mapConfigToJiraCollectorConfig as Q,defaultJiraConfig as _,issuesCollectorConfig as d,mapJiraCollectorConfigToConfig as z}from"./utils.esm.js";import{jiraCollectorFormSchema as V}from"./validation.esm.js";const E=D(r=>({spacer:{height:r.spacing(8),width:"100%"},section:{marginBottom:r.spacing(2)},apiLink:{color:r.palette.text.primary}})),G=({disabled:r,selectedCollector:e})=>{const t=A({defaultValues:e?Q(e.config):_(),mode:"onChange",resolver:y(V)}),{formState:{errors:u},handleSubmit:n}=t,a=E(),f=!!u.issuesSearch,{mutateAsync:h}=B(),[g,C]=x(M),{showModal:S}=T(),c=async k=>{if(!await S(O(e)))return;const I=z(k);await h({collectorId:e.id,config:I})&&C()};U(H(e));const b=!e.config?.apiToken||!e.config?.username,v=!e.config?.personalAccessToken,J=!e.config?.baseUrl||b&&v,s={issuesSearchDeprecated:{name:"Search for issues using JQL",href:"https://developer.atlassian.com/cloud/jira/platform/rest/v2/api-group-issue-search/#api-rest-api-2-search-get"},issuesSearchNew:{name:"Search for issues using JQL enhanced search",href:"https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-search/#api-rest-api-3-search-jql-post"}};return i(N,{children:[o(q,{collectorName:"Jira",collectorId:e.id,invalidConfig:J,hasNonUIOptions:!0}),o(w,{message:i(F,{variant:"body2",children:["Issues Search fact collector now uses the updated",o(l,{href:s.issuesSearchNew.href,target:"_blank",children:i("span",{className:a.apiLink,children:[" ",s.issuesSearchNew.name," "]})}),"API, as the previous",o(l,{href:s.issuesSearchDeprecated.href,target:"_blank",children:i("span",{className:a.apiLink,children:[" ",s.issuesSearchDeprecated.name," "]})}),"API was deprecated and removed for Jira Cloud instances. Jira Cloud users may be required to update their dependent checks due to this minor API schema change."]}),variant:"warning",id:"jiraDeprecatedIssuesSearch"}),o(j,{className:a.section,children:o(P,{...t,children:i("form",{onSubmit:n(c),children:[o(m,{name:"issuesSearch",label:"Issues Search",description:"Collects details about Jira issues.",disabled:r,FactDetailsComponent:p,multipleCollectors:{enable:!0,defaultConfig:d(e.config)}}),o(L,{}),o(m,{name:"issuesCount",label:"Issues Count",description:"Collects details about a total number of Jira issues.",disabled:r,FactDetailsComponent:p,multipleCollectors:{enable:!0,defaultConfig:d(e.config)}})]})})}),o("div",{className:a.section,children:o(R,{onCancel:g,saveButtonText:"Save",isLoading:!1,onSave:n(c),disableSave:f})})]})};export{G as JiraConfigurator};
2
2
  //# sourceMappingURL=JiraConfigurator.esm.js.map