@spotify/backstage-plugin-soundcheck 0.12.9 → 0.12.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (178) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/alpha/package.json +2 -2
  3. package/dist/api.esm.js +1 -1
  4. package/dist/components/CacheConfig/CacheConfigComponent.esm.js +1 -1
  5. package/dist/components/CacheConfig/utils.esm.js +1 -1
  6. package/dist/components/CampaignsTab/CampaignDetailsPage/CampaignChecks.esm.js +1 -1
  7. package/dist/components/CampaignsTab/CampaignDetailsPage/CampaignDetailsPage.esm.js +1 -1
  8. package/dist/components/CampaignsTab/CampaignDetailsPage/CampaignResultsTable.esm.js +1 -1
  9. package/dist/components/CampaignsTab/CampaignListPage/CampaignListPage.esm.js +1 -1
  10. package/dist/components/CampaignsTab/CampaignListPage/CampaignSummaryCard.esm.js +1 -1
  11. package/dist/components/CampaignsTab/CampaignListPage/useArchiveConfirmationModal.esm.js +1 -1
  12. package/dist/components/CampaignsTab/MutateCampaignsViews/CampaignForm.esm.js +1 -1
  13. package/dist/components/CampaignsTab/MutateCampaignsViews/EditCampaignView.esm.js +1 -1
  14. package/dist/components/CampaignsTab/MutateCampaignsViews/Steps/CampaignDetailsStep/CampaignDescriptionField.esm.js +1 -1
  15. package/dist/components/CampaignsTab/MutateCampaignsViews/Steps/CampaignDetailsStep/CampaignNameField.esm.js +1 -1
  16. package/dist/components/CampaignsTab/MutateCampaignsViews/Steps/CampaignDetailsStep/CampaignOwnerField.esm.js +1 -1
  17. package/dist/components/CampaignsTab/MutateCampaignsViews/Steps/CampaignDetailsStep/CampaignScheduleField/CampaignScheduleField.esm.js +1 -1
  18. package/dist/components/CampaignsTab/MutateCampaignsViews/Steps/CampaignDetailsStep/CampaignSupportChannelField.esm.js +1 -1
  19. package/dist/components/CampaignsTab/MutateCampaignsViews/Steps/CampaignMilestonesStep.esm.js +1 -1
  20. package/dist/components/CampaignsTab/MutateCampaignsViews/Steps/CampaignTrackStep.esm.js +1 -1
  21. package/dist/components/CampaignsTab/MutateCampaignsViews/hooks/utils.esm.js +1 -1
  22. package/dist/components/CertificationAccordion/CertificationAccordion.esm.js +1 -1
  23. package/dist/components/CertificationSidebar/CertificationLevel.esm.js +1 -1
  24. package/dist/components/CertificationSidebar/CertificationSidebar.esm.js +1 -1
  25. package/dist/components/CertificationSidebar/Check.esm.js +1 -1
  26. package/dist/components/CertificationSidebar/CheckResultSummaryList.esm.js +1 -1
  27. package/dist/components/CertificationsPage/CertificationTab.esm.js +1 -1
  28. package/dist/components/CertificationsPage/CertificationTabs.esm.js +1 -1
  29. package/dist/components/CertificationsPage/CertificationsPage.esm.js +1 -1
  30. package/dist/components/CertificationsPage/Playlist/PlaylistProgress.esm.js +1 -1
  31. package/dist/components/Charts/BarChart/GroupPassRateHistoryBarChart.esm.js +1 -1
  32. package/dist/components/Charts/BarChart/TrackSummaryBarChart.esm.js +1 -1
  33. package/dist/components/Charts/ChartWrapper/ChartWrapper.esm.js +1 -1
  34. package/dist/components/Charts/LineChart/EntityPassRateHistoryLineChart.esm.js +1 -1
  35. package/dist/components/Charts/LineChart/TrackPassRateHistoryLineChart.esm.js +1 -1
  36. package/dist/components/CheckCard/CheckCard.esm.js +1 -1
  37. package/dist/components/CheckDetails/ResultStateBox.esm.js +1 -1
  38. package/dist/components/CheckHistoryChartCard/CheckHistoryChartCard.esm.js +1 -1
  39. package/dist/components/CheckIcon/CheckIcon.esm.js +1 -1
  40. package/dist/components/CheckPage/CheckEntitiesTable/CheckEntitiesTable.esm.js +2 -0
  41. package/dist/components/CheckPage/CheckEntitiesTable/columns.esm.js +2 -0
  42. package/dist/components/CheckPage/CheckEntitiesTable/utils.esm.js +2 -0
  43. package/dist/components/CheckPage/CheckInsightsPage.esm.js +2 -0
  44. package/dist/components/CheckPage/CheckPage.esm.js +1 -1
  45. package/dist/components/CheckPage/CheckStatusBar.esm.js +2 -0
  46. package/dist/components/CheckPage/CheckStatusHistoryChart.esm.js +2 -0
  47. package/dist/components/CheckPage/CheckStatusTable.esm.js +2 -0
  48. package/dist/components/CheckPage/FilterBar/FilterBar.esm.js +2 -0
  49. package/dist/components/CheckPage/StatusRow.esm.js +2 -0
  50. package/dist/components/CheckPage/utils.esm.js +2 -0
  51. package/dist/components/ChecksErrors/ChecksErrors.esm.js +1 -1
  52. package/dist/components/ChecksPage/CheckListPage/CheckListPage.esm.js +1 -1
  53. package/dist/components/ChecksPage/CheckListPage/CheckMetadata.esm.js +1 -1
  54. package/dist/components/ChecksPage/CheckListPage/CheckSummaryCard.esm.js +1 -1
  55. package/dist/components/ChecksPage/MutateCheckViews/CheckForm/Steps/CheckDetailsStep.esm.js +1 -1
  56. package/dist/components/ChecksPage/MutateCheckViews/FormFields/CheckNameInput/CheckNameInput.esm.js +1 -1
  57. package/dist/components/ChecksPage/MutateCheckViews/FormFields/RuleInput/Conditions/ControlledAutocomplete.esm.js +1 -1
  58. package/dist/components/ChecksPage/MutateCheckViews/FormFields/RuleInput/Conditions/RuleConditionInput.esm.js +1 -1
  59. package/dist/components/ChecksPage/MutateCheckViews/FormFields/RuleInput/Conditions/useRuleOptions.esm.js +1 -1
  60. package/dist/components/ChecksPage/MutateCheckViews/FormFields/RuleInput/RuleInputBox.esm.js +1 -1
  61. package/dist/components/ChecksPage/MutateCheckViews/FormFields/RuleInput/useRuleInputHandlers.esm.js +1 -1
  62. package/dist/components/ChecksPage/MutateCheckViews/FormFields/TeamDetailsInput/TeamDetailsInput.esm.js +1 -1
  63. package/dist/components/ChecksPage/MutateCheckViews/utils/checkFormUtils.esm.js +1 -1
  64. package/dist/components/CollectorPage/CollectorPage.esm.js +1 -1
  65. package/dist/components/CollectorPage/Configurators/Configurator.esm.js +1 -1
  66. package/dist/components/CollectorPage/Configurators/Github/FactCollectionConfig.esm.js +1 -1
  67. package/dist/components/CollectorPage/Configurators/Github/utils.esm.js +1 -1
  68. package/dist/components/CollectorsPage/CollectorListPage/CollectorListPage.esm.js +1 -1
  69. package/dist/components/CollectorsPage/CollectorListPage/CollectorLogo.esm.js +1 -1
  70. package/dist/components/CollectorsPage/CollectorListPage/CollectorSummaryCard.esm.js +1 -1
  71. package/dist/components/DraggableChip/DraggableChip.esm.js +1 -1
  72. package/dist/components/DroppableInput/DroppableInput.esm.js +1 -1
  73. package/dist/components/EditTrackPage/EditTrackPage.esm.js +1 -1
  74. package/dist/components/EmptyState/EmptyState.esm.js +1 -1
  75. package/dist/components/EntityContent/EntityContent.esm.js +1 -1
  76. package/dist/components/EntityPassRateCard/EntityPassRateCard.esm.js +1 -1
  77. package/dist/components/EntitySoundcheckCard/Card.esm.js +1 -1
  78. package/dist/components/Filter/EntityAutocompletePicker.esm.js +1 -1
  79. package/dist/components/Filter/FilterComponent.esm.js +1 -1
  80. package/dist/components/Filter/FilterPreviewTable/FilterPreviewTable.esm.js +1 -1
  81. package/dist/components/Filter/utils.esm.js +1 -1
  82. package/dist/components/FormControlledSelect/FormControlledSelect.esm.js +1 -1
  83. package/dist/components/FormFilterSection/FormFilterSection.esm.js +1 -1
  84. package/dist/components/Frequency/FrequencyComponent.esm.js +1 -1
  85. package/dist/components/Frequency/util.esm.js +1 -1
  86. package/dist/components/GroupPassRateCard/GroupPassRateCard.esm.js +1 -1
  87. package/dist/components/GroupSelector/GroupSelector.esm.js +1 -1
  88. package/dist/components/LevelCard/LevelCard.esm.js +1 -1
  89. package/dist/components/LevelCard/LevelTooltip.esm.js +1 -1
  90. package/dist/components/LevelUpParty/LevelUpParty.esm.js +1 -1
  91. package/dist/components/LoadingIndicator/LoadingIndicator.esm.js +1 -1
  92. package/dist/components/MultiSelectFilter/MultiSelectFilter.esm.js +1 -1
  93. package/dist/components/OverviewPage/CampaignRow/CampaignRow.esm.js +1 -1
  94. package/dist/components/OverviewPage/CampaignRow/utils.esm.js +1 -1
  95. package/dist/components/OverviewPage/OverviewPageContent.esm.js +1 -1
  96. package/dist/components/OverviewPage/OverviewTabs.esm.js +1 -1
  97. package/dist/components/OverviewPage/TableContent/TableContent.esm.js +1 -1
  98. package/dist/components/OverviewPage/TableContent/VirtualTableContent.esm.js +1 -1
  99. package/dist/components/Pagination/CursorPagination.esm.js +1 -1
  100. package/dist/components/Pagination/Pagination.esm.js +1 -1
  101. package/dist/components/PassRateGrid/PassRateGrid.esm.js +1 -1
  102. package/dist/components/PassRateGrid/PassRateMetadata.esm.js +1 -1
  103. package/dist/components/ResultsTable/CheckCell/CheckCell.esm.js +1 -1
  104. package/dist/components/ResultsTable/HighestLevelBadge.esm.js +1 -1
  105. package/dist/components/ResultsTable/ProgramCheckIndicator.esm.js +1 -1
  106. package/dist/components/ResultsTable/ProgramCheckRow.esm.js +1 -1
  107. package/dist/components/ResultsTable/ProgramTitleRow.esm.js +1 -1
  108. package/dist/components/ResultsTable/ResultsTableFooter.esm.js +1 -1
  109. package/dist/components/ResultsTable/skeletons/ResultsTableSkeleton.esm.js +1 -1
  110. package/dist/components/ResultsTable/virtualized/Row.esm.js +1 -1
  111. package/dist/components/ResultsTable/virtualized/VirtualizedResultsTable.esm.js +1 -1
  112. package/dist/components/Router.esm.js +1 -1
  113. package/dist/components/RoutingPage/RoutingPage.esm.js +1 -1
  114. package/dist/components/SearchBar/SearchBar.esm.js +1 -1
  115. package/dist/components/SearchFilters/SearchFilters.esm.js +1 -1
  116. package/dist/components/SummaryCard/SummaryCard.esm.js +1 -1
  117. package/dist/components/TechHealth/Filters/FacetFilter.esm.js +1 -1
  118. package/dist/components/TechHealth/Filters/FilterProvider.esm.js +1 -1
  119. package/dist/components/TechHealth/Filters/Filters.esm.js +1 -1
  120. package/dist/components/TechHealth/Filters/FiltersSection.esm.js +1 -1
  121. package/dist/components/TechHealth/Filters/useFacetOptions.esm.js +1 -1
  122. package/dist/components/TechHealth/Filters/utils.esm.js +1 -1
  123. package/dist/components/TechHealth/TechHealth.esm.js +1 -1
  124. package/dist/components/TechHealthTabs/CampaignResultsTab/CampaignResultsTab.esm.js +1 -1
  125. package/dist/components/TechHealthTabs/CheckResultsTab/CheckResultsTab.esm.js +1 -1
  126. package/dist/components/TechHealthTabs/CheckResultsTab/CheckTrendColumn.esm.js +1 -1
  127. package/dist/components/TechHealthTabs/EntityResultsTab/EntityResultsTab.esm.js +1 -1
  128. package/dist/components/TechHealthTabs/EntityResultsTab/EntityTrendColumn.esm.js +1 -1
  129. package/dist/components/TechHealthTabs/GroupResultsTab/GroupResultsTab.esm.js +1 -1
  130. package/dist/components/TechHealthTabs/GroupResultsTab/GroupTrendColumn.esm.js +1 -1
  131. package/dist/components/TechHealthTabs/NameColumn.esm.js +1 -1
  132. package/dist/components/TechHealthTabs/OwnerColumn.esm.js +1 -1
  133. package/dist/components/TechHealthTabs/PassRateTabHeader.esm.js +1 -1
  134. package/dist/components/TechHealthTabs/TechHealthExportFunctions.esm.js +1 -1
  135. package/dist/components/TechHealthTabs/TrackResultsTab/TrackLevelTrendColumn.esm.js +1 -1
  136. package/dist/components/TechHealthTabs/TrackResultsTab/TrackResultsTab.esm.js +1 -1
  137. package/dist/components/TechHealthTabs/techHealthTabUtils.esm.js +1 -1
  138. package/dist/components/TrackForm/Steps/LevelsStep/ChecksSection/ChecksSection.esm.js +1 -1
  139. package/dist/components/TrackForm/Steps/LevelsStep/LevelsSection/LevelChipsSection.esm.js +1 -1
  140. package/dist/components/TrackForm/Steps/LevelsStep/LevelsSection/LevelsSection.esm.js +1 -1
  141. package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackDescriptionInput/TrackDescriptionInput.esm.js +1 -1
  142. package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackDetailsStep.esm.js +1 -1
  143. package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackDocumentationUrlInput/TrackDocumentationUrlInput.esm.js +1 -1
  144. package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackNameInput/TrackNameInput.esm.js +1 -1
  145. package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackOwnerSelect/TrackOwnerSelect.esm.js +1 -1
  146. package/dist/components/TrackForm/utils/useTrackForm.esm.js +1 -1
  147. package/dist/components/TrackHistoryChartCard/TrackHistoryChartCard.esm.js +1 -1
  148. package/dist/components/TrackPage/FilterBar/FilterBar.esm.js +1 -1
  149. package/dist/components/TrackPage/TrackEntitiesTable/TrackEntitiesTable.esm.js +1 -1
  150. package/dist/components/TrackPage/TrackEntitiesTable/TrackStatusChip.esm.js +1 -1
  151. package/dist/components/TrackPage/TrackEntitiesTable/columns.esm.js +1 -1
  152. package/dist/components/TrackPage/TrackEntitiesTable/utils.esm.js +1 -1
  153. package/dist/components/TrackPage/TrackHistoryChart.esm.js +1 -1
  154. package/dist/components/TrackPage/TrackLevelsChart.esm.js +1 -1
  155. package/dist/components/TrackPage/TrackPage.esm.js +1 -1
  156. package/dist/components/TracksPage/TrackListPage/TrackListPage.esm.js +1 -1
  157. package/dist/components/TracksPage/TrackListPage/TrackMetadata.esm.js +1 -1
  158. package/dist/graphql/generated/index.esm.js +47 -27
  159. package/dist/hooks/aggregations/useAggregatedTrackPassRateTrend.esm.js +1 -1
  160. package/dist/hooks/aggregations/useCheckStatus.esm.js +1 -1
  161. package/dist/hooks/campaigns/useGetCampaigns.esm.js +1 -1
  162. package/dist/hooks/catalog/useGetEntityFacets.esm.js +1 -1
  163. package/dist/hooks/certifications/useProgramOverviewForOwner.esm.js +1 -1
  164. package/dist/hooks/checks/useCheckDetails.esm.js +1 -1
  165. package/dist/hooks/checks/useExecuteCheck.esm.js +2 -0
  166. package/dist/hooks/entities/useCheckEntities.esm.js +2 -0
  167. package/dist/hooks/entities/useEntityRefsForUser.esm.js +1 -1
  168. package/dist/hooks/facets/useFacetFilters.esm.js +1 -1
  169. package/dist/hooks/graphqlKeys.esm.js +1 -1
  170. package/dist/hooks/groups/useAllGroups.esm.js +1 -1
  171. package/dist/hooks/groups/useUsersGroupClaims.esm.js +1 -1
  172. package/dist/hooks/tracks/useGetAllTracks.esm.js +1 -1
  173. package/dist/hooks/tracks/useGetChecksMap.esm.js +1 -1
  174. package/dist/images/k8s_blue.svg +108 -0
  175. package/dist/images/k8s_white.svg +108 -0
  176. package/dist/routes.esm.js +1 -1
  177. package/dist/text.esm.js +1 -1
  178. package/package.json +26 -19
@@ -1,2 +1,2 @@
1
- import{MarkdownContent as b}from"@backstage/core-components";import{useRouteRef as N}from"@backstage/core-plugin-api";import{usePermission as v}from"@backstage/plugin-permission-react";import{makeStyles as k,CardContent as g,CardHeader as x,Typography as f,Divider as I,CardActions as S,Button as T}from"@material-ui/core";import{soundcheckCollectorUpdatePermission as $}from"@spotify/backstage-plugin-soundcheck-common";import e from"react";import{useNavigate as A}from"react-router-dom";import{collectorDetailsRouteRef as B}from"../../../routes.esm.js";import{useSummaryCardStyles as L,Card as M}from"../../SummaryCard/SummaryCard.esm.js";import{hasLogo as R,CollectorLogo as D}from"./CollectorLogo.esm.js";const H=k(o=>({cardContent:{flex:1,paddingTop:o.spacing(1)},logoHeader:{paddingBottom:0,flex:0},headerContent:{display:"flex",alignItems:"center",height:o.spacing(5),marginBottom:o.spacing(1.5)},headerTypography:{marginBottom:0}})),i=["github"],P=({collector:o})=>{const{description:c,id:t,isConfigurable:m,isEditable:s,name:d}=o,{loading:p,allowed:u}=v({permission:$}),C=A(),y=N(B),r=L(),n=H(),h=i.includes(t)&&m&&s&&!p&&u,E=()=>{C(y({collectorId:t}))};let a;p||!u?a="You don't have permissions to configure this collector.":m?s?i.includes(t)||(a="Collector can only be configured through YAML"):a="Collector is already configured via YAML and cannot be configured through the UI.":a="Collector is not configurable.";const l=d!=null?d:t;return e.createElement(M,{"data-testid":t,className:r.card},R(t)?e.createElement(g,{className:n.logoHeader},e.createElement(D,{collectorId:t})):e.createElement(x,{title:l,titleTypographyProps:{className:`${r.summaryName} ${n.headerTypography}`},classes:{content:n.headerContent}}),e.createElement(g,{className:n.cardContent},e.createElement(f,{variant:"body1",component:"div"},e.createElement(b,{className:r.summaryDescription,content:c!=null?c:""})),e.createElement(f,{color:"textSecondary",variant:"body2"},a)),h&&e.createElement("div",null,e.createElement(I,null),e.createElement(S,{className:r.actionArea},e.createElement(T,{"aria-label":`${l}-edit`,"data-testid":`${l}-button`,size:"medium",color:"primary",role:"link",onClick:E,className:r.button},"Configure"))))};export{P as CollectorSummaryCard,i as ConfigurableCollectorIds};
1
+ import{MarkdownContent as b}from"@backstage/core-components";import{useRouteRef as N}from"@backstage/core-plugin-api";import{usePermission as v}from"@backstage/plugin-permission-react";import{makeStyles as k,CardContent as p,CardHeader as x,Typography as u,Divider as I,CardActions as S,Button as T}from"@material-ui/core";import{soundcheckCollectorUpdatePermission as $}from"@spotify/backstage-plugin-soundcheck-common";import e from"react";import{useNavigate as A}from"react-router-dom";import{collectorDetailsRouteRef as B}from"../../../routes.esm.js";import{useSummaryCardStyles as L,Card as M}from"../../SummaryCard/SummaryCard.esm.js";import{hasLogo as R,CollectorLogo as D}from"./CollectorLogo.esm.js";const H=k(o=>({cardContent:{flex:1,paddingTop:o.spacing(1)},logoHeader:{paddingBottom:0,flex:0},headerContent:{display:"flex",alignItems:"center",height:o.spacing(5),marginBottom:o.spacing(1.5)},headerTypography:{marginBottom:0}})),i=["github"],P=({collector:o})=>{const{description:g,id:t,isConfigurable:c,isEditable:m,name:f}=o,{loading:s,allowed:d}=v({permission:$}),C=A(),y=N(B),r=L(),n=H(),h=i.includes(t)&&c&&m&&!s&&d,E=()=>{C(y({collectorId:t}))};let a;s||!d?a="You don't have permissions to configure this collector.":c?m?i.includes(t)||(a="Collector can only be configured through YAML"):a="Collector is already configured via YAML and cannot be configured through the UI.":a="Collector is not configurable.";const l=f??t;return e.createElement(M,{"data-testid":t,className:r.card},R(t)?e.createElement(p,{className:n.logoHeader},e.createElement(D,{collectorId:t})):e.createElement(x,{title:l,titleTypographyProps:{className:`${r.summaryName} ${n.headerTypography}`},classes:{content:n.headerContent}}),e.createElement(p,{className:n.cardContent},e.createElement(u,{variant:"body1",component:"div"},e.createElement(b,{className:r.summaryDescription,content:g??""})),e.createElement(u,{color:"textSecondary",variant:"body2"},a)),h&&e.createElement("div",null,e.createElement(I,null),e.createElement(S,{className:r.actionArea},e.createElement(T,{"aria-label":`${l}-edit`,"data-testid":`${l}-button`,size:"medium",color:"primary",role:"link",onClick:E,className:r.button},"Configure"))))};export{P as CollectorSummaryCard,i as ConfigurableCollectorIds};
2
2
  //# sourceMappingURL=CollectorSummaryCard.esm.js.map
@@ -1,2 +1,2 @@
1
- import{Chip as C,Tooltip as g}from"@material-ui/core";import f from"@material-ui/icons/DragIndicator";import x from"@material-ui/icons/Visibility";import e from"react";import{useDrag as M}from"react-dnd";import{useContextMenu as h}from"../../hooks/useContextMenu.esm.js";import{ContextMenu as E}from"../ContextMenu/ContextMenu.esm.js";import{useChipStyles as b}from"./chipStyles.esm.js";const y=({chip:t,disabled:r,onContextMenuAdd:o})=>{var n;const[D,l]=M(()=>({type:"chip",item:t,collect:d=>({isDragging:d.isDragging()})})),m=b(),a=["Add check"],{contextMenu:i,onContextMenu:c,onContextMenuClose:s,onContextMenuClick:p}=h(),u=()=>{p(),o==null||o(t)};return e.createElement(e.Fragment,null,e.createElement(C,{ref:l,label:t.name,className:m.chip,icon:e.createElement(f,{"data-testid":"drag-indicator-icon"}),disabled:r,onDelete:()=>{},onContextMenu:o?c:void 0,deleteIcon:e.createElement(g,{title:(n=t.description)!=null?n:""},e.createElement(x,{"data-testid":"visibility-icon"}))}),e.createElement(E,{x:i.mouseX,y:i.mouseY,menuItems:a,onClose:s,onClick:u}))};export{y as DraggableChip};
1
+ import{Chip as u,Tooltip as C}from"@material-ui/core";import g from"@material-ui/icons/DragIndicator";import x from"@material-ui/icons/Visibility";import e from"react";import{useDrag as f}from"react-dnd";import{useContextMenu as M}from"../../hooks/useContextMenu.esm.js";import{ContextMenu as h}from"../ContextMenu/ContextMenu.esm.js";import{useChipStyles as b}from"./chipStyles.esm.js";const D=({chip:t,disabled:i,onContextMenuAdd:o})=>{const[E,r]=f(()=>({type:"chip",item:t,collect:d=>({isDragging:d.isDragging()})})),m=b(),l=["Add check"],{contextMenu:n,onContextMenu:c,onContextMenuClose:a,onContextMenuClick:s}=M(),p=()=>{s(),o?.(t)};return e.createElement(e.Fragment,null,e.createElement(u,{ref:r,label:t.name,className:m.chip,icon:e.createElement(g,{"data-testid":"drag-indicator-icon"}),disabled:i,onDelete:()=>{},onContextMenu:o?c:void 0,deleteIcon:e.createElement(C,{title:t.description??""},e.createElement(x,{"data-testid":"visibility-icon"}))}),e.createElement(h,{x:n.mouseX,y:n.mouseY,menuItems:l,onClose:a,onClick:p}))};export{D as DraggableChip};
2
2
  //# sourceMappingURL=DraggableChip.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as y,Chip as M}from"@material-ui/core";import D from"@material-ui/icons/DragIndicator";import r,{useState as E}from"react";import{useDrop as S}from"react-dnd";import{useContextMenu as B}from"../../hooks/useContextMenu.esm.js";import{ContextMenu as N}from"../ContextMenu/ContextMenu.esm.js";import{useChipStyles as O}from"../DraggableChip/chipStyles.esm.js";const z=y(e=>({input:{border:`1px solid ${e.palette.divider}`,borderRadius:4,padding:e.spacing(1),minHeight:80},hoverBackground:{background:e.palette.action.hover},normalBackground:{background:e.palette.background.default},error:{border:"1px solid red"},chipContainer:{display:"flex",flexDirection:"column",fontSize:e.typography.body1.fontSize,color:e.palette.text.primary,gap:e.spacing(.75)}})),I=({chips:e,onDelete:a,onDrop:i,error:c=!1,placeholder:m="",disabled:s})=>{const o=z(),d=O(),[{isOver:u},g]=S(()=>({accept:"chip",drop:t=>{i(t)},collect:t=>({isOver:t.isOver()})}),[i]),h=["Remove check"],{contextMenu:l,onContextMenu:x,onContextMenuClose:C,onContextMenuClick:f}=B(),[p,b]=E(null),k=(t,n)=>{x(t),b(n)},v=()=>{f(),p&&a(p)};return r.createElement("div",{ref:g,className:`${o.input} ${c?o.error:""} ${u?o.hoverBackground:o.normalBackground}`,"data-testid":"droppable-input"},r.createElement("div",{className:o.chipContainer},e!=null&&e.length?e.map(t=>r.createElement(M,{key:t.id,label:t.name,className:d.chip,icon:r.createElement(D,null),style:{cursor:"pointer"},onDelete:()=>a(t),disabled:s,onContextMenu:n=>k(n,t)})):m),r.createElement(N,{x:l.mouseX,y:l.mouseY,menuItems:h,onClose:C,onClick:v}))};export{I as DroppableInput};
1
+ import{makeStyles as y,Chip as M}from"@material-ui/core";import D from"@material-ui/icons/DragIndicator";import r,{useState as E}from"react";import{useDrop as S}from"react-dnd";import{useContextMenu as B}from"../../hooks/useContextMenu.esm.js";import{ContextMenu as N}from"../ContextMenu/ContextMenu.esm.js";import{useChipStyles as O}from"../DraggableChip/chipStyles.esm.js";const z=y(e=>({input:{border:`1px solid ${e.palette.divider}`,borderRadius:4,padding:e.spacing(1),minHeight:80},hoverBackground:{background:e.palette.action.hover},normalBackground:{background:e.palette.background.default},error:{border:"1px solid red"},chipContainer:{display:"flex",flexDirection:"column",fontSize:e.typography.body1.fontSize,color:e.palette.text.primary,gap:e.spacing(.75)}})),I=({chips:e,onDelete:a,onDrop:i,error:c=!1,placeholder:m="",disabled:s})=>{const o=z(),d=O(),[{isOver:u},h]=S(()=>({accept:"chip",drop:t=>{i(t)},collect:t=>({isOver:t.isOver()})}),[i]),g=["Remove check"],{contextMenu:l,onContextMenu:x,onContextMenuClose:C,onContextMenuClick:f}=B(),[p,b]=E(null),k=(t,n)=>{x(t),b(n)},v=()=>{f(),p&&a(p)};return r.createElement("div",{ref:h,className:`${o.input} ${c?o.error:""} ${u?o.hoverBackground:o.normalBackground}`,"data-testid":"droppable-input"},r.createElement("div",{className:o.chipContainer},e?.length?e.map(t=>r.createElement(M,{key:t.id,label:t.name,className:d.chip,icon:r.createElement(D,null),style:{cursor:"pointer"},onDelete:()=>a(t),disabled:s,onContextMenu:n=>k(n,t)})):m),r.createElement(N,{x:l.mouseX,y:l.mouseY,menuItems:g,onClose:C,onClick:v}))};export{I as DroppableInput};
2
2
  //# sourceMappingURL=DroppableInput.esm.js.map
@@ -1,2 +1,2 @@
1
- import{usePermission as d}from"@backstage/plugin-permission-react";import{soundcheckTrackUpdatePermission as c,soundcheckTrackReadPermission as u}from"@spotify/backstage-plugin-soundcheck-common";import r from"react";import{useParams as f}from"react-router-dom";import{TrackFormProvider as k}from"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../hooks/useSoundcheckAlert.esm.js";import{useGetAllTracks as g}from"../../hooks/tracks/useGetAllTracks.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{LoadingIndicator as E}from"../LoadingIndicator/LoadingIndicator.esm.js";import{PageWarningMessage as P}from"../PageWarningMessage/PageWarningMessage.esm.js";import{EditTrackView as w}from"./EditTrackView.esm.js";const T=()=>{var t,i;const{trackId:o}=f(),{data:m,isLoading:n}=g({ids:[o!=null?o:""],first:1}),e=(i=(t=m==null?void 0:m.edges)==null?void 0:t[0])==null?void 0:i.node,{loading:a,allowed:p}=d({permission:c,resourceRef:o}),{loading:s,allowed:l}=d({permission:u,resourceRef:o});return r.createElement(r.Fragment,null,r.createElement(P,{entityName:"track",entityId:o,showNotFound:!n&&!e,showCannotView:!a&&!s&&!l}),n||a||s?r.createElement(E,null):l&&e&&r.createElement(k,null,r.createElement(w,{track:e,canEdit:p})))};export{T as EditTrackPage};
1
+ import{usePermission as n}from"@backstage/plugin-permission-react";import{soundcheckTrackUpdatePermission as p,soundcheckTrackReadPermission as d}from"@spotify/backstage-plugin-soundcheck-common";import r from"react";import{useParams as l}from"react-router-dom";import{TrackFormProvider as f}from"../../contexts/TrackFormContext.esm.js";import"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../hooks/useSoundcheckAlert.esm.js";import{useGetAllTracks as u}from"../../hooks/tracks/useGetAllTracks.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{LoadingIndicator as k}from"../LoadingIndicator/LoadingIndicator.esm.js";import{PageWarningMessage as g}from"../PageWarningMessage/PageWarningMessage.esm.js";import{EditTrackView as E}from"./EditTrackView.esm.js";const P=()=>{const{trackId:e}=l(),{data:s,isLoading:t}=u({ids:[e??""],first:1}),o=s?.edges?.[0]?.node,{loading:i,allowed:c}=n({permission:p,resourceRef:e}),{loading:m,allowed:a}=n({permission:d,resourceRef:e});return r.createElement(r.Fragment,null,r.createElement(g,{entityName:"track",entityId:e,showNotFound:!t&&!o,showCannotView:!i&&!m&&!a}),t||i||m?r.createElement(k,null):a&&o&&r.createElement(f,null,r.createElement(E,{track:o,canEdit:c})))};export{P as EditTrackPage};
2
2
  //# sourceMappingURL=EditTrackPage.esm.js.map
@@ -1,2 +1,2 @@
1
- import{parseEntityRef as l}from"@backstage/catalog-model";import{humanizeEntityRef as c}from"@backstage/plugin-catalog-react";import{makeStyles as m,Card as u,Typography as s}from"@material-ui/core";import t from"react";import f from"../../images/empty-state.svg";const g=m(e=>({card:{backgroundColor:e.palette.background.paper,border:`1px solid ${e.palette.divider}`,borderRadius:e.shape.borderRadius,display:"flex",padding:e.spacing(5)},container:{margin:"0 auto",display:"flex",flexDirection:"row",alignItems:"center",gap:e.spacing(5)},content:{width:"20rem",display:"flex",flexDirection:"column",gap:e.spacing(2)},header:{display:"flex",flexDirection:"column",gap:e.spacing(2)},action:{display:"inline-block"},img:{maxHeight:400}})),r=({title:e,description:n,imgSrc:a,action:o})=>{const i=g();return t.createElement(u,{className:i.card},t.createElement("div",{className:i.container},t.createElement("div",{className:i.content},t.createElement("header",{className:i.header},t.createElement(s,{variant:"h5"},e),t.createElement(s,{color:"textSecondary",variant:"body1"},n)),o&&t.createElement("div",{className:i.action},o)),t.createElement("div",null,t.createElement("img",{src:a!=null?a:f,className:i.img,alt:e}))))},p="No certifications available",y=({ownerEntityRef:e,selectGroupHint:n})=>{let a="There are no tracks configured that apply to this entity.";return e&&(a=`Looks like the group '${c(l(e),{defaultKind:"Group"})}' doesn't own any entities that have any applicable tracks configured. ${n}`),t.createElement(r,{title:p,description:a})},d="Missing entities",E=({ownerEntityRef:e,selectGroupHint:n})=>{if(!e)return null;const a=c(l(e),{defaultKind:"Group"});return t.createElement(r,{title:d,description:`The group '${a}' doesn't own any entities. ${n!=null?n:""}`})};export{r as EmptyState,y as NoCertifications,E as NoEntities,p as noCertificationsTitle,d as noEntitiesTitle};
1
+ import{parseEntityRef as l}from"@backstage/catalog-model";import{humanizeEntityRef as c}from"@backstage/plugin-catalog-react";import{makeStyles as m,Card as f,Typography as s}from"@material-ui/core";import t from"react";import g from"../../images/empty-state.svg";const u=m(e=>({card:{backgroundColor:e.palette.background.paper,border:`1px solid ${e.palette.divider}`,borderRadius:e.shape.borderRadius,display:"flex",padding:e.spacing(5)},container:{margin:"0 auto",display:"flex",flexDirection:"row",alignItems:"center",gap:e.spacing(5)},content:{width:"20rem",display:"flex",flexDirection:"column",gap:e.spacing(2)},header:{display:"flex",flexDirection:"column",gap:e.spacing(2)},action:{display:"inline-block"},img:{maxHeight:400}})),r=({title:e,description:n,imgSrc:a,action:o})=>{const i=u();return t.createElement(f,{className:i.card},t.createElement("div",{className:i.container},t.createElement("div",{className:i.content},t.createElement("header",{className:i.header},t.createElement(s,{variant:"h5"},e),t.createElement(s,{color:"textSecondary",variant:"body1"},n)),o&&t.createElement("div",{className:i.action},o)),t.createElement("div",null,t.createElement("img",{src:a??g,className:i.img,alt:e}))))},p="No certifications available",y=({ownerEntityRef:e,selectGroupHint:n})=>{let a="There are no tracks configured that apply to this entity.";return e&&(a=`Looks like the group '${c(l(e),{defaultKind:"Group"})}' doesn't own any entities that have any applicable tracks configured. ${n}`),t.createElement(r,{title:p,description:a})},d="Missing entities",E=({ownerEntityRef:e,selectGroupHint:n})=>{if(!e)return null;const a=c(l(e),{defaultKind:"Group"});return t.createElement(r,{title:d,description:`The group '${a}' doesn't own any entities. ${n??""}`})};export{r as EmptyState,y as NoCertifications,E as NoEntities,p as noCertificationsTitle,d as noEntitiesTitle};
2
2
  //# sourceMappingURL=EmptyState.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as n}from"@material-ui/core";import{SpotifyLicenseBanner as o}from"@spotify/backstage-plugin-core";import e from"react";import{soundcheckBackend as i,invalidLicenseMessage as r}from"../../utils/license.esm.js";import{CertificationsPage as a}from"../CertificationsPage/CertificationsPage.esm.js";const m=n(t=>({root:{"&:not(:first-child)":{marginTop:t.spacing(2)}}})),c=()=>{const t=m();return e.createElement(e.Fragment,null,e.createElement(o,{backend:i,invalidLicenseMessage:r,inline:!0}),e.createElement("div",{className:t.root},e.createElement(a,null)))};export{c as EntityContent};
1
+ import{makeStyles as n}from"@material-ui/core";import{SpotifyLicenseBanner as r}from"@spotify/backstage-plugin-core";import e from"react";import{AlertProvider as o}from"../../hooks/useSoundcheckAlert.esm.js";import{soundcheckBackend as i,invalidLicenseMessage as a}from"../../utils/license.esm.js";import{CertificationsPage as m}from"../CertificationsPage/CertificationsPage.esm.js";const c=n(t=>({root:{"&:not(:first-child)":{marginTop:t.spacing(2)}}})),l=()=>{const t=c();return e.createElement(e.Fragment,null,e.createElement(o,null,e.createElement(r,{backend:i,invalidLicenseMessage:a,inline:!0}),e.createElement("div",{className:t.root},e.createElement(m,null))))};export{l as EntityContent};
2
2
  //# sourceMappingURL=EntityContent.esm.js.map
@@ -1,2 +1,2 @@
1
- import r from"react";import{entityPassRatesSummaryCsvFilename as n}from"../../utils/charts.esm.js";import"recharts";import"../Charts/ChartTypes.esm.js";import"../Charts/LineChart/LineChart.esm.js";import"@material-ui/core";import"../Charts/chartUtils.esm.js";import"luxon";import{useSummaryAggregationsContext as m}from"../TechHealthSummary/SummaryAggregationsProvider.esm.js";import{EntityPassRateHistoryLineChart as l}from"../Charts/LineChart/EntityPassRateHistoryLineChart.esm.js";import"../Charts/BarChart/BarChart.esm.js";import"@backstage/catalog-model";import{OverviewChartCard as p}from"../OverviewChartCard/OverviewChartCard.esm.js";import"../OverviewChartCard/OverviewChartCardStyles.esm.js";import{overallEntityPassRatesToCsv as v}from"../TechHealthTabs/TechHealthExportFunctions.esm.js";const y=()=>{var e;const{entityPassRatesOverviewTrends:{data:t,isLoading:a,isError:i}}=m(),s=(e=t==null?void 0:t.overallEntityPassRates)==null?void 0:e.length,o=!(t!=null&&t.overallEntityPassRates)||!s||a||i;return r.createElement(p,{title:"Entity pass rate",subtitle:"By default, this chart shows the top 5 entities by pass rate for all teams with which you are associated. To see a different set of entities, use the filters.",chartSectionContent:r.createElement(l,null),disableDataExport:o,csvFilename:n,csvData:v(t)})};export{y as EntityPassRateCard};
1
+ import e from"react";import{entityPassRatesSummaryCsvFilename as o}from"../../utils/charts.esm.js";import"recharts";import"../Charts/ChartTypes.esm.js";import"../Charts/LineChart/LineChart.esm.js";import"@material-ui/core";import"../Charts/chartUtils.esm.js";import"luxon";import{useSummaryAggregationsContext as m}from"../TechHealthSummary/SummaryAggregationsProvider.esm.js";import{EntityPassRateHistoryLineChart as n}from"../Charts/LineChart/EntityPassRateHistoryLineChart.esm.js";import"../Charts/BarChart/BarChart.esm.js";import"@backstage/catalog-model";import{OverviewChartCard as l}from"../OverviewChartCard/OverviewChartCard.esm.js";import"../OverviewChartCard/OverviewChartCardStyles.esm.js";import{overallEntityPassRatesToCsv as p}from"../TechHealthTabs/TechHealthExportFunctions.esm.js";const y=()=>{const{entityPassRatesOverviewTrends:{data:t,isLoading:r,isError:a}}=m(),s=t?.overallEntityPassRates?.length,i=!t?.overallEntityPassRates||!s||r||a;return e.createElement(l,{title:"Entity pass rate",subtitle:"By default, this chart shows the top 5 entities by pass rate for all teams with which you are associated. To see a different set of entities, use the filters.",chartSectionContent:e.createElement(n,null),disableDataExport:i,csvFilename:o,csvData:p(t)})};export{y as EntityPassRateCard};
2
2
  //# sourceMappingURL=EntityPassRateCard.esm.js.map
@@ -1,2 +1,2 @@
1
- import{Link as v,InfoCard as h}from"@backstage/core-components";import{useRouteRef as f}from"@backstage/core-plugin-api";import{useEntity as C}from"@backstage/plugin-catalog-react";import{Divider as I}from"@material-ui/core";import L from"@material-ui/core/styles/makeStyles";import{SpotifyLicenseBanner as R}from"@spotify/backstage-plugin-core";import e,{Fragment as S}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"../../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 N,certificationPlaylistRouteRef as D}from"../../routes.esm.js";import{soundcheckBackend as P,invalidLicenseMessage as x}from"../../utils/license.esm.js";import{AlertPanel as A}from"../AlertPanel/AlertPanel.esm.js";import"../CertificationSidebar/CertificationSidebar.esm.js";import{CertificationSummary as B}from"../CertificationSidebar/CertificationSummary.esm.js";import"@material-ui/lab";import"../CertificationSidebar/Check.esm.js";import"../CertificationSidebar/LevelSummary.esm.js";import{NoCertifications as M}from"../EmptyState/EmptyState.esm.js";import{CardSkeleton as T}from"./skeletons/CardSkeleton.esm.js";const c=L(t=>({certificationWrapper:{display:"flex",justifyContent:"space-between",alignItems:"center"},infoCard:{display:"grid",gridRowGap:t.spacing(2)},emptyState:{overflow:"hidden"}})),n=({children:t,title:a})=>{const i=c();return e.createElement(h,{title:a},e.createElement("div",{className:i.infoCard},e.createElement(R,{inline:!0,backend:P,invalidLicenseMessage:x}),t))},W=(t,a)=>{var i,o;return(o=(i=t.find(m=>m.trackIds.some(l=>l===a)))==null?void 0:i.id)!=null?o:""},$=({title:t="Soundcheck"})=>{const{entity:a}=C(),i=c(),{data:o,isError:m,isLoading:l}=w(a),{data:p,isError:u,isLoading:g}=b(a),y=f(N),E=f(D);return m||u?e.createElement(n,{title:t},e.createElement(A,{severity:"error",title:"Error loading certifications"})):l||g||!o||!p?e.createElement(n,{title:t},e.createElement(T,null)):o.length?e.createElement(n,{title:t},o.map((r,k)=>{var s,d;return e.createElement(S,{key:r.program.name},e.createElement("div",{className:i.certificationWrapper,"data-testid":"soundcheck-track-row"},e.createElement(B,{key:r.program.id,name:r.program.name,badge:(s=r.highestLevel)==null?void 0:s.badge,trackType:(d=r.program)==null?void 0:d.type}),e.createElement(v,{to:r.program.type==="playlist"?E({playlistId:W(p,r.program.id),trackId:r.program.id}):y({trackId:r.program.id})},"View Details")),k<o.length-1?e.createElement(I,null):null)})):e.createElement(n,{title:t},e.createElement("div",{className:i.emptyState},e.createElement(M,null)))};export{$ as Card,c as useStyles};
1
+ import{Link as u,InfoCard as k}from"@backstage/core-components";import{useRouteRef as c}from"@backstage/core-plugin-api";import{useEntity as h}from"@backstage/plugin-catalog-react";import{Divider as v}from"@material-ui/core";import C from"@material-ui/core/styles/makeStyles";import{SpotifyLicenseBanner as L}from"@spotify/backstage-plugin-core";import e,{Fragment as R}from"react";import{useAllCertifications as S}from"../../hooks/certifications/useAllCertifications.esm.js";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/catalog-model";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{usePlaylists as I}from"../../hooks/playlists/usePlaylists.esm.js";import{certificationTrackRouteRef as w,certificationPlaylistRouteRef as b}from"../../routes.esm.js";import{soundcheckBackend as N,invalidLicenseMessage as A}from"../../utils/license.esm.js";import{AlertPanel as P}from"../AlertPanel/AlertPanel.esm.js";import"../CertificationSidebar/CertificationSidebar.esm.js";import{CertificationSummary as x}from"../CertificationSidebar/CertificationSummary.esm.js";import"@material-ui/lab";import"../CertificationSidebar/Check.esm.js";import"../CertificationSidebar/LevelSummary.esm.js";import{NoCertifications as B}from"../EmptyState/EmptyState.esm.js";import{CardSkeleton as D}from"./skeletons/CardSkeleton.esm.js";const n=C(t=>({certificationWrapper:{display:"flex",justifyContent:"space-between",alignItems:"center"},infoCard:{display:"grid",gridRowGap:t.spacing(2)},emptyState:{overflow:"hidden"}})),m=({children:t,title:i})=>{const o=n();return e.createElement(k,{title:i},e.createElement("div",{className:o.infoCard},e.createElement(L,{inline:!0,backend:N,invalidLicenseMessage:A}),t))},M=(t,i)=>t.find(o=>o.trackIds.some(a=>a===i))?.id??"",T=({title:t="Soundcheck"})=>{const{entity:i}=h(),o=n(),{data:a,isError:p,isLoading:s}=S(i),{data:l,isError:d,isLoading:f}=I(i),g=c(w),y=c(b);return p||d?e.createElement(m,{title:t},e.createElement(P,{severity:"error",title:"Error loading certifications"})):s||f||!a||!l?e.createElement(m,{title:t},e.createElement(D,null)):a.length?e.createElement(m,{title:t},a.map((r,E)=>e.createElement(R,{key:r.program.name},e.createElement("div",{className:o.certificationWrapper,"data-testid":"soundcheck-track-row"},e.createElement(x,{key:r.program.id,name:r.program.name,badge:r.highestLevel?.badge,trackType:r.program?.type}),e.createElement(u,{to:r.program.type==="playlist"?y({playlistId:M(l,r.program.id),trackId:r.program.id}):g({trackId:r.program.id})},"View Details")),E<a.length-1?e.createElement(v,null):null))):e.createElement(m,{title:t},e.createElement("div",{className:o.emptyState},e.createElement(B,null)))};export{T as Card,n as useStyles};
2
2
  //# sourceMappingURL=Card.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as O,Typography as f,Box as w,FormControlLabel as z,Checkbox as A,TextField as F}from"@material-ui/core";import I from"@material-ui/icons/CheckBox";import T from"@material-ui/icons/CheckBoxOutlineBlank";import U from"@material-ui/icons/ExpandMore";import{Autocomplete as B}from"@material-ui/lab";import t,{useState as G,useMemo as N,useCallback as v}from"react";import{useGetEntityFacets as D}from"../../hooks/catalog/useGetEntityFacets.esm.js";const M=O({container:{padding:0},formControl:{flexGrow:1}}),P=({facet:m,label:s,values:n,onChange:a,disabled:C,filter:b})=>{var p;const u=M(),[E,i]=G(!1),{data:o,isLoading:g,error:h}=D(m,b),l=N(()=>o==null?void 0:o.map(e=>e.toLocaleLowerCase("en-US")),[o]),d=(p=n==null?void 0:n.map(e=>e.toLocaleLowerCase("en-US")))!=null?p:[],x=v((e,r)=>{a(r),l&&l.every(c=>r.includes(c))&&i(!1)},[l,a,i]),S=v(()=>{a(n!=null&&n.length?n:void 0)},[n,a]);if(!o||!l||h)return t.createElement(f,{color:"error"},"Failed to load facet: ",m);const k=C||g||!(n!=null&&n.length)&&(!(o!=null&&o.length)||!(l!=null&&l.length)),y=Array.from(new Set([...l,...d]));return t.createElement(w,{pb:1,pt:1,className:u.container},t.createElement(f,{variant:"subtitle2"},s),t.createElement(B,{open:E,onOpen:()=>i(!0),onClose:()=>i(!1),className:u.formControl,multiple:!0,limitTags:4,disableCloseOnSelect:!0,"aria-label":s,options:y,value:d,getOptionLabel:e=>{var r;return(r=o[l.indexOf(e)])!=null?r:e},onChange:x,onBlur:S,disabled:k,renderOption:(e,{selected:r})=>{var c;return t.createElement(z,{onClick:L=>L.preventDefault(),control:t.createElement(A,{icon:t.createElement(T,{fontSize:"small"}),checkedIcon:t.createElement(I,{fontSize:"small"}),checked:r}),label:(c=o[l.indexOf(e)])!=null?c:e})},size:"small",popupIcon:t.createElement(U,{"data-testid":"selected-facets-expand"}),renderInput:e=>t.createElement(F,{...e,variant:"outlined"})}))};export{P as EntityAutocompletePicker};
1
+ import{makeStyles as y,Typography as f,Box as L,FormControlLabel as O,Checkbox as w,TextField as z}from"@material-ui/core";import F from"@material-ui/icons/CheckBox";import A from"@material-ui/icons/CheckBoxOutlineBlank";import I from"@material-ui/icons/ExpandMore";import{Autocomplete as T}from"@material-ui/lab";import t,{useState as B,useMemo as G,useCallback as u}from"react";import{useGetEntityFacets as M}from"../../hooks/catalog/useGetEntityFacets.esm.js";const N=y({container:{padding:0},formControl:{flexGrow:1}}),U=({facet:m,label:s,values:a,onChange:l,disabled:b,filter:C})=>{const p=N(),[E,r]=B(!1),{data:n,isLoading:g,error:h}=M(m,C),o=G(()=>n?.map(e=>e.toLocaleLowerCase("en-US")),[n]),d=a?.map(e=>e.toLocaleLowerCase("en-US"))??[],x=u((e,i)=>{l(i),o&&o.every(c=>i.includes(c))&&r(!1)},[o,l,r]),S=u(()=>{l(a?.length?a:void 0)},[a,l]);if(!n||!o||h)return t.createElement(f,{color:"error"},"Failed to load facet: ",m);const k=b||g||!a?.length&&(!n?.length||!o?.length),v=Array.from(new Set([...o,...d]));return t.createElement(L,{pb:1,pt:1,className:p.container},t.createElement(f,{variant:"subtitle2"},s),t.createElement(T,{open:E,onOpen:()=>r(!0),onClose:()=>r(!1),className:p.formControl,multiple:!0,limitTags:4,disableCloseOnSelect:!0,"aria-label":s,options:v,value:d,getOptionLabel:e=>n[o.indexOf(e)]??e,onChange:x,onBlur:S,disabled:k,renderOption:(e,{selected:i})=>t.createElement(O,{onClick:c=>c.preventDefault(),control:t.createElement(w,{icon:t.createElement(A,{fontSize:"small"}),checkedIcon:t.createElement(F,{fontSize:"small"}),checked:i}),label:n[o.indexOf(e)]??e}),size:"small",popupIcon:t.createElement(I,{"data-testid":"selected-facets-expand"}),renderInput:e=>t.createElement(z,{...e,variant:"outlined"})}))};export{U as EntityAutocompletePicker};
2
2
  //# sourceMappingURL=EntityAutocompletePicker.esm.js.map
@@ -1,2 +1,2 @@
1
- import{EntityListProvider as c}from"@backstage/plugin-catalog-react";import{makeStyles as f,Grid as i}from"@material-ui/core";import t from"react";import{EntityAutocompletePicker as p}from"./EntityAutocompletePicker.esm.js";import{FilterPreviewTable as s}from"./FilterPreviewTable/FilterPreviewTable.esm.js";import{FILTER_OPTIONS as E}from"./types.esm.js";const d=f(()=>({title:{fontWeight:700},filterContainer:{display:"flex",flexWrap:"wrap"}})),y=10,g=({value:r,onChange:n,disabled:a})=>{const m=d(),o=e=>l=>{n({...r,[e]:l!=null?l:[]})};return t.createElement(i,{container:!0,spacing:6},t.createElement(i,{item:!0,container:!0,className:m.filterContainer,spacing:2},E.map(e=>t.createElement(i,{item:!0,xs:12,sm:6,md:4,key:e.key},t.createElement(p,{facet:e.facet,label:e.label,values:r==null?void 0:r[e.key],onChange:o(e.key),disabled:a,filter:e.filter})))),t.createElement(i,{item:!0,xs:12},t.createElement(c,{pagination:{limit:y}},t.createElement(s,{filter:r}))))};export{g as FilterComponent};
1
+ import{EntityListProvider as c}from"@backstage/plugin-catalog-react";import{makeStyles as s,Grid as r}from"@material-ui/core";import t from"react";import{EntityAutocompletePicker as f}from"./EntityAutocompletePicker.esm.js";import{FilterPreviewTable as p}from"./FilterPreviewTable/FilterPreviewTable.esm.js";import{FILTER_OPTIONS as E}from"./types.esm.js";const d=s(()=>({title:{fontWeight:700},filterContainer:{display:"flex",flexWrap:"wrap"}})),y=10,g=({value:i,onChange:a,disabled:n})=>{const l=d(),m=e=>o=>{a({...i,[e]:o??[]})};return t.createElement(r,{container:!0,spacing:6},t.createElement(r,{item:!0,container:!0,className:l.filterContainer,spacing:2},E.map(e=>t.createElement(r,{item:!0,xs:12,sm:6,md:4,key:e.key},t.createElement(f,{facet:e.facet,label:e.label,values:i?.[e.key],onChange:m(e.key),disabled:n,filter:e.filter})))),t.createElement(r,{item:!0,xs:12},t.createElement(c,{pagination:{limit:y}},t.createElement(p,{filter:i}))))};export{g as FilterComponent};
2
2
  //# sourceMappingURL=FilterComponent.esm.js.map
@@ -1,2 +1,2 @@
1
- import{Table as g}from"@backstage/core-components";import{EntityTable as a,useEntityList as u,EntityTypeFilter as f,EntityOwnerFilter as E,EntityLifecycleFilter as T}from"@backstage/plugin-catalog-react";import{makeStyles as w,Chip as b,useTheme as h}from"@material-ui/core";import l,{useEffect as v}from"react";import{EntityKindsFilter as S}from"./EntityKindsFilter.esm.js";import{EntitySystemsFilter as x}from"./EntitySystemsFilter.esm.js";import{CatalogTableToolbar as F}from"./EntityTableToolbar.esm.js";import{EntityTagFilter as C}from"./EntityTagFilter.esm.js";const L=w(()=>({entityTable:{'& span[class*="CatalogReactEntityDisplayName-root"]':{"&:hover":{textDecoration:"underline"}}}})),z=[a.columns.createEntityRefColumn({}),a.columns.createSystemColumn(),a.columns.createOwnerColumn(),a.columns.createSpecTypeColumn(),a.columns.createSpecLifecycleColumn(),{title:"Tags",field:"metadata.tags",cellStyle:{padding:"0px 16px 0px 20px"},render:e=>l.createElement(l.Fragment,null,e.metadata.tags&&e.metadata.tags.map(n=>l.createElement(b,{key:n,label:n,size:"small",variant:"outlined",style:{marginTop:"4px",marginBottom:"4px"}})))}],N=e=>({kinds:e.selectedKinds.length?new S(e.selectedKinds):void 0,systems:e.selectedSystems.length?new x(e.selectedSystems):void 0,type:e.selectedTypes.length?new f(e.selectedTypes):void 0,owners:e.selectedOwners.length?new E(e.selectedOwners):void 0,lifecycles:e.selectedLifecycles.length?new T(e.selectedLifecycles):void 0,tag:e.selectedTags.length?new C(e.selectedTags):void 0}),O=({filter:e})=>{const{updateFilters:n,entities:r,pageInfo:t,totalItems:c,loading:m}=u(),p=h(),d=L();v(()=>{const o=N(e);n(o)},[e,n]);const y=`All (${c||0})`;return l.createElement(l.Fragment,null,l.createElement("div",{className:d.entityTable},l.createElement(g,{title:y,columns:z,data:r,options:{padding:"dense",paging:!!(t!=null&&t.next)||!!(t!=null&&t.prev),toolbar:!0,draggable:!1,tableLayout:"fixed",search:!1,showTitle:!0,rowStyle:{fontSize:p.typography.body1.fontSize},showFirstLastPageButtons:!1,emptyRowsWhenPaging:!1,pageSizeOptions:[],loadingType:"linear",showEmptyDataSourceMessage:!m,pageSize:10},onPageChange:o=>{var i,s;o>0?(i=t==null?void 0:t.next)==null||i.call(t):(s=t==null?void 0:t.prev)==null||s.call(t)},components:{Toolbar:F},page:t!=null&&t.prev?1:0,totalCount:t!=null&&t.next?Number.MAX_VALUE:Number.MIN_SAFE_INTEGER,localization:{pagination:{labelDisplayedRows:""}}})))};export{O as FilterPreviewTable};
1
+ import{Table as d}from"@backstage/core-components";import{EntityTable as a,useEntityList as y,EntityTypeFilter as g,EntityOwnerFilter as u,EntityLifecycleFilter as f}from"@backstage/plugin-catalog-react";import{makeStyles as E,Chip as T,useTheme as w}from"@material-ui/core";import t,{useEffect as b}from"react";import{EntityKindsFilter as h}from"./EntityKindsFilter.esm.js";import{EntitySystemsFilter as S}from"./EntitySystemsFilter.esm.js";import{CatalogTableToolbar as v}from"./EntityTableToolbar.esm.js";import{EntityTagFilter as x}from"./EntityTagFilter.esm.js";const F=E(()=>({entityTable:{'& span[class*="CatalogReactEntityDisplayName-root"]':{"&:hover":{textDecoration:"underline"}}}})),C=[a.columns.createEntityRefColumn({}),a.columns.createSystemColumn(),a.columns.createOwnerColumn(),a.columns.createSpecTypeColumn(),a.columns.createSpecLifecycleColumn(),{title:"Tags",field:"metadata.tags",cellStyle:{padding:"0px 16px 0px 20px"},render:e=>t.createElement(t.Fragment,null,e.metadata.tags&&e.metadata.tags.map(n=>t.createElement(T,{key:n,label:n,size:"small",variant:"outlined",style:{marginTop:"4px",marginBottom:"4px"}})))}],L=e=>({kinds:e.selectedKinds.length?new h(e.selectedKinds):void 0,systems:e.selectedSystems.length?new S(e.selectedSystems):void 0,type:e.selectedTypes.length?new g(e.selectedTypes):void 0,owners:e.selectedOwners.length?new u(e.selectedOwners):void 0,lifecycles:e.selectedLifecycles.length?new f(e.selectedLifecycles):void 0,tag:e.selectedTags.length?new x(e.selectedTags):void 0}),z=({filter:e})=>{const{updateFilters:n,entities:s,pageInfo:l,totalItems:i,loading:r}=y(),m=w(),c=F();b(()=>{const o=L(e);n(o)},[e,n]);const p=`All (${i||0})`;return t.createElement(t.Fragment,null,t.createElement("div",{className:c.entityTable},t.createElement(d,{title:p,columns:C,data:s,options:{padding:"dense",paging:!!l?.next||!!l?.prev,toolbar:!0,draggable:!1,tableLayout:"fixed",search:!1,showTitle:!0,rowStyle:{fontSize:m.typography.body1.fontSize},showFirstLastPageButtons:!1,emptyRowsWhenPaging:!1,pageSizeOptions:[],loadingType:"linear",showEmptyDataSourceMessage:!r,pageSize:10},onPageChange:o=>{o>0?l?.next?.():l?.prev?.()},components:{Toolbar:v},page:l?.prev?1:0,totalCount:l?.next?Number.MAX_VALUE:Number.MIN_SAFE_INTEGER,localization:{pagination:{labelDisplayedRows:""}}})))};export{z as FilterPreviewTable};
2
2
  //# sourceMappingURL=FilterPreviewTable.esm.js.map
@@ -1,2 +1,2 @@
1
- import{asArray as c}from"@spotify/backstage-plugin-soundcheck-common";import{emptyFilters as o}from"./types.esm.js";const n={selectedKinds:"kind",selectedTypes:"spec.type",selectedLifecycles:"spec.lifecycle",selectedOwners:"spec.owner",selectedSystems:"spec.system",selectedTags:"metadata.tags"},a=e=>!e||Object.values(e).every(t=>t.length===0)?void 0:{catalog:Object.entries(e).reduce((t,[l,r])=>{const s=n[l];return r.length>0&&(t[s]=r),t},{})},i=e=>Object.keys(n).reduce((t,l)=>{var r,s;return t[l]=c((s=(r=e==null?void 0:e.catalog)==null?void 0:r[n[l]])!=null?s:[]),t},{}),u=e=>{if(!e||Object.values(e).every(l=>l.length===0))return;const t={};for(const[l,r]of Object.entries(e))(r==null?void 0:r.length)>0&&(t[n[l]]=r);return[t]},d=e=>{if(e&&Array.isArray(e)&&e.length){const t=e[0];return Object.keys(n).reduce((l,r)=>{var s;return l[r]=c((s=t==null?void 0:t[n[r]])!=null?s:[]),l},{})}return o()};export{d as mapCatalogFilterToFilters,u as mapFiltersToCatalogFilter,a as mapFiltersToInputFilter,i as mapInputFilterToFormFilters};
1
+ import{asArray as l}from"@spotify/backstage-plugin-soundcheck-common";import{emptyFilters as o}from"./types.esm.js";const c={selectedKinds:"kind",selectedTypes:"spec.type",selectedLifecycles:"spec.lifecycle",selectedOwners:"spec.owner",selectedSystems:"spec.system",selectedTags:"metadata.tags"},a=e=>!e||Object.values(e).every(t=>t.length===0)?void 0:{catalog:Object.entries(e).reduce((t,[r,s])=>{const n=c[r];return s.length>0&&(t[n]=s),t},{})},i=e=>Object.keys(c).reduce((t,r)=>(t[r]=l(e?.catalog?.[c[r]]??[]),t),{}),p=e=>{if(!e||Object.values(e).every(r=>r.length===0))return;const t={};for(const[r,s]of Object.entries(e))s?.length>0&&(t[c[r]]=s);return[t]},y=e=>{if(e&&Array.isArray(e)&&e.length){const t=e[0];return Object.keys(c).reduce((r,s)=>(r[s]=l(t?.[c[s]]??[]),r),{})}return o()};export{y as mapCatalogFilterToFilters,p as mapFiltersToCatalogFilter,a as mapFiltersToInputFilter,i as mapInputFilterToFormFilters};
2
2
  //# sourceMappingURL=utils.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as y,FormControl as E,InputLabel as f,Select as h,MenuItem as u,FormHelperText as k}from"@material-ui/core";import e from"react";import{Controller as x}from"react-hook-form";const F=y(l=>({helperText:{marginLeft:0},selectField:{width:"100%",display:"flex",alignItems:"center"},menuBackground:{backgroundColor:l.palette.background.paper}})),C=({name:l,control:p,selectLabel:t,options:n,disabled:b,rules:v,style:o,helperText:s,placeholder:d})=>{const a=F();return e.createElement(x,{name:l,control:p,rules:v,render:({field:m,fieldState:r})=>{var c;return e.createElement(E,{variant:"outlined",style:o!=null?o:{minWidth:200},error:r.invalid},t&&e.createElement(f,{id:`${l}-select-label`},t),e.createElement(h,{...m,className:a.selectField,disabled:b,error:r.invalid,"data-testid":`${l}-select`,labelId:`${l}-select-label`,label:t,displayEmpty:!0,value:(c=m.value)!=null?c:"",MenuProps:{classes:{paper:a.menuBackground}},margin:"dense"},d&&e.createElement(u,{value:"",disabled:!0},d),n==null?void 0:n.map(({value:i,label:g})=>e.createElement(u,{key:i,value:i},g))),(s||r.error)&&e.createElement(k,{className:a.helperText},r.error?r.error.message:s))}})};export{C as FormControlledSelect};
1
+ import{makeStyles as v,FormControl as E,InputLabel as f,Select as k,MenuItem as c,FormHelperText as y}from"@material-ui/core";import e from"react";import{Controller as h}from"react-hook-form";const x=v(l=>({helperText:{marginLeft:0},selectField:{width:"100%",display:"flex",alignItems:"center"},menuBackground:{backgroundColor:l.palette.background.paper}})),F=({name:l,control:d,selectLabel:r,options:i,disabled:p,rules:u,style:b,helperText:n,placeholder:o})=>{const a=x();return e.createElement(h,{name:l,control:d,rules:u,render:({field:s,fieldState:t})=>e.createElement(E,{variant:"outlined",style:b??{minWidth:200},error:t.invalid},r&&e.createElement(f,{id:`${l}-select-label`},r),e.createElement(k,{...s,className:a.selectField,disabled:p,error:t.invalid,"data-testid":`${l}-select`,labelId:`${l}-select-label`,label:r,displayEmpty:!0,value:s.value??"",MenuProps:{classes:{paper:a.menuBackground}},margin:"dense"},o&&e.createElement(c,{value:"",disabled:!0},o),i?.map(({value:m,label:g})=>e.createElement(c,{key:m,value:m},g))),(n||t.error)&&e.createElement(y,{className:a.helperText},t.error?t.error.message:n))})};export{F as FormControlledSelect};
2
2
  //# sourceMappingURL=FormControlledSelect.esm.js.map
@@ -1,2 +1,2 @@
1
- import{Typography as a}from"@material-ui/core";import e from"react";import{Controller as p}from"react-hook-form";import{formStyles as c}from"../../utils/formStyles.esm.js";import"@spotify/backstage-plugin-soundcheck-common";import{emptyFilters as s}from"../Filter/types.esm.js";import{FilterComponent as d}from"../Filter/FilterComponent.esm.js";const f=({control:o,description:m,name:n,disabled:l})=>{const i=c();return e.createElement("div",{className:i.filters},e.createElement(a,{variant:"body2"},m),e.createElement(p,{name:n,control:o,render:({field:r})=>{var t;return e.createElement(d,{value:(t=r.value)!=null?t:s(),onChange:r.onChange,disabled:l})}}))};export{f as FormFilterSection};
1
+ import{Typography as l}from"@material-ui/core";import e from"react";import{Controller as a}from"react-hook-form";import{formStyles as p}from"../../utils/formStyles.esm.js";import"@spotify/backstage-plugin-soundcheck-common";import{emptyFilters as c}from"../Filter/types.esm.js";import{FilterComponent as s}from"../Filter/FilterComponent.esm.js";const d=({control:o,description:t,name:m,disabled:n})=>{const i=p();return e.createElement("div",{className:i.filters},e.createElement(l,{variant:"body2"},t),e.createElement(a,{name:m,control:o,render:({field:r})=>e.createElement(s,{value:r.value??c(),onChange:r.onChange,disabled:n})}))};export{d as FormFilterSection};
2
2
  //# sourceMappingURL=FormFilterSection.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as $,Grid as i,RadioGroup as k,Radio as g,Typography as m,TextField as E,FormControl as D,InputLabel as M,Select as U,MenuItem as _,Divider as R}from"@material-ui/core";import e,{useState as v,useEffect as q}from"react";import{getCronDescription as w}from"../../utils/cron.esm.js";import{MIN_TIME_UNIT_VALUE as F,MAX_TIME_UNIT_VALUE as A}from"../../utils/time.esm.js";import{TimeUnit as H}from"./types.esm.js";import{VALID_TIME_UNITS as S,toTimeUnit as B}from"./util.esm.js";const O=$(n=>({divider:{marginTop:n.spacing(3),marginBottom:n.spacing(3)},title:{cursor:"pointer"},humanDurationContainer:{alignItems:"flex-start",marginTop:3},cronInput:{width:250,marginTop:3},noPaddingLeft:{paddingLeft:0},noPadding:{padding:0},fullWidth:{width:"100%"},radioOptions:{width:"80%",paddingLeft:n.spacing(1)},selectField:{paddingRight:n.spacing(2)},inputLabel:{color:`${n.palette.text.primary} !important`},menuBackground:{backgroundColor:n.palette.background.paper}})),f=32,y=12,h=n=>n?(Math.ceil(n.length/f)-1)*y:0,V=({value:n,onChange:d,disabled:s,errors:l})=>{var u;const a=O(),[t,c]=v(n),[N,b]=v(`${n.value}`);q(()=>{d&&d(t)},[t,d]);const I=r=>{c({...n,type:r.target.value})},L=r=>{b(r.target.value);const o=parseInt(r.target.value,10);c({...n,value:isNaN(o)?0:o})},P=r=>{var o;c({...t,unit:(o=B(r.target.value))!=null?o:H.Hours})},T=r=>{const o=r.target.value;c({...t,cron:o})},C=()=>{c({...t,type:"cron"})},x=()=>{c({...t,type:"HumanDuration"})},p=(u=l==null?void 0:l.message)!=null?u:w(t.cron);return e.createElement(i,{container:!0,direction:"row"},e.createElement(i,{item:!0,className:`${a.noPadding} ${a.fullWidth}`},e.createElement(k,{name:"frequencyType",value:t.type,onChange:I},e.createElement(i,{container:!0,alignItems:"flex-start",className:a.fullWidth},e.createElement(i,{item:!0,className:a.noPaddingLeft},e.createElement(g,{disabled:s,value:"HumanDuration"})),e.createElement(i,{item:!0,className:`${a.noPadding} ${a.radioOptions}`},e.createElement(m,{variant:"body1",className:a.title,onClick:x},"Run on a regular interval"),e.createElement(m,{variant:"caption"},"Run on a regular interval that you define"),t.type==="HumanDuration"&&e.createElement(i,{container:!0,className:a.humanDurationContainer,spacing:2},e.createElement(i,{item:!0,className:a.noPadding},e.createElement(E,{id:"every",type:"number",inputProps:{min:F,max:A},label:"Every",name:"every",disabled:s,value:N,error:!!(l!=null&&l.message),helperText:l==null?void 0:l.message,onChange:L,InputLabelProps:{className:a.inputLabel}})),e.createElement(i,{item:!0,className:a.noPadding},e.createElement(D,null,e.createElement(M,{className:a.inputLabel,id:"frequency-unit"},"Unit"),e.createElement(U,{labelId:"frequency-unit",disabled:s,value:t.unit,onChange:P,"data-testid":"frequency-unit",className:a.selectField,MenuProps:{classes:{paper:a.menuBackground}}},S.map(r=>e.createElement(_,{key:r,value:r},r)))))))),e.createElement(R,{className:a.divider}),e.createElement(i,{container:!0,alignItems:"flex-start"},e.createElement(i,{item:!0,className:a.noPaddingLeft},e.createElement(g,{disabled:s,value:"cron"})),e.createElement(i,{item:!0,className:`${a.noPadding} ${a.radioOptions}`},e.createElement(m,{variant:"body1",className:a.title,onClick:C},"Run on a schedule"),e.createElement(m,{variant:"caption"},"Run on a schedule defined via cron expression"),t.type==="cron"&&e.createElement(i,{item:!0,className:a.noPadding},e.createElement(E,{id:"cron-expression","data-testid":"cron-expression",className:a.cronInput,label:p,disabled:s,placeholder:"* * * * *",error:!!(l!=null&&l.message),value:t.cron,onChange:T,InputProps:{style:{paddingTop:`${h(p)}px`}}})))))))};export{V as FrequencyComponent,h as calculateCronLabelPadding,f as characterLimitPerLine,y as paddingPerExtraLine};
1
+ import{makeStyles as x,Grid as i,RadioGroup as $,Radio as u,Typography as s,TextField as g,FormControl as k,InputLabel as D,Select as M,MenuItem as U,Divider as _}from"@material-ui/core";import e,{useState as E,useEffect as R}from"react";import{getCronDescription as q}from"../../utils/cron.esm.js";import{MIN_TIME_UNIT_VALUE as F,MAX_TIME_UNIT_VALUE as S}from"../../utils/time.esm.js";import{TimeUnit as w}from"./types.esm.js";import{VALID_TIME_UNITS as A,toTimeUnit as H}from"./util.esm.js";const B=x(t=>({divider:{marginTop:t.spacing(3),marginBottom:t.spacing(3)},title:{cursor:"pointer"},humanDurationContainer:{alignItems:"flex-start",marginTop:3},cronInput:{width:250,marginTop:3},noPaddingLeft:{paddingLeft:0},noPadding:{padding:0},fullWidth:{width:"100%"},radioOptions:{width:"80%",paddingLeft:t.spacing(1)},selectField:{paddingRight:t.spacing(2)},inputLabel:{color:`${t.palette.text.primary} !important`},menuBackground:{backgroundColor:t.palette.background.paper}})),v=32,f=12,y=t=>t?(Math.ceil(t.length/v)-1)*f:0,O=({value:t,onChange:d,disabled:o,errors:c})=>{const a=B(),[n,l]=E(t),[h,N]=E(`${t.value}`);R(()=>{d&&d(n)},[n,d]);const b=r=>{l({...t,type:r.target.value})},I=r=>{N(r.target.value);const m=parseInt(r.target.value,10);l({...t,value:isNaN(m)?0:m})},L=r=>{l({...n,unit:H(r.target.value)??w.Hours})},P=r=>{const m=r.target.value;l({...n,cron:m})},T=()=>{l({...n,type:"cron"})},C=()=>{l({...n,type:"HumanDuration"})},p=c?.message??q(n.cron);return e.createElement(i,{container:!0,direction:"row"},e.createElement(i,{item:!0,className:`${a.noPadding} ${a.fullWidth}`},e.createElement($,{name:"frequencyType",value:n.type,onChange:b},e.createElement(i,{container:!0,alignItems:"flex-start",className:a.fullWidth},e.createElement(i,{item:!0,className:a.noPaddingLeft},e.createElement(u,{disabled:o,value:"HumanDuration"})),e.createElement(i,{item:!0,className:`${a.noPadding} ${a.radioOptions}`},e.createElement(s,{variant:"body1",className:a.title,onClick:C},"Run on a regular interval"),e.createElement(s,{variant:"caption"},"Run on a regular interval that you define"),n.type==="HumanDuration"&&e.createElement(i,{container:!0,className:a.humanDurationContainer,spacing:2},e.createElement(i,{item:!0,className:a.noPadding},e.createElement(g,{id:"every",type:"number",inputProps:{min:F,max:S},label:"Every",name:"every",disabled:o,value:h,error:!!c?.message,helperText:c?.message,onChange:I,InputLabelProps:{className:a.inputLabel}})),e.createElement(i,{item:!0,className:a.noPadding},e.createElement(k,null,e.createElement(D,{className:a.inputLabel,id:"frequency-unit"},"Unit"),e.createElement(M,{labelId:"frequency-unit",disabled:o,value:n.unit,onChange:L,"data-testid":"frequency-unit",className:a.selectField,MenuProps:{classes:{paper:a.menuBackground}}},A.map(r=>e.createElement(U,{key:r,value:r},r)))))))),e.createElement(_,{className:a.divider}),e.createElement(i,{container:!0,alignItems:"flex-start"},e.createElement(i,{item:!0,className:a.noPaddingLeft},e.createElement(u,{disabled:o,value:"cron"})),e.createElement(i,{item:!0,className:`${a.noPadding} ${a.radioOptions}`},e.createElement(s,{variant:"body1",className:a.title,onClick:T},"Run on a schedule"),e.createElement(s,{variant:"caption"},"Run on a schedule defined via cron expression"),n.type==="cron"&&e.createElement(i,{item:!0,className:a.noPadding},e.createElement(g,{id:"cron-expression","data-testid":"cron-expression",className:a.cronInput,label:p,disabled:o,placeholder:"* * * * *",error:!!c?.message,value:n.cron,onChange:P,InputProps:{style:{paddingTop:`${y(p)}px`}}})))))))};export{O as FrequencyComponent,y as calculateCronLabelPadding,v as characterLimitPerLine,f as paddingPerExtraLine};
2
2
  //# sourceMappingURL=FrequencyComponent.esm.js.map
@@ -1,2 +1,2 @@
1
- import m from"lodash";import{TimeUnit as n}from"./types.esm.js";const s=()=>({type:"HumanDuration",unit:n.Hours,value:1,cron:""}),i=[n.Months,n.Weeks,n.Days,n.Hours,n.Minutes,n.Seconds];function f(r){return i.includes(r)}function c(r){switch(r){case"months":return n.Months;case"weeks":return n.Weeks;case"days":return n.Days;case"hours":return n.Hours;case"minutes":return n.Minutes;case"seconds":return n.Seconds;default:return null}}function l(r){if(r){const{cron:e,type:t,unit:u,value:o}=r;return t==="HumanDuration"?{[u]:o}:{cron:e}}}function y(r){var e;const t=s();if(r&&m.isObject(r)){if("cron"in r)return{...t,type:"cron",cron:r.cron};const u=Object.entries(r);if(u.length){const[o,a]=u[0];return{...t,unit:(e=c(o))!=null?e:n.Hours,value:a}}}return t}export{i as VALID_TIME_UNITS,s as defaultFrequency,f as isTimeUnit,l as mapFrequencyToHumanDurationOrCron,y as mapHumanDurationOrCronToFrequency,c as toTimeUnit};
1
+ import a from"lodash";import{TimeUnit as n}from"./types.esm.js";const s=()=>({type:"HumanDuration",unit:n.Hours,value:1,cron:""}),c=[n.Months,n.Weeks,n.Days,n.Hours,n.Minutes,n.Seconds];function m(r){return c.includes(r)}function i(r){switch(r){case"months":return n.Months;case"weeks":return n.Weeks;case"days":return n.Days;case"hours":return n.Hours;case"minutes":return n.Minutes;case"seconds":return n.Seconds;default:return null}}function f(r){if(r){const{cron:t,type:e,unit:u,value:o}=r;return e==="HumanDuration"?{[u]:o}:{cron:t}}}function l(r){const t=s();if(r&&a.isObject(r)){if("cron"in r)return{...t,type:"cron",cron:r.cron};const e=Object.entries(r);if(e.length){const[u,o]=e[0];return{...t,unit:i(u)??n.Hours,value:o}}}return t}export{c as VALID_TIME_UNITS,s as defaultFrequency,m as isTimeUnit,f as mapFrequencyToHumanDurationOrCron,l as mapHumanDurationOrCronToFrequency,i as toTimeUnit};
2
2
  //# sourceMappingURL=util.esm.js.map
@@ -1,2 +1,2 @@
1
- import e from"react";import{groupPassRatesSummaryCsvFilename as i}from"../../utils/charts.esm.js";import"recharts";import"../Charts/ChartTypes.esm.js";import"../Charts/LineChart/LineChart.esm.js";import"@material-ui/core";import"../Charts/chartUtils.esm.js";import"luxon";import{useSummaryAggregationsContext as p}from"../TechHealthSummary/SummaryAggregationsProvider.esm.js";import"@backstage/catalog-model";import"../Charts/BarChart/BarChart.esm.js";import{GroupPassRateHistoryBarChart as n}from"../Charts/BarChart/GroupPassRateHistoryBarChart.esm.js";import{OverviewChartCard as l}from"../OverviewChartCard/OverviewChartCard.esm.js";import"../OverviewChartCard/OverviewChartCardStyles.esm.js";import{overallGroupPassRatesToCsv as u}from"../TechHealthTabs/TechHealthExportFunctions.esm.js";const g=()=>{var t;const{groupPassRatesOverviewTrends:{data:r,isLoading:a,isError:o}}=p(),s=(t=r==null?void 0:r.groupPassRates)==null?void 0:t.edges.length,m=!(r!=null&&r.groupPassRates)||!s||a||o;return e.createElement(l,{title:"Team pass rate",subtitle:"Compare the aggregate pass rate for teams",chartSectionContent:e.createElement(n,null),disableDataExport:m,csvFilename:i,csvData:u(r)})};export{g as GroupPassRateCard};
1
+ import t from"react";import{groupPassRatesSummaryCsvFilename as m}from"../../utils/charts.esm.js";import"recharts";import"../Charts/ChartTypes.esm.js";import"../Charts/LineChart/LineChart.esm.js";import"@material-ui/core";import"../Charts/chartUtils.esm.js";import"luxon";import{useSummaryAggregationsContext as i}from"../TechHealthSummary/SummaryAggregationsProvider.esm.js";import"@backstage/catalog-model";import"../Charts/BarChart/BarChart.esm.js";import{GroupPassRateHistoryBarChart as p}from"../Charts/BarChart/GroupPassRateHistoryBarChart.esm.js";import{OverviewChartCard as n}from"../OverviewChartCard/OverviewChartCard.esm.js";import"../OverviewChartCard/OverviewChartCardStyles.esm.js";import{overallGroupPassRatesToCsv as g}from"../TechHealthTabs/TechHealthExportFunctions.esm.js";const u=()=>{const{groupPassRatesOverviewTrends:{data:r,isLoading:e,isError:a}}=i(),o=r?.groupPassRates?.edges.length,s=!r?.groupPassRates||!o||e||a;return t.createElement(n,{title:"Team pass rate",subtitle:"Compare the aggregate pass rate for teams",chartSectionContent:t.createElement(p,null),disableDataExport:s,csvFilename:m,csvData:g(r)})};export{u as GroupPassRateCard};
2
2
  //# sourceMappingURL=GroupPassRateCard.esm.js.map
@@ -1,2 +1,2 @@
1
- import{useApi as E,configApiRef as b}from"@backstage/core-plugin-api";import{makeStyles as O,alpha as k,TextField as y,CircularProgress as F}from"@material-ui/core";import P from"@material-ui/lab/Autocomplete";import c,{useMemo as w,useCallback as v,useEffect as f}from"react";import{useSearchParams as x}from"react-router-dom";import A from"react-use/lib/useLocalStorage";import{useOptions as L}from"./useOptions.esm.js";const G=O(r=>({root:{width:"100%",minWidth:250},textField:{"& $notchedOutline":{borderColor:k(r.page.fontColor,.25)},"&:hover $notchedOutline":{borderColor:r.page.fontColor}},input:{backgroundColor:"transparent",color:r.page.fontColor},clearIndicator:{color:r.page.fontColor},popupIndicator:{color:r.page.fontColor},notchedOutline:{}}),{name:"SoundcheckGroupSelector"}),N=({setError:r})=>{const{options:o,isLoading:u,isError:d}=L(),l=G(),[p,h]=x(),[a,C]=A("soundcheck.overview.groupRef",null),i=p.get("group"),m=E(b).getOptionalString("soundcheck.overview.defaultSelectedGroupType"),s=w(()=>{var e,t;if(!u&&o.length){if(i||a){const g=i!=null?i:a;return(e=o.find(S=>S.ref===g))!=null?e:o[0]}else if(m)return(t=o.find(g=>g.type===m))!=null?t:o[0];return o[0]}return null},[m,u,o,i,a]),n=v((e,t)=>{e&&p.get("group")!==e&&(p.set("group",e),h(p,{replace:t}),C(e))},[p,C,h]),I=v((e,t)=>{n==null||n(t==null?void 0:t.ref)},[n]);return f(()=>{a&&!i&&n(a,!0)},[a,i,n]),f(()=>{n(s==null?void 0:s.ref,!0)},[n,s]),f(()=>{r==null||r(d?new Error("Error loading groups"):void 0)},[d,r]),d?null:c.createElement(P,{"aria-label":"Current group",className:l.root,classes:{clearIndicator:l.clearIndicator,popupIndicator:l.popupIndicator},disableClearable:!0,options:o!=null?o:[],loading:u,groupBy:e=>e.key,value:s,freeSolo:!1,onChange:I,getOptionLabel:e=>e.name,renderInput:e=>c.createElement(y,{...e,variant:"outlined",placeholder:u?"Loading":"Select a group",className:l.textField,InputProps:{...e.InputProps,className:l.input,classes:{notchedOutline:l.notchedOutline},endAdornment:c.createElement(c.Fragment,null,u?c.createElement(F,{color:"inherit",size:20}):null,e.InputProps.endAdornment)}})})};export{N as GroupSelector};
1
+ import{useApi as S,configApiRef as v}from"@backstage/core-plugin-api";import{makeStyles as E,alpha as b,TextField as O,CircularProgress as k}from"@material-ui/core";import y from"@material-ui/lab/Autocomplete";import u,{useMemo as F,useCallback as C,useEffect as g}from"react";import{useSearchParams as P}from"react-router-dom";import w from"react-use/lib/useLocalStorage";import{useOptions as x}from"./useOptions.esm.js";const A=E(r=>({root:{width:"100%",minWidth:250},textField:{"& $notchedOutline":{borderColor:b(r.page.fontColor,.25)},"&:hover $notchedOutline":{borderColor:r.page.fontColor}},input:{backgroundColor:"transparent",color:r.page.fontColor},clearIndicator:{color:r.page.fontColor},popupIndicator:{color:r.page.fontColor},notchedOutline:{}}),{name:"SoundcheckGroupSelector"}),G=({setError:r})=>{const{options:o,isLoading:a,isError:s}=x(),t=A(),[i,f]=P(),[n,h]=w("soundcheck.overview.groupRef",null),p=i.get("group"),d=S(v).getOptionalString("soundcheck.overview.defaultSelectedGroupType"),m=F(()=>{if(!a&&o.length){if(p||n){const e=p??n;return o.find(c=>c.ref===e)??o[0]}else if(d)return o.find(e=>e.type===d)??o[0];return o[0]}return null},[d,a,o,p,n]),l=C((e,c)=>{e&&i.get("group")!==e&&(i.set("group",e),f(i,{replace:c}),h(e))},[i,h,f]),I=C((e,c)=>{l?.(c?.ref)},[l]);return g(()=>{n&&!p&&l(n,!0)},[n,p,l]),g(()=>{l(m?.ref,!0)},[l,m]),g(()=>{r?.(s?new Error("Error loading groups"):void 0)},[s,r]),s?null:u.createElement(y,{"aria-label":"Current group",className:t.root,classes:{clearIndicator:t.clearIndicator,popupIndicator:t.popupIndicator},disableClearable:!0,options:o??[],loading:a,groupBy:e=>e.key,value:m,freeSolo:!1,onChange:I,getOptionLabel:e=>e.name,renderInput:e=>u.createElement(O,{...e,variant:"outlined",placeholder:a?"Loading":"Select a group",className:t.textField,InputProps:{...e.InputProps,className:t.input,classes:{notchedOutline:t.notchedOutline},endAdornment:u.createElement(u.Fragment,null,a?u.createElement(k,{color:"inherit",size:20}):null,e.InputProps.endAdornment)}})})};export{G as GroupSelector};
2
2
  //# sourceMappingURL=GroupSelector.esm.js.map
@@ -1,2 +1,2 @@
1
- import{LinearGauge as b}from"@backstage/core-components";import{useTheme as w,Paper as x,Grid as c,Typography as y,Box as B}from"@material-ui/core";import{makeStyles as I}from"@material-ui/core/styles";import t from"react";import{LevelBadge as k}from"../Badges/LevelBadge.esm.js";import"../Badges/NoLevelBadge.esm.js";import"../Badges/CampaignBadge.esm.js";import{generateBadge as P}from"../Badges/badge.esm.js";import{getChartColors as R}from"../Charts/chartUtils.esm.js";import{CheckCard as O}from"../CheckCard/CheckCard.esm.js";import{LevelTooltip as T}from"./LevelTooltip.esm.js";const E=(e,a)=>{var l;if(!((l=e==null?void 0:e.certificationStatus)!=null&&l.numberOfEntities)||a===void 0)return;const n=e.certificationStatus.statusByLevel.findIndex(s=>s.ordinal===a);if(n===-1)return;const r=e.certificationStatus.numberOfEntities,i=[];for(const s of e.certificationStatus.statusByLevel){const m=s.cumulativelyPassed;i.push(r?Math.round(m/r*100):100)}return i[n]},C=(e,a)=>{var l;if(!((l=e==null?void 0:e.certificationStatus)!=null&&l.numberOfEntities)||a===void 0)return;const n=e.certificationStatus.statusByLevel.findIndex(i=>i.ordinal===a);if(n===-1)return 0;const r=[];for(const i of e.certificationStatus.statusByLevel){const s=i.cumulativelyPassed;r.push(s)}for(let i=r.length-2;i>=0;i--)r[i]=Math.min(r[i]+r[i+1],100);return r[n]},z=I(e=>({card:{border:`1px solid ${e.palette.divider}`,width:"99%"},title:{fontWeight:"bold",fontSize:"1.1rem",cursor:"default"},header:{borderBottom:`1px solid ${e.palette.divider}`,width:"100%",padding:e.spacing(1,2),margin:0},levelNameContainer:{gridGap:e.spacing(1),width:"fit-content",padding:0},passRate:{fontWeight:"bold",fontSize:e.typography.overline.fontSize,cursor:"default"},gaugeContainer:{width:200,paddingLeft:e.spacing(.75),paddingRight:e.spacing(.75),paddingTop:2},content:{padding:e.spacing(2.5,2),display:"flex",gap:e.spacing(2)},description:{padding:0},gridItem:{padding:0}})),G=({track:e,level:a,index:l,data:n,lifecycles:r,owners:i,types:s,systems:m,isLoading:L})=>{var p,f,g,v;const o=z(),N=R(w()),d=E(n,a.ordinal),h=C(n,a.ordinal),S=d!==void 0?`${d}%`:"";return t.createElement(x,{elevation:1,className:o.card},t.createElement(c,{container:!0,alignItems:"center",justifyContent:"space-between",direction:"row",className:o.header},t.createElement(c,{item:!0,container:!0,alignItems:"center",direction:"row",className:o.levelNameContainer},t.createElement(k,{badge:(p=a.badge)!=null?p:P(a.ordinal,e)}),t.createElement(T,{level:a,numerator:h!=null?h:0,denominator:(g=(f=n==null?void 0:n.certificationStatus)==null?void 0:f.numberOfEntities)!=null?g:0},t.createElement(y,{className:o.title},(v=a.name)!=null?v:`Level ${a.ordinal}`))),t.createElement(c,{item:!0,className:o.gridItem},t.createElement(c,{container:!0,item:!0,className:o.gridItem},t.createElement(y,{variant:"overline",className:o.passRate},S),t.createElement("div",{className:o.gaugeContainer},t.createElement(b,{value:(d!=null?d:0)/100,getColor:u=>N[l]}))))),t.createElement(B,{className:o.content},t.createElement(c,{container:!0,spacing:1},a.checks.map(u=>t.createElement(c,{item:!0,xs:12,sm:6,md:4,className:o.gridItem,key:u.id},t.createElement(O,{track:e,check:u,lifecycles:r,owners:i,types:s,systems:m,isLoading:L}))))))};export{G as LevelCard,E as calculateCumulativePassRate,C as calculateCumulativePassRateNumerator};
1
+ import{LinearGauge as E}from"@backstage/core-components";import{useTheme as C,Paper as N,Grid as c,Typography as p,Box as S}from"@material-ui/core";import{makeStyles as b}from"@material-ui/core/styles";import t from"react";import{LevelBadge as L}from"../Badges/LevelBadge.esm.js";import"../Badges/NoLevelBadge.esm.js";import"../Badges/CampaignBadge.esm.js";import{generateBadge as w}from"../Badges/badge.esm.js";import{getChartColors as x}from"../Charts/chartUtils.esm.js";import{CheckCard as B}from"../CheckCard/CheckCard.esm.js";import{LevelTooltip as I}from"./LevelTooltip.esm.js";const u=(e,a)=>{if(!e?.certificationStatus?.numberOfEntities||a===void 0)return;const o=e.certificationStatus.statusByLevel.findIndex(s=>s.ordinal===a);if(o===-1)return;const r=e.certificationStatus.numberOfEntities,n=[];for(const s of e.certificationStatus.statusByLevel){const l=s.cumulativelyPassed;n.push(r?Math.round(l/r*100):100)}return n[o]},f=(e,a)=>{if(!e?.certificationStatus?.numberOfEntities||a===void 0)return;const o=e.certificationStatus.statusByLevel.findIndex(n=>n.ordinal===a);if(o===-1)return 0;const r=[];for(const n of e.certificationStatus.statusByLevel){const s=n.cumulativelyPassed;r.push(s)}for(let n=r.length-2;n>=0;n--)r[n]=Math.min(r[n]+r[n+1],100);return r[o]},k=b(e=>({card:{border:`1px solid ${e.palette.divider}`,width:"99%"},title:{fontWeight:"bold",fontSize:"1.1rem",cursor:"default"},header:{borderBottom:`1px solid ${e.palette.divider}`,width:"100%",padding:e.spacing(1,2),margin:0},levelNameContainer:{gridGap:e.spacing(1),width:"fit-content",padding:0},passRate:{fontWeight:"bold",fontSize:e.typography.overline.fontSize,cursor:"default"},gaugeContainer:{width:200,paddingLeft:e.spacing(.75),paddingRight:e.spacing(.75),paddingTop:2},content:{padding:e.spacing(2.5,2),display:"flex",gap:e.spacing(2)},description:{padding:0},gridItem:{padding:0}})),P=({track:e,level:a,index:o,data:r,lifecycles:n,owners:s,types:l,systems:g})=>{const i=k(),v=x(C()),m=u(r,a.ordinal),h=f(r,a.ordinal),y=m!==void 0?`${m}%`:"";return t.createElement(N,{elevation:1,className:i.card},t.createElement(c,{container:!0,alignItems:"center",justifyContent:"space-between",direction:"row",className:i.header},t.createElement(c,{item:!0,container:!0,alignItems:"center",direction:"row",className:i.levelNameContainer},t.createElement(L,{badge:a.badge??w(a.ordinal,e)}),t.createElement(I,{level:a,numerator:h??0,denominator:r?.certificationStatus?.numberOfEntities??0},t.createElement(p,{className:i.title},a.name??`Level ${a.ordinal}`))),t.createElement(c,{item:!0,className:i.gridItem},t.createElement(c,{container:!0,item:!0,className:i.gridItem},t.createElement(p,{variant:"overline",className:i.passRate},y),t.createElement("div",{className:i.gaugeContainer},t.createElement(E,{value:(m??0)/100,getColor:d=>v[o]}))))),t.createElement(S,{className:i.content},t.createElement(c,{container:!0,spacing:1},a.checks.map(d=>t.createElement(c,{item:!0,xs:12,sm:6,md:4,className:i.gridItem,key:d.id},t.createElement(B,{track:e,check:d,lifecycles:n,owners:s,types:l,systems:g}))))))};export{P as LevelCard,u as calculateCumulativePassRate,f as calculateCumulativePassRateNumerator};
2
2
  //# sourceMappingURL=LevelCard.esm.js.map
@@ -1,2 +1,2 @@
1
- import{MarkdownContent as s}from"@backstage/core-components";import{makeStyles as d,Typography as i}from"@material-ui/core";import e from"react";import{StyledTooltip as p}from"../StyledTooltip/StyledTooltip.esm.js";const c=d(()=>({root:{display:"flex"},boldCaption:{fontWeight:"bold"}})),v=({ordinal:o,name:a,description:r,numerator:l,denominator:n})=>{const t=c();return e.createElement("div",{className:t.root},e.createElement("div",null,a?e.createElement(e.Fragment,null,e.createElement("div",null,e.createElement(i,{variant:"caption",className:t.boldCaption},a)),e.createElement("div",null,e.createElement(i,{variant:"caption"},`Level ${o}`))):e.createElement(i,{variant:"caption",className:t.boldCaption},`Level ${o}`),r&&e.createElement(s,{content:r}),n&&n>0?`${l} of ${n} entities passing`:`${l} entities passing`))},u=({children:o,level:a,numerator:r,denominator:l})=>{const{ordinal:n,name:t,description:m}=a;return e.createElement(p,{arrow:!0,title:e.createElement(v,{ordinal:n,name:t!=null?t:void 0,description:m!=null?m:void 0,numerator:r,denominator:l}),enterDelay:500,placement:"bottom"},o)};export{u as LevelTooltip,c as useStyles};
1
+ import{MarkdownContent as s}from"@backstage/core-components";import{makeStyles as d,Typography as i}from"@material-ui/core";import e from"react";import{StyledTooltip as p}from"../StyledTooltip/StyledTooltip.esm.js";const m=d(()=>({root:{display:"flex"},boldCaption:{fontWeight:"bold"}})),v=({ordinal:o,name:a,description:r,numerator:l,denominator:t})=>{const n=m();return e.createElement("div",{className:n.root},e.createElement("div",null,a?e.createElement(e.Fragment,null,e.createElement("div",null,e.createElement(i,{variant:"caption",className:n.boldCaption},a)),e.createElement("div",null,e.createElement(i,{variant:"caption"},`Level ${o}`))):e.createElement(i,{variant:"caption",className:n.boldCaption},`Level ${o}`),r&&e.createElement(s,{content:r}),t&&t>0?`${l} of ${t} entities passing`:`${l} entities passing`))},E=({children:o,level:a,numerator:r,denominator:l})=>{const{ordinal:t,name:n,description:c}=a;return e.createElement(p,{arrow:!0,title:e.createElement(v,{ordinal:t,name:n??void 0,description:c??void 0,numerator:r,denominator:l}),enterDelay:500,placement:"bottom"},o)};export{E as LevelTooltip,m as useStyles};
2
2
  //# sourceMappingURL=LevelTooltip.esm.js.map
@@ -1,2 +1,2 @@
1
- import{useEntity as y}from"@backstage/plugin-catalog-react";import{makeStyles as g}from"@material-ui/core";import l,{useState as E,useEffect as w}from"react";import C from"react-confetti";import L from"react-use/lib/useMeasure";import a from"react-use/lib/usePrevious";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import{useCertificationDetailsForTrack as P}from"../../hooks/certifications/useCertificationDetailsForTrack.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";const b=g(()=>({root:{position:"absolute",width:"100%",height:"100%"}})),k=({programId:t})=>{var e,r;const f=b(),{entity:s}=y(),{data:m,isLoading:d}=P(s,t),[c,{width:u,height:h}]=L(),o=d?void 0:(r=(e=m==null?void 0:m.highestLevel)==null?void 0:e.ordinal)!=null?r:-1,i=a(o),n=a(t),[v,p]=E(!1);return w(()=>{typeof i!="undefined"&&typeof o!="undefined"&&t===n&&o>i&&p(!0)},[o,i,t,n]),v?l.createElement("div",{ref:c,className:f.root},l.createElement(C,{width:u,height:h,numberOfPieces:1e3,gravity:1,initialVelocityY:20,recycle:!1,onConfettiComplete:()=>p(!1)})):null};export{k as LevelUpParty};
1
+ import{useEntity as d}from"@backstage/plugin-catalog-react";import{makeStyles as y}from"@material-ui/core";import m,{useState as g,useEffect as v}from"react";import C from"react-confetti";import E from"react-use/lib/useMeasure";import p from"react-use/lib/usePrevious";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import{useCertificationDetailsForTrack as L}from"../../hooks/certifications/useCertificationDetailsForTrack.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";const w=y(()=>({root:{position:"absolute",width:"100%",height:"100%"}})),P=({programId:t})=>{const a=w(),{entity:n}=d(),{data:s,isLoading:f}=L(n,t),[l,{width:c,height:h}]=E(),o=f?void 0:s?.highestLevel?.ordinal??-1,i=p(o),e=p(t),[u,r]=g(!1);return v(()=>{typeof i<"u"&&typeof o<"u"&&t===e&&o>i&&r(!0)},[o,i,t,e]),u?m.createElement("div",{ref:l,className:a.root},m.createElement(C,{width:c,height:h,numberOfPieces:1e3,gravity:1,initialVelocityY:20,recycle:!1,onConfettiComplete:()=>r(!1)})):null};export{P as LevelUpParty};
2
2
  //# sourceMappingURL=LevelUpParty.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as r,Grid as i,CircularProgress as o}from"@material-ui/core";import n from"react";const a=r(e=>({loadingContainer:{marginTop:e.spacing(1),display:"flex",justifyContent:"center",alignItems:"center",height:"100%"}})),s=({size:e})=>{const t=a();return n.createElement(i,{container:!0,className:t.loadingContainer},n.createElement(o,{size:e}))};export{s as LoadingIndicator};
1
+ import{makeStyles as i,Grid as r,CircularProgress as a}from"@material-ui/core";import n from"react";const o=i(e=>({loadingContainer:{marginTop:e.spacing(1),display:"flex",justifyContent:"center",alignItems:"center",height:"100%"}})),s=({size:e})=>{const t=o();return n.createElement(r,{"aria-label":"loading indicator",container:!0,className:t.loadingContainer},n.createElement(a,{size:e}))};export{s as LoadingIndicator};
2
2
  //# sourceMappingURL=LoadingIndicator.esm.js.map
@@ -1,2 +1,2 @@
1
- import{withStyles as v,Button as k,makeStyles as w,Popover as y,TextField as C,Checkbox as F}from"@material-ui/core";import P from"@material-ui/icons/ArrowDropDown";import{Autocomplete as O}from"@material-ui/lab";import t,{useState as T}from"react";const c=v(e=>({root:{color:e.palette.text.primary,paddingLeft:e.spacing(1),paddingRight:e.spacing(1),textTransform:"initial"}}))(k),I=w(e=>({root:{borderBottom:`1px solid ${e.palette.grey.A100}`,padding:e.spacing(1.5),backgroundColor:e.palette.background.paper},popper:{width:300,height:400,overflow:"hidden"},paper:{boxShadow:"none",margin:0},popperDisablePortal:{width:"100% !important"},option:{padding:e.spacing(.5),'&[data-selected="true"]':{background:"inherit"}},chips:{display:"flex",flexWrap:"wrap"},chip:{margin:1},listbox:{margin:1,height:320}})),S=({name:e,options:s,label:a,icon:d,filters:m,setFilters:u,disabled:g,customRenderOption:n})=>{const r=I(),[i,p]=T(null),h=o=>{p(o.currentTarget)},f=()=>{p(null)},b=(o,l)=>{u(l)},x=o=>t.createElement(C,{...o,name:"filter",variant:"outlined",placeholder:"Filter",fullWidth:!0}),E=(o,{selected:l})=>t.createElement(t.Fragment,null,t.createElement(F,{value:o,checked:l,color:"primary"}),o);return t.createElement(t.Fragment,null,t.createElement(c,{startIcon:d,endIcon:t.createElement(P,null),onClick:h,disabled:g},a),t.createElement(y,{id:`${a}-filter-popover`,open:!!i,anchorEl:i,onClose:f,anchorOrigin:{vertical:"bottom",horizontal:"left"},transformOrigin:{vertical:"top",horizontal:"left"},PaperProps:{elevation:2,className:r.popper}},t.createElement(O,{multiple:!0,disablePortal:!0,classes:{root:r.root,paper:r.paper,popperDisablePortal:r.popperDisablePortal,option:r.option,listbox:r.listbox},renderOption:n!=null?n:E,id:`multi-select-filter-${e}--select`,value:m,options:s,limitTags:3,onChange:b,getOptionSelected:(o,l)=>o.toLowerCase()===l.toLowerCase(),renderInput:x,renderTags:()=>null,closeIcon:null,popupIcon:null,handleHomeEndKeys:!0,clearOnEscape:!0,open:!0})))};export{c as QuickFilterButton,S as default};
1
+ import{withStyles as v,Button as k,makeStyles as w,Popover as O,TextField as y,Checkbox as C}from"@material-ui/core";import F from"@material-ui/icons/ArrowDropDown";import{Autocomplete as P}from"@material-ui/lab";import t,{useState as I}from"react";const p=v(e=>({root:{color:e.palette.text.primary,paddingLeft:e.spacing(1),paddingRight:e.spacing(1),textTransform:"initial"}}))(k),S=w(e=>({root:{borderBottom:`1px solid ${e.palette.grey.A100}`,padding:e.spacing(1.5),backgroundColor:e.palette.background.paper},popper:{width:300,height:400,overflow:"hidden"},paper:{boxShadow:"none",margin:0},popperDisablePortal:{width:"100% !important"},option:{padding:e.spacing(.5),'&[data-selected="true"]':{background:"inherit"}},chips:{display:"flex",flexWrap:"wrap"},chip:{margin:1},listbox:{margin:1,height:320}})),T=({name:e,options:c,label:a,icon:s,filters:d,setFilters:m,disabled:u,customRenderOption:g})=>{const r=S(),[n,i]=I(null),h=o=>{i(o.currentTarget)},f=()=>{i(null)},b=(o,l)=>{m(l)},x=o=>t.createElement(y,{...o,name:"filter",variant:"outlined",placeholder:"Filter",fullWidth:!0}),E=(o,{selected:l})=>t.createElement(t.Fragment,null,t.createElement(C,{value:o,checked:l,color:"primary"}),o);return t.createElement(t.Fragment,null,t.createElement(p,{startIcon:s,endIcon:t.createElement(F,null),onClick:h,disabled:u},a),t.createElement(O,{id:`${a}-filter-popover`,open:!!n,anchorEl:n,onClose:f,anchorOrigin:{vertical:"bottom",horizontal:"left"},transformOrigin:{vertical:"top",horizontal:"left"},PaperProps:{elevation:2,className:r.popper}},t.createElement(P,{multiple:!0,disablePortal:!0,classes:{root:r.root,paper:r.paper,popperDisablePortal:r.popperDisablePortal,option:r.option,listbox:r.listbox},renderOption:g??E,id:`multi-select-filter-${e}--select`,value:d,options:c,limitTags:3,onChange:b,getOptionSelected:(o,l)=>o.toLowerCase()===l.toLowerCase(),renderInput:x,renderTags:()=>null,closeIcon:null,popupIcon:null,handleHomeEndKeys:!0,clearOnEscape:!0,open:!0})))};export{p as QuickFilterButton,T as default};
2
2
  //# sourceMappingURL=MultiSelectFilter.esm.js.map
@@ -1,2 +1,2 @@
1
- import{useRouteRef as p}from"@backstage/core-plugin-api";import{EntityRefLink as M}from"@backstage/plugin-catalog-react";import{Typography as t,Button as z,Menu as O,MenuItem as v}from"@material-ui/core";import j from"@material-ui/icons/ArrowDropDown";import A from"@material-ui/icons/ArrowDropUp";import e,{useState as B}from"react";import{useNavigate as F}from"react-router-dom";import{useEntityPassRateTrend as J}from"../../../hooks/aggregations/useEntityPassRateTrend.esm.js";import{campaignDetailsRouteRef as Q,campaignEditRouteRef as V}from"../../../routes.esm.js";import{convertToReadableDate as f}from"../../CampaignsTab/CampaignDetailsPage/CampaignDetails.esm.js";import{Loading as W}from"../../TechHealth/Loading/Loading.esm.js";import{useCampaignRowStyles as $}from"./useCampaignRowStyles.esm.js";import{calculateOverallPassPercent as q,calculatePassingEntities as G}from"./utils.esm.js";const H=l=>{if(l!=null&&l.edges.length){const n=G(l);return e.createElement(t,{variant:"body2"},n,"/",l.edges.length)}return e.createElement(t,{variant:"body2"},"No progress found.")},K=({campaign:l})=>{var n;const a=$(),g=p(Q),N=p(V),c=F(),[i,o]=B(null),d=150,b=l.track.levels.flatMap(({checks:m})=>m.map(({id:L})=>L)),{data:u,isLoading:y,isError:C}=J({filter:{tracks:[{trackId:l.track.id}],checkIds:{included:b},numberOfDays:void 0}}),r=(n=u==null?void 0:u.individualEntityPassRates)!=null?n:{totalCount:0,edges:[],pageInfo:{hasNextPage:!1,hasPreviousPage:!1}},R=m=>{o(m.currentTarget)},x=()=>{o(null)},h=()=>{c(N({campaignId:l.id}))},w=()=>{c(g({campaignId:l.id}))};if(y)return e.createElement("div",{"data-testid":"loading-indicator"},e.createElement(W,null));if(C)return e.createElement(t,{color:"error"},"Failed to load campaigns progress.");const k=r.edges.length?q(r):0,P=H(r),{name:D,description:s,ownerEntityRef:I,targetCompletionDate:S,startDate:T,supportChannel:E}=l;return e.createElement("div",{className:a.campaignCards},e.createElement("div",{className:a.campaignCard},e.createElement("div",{className:a.flexRow,style:{justifyContent:"space-between"}},e.createElement("div",{className:a.flexColumn},e.createElement(t,{variant:"h5"},D),e.createElement(t,{variant:"body1",className:a.description},s.length>d?`${s.substring(0,d)}...`:s)),e.createElement("div",null,e.createElement(z,{variant:"text","aria-controls":"menu","aria-haspopup":"true",onClick:R},e.createElement("div",{className:a.actions},e.createElement("div",{className:a.actionsText},"Actions"),e.createElement("div",{className:a.flexRow},i?e.createElement(A,{fontSize:"small"}):e.createElement(j,{fontSize:"small"})))),e.createElement(O,{id:"campaign-menu",anchorEl:i,keepMounted:!0,open:!!i,onClose:x,classes:{list:a.menuList}},e.createElement(v,{onClick:w},"View"),e.createElement(v,{onClick:h},"Edit")))),e.createElement("div",{className:a.detailSection},e.createElement("div",{className:a.flexColumn},e.createElement("div",{className:a.flexRow},e.createElement(t,{variant:"subtitle1",className:a.label},"Owner:"),e.createElement(t,{variant:"body1",display:"inline",className:a.value},e.createElement(M,{className:a.ownerLink,entityRef:I}))),E&&e.createElement("div",{className:a.flexRow},e.createElement(t,{variant:"subtitle1",className:a.label},"Support Channel:"),e.createElement(t,{variant:"body1",display:"inline",className:a.value},E))),e.createElement("div",{className:a.flexColumn},e.createElement("div",{className:a.flexRow},e.createElement(t,{variant:"subtitle1",className:a.label},"Start Date:"),e.createElement(t,{variant:"body1",display:"inline",className:a.value},f(T))),e.createElement("div",{className:a.flexRow},e.createElement(t,{variant:"subtitle1",className:a.label},"Target Completion Date:"),e.createElement(t,{variant:"body1",display:"inline",className:a.value},f(S)))),e.createElement("div",{className:a.flexRow,style:{minWidth:"300px"}},e.createElement("div",{className:a.flexColumn},e.createElement(t,{variant:"subtitle1",className:a.label},"Checks Passing"),e.createElement(t,{variant:"body2"},k,"%")),e.createElement("div",{className:a.flexColumn},e.createElement(t,{variant:"subtitle1",className:a.label},"Entities Complete"),P)))))};export{K as CampaignRow};
1
+ import{useRouteRef as u}from"@backstage/core-plugin-api";import{EntityRefLink as L}from"@backstage/plugin-catalog-react";import{Typography as t,Button as M,Menu as O,MenuItem as E}from"@material-ui/core";import z from"@material-ui/icons/ArrowDropDown";import j from"@material-ui/icons/ArrowDropUp";import e,{useState as q}from"react";import{useNavigate as A}from"react-router-dom";import{useEntityPassRateTrend as B}from"../../../hooks/aggregations/useEntityPassRateTrend.esm.js";import{campaignDetailsRouteRef as F,campaignEditRouteRef as Q}from"../../../routes.esm.js";import{convertToReadableDate as p}from"../../CampaignsTab/CampaignDetailsPage/CampaignDetails.esm.js";import{Loading as V}from"../../TechHealth/Loading/Loading.esm.js";import{useCampaignRowStyles as W}from"./useCampaignRowStyles.esm.js";import{calculateOverallPassPercent as G,calculatePassingEntities as H}from"./utils.esm.js";const J=l=>{if(l?.edges.length){const a=H(l);return e.createElement(t,{variant:"body2"},a,"/",l.edges.length)}return e.createElement(t,{variant:"body2"},"No progress found.")},K=({campaign:l})=>{const a=W(),v=u(F),f=u(Q),m=A(),[n,c]=q(null),o=150,g=l.track.levels.flatMap(({checks:s})=>s.map(({id:T})=>T)),{data:N,isLoading:b,isError:y}=B({filter:{tracks:[{trackId:l.track.id}],checkIds:{included:g},numberOfDays:void 0}}),i=N?.individualEntityPassRates??{totalCount:0,edges:[],pageInfo:{hasNextPage:!1,hasPreviousPage:!1}},C=s=>{c(s.currentTarget)},R=()=>{c(null)},x=()=>{m(f({campaignId:l.id}))},h=()=>{m(v({campaignId:l.id}))};if(b)return e.createElement("div",{"data-testid":"loading-indicator"},e.createElement(V,null));if(y)return e.createElement(t,{color:"error"},"Failed to load campaigns progress.");const w=i.edges.length?G(i):0,k=J(i),{name:P,description:r,ownerEntityRef:D,targetCompletionDate:I,startDate:S,supportChannel:d}=l;return e.createElement("div",{className:a.campaignCards},e.createElement("div",{className:a.campaignCard},e.createElement("div",{className:a.flexRow,style:{justifyContent:"space-between"}},e.createElement("div",{className:a.flexColumn},e.createElement(t,{variant:"h5"},P),e.createElement(t,{variant:"body1",className:a.description},r.length>o?`${r.substring(0,o)}...`:r)),e.createElement("div",null,e.createElement(M,{variant:"text","aria-controls":"menu","aria-haspopup":"true",onClick:C},e.createElement("div",{className:a.actions},e.createElement("div",{className:a.actionsText},"Actions"),e.createElement("div",{className:a.flexRow},n?e.createElement(j,{fontSize:"small"}):e.createElement(z,{fontSize:"small"})))),e.createElement(O,{id:"campaign-menu",anchorEl:n,keepMounted:!0,open:!!n,onClose:R,classes:{list:a.menuList}},e.createElement(E,{onClick:h},"View"),e.createElement(E,{onClick:x},"Edit")))),e.createElement("div",{className:a.detailSection},e.createElement("div",{className:a.flexColumn},e.createElement("div",{className:a.flexRow},e.createElement(t,{variant:"subtitle1",className:a.label},"Owner:"),e.createElement(t,{variant:"body1",display:"inline",className:a.value},e.createElement(L,{className:a.ownerLink,entityRef:D}))),d&&e.createElement("div",{className:a.flexRow},e.createElement(t,{variant:"subtitle1",className:a.label},"Support Channel:"),e.createElement(t,{variant:"body1",display:"inline",className:a.value},d))),e.createElement("div",{className:a.flexColumn},e.createElement("div",{className:a.flexRow},e.createElement(t,{variant:"subtitle1",className:a.label},"Start Date:"),e.createElement(t,{variant:"body1",display:"inline",className:a.value},p(S))),e.createElement("div",{className:a.flexRow},e.createElement(t,{variant:"subtitle1",className:a.label},"Target Completion Date:"),e.createElement(t,{variant:"body1",display:"inline",className:a.value},p(I)))),e.createElement("div",{className:a.flexRow,style:{minWidth:"300px"}},e.createElement("div",{className:a.flexColumn},e.createElement(t,{variant:"subtitle1",className:a.label},"Checks Passing"),e.createElement(t,{variant:"body2"},w,"%")),e.createElement("div",{className:a.flexColumn},e.createElement(t,{variant:"subtitle1",className:a.label},"Entities Complete"),k)))))};export{K as CampaignRow};
2
2
  //# sourceMappingURL=CampaignRow.esm.js.map
@@ -1,2 +1,2 @@
1
- const a=e=>{var l;let n=0;return e==null||e.edges.forEach(({node:s})=>{n+=s.snapshotPassRate}),Math.round(n/((l=e==null?void 0:e.edges.length)!=null?l:1))},t=e=>e==null?void 0:e.edges.filter(({node:l})=>l.snapshotPassRate===100).length;export{a as calculateOverallPassPercent,t as calculatePassingEntities};
1
+ const a=e=>{let s=0;return e?.edges.forEach(({node:t})=>{s+=t.snapshotPassRate}),Math.round(s/(e?.edges.length??1))},n=e=>e?.edges.filter(({node:s})=>s.snapshotPassRate===100).length;export{a as calculateOverallPassPercent,n as calculatePassingEntities};
2
2
  //# sourceMappingURL=utils.esm.js.map
@@ -1,2 +1,2 @@
1
- import{Link as O}from"@backstage/core-components";import{useRouteRef as A}from"@backstage/core-plugin-api";import{makeStyles as G,Grid as m,Accordion as L,AccordionSummary as R,Typography as P,AccordionDetails as $}from"@material-ui/core";import F from"@material-ui/icons/ExpandMore";import e,{useState as k,useEffect as T,useCallback as I}from"react";import{useSearchParams as B}from"react-router-dom";import{useGetCampaigns as D}from"../../hooks/campaigns/useGetCampaigns.esm.js";import{useFacetsForOwner as M}from"../../hooks/facets/useFacetsForOwner.esm.js";import{campaignsPageRouteRef as V}from"../../routes.esm.js";import{LoadingIndicator as _}from"../LoadingIndicator/LoadingIndicator.esm.js";import{CampaignRow as j}from"./CampaignRow/CampaignRow.esm.js";import{OverviewTabs as z}from"./OverviewTabs.esm.js";import{OverviewTabsSkeleton as H}from"./skeletons/OverviewTabsSkeleton.esm.js";import{TableContent as U}from"./TableContent/TableContent.esm.js";const W=G(t=>({tableContainer:{padding:0,backgroundColor:"transparent"},campaignsGrid:{margin:`0 0 ${t.spacing(3)}px`,border:`1px solid ${t.palette.divider}`},campaignsCard:{display:"flex",width:"100%",flexDirection:"column",padding:t.spacing(2),gap:t.spacing(2)},campaignsLink:{textAlign:"center",margin:`${t.spacing(1)}rem 0 ${t.spacing(1)}`},tableLoading:{backgroundColor:t.palette.background.paper,padding:t.spacing(6)},noPadding:{padding:0},accordion:{boxShadow:"none"}})),p=3,q=({groupSelectorError:t,isFixedGroup:b=!1})=>{const[r,g]=B(),{group:l,kind:c,type:d}=Object.fromEntries(r.entries()),C=A(V),[a,u]=k(void 0),[x,h]=k(void 0);T(()=>{((a==null?void 0:a.kind)!==c||(a==null?void 0:a.type)!==d)&&u({kind:c,type:d})},[c,d,a]);const{data:E,isLoading:f}=M(l),{data:v}=D({orderAlphabetical:"default",searchByOwner:l,searchByStatus:"active"}),o=v==null?void 0:v.edges.map(n=>n.node),y=o==null?void 0:o.slice(0,p),w=x||t,S=I((n,s,N)=>{n&&(u({kind:n,type:s}),s?(r.set("kind",n),r.set("type",s)):(r.delete("type"),r.set("kind",n)),g(r,{replace:N}))},[r,g]),i=W();return e.createElement(m,{container:!0,spacing:0},o&&o.length>0&&e.createElement(m,{item:!0,xs:12,className:i.campaignsGrid},e.createElement(L,{style:{boxShadow:"none"}},e.createElement(R,{expandIcon:e.createElement(F,null)},e.createElement(P,{variant:"h6"},"Campaigns")),e.createElement($,null,e.createElement("div",{className:i.campaignsCard},y==null?void 0:y.map(n=>e.createElement("div",{key:n.id},e.createElement(j,{campaign:n})))),o.length>p&&e.createElement(O,{to:C(),className:i.campaignsLink},"More Campaigns")))),e.createElement(m,{item:!0,xs:12,className:i.noPadding},f?e.createElement(H,null):e.createElement(z,{unfilteredFacets:E,kind:a==null?void 0:a.kind,type:a==null?void 0:a.type,onChange:S})),e.createElement(m,{item:!0,xs:12,className:i.tableContainer},f?e.createElement("div",{className:i.tableLoading},e.createElement(_,{size:80})):e.createElement(U,{facets:E,kind:a==null?void 0:a.kind,type:a==null?void 0:a.type,setError:h,hasError:w,ownerEntityRef:l,isFixedGroup:b})))};export{p as OVERVIEW_CAMPAIGNS_COUNT,q as OverviewPageContent};
1
+ import{Link as O}from"@backstage/core-components";import{useRouteRef as A}from"@backstage/core-plugin-api";import{makeStyles as G,Grid as c,Accordion as L,AccordionSummary as R,Typography as P,AccordionDetails as F}from"@material-ui/core";import T from"@material-ui/icons/ExpandMore";import e,{useState as k,useEffect as $,useCallback as I}from"react";import{useSearchParams as B}from"react-router-dom";import{useGetCampaigns as D}from"../../hooks/campaigns/useGetCampaigns.esm.js";import{useFacetsForOwner as M}from"../../hooks/facets/useFacetsForOwner.esm.js";import{campaignsPageRouteRef as V}from"../../routes.esm.js";import{LoadingIndicator as _}from"../LoadingIndicator/LoadingIndicator.esm.js";import{CampaignRow as j}from"./CampaignRow/CampaignRow.esm.js";import{OverviewTabs as q}from"./OverviewTabs.esm.js";import{OverviewTabsSkeleton as z}from"./skeletons/OverviewTabsSkeleton.esm.js";import{TableContent as U}from"./TableContent/TableContent.esm.js";const W=G(a=>({tableContainer:{padding:0,backgroundColor:"transparent"},campaignsGrid:{margin:`0 0 ${a.spacing(3)}px`,border:`1px solid ${a.palette.divider}`},campaignsCard:{display:"flex",width:"100%",flexDirection:"column",padding:a.spacing(2),gap:a.spacing(2)},campaignsLink:{textAlign:"center",margin:`${a.spacing(1)}rem 0 ${a.spacing(1)}`},tableLoading:{backgroundColor:a.palette.background.paper,padding:a.spacing(6)},noPadding:{padding:0},accordion:{boxShadow:"none"}})),l=3,H=({groupSelectorError:a,isFixedGroup:y=!1})=>{const[n,g]=B(),{group:o,kind:s,type:p}=Object.fromEntries(n.entries()),C=A(V),[r,E]=k(void 0),[b,x]=k(void 0);$(()=>{(r?.kind!==s||r?.type!==p)&&E({kind:s,type:p})},[s,p,r]);const{data:f,isLoading:u}=M(o),{data:v}=D({orderAlphabetical:"default",searchByOwner:o,searchByStatus:"active"},!!o),m=v?.edges.map(t=>t.node),h=m?.slice(0,l),w=b||a,S=I((t,d,N)=>{t&&(E({kind:t,type:d}),d?(n.set("kind",t),n.set("type",d)):(n.delete("type"),n.set("kind",t)),g(n,{replace:N}))},[n,g]),i=W();return e.createElement(c,{container:!0,spacing:0},m&&m.length>0&&e.createElement(c,{item:!0,xs:12,className:i.campaignsGrid},e.createElement(L,{style:{boxShadow:"none"}},e.createElement(R,{expandIcon:e.createElement(T,null)},e.createElement(P,{variant:"h6"},"Campaigns")),e.createElement(F,null,e.createElement("div",{className:i.campaignsCard},h?.map(t=>e.createElement("div",{key:t.id},e.createElement(j,{campaign:t})))),m.length>l&&e.createElement(O,{to:C(),className:i.campaignsLink},"More Campaigns")))),e.createElement(c,{item:!0,xs:12,className:i.noPadding},u?e.createElement(z,null):e.createElement(q,{unfilteredFacets:f,kind:r?.kind,type:r?.type,onChange:S})),e.createElement(c,{item:!0,xs:12,className:i.tableContainer},u?e.createElement("div",{className:i.tableLoading},e.createElement(_,{size:80})):e.createElement(U,{facets:f,kind:r?.kind,type:r?.type,setError:x,hasError:w,ownerEntityRef:o,isFixedGroup:y})))};export{l as OVERVIEW_CAMPAIGNS_COUNT,H as OverviewPageContent};
2
2
  //# sourceMappingURL=OverviewPageContent.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as T,Tabs as h,Tab as E}from"@material-ui/core";import d,{useCallback as C,useEffect as $}from"react";import{RefetchingIndicator as B}from"../RefetchingIndicator/RefetchingIndicator.esm.js";const F=T(o=>({root:{borderTop:`1px solid ${o.palette.divider}`,borderBottom:`1px solid ${o.palette.divider}`},tab:{textTransform:"uppercase",paddingTop:o.spacing(2),paddingBottom:o.spacing(2)}})),I=({unfilteredFacets:o,onChange:r,kind:i,type:p})=>{var s,u,c;const f=F(),e={types:(s=o==null?void 0:o.types.filter(({count:n})=>n>0))!=null?s:[]},b=C((n,l)=>{var t;r((t=e==null?void 0:e.types[l].kind)!=null?t:"",e==null?void 0:e.types[l].type)},[e==null?void 0:e.types,r]);$(()=>{var n,l,t;const a=(e==null?void 0:e.types)&&e.types.length>=0,g=!i&&a,k=i&&a&&!(e!=null&&e.types.find(({kind:x,type:m})=>i===x&&(!p&&!m||p===m)));(g||k)&&r((l=(n=e==null?void 0:e.types[0])==null?void 0:n.kind)!=null?l:"",(t=e==null?void 0:e.types[0])==null?void 0:t.type,!0)},[i,p,e==null?void 0:e.types,r]);const y=(u=e==null?void 0:e.types.map(({kind:n,type:l,count:t})=>{const a=`${n}|${l!=null?l:""}`;return{key:a,label:`${l!=null?l:n} (${t>50?"50+":t})`,id:a,className:f.tab}}))!=null?u:[];if(!y.length)return null;const v=(c=e==null?void 0:e.types.findIndex(n=>n.kind===i&&(!n.type&&!p||n.type===p)))!=null?c:-1;return d.createElement(d.Fragment,null,d.createElement(B,null),d.createElement(h,{onChange:b,indicatorColor:"primary",variant:"scrollable",value:v>-1?v:void 0},y.map(n=>d.createElement(E,{...n}))))};export{I as OverviewTabs};
1
+ import{makeStyles as f,Tabs as b,Tab as g}from"@material-ui/core";import s,{useCallback as k,useEffect as $}from"react";import{RefetchingIndicator as v}from"../RefetchingIndicator/RefetchingIndicator.esm.js";const x=f(o=>({root:{borderTop:`1px solid ${o.palette.divider}`,borderBottom:`1px solid ${o.palette.divider}`},tab:{textTransform:"uppercase",paddingTop:o.spacing(2),paddingBottom:o.spacing(2)}})),T=({unfilteredFacets:o,onChange:a,kind:p,type:r})=>{const m=x(),t={types:o?.types.filter(({count:e})=>e>0)??[]},u=k((e,n)=>{a(t?.types[n].kind??"",t?.types[n].type)},[t?.types,a]);$(()=>{const e=t?.types&&t.types.length>=0,n=!p&&e,i=p&&e&&!t?.types.find(({kind:l,type:y})=>p===l&&(!r&&!y||r===y));(n||i)&&a(t?.types[0]?.kind??"",t?.types[0]?.type,!0)},[p,r,t?.types,a]);const d=t?.types.map(({kind:e,type:n,count:i})=>{const l=`${e}|${n??""}`;return{key:l,label:`${n??e} (${i>50?"50+":i})`,id:l,className:m.tab}})??[];if(!d.length)return null;const c=t?.types.findIndex(e=>e.kind===p&&(!e.type&&!r||e.type===r))??-1;return s.createElement(s.Fragment,null,s.createElement(v,null),s.createElement(b,{onChange:u,indicatorColor:"primary",variant:"scrollable",value:c>-1?c:!1},d.map(e=>s.createElement(g,{...e}))))};export{T as OverviewTabs};
2
2
  //# sourceMappingURL=OverviewTabs.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as u}from"@material-ui/core";import e from"react";import{AlertPanel as d}from"../../AlertPanel/AlertPanel.esm.js";import{NoCertifications as y,NoEntities as h}from"../../EmptyState/EmptyState.esm.js";import{VirtualTableContent as v}from"./VirtualTableContent.esm.js";const g=u(()=>({scrollContainer:{overflow:"auto"}})),w=({facets:t,ownerEntityRef:r,hasError:o,kind:a,type:c,setError:m,isFixedGroup:p})=>{var n,i,l;const f=g();if(o)return e.createElement(d,{severity:"error",title:o.message});const s="Use the groups drop-down list at the top-right of the page to select another group.";return t&&((i=(n=t.types)==null?void 0:n.length)!=null?i:0)>0?(l=t.types)!=null&&l.find(E=>E.count>0)?e.createElement("div",{className:f.scrollContainer},e.createElement(v,{facets:t,kind:a,type:c,setError:m,ownerEntityRef:r,hasError:o})):e.createElement(y,{ownerEntityRef:r,selectGroupHint:s}):e.createElement(h,{ownerEntityRef:r,selectGroupHint:p?void 0:s})};export{w as TableContent};
1
+ import{makeStyles as m}from"@material-ui/core";import e from"react";import{AlertPanel as f}from"../../AlertPanel/AlertPanel.esm.js";import{NoCertifications as E,NoEntities as u}from"../../EmptyState/EmptyState.esm.js";import{VirtualTableContent as y}from"./VirtualTableContent.esm.js";const d=m(()=>({scrollContainer:{overflow:"auto"}})),h=({facets:t,ownerEntityRef:r,hasError:o,kind:i,type:s,setError:a,isFixedGroup:l})=>{const c=d();if(o)return e.createElement(f,{severity:"error",title:o.message});const n="Use the groups drop-down list at the top-right of the page to select another group.";return t&&(t.types?.length??0)>0?t.types?.find(p=>p.count>0)?e.createElement("div",{className:c.scrollContainer},e.createElement(y,{facets:t,kind:i,type:s,setError:a,ownerEntityRef:r,hasError:o})):e.createElement(E,{ownerEntityRef:r,selectGroupHint:n}):e.createElement(u,{ownerEntityRef:r,selectGroupHint:l?void 0:n})};export{h as TableContent};
2
2
  //# sourceMappingURL=TableContent.esm.js.map
@@ -1,2 +1,2 @@
1
- import a,{useMemo as p}from"react";import{VirtualizedResultsTable as m}from"../../ResultsTable/virtualized/VirtualizedResultsTable.esm.js";const y=({facets:t,ownerEntityRef:n,kind:u,type:r,setError:o})=>{const c=p(()=>{const l=new Map;return t.types.forEach(({kind:s,type:e})=>{const i=`${s}|${e!=null?e:""}`;l.set(i,a.createElement(m,{key:i,ownerEntityRef:n,kind:s,type:e,setError:o}))}),l},[t,n,o]);return a.createElement("div",null,c.get(`${u}|${r!=null?r:""}`))};export{y as VirtualTableContent};
1
+ import a,{useMemo as u}from"react";import{VirtualizedResultsTable as m}from"../../ResultsTable/virtualized/VirtualizedResultsTable.esm.js";const y=({facets:e,ownerEntityRef:t,kind:l,type:c,setError:r})=>{const p=u(()=>{const n=new Map;return e.types.forEach(({kind:o,type:s})=>{const i=`${o}|${s??""}`;n.set(i,a.createElement(m,{key:i,ownerEntityRef:t,kind:o,type:s,setError:r}))}),n},[e,t,r]);return a.createElement("div",null,p.get(`${l}|${c??""}`))};export{y as VirtualTableContent};
2
2
  //# sourceMappingURL=VirtualTableContent.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as b,TablePagination as h}from"@material-ui/core";import v,{useState as m,useCallback as d}from"react";import{useSearchParams as S}from"react-router-dom";const k=b(a=>({pagination:{width:"-webkit-fill-available",display:"flex",justifyContent:"center",position:"fixed",bottom:"0",left:"0",backgroundColor:a.palette.background.paper,borderTop:`1px solid ${a.palette.divider}`,zIndex:1e3}})),x=({defaultPageSize:a,label:r})=>{const[t,o]=m(),[e,n]=S(),s=e.get(r),P=s?parseInt(s,10):a,[i,l]=m(0),g=d(p=>{var u;e.set("entitiesPerPage",(u=p.target.value)!=null?u:a),n(e,{replace:!0}),l(0),o(void 0)},[a,e,n]);return{cursor:t,setCursor:o,pageSize:P,currentPage:i,setCurrentPage:l,onRowsPerPageChange:g}},z=({totalCount:a,setCursor:r,endCursor:t,prevCursor:o,defaultPageSize:e,currentPage:n,setCurrentPage:s,onRowsPerPageChange:P,pageSize:i,labelRowsPerPage:l,rowsPerPageOptions:g})=>{const p=k(),u=d(()=>{t&&r(t)},[t,r]),f=d(()=>{o&&r(o)},[o,r]),w=(R,c)=>{s(C=>(c>C?u():c<C&&f(),c))};return v.createElement(h,{className:p.pagination,component:"div",count:a,page:n,onPageChange:w,rowsPerPage:i!=null?i:e,onRowsPerPageChange:P,labelRowsPerPage:l,rowsPerPageOptions:g!=null?g:[e,e*2,e*4]})};export{z as CursorPagination,x as useCursorPagination};
1
+ import{makeStyles as f,TablePagination as h}from"@material-ui/core";import S,{useState as d,useCallback as c}from"react";import{useSearchParams as v}from"react-router-dom";const k=f(a=>({pagination:{width:"-webkit-fill-available",display:"flex",justifyContent:"center",position:"fixed",bottom:"0",left:"0",backgroundColor:a.palette.background.paper,borderTop:`1px solid ${a.palette.divider}`,zIndex:1e3}})),x=({defaultPageSize:a,label:r})=>{const[t,o]=d(),[e,n]=v(),s=e.get(r),g=s?parseInt(s,10):a,[l,i]=d(0),P=c(u=>{e.set("entitiesPerPage",u.target.value??a),n(e,{replace:!0}),i(0),o(void 0)},[a,e,n]);return{cursor:t,setCursor:o,pageSize:g,currentPage:l,setCurrentPage:i,onRowsPerPageChange:P}},z=({totalCount:a,setCursor:r,endCursor:t,prevCursor:o,defaultPageSize:e,currentPage:n,setCurrentPage:s,onRowsPerPageChange:g,pageSize:l,labelRowsPerPage:i,rowsPerPageOptions:P})=>{const u=k(),b=c(()=>{t&&r(t)},[t,r]),m=c(()=>{o&&r(o)},[o,r]),w=(R,p)=>{s(C=>(p>C?b():p<C&&m(),p))};return S.createElement(h,{className:u.pagination,component:"div",count:a,page:n,onPageChange:w,rowsPerPage:l??e,onRowsPerPageChange:g,labelRowsPerPage:i,rowsPerPageOptions:P??[e,e*2,e*4]})};export{z as CursorPagination,x as useCursorPagination};
2
2
  //# sourceMappingURL=CursorPagination.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as h,TablePagination as k}from"@material-ui/core";import x,{useState as R}from"react";import{RESULTS_PER_PAGE as r}from"../../utils/filters.esm.js";const S=h(e=>({pagination:{width:"-webkit-fill-available",display:"flex",justifyContent:"center",position:"fixed",bottom:"0",backgroundColor:e.palette.background.paper,borderTop:`1px solid ${e.palette.divider}`,marginRight:"40px"}})),E=({response:e,listingsPerPage:n,cursor:d,setCursor:a,prevCursors:l,setPrevCursors:s,labelPerPageDropdown:t,urlRoute:i})=>{var g;const P=S(),u=e!=null&&e.edges?e==null?void 0:e.edges[(e==null?void 0:e.edges.length)-1]:{cursor:""},[c,m]=R(0),v=()=>{s(o=>[...o,d]),a(u==null?void 0:u.cursor)},b=()=>{a(l[l.length-1]),s(o=>o.slice(0,-1))},f=(o,p)=>{m(C=>(p>C?v():b(),p))},w=o=>{window.open(`/soundcheck/${i!=null?i:"tracks?tracksPerPage="}${o.target.value}`,"_self")};return x.createElement(k,{className:P.pagination,component:"div",count:(g=e==null?void 0:e.totalCount)!=null?g:-1,rowsPerPage:n!=null?n:10,onPageChange:f,page:c,onRowsPerPageChange:w,labelRowsPerPage:t!=null?t:"Listings per page:",rowsPerPageOptions:[r,r*2,r*4]})};export{E as Pagination};
1
+ import{makeStyles as k,TablePagination as C}from"@material-ui/core";import v,{useState as R}from"react";import{RESULTS_PER_PAGE as t}from"../../utils/filters.esm.js";const x=k(e=>({pagination:{width:"-webkit-fill-available",display:"flex",justifyContent:"center",position:"fixed",bottom:"0",backgroundColor:e.palette.background.paper,borderTop:`1px solid ${e.palette.divider}`,marginRight:"40px"}})),E=({response:e,listingsPerPage:i,cursor:g,setCursor:r,prevCursors:a,setPrevCursors:s,labelPerPageDropdown:l,urlRoute:p})=>{const P=x(),c=e?.edges?e?.edges[e?.edges.length-1]:{cursor:""},[u,d]=R(0),m=()=>{s(o=>[...o,g]),r(c?.cursor)},b=()=>{r(a[a.length-1]),s(o=>o.slice(0,-1))},f=(o,n)=>{d(h=>(n>h?m():b(),n))},w=o=>{window.open(`/soundcheck/${p??"tracks?tracksPerPage="}${o.target.value}`,"_self")};return v.createElement(C,{className:P.pagination,component:"div",count:e?.totalCount??-1,rowsPerPage:i??10,onPageChange:f,page:u,onRowsPerPageChange:w,labelRowsPerPage:l??"Listings per page:",rowsPerPageOptions:[t,t*2,t*4]})};export{E as Pagination};
2
2
  //# sourceMappingURL=Pagination.esm.js.map
@@ -1,2 +1,2 @@
1
- import{Box as n,Grid as s,TablePagination as h}from"@material-ui/core";import{makeStyles as C}from"@material-ui/core/styles";import t from"react";import{useNavigate as u}from"react-router-dom";import"recharts";import"../Charts/ChartTypes.esm.js";import{LineChart as w}from"../Charts/LineChart/LineChart.esm.js";import"../Charts/chartUtils.esm.js";import"luxon";import"../TechHealthSummary/SummaryAggregationsProvider.esm.js";import"@backstage/catalog-model";import"../Charts/BarChart/BarChart.esm.js";import{SummaryCard as x}from"../SummaryCard/SummaryCard.esm.js";import{PassRateMetadata as y}from"./PassRateMetadata.esm.js";const E=C(a=>({root:{display:"flex",flexDirection:"column",width:"100%"},gridContainer:{flexGrow:1},cardContent:{display:"flex",flexDirection:"column",gap:a.spacing(1),height:"100%"},footer:{display:"flex",flexDirection:"column",gap:a.spacing(1),justifyContent:"end",marginTop:"auto"}})),R=({data:a,totalCount:m,rowsPerPage:l,page:p,onPageChange:c,onRowsPerPageChange:g})=>{const r=E(),d=u(),f=[{dataKey:"passRate",name:"Pass rate"}];return t.createElement(n,{className:r.root},t.createElement(s,{container:!0,spacing:2,className:r.gridContainer},a.map((e,P)=>{var o,i;return t.createElement(s,{item:!0,key:P,xs:12,sm:12,md:6,lg:4,xl:3},t.createElement(x,{title:(o=e.name)!=null?o:e.id,description:e.description,children:t.createElement(n,{className:r.cardContent},t.createElement(n,{className:r.footer},t.createElement(y,{ownerEntityRef:e.owner,passRates:e.lineChart.snapshotPassRates}),t.createElement(w,{data:e.lineChart.trendPassRates,lines:(i=e.lineChart.lineConfigs)!=null?i:f,height:150}))),handleView:()=>e.navigateTo?d(e.navigateTo):void 0}))})),t.createElement(h,{rowsPerPageOptions:[10,25,50],component:"div",count:m,rowsPerPage:l,page:p,onPageChange:c,onRowsPerPageChange:g,labelRowsPerPage:"Items per page:"}))};export{R as PassRateGrid};
1
+ import{Box as r,Grid as n,TablePagination as P}from"@material-ui/core";import{makeStyles as f}from"@material-ui/core/styles";import t from"react";import{useNavigate as h}from"react-router-dom";import"recharts";import"../Charts/ChartTypes.esm.js";import{LineChart as C}from"../Charts/LineChart/LineChart.esm.js";import"../Charts/chartUtils.esm.js";import"luxon";import"../TechHealthSummary/SummaryAggregationsProvider.esm.js";import"@backstage/catalog-model";import"../Charts/BarChart/BarChart.esm.js";import{SummaryCard as w}from"../SummaryCard/SummaryCard.esm.js";import{PassRateMetadata as x}from"./PassRateMetadata.esm.js";const u=f(a=>({root:{display:"flex",flexDirection:"column",width:"100%"},gridContainer:{flexGrow:1},cardContent:{display:"flex",flexDirection:"column",gap:a.spacing(1),height:"100%"},footer:{display:"flex",flexDirection:"column",gap:a.spacing(1),justifyContent:"end",marginTop:"auto"}})),E=({data:a,totalCount:i,rowsPerPage:s,page:m,onPageChange:l,onRowsPerPageChange:p})=>{const o=u(),c=h(),g=[{dataKey:"passRate",name:"Pass rate"}];return t.createElement(r,{className:o.root},t.createElement(n,{container:!0,spacing:2,className:o.gridContainer},a.map((e,d)=>t.createElement(n,{item:!0,key:d,xs:12,sm:12,md:6,lg:4,xl:3},t.createElement(w,{title:e.name??e.id,description:e.description,children:t.createElement(r,{className:o.cardContent},t.createElement(r,{className:o.footer},t.createElement(x,{ownerEntityRef:e.owner,passRates:e.lineChart.snapshotPassRates}),t.createElement(C,{data:e.lineChart.trendPassRates,lines:e.lineChart.lineConfigs??g,height:150}))),handleView:()=>e.navigateTo?c(e.navigateTo):void 0})))),t.createElement(P,{rowsPerPageOptions:[10,25,50],component:"div",count:i,rowsPerPage:s,page:m,onPageChange:l,onRowsPerPageChange:p,labelRowsPerPage:"Items per page:"}))};export{E as PassRateGrid};
2
2
  //# sourceMappingURL=PassRateGrid.esm.js.map
@@ -1,2 +1,2 @@
1
- import{EntityRefLink as I}from"@backstage/plugin-catalog-react";import{makeStyles as f,List as y,Typography as l,ListItem as i,Tooltip as o,ListItemIcon as s,ListItemText as c}from"@material-ui/core";import h from"@material-ui/icons/Group";import N from"@material-ui/icons/TrendingDown";import g from"@material-ui/icons/TrendingFlat";import u from"@material-ui/icons/TrendingUp";import e from"react";import{Trend as n}from"./types.esm.js";const L=f(a=>({cardSection:{marginBottom:a.spacing(2)},listItem:{padding:0},listItemText:{margin:0},listItemIcon:{marginRight:a.spacing(1),minWidth:0},ownerLink:{"& span":{"&:hover":{textDecoration:"underline"}}}})),T=({ownerEntityRef:a,passRates:p})=>{const t=L();return e.createElement(y,{dense:!0,disablePadding:!0,className:t.cardSection},e.createElement(l,{variant:"overline",color:"textSecondary"},"Details"),a&&e.createElement(i,{disableGutters:!0,className:t.listItem},e.createElement(o,{title:"Owner"},e.createElement(s,{className:t.listItemIcon},e.createElement(h,{color:"inherit",fontSize:"small"}))),e.createElement(c,{className:t.listItemText,primary:e.createElement(I,{className:t.ownerLink,entityRef:a!=null?a:"No Owner",hideIcon:!0})})),p.map(({name:m,value:d,trend:r},E)=>e.createElement(i,{disableGutters:!0,className:t.listItem,key:E},e.createElement(o,{title:"The most recent pass rate."},e.createElement(s,{className:t.listItemIcon},r===n.UP&&e.createElement(u,{color:"inherit",fontSize:"small"}),r===n.DOWN&&e.createElement(N,{color:"inherit",fontSize:"small"}),r===n.FLAT&&e.createElement(g,{color:"inherit",fontSize:"small"}))),e.createElement(c,{className:t.listItemText,primary:e.createElement(l,{variant:"body2",color:"textPrimary"},m!=null?m:"Latest Pass Rate",": ",e.createElement("b",null,Math.round(d),"%"))}))))};export{T as PassRateMetadata};
1
+ import{EntityRefLink as I}from"@backstage/plugin-catalog-react";import{makeStyles as f,List as h,Typography as m,ListItem as i,Tooltip as l,ListItemIcon as o,ListItemText as s}from"@material-ui/core";import y from"@material-ui/icons/Group";import N from"@material-ui/icons/TrendingDown";import L from"@material-ui/icons/TrendingFlat";import g from"@material-ui/icons/TrendingUp";import e from"react";import{Trend as n}from"./types.esm.js";const T=f(a=>({cardSection:{marginBottom:a.spacing(2)},listItem:{padding:0},listItemText:{margin:0},listItemIcon:{marginRight:a.spacing(1),minWidth:0},ownerLink:{"& span":{"&:hover":{textDecoration:"underline"}}}})),x=({ownerEntityRef:a,passRates:c})=>{const t=T();return e.createElement(h,{dense:!0,disablePadding:!0,className:t.cardSection},e.createElement(m,{variant:"overline",color:"textSecondary"},"Details"),a&&e.createElement(i,{disableGutters:!0,className:t.listItem},e.createElement(l,{title:"Owner"},e.createElement(o,{className:t.listItemIcon},e.createElement(y,{color:"inherit",fontSize:"small"}))),e.createElement(s,{className:t.listItemText,primary:e.createElement(I,{className:t.ownerLink,entityRef:a??"No Owner",hideIcon:!0})})),c.map(({name:p,value:d,trend:r},E)=>e.createElement(i,{disableGutters:!0,className:t.listItem,key:E},e.createElement(l,{title:"The most recent pass rate."},e.createElement(o,{className:t.listItemIcon},r===n.UP&&e.createElement(g,{color:"inherit",fontSize:"small"}),r===n.DOWN&&e.createElement(N,{color:"inherit",fontSize:"small"}),r===n.FLAT&&e.createElement(L,{color:"inherit",fontSize:"small"}))),e.createElement(s,{className:t.listItemText,primary:e.createElement(m,{variant:"body2",color:"textPrimary"},p??"Latest Pass Rate",": ",e.createElement("b",null,Math.round(d),"%"))}))))};export{x as PassRateMetadata};
2
2
  //# sourceMappingURL=PassRateMetadata.esm.js.map
@@ -1,2 +1,2 @@
1
- import{parseEntityRef as u}from"@backstage/catalog-model";import{Link as f}from"@backstage/core-components";import{makeStyles as h}from"@material-ui/core";import t,{memo as k}from"react";import{ResultState as p}from"../../../graphql/generated/index.esm.js";import{CheckIcon as v}from"../../CheckIcon/CheckIcon.esm.js";import{CheckCellTooltip as $}from"./CheckCellTooltip.esm.js";const E=h(r=>({root:{padding:0},iconWrapper:{padding:r.spacing(1.5),display:"flex",alignItems:"center",justifyContent:"center"},link:{"&:hover $iconWrapper, &:active $iconWrapper, &:focus $iconWrapper":{backgroundColor:r.palette.action.hover}},icon:{width:"17px",height:"17px"},virtualized:{borderBottom:`1px solid ${r.palette.divider}`,borderRight:`1px solid ${r.palette.divider}`}})),N=k(({programId:r,check:a,entityRef:i,result:o,entityRoute:d,isVirtualized:c})=>{const e=E();if(typeof i!="string"){const m=t.createElement("div",{className:e.iconWrapper},t.createElement("div",{className:e.icon}));return c?t.createElement("div",{className:`${e.root} ${e.virtualized}`,"aria-hidden":!0},m):t.createElement("td",{className:e.root,"aria-hidden":!0},m)}const n=t.createElement(v,{className:e.icon,result:o!=null?o:p.NotReported}),l=t.createElement("div",{className:e.iconWrapper},n),s=o&&o===p.NotApplicable?l:t.createElement(f,{className:e.link,to:`${d(u(i))}/soundcheck/tracks/${r}/checks/${a.id}`},l);return c?t.createElement("div",{className:`${e.root} ${e.virtualized}`},t.createElement($,{check:a,icon:n,entityRef:i},s)):t.createElement("td",{className:`${e.root}`},s)});export{N as CheckCell};
1
+ import{parseEntityRef as f}from"@backstage/catalog-model";import{Link as h}from"@backstage/core-components";import{makeStyles as u}from"@material-ui/core";import t,{memo as k}from"react";import{ResultState as s}from"../../../graphql/generated/index.esm.js";import{CheckIcon as v}from"../../CheckIcon/CheckIcon.esm.js";import{CheckCellTooltip as $}from"./CheckCellTooltip.esm.js";const E=u(r=>({root:{padding:0},iconWrapper:{padding:r.spacing(1.5),display:"flex",alignItems:"center",justifyContent:"center"},link:{"&:hover $iconWrapper, &:active $iconWrapper, &:focus $iconWrapper":{backgroundColor:r.palette.action.hover}},icon:{width:"17px",height:"17px"},virtualized:{borderBottom:`1px solid ${r.palette.divider}`,borderRight:`1px solid ${r.palette.divider}`}})),N=k(({programId:r,check:a,entityRef:o,result:i,entityRoute:d,isVirtualized:c})=>{const e=E();if(typeof o!="string"){const p=t.createElement("div",{className:e.iconWrapper},t.createElement("div",{className:e.icon}));return c?t.createElement("div",{className:`${e.root} ${e.virtualized}`,"aria-hidden":!0},p):t.createElement("td",{className:e.root,"aria-hidden":!0},p)}const n=t.createElement(v,{className:e.icon,result:i??s.NotReported}),l=t.createElement("div",{className:e.iconWrapper},n),m=i&&i===s.NotApplicable?l:t.createElement(h,{className:e.link,to:`${d(f(o))}/soundcheck/tracks/${r}/checks/${a.id}`},l);return c?t.createElement("div",{className:`${e.root} ${e.virtualized}`},t.createElement($,{check:a,icon:n,entityRef:o},m)):t.createElement("td",{className:`${e.root}`},m)});export{N as CheckCell};
2
2
  //# sourceMappingURL=CheckCell.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as d}from"@material-ui/core";import t,{memo as c}from"react";import{LevelBadge as n}from"../Badges/LevelBadge.esm.js";import{NoLevelBadge as m}from"../Badges/NoLevelBadge.esm.js";import{CampaignBadge as o}from"../Badges/CampaignBadge.esm.js";import{RowHeights as s,NO_LEVEL_BADGE_NAME as p}from"./virtualized/virtualizedTableUtils.esm.js";const u=d(e=>({virtualized:{borderRight:`1px solid ${e.palette.divider}`,height:`${s.programTitle}px`,display:"flex",justifyContent:"center",alignItems:"center"}})),v=c(({entityRef:e,highestLevels:r,trackType:a})=>{const l=r.find(g=>g.entityRef===e);let i=l!=null&&l.badge?t.createElement(n,{badge:l.badge}):t.createElement(m,null);return a==="campaign"&&(i=t.createElement(o,null)),i}),f=({highestLevel:e,trackType:r})=>{const a=u();if(!(e!=null&&e.badge))return t.createElement("div",{className:a.virtualized},"\xA0");let l=e.name!==p?t.createElement(n,{badge:e.badge}):t.createElement(m,null);return r==="campaign"&&(l=t.createElement(o,null)),t.createElement("div",{className:a.virtualized},l)};export{v as HighestLevelBadge,f as HighestLevelBadgeCell};
1
+ import{makeStyles as d}from"@material-ui/core";import e,{memo as c}from"react";import{LevelBadge as m}from"../Badges/LevelBadge.esm.js";import{NoLevelBadge as n}from"../Badges/NoLevelBadge.esm.js";import{CampaignBadge as g}from"../Badges/CampaignBadge.esm.js";import{RowHeights as s,NO_LEVEL_BADGE_NAME as p}from"./virtualized/virtualizedTableUtils.esm.js";const f=d(t=>({virtualized:{borderRight:`1px solid ${t.palette.divider}`,height:`${s.programTitle}px`,display:"flex",justifyContent:"center",alignItems:"center"}})),v=c(({entityRef:t,highestLevels:l,trackType:r})=>{const a=l.find(o=>o.entityRef===t);let i=a?.badge?e.createElement(m,{badge:a.badge}):e.createElement(n,null);return r==="campaign"&&(i=e.createElement(g,null)),i}),E=({highestLevel:t,trackType:l})=>{const r=f();if(!t?.badge)return e.createElement("div",{className:r.virtualized},"\xA0");let a=t.name!==p?e.createElement(m,{badge:t.badge}):e.createElement(n,null);return l==="campaign"&&(a=e.createElement(g,null)),e.createElement("div",{className:r.virtualized},a)};export{v as HighestLevelBadge,E as HighestLevelBadgeCell};
2
2
  //# sourceMappingURL=HighestLevelBadge.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as p,Tooltip as m,LinearProgress as u}from"@material-ui/core";import a,{useMemo as g}from"react";import{ResultState as n}from"../../graphql/generated/index.esm.js";const d=p(e=>({root:{height:"8px",minWidth:"64px",marginLeft:e.spacing(2),borderRadius:"100vh",backgroundColor:e.palette.action.hover},bar:{backgroundColor:e.palette.success.main,transition:"none"}})),b=e=>{var r,o;const s=d(e),t=g(()=>Object.entries(e.progress).reduce((l,[,c])=>l+c,0),[e.progress]);if(t===0)return null;const i=(r=e.progress[n.Passed])!=null?r:0;return a.createElement(m,{arrow:!0,title:`Check passing for ${i} of ${t} ${t===1?"entity":"entities"}`,enterDelay:0,placement:"top"},a.createElement(u,{variant:"determinate",value:((o=e.progress[n.Passed])!=null?o:0)/t*100,classes:{root:s.root,bar:s.bar}}))};export{b as ProgramCheckIndicator};
1
+ import{makeStyles as p,Tooltip as l,LinearProgress as m}from"@material-ui/core";import s,{useMemo as g}from"react";import{ResultState as a}from"../../graphql/generated/index.esm.js";const d=p(e=>({root:{height:"8px",minWidth:"64px",marginLeft:e.spacing(2),borderRadius:"100vh",backgroundColor:e.palette.action.hover},bar:{backgroundColor:e.palette.success.main,transition:"none"}})),u=e=>{const r=d(e),t=g(()=>Object.entries(e.progress).reduce((i,[,c])=>i+c,0),[e.progress]);if(t===0)return null;const o=e.progress[a.Passed]??0,n=Math.round(o/t*100);return s.createElement(l,{arrow:!0,title:`Check passing at ${n}%, ${o} of ${t} ${t===1?"entity":"entities"} passing.`,enterDelay:0,placement:"top"},s.createElement(m,{variant:"determinate",value:(e.progress[a.Passed]??0)/t*100,classes:{root:r.root,bar:r.bar}}))};export{u as ProgramCheckIndicator};
2
2
  //# sourceMappingURL=ProgramCheckIndicator.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as y,Typography as m}from"@material-ui/core";import{countBy as N}from"lodash";import t,{memo as f,useMemo as u}from"react";import{ResultState as C}from"../../graphql/generated/index.esm.js";import{CheckCell as b}from"./CheckCell/CheckCell.esm.js";import{ProgramCheckIndicator as n}from"./ProgramCheckIndicator.esm.js";import{RowHeights as i}from"./virtualized/virtualizedTableUtils.esm.js";const s=y(e=>({checkNameCell:{padding:0,backgroundColor:e.palette.background.paper},checkNameContent:{padding:`0 ${e.spacing(2)}px`,display:"flex",justifyContent:"space-between",alignItems:"center"},checkNameTypography:{overflow:"hidden",textOverflow:"ellipsis",fontWeight:e.typography.body1.fontWeight},checkIndicator:{flexBasis:e.spacing(8)},checkNameCellVirtualized:{height:`${i.check}px`,lineHeight:`${i.check}px`,borderBottom:`1px solid ${e.palette.divider}`,borderRight:`1px solid ${e.palette.divider}`}}));f(({programId:e,programName:o,check:a,entityRefs:p,results:l,entityRoute:h})=>{const r=s(),d=u(()=>N(l.filter(({result:c})=>c!==C.NotApplicable),"result"),[l]),k=new Map(l.map(c=>[c.entityRef,c.result]));return t.createElement("tr",{"data-testid":"track-check-row"},t.createElement("th",{scope:"row",className:r.checkNameCell,"aria-label":`${a.name} check for ${o} track`},t.createElement("div",{className:r.checkNameContent},t.createElement(m,{className:r.checkNameTypography,variant:"subtitle2",component:"p"},a.name),t.createElement(n,{className:r.checkIndicator,progress:d}))),p.map((c,g)=>t.createElement(b,{key:g,programId:e,check:a,entityRef:c,result:typeof c=="string"?k.get(c):void 0,entityRoute:h})))});const v=({name:e,progress:o})=>{const a=s();return t.createElement("div",{className:a.checkNameCell,"aria-label":`${e} check`},t.createElement("div",{className:`${a.checkNameContent} ${a.checkNameCellVirtualized}`},t.createElement(m,{variant:"subtitle2",component:"p",className:a.checkNameTypography},e),t.createElement(n,{className:a.checkIndicator,progress:o})))};export{v as CheckNameCell};
1
+ import{makeStyles as f,Typography as s}from"@material-ui/core";import t,{memo as u,useMemo as C}from"react";import{CheckCell as E}from"./CheckCell/CheckCell.esm.js";import{ProgramCheckIndicator as i}from"./ProgramCheckIndicator.esm.js";import{RowHeights as p}from"./virtualized/virtualizedTableUtils.esm.js";const h=f(e=>({checkNameCell:{padding:0,backgroundColor:e.palette.background.paper},checkNameContent:{padding:`0 ${e.spacing(2)}px`,display:"flex",justifyContent:"space-between",alignItems:"center"},checkNameTypography:{overflow:"hidden",textOverflow:"ellipsis",fontWeight:e.typography.body1.fontWeight},checkIndicator:{flexBasis:e.spacing(8)},checkNameCellVirtualized:{height:`${p.check}px`,lineHeight:`${p.check}px`,borderBottom:`1px solid ${e.palette.divider}`,borderRight:`1px solid ${e.palette.divider}`}}));u(({programId:e,programName:l,check:a,entityRefs:d,results:k,entityRoute:g,level:m})=>{const r=h(),y=C(()=>{let c=0,o=0;return m.checks.forEach(n=>{o+=n.totalCount-n.totalPassing,c+=n.totalPassing}),{PASSED:c,FAILED:o}},[m]),N=new Map(k.map(c=>[c.entityRef,c.result]));return t.createElement("tr",{"data-testid":"track-check-row"},t.createElement("th",{scope:"row",className:r.checkNameCell,"aria-label":`${a.name} check for ${l} track`},t.createElement("div",{className:r.checkNameContent},t.createElement(s,{className:r.checkNameTypography,variant:"subtitle2",component:"p"},a.name),t.createElement(i,{className:r.checkIndicator,progress:y}))),d.map((c,o)=>t.createElement(E,{key:o,programId:e,check:a,entityRef:c,result:typeof c=="string"?N.get(c):void 0,entityRoute:g})))});const v=({name:e,progress:l})=>{const a=h();return t.createElement("div",{className:a.checkNameCell,"aria-label":`${e} check`},t.createElement("div",{className:`${a.checkNameContent} ${a.checkNameCellVirtualized}`},t.createElement(s,{variant:"subtitle2",component:"p",className:a.checkNameTypography},e),t.createElement(i,{className:a.checkIndicator,progress:l})))};export{v as CheckNameCell};
2
2
  //# sourceMappingURL=ProgramCheckRow.esm.js.map