@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.
- package/CHANGELOG.md +17 -0
- package/dist/alpha/integrations.esm.js +1 -1
- package/dist/alpha/pages.esm.js +1 -1
- package/dist/alpha.d.ts +2 -2
- package/dist/api.esm.js +1 -1
- package/dist/blueprints/IntegrationPageBlueprint.esm.js +1 -1
- package/dist/components/Badges/NoLevelBadge.esm.js +2 -2
- package/dist/components/CampaignCreatePage/CampaignCreatePage.esm.js +1 -1
- package/dist/components/CampaignForm/CampaignForm.esm.js +1 -1
- package/dist/components/CampaignForm/hooks/useCampaignForm.esm.js +1 -1
- package/dist/components/CampaignPage/CampaignPageBUI.esm.js +1 -1
- package/dist/components/CampaignPage/CampaignPageDeprecated.esm.js +1 -1
- package/dist/components/CampaignPage/CampaignStatusHistoryChart.esm.js +2 -0
- package/dist/components/CampaignPage/CampaignStatusHistoryTile.esm.js +1 -1
- package/dist/components/CampaignPage/CampaignStatusTile.esm.js +1 -1
- package/dist/components/CampaignPage/CampaignTechInsightsExplorerPage.esm.js +2 -0
- package/dist/components/CampaignsPage/CampaignListPage/CampaignListPageDeprecated.esm.js +1 -1
- package/dist/components/CampaignsPage/CampaignListPage/CampaignSummaryCard.esm.js +1 -1
- package/dist/components/CampaignsPage/CampaignListPageBUI.esm.js +1 -1
- package/dist/components/CampaignsPage/CampaignsPage.esm.js +1 -1
- package/dist/components/CampaignsPage/EditCampaignView.esm.js +1 -1
- package/dist/components/Cards/CheckStatusCard/CheckStatusCard.esm.js +2 -0
- package/dist/components/Cards/DescriptionCard/DescriptionCard.esm.js +1 -1
- package/dist/components/Cards/HistoricalCheckStatusCard/HistoricalCheckStatusCard.esm.js +2 -0
- package/dist/components/Cards/HistoricalTrackStatusCard/HistoricalTrackStatusCard.esm.js +2 -0
- package/dist/components/Cards/TrackStatusCard/TrackStatusCard.esm.js +2 -0
- package/dist/components/CertificationAccordion/CertificationAccordion.esm.js +1 -1
- package/dist/components/CertificationSidebar/CertificationSidebar.esm.js +1 -1
- package/dist/components/CertificationSidebar/CertificationSummary.esm.js +1 -1
- package/dist/components/CertificationSidebar/Check.esm.js +1 -1
- package/dist/components/CertificationSidebar/ExemptionJustificationDialog.esm.js +1 -1
- package/dist/components/CertificationSidebar/LevelSummary.esm.js +1 -1
- package/dist/components/CertificationsPage/CertificationTab.esm.js +1 -1
- package/dist/components/CertificationsPage/CertificationsPage.esm.js +1 -1
- package/dist/components/CertificationsPage/Playlist/PlaylistContext.esm.js +1 -1
- package/dist/components/CertificationsPage/Playlist/PlaylistSummary.esm.js +1 -1
- package/dist/components/Charts/chartUtils.esm.js +1 -1
- package/dist/components/CheckCreatePage/CheckCreatePage.esm.js +1 -1
- package/dist/components/CheckDetails/CheckDetails.esm.js +1 -1
- package/dist/components/CheckDetails/JustificationDetails.esm.js +1 -1
- package/dist/components/CheckDetails/ResultStateBox.esm.js +1 -1
- package/dist/components/CheckForm/CheckForm.esm.js +1 -1
- package/dist/components/CheckForm/FormFields/RuleInput/AddMenuButton.esm.js +1 -1
- package/dist/components/CheckForm/FormFields/RuleInput/Conditions/useRuleOptions.esm.js +1 -1
- package/dist/components/CheckForm/FormFields/RuleInput/RuleInputBox.esm.js +1 -1
- package/dist/components/CheckForm/Steps/CheckApplicabilityStep.esm.js +1 -1
- package/dist/components/CheckForm/Steps/CheckDetailsStep.esm.js +1 -1
- package/dist/components/CheckForm/Steps/CheckRulesStep.esm.js +1 -1
- package/dist/components/CheckForm/useCheckForm.esm.js +1 -1
- package/dist/components/CheckPage/CheckEditPage.esm.js +1 -1
- package/dist/components/CheckPage/CheckEditView.esm.js +1 -1
- package/dist/components/CheckPage/CheckEntitiesTable/CheckEntitiesTableBUI.esm.js +2 -0
- package/dist/components/CheckPage/CheckPage.esm.js +2 -0
- package/dist/components/CheckPage/CheckPageBUI.esm.js +2 -0
- package/dist/components/CheckPage/CheckPageDeprecated.esm.js +2 -0
- package/dist/components/CheckPage/CheckStatusHistoryChartBUI.esm.js +2 -0
- package/dist/components/CheckPage/CheckStatusTableBUI.esm.js +2 -0
- package/dist/components/CheckPage/ExemptionsTableBUI.esm.js +2 -0
- package/dist/components/CheckSelection/CheckPreview.esm.js +1 -1
- package/dist/components/CheckSelection/CheckSelection.esm.js +1 -1
- package/dist/components/CheckStatusBar/CheckStatusBarBUI.esm.js +1 -1
- package/dist/components/CheckTemplatesPage/CheckTemplatesPage.esm.js +1 -1
- package/dist/components/CheckTemplatesPage/CheckTemplatesPageBUI.esm.js +2 -0
- package/dist/components/CheckTemplatesPage/CheckTemplatesPageDeprecated.esm.js +2 -0
- package/dist/components/CheckTemplatesPage/TemplateCategoryBUI.esm.js +2 -0
- package/dist/components/ChecksPage/CheckListPage/CheckListPageDeprecated.esm.js +1 -1
- package/dist/components/ChecksPage/CheckListPage/CheckSummaryCard.esm.js +1 -1
- package/dist/components/ChecksPage/ChecksListPageBUI.esm.js +1 -1
- package/dist/components/ChecksTable/ChecksTable.esm.js +1 -1
- package/dist/components/CollapsablePanel/CollapsablePanel.esm.js +1 -1
- package/dist/components/CollectorPage/CollectorDetailsPage.esm.js +1 -1
- package/dist/components/CollectorPage/CollectorDetailsPageBUI.esm.js +2 -0
- package/dist/components/CollectorPage/CollectorDetailsPageDeprecated.esm.js +2 -0
- package/dist/components/CollectorPage/CollectorFactTableBUI.esm.js +2 -0
- package/dist/components/CollectorPage/CollectorPage.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/AzureDevOps/AzureDevOpsConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/BigQuery/BigQueryConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Catalog/CatalogConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/DataDog/DataDogConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/DataRegistry/DataRegistryConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Github/GithubConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Gitlab/GitlabConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/HTTP/HttpConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/HTTP/HttpStatusesInput.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Jira/JiraConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/Kubernetes/KubernetesConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/NewRelic/NewRelicConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/PagerDuty/PagerDutyConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/SCM/ScmConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/Configurators/SonarQube/SonarQubeConfigurator.esm.js +1 -1
- package/dist/components/CollectorPage/DependantCheckCard.esm.js +2 -0
- package/dist/components/CollectorsPage/CollectorListPage/{CollectorListPage.esm.js → CollectorListPageDeprecated.esm.js} +2 -2
- package/dist/components/CollectorsPage/CollectorListPage/CollectorSummaryCard.esm.js +1 -1
- package/dist/components/CollectorsPage/CollectorsPage.esm.js +1 -1
- package/dist/components/CollectorsPage/IntegrationLogoBUI.esm.js +2 -0
- package/dist/components/CollectorsPage/IntegrationsListPageBUI.esm.js +2 -0
- package/dist/components/CustomCell/CustomCell.esm.js +1 -1
- package/dist/components/DescriptionCell/DescriptionCell.esm.js +2 -0
- package/dist/components/DocLinkButton/DocLinkButton.esm.js +2 -0
- package/dist/components/EmptyState/EmptyStateBUI.esm.js +1 -1
- package/dist/components/EmptyState/EmptyStateNoCampaigns.esm.js +1 -1
- package/dist/components/EmptyState/EmptyStateNoChecks.esm.js +1 -1
- package/dist/components/EmptyState/EmptyStateNoTracks.esm.js +1 -1
- package/dist/components/EntitiesAutocompletePicker/EntitiesAutocompletePicker.esm.js +1 -1
- package/dist/components/EntitySoundcheckCard/Card.esm.js +1 -1
- package/dist/components/ExpandableSection/ExpandableSection.esm.js +1 -1
- package/dist/components/FactExplorer/FactExplorerDialogBUI.esm.js +2 -0
- package/dist/components/FactExplorer/useFactOptions.esm.js +1 -1
- package/dist/components/Filter/EntityAutocompletePicker.esm.js +1 -1
- package/dist/components/Filter/FilterComponent.esm.js +1 -1
- package/dist/components/FilterMenu/FilterMenu.esm.js +2 -0
- package/dist/components/FilterSidebar/StateFilter.esm.js +1 -1
- package/dist/components/FormControlledAutocomplete/FormControlledAutocomplete.esm.js +1 -1
- package/dist/components/FormControlledAutocomplete/FormControlledMultipleAutocomplete.esm.js +1 -1
- package/dist/components/FormMarkdownInput/FormMarkdownInput.esm.js +1 -1
- package/dist/components/FormattedPreview/FormattedPreview.esm.js +1 -1
- package/dist/components/GroupHierarchySelector/GroupHierarchyGroupInfo.esm.js +1 -1
- package/dist/components/GroupHierarchySelector/GroupHierarchySelector.esm.js +1 -1
- package/dist/components/GroupSelectorBUI/GroupSelectList.esm.js +2 -0
- package/dist/components/GroupSelectorBUI/GroupSelectionHistory.esm.js +2 -0
- package/dist/components/GroupSelectorBUI/GroupSelectorBUI.esm.js +2 -0
- package/dist/components/GroupSelectorBUI/GroupTag.esm.js +2 -0
- package/dist/components/GroupSelectorBUI/useGroupHistory.esm.js +2 -0
- package/dist/components/GroupSelectorBUI/usePreviousSelectedGroups.esm.js +2 -0
- package/dist/components/HierarchicalTechInsightsPage/HierarchicalTechInsightsPage.esm.js +1 -1
- package/dist/components/HierarchicalTechInsightsPage/HierarchyTable.esm.js +1 -1
- package/dist/components/HierarchicalTechInsightsPage/SelectedNodeSidebar.esm.js +1 -1
- package/dist/components/HierarchicalTechInsightsPage/visualizations/hierarchyToNivo.esm.js +1 -1
- package/dist/components/ImportExportPanel/ImportExportPanelBUI.esm.js +2 -0
- package/dist/components/ImportExportPanel/{ImportExportPanel.esm.js → ImportExportPanelDeprecated.esm.js} +2 -2
- package/dist/components/LevelUpParty/LevelUpParty.esm.js +1 -1
- package/dist/components/LevelsTable/CheckRowContent.esm.js +1 -1
- package/dist/components/ListPageCustomActions/ListPageCustomActions.esm.js +1 -1
- package/dist/components/Menus/SimpleMenu.esm.js +2 -0
- package/dist/components/Menus/useCampaignActions.esm.js +2 -0
- package/dist/components/Menus/useCheckActions.esm.js +2 -0
- package/dist/components/Menus/useTrackActions.esm.js +2 -0
- package/dist/components/OverviewTable/Cell/CheckCellTooltip.esm.js +1 -1
- package/dist/components/OverviewTable/Cell/CheckLabelCell.esm.js +1 -1
- package/dist/components/OverviewTable/OverviewTable.esm.js +1 -1
- package/dist/components/OverviewTable/ResultsTable.esm.js +1 -1
- package/dist/components/PageCustomActions/PageCustomActions.esm.js +1 -1
- package/dist/components/PassRateTable/PassRateTable.esm.js +1 -1
- package/dist/components/QuickstartPage/QuickstartPage.esm.js +2 -2
- package/dist/components/RefetchingIndicator/RefetchingIndicator.esm.js +1 -1
- package/dist/components/Router.esm.js +1 -1
- package/dist/components/RoutingPage/RoutingMainMenu.esm.js +2 -0
- package/dist/components/RoutingPage/RoutingPage.esm.js +1 -1
- package/dist/components/RoutingPage/RoutingPageBUI.esm.js +2 -0
- package/dist/components/RoutingPage/RoutingPageDeprecated.esm.js +2 -0
- package/dist/components/RoutingPage/RoutingPageWrapper.esm.js +2 -0
- package/dist/components/RoutingPage/RoutingPageWrapperBUI.esm.js +2 -0
- package/dist/components/RoutingPage/RoutingPageWrapperDeprecated.esm.js +2 -0
- package/dist/components/RoutingPage/index.esm.js +1 -1
- package/dist/components/SendCampaignNotificationDialog/SendCampaignNotificationDialog.esm.js +1 -1
- package/dist/components/SoundcheckHeader/SoundcheckHeaderBUI.esm.js +2 -0
- package/dist/components/SoundcheckMarkdownContent/ComponentRenders.esm.js +1 -1
- package/dist/components/SoundcheckMarkdownContent/SoundcheckMarkdownContentBUI.esm.js +2 -0
- package/dist/components/SoundcheckMarkdownContent/SoundcheckMarkdownContentDeprecated.esm.js +2 -0
- package/dist/components/StatusBar/StatusBar.esm.js +2 -0
- package/dist/components/SummaryCard/SummaryCard.esm.js +1 -1
- package/dist/components/TableRowWithOwner/TableRowWithOwner.esm.js +1 -1
- package/dist/components/TechHealth/Filters/FacetFilter.esm.js +1 -1
- package/dist/components/TechHealth/Filters/useFacetOptions.esm.js +1 -1
- package/dist/components/TechHealth/Loading/TechHealthLoading.esm.js +1 -1
- package/dist/components/TechHealth/TechHealth.esm.js +1 -1
- package/dist/components/TechHealthSummary/SummaryAggregationsProvider.esm.js +1 -1
- package/dist/components/TechHealthTabs/CampaignResultsTab/CampaignResultsTab.esm.js +1 -1
- package/dist/components/TechHealthTabs/CheckResultsTab/CheckResultsTab.esm.js +1 -1
- package/dist/components/TechHealthTabs/EntityResultsTab/EntityResultsTab.esm.js +1 -1
- package/dist/components/TechHealthTabs/GroupResultsTab/GroupResultsTab.esm.js +1 -1
- package/dist/components/TechHealthTabs/NameColumn.esm.js +1 -1
- package/dist/components/TechHealthTabs/TrackResultsTab/TrackResultsTab.esm.js +1 -1
- package/dist/components/TechInsights/SummaryTiles.esm.js +1 -1
- package/dist/components/TechInsights/SummaryTilesBUI.esm.js +2 -0
- package/dist/components/TechInsights/TechInsightsPage.esm.js +1 -1
- package/dist/components/TechInsights/TechInsightsPageBUI.esm.js +2 -0
- package/dist/components/TechInsights/TechInsightsPageDeprecated.esm.js +2 -0
- package/dist/components/TechInsights/TechInsightsTableBUI.esm.js +1 -1
- package/dist/components/TechInsights/TechInsightsTableView.esm.js +1 -1
- package/dist/components/TechInsightsExplorerTable/TechInsightsExplorerTable.esm.js +2 -0
- package/dist/components/TechInsightsGroupSelector/TechInsightsGroupSelector.esm.js +1 -1
- package/dist/components/TimePeriodBar/TimePeriodBar.esm.js +1 -1
- package/dist/components/TimePeriodBar/TimePeriodBarBUI.esm.js +2 -0
- package/dist/components/TopAndBottomPerformingTeams/TopAndBottomPerformingTeams.esm.js +2 -0
- package/dist/components/TopFailingChecksTable/TopFailingChecksTableBUI.esm.js +1 -1
- package/dist/components/TrackCreatePage/TrackCreatePage.esm.js +1 -1
- package/dist/components/TrackEditPage/TrackEditPage.esm.js +1 -1
- package/dist/components/TrackEditPage/TrackEditView.esm.js +1 -1
- package/dist/components/TrackForm/TrackForm.esm.js +1 -1
- package/dist/components/TrackForm/utils/useTrackForm.esm.js +1 -1
- package/dist/components/TrackPage/TrackEntitiesTable/TrackEntitiesTableBUI.esm.js +1 -1
- package/dist/components/TrackPage/TrackHistoryChartBUI.esm.js +2 -0
- package/dist/components/TrackPage/TrackPageBUI.esm.js +1 -1
- package/dist/components/TrackPage/TrackPageDeprecated.esm.js +1 -1
- package/dist/components/TrackPage/TrackStatusBarBUI.esm.js +2 -0
- package/dist/components/TrackPage/TrackStatusTableBUI.esm.js +2 -0
- package/dist/components/TrackPage/TrackTechInsightsExplorerPage.esm.js +2 -0
- package/dist/components/TrackSelection/TrackSelection.esm.js +1 -1
- package/dist/components/TracksPage/TrackListPage/TrackListPageDeprecated.esm.js +1 -1
- package/dist/components/TracksPage/TrackListPage/TrackSummaryCard.esm.js +1 -1
- package/dist/components/TracksPage/TracksListPageBUI.esm.js +1 -1
- package/dist/components/TracksPage/TracksPage.esm.js +1 -1
- package/dist/graphql/generated/index.esm.js +1 -0
- package/dist/hooks/filters/useFilters.esm.js +2 -0
- package/dist/hooks/groups/useGroupOptions.esm.js +1 -1
- package/dist/hooks/heirarchy/useGroupHierarchy.esm.js +1 -1
- package/dist/hooks/tracks/useTracksApplicableToGroup.esm.js +1 -1
- package/dist/hooks/usePagination.esm.js +1 -1
- package/dist/hooks/useSortTableLocalStorage.esm.js +2 -0
- package/dist/routes.esm.js +1 -1
- package/dist/utils/charts.esm.js +1 -1
- package/dist/utils/formStyles.esm.js +1 -1
- package/dist/utils/time.esm.js +1 -1
- package/package.json +21 -20
- package/dist/components/Cards/CurrentStatusCard/CurrentStatusCard.esm.js +0 -2
- package/dist/components/Cards/CurrentStatusCard/CurrentStatusCardRow.esm.js +0 -2
- package/dist/components/CheckPage/CheckInsightsPage.esm.js +0 -2
- package/dist/components/CheckStatusBar/CheckStatusBarCell.esm.js +0 -2
- package/dist/components/GroupHierarchySelector/usePreviousSelectedGroups.esm.js +0 -2
- package/dist/components/SoundcheckMarkdownContent/SoundcheckMarkdownContent.esm.js +0 -2
- package/dist/hooks/checks/useCheckStatusTotals.esm.js +0 -2
- package/dist/utils/checks.esm.js +0 -2
- /package/dist/{components/GroupHierarchySelector → utils}/getAllOwnedEntityCount.esm.js +0 -0
package/dist/components/CollectorPage/Configurators/Kubernetes/KubernetesConfigurator.esm.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as n,Fragment as b,jsx as o}from"react/jsx-runtime";import{zodResolver as h}from"@hookform/resolvers/zod";import{makeStyles as v,Paper as S,Divider as F}from"@material-ui/core";import{useForm as R,FormProvider as K}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 w}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as x}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import{useUpdateCollectorConfig as y}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as B}from"../../../../routes.esm.js";import{FooterButtons as D}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as L}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as c}from"../Common/FactCollectionConfig.esm.js";import"../Common/CollectorConfigAlert.esm.js";import{defaultCollectorOption as N}from"../Common/CollectorOption.esm.js";import{collectorHeaderContent as O,confirmationModalContent as T}from"../Common/utils.esm.js";import{KubernetesFactDetails as j}from"./KubernetesFactDetails.esm.js";import{mapConfigToKubernetesCollectorConfig as k,defaultKubernetesConfig as I,K8S_COLLECTOR_FIELDS as M,mapKubernetesCollectorConfigToConfig as P}from"./utils.esm.js";import{customResourceFormSchema as E}from"./validation.esm.js";const H=v(t=>({spacer:{height:t.spacing(8),width:"100%"},section:{marginBottom:t.spacing(2)}})),V=({disabled:t,selectedCollector:e})=>{const r=R({defaultValues:e?k(e.config):I(),mode:"onChange",resolver:h(E)}),a=H(),{mutateAsync:p}=y(),[d,f]=x(B),{isValid:u}=r.formState,{showModal:C}=w(),s=async m=>{if(!await C(T(e)))return;const i=P(m);await p({collectorId:e.id,config:i})&&f()};return L(O(e)),n(b,{children:[o(S,{className:a.section,children:o(K,{...r,children:n("form",{onSubmit:r.handleSubmit(s),children:[Object.entries(M).map(([m,i],l,g)=>n("div",{children:[o(c,{name:m,label:i.label,description:i.description,disabled:t}),l<g.length-1&&o(F,{})]},l)),o(c,{name:"customResources",label:"Custom Resources",description:"Collect facts from a kubernetes custom resource associated with an entity.",disabled:t,FactDetailsComponent:j,multipleCollectors:{enable:!0,defaultConfig:N(e.config)}})]})})}),o("div",{className:a.section,children:o(D,{onCancel:d,saveButtonText:"Save",isLoading:!1,onSave:r.handleSubmit(s),disableSave:!u})})]})};export{V as KubernetesConfigurator};
|
|
1
|
+
import{jsxs as n,Fragment as b,jsx as o}from"react/jsx-runtime";import{zodResolver as h}from"@hookform/resolvers/zod";import{makeStyles as v,Paper as S,Divider as F}from"@material-ui/core";import{useForm as R,FormProvider as K}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 w}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 y}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as B}from"../../../../routes.esm.js";import{FooterButtons as D}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as L}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as c}from"../Common/FactCollectionConfig.esm.js";import"../Common/CollectorConfigAlert.esm.js";import{defaultCollectorOption as N}from"../Common/CollectorOption.esm.js";import{collectorHeaderContent as O,confirmationModalContent as T}from"../Common/utils.esm.js";import{KubernetesFactDetails as j}from"./KubernetesFactDetails.esm.js";import{mapConfigToKubernetesCollectorConfig as k,defaultKubernetesConfig as I,K8S_COLLECTOR_FIELDS as M,mapKubernetesCollectorConfigToConfig as P}from"./utils.esm.js";import{customResourceFormSchema as E}from"./validation.esm.js";const H=v(t=>({spacer:{height:t.spacing(8),width:"100%"},section:{marginBottom:t.spacing(2)}})),V=({disabled:t,selectedCollector:e})=>{const r=R({defaultValues:e?k(e.config):I(),mode:"onChange",resolver:h(E)}),a=H(),{mutateAsync:p}=y(),[d,f]=x(B),{isValid:u}=r.formState,{showModal:C}=w(),s=async m=>{if(!await C(T(e)))return;const i=P(m);await p({collectorId:e.id,config:i})&&f()};return L(O(e)),n(b,{children:[o(S,{className:a.section,children:o(K,{...r,children:n("form",{onSubmit:r.handleSubmit(s),children:[Object.entries(M).map(([m,i],l,g)=>n("div",{children:[o(c,{name:m,label:i.label,description:i.description,disabled:t}),l<g.length-1&&o(F,{})]},l)),o(c,{name:"customResources",label:"Custom Resources",description:"Collect facts from a kubernetes custom resource associated with an entity.",disabled:t,FactDetailsComponent:j,multipleCollectors:{enable:!0,defaultConfig:N(e.config)}})]})})}),o("div",{className:a.section,children:o(D,{onCancel:d,saveButtonText:"Save",isLoading:!1,onSave:r.handleSubmit(s),disableSave:!u})})]})};export{V as KubernetesConfigurator};
|
|
2
2
|
//# sourceMappingURL=KubernetesConfigurator.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as m,Fragment as w,jsx as o}from"react/jsx-runtime";import{makeStyles as b,Paper as S,Divider as s}from"@material-ui/core";import{useForm as y,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 v}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 x}from"../../../../routes.esm.js";import{FooterButtons as P}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as E}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as r}from"../Common/FactCollectionConfig.esm.js";import{CollectorConfigAlert as I}from"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as M,confirmationModalContent as T}from"../Common/utils.esm.js";import{mapConfigToNewRelicCollectorConfig as j,defaultNewRelicConfig as k,mapNewRelicCollectorConfigToConfig as A}from"./utils.esm.js";const H=b(e=>({spacer:{height:e.spacing(8),width:"100%"},section:{marginBottom:e.spacing(2)},form:{marginBottom:e.spacing(2)}})),U=({disabled:e,selectedCollector:i})=>{const a=y({defaultValues:i?j(i.config):k(),mode:"onChange"}),{formState:{errors:t},handleSubmit:c}=a,n=H(),p=!!t.entity||!!t.entitySearch||!!t.policiesSearch,{mutateAsync:d}=F(),[f,g]=B(x),{showModal:C}=v(),l=async h=>{if(!await C(T(i)))return;const N=A(h);await d({collectorId:i.id,config:N})&&g()};E(M(i));const u=!i.config?.apiKey;return m(w,{children:[o(I,{collectorName:"NewRelic",collectorId:i.id,invalidConfig:u,hasNonUIOptions:!0}),o(S,{className:n.form,children:o(R,{...a,children:m("form",{onSubmit:c(l),children:[o(r,{name:"entity",label:"Entity",description:"Collects details about New Relic entity with a specific id.",disabled:e}),o(s,{}),o(r,{name:"entitySearch",label:"Entity Search",description:"Collects details about New Relic entities with a specific tag.",disabled:e}),o(s,{}),o(r,{name:"policiesSearch",label:"Policies Search",description:"Collects details about New Relic policies for a specific account.",disabled:e})]})})}),o("div",{className:n.section,children:o(P,{onCancel:f,saveButtonText:"Save",isLoading:!1,onSave:c(l),disableSave:p})})]})};export{U as NewRelicConfigurator};
|
|
1
|
+
import{jsxs as m,Fragment as w,jsx as o}from"react/jsx-runtime";import{makeStyles as b,Paper as S,Divider as s}from"@material-ui/core";import{useForm as y,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 v}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 x}from"../../../../routes.esm.js";import{FooterButtons as P}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as E}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as r}from"../Common/FactCollectionConfig.esm.js";import{CollectorConfigAlert as I}from"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as M,confirmationModalContent as T}from"../Common/utils.esm.js";import{mapConfigToNewRelicCollectorConfig as j,defaultNewRelicConfig as k,mapNewRelicCollectorConfigToConfig as A}from"./utils.esm.js";const H=b(e=>({spacer:{height:e.spacing(8),width:"100%"},section:{marginBottom:e.spacing(2)},form:{marginBottom:e.spacing(2)}})),U=({disabled:e,selectedCollector:i})=>{const a=y({defaultValues:i?j(i.config):k(),mode:"onChange"}),{formState:{errors:t},handleSubmit:c}=a,n=H(),p=!!t.entity||!!t.entitySearch||!!t.policiesSearch,{mutateAsync:d}=F(),[f,g]=B(x),{showModal:C}=v(),l=async h=>{if(!await C(T(i)))return;const N=A(h);await d({collectorId:i.id,config:N})&&g()};E(M(i));const u=!i.config?.apiKey;return m(w,{children:[o(I,{collectorName:"NewRelic",collectorId:i.id,invalidConfig:u,hasNonUIOptions:!0}),o(S,{className:n.form,children:o(R,{...a,children:m("form",{onSubmit:c(l),children:[o(r,{name:"entity",label:"Entity",description:"Collects details about New Relic entity with a specific id.",disabled:e}),o(s,{}),o(r,{name:"entitySearch",label:"Entity Search",description:"Collects details about New Relic entities with a specific tag.",disabled:e}),o(s,{}),o(r,{name:"policiesSearch",label:"Policies Search",description:"Collects details about New Relic policies for a specific account.",disabled:e})]})})}),o("div",{className:n.section,children:o(P,{onCancel:f,saveButtonText:"Save",isLoading:!1,onSave:c(l),disableSave:p})})]})};export{U as NewRelicConfigurator};
|
|
2
2
|
//# sourceMappingURL=NewRelicConfigurator.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as m,Fragment as D,jsx as o}from"react/jsx-runtime";import{zodResolver as P}from"@hookform/resolvers/zod";import{makeStyles as b,Paper as h,Divider as c}from"@material-ui/core";import{useForm as S,FormProvider as T}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 L}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as E}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import{useUpdateCollectorConfig as N}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as w}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 I}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as r}from"../Common/FactCollectionConfig.esm.js";import{CollectorConfigAlert as R}from"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as O,confirmationModalContent as k}from"../Common/utils.esm.js";import{IncidentsFactDetailsComponent as _}from"./IncidentsFactDetailsComponent.esm.js";import{mapConfigToPagerDutyCollectorConfig as x,defaultPagerDutyConfig as A,SERVICE_COLLECTOR_TYPE as B,STANDARDS_COLLECTOR_TYPE as M,INCIDENTS_COLLECTOR_TYPE as Y,incidentsCollectorConfig as j,mapPagerDutyCollectorConfigToConfig as H}from"./utils.esm.js";import{pagerDutyCollectorFormSchema as U}from"./validation.esm.js";const V=b(t=>({spacer:{height:t.spacing(8),width:"100%"},section:{marginBottom:t.spacing(2)}})),z=({disabled:t,selectedCollector:e})=>{const a=S({defaultValues:e?x(e.config):A(),mode:"onChange",resolver:P(U)}),{formState:{errors:i},handleSubmit:n}=a,l=V(),d=!!i.service||!!i.standards||!!i.incidents,{mutateAsync:p}=N(),[f,C]=E(w),{showModal:g}=L(),s=async v=>{if(!await g(k(e)))return;const y=H(v);await p({collectorId:e.id,config:y})&&C()};I(O(e));const u=!e.config?.token||!e.config?.server;return m(D,{children:[o(R,{collectorName:"PagerDuty",collectorId:e.id,invalidConfig:u,hasNonUIOptions:!0}),o(h,{className:l.section,children:o(T,{...a,children:m("form",{onSubmit:n(s),children:[o(r,{name:B.toLowerCase(),label:"Service",description:"Collects details about PagerDuty service linked to an entity.",disabled:t}),o(c,{}),o(r,{name:M.toLowerCase(),label:"Standards",description:"Collects details about standards applied to a PagerDuty service linked to an entity.",disabled:t}),o(c,{}),o(r,{name:Y.toLowerCase(),label:"Incidents",description:"Collects details about incidents associated with a PagerDuty service linked to an entity.",disabled:t,FactDetailsComponent:_,multipleCollectors:{enable:!0,defaultConfig:j(e.config)}})]})})}),o("div",{className:l.section,children:o(F,{onCancel:f,saveButtonText:"Save",isLoading:!1,onSave:n(s),disableSave:d})})]})};export{z as PagerDutyConfigurator};
|
|
1
|
+
import{jsxs as m,Fragment as D,jsx as o}from"react/jsx-runtime";import{zodResolver as P}from"@hookform/resolvers/zod";import{makeStyles as b,Paper as h,Divider as c}from"@material-ui/core";import{useForm as S,FormProvider as T}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 L}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as E}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import{useUpdateCollectorConfig as N}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as w}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 I}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as r}from"../Common/FactCollectionConfig.esm.js";import{CollectorConfigAlert as R}from"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as O,confirmationModalContent as k}from"../Common/utils.esm.js";import{IncidentsFactDetailsComponent as _}from"./IncidentsFactDetailsComponent.esm.js";import{mapConfigToPagerDutyCollectorConfig as x,defaultPagerDutyConfig as A,SERVICE_COLLECTOR_TYPE as B,STANDARDS_COLLECTOR_TYPE as M,INCIDENTS_COLLECTOR_TYPE as Y,incidentsCollectorConfig as j,mapPagerDutyCollectorConfigToConfig as H}from"./utils.esm.js";import{pagerDutyCollectorFormSchema as U}from"./validation.esm.js";const V=b(t=>({spacer:{height:t.spacing(8),width:"100%"},section:{marginBottom:t.spacing(2)}})),z=({disabled:t,selectedCollector:e})=>{const a=S({defaultValues:e?x(e.config):A(),mode:"onChange",resolver:P(U)}),{formState:{errors:i},handleSubmit:n}=a,l=V(),d=!!i.service||!!i.standards||!!i.incidents,{mutateAsync:p}=N(),[f,C]=E(w),{showModal:g}=L(),s=async v=>{if(!await g(k(e)))return;const y=H(v);await p({collectorId:e.id,config:y})&&C()};I(O(e));const u=!e.config?.token||!e.config?.server;return m(D,{children:[o(R,{collectorName:"PagerDuty",collectorId:e.id,invalidConfig:u,hasNonUIOptions:!0}),o(h,{className:l.section,children:o(T,{...a,children:m("form",{onSubmit:n(s),children:[o(r,{name:B.toLowerCase(),label:"Service",description:"Collects details about PagerDuty service linked to an entity.",disabled:t}),o(c,{}),o(r,{name:M.toLowerCase(),label:"Standards",description:"Collects details about standards applied to a PagerDuty service linked to an entity.",disabled:t}),o(c,{}),o(r,{name:Y.toLowerCase(),label:"Incidents",description:"Collects details about incidents associated with a PagerDuty service linked to an entity.",disabled:t,FactDetailsComponent:_,multipleCollectors:{enable:!0,defaultConfig:j(e.config)}})]})})}),o("div",{className:l.section,children:o(F,{onCancel:f,saveButtonText:"Save",isLoading:!1,onSave:n(s),disableSave:d})})]})};export{z as PagerDutyConfigurator};
|
|
2
2
|
//# sourceMappingURL=PagerDutyConfigurator.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as f,Fragment as v,jsx as o}from"react/jsx-runtime";import{zodResolver as y}from"@hookform/resolvers/zod";import{makeStyles as O,Paper as T,Divider as d}from"@material-ui/core";import{useCallback as L,useMemo as R}from"react";import{useForm as N,FormProvider as D}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 M}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as j}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import{useUpdateCollectorConfig as P}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as _}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 J}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as s}from"../Common/FactCollectionConfig.esm.js";import"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as Y,confirmationModalContent as B}from"../Common/utils.esm.js";import{ExistsFactDetailsComponent as k}from"./ExistsFactDetailsComponent.esm.js";import{JsonFactDetailsComponent as A}from"./JsonFactDetailsComponent.esm.js";import{RegexFactDetailsComponent as z}from"./RegexFactDetailsComponent.esm.js";import{mapConfigToScmCollectorConfig as H,defaultScmCollectorConfig as C,EXISTS_COLLECTOR_TYPE as I,REGEX_COLLECTOR_TYPE as V,JSON_COLLECTOR_TYPE as X,mapScmCollectorConfigToConfig as G}from"./utils.esm.js";import{scmCollectorFormSchema as U}from"./validation.esm.js";const q=O(i=>({spacer:{height:i.spacing(8),width:"100%"},section:{marginBottom:i.spacing(2)}})),K=({disabled:i,selectedCollector:t})=>{const g=L(async(e,...n)=>{const a={enabled:!1,collectors:[]},F={exists:e.exists.enabled?e.exists:a,json:e.json.enabled?e.json:a,regex:e.regex.enabled?e.regex:a};return y(U)(F,...n)},[]),l=N({defaultValues:t?H(t.config):C(),mode:"onChange",resolver:g}),r=R(()=>C(t.config),[t]),{formState:{isValid:u},handleSubmit:m}=l,c=q(),x=!u,{mutateAsync:b}=P(),[S,h]=j(_),{showModal:E}=M(),p=async e=>{if(!await E(B(t)))return;const n=G(e);await b({collectorId:t.id,config:n})&&h()};return J(Y(t)),f(v,{children:[o(T,{className:c.section,children:o(D,{...l,children:f("form",{onSubmit:m(p),children:[o(s,{name:I,label:"Exists",description:"Collects information on the existence of files within an entity's repository.",disabled:i,multipleCollectors:{enable:!0,defaultConfig:r.exists.collectors[0]},FactDetailsComponent:k}),o(d,{}),o(s,{name:V,label:"Regex",description:"Executes regular expressions against a specified file in an entity's repository and collects its capture groups.",disabled:i,multipleCollectors:{enable:!0,defaultConfig:r.regex.collectors[0]},FactDetailsComponent:z}),o(d,{}),o(s,{name:X,label:"JSON / YAML",description:"Collects data from a JSON/YAML file at specified JSON paths in an entity's repository.",disabled:i,multipleCollectors:{enable:!0,defaultConfig:r.json.collectors[0]},FactDetailsComponent:A})]})})}),o("div",{className:c.section,children:o(w,{onCancel:S,saveButtonText:"Save",isLoading:!1,onSave:m(p),disableSave:x,noMargin:!0})})]})};export{K as ScmConfigurator};
|
|
1
|
+
import{jsxs as f,Fragment as v,jsx as o}from"react/jsx-runtime";import{zodResolver as y}from"@hookform/resolvers/zod";import{makeStyles as O,Paper as T,Divider as d}from"@material-ui/core";import{useCallback as L,useMemo as R}from"react";import{useForm as N,FormProvider as D}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 M}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as j}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import{useUpdateCollectorConfig as P}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as _}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 J}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as s}from"../Common/FactCollectionConfig.esm.js";import"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as Y,confirmationModalContent as B}from"../Common/utils.esm.js";import{ExistsFactDetailsComponent as k}from"./ExistsFactDetailsComponent.esm.js";import{JsonFactDetailsComponent as A}from"./JsonFactDetailsComponent.esm.js";import{RegexFactDetailsComponent as z}from"./RegexFactDetailsComponent.esm.js";import{mapConfigToScmCollectorConfig as H,defaultScmCollectorConfig as C,EXISTS_COLLECTOR_TYPE as I,REGEX_COLLECTOR_TYPE as V,JSON_COLLECTOR_TYPE as X,mapScmCollectorConfigToConfig as G}from"./utils.esm.js";import{scmCollectorFormSchema as U}from"./validation.esm.js";const q=O(i=>({spacer:{height:i.spacing(8),width:"100%"},section:{marginBottom:i.spacing(2)}})),K=({disabled:i,selectedCollector:t})=>{const g=L(async(e,...n)=>{const a={enabled:!1,collectors:[]},F={exists:e.exists.enabled?e.exists:a,json:e.json.enabled?e.json:a,regex:e.regex.enabled?e.regex:a};return y(U)(F,...n)},[]),l=N({defaultValues:t?H(t.config):C(),mode:"onChange",resolver:g}),r=R(()=>C(t.config),[t]),{formState:{isValid:u},handleSubmit:m}=l,c=q(),x=!u,{mutateAsync:b}=P(),[S,h]=j(_),{showModal:E}=M(),p=async e=>{if(!await E(B(t)))return;const n=G(e);await b({collectorId:t.id,config:n})&&h()};return J(Y(t)),f(v,{children:[o(T,{className:c.section,children:o(D,{...l,children:f("form",{onSubmit:m(p),children:[o(s,{name:I,label:"Exists",description:"Collects information on the existence of files within an entity's repository.",disabled:i,multipleCollectors:{enable:!0,defaultConfig:r.exists.collectors[0]},FactDetailsComponent:k}),o(d,{}),o(s,{name:V,label:"Regex",description:"Executes regular expressions against a specified file in an entity's repository and collects its capture groups.",disabled:i,multipleCollectors:{enable:!0,defaultConfig:r.regex.collectors[0]},FactDetailsComponent:z}),o(d,{}),o(s,{name:X,label:"JSON / YAML",description:"Collects data from a JSON/YAML file at specified JSON paths in an entity's repository.",disabled:i,multipleCollectors:{enable:!0,defaultConfig:r.json.collectors[0]},FactDetailsComponent:A})]})})}),o("div",{className:c.section,children:o(w,{onCancel:S,saveButtonText:"Save",isLoading:!1,onSave:m(p),disableSave:x,noMargin:!0})})]})};export{K as ScmConfigurator};
|
|
2
2
|
//# sourceMappingURL=ScmConfigurator.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as p,Fragment as Q,jsx as o}from"react/jsx-runtime";import{zodResolver as F}from"@hookform/resolvers/zod";import{makeStyles as y,Paper as k,Divider as s}from"@material-ui/core";import{asArray as w}from"@spotify/backstage-plugin-soundcheck-common";import{useForm as I,FormProvider as N}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"react";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as T}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as D}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import{useUpdateCollectorConfig as M}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as P}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 B}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as i}from"../Common/FactCollectionConfig.esm.js";import{CollectorConfigAlert as A}from"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as R,confirmationModalContent as H}from"../Common/utils.esm.js";import{IssuesFactDetailsInput as U}from"./IssuesFactDetailsInput.esm.js";import{MeasuresFactDetailsInput as z}from"./MeasuresFactDetailsInput.esm.js";import{mapConfigToSonarQubeCollectorConfig as E,defaultSonarQubeConfig as L,issuesCollectorConfig as O,measuresCollectorConfig as V,mapSonarQubeCollectorConfigToConfig as q}from"./utils.esm.js";import{sonarQubeCollectorFormSchema as G}from"./validation.esm.js";const J=y(t=>({spacer:{height:t.spacing(8),width:"100%"},section:{marginBottom:t.spacing(2)}})),K=({disabled:t,selectedCollector:e})=>{const n=I({defaultValues:e?E(e.config):L(),mode:"onChange",resolver:F(G)}),{formState:{errors:r},handleSubmit:l}=n,m=J(),d=!!r.projects||!!r.projectTags||!!r.issues||!!r.measures,{mutateAsync:u}=M(),[f,C]=D(P),{showModal:g}=T(),c=async j=>{if(!await g(H(e)))return;const v=q(j);await u({collectorId:e.id,config:v})&&C()};B(R(e));const a=w(e.config),b=a[0]?.token,S=a[0]?.username&&a[0]?.password,h=!b&&!S;return p(Q,{children:[o(A,{collectorName:"SonarQube",collectorId:e.id,invalidConfig:h,hasNonUIOptions:!0}),o(k,{className:m.section,children:o(N,{...n,children:p("form",{onSubmit:l(c),children:[o(i,{name:"projects",label:"Projects",description:"Collects details about SonarQube project linked to an entity.",disabled:t}),o(s,{}),o(i,{name:"projectTags",label:"Project Tags",description:"Collects details about tags set on a SonarQube project linked to an entity.",disabled:t}),o(s,{}),o(i,{name:"issues",label:"Issues",description:"Collects details about issues associated with a SonarQube project linked to an entity.",disabled:t,FactDetailsComponent:U,multipleCollectors:{enable:!0,defaultConfig:O(e.config)}}),o(s,{}),o(i,{name:"measures",label:"Measures",description:"Collects details about measures associated with a SonarQube project linked to an entity.",disabled:t,FactDetailsComponent:z,multipleCollectors:{enable:!0,defaultConfig:V(e.config)}})]})})}),o("div",{className:m.section,children:o(x,{onCancel:f,saveButtonText:"Save",isLoading:!1,onSave:l(c),disableSave:d})})]})};export{K as SonarQubeConfigurator};
|
|
1
|
+
import{jsxs as p,Fragment as Q,jsx as o}from"react/jsx-runtime";import{zodResolver as F}from"@hookform/resolvers/zod";import{makeStyles as y,Paper as k,Divider as s}from"@material-ui/core";import{asArray as w}from"@spotify/backstage-plugin-soundcheck-common";import{useForm as I,FormProvider as N}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"react";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as T}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as D}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import{useUpdateCollectorConfig as M}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as P}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 B}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as i}from"../Common/FactCollectionConfig.esm.js";import{CollectorConfigAlert as A}from"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as R,confirmationModalContent as H}from"../Common/utils.esm.js";import{IssuesFactDetailsInput as U}from"./IssuesFactDetailsInput.esm.js";import{MeasuresFactDetailsInput as z}from"./MeasuresFactDetailsInput.esm.js";import{mapConfigToSonarQubeCollectorConfig as E,defaultSonarQubeConfig as L,issuesCollectorConfig as O,measuresCollectorConfig as V,mapSonarQubeCollectorConfigToConfig as q}from"./utils.esm.js";import{sonarQubeCollectorFormSchema as G}from"./validation.esm.js";const J=y(t=>({spacer:{height:t.spacing(8),width:"100%"},section:{marginBottom:t.spacing(2)}})),K=({disabled:t,selectedCollector:e})=>{const n=I({defaultValues:e?E(e.config):L(),mode:"onChange",resolver:F(G)}),{formState:{errors:r},handleSubmit:l}=n,m=J(),d=!!r.projects||!!r.projectTags||!!r.issues||!!r.measures,{mutateAsync:u}=M(),[f,C]=D(P),{showModal:g}=T(),c=async j=>{if(!await g(H(e)))return;const v=q(j);await u({collectorId:e.id,config:v})&&C()};B(R(e));const a=w(e.config),b=a[0]?.token,S=a[0]?.username&&a[0]?.password,h=!b&&!S;return p(Q,{children:[o(A,{collectorName:"SonarQube",collectorId:e.id,invalidConfig:h,hasNonUIOptions:!0}),o(k,{className:m.section,children:o(N,{...n,children:p("form",{onSubmit:l(c),children:[o(i,{name:"projects",label:"Projects",description:"Collects details about SonarQube project linked to an entity.",disabled:t}),o(s,{}),o(i,{name:"projectTags",label:"Project Tags",description:"Collects details about tags set on a SonarQube project linked to an entity.",disabled:t}),o(s,{}),o(i,{name:"issues",label:"Issues",description:"Collects details about issues associated with a SonarQube project linked to an entity.",disabled:t,FactDetailsComponent:U,multipleCollectors:{enable:!0,defaultConfig:O(e.config)}}),o(s,{}),o(i,{name:"measures",label:"Measures",description:"Collects details about measures associated with a SonarQube project linked to an entity.",disabled:t,FactDetailsComponent:z,multipleCollectors:{enable:!0,defaultConfig:V(e.config)}})]})})}),o("div",{className:m.section,children:o(x,{onCancel:f,saveButtonText:"Save",isLoading:!1,onSave:l(c),disableSave:d})})]})};export{K as SonarQubeConfigurator};
|
|
2
2
|
//# sourceMappingURL=SonarQubeConfigurator.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsxs as n,jsx as e}from"react/jsx-runtime";import{useRouteRef as g}from"@backstage/core-plugin-api";import{Card as x,CardHeader as y,CardBody as C,Box as o,Text as v,Button as R,Tooltip as k,CardFooter as b,ButtonLink as w}from"@backstage/ui";import{makeStyles as B}from"@material-ui/core";import{Alert as D}from"@material-ui/lab";import{parseFactRef as T}from"@spotify/backstage-plugin-soundcheck-common";import{uniq as j,isEmpty as S}from"lodash";import{useMemo as F}from"react";import{TooltipTrigger as H}from"react-aria-components";import{checkDetailsRouteRef as I}from"../../routes.esm.js";import"../SoundcheckMarkdownContent/SoundcheckMarkdownContentDeprecated.esm.js";import"@backstage/core-components";import"react-markdown";import"rehype-raw";import"remark-gfm";import{SoundcheckMarkdownContentBUI as L}from"../SoundcheckMarkdownContent/SoundcheckMarkdownContentBUI.esm.js";const M=B(()=>({cardDescription:{"& p":{marginTop:"var(--bui-space-0)",marginBottom:"var(--bui-space-0)"}},cardContent:{flexGrow:1},container:{padding:"0 var(--bui-space-5)"}})),N=({id:p,title:f,description:a,rules:c,integrationId:s,hasSchedule:h})=>{const d=M(),u=g(I),l=F(()=>{const r=[],m=i=>{for(const t of i.conditions??[])r.push(t.factRef),typeof t.value=="object"&&Object.hasOwn(t.value,"factRef")&&r.push(t.value.factRef);for(const t of i.expressions??[])m(t)};return c&&m(c),j(r).filter(i=>{try{return T(i).source===s}catch{return!1}})},[s,c]);return n(x,{children:[e(y,{title:f}),n(C,{className:d.cardContent,children:[a&&e(o,{style:{maxHeight:"200px",overflow:"auto"},children:e(L,{className:d.cardDescription,content:a})}),!S(l)&&n(o,{mt:"6",style:{maxHeight:"120px",overflow:"auto"},children:[e(v,{style:{fontWeight:"bold"},children:"Used Fact Refs"}),l.map(r=>e(o,{children:r},"factRef"))]}),h&&e(o,{mt:"6",children:n(H,{children:[e(R,{variant:"tertiary",style:{padding:0,height:"auto"},children:e(D,{severity:"warning",children:"Check Schedule Detected"})}),e(k,{children:"Configure this integration's collection schedule instead."})]})})]}),e(b,{children:e(o,{mt:"6",children:e(w,{href:u({checkId:p}),target:"_blank",children:"View"})})})]})};export{N as DependantCheckCard};
|
|
2
|
+
//# sourceMappingURL=DependantCheckCard.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
import{jsx as o}from"react/jsx-runtime";import{Grid as l}from"@material-ui/core";import{useMemo as g,useEffect as p}from"react";import{useGetCollectors as f}from"../../../hooks/collectors/useGetCollectors.esm.js";import{useLCPReporting as C}from"../../../hooks/useLCPReporting.esm.js";import{useLoadTimeReporting as h}from"../../../hooks/useLoadTimeReporting.esm.js";import{CollectorListSkeleton as b}from"./CollectorListSkeleton.esm.js";import{CollectorSummaryCard as L}from"./CollectorSummaryCard.esm.js";const c=["github","gitlab","scm","pagerduty","datadog","kubernetes","jira","sonarqube","newrelic","bigquery","catalog","azure","http","data-registry"],P=({integrations:i})=>{const n=g(()=>({routeName:"soundcheck-integrations",additionalAttributes:{integrationsPerPage:i?.length}}),[i?.length]),{reportContentLoaded:d}=h(n),{reporter:m}=C(n),{data:u,isLoading:a}=f(),r=i?.map(e=>e.integrationId)??c,s=m?.getLCPValue();return p(()=>{a||d({lcp:s})},[a,d,s]),o(l,{container:!0,direction:"row",children:o(l,{container:!0,spacing:4,role:"list","aria-label":"checks",children:a?o(b,{}):u?.filter(e=>e.isConfigurable)?.sort((e,t)=>!r.includes(e.id)&&r.includes(t.id)?1:r.includes(e.id)&&!r.includes(t.id)?-1:(e.name??e.id).localeCompare(t.name??t.id))?.map(e=>o(l,{xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem","aria-label":`collector card ${e.id}`,children:o(L,{collector:e,hasNoCodeUI:r.includes(e.id),routePath:i?.find(t=>t.integrationId===e.id)?.routePath})},e.id))})})};export{P as CollectorListPageDeprecated,c as ConfigurableCollectorIds};
|
|
2
|
+
//# sourceMappingURL=CollectorListPageDeprecated.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as
|
|
1
|
+
import{jsxs as n,jsx as e}from"react/jsx-runtime";import{LinkButton as S}from"@backstage/core-components";import{useRouteRef as u}from"@backstage/core-plugin-api";import{usePermission as D}from"@backstage/plugin-permission-react";import{makeStyles as U,CardContent as f,CardHeader as R,Typography as c,Tooltip as B,Divider as H,CardActions as L,Button as j}from"@material-ui/core";import{soundcheckCollectorUpdatePermission as A}from"@spotify/backstage-plugin-soundcheck-common";import{useNavigate as P}from"react-router-dom";import{integrationEditRouteRef as $,integrationDetailsRouteRef as M}from"../../../routes.esm.js";import{SoundcheckMarkdownContentDeprecated as Y}from"../../SoundcheckMarkdownContent/SoundcheckMarkdownContentDeprecated.esm.js";import"react";import"react-markdown";import"rehype-raw";import"remark-gfm";import"../../SoundcheckMarkdownContent/SoundcheckMarkdownContentBUI.esm.js";import{useSummaryCardStyles as w,Card as z}from"../../SummaryCard/SummaryCard.esm.js";import{hasLogo as E,CollectorLogo as q}from"./CollectorLogo.esm.js";const F=U(t=>({cardContent:{flex:1,paddingTop:t.spacing(1)},logoHeader:{paddingBottom:0,flex:0},headerContent:{display:"flex",alignItems:"center",height:t.spacing(5),marginBottom:t.spacing(1.5)},headerTypography:{marginBottom:0},usageText:{marginTop:t.spacing(.5)},checkUsageHover:{textDecoration:"underline",textDecorationStyle:"dotted","&:hover":{cursor:"default"}}})),G=({collector:t,hasNoCodeUI:l,routePath:y})=>{const{description:C,id:o,isConfigurable:m,isEditable:p,name:v}=t,{loading:g,allowed:h}=D({permission:A}),N=P(),b=u($),k=u(M),r=w(),a=F(),x=l&&m&&p&&!g&&h,I=()=>{N(y??b({integrationId:o}))};let i;g||!h?i="You don't have permissions to configure this integration.":m?p?l?t.hasUIConfig&&(i="Configured via UI."):i="Integration can only be configured through YAML.":i="Integration is already configured via YAML and cannot be configured through the UI.":i="Integration is not configurable.";const s=t?.dependentChecks?.length??0,d=v??o;return n(z,{"data-testid":o,className:r.card,children:[E(o)?e(f,{className:a.logoHeader,children:e(q,{collectorId:o})}):e(R,{title:d,titleTypographyProps:{className:`${r.summaryName} ${a.headerTypography}`},classes:{content:a.headerContent}}),n(f,{className:a.cardContent,children:[e(c,{variant:"body1",component:"div",children:e(Y,{className:r.summaryDescription,content:C??""})}),e(c,{color:"textSecondary",variant:"body2",children:i}),s>0&&n(c,{className:a.usageText,color:"textSecondary",variant:"body2",children:[e(B,{title:t.dependentChecks?.map(T=>T.name).join(", ")??"",children:n("span",{className:a.checkUsageHover,children:[s," check",s>1?"s":""]})})," ","use facts from this integration."]})]}),n("div",{children:[e(H,{}),n(L,{className:r.actionArea,children:[e(S,{size:"medium",variant:"outlined",className:r.button,to:k({integrationId:o}),children:"Details"}),x&&e(j,{"aria-label":`${d}-edit`,"data-testid":`${d}-button`,size:"medium",role:"link",onClick:I,className:r.button,variant:"outlined",children:"Configure"})]})]})]})};export{G as CollectorSummaryCard};
|
|
2
2
|
//# sourceMappingURL=CollectorSummaryCard.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{jsx as o}from"react/jsx-runtime";import{makeStyles as e}from"@material-ui/core";import{useFeatureFlag as i}from"../../hooks/useFeatureFlag.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useSetHeaderDefault as a}from"../SoundcheckHeader/useHeader.esm.js";import{CollectorListPageDeprecated as n}from"./CollectorListPage/CollectorListPageDeprecated.esm.js";import{IntegrationsListPageBUI as s}from"./IntegrationsListPageBUI.esm.js";const m=e(t=>({container:{padding:t.spacing(3)}})),c=({integrations:t})=>{const r=m();return a(),i("backstage-ui")?o(s,{integrations:t}):o("div",{className:r.container,children:o(n,{integrations:t})})};export{c as CollectorsPage};
|
|
2
2
|
//# sourceMappingURL=CollectorsPage.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as p}from"react/jsx-runtime";import{makeStyles as f,useTheme as s}from"@material-ui/core";import g from"../../images/azure-devops-rgb.svg";import n from"../../images/azure-devops-white.svg";import c from"../../images/bigquery-rgb.svg";import h from"../../images/bigquery-white.svg";import u from"../../images/cat-blk.svg";import l from"../../images/cat-wht.svg";import b from"../../images/data-registry-blk.svg";import d from"../../images/data-registry-wht.svg";import y from"../../images/dd_logo_h_rgb.svg";import k from"../../images/dd_logo_h_white.svg";import q from"../../images/GitHub_Logo.svg";import I from"../../images/GitHub_Logo_White.svg";import j from"../../images/gitlab-rgb.svg";import w from"../../images/gitlab-white.svg";import x from"../../images/http-rgb.svg";import B from"../../images/http-white.svg";import v from"../../images/jira-rgb.svg";import z from"../../images/jira-white.svg";import L from"../../images/k8s_blue.svg";import S from"../../images/k8s_white.svg";import T from"../../images/new-relic-rgb.svg";import D from"../../images/new-relic-white.svg";import F from"../../images/pd-black.svg";import M from"../../images/pd-white.svg";import $ from"../../images/SCM_DARK.svg";import A from"../../images/SCM_LIGHT.svg";import E from"../../images/sonarqube-rgb.svg";import G from"../../images/sonarqube-white.svg";import H from"../../images/soundcheck-black.svg";import K from"../../images/soundcheck-white.svg";import N from"../../images/tech-black.svg";import O from"../../images/tech-white.svg";import{isDarkTheme as Q}from"../Charts/chartUtils.esm.js";const m={github:q,gitlab:j,datadog:y,scm:A,pagerduty:F,catalog:u,soundcheck:H,techinsights:N,kubernetes:L,jira:v,sonarqube:E,newrelic:T,bigquery:c,azure:g,http:x,"data-registry":b},i={github:I,gitlab:w,datadog:k,scm:$,pagerduty:M,catalog:l,soundcheck:K,techinsights:O,kubernetes:S,jira:z,sonarqube:G,newrelic:D,bigquery:h,azure:n,http:B,"data-registry":d},R=new Set(["catalog","soundcheck","techinsights","sonarqube","data-registry"]),U=f(()=>({image:{objectFit:"contain",color:"white",height:"var(--bui-space-6)",maxWidth:"100%"},tallImage:{height:"var(--bui-space-8)",marginBottom:0}})),W=o=>!!m[o]&&!!i[o],_=({integrationId:o,noMargin:e})=>{const r=U(),a=s(),t=Q(a)?i[o]:m[o];return t?p("img",{src:t,alt:o,style:e?{marginBottom:0}:{},className:`${r.image} ${R.has(o)?r.tallImage:""}`}):null};export{_ as IntegrationLogoBUI,W as hasLogo};
|
|
2
|
+
//# sourceMappingURL=IntegrationLogoBUI.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as e,jsxs as d,Fragment as j}from"react/jsx-runtime";import{useRouteRef as S}from"@backstage/core-plugin-api";import{usePermission as q}from"@backstage/plugin-permission-react";import{Box as k,HeaderPage as F,SearchField as M,Table as Y,TableHeader as z,Column as c,TableBody as G,Row as V,Cell as g,Button as $}from"@backstage/ui";import{makeStyles as J}from"@material-ui/core";import{soundcheckCollectorUpdatePermission as K}from"@spotify/backstage-plugin-soundcheck-common";import{sortBy as O,isEmpty as p}from"lodash";import{useState as C,useMemo as P,useEffect as Q}from"react";import{useNavigate as W}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"../../hooks/useConfirmationModal.esm.js";import{useSearchName as X}from"../../hooks/useSearchName.esm.js";import"react-use/lib/useLocalStorage";import{useGetCollectors as Z}from"../../hooks/collectors/useGetCollectors.esm.js";import{useLCPReporting as _}from"../../hooks/useLCPReporting.esm.js";import{useLoadTimeReporting as ee}from"../../hooks/useLoadTimeReporting.esm.js";import{integrationDetailsRouteRef as te,integrationEditRouteRef as ie}from"../../routes.esm.js";import{CustomCell as oe}from"../CustomCell/CustomCell.esm.js";import"../EmptyState/EmptyState.esm.js";import{EmptyStateBUI as re}from"../EmptyState/EmptyStateBUI.esm.js";import"@remixicon/react";import{LoadingTableSkeleton as ne}from"../LoadingTableSkeleton/LoadingTableSkeleton.esm.js";import{IntegrationLogoBUI as ae,hasLogo as se}from"./IntegrationLogoBUI.esm.js";const de=J(()=>({container:{padding:"0 var(--bui-space-3) var(--bui-space-6)"}})),R=["github","gitlab","scm","pagerduty","datadog","kubernetes","jira","sonarqube","newrelic","bigquery","catalog","azure","http","data-registry"],L=t=>{const r=t.hasUIConfig?"UI":"YAML";return p(t.config)&&p(t.collectionConfigs)?"None":r},N=({integration:t,hasConfigPage:r})=>{const m=S(te),l=W(),n=S(ie);return d(V,{onAction:()=>l(m({integrationId:t.id})),children:[e(g,{leadingIcon:e(ae,{integrationId:t.id}),title:se(t.id)?"":t.name??t.id}),e(g,{title:t.description??"N/A"}),e(g,{title:`${String(t.dependentChecks?.length??0)} checks`}),e(g,{title:L(t)}),e(oe,{onClick:u=>u.stopPropagation(),children:e($,{onClick:()=>l(n({integrationId:t.id})),isDisabled:!r,variant:"tertiary",children:"Edit"})})]})},ce=({integrations:t})=>{const r=de(),[m,l]=C(""),[n,u]=C("ascending"),[a,B]=C(""),y=P(()=>({routeName:"soundcheck-integrations",additionalAttributes:{integrationsPerPage:t?.length}}),[t?.length]),{reportContentLoaded:b}=ee(y),{reporter:v}=_(y),{loading:T,allowed:U}=q({permission:K}),{data:A,isLoading:s}=Z(),h=t?.map(i=>i.integrationId)??R,w=X({items:A??[],searchTerm:m}),f=P(()=>{const i=O(w,o=>a==="name"?o.name??o.id:a==="dependent-checks"?o.dependentChecks?.length??0:a==="config-source"?L(o):h.includes(o.id)?1:2);return n==="descending"&&i.reverse(),i},[w,h,a,n]),I=v?.getLCPValue();Q(()=>{s||b({lcp:I})},[s,b,I]);const D=!s&&!p(f),E=s,x=!s&&p(f),H=e(re,{title:"No integrations found",body:"Your current search term did not return any integrations. Please try a different search term."});return d(j,{children:[e(k,{children:e(F,{customActions:e(M,{value:m,onChange:l,"aria-label":"Search Name"}),title:"Integrations"})}),d(k,{className:r.container,children:[E&&e(ne,{rowCount:10,rowHeight:36}),x&&H,D&&d(Y,{onSortChange:({direction:i,column:o})=>{B(String(o)),u(i)},sortDescriptor:{direction:n,column:a},children:[d(z,{children:[e(c,{id:"name",allowsSorting:!0,isRowHeader:!0,style:{width:"20%"},children:"Name"}),e(c,{style:{width:"54%"},children:"Description"}),e(c,{id:"dependent-checks",allowsSorting:!0,style:{width:"12%"},children:"Dependent Checks"}),e(c,{id:"config-source",allowsSorting:!0,style:{width:"12%"},children:"Config Source"}),e(c,{style:{width:"2%"}})]}),e(G,{children:f.map(i=>e(N,{integration:i,hasConfigPage:!T&&U&&h.includes(i.id)},i.id))})]})]})]})};export{R as ConfigurableIntegrationIds,N as IntegrationRow,ce as IntegrationsListPageBUI};
|
|
2
|
+
//# sourceMappingURL=IntegrationsListPageBUI.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as e}from"react/jsx-runtime";import{makeStyles as
|
|
1
|
+
import{jsx as e}from"react/jsx-runtime";import{makeStyles as t}from"@material-ui/core";import{Cell as c}from"react-aria-components";const m=t(()=>({customCell:{padding:"0 var(--bui-space-3)"}})),s=({children:o,onClick:l})=>{const r=m();return e(c,{onClick:l,className:r.customCell,children:o})};export{s as CustomCell};
|
|
2
2
|
//# sourceMappingURL=CustomCell.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as o,jsxs as n}from"react/jsx-runtime";import{Link as a}from"@backstage/core-components";import{Flex as c,Text as m,TooltipTrigger as s,ButtonIcon as p,Tooltip as d,Box as h}from"@backstage/ui";import{makeStyles as x}from"@material-ui/core";import{RiInformationLine as g,RiExternalLinkLine as u}from"@remixicon/react";import{CustomCell as f}from"../CustomCell/CustomCell.esm.js";import"../SoundcheckMarkdownContent/SoundcheckMarkdownContentDeprecated.esm.js";import"react";import"react-markdown";import"rehype-raw";import"remark-gfm";import{SoundcheckMarkdownContentBUI as k}from"../SoundcheckMarkdownContent/SoundcheckMarkdownContentBUI.esm.js";const b=x(()=>({button:{boxShadow:"none !important",backgroundColor:"inherit !important"},tooltip:{maxWidth:"50em",padding:0},scrollBox:{maxHeight:"30em",overflow:"auto",padding:"0 var(--bui-space-3)"},docsUrlLink:{display:"flex",alignItems:"center",color:"var(--bui-fg-primary)"},docsUrlIcon:{width:"16px",height:"16px"}})),L=({title:e,description:r,documentationURL:i})=>{const t=b();return o(f,{children:n(c,{gap:"0",align:"center",children:[o(m,{children:e}),n(s,{children:[o(p,{className:t.button,isDisabled:!r,variant:"secondary",icon:o(g,{})}),o(d,{className:t.tooltip,children:o(h,{className:t.scrollBox,children:o(k,{content:r})})})]}),i&&o(a,{to:/^https?:\/\//i.test(i)?i:`http://${i}`,className:t.docsUrlLink,onClick:l=>{l.stopPropagation()},children:o(u,{className:t.docsUrlIcon})})]})})};export{L as DescriptionCell};
|
|
2
|
+
//# sourceMappingURL=DescriptionCell.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as r}from"react/jsx-runtime";import{ButtonLink as t}from"@backstage/ui";import{RiInformationLine as e}from"@remixicon/react";const i=({href:o,size:n})=>r(t,{iconStart:r(e,{}),href:o,target:"_blank",rel:"noopener noreferrer",variant:"secondary",size:n});export{i as DocLinkButton};
|
|
2
|
+
//# sourceMappingURL=DocLinkButton.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{jsx as e,jsxs as a}from"react/jsx-runtime";import{Box as r,Text as o,Button as p,ButtonLink as x}from"@backstage/ui";import{makeStyles as b}from"@material-ui/core";import{RiExternalLinkLine as u}from"@remixicon/react";const y=b(()=>({emptyStateContent:{display:"flex",flexDirection:"column",alignItems:"center",textAlign:"center",gridGap:"var(--bui-space-4)",maxWidth:"500px"},emptyStateContainer:{padding:"var(--bui-space-14)",width:"100%",display:"flex",justifyContent:"center",border:"2px dashed var(--bui-border)",borderRadius:"var(--bui-radius-3)"},actions:{display:"flex",alignItems:"center",gridGap:"var(--bui-space-2)"}})),h=({title:c,body:l,actionOnClick:t,actionButtonIcon:d,actionDisabled:s,actionText:m="Create",docLink:n})=>{const i=y();return e(r,{className:i.emptyStateContainer,children:a(r,{className:i.emptyStateContent,children:[e(o,{variant:"title-x-small",weight:"bold",children:c}),e(o,{variant:"body-medium",color:"secondary",children:l}),(t||n)&&a(r,{className:i.actions,children:[t&&e(p,{isDisabled:s,iconStart:d,onClick:t,children:m}),n&&e(x,{href:n,target:"_blank",rel:"noopener noreferrer",iconEnd:e(u,{}),variant:"secondary",children:"Learn More"})]})]})})};export{h as EmptyStateBUI};
|
|
2
2
|
//# sourceMappingURL=EmptyStateBUI.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{jsx as i}from"react/jsx-runtime";import{useRouteRef as r}from"@backstage/core-plugin-api";import{usePermission as m}from"@backstage/plugin-permission-react";import{RiAddLine as s}from"@remixicon/react";import{soundcheckCampaignCreatePermission as c}from"@spotify/backstage-plugin-soundcheck-common";import{useNavigate as p}from"react-router-dom";import{campaignCreateRouteRef as g}from"../../routes.esm.js";import{EmptyStateBUI as d}from"./EmptyStateBUI.esm.js";const f=()=>{const t=r(g),a=p(),{loading:e,allowed:n}=m({permission:c}),o=!e&&n;return i(d,{title:o?"Create your first campaign":"No campaigns found",body:"Campaigns organize and manage coordinated initiatives across your organization.",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/campaigns/",actionButtonIcon:i(s,{}),actionOnClick:o?()=>a(t()):()=>{},actionText:"Create a campaign",actionDisabled:!o})};export{f as EmptyStateNoCampaigns};
|
|
2
2
|
//# sourceMappingURL=EmptyStateNoCampaigns.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{jsx as o}from"react/jsx-runtime";import{useRouteRef as s}from"@backstage/core-plugin-api";import{usePermission as a}from"@backstage/plugin-permission-react";import{RiAddLine as n}from"@remixicon/react";import{soundcheckCheckCreatePermission as m}from"@spotify/backstage-plugin-soundcheck-common";import{useNavigate as p}from"react-router-dom";import{checkTemplatesRouteRef as d}from"../../routes.esm.js";import{EmptyStateBUI as f}from"./EmptyStateBUI.esm.js";const h=()=>{const t=s(d),i=p(),{loading:c,allowed:r}=a({permission:m}),e=!c&&r;return o(f,{title:e?"Create your first check":"No checks found",body:"Checks indicate where the software aligns to or deviates from organizational standards and best practices.",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/checks/",actionButtonIcon:o(n,{}),actionOnClick:e?()=>i(t()):()=>{},actionText:"Create a check",actionDisabled:!e})};export{h as EmptyStateNoChecks};
|
|
2
2
|
//# sourceMappingURL=EmptyStateNoChecks.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as o}from"react/jsx-runtime";import{useRouteRef as
|
|
1
|
+
import{jsx as o}from"react/jsx-runtime";import{useRouteRef as s}from"@backstage/core-plugin-api";import{usePermission as n}from"@backstage/plugin-permission-react";import{RiAddLine as m}from"@remixicon/react";import{soundcheckTrackCreatePermission as p}from"@spotify/backstage-plugin-soundcheck-common";import{useNavigate as d}from"react-router-dom";import{trackCreateRouteRef as u}from"../../routes.esm.js";import{EmptyStateBUI as f}from"./EmptyStateBUI.esm.js";const k=({title:r})=>{const e=s(u),a=d(),{loading:i,allowed:c}=n({permission:p}),t=!i&&c;return o(f,{title:r??(t?"Create your first track":"No tracks found"),body:"Tracks encourage alignment to architectural best practices and standards.",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/tracks/",actionButtonIcon:o(m,{}),actionOnClick:t?()=>a(e()):()=>{},actionText:"Create a track",actionDisabled:!t})};export{k as EmptyStateNoTracks};
|
|
2
2
|
//# sourceMappingURL=EmptyStateNoTracks.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as t,jsxs as
|
|
1
|
+
import{jsx as t,jsxs as O}from"react/jsx-runtime";import{stringifyEntityRef as T}from"@backstage/catalog-model";import{makeStyles as z,FormControlLabel as A,Checkbox as E,Typography as G,Box as I,TextField as j}from"@material-ui/core";import B from"@material-ui/icons/CheckBox";import D from"@material-ui/icons/CheckBoxOutlineBlank";import N from"@material-ui/icons/ExpandMore";import{Autocomplete as R}from"@material-ui/lab";import{useState as V,useMemo as p,useCallback as d}from"react";import{useGetEntityRefs as $}from"../../hooks/catalog/useGetEntityRefs.esm.js";import{FormFieldLabel as H}from"../FormFieldLabel/FormFieldLabel.esm.js";import{ListboxVirtualized as M}from"../ListboxVirtualized/ListboxVirtualized.esm.js";const P=z({container:{padding:0},formControl:{flexGrow:1},label:{lineHeight:"1em"}}),U=({label:c,values:a,onChange:n,facet:u,disabled:f,filter:h,renderOption:b,renderTags:L})=>{const s=P(),[v,m]=V(!1),{data:g,isLoading:C,error:k}=$(h),i=p(()=>g?.items.map(e=>({label:e.metadata.title??e.metadata.name,value:T(e),description:e.metadata.description}))??[],[g]),x=p(()=>a?.map(e=>({...e,value:e.value.toLocaleLowerCase("en-US")}))??[],[a]),y=d((e,o)=>{n(o),i.every(l=>o.some(({value:r})=>l.value===r))&&m(!1)},[i,n]),S=d(()=>{n(a)},[a,n]),F=d((e,o)=>b?.(e,o)??t(A,{onClick:l=>l.preventDefault(),control:t(E,{icon:t(D,{fontSize:"small"}),checkedIcon:t(B,{fontSize:"small"}),checked:o.selected}),label:e.label,classes:{label:s.label}}),[b,s.label]),w=p(()=>f||C||!a?.length&&!i.length,[f,C,a?.length,i.length]);return k?t(G,{color:"error",children:u?`Failed to load facet: ${u}`:`Failed to load ${c}`}):O(I,{pb:1,pt:1,className:s.container,children:[t(H,{title:c,docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/filters"}),t(R,{multiple:!0,open:v,onOpen:()=>m(!0),onClose:()=>m(!1),className:s.formControl,limitTags:4,disableCloseOnSelect:!0,"aria-label":c,value:x,onChange:y,onBlur:S,disabled:w,ListboxComponent:M,renderOption:F,renderTags:L,size:"small",popupIcon:t(N,{"data-testid":"selected-facets-expand"}),renderInput:e=>t(j,{...e,variant:"outlined"}),options:i,getOptionLabel:e=>e.label,getOptionSelected:(e,o)=>e.value===o.value,filterOptions:(e,o)=>{const l=o.inputValue.toLowerCase();return e.filter(r=>r.label.toLowerCase().includes(l)||r.value.toLowerCase().includes(l)||r.description?.toLowerCase().includes(l))}})]})};export{U as EntitiesAutocompletePicker};
|
|
2
2
|
//# sourceMappingURL=EntitiesAutocompletePicker.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as i,jsxs as c}from"react/jsx-runtime";import{Link as g,InfoCard as v}from"@backstage/core-components";import{useRouteRef as d}from"@backstage/core-plugin-api";import{useEntity as C}from"@backstage/plugin-catalog-react";import{Divider as R}from"@material-ui/core";import S from"@material-ui/core/styles/makeStyles";import{SpotifyLicenseBanner as I}from"@spotify/backstage-plugin-core";import{Fragment as L}from"react";import{useAllCertifications as w}from"../../hooks/certifications/useAllCertifications.esm.js";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/catalog-model";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{usePlaylists as b}from"../../hooks/playlists/usePlaylists.esm.js";import{certificationTrackRouteRef as x,certificationPlaylistTrackRouteRef as E}from"../../routes.esm.js";import{soundcheckBackend as N,invalidLicenseMessage as j}from"../../utils/license.esm.js";import{AlertPanel as A}from"../AlertPanel/AlertPanel.esm.js";import"../CertificationSidebar/CertificationSidebar.esm.js";import{CertificationSummary as P}from"../CertificationSidebar/CertificationSummary.esm.js";import"@material-ui/lab";import"../CertificationSidebar/Check.esm.js";import"../CertificationSidebar/LevelSummary.esm.js";import{NoCertifications as T}from"../EmptyState/EmptyState.esm.js";import"../EmptyState/EmptyStateBUI.esm.js";import"@backstage/plugin-permission-react";import"@
|
|
1
|
+
import{jsx as i,jsxs as c}from"react/jsx-runtime";import{Link as g,InfoCard as v}from"@backstage/core-components";import{useRouteRef as d}from"@backstage/core-plugin-api";import{useEntity as C}from"@backstage/plugin-catalog-react";import{Divider as R}from"@material-ui/core";import S from"@material-ui/core/styles/makeStyles";import{SpotifyLicenseBanner as I}from"@spotify/backstage-plugin-core";import{Fragment as L}from"react";import{useAllCertifications as w}from"../../hooks/certifications/useAllCertifications.esm.js";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/catalog-model";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{usePlaylists as b}from"../../hooks/playlists/usePlaylists.esm.js";import"react-use/lib/useLocalStorage";import{certificationTrackRouteRef as x,certificationPlaylistTrackRouteRef as E}from"../../routes.esm.js";import{soundcheckBackend as N,invalidLicenseMessage as j}from"../../utils/license.esm.js";import{AlertPanel as A}from"../AlertPanel/AlertPanel.esm.js";import"../CertificationSidebar/CertificationSidebar.esm.js";import{CertificationSummary as P}from"../CertificationSidebar/CertificationSummary.esm.js";import"@material-ui/lab";import"../CertificationSidebar/Check.esm.js";import"../CertificationSidebar/LevelSummary.esm.js";import{NoCertifications as T}from"../EmptyState/EmptyState.esm.js";import"../EmptyState/EmptyStateBUI.esm.js";import"@backstage/plugin-permission-react";import"@remixicon/react";import{CardSkeleton as B}from"./skeletons/CardSkeleton.esm.js";const m=S(t=>({certificationWrapper:{display:"flex",justifyContent:"space-between",alignItems:"center"},infoCard:{display:"grid",gridRowGap:t.spacing(2)},emptyState:{overflow:"hidden"}})),n=({children:t,title:e})=>{const o=m();return i(v,{title:e,children:c("div",{className:o.infoCard,children:[i(I,{inline:!0,backend:N,invalidLicenseMessage:j}),t]})})},D=(t,e)=>t.find(o=>o.trackIds.some(a=>a===e))?.id??"",M=({title:t="Soundcheck"})=>{const{entity:e}=C(),o=m(),{data:a,isError:p,isLoading:l}=w(e),{data:s,isError:f,isLoading:k}=b(e),y=d(x),h=d(E);return p||f?i(n,{title:t,children:i(A,{severity:"error",title:"Error loading certifications"})}):l||k||!a||!s?i(n,{title:t,children:i(B,{})}):a.length?i(n,{title:t,children:a.map((r,u)=>c(L,{children:[c("div",{className:o.certificationWrapper,"data-testid":"soundcheck-track-row",children:[i(P,{name:r.track.name,badge:r.track.badge,trackType:r.track?.type},r.track.id),i(g,{to:r.track.type==="playlist"?h({playlistId:D(s,r.track.id),trackId:r.track.id}):y({trackId:r.track.id}),children:"View Details"})]}),u<a.length-1?i(R,{}):null]},r.track.name))}):i(n,{title:t,children:i("div",{className:o.emptyState,children:i(T,{})})})};export{M as Card,m as useStyles};
|
|
2
2
|
//# sourceMappingURL=Card.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as a,jsx as e}from"react/jsx-runtime";import{Paper as d,Grid as n,IconButton as f,Typography as h,Collapse as g}from"@material-ui/core";import{makeStyles as x}from"@material-ui/core/styles";import u from"@material-ui/icons/ArrowDropDown";import y from"@material-ui/icons/ArrowRight";import{useState as S}from"react";const
|
|
1
|
+
import{jsxs as a,jsx as e}from"react/jsx-runtime";import{Paper as d,Grid as n,IconButton as f,Typography as h,Collapse as g}from"@material-ui/core";import{makeStyles as x}from"@material-ui/core/styles";import u from"@material-ui/icons/ArrowDropDown";import y from"@material-ui/icons/ArrowRight";import{useState as S}from"react";const N=x(t=>({root:{display:"flex",flexDirection:"column",gap:0},button:{marginLeft:-t.spacing(1)},title:{fontWeight:700,color:t.palette.text.primary,cursor:"pointer"}})),b=({title:t,alwaysExpanded:o=!1,children:c,className:m,elevation:s=1})=>{const[r,p]=S(o),i=N(),l=()=>{o||p(!r)};return a(d,{elevation:s,className:`${i.root} ${m??""}`,children:[a(n,{container:!0,alignItems:"center",spacing:0,children:[e(n,{item:!0,children:!o&&e(f,{onClick:l,className:i.button,children:r?e(u,{fontSize:"large"}):e(y,{fontSize:"large"})})}),e(n,{item:!0,children:e(h,{onClick:l,className:i.title,children:t})})]}),e(g,{in:r,children:c})]})};export{b as ExpandableSection};
|
|
2
2
|
//# sourceMappingURL=ExpandableSection.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as o}from"react/jsx-runtime";import{Button as v}from"@backstage/ui";import h from"@material-ui/icons/Search";import{useContext as R}from"react";import"../SoundcheckDialog/SoundcheckDialog.esm.js";import"./FactExplorer.esm.js";import{FactExplorerContext as F}from"./FactExplorerContext.esm.js";const B=({onSave:t,factRef:r,path:a,pathResolver:p,className:i,text:m="Explore Facts",hideIcon:n,variant:c="primary",size:s})=>{const{updateOpen:e,updateOnSave:l,updateFactRef:u,updatePath:f,updatePathResolver:d}=R(F);return o(v,{onClick:()=>{e(!0),u(r??""),f(a??""),d(p??""),l(()=>x=>{t&&t(x),e(!1)})},className:i,variant:c,size:s,iconStart:n?void 0:o(h,{}),children:m})};export{B as FactExplorerDialogButtonBUI};
|
|
2
|
+
//# sourceMappingURL=FactExplorerDialogBUI.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{parseFactRef as
|
|
1
|
+
import{parseFactRef as c,stringifyFactRef as p}from"@spotify/backstage-plugin-soundcheck-common";import{useMemo as n}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"../../hooks/useSoundcheckAlert.esm.js";import{useGetAllTracks as s}from"../../hooks/tracks/useGetAllTracks.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";const l=({selectedCollector:e})=>{const{data:a}=s({});return{factOptions:n(()=>e?.factNames?.map(o=>{const t=e.id==="soundcheck"?{source:e.id,scope:"default",name:o}:c(o,{defaultSource:e.id,defaultScope:"default"});let m=t.name;if(e?.id==="soundcheck"){const r=a?.edges.find(i=>i.node.id===t.name.replace("track/",""))?.node;m=r?`${r.type==="campaign"?"Campaign: ":"Track: "}${r.name}`:t.name}return{label:m,value:p(t)}})?.sort((o,t)=>o.label.localeCompare(t.label))??[],[e?.factNames,e?.id,a])}};export{l as useFactOptions};
|
|
2
2
|
//# sourceMappingURL=useFactOptions.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as t,jsxs as L}from"react/jsx-runtime";import{makeStyles as w,FormControlLabel as A,Checkbox as I,Typography as
|
|
1
|
+
import{jsx as t,jsxs as L}from"react/jsx-runtime";import{makeStyles as w,FormControlLabel as A,Checkbox as I,Typography as G,Box as j,TextField as B}from"@material-ui/core";import E from"@material-ui/icons/CheckBox";import N from"@material-ui/icons/CheckBoxOutlineBlank";import U from"@material-ui/icons/ExpandMore";import{Autocomplete as V}from"@material-ui/lab";import{useState as D,useMemo as s,useCallback as d}from"react";import{useGetEntityFacets as H}from"../../hooks/catalog/useGetEntityFacets.esm.js";import{FormFieldLabel as M}from"../FormFieldLabel/FormFieldLabel.esm.js";import{ListboxVirtualized as P}from"../ListboxVirtualized/ListboxVirtualized.esm.js";const $=w({container:{padding:0},formControl:{flexGrow:1},label:{lineHeight:"1em"}}),q=({facet:f,label:b,values:l,onChange:n,disabled:g,filter:x,renderOption:u,renderTags:k,facetFilter:h})=>{const i=$(),[y,c]=D(!1),{data:r,isLoading:C,error:S}=H(f,x),o=s(()=>r?.filter(h??(()=>!0)).map(e=>e.toLocaleLowerCase("en-US")),[r,h]),m=s(()=>l?.map(e=>e.toLocaleLowerCase("en-US"))??[],[l]),F=d((e,a)=>{n(a),o&&o.every(p=>a.includes(p))&&c(!1)},[o,n]),O=d(()=>{n(l?.length?l:void 0)},[l,n]),T=d((e,a)=>u?.(e,a)??t(A,{onClick:p=>p.preventDefault(),control:t(I,{icon:t(N,{fontSize:"small"}),checkedIcon:t(E,{fontSize:"small"}),checked:a.selected}),label:e,classes:{label:i.label}}),[u,i.label]),v=s(()=>g||C||!l?.length&&(!r?.length||!o?.length),[g,C,l?.length,r?.length,o?.length]),z=s(()=>Array.from(new Set([...o??[],...m])),[o,m]);return S?L(G,{color:"error",children:["Failed to load facet: ",f]}):L(j,{pb:1,pt:1,className:i.container,children:[t(M,{title:b,docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/filters"}),t(V,{open:y,onOpen:()=>c(!0),onClose:()=>c(!1),className:i.formControl,multiple:!0,limitTags:4,disableCloseOnSelect:!0,"aria-label":b,options:z,value:m,getOptionLabel:e=>r&&o?r[o.indexOf(e)]??e:e,onChange:F,onBlur:O,disabled:v,ListboxComponent:P,renderOption:T,renderTags:k,size:"small",popupIcon:t(U,{"data-testid":"selected-facets-expand"}),renderInput:e=>t(B,{...e,variant:"outlined"})})]})};export{q as EntityAutocompletePicker};
|
|
2
2
|
//# sourceMappingURL=EntityAutocompletePicker.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as
|
|
1
|
+
import{jsxs as r,Fragment as V,jsx as e}from"react/jsx-runtime";import{parseEntityRef as $}from"@backstage/catalog-model";import{useApi as X,configApiRef as Y}from"@backstage/core-plugin-api";import{makeStyles as _,Typography as y,Divider as M,Box as u,Tabs as Q,Tab as P,Grid as p,Paper as q,Chip as I,Switch as J,FormHelperText as U}from"@material-ui/core";import{combineEntityFilterQueries as Z,getGroupFilterFromConfig as ee}from"@spotify/backstage-plugin-soundcheck-common";import te,{isEmpty as S}from"lodash";import{useState as le,useMemo as R}from"react";import{useFormContext as ie}from"react-hook-form";import re from"react-use/lib/useLocalStorage";import{EntitiesAutocompletePicker as ae}from"../EntitiesAutocompletePicker/EntitiesAutocompletePicker.esm.js";import{FormFieldLabel as L}from"../FormFieldLabel/FormFieldLabel.esm.js";import{EntityAutocompletePicker as oe}from"./EntityAutocompletePicker.esm.js";import{FilterKeyValueInput as T}from"./FilterKeyValueInput.esm.js";import{FilterPreviewTable as ne}from"./FilterPreviewTable/FilterPreviewTable.esm.js";import{FILTER_OPTIONS as j,emptyFilters as se}from"./types.esm.js";import{isValidOtherFilterKey as me}from"./utils.esm.js";const ce=_(t=>({title:{fontWeight:700},filterContainer:{display:"flex",flexWrap:"wrap"},selectionTabs:{marginBottom:t.spacing(2)},divider:{marginTop:t.spacing(2)},filterDisplayBox:{padding:t.spacing(2),paddingLeft:t.spacing(4),border:`1px solid ${t.palette.divider}`,marginBottom:t.spacing(0),display:"flex",alignItems:"center",flex:1},error:{borderColor:t.palette.error.main}})),x=t=>S(t)?"":`${t.length>1?`[${t.join(", ")}]`:t[0]}`,de=({filterValue:t,excludeFilter:F,keyValueFilter:h,excludeKeyValueFilter:f})=>{const n=(a=se())=>j.map(i=>{const d=a[i.key];if(S(d))return"";let o;return i.key==="selectedOwners"?d.length>1?o=`[${d.map(v=>$(v).name).join(", ")}]`:o=$(d[0]).name:o=x(d),`${i.facet}: ${o}`}).filter(i=>!!i),m=a=>[a?.selectedLabels?.map(i=>`metadata.labels.${i.key}: ${x(i.value)}`),a?.selectedAnnotations?.map(i=>`metadata.annotations.${i.key}: ${x(i.value)}`),a?.selectedOtherFilters?.map(i=>`${i.key}: ${x(i.value)}`)].flat(),c=[...n(t),...m(h)],b=[...n(F),...m(f)];return{includeFilterDisplay:c,excludeFilterDisplay:b}},pe=({filterName:t,errorPath:F="filtersStep",disabled:h,keyValueFilterName:f,excludeFilterName:n,excludeKeyValueFilterName:m})=>{const c=ce(),{setValue:b,watch:a,formState:i,trigger:d}=ie(),[o,v]=le(0),[k,W]=re("soundcheck-show-preview",!0),z=X(Y),B=R(()=>o===0?t:n,[n,t,o]),g=R(()=>o===0?f:m,[m,f,o]),w=a(B??t),N=l=>s=>{b(B??t,{...w,[l]:s??[]}),d()},E=a(t),O=n?a(n):void 0,A=f?a(f):void 0,D=m?a(m):void 0,{includeFilterDisplay:G,excludeFilterDisplay:K}=de({filterValue:E,excludeFilter:O,keyValueFilter:A,excludeKeyValueFilter:D}),C=te.get(i.errors,F,void 0);return r(V,{children:[r(y,{variant:"body2",children:[e("strong",{children:"Note:"})," For performance reasons, filter facets selected for inclusion cannot be used for exclusion and vice versa."]}),n&&r(V,{children:[e(M,{className:c.divider}),e(u,{className:c.selectionTabs,children:r(Q,{value:o,onChange:(l,s)=>v(s),children:[e(P,{label:"Include Filters","aria-label":"include filters"}),e(P,{label:"Exclude Filters","aria-label":"exclude filters"})]})})]}),r(p,{container:!0,spacing:6,children:[r(p,{item:!0,container:!0,className:c.filterContainer,spacing:2,children:[j.map(l=>e(p,{item:!0,xs:12,sm:6,md:4,children:l.key==="selectedOwners"?e(ae,{facet:l.facet,label:l.label,values:(w?.[l.key]??[]).map(s=>({label:$(s).name,value:s})),onChange:s=>N(l.key)(s?.map(({value:H})=>H)),disabled:h,filter:Z({kind:["group"]},ee(z))}):e(oe,{...l,values:w?.[l.key],onChange:N(l.key),disabled:h})},l.key)),g&&r(V,{children:[r(p,{item:!0,xs:12,sm:6,md:4,children:[e(L,{title:"Label",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/filters"}),e(T,{name:`${g}.selectedLabels`,title:"Label Filter"})]}),r(p,{item:!0,xs:12,sm:6,md:4,children:[e(L,{title:"Annotation",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/filters"}),e(T,{name:`${g}.selectedAnnotations`,title:"Annotation Filter"})]}),r(p,{item:!0,xs:12,sm:6,md:4,children:[e(L,{title:"Other",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/filters"}),e(T,{name:`${g}.selectedOtherFilters`,title:"Other Catalog Filter",validateKey:me})]})]})]}),r(p,{item:!0,xs:12,children:[r(q,{className:`${c.filterDisplayBox} ${C?.message?c.error:""}`,elevation:0,children:[r(u,{flex:1,overflow:"auto",children:[r(u,{display:"flex",flexWrap:"wrap",alignItems:"center",style:{overflowX:"auto",overflowY:"hidden"},children:[e(y,{style:{marginRight:4,marginBottom:4},variant:"subtitle2",component:"span",children:"Filter:"}),G.map(l=>e(I,{size:"small",label:l,style:{marginBottom:4}},l))]}),K.length>0&&r(u,{display:"flex",flexWrap:"wrap",alignItems:"center",style:{overflowX:"auto",overflowY:"hidden"},children:[e(y,{style:{marginRight:4,marginBottom:4},variant:"subtitle2",component:"span",children:"Exclude:"}),K.map(l=>e(I,{size:"small",label:l,style:{marginBottom:4}},l))]})]}),e(y,{style:{marginLeft:10},variant:"subtitle2",component:"div",children:"Preview"}),e(u,{children:e(J,{checked:k,onChange:()=>{W(!k)},inputProps:{"aria-label":"toggle entity preview"}})})]}),e(u,{marginBottom:2,children:C?.message&&e(U,{error:!0,children:C?.message})}),k&&e(ne,{filter:E,keyValueFilter:A,excludeFilter:O,excludeKeyValueFilter:D})]})]})]})};export{pe as FilterComponent};
|
|
2
2
|
//# sourceMappingURL=FilterComponent.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsxs as r,jsx as l}from"react/jsx-runtime";import{MenuTrigger as m,Button as s,Menu as u,SubmenuTrigger as d,MenuItem as b,MenuAutocompleteListbox as p,MenuListBoxItem as h}from"@backstage/ui";import{RiFilterLine as $}from"@remixicon/react";const x=({filters:n,selected:o,setSelected:a})=>r(m,{children:[l(s,{iconStart:l($,{}),variant:"secondary",children:"Filter"}),l(u,{"aria-label":"Filter Selection",children:n.map((e,i)=>r(d,{children:[l(b,{children:e.label},`${e.label}-${i}-menuitem`),l(p,{selectionMode:"multiple",selectedKeys:o[e.key],onSelectionChange:t=>a(e.key,t),placement:"right top",virtualized:!0,children:e.options.map((t,c)=>l(h,{id:t.value,children:t.label},`${t.value}-${c}-listbox-item`))},`${e.label}-${i}-listbox`)]},`${e.label}-${i}-submenu`))})]});export{x as FilterMenu};
|
|
2
|
+
//# sourceMappingURL=FilterMenu.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as c,jsx as e}from"react/jsx-runtime";import{makeStyles as C,Box as a,TextField as S,FormControlLabel as b,Checkbox as g,Typography as k}from"@material-ui/core";import x from"@material-ui/icons/CheckBox";import L from"@material-ui/icons/CheckBoxOutlineBlank";import I from"@material-ui/icons/ExpandMore";import{Autocomplete as A}from"@material-ui/lab";import{useState as E,useEffect as F,useCallback as m}from"react";import{CheckIcon as O}from"../CheckIcon/CheckIcon.esm.js";import{CheckState as r}from"../CheckPage/utils.esm.js";import{FormFieldLabel as
|
|
1
|
+
import{jsxs as c,jsx as e}from"react/jsx-runtime";import{makeStyles as C,Box as a,TextField as S,FormControlLabel as b,Checkbox as g,Typography as k}from"@material-ui/core";import x from"@material-ui/icons/CheckBox";import L from"@material-ui/icons/CheckBoxOutlineBlank";import I from"@material-ui/icons/ExpandMore";import{Autocomplete as A}from"@material-ui/lab";import{useState as E,useEffect as F,useCallback as m}from"react";import{CheckIcon as O}from"../CheckIcon/CheckIcon.esm.js";import{CheckState as r}from"../CheckPage/utils.esm.js";import{FormFieldLabel as T}from"../FormFieldLabel/FormFieldLabel.esm.js";import{ListboxVirtualized as y}from"../ListboxVirtualized/ListboxVirtualized.esm.js";const z=[r.PASSED,r.FAILED,r.WARNING,r.EXEMPT,r.NOT_APPLICABLE,r.ERROR],N=C({container:{padding:0},formControl:{flexGrow:1},label:{lineHeight:"1em"}}),p=l=>l.toLowerCase().split("_").map(t=>t.charAt(0).toUpperCase()+t.slice(1)).join(" "),P=(l,{selected:t})=>e(b,{onClick:o=>o.preventDefault(),control:e(g,{icon:e(L,{fontSize:"small"}),checkedIcon:e(x,{fontSize:"small"}),checked:t}),label:c(a,{display:"flex",alignItems:"center",children:[e(O,{result:l}),e(a,{mr:1}),e(k,{children:p(l)})]})}),R=({states:l,stagedStates:t,onStagedStatesChange:o})=>{const i=N(),[d,n]=E(!1);F(()=>{o(l)},[l,o]);const f=m((s,h)=>{o(h)},[o]),u=m(()=>{o(t?.length?t:[])},[t,o]);return c(a,{pb:1,pt:1,className:i.container,children:[e(T,{title:"State",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/filters"}),e(A,{open:d,onOpen:()=>n(!0),onClose:()=>n(!1),className:i.formControl,multiple:!0,limitTags:4,disableCloseOnSelect:!0,"aria-label":"State",options:z,value:t,getOptionLabel:p,onChange:f,onBlur:u,ListboxComponent:y,renderOption:P,size:"small",popupIcon:e(I,{"data-testid":"selected-facets-expand"}),renderInput:s=>e(S,{...s,variant:"outlined"})})]})};export{R as StateFilter};
|
|
2
2
|
//# sourceMappingURL=StateFilter.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{jsx as d}from"react/jsx-runtime";import{makeStyles as W,TextField as k}from"@material-ui/core";import{Autocomplete as w}from"@material-ui/lab";import{useCallback as A}from"react";import{Controller as M}from"react-hook-form";import{ListboxVirtualized as N}from"../ListboxVirtualized/ListboxVirtualized.esm.js";const f=W(o=>({clearIndicator:{marginRight:o.spacing(1)},helperText:{marginLeft:0},noMargin:{margin:0}})),V=({name:o,rules:h,label:b,control:x,options:a,filterOptions:C,getOptionLabel:S,getOptionValue:r,getOptionSelected:v,onChange:m,disabled:O,placeholder:L,freeSolo:T=!0,width:c,helperText:I,disableClearable:y,fullWidth:u})=>{const i=f(),F=A(l=>a.find(s=>s.value===l)||l,[a]);return d(M,{name:o,control:x,rules:h,render:({field:l,fieldState:n})=>{const s=F(l.value);return d(w,{...l,value:s,freeSolo:T,autoSelect:!0,"data-testid":`${o}-autocomplete`,style:c?{width:c}:{minWidth:u?void 0:250},disabled:O,options:a,getOptionLabel:S,getOptionSelected:v,classes:{clearIndicator:i.clearIndicator},disableClearable:y,fullWidth:u,filterOptions:C,onChange:(p,e)=>{let t=null;e===null?t=null:typeof e=="string"?t=e:t=e.value;const g=r?r(t):t;m?.(g),l.onChange(g)},onInputChange:(p,e)=>{const t=r?r(e):e;m?.(t)},renderInput:p=>d(k,{...p,variant:"outlined",label:b,error:n.invalid,placeholder:L,FormHelperTextProps:{className:i.helperText},margin:"dense",className:i.noMargin,helperText:I??(n.error?n.error.message:null)}),ListboxComponent:N})}})};export{V as FormControlledAutocomplete,f as useStyles};
|
|
2
2
|
//# sourceMappingURL=FormControlledAutocomplete.esm.js.map
|
package/dist/components/FormControlledAutocomplete/FormControlledMultipleAutocomplete.esm.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as e}from"react/jsx-runtime";import{TextField as
|
|
1
|
+
import{jsx as e}from"react/jsx-runtime";import{TextField as z,FormControlLabel as L,Checkbox as k}from"@material-ui/core";import F from"@material-ui/icons/CheckBox";import I from"@material-ui/icons/CheckBoxOutlineBlank";import{Autocomplete as O}from"@material-ui/lab";import{Controller as W}from"react-hook-form";import{ListboxVirtualized as w}from"../ListboxVirtualized/ListboxVirtualized.esm.js";import{useStyles as y}from"./FormControlledAutocomplete.esm.js";const A=({name:i,rules:p,label:c,control:u,options:f,getOptionLabel:h,getOptionValue:m,onChange:b,disabled:C,placeholder:g,freeSolo:x=!0,width:s,helperText:v,disableClearable:S,fullWidth:d})=>{const a=y();return e(W,{name:i,control:u,rules:p,render:({field:l,fieldState:n})=>e(O,{...l,value:l.value,freeSolo:x,autoSelect:!0,"data-testid":`${i}-autocomplete`,style:s?{width:s}:{minWidth:d?void 0:250},disabled:C,options:f,getOptionLabel:h,classes:{clearIndicator:a.clearIndicator},disableClearable:S,fullWidth:d,multiple:!0,size:"small",renderInput:o=>e(z,{...o,variant:"outlined",label:c,error:n.invalid,placeholder:l.value?.length?"":g,FormHelperTextProps:{className:a.helperText},margin:"dense",className:a.noMargin,helperText:v??(n.error?n.error.message:null)}),renderOption:(o,{selected:t})=>e(L,{onClick:r=>r.preventDefault(),control:e(k,{icon:e(I,{fontSize:"small"}),checkedIcon:e(F,{fontSize:"small"}),checked:t}),label:o}),onChange:(o,t)=>{const r=m?t.map(T=>m(T)):t;b?.(r),l.onChange(r)},ListboxComponent:w})})};export{A as FormControlledMultipleAutocomplete};
|
|
2
2
|
//# sourceMappingURL=FormControlledMultipleAutocomplete.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as r,jsxs as
|
|
1
|
+
import{jsx as r,jsxs as i}from"react/jsx-runtime";import{useTheme as v,Typography as n}from"@material-ui/core";import{makeStyles as w}from"@material-ui/core/styles";import s from"@uiw/react-md-editor";import{Controller as T}from"react-hook-form";import c from"remark-gfm";import"../SoundcheckMarkdownContent/SoundcheckMarkdownContentDeprecated.esm.js";import{components as k}from"../SoundcheckMarkdownContent/ComponentRenders.esm.js";import{ALLOWED_HTML_TAGS as h}from"../SoundcheckMarkdownContent/SoundcheckMarkdownContentBUI.esm.js";const y=w(e=>({markdown:{whiteSpace:"pre-wrap",marginBottom:e.spacing(1)},container:{display:"flex",flexDirection:"column",gap:e.spacing(1)},helperText:{color:e.palette.grey[500]},errorText:{color:e.palette.error.main},errorBorder:{border:`1px solid ${e.palette.error.main}`}})),N=({name:e,control:u,label:m,description:d,disabled:a,rules:f,error:o,helperText:p,placeholder:x})=>{const g=v(),t=y();return r(T,{name:e,control:u,defaultValue:a?"No description provided.":"",rules:f,render:({field:l})=>i("div",{"data-color-mode":g.palette.type,className:t.container,children:[i("div",{children:[m&&r(n,{variant:"subtitle2",children:m}),d&&!a&&r(n,{variant:"caption",children:d})]}),i("div",{children:[a?r(s.Markdown,{className:t.markdown,source:l.value,allowedElements:h,remarkPlugins:[c]}):r(s,{textareaProps:{placeholder:x},value:l.value,className:o&&t.errorBorder,onChange:l.onChange,previewOptions:{allowedElements:h,remarkPlugins:[c],components:{details:k?.details}},"data-testid":`markdown-editor-${e}`}),(p||o)&&!a&&r(n,{variant:"caption",className:o?t.errorText:t.helperText,children:o?o.message:p})]})]})})};export{N as FormMarkdownInput};
|
|
2
2
|
//# sourceMappingURL=FormMarkdownInput.esm.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{jsx as m}from"react/jsx-runtime";import{makeStyles as
|
|
1
|
+
import{jsx as m}from"react/jsx-runtime";import{makeStyles as p}from"@material-ui/core";import{dump as a}from"js-yaml";import{useMemo as n}from"react";import{SoundcheckMarkdownContentDeprecated as i}from"../SoundcheckMarkdownContent/SoundcheckMarkdownContentDeprecated.esm.js";import"@backstage/core-components";import"react-markdown";import"rehype-raw";import"remark-gfm";import"../SoundcheckMarkdownContent/SoundcheckMarkdownContentBUI.esm.js";const d=p(o=>({markdownBox:{padding:0,margin:0,fontSize:o.typography.body2.fontSize,"& pre":{margin:0}},preBox:{padding:o.spacing(1),fontSize:o.typography.body2.fontSize,margin:0,background:o.palette.background.paper}})),s=({data:o,dataType:r="json"})=>{const e=d(),t=n(()=>r==="json"?JSON.stringify(o,null,2):r==="yaml"?a(o,{noRefs:!0}):"",[o,r]);return t?.length&&t.length>15e4?m("pre",{className:e.preBox,children:t}):m(i,{className:e.markdownBox,content:`\`\`\`${r}
|
|
2
2
|
${t}
|
|
3
3
|
\`\`\``})};export{s as FormattedPreview};
|
|
4
4
|
//# sourceMappingURL=FormattedPreview.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as r,jsx as e,Fragment as v}from"react/jsx-runtime";import{useEntityPresentation as R,EntityDisplayName as w}from"@backstage/plugin-catalog-react";import{Box as l,Typography as o}from"@material-ui/core";import{isEmpty as d}from"lodash";import{useMemo as c}from"react";import{useGroupHierarchy as B}from"../../hooks/heirarchy/useGroupHierarchy.esm.js";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
|
|
1
|
+
import{jsxs as r,jsx as e,Fragment as v}from"react/jsx-runtime";import{useEntityPresentation as R,EntityDisplayName as w}from"@backstage/plugin-catalog-react";import{Box as l,Typography as o}from"@material-ui/core";import{isEmpty as d}from"lodash";import{useMemo as c}from"react";import{useGroupHierarchy as B}from"../../hooks/heirarchy/useGroupHierarchy.esm.js";import{getAllOwnedEntityCount as O}from"../../utils/getAllOwnedEntityCount.esm.js";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 T}from"../FormControlledAutocomplete/ControlledAutocomplete.esm.js";import{LoadingIndicator as x}from"../LoadingIndicator/LoadingIndicator.esm.js";import{GroupHierarchyChip as C}from"./GroupHierarchyChip.esm.js";const S=({filteredGroupOptions:t,setSelectedGroup:s,selectedGroupRef:m})=>{const a=c(()=>t.map(n=>n.ref),[t]),h=c(()=>t.find(n=>n.ref===m)?.ref||null,[t,m]);return r(v,{children:[!d(t)&&t.length>=20&&e(l,{marginBottom:2,children:e(T,{options:a,onChange:s,value:h,autoSelect:!1,getOptionLabel:n=>t.find(f=>f.ref===n)?.name??n,placeholder:"Search groups"})}),!d(t)&&t.length<20&&t.map(({ref:n})=>e(C,{setSelectedGroup:s,groupEntityRef:n},n))]})},H=({groupEntityRef:t,selectedGroup:s,setSelectedGroup:m,groupOptions:a})=>{const{primaryTitle:h,secondaryTitle:n}=R(t),{isLoading:f,data:b}=B(t,{includeParent:!0}),i=b?.[t],y=c(()=>O(i),[i]),g=c(()=>{const u=i?.children??{};return Object.values(u).map(p=>({ref:p.entityRef,type:p.type}))},[i?.children]),G=c(()=>{if(d(g))return[];const u=new Set(g.map(p=>p.ref));return a.filter(p=>u.has(p.ref))},[g,a]),E=c(()=>{if(d(i?.parents))return[];const u=new Set(i?.parents??[]);return a.filter(p=>u.has(p.ref))},[i?.parents,a]);return r(l,{children:[r(l,{marginBottom:1,children:[e(o,{variant:"h6",children:e(w,{entityRef:t})}),e(o,{variant:"caption",children:n})]}),f&&r(l,{textAlign:"center",marginTop:2,marginBottom:2,children:[e(x,{}),e(l,{marginTop:2,children:e(o,{variant:"caption",children:"Loading Group Hierarchy"})})]}),i?.ownedEntityRefs&&r(l,{marginBottom:2,children:[e(o,{variant:"subtitle2",children:"Entity Ownership"}),r(o,{variant:"body2",children:[r("strong",{children:[h," directly owns:"]})," ",i.ownedEntityRefs.length," ",i.ownedEntityRefs.length===0?"Entity":"Entities"]}),r(o,{variant:"body2",children:[r("strong",{children:[h," and it's subgroups own:"]})," ",y," ",y===0?"Entity":"Entities"]})]}),!f&&r(v,{children:[r(l,{marginBottom:2,children:[e(o,{variant:"subtitle2",children:"Select Child Group"}),d(G)&&e(o,{variant:"body2",children:"No child groups"}),e(S,{filteredGroupOptions:G,setSelectedGroup:m,selectedGroupRef:s})]}),r(l,{marginBottom:2,children:[e(o,{variant:"subtitle2",children:"Select Parent Group"}),d(E)&&e(o,{variant:"body2",children:"No parent groups"}),e(S,{filteredGroupOptions:E,setSelectedGroup:m,selectedGroupRef:s})]})]})]})};export{H as GroupHierarchyGroupInfo};
|
|
2
2
|
//# sourceMappingURL=GroupHierarchyGroupInfo.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as m,Fragment as d,jsx as t}from"react/jsx-runtime";import{Button as G}from"@backstage/ui";import{RiFilter3Line as f}from"@remixicon/react";import{useState as l,useCallback as
|
|
1
|
+
import{jsxs as m,Fragment as d,jsx as t}from"react/jsx-runtime";import{Button as G}from"@backstage/ui";import{RiFilter3Line as f}from"@remixicon/react";import{useState as l,useCallback as s}from"react";import{usePreviousSelectedGroups as y}from"../GroupSelectorBUI/usePreviousSelectedGroups.esm.js";import{GroupHierarchySelectorDialog as S}from"./GroupHierarchySelectorDialog.esm.js";const h=({currentSelectedGroup:r,applyGroup:i})=>{const[n,e]=l(!1),[o,p]=l(""),{groupEntityRefs:u}=y(),c=s(()=>{r&&p(r),e(!0)},[r]),a=s(()=>{i(o),e(!1)},[i,o]);return m(d,{children:[t(G,{variant:"secondary",size:"small",iconStart:t(f,{}),onClick:c,children:"Group"}),t(S,{open:n,handleClose:()=>e(!1),handleApply:a,previousGroupEntityRefs:u,selectedGroup:o,setSelectedGroup:p})]})};export{h as GroupHierarchySelector};
|
|
2
2
|
//# sourceMappingURL=GroupHierarchySelector.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as r,jsxs as u}from"react/jsx-runtime";import{Box as i,Flex as y}from"@backstage/ui";import{makeStyles as g}from"@material-ui/core";import{sortBy as b,uniqBy as x,isEmpty as v}from"lodash";import{useMemo as s,useCallback as B}from"react";import{Virtualizer as k,ListLayout as L,ListBox as G,ListBoxItem as S}from"react-aria-components";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{useSearchName as w}from"../../hooks/useSearchName.esm.js";import"react-use/lib/useLocalStorage";import{useGroupOptions as N}from"../../hooks/groups/useGroupOptions.esm.js";import"../EmptyState/EmptyState.esm.js";import{EmptyStateBUI as $}from"../EmptyState/EmptyStateBUI.esm.js";import"@backstage/plugin-permission-react";import"@remixicon/react";import"../../routes.esm.js";import{LoadingTableSkeleton as C}from"../LoadingTableSkeleton/LoadingTableSkeleton.esm.js";const A=g(()=>({empty:{width:"36rem",margin:"var(--bui-space-4) 0"},listArea:{height:"16rem",width:"36rem",overflow:"auto",marginTop:"var(--bui-space-2)"},listBox:{padding:"var(--bui-space-2)","&:hover":{cursor:"pointer",backgroundColor:"var(--bui-bg-tint-hover)"}},listBoxSelected:{backgroundColor:"var(--bui-bg-tint)"}})),j=({searchTerm:d,selectRef:l,selectedRef:t})=>{const o=A(),{options:m,isLoading:a}=N(),p=s(()=>m.filter(e=>e.key==="My Groups").map(e=>({...e,key:`${e.ref}${e.ref===t?"-selectedGroup":""}`,id:e.ref})),[m,t]),n=s(()=>b(m.filter(e=>e.key==="All Groups").map(e=>({...e,key:`${e.ref}${e.ref===t?"-selectedGroup":""}`,id:e.ref})),e=>e.name.toLowerCase()),[m,t]),f=s(()=>x([...p,...n],"id"),[n,p]),c=w({items:f,searchTerm:d}),h=B(e=>{l(e.match(/-selectedGroup$/)?"":e)},[l]);return r(i,{children:r(i,{children:u(k,{layoutOptions:{padding:0,gap:2},layout:L,children:[a&&r(i,{className:o.listArea,children:r(C,{rowHeight:18,rowCount:8})}),v(c)&&!a?r(i,{className:o.empty,children:r($,{title:"No groups found.",body:"No groups found for the current selection."})}):r(G,{"aria-label":"Group List",items:c,className:o.listArea,selectionMode:"single",selectedKeys:t?[t]:void 0,onSelectionChange:e=>h(Object.values(e)[0]),children:e=>r(S,{textValue:e.name,className:`${o.listBox} ${e.ref===t?o.listBoxSelected:""}`,children:u(y,{justify:"between",children:[r(i,{children:e.name}),r(i,{children:e.type})]})})})]})})})};export{j as GroupSelectList};
|
|
2
|
+
//# sourceMappingURL=GroupSelectList.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsxs as a,jsx as e,Fragment as c}from"react/jsx-runtime";import{useApi as g}from"@backstage/core-plugin-api";import{entityPresentationApiRef as x}from"@backstage/plugin-catalog-react";import{Flex as h,Card as y,Text as s,TagGroup as R,Box as v,Button as p}from"@backstage/ui";import{makeStyles as S}from"@material-ui/core";import{RiUserLine as d}from"@remixicon/react";import{isEmpty as f}from"lodash";import{ListBox as b,ListBoxItem as C}from"react-aria-components";import{GroupTag as T}from"./GroupTag.esm.js";const u=S(()=>({historyArea:{width:"36rem",marginTop:"var(--bui-space-3)"},historyCard:{padding:"var(--bui-space-3)",maxHeight:"12rem",overflow:"auto"},historyItem:{marginBottom:"var(--bui-space-0_5)",display:"flex",alignItems:"center"}})),k=({groupRef:n,selectRef:i,parentRef:o,childRef:t})=>{const r=u(),l=g(x),m=l.forEntity(n);return a(C,{textValue:m.snapshot.primaryTitle,className:r.historyItem,children:[e(p,{iconStart:e(d,{}),variant:"tertiary",onClick:()=>i(n),style:{paddingLeft:0},children:m.snapshot.primaryTitle}),o&&a(c,{children:[e(s,{children:"child of"})," ",e(p,{iconStart:e(d,{}),variant:"tertiary",onClick:()=>i(o),children:l.forEntity(o).snapshot.primaryTitle})]}),t&&a(c,{children:[e(s,{children:"parent of"})," ",e(p,{iconStart:e(d,{}),variant:"tertiary",onClick:()=>i(t),children:l.forEntity(t).snapshot.primaryTitle})]})]})},A=({previouslySelectedGroups:n,history:i,selectRef:o})=>{const t=u();return a(h,{direction:"column",gap:"3",className:t.historyArea,children:[!f(n)&&a(y,{className:t.historyCard,children:[e(s,{weight:"bold",children:"Previously Selected"}),e(R,{"aria-label":"Previously Selected Groups",selectionMode:"single",children:n.filter(r=>!!r).map(r=>e(T,{groupRef:r,handleClick:o},r))})]}),e(y,{className:t.historyCard,children:e(h,{direction:"column",gap:"1",children:f(i)?e(v,{style:{textAlign:"center",padding:"3rem 0"},children:e(s,{variant:"body-large",children:"No group selection history"})}):a(c,{children:[e(s,{weight:"bold",children:"History"}),e(b,{"aria-label":"Selection History",children:i.map((r,l)=>e(k,{selectRef:o,groupRef:r.ref,parentRef:r.parent,childRef:r.child},`${r.ref}-${l}`))})]})})})]})};export{A as GroupSelectionHistory};
|
|
2
|
+
//# sourceMappingURL=GroupSelectionHistory.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsxs as r,jsx as e,Fragment as D}from"react/jsx-runtime";import{useApi as F}from"@backstage/core-plugin-api";import{entityPresentationApiRef as M,useEntityPresentation as O}from"@backstage/plugin-catalog-react";import{Button as w,Flex as p,TextField as I,ButtonIcon as U,Box as g,Card as $,Text as l,Skeleton as G,TagGroup as A}from"@backstage/ui";import{makeStyles as q}from"@material-ui/core";import{RiUserLine as z,RiSearchLine as J,RiHistoryLine as K}from"@remixicon/react";import{sortBy as N,isEmpty as C,uniq as H}from"lodash";import{useState as k,useCallback as Q,useMemo as S}from"react";import{DialogTrigger as V,Popover as W,Dialog as X}from"react-aria-components";import{useGroupHierarchy as Y}from"../../hooks/heirarchy/useGroupHierarchy.esm.js";import{getAllOwnedEntityCount as Z}from"../../utils/getAllOwnedEntityCount.esm.js";import{GroupSelectionHistory as _}from"./GroupSelectionHistory.esm.js";import{GroupSelectList as ee}from"./GroupSelectList.esm.js";import{GroupTag as P}from"./GroupTag.esm.js";import{useGroupHistory as re}from"./useGroupHistory.esm.js";import{usePreviousSelectedGroups as ie}from"./usePreviousSelectedGroups.esm.js";const E=q(()=>({dialog:{padding:"var(--bui-space-3)",backgroundColor:"var(--bui-bg-surface-1)",border:"1px solid var(--bui-border)",borderRadius:"var(--bui-radius-2)"},buttonArea:{marginTop:"var(--bui-space-2)"},selectedCard:{padding:"var(--bui-space-3)",gap:"var(--bui-space-2)",width:"36rem",margin:"var(--bui-space-3) 0"},relatedGroups:{marginTop:"var(--bui-space-2)"},tagArea:{height:"8rem",width:"16rem",overflow:"auto"}})),oe=({groupRef:o,onSelect:b})=>{const d=E(),{primaryTitle:i,secondaryTitle:f}=O(o),{isLoading:n,data:v}=Y(o,{includeParent:!0}),t=v?.[o],m=S(()=>Z(t),[t]),h=S(()=>{const a=t?.children??{};return N(Object.values(a).map(c=>({ref:c.entityRef,type:c.type})),"ref")},[t?.children]),u=S(()=>C(h)?[]:H(h.map(a=>a.ref)),[h]),y=S(()=>C(t?.parents)?[]:N(H(t.parents),a=>a),[t?.parents]);return r(g,{children:[r($,{className:d.selectedCard,children:[e(l,{variant:"body-medium",color:"secondary",children:"Currently Selected"}),r(p,{direction:"column",gap:"0",children:[e(l,{variant:"body-large",weight:"bold",children:i}),e(l,{variant:"body-medium",color:"secondary",children:f})]}),r(p,{gap:"0",direction:"column",children:[r(p,{gap:"1",align:"center",children:[r(l,{variant:"body-medium",children:[i," directly owns:"]}),n?e(G,{height:"1rem"}):r(l,{variant:"body-medium",color:"secondary",children:[u.length," ",u.length===1?"entity":"entities"]})]}),r(p,{gap:"1",align:"center",children:[r(l,{variant:"body-medium",children:[i," and it's subgroups owns:"]}),n?e(G,{height:"1rem"}):r(l,{variant:"body-medium",color:"secondary",children:[m," ",m===1?"entity":"entities"]})]})]})]}),r(p,{className:d.relatedGroups,children:[r(g,{style:{flex:1},children:[e(l,{color:"secondary",children:"Parent Groups"}),r(g,{className:d.tagArea,children:[n&&e(G,{width:"10rem"}),!n&&C(y)?e(l,{variant:"body-small",children:"No parent groups."}):e(A,{selectionMode:"single","aria-label":"Parent Groups",children:y.map(a=>e(P,{groupRef:a,handleClick:c=>b(c,o)},`${a}-parent`))})]})]}),r(g,{style:{flex:1},children:[e(l,{color:"secondary",children:"Child Groups"}),r(g,{className:d.tagArea,children:[n&&e(G,{width:"10rem"}),!n&&C(u)?e(l,{variant:"body-small",children:"No child groups."}):e(A,{selectionMode:"single","aria-label":"Child Groups",children:u.map(a=>e(P,{groupRef:a,handleClick:c=>b(c,void 0,o)},`${a}-child`))})]})]})]})]})},te=({selectedGroupRef:o,updateGroupRef:b})=>{const d=E(),[i,f]=k(o),[n,v]=k(""),[t,m]=k(!1),h=F(M),u=o?h.forEntity(o).snapshot.primaryTitle:void 0,{addGroupHistory:y,history:a}=re(),{addGroup:c,groupEntityRefs:B}=ie(),R=Q((s,x,T)=>{f(s),v(""),y(s,x,T)},[y]),L=!t&&(!i||n),j=!t&&i&&!n;return r(V,{onOpenChange:s=>{s&&o&&o!==i&&f(o),t&&m(!1)},children:[e(w,{variant:"secondary",iconStart:e(z,{}),children:u??"Select Group"}),e(W,{placement:"bottom right",children:e(X,{className:d.dialog,children:({close:s})=>{const x=()=>{i&&i!==o&&(b(i),c(i)),s()};return r(D,{children:[r(p,{children:[e(I,{placeholder:"Search Groups",value:n,onChange:v,size:"small",icon:e(J,{}),"aria-label":"Search Groups"}),e(U,{"aria-label":"Show History",variant:"secondary",icon:e(K,{}),onClick:()=>m(!t)})]}),t&&e(_,{previouslySelectedGroups:B??[],history:a??[],selectRef:T=>{R(T),m(!1)}}),L&&e(ee,{searchTerm:n,selectedRef:i,selectRef:R}),j&&e(oe,{groupRef:i,onSelect:R}),r(p,{className:d.buttonArea,justify:"end",children:[e(w,{onClick:s,variant:"tertiary",children:"Close"}),e(w,{onClick:x,isDisabled:!i,children:"Apply"})]})]})}})})]})};export{te as GroupSelectorBUI};
|
|
2
|
+
//# sourceMappingURL=GroupSelectorBUI.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as o}from"react/jsx-runtime";import{useEntityPresentation as e}from"@backstage/plugin-catalog-react";import{Tag as m}from"@backstage/ui";import{RiUserLine as n}from"@remixicon/react";const p=({groupRef:r,handleClick:i})=>{const{primaryTitle:t}=e(r);return o(m,{icon:o(n,{}),size:"medium",onClick:()=>i(r),children:t})};export{p as GroupTag};
|
|
2
|
+
//# sourceMappingURL=GroupTag.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{useCallback as p}from"react";import u from"react-use/lib/useLocalStorage";const f=50,h=l=>{const[r,s]=u("soundcheck-group-selection-history",[]);r?.some(o=>!o.ref)&&s(r.filter(o=>!!o.ref));const i=p((o,c,n)=>{if(!o)return;const t=r??[],e=t[0];e&&e.ref===o&&e.child===c&&e.parent===n||(t.unshift({ref:o,parent:n,child:c}),t.length>f&&t.pop(),s(t))},[r,s]);return{history:r,addGroupHistory:i}};export{h as useGroupHistory};
|
|
2
|
+
//# sourceMappingURL=useGroupHistory.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{useCallback as c}from"react";import p from"react-use/lib/useLocalStorage";const u=10,i=l=>{const[s,t]=p("soundcheck-previously-selected-groups",[]);s?.some(o=>!o)&&t(s.filter(o=>!!o));const n=c(o=>{const e=s??[],r=e.indexOf(o);r>-1&&e.splice(r,1),e.unshift(o),e.length>u&&e.pop(),t(e)},[s,t]);return{groupEntityRefs:s,addGroup:n}};export{i as usePreviousSelectedGroups};
|
|
2
|
+
//# sourceMappingURL=usePreviousSelectedGroups.esm.js.map
|