@spotify/backstage-plugin-soundcheck 0.16.1 → 0.16.2

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 (424) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/dist/alpha/entity-content.esm.js +1 -1
  3. package/dist/alpha/pages.esm.js +1 -1
  4. package/dist/alpha.d.ts +7 -7
  5. package/dist/api.esm.js +1 -1
  6. package/dist/components/AlertPanel/AlertPanel.esm.js +1 -1
  7. package/dist/components/AreaChart/AreaChart.esm.js +1 -1
  8. package/dist/components/AreaChart/ChartTooltip.esm.js +1 -1
  9. package/dist/components/AreaChart/Legend.esm.js +1 -1
  10. package/dist/components/AreaChart/LegendItem.esm.js +1 -1
  11. package/dist/components/Badges/BaseBadge.esm.js +1 -1
  12. package/dist/components/Badges/CampaignBadge.esm.js +1 -1
  13. package/dist/components/Badges/CertificationBadge.esm.js +1 -1
  14. package/dist/components/Badges/LevelBadge.esm.js +1 -1
  15. package/dist/components/Badges/NoLevelBadge.esm.js +2 -2
  16. package/dist/components/Badges/PlaylistBadge.esm.js +1 -1
  17. package/dist/components/Badges/StatusBadge.esm.js +1 -1
  18. package/dist/components/CacheConfig/CacheConfigComponent.esm.js +1 -1
  19. package/dist/components/CampaignCreatePage/CampaignCreatePage.esm.js +1 -1
  20. package/dist/components/CampaignForm/CampaignForm.esm.js +1 -1
  21. package/dist/components/CampaignForm/Steps/CampaignDetailsStep/CampaignDescriptionField.esm.js +1 -1
  22. package/dist/components/CampaignForm/Steps/CampaignDetailsStep/CampaignDetailsStep.esm.js +1 -1
  23. package/dist/components/CampaignForm/Steps/CampaignDetailsStep/CampaignDraftField.esm.js +2 -0
  24. package/dist/components/CampaignForm/Steps/CampaignDetailsStep/CampaignNameField.esm.js +1 -1
  25. package/dist/components/CampaignForm/Steps/CampaignDetailsStep/CampaignOwnerField.esm.js +1 -1
  26. package/dist/components/CampaignForm/Steps/CampaignDetailsStep/CampaignScheduleField.esm.js +1 -1
  27. package/dist/components/CampaignForm/Steps/CampaignDetailsStep/CampaignSupportChannelField.esm.js +1 -1
  28. package/dist/components/CampaignForm/Steps/CampaignDetailsStep/EndDateChips.esm.js +1 -1
  29. package/dist/components/CampaignForm/Steps/CampaignMilestonesStep.esm.js +1 -1
  30. package/dist/components/CampaignForm/Steps/CampaignTrackStepNew.esm.js +2 -0
  31. package/dist/components/CampaignForm/hooks/useCampaignForm.esm.js +1 -1
  32. package/dist/components/CampaignForm/hooks/utils.esm.js +1 -1
  33. package/dist/components/CampaignForm/utils/campaignFormUtils.esm.js +1 -1
  34. package/dist/components/CampaignForm/utils/validation.esm.js +1 -1
  35. package/dist/components/CampaignInsightsPage/CampaignInsightsPage.esm.js +1 -1
  36. package/dist/components/CampaignInsightsPage/CampaignStatusHistoryTile.esm.js +1 -1
  37. package/dist/components/CampaignInsightsPage/CampaignStatusTile.esm.js +1 -1
  38. package/dist/components/CampaignInsightsPage/DaysRemainingTile.esm.js +1 -1
  39. package/dist/components/CampaignsPage/CampaignEmptyState.esm.js +1 -1
  40. package/dist/components/CampaignsPage/CampaignListPage/CampaignListPage.esm.js +1 -1
  41. package/dist/components/CampaignsPage/CampaignListPage/CampaignMetadata.esm.js +1 -1
  42. package/dist/components/CampaignsPage/CampaignListPage/CampaignSummaryCard.esm.js +1 -1
  43. package/dist/components/CampaignsPage/CampaignListPage/CampaignsOverviewSkeleton.esm.js +1 -1
  44. package/dist/components/CampaignsPage/CampaignListPage/useArchiveConfirmationModal.esm.js +1 -1
  45. package/dist/components/CampaignsPage/CampaignsPage.esm.js +1 -1
  46. package/dist/components/CampaignsPage/EditCampaignView.esm.js +1 -1
  47. package/dist/components/CategoryBar/CategoryBar.esm.js +1 -1
  48. package/dist/components/CertificationAccordion/CertificationAccordion.esm.js +1 -1
  49. package/dist/components/CertificationSidebar/CertificationLevel.esm.js +1 -1
  50. package/dist/components/CertificationSidebar/CertificationSidebar.esm.js +1 -1
  51. package/dist/components/CertificationSidebar/CertificationSummary.esm.js +1 -1
  52. package/dist/components/CertificationSidebar/Check.esm.js +1 -1
  53. package/dist/components/CertificationSidebar/CheckResultInputPopup.esm.js +1 -1
  54. package/dist/components/CertificationSidebar/CheckResultSummaryList.esm.js +1 -1
  55. package/dist/components/CertificationSidebar/ExemptionJustificationDialog.esm.js +1 -1
  56. package/dist/components/CertificationSidebar/LevelSummary.esm.js +1 -1
  57. package/dist/components/CertificationSidebar/StatusDetails.esm.js +1 -1
  58. package/dist/components/CertificationSidebar/skeletons/CertificationSidebarSkeleton.esm.js +1 -1
  59. package/dist/components/CertificationSidebar/skeletons/CertificationSummarySkeleton.esm.js +1 -1
  60. package/dist/components/CertificationSidebar/skeletons/CheckSkeleton.esm.js +1 -1
  61. package/dist/components/CertificationSidebar/skeletons/LevelSummarySkeleton.esm.js +1 -1
  62. package/dist/components/CertificationsPage/CertificationTab.esm.js +1 -1
  63. package/dist/components/CertificationsPage/CertificationTabs.esm.js +1 -1
  64. package/dist/components/CertificationsPage/CertificationsPage.esm.js +1 -1
  65. package/dist/components/CertificationsPage/Playlist/PlaylistComponent.esm.js +1 -1
  66. package/dist/components/CertificationsPage/Playlist/PlaylistContext.esm.js +1 -1
  67. package/dist/components/CertificationsPage/Playlist/PlaylistProgress.esm.js +1 -1
  68. package/dist/components/CertificationsPage/Playlist/PlaylistSummary.esm.js +1 -1
  69. package/dist/components/CertificationsPage/PlaylistCertificationTab.esm.js +1 -1
  70. package/dist/components/CertificationsPage/skeletons/CertificationTabSkeleton.esm.js +1 -1
  71. package/dist/components/CertificationsPage/skeletons/CertificationTabsSkeleton.esm.js +1 -1
  72. package/dist/components/Charts/BarChart/BarChart.esm.js +1 -1
  73. package/dist/components/Charts/BarChart/BarChartPlaceholder.esm.js +1 -1
  74. package/dist/components/Charts/BarChart/GroupPassRateHistoryBarChart.esm.js +1 -1
  75. package/dist/components/Charts/BarChart/TrackSummaryBarChart.esm.js +1 -1
  76. package/dist/components/Charts/ChartWrapper/ChartWrapper.esm.js +1 -1
  77. package/dist/components/Charts/LineChart/EntityPassRateHistoryLineChart.esm.js +1 -1
  78. package/dist/components/Charts/LineChart/LineChart.esm.js +1 -1
  79. package/dist/components/Charts/LineChart/LineChartPlaceholder.esm.js +1 -1
  80. package/dist/components/Charts/LineChart/PassRateHistoryLineChart.esm.js +1 -1
  81. package/dist/components/Charts/LineChart/TableLineChart.esm.js +1 -1
  82. package/dist/components/Charts/LineChart/TrackPassRateHistoryLineChart.esm.js +1 -1
  83. package/dist/components/Charts/LoadingChart.esm.js +2 -0
  84. package/dist/components/Charts/chartUtils.esm.js +1 -1
  85. package/dist/components/CheckCard/CheckCard.esm.js +1 -1
  86. package/dist/components/CheckCard/CheckHistoryChart.esm.js +1 -1
  87. package/dist/components/CheckCreatePage/CheckCreatePage.esm.js +1 -1
  88. package/dist/components/CheckDetails/CheckDetails.esm.js +1 -1
  89. package/dist/components/CheckDetails/CheckResultDetails.esm.js +1 -1
  90. package/dist/components/CheckDetails/CollapseRow.esm.js +1 -1
  91. package/dist/components/CheckDetails/FactTable.esm.js +1 -1
  92. package/dist/components/CheckDetails/FixMeDialog.esm.js +1 -1
  93. package/dist/components/CheckDetails/JustificationDetails.esm.js +1 -1
  94. package/dist/components/CheckDetails/OngoingTaskComponent.esm.js +1 -1
  95. package/dist/components/CheckDetails/ResolvedValueTable.esm.js +1 -1
  96. package/dist/components/CheckDetails/ResultStateBox.esm.js +1 -1
  97. package/dist/components/CheckDetails/ReviewStateComponent.esm.js +1 -1
  98. package/dist/components/CheckDetails/SelectedValueContext.esm.js +1 -1
  99. package/dist/components/CheckDetails/skeletons/CheckDetailsSkeleton.esm.js +1 -1
  100. package/dist/components/CheckDryRun/CheckDryRun.esm.js +1 -1
  101. package/dist/components/CheckDryRun/CheckDryRunContext.esm.js +1 -1
  102. package/dist/components/CheckDryRun/CheckDryRunDetails.esm.js +1 -1
  103. package/dist/components/CheckDryRun/CheckDryRunDialog.esm.js +1 -1
  104. package/dist/components/CheckDryRun/CheckDryRunDialogButton.esm.js +1 -1
  105. package/dist/components/CheckForm/CheckForm.esm.js +1 -1
  106. package/dist/components/CheckForm/FormFields/CheckDescriptionInput/CheckDescriptionInput.esm.js +1 -1
  107. package/dist/components/CheckForm/FormFields/CheckNameInput/CheckNameInput.esm.js +1 -1
  108. package/dist/components/CheckForm/FormFields/CheckPathResolverInput.esm.js +1 -1
  109. package/dist/components/CheckForm/FormFields/CheckScheduleSection/ScheduleSection.esm.js +1 -1
  110. package/dist/components/CheckForm/FormFields/CheckTypeInput/CheckTypeInput.esm.js +1 -1
  111. package/dist/components/CheckForm/FormFields/PassFailMessageInput/PassFailMessageInput.esm.js +1 -1
  112. package/dist/components/CheckForm/FormFields/RuleInput/AddMenuButton.esm.js +1 -1
  113. package/dist/components/CheckForm/FormFields/RuleInput/Conditions/ConditionList.esm.js +1 -1
  114. package/dist/components/CheckForm/FormFields/RuleInput/Conditions/FactValueDisplay.esm.js +1 -1
  115. package/dist/components/CheckForm/FormFields/RuleInput/Conditions/RuleConditionInput.esm.js +1 -1
  116. package/dist/components/CheckForm/FormFields/RuleInput/Conditions/ValueListContext.esm.js +1 -1
  117. package/dist/components/CheckForm/FormFields/RuleInput/Conditions/ValueListInput.esm.js +1 -1
  118. package/dist/components/CheckForm/FormFields/RuleInput/Expressions/ExpressionBox.esm.js +1 -1
  119. package/dist/components/CheckForm/FormFields/RuleInput/Expressions/ExpressionTypeToggle.esm.js +1 -1
  120. package/dist/components/CheckForm/FormFields/RuleInput/RuleInputBox.esm.js +1 -1
  121. package/dist/components/CheckForm/FormFields/TeamDetailsInput/TeamDetailsInput.esm.js +1 -1
  122. package/dist/components/CheckForm/Steps/CheckApplicabilityStep.esm.js +2 -0
  123. package/dist/components/CheckForm/Steps/CheckDetailsStep.esm.js +1 -1
  124. package/dist/components/CheckForm/Steps/CheckReviewStep.esm.js +1 -1
  125. package/dist/components/CheckForm/Steps/CheckRulesStep.esm.js +1 -1
  126. package/dist/components/CheckForm/useCheckForm.esm.js +1 -1
  127. package/dist/components/CheckForm/utils/checkFormUtils.esm.js +2 -2
  128. package/dist/components/CheckForm/utils/validation.esm.js +1 -1
  129. package/dist/components/CheckHistoryChartCard/CheckHistoryChartCard.esm.js +1 -1
  130. package/dist/components/CheckIcon/CheckIcon.esm.js +1 -1
  131. package/dist/components/CheckPage/CheckEditPage.esm.js +1 -1
  132. package/dist/components/CheckPage/CheckEditView.esm.js +1 -1
  133. package/dist/components/CheckPage/CheckEntitiesTable/CheckEntitiesTable.esm.js +1 -1
  134. package/dist/components/CheckPage/CheckEntitiesTable/columns.esm.js +1 -1
  135. package/dist/components/CheckPage/CheckInsightsPage.esm.js +1 -1
  136. package/dist/components/CheckPage/CheckStatusHistoryChart.esm.js +1 -1
  137. package/dist/components/CheckPage/CheckStatusTable.esm.js +1 -1
  138. package/dist/components/CheckSelection/CheckPreview.esm.js +2 -0
  139. package/dist/components/CheckSelection/CheckPreviewContext.esm.js +2 -0
  140. package/dist/components/CheckSelection/CheckSelection.esm.js +2 -0
  141. package/dist/components/CheckStatusBar/CheckStatusBar.esm.js +2 -0
  142. package/dist/components/CheckTemplatesPage/CheckTemplatesPage.esm.js +1 -1
  143. package/dist/components/CheckTemplatesPage/TemplateCategory.esm.js +1 -1
  144. package/dist/components/ChecksPage/CheckListPage/CheckListPage.esm.js +1 -1
  145. package/dist/components/ChecksPage/CheckListPage/CheckMetadata.esm.js +1 -1
  146. package/dist/components/ChecksPage/CheckListPage/CheckSummaryCard.esm.js +1 -1
  147. package/dist/components/ChecksPage/ChecksPage.esm.js +1 -1
  148. package/dist/components/ChecksPage/skeletons/ChecksOverviewSkeleton.esm.js +1 -1
  149. package/dist/components/ChecksTab/ChecksTab.esm.js +1 -1
  150. package/dist/components/CollectorPage/CollectorPage.esm.js +1 -1
  151. package/dist/components/CollectorPage/Configurators/AzureDevOps/AzureDevOpsConfigurator.esm.js +1 -1
  152. package/dist/components/CollectorPage/Configurators/AzureDevOps/NumberOfDaysComponent.esm.js +1 -1
  153. package/dist/components/CollectorPage/Configurators/AzureDevOps/NumberOfWorkItemsComponent.esm.js +1 -1
  154. package/dist/components/CollectorPage/Configurators/AzureDevOps/validation.esm.js +1 -1
  155. package/dist/components/CollectorPage/Configurators/BigQuery/BigQueryConfigurator.esm.js +1 -1
  156. package/dist/components/CollectorPage/Configurators/BigQuery/QueryFactDetailsComponent.esm.js +1 -1
  157. package/dist/components/CollectorPage/Configurators/BigQuery/validation.esm.js +1 -1
  158. package/dist/components/CollectorPage/Configurators/Catalog/CatalogConfigurator.esm.js +1 -1
  159. package/dist/components/CollectorPage/Configurators/Common/CollectorSchedulingOptions.esm.js +1 -1
  160. package/dist/components/CollectorPage/Configurators/Common/FactCollectionConfig.esm.js +1 -1
  161. package/dist/components/CollectorPage/Configurators/Common/utils.esm.js +1 -1
  162. package/dist/components/CollectorPage/Configurators/Configurator.esm.js +1 -1
  163. package/dist/components/CollectorPage/Configurators/DataDog/DataDogConfigurator.esm.js +1 -1
  164. package/dist/components/CollectorPage/Configurators/DataRegistry/DataRegistryConfigurator.esm.js +2 -0
  165. package/dist/components/CollectorPage/Configurators/DataRegistry/utils.esm.js +2 -0
  166. package/dist/components/CollectorPage/Configurators/Github/CodeScanningAlertsFactDetails.esm.js +1 -1
  167. package/dist/components/CollectorPage/Configurators/Github/DependabotAlertsFactDetails.esm.js +1 -1
  168. package/dist/components/CollectorPage/Configurators/Github/GithubConfigurator.esm.js +1 -1
  169. package/dist/components/CollectorPage/Configurators/Github/SecretScanningAlertsFactDetails.esm.js +1 -1
  170. package/dist/components/CollectorPage/Configurators/Github/SecurityAdvisoriesFactDetails.esm.js +1 -1
  171. package/dist/components/CollectorPage/Configurators/Github/validation.esm.js +1 -1
  172. package/dist/components/CollectorPage/Configurators/Gitlab/GitlabConfigurator.esm.js +1 -1
  173. package/dist/components/CollectorPage/Configurators/HTTP/HttpConfigurator.esm.js +1 -1
  174. package/dist/components/CollectorPage/Configurators/HTTP/HttpRequestComponent.esm.js +1 -1
  175. package/dist/components/CollectorPage/Configurators/HTTP/HttpResponseComponent.esm.js +1 -1
  176. package/dist/components/CollectorPage/Configurators/HTTP/HttpRetriesComponent.esm.js +1 -1
  177. package/dist/components/CollectorPage/Configurators/HTTP/HttpStatusesInput.esm.js +1 -1
  178. package/dist/components/CollectorPage/Configurators/HTTP/RequestFactDetailsComponent.esm.js +1 -1
  179. package/dist/components/CollectorPage/Configurators/HTTP/validation.esm.js +1 -1
  180. package/dist/components/CollectorPage/Configurators/Jira/IssuesSearchFactDetailsComponent.esm.js +1 -1
  181. package/dist/components/CollectorPage/Configurators/Jira/JiraConfigurator.esm.js +1 -1
  182. package/dist/components/CollectorPage/Configurators/Jira/validation.esm.js +1 -1
  183. package/dist/components/CollectorPage/Configurators/Kubernetes/KubernetesConfigurator.esm.js +1 -1
  184. package/dist/components/CollectorPage/Configurators/Kubernetes/KubernetesFactDetails.esm.js +1 -1
  185. package/dist/components/CollectorPage/Configurators/Kubernetes/validation.esm.js +1 -1
  186. package/dist/components/CollectorPage/Configurators/NewRelic/NewRelicConfigurator.esm.js +1 -1
  187. package/dist/components/CollectorPage/Configurators/PagerDuty/IncidentsFactDetailsComponent.esm.js +1 -1
  188. package/dist/components/CollectorPage/Configurators/PagerDuty/PagerDutyConfigurator.esm.js +1 -1
  189. package/dist/components/CollectorPage/Configurators/PagerDuty/StatusesComponent.esm.js +1 -1
  190. package/dist/components/CollectorPage/Configurators/PagerDuty/validation.esm.js +1 -1
  191. package/dist/components/CollectorPage/Configurators/SCM/ExistsFactDetailsComponent.esm.js +1 -1
  192. package/dist/components/CollectorPage/Configurators/SCM/FactDetailsComponent.esm.js +1 -1
  193. package/dist/components/CollectorPage/Configurators/SCM/JsonFactDetailsComponent.esm.js +1 -1
  194. package/dist/components/CollectorPage/Configurators/SCM/RegexFactDetailsComponent.esm.js +1 -1
  195. package/dist/components/CollectorPage/Configurators/SCM/ScmConfigurator.esm.js +1 -1
  196. package/dist/components/CollectorPage/Configurators/SCM/validation.esm.js +1 -1
  197. package/dist/components/CollectorPage/Configurators/SonarQube/IssuesFactDetailsInput.esm.js +2 -0
  198. package/dist/components/CollectorPage/Configurators/SonarQube/MeasuresFactDetailsInput.esm.js +1 -1
  199. package/dist/components/CollectorPage/Configurators/SonarQube/MetricsInput.esm.js +1 -1
  200. package/dist/components/CollectorPage/Configurators/SonarQube/SonarQubeConfigurator.esm.js +1 -1
  201. package/dist/components/CollectorPage/Configurators/SonarQube/utils.esm.js +1 -1
  202. package/dist/components/CollectorPage/Configurators/SonarQube/validation.esm.js +1 -1
  203. package/dist/components/CollectorsPage/CollectorListPage/CollectorListPage.esm.js +1 -1
  204. package/dist/components/CollectorsPage/CollectorListPage/CollectorListSkeleton.esm.js +1 -1
  205. package/dist/components/CollectorsPage/CollectorListPage/CollectorLogo.esm.js +1 -1
  206. package/dist/components/CollectorsPage/CollectorListPage/CollectorSummaryCard.esm.js +1 -1
  207. package/dist/components/CollectorsPage/CollectorsPage.esm.js +1 -1
  208. package/dist/components/EmptyState/EmptyState.esm.js +1 -1
  209. package/dist/components/EntitiesAutocompletePicker/EntitiesAutocompletePicker.esm.js +2 -0
  210. package/dist/components/EntityChip/EntityChip.esm.js +1 -1
  211. package/dist/components/EntityContent/EntityContent.esm.js +1 -1
  212. package/dist/components/EntityPassRateCard/EntityPassRateCard.esm.js +1 -1
  213. package/dist/components/EntitySoundcheckCard/Card.esm.js +1 -1
  214. package/dist/components/EntitySoundcheckCard/EntitySoundcheckCard.esm.js +1 -1
  215. package/dist/components/EntitySoundcheckCard/skeletons/CardSkeleton.esm.js +1 -1
  216. package/dist/components/EntitySoundcheckContent.esm.js +1 -1
  217. package/dist/components/Expand/Expand.esm.js +1 -1
  218. package/dist/components/ExpandableSection/ExpandableSection.esm.js +1 -1
  219. package/dist/components/FactExplorer/FactExplorer.esm.js +1 -1
  220. package/dist/components/FactExplorer/FactExplorerContext.esm.js +1 -1
  221. package/dist/components/FactExplorer/FactExplorerDialog.esm.js +1 -1
  222. package/dist/components/FadeIn/FadeIn.esm.js +1 -1
  223. package/dist/components/Filter/EntityAutocompletePicker.esm.js +1 -1
  224. package/dist/components/Filter/FilterComponent.esm.js +1 -1
  225. package/dist/components/Filter/FilterKeyValueInput.esm.js +1 -1
  226. package/dist/components/Filter/FilterPreviewTable/EntityTableColumns.esm.js +1 -1
  227. package/dist/components/Filter/FilterPreviewTable/FilterPreviewTable.esm.js +1 -1
  228. package/dist/components/Filter/KeyValueInputDialog.esm.js +1 -1
  229. package/dist/components/FilterSidebar/FilterSidebar.esm.js +2 -0
  230. package/dist/components/FilterSidebar/StateFilter.esm.js +2 -0
  231. package/dist/components/FooterButtons/FooterButtons.esm.js +1 -1
  232. package/dist/components/FormControlledAutocomplete/ControlledAutocomplete.esm.js +1 -1
  233. package/dist/components/FormControlledAutocomplete/FormControlledAutocomplete.esm.js +1 -1
  234. package/dist/components/FormControlledAutocomplete/FormControlledMultipleAutocomplete.esm.js +1 -1
  235. package/dist/components/FormControlledSelect/FormControlledSelect.esm.js +1 -1
  236. package/dist/components/FormControlledTextField/FormControlledTextField.esm.js +1 -1
  237. package/dist/components/FormFieldLabel/FormFieldLabel.esm.js +1 -1
  238. package/dist/components/FormFilterSection/FormFilterSection.esm.js +1 -1
  239. package/dist/components/FormMarkdownInput/FormMarkdownInput.esm.js +1 -1
  240. package/dist/components/FormStepper/FormStepper.esm.js +1 -1
  241. package/dist/components/FormTextInput/FormTextInput.esm.js +1 -1
  242. package/dist/components/FormattedPreview/FormattedPreview.esm.js +2 -2
  243. package/dist/components/Frequency/FrequencyComponent.esm.js +1 -1
  244. package/dist/components/GroupPassRateCard/GroupPassRateCard.esm.js +1 -1
  245. package/dist/components/GroupSelector/GroupSelector.esm.js +1 -1
  246. package/dist/components/LevelUpParty/LevelUpParty.esm.js +1 -1
  247. package/dist/components/LevelsTable/CheckRowContent.esm.js +2 -0
  248. package/dist/components/LevelsTable/LevelsTable.esm.js +2 -0
  249. package/dist/components/ListboxVirtualized/ListboxVirtualized.esm.js +1 -1
  250. package/dist/components/LoadingIndicator/LoadingIndicator.esm.js +1 -1
  251. package/dist/components/MultiSelectFilter/MultiSelectFilter.esm.js +1 -1
  252. package/dist/components/NoBorderButton/NoBorderButton.esm.js +1 -1
  253. package/dist/components/OrgHealth/OrgHealthPage.esm.js +1 -1
  254. package/dist/components/OverviewChartCard/OverviewChartCard.esm.js +1 -1
  255. package/dist/components/OverviewPage/FixedGroupOverviewPage.esm.js +1 -1
  256. package/dist/components/OverviewPage/OverviewPage.esm.js +1 -1
  257. package/dist/components/OverviewPage/OverviewPageContent.esm.js +1 -1
  258. package/dist/components/OverviewPage/OverviewPageHeader.esm.js +1 -1
  259. package/dist/components/OverviewTable/Cell/CheckCell.esm.js +1 -1
  260. package/dist/components/OverviewTable/Cell/CheckCellTooltip.esm.js +1 -1
  261. package/dist/components/OverviewTable/Cell/CheckLabelCell.esm.js +1 -1
  262. package/dist/components/OverviewTable/Cell/CheckNameCell.esm.js +1 -1
  263. package/dist/components/OverviewTable/Cell/EntityRefCell.esm.js +1 -1
  264. package/dist/components/OverviewTable/Cell/TrackBadgeCell.esm.js +1 -1
  265. package/dist/components/OverviewTable/Cell/TrackCheckIndicator.esm.js +1 -1
  266. package/dist/components/OverviewTable/Cell/TrackLevelHeaderCell.esm.js +1 -1
  267. package/dist/components/OverviewTable/Cell/TrackTitleCell.esm.js +1 -1
  268. package/dist/components/OverviewTable/Cell/cellRenderer.esm.js +1 -1
  269. package/dist/components/OverviewTable/OverviewTable.esm.js +1 -1
  270. package/dist/components/OverviewTable/OverviewTableContent.esm.js +1 -1
  271. package/dist/components/OverviewTable/OverviewTableSkeleton.esm.js +1 -1
  272. package/dist/components/OverviewTable/ResultsTable.esm.js +1 -1
  273. package/dist/components/OverviewTable/ResultsTableHeader.esm.js +1 -1
  274. package/dist/components/OverviewTable/ResultsTableRow.esm.js +1 -1
  275. package/dist/components/PageWarningMessage/PageWarningMessage.esm.js +1 -1
  276. package/dist/components/Pagination/CursorPagination.esm.js +1 -1
  277. package/dist/components/Pagination/Pagination.esm.js +1 -1
  278. package/dist/components/PassRateGrid/PassRateGrid.esm.js +1 -1
  279. package/dist/components/PassRateGrid/PassRateMetadata.esm.js +1 -1
  280. package/dist/components/PassRateTable/NewPassRateTable.esm.js +1 -1
  281. package/dist/components/PassRateTable/PassRateTable.esm.js +2 -2
  282. package/dist/components/QuickstartPage/HowDoIListItem.esm.js +1 -1
  283. package/dist/components/QuickstartPage/QuickStartChecksCard.esm.js +1 -1
  284. package/dist/components/QuickstartPage/QuickstartCardBase.esm.js +1 -1
  285. package/dist/components/QuickstartPage/QuickstartCollectorConfigurationsCard.esm.js +1 -1
  286. package/dist/components/QuickstartPage/QuickstartPage.esm.js +1 -1
  287. package/dist/components/QuickstartPage/QuickstartTracksCard.esm.js +1 -1
  288. package/dist/components/QuickstartPage/WelcomeHelpSection.esm.js +6 -6
  289. package/dist/components/QuickstartPage/WelcomeModal.esm.js +1 -1
  290. package/dist/components/RefetchingIndicator/RefetchingIndicator.esm.js +1 -1
  291. package/dist/components/RelativeTime/RelativeTime.esm.js +1 -1
  292. package/dist/components/RichTooltip/RichTooltip.esm.js +1 -1
  293. package/dist/components/Router.esm.js +1 -1
  294. package/dist/components/RoutingPage/RoutingPage.esm.js +1 -1
  295. package/dist/components/RuleResult/BranchResultComponent.esm.js +1 -1
  296. package/dist/components/RuleResult/ConditionResultComponent.esm.js +1 -1
  297. package/dist/components/RuleResult/RuleResultComponent.esm.js +1 -1
  298. package/dist/components/SearchBar/SearchBar.esm.js +1 -1
  299. package/dist/components/SearchFilters/SearchFilters.esm.js +1 -1
  300. package/dist/components/SoundcheckDialog/SoundcheckDialog.esm.js +1 -1
  301. package/dist/components/SoundcheckHeader/Breadcrumbs.esm.js +1 -1
  302. package/dist/components/SoundcheckHeader/SoundcheckHeader.esm.js +1 -1
  303. package/dist/components/SoundcheckHeader/SoundcheckHeaderContext.esm.js +1 -1
  304. package/dist/components/SoundcheckHeader/headerUtil.esm.js +1 -1
  305. package/dist/components/SoundcheckMarkdownContent/ComponentRenders.esm.js +2 -0
  306. package/dist/components/SoundcheckMarkdownContent/SoundcheckMarkdownContent.esm.js +2 -0
  307. package/dist/components/SoundcheckQueryClientProvider/SoundcheckQueryClientProvider.esm.js +1 -1
  308. package/dist/components/SummaryCard/SummaryCard.esm.js +1 -1
  309. package/dist/components/SummaryCard/SummaryCardActionsMenu.esm.js +1 -1
  310. package/dist/components/TechHealth/Filters/FacetFilter.esm.js +1 -1
  311. package/dist/components/TechHealth/Filters/FilterProvider.esm.js +1 -1
  312. package/dist/components/TechHealth/Filters/Filters.esm.js +1 -1
  313. package/dist/components/TechHealth/Filters/FiltersHeader.esm.js +1 -1
  314. package/dist/components/TechHealth/Filters/FiltersSection.esm.js +1 -1
  315. package/dist/components/TechHealth/Filters/NumberOfDaysFilter.esm.js +1 -1
  316. package/dist/components/TechHealth/Filters/useFacetOptions.esm.js +1 -1
  317. package/dist/components/TechHealth/Loading/Emoji.esm.js +1 -1
  318. package/dist/components/TechHealth/Loading/EmojiFountain.esm.js +1 -1
  319. package/dist/components/TechHealth/Loading/Loading.esm.js +1 -1
  320. package/dist/components/TechHealth/Loading/TechHealthLoading.esm.js +1 -1
  321. package/dist/components/TechHealth/TechHealth.esm.js +1 -1
  322. package/dist/components/TechHealthSummary/SummaryAggregationsProvider.esm.js +1 -1
  323. package/dist/components/TechHealthSummary/TechHealthSummary.esm.js +1 -1
  324. package/dist/components/TechHealthTabs/ActionColumn.esm.js +1 -1
  325. package/dist/components/TechHealthTabs/CampaignResultsTab/CampaignResultsTab.esm.js +1 -1
  326. package/dist/components/TechHealthTabs/CheckResultsTab/CheckResultsTab.esm.js +1 -1
  327. package/dist/components/TechHealthTabs/CheckResultsTab/CheckTrendColumn.esm.js +1 -1
  328. package/dist/components/TechHealthTabs/EntityResultsTab/EntityResultsTab.esm.js +1 -1
  329. package/dist/components/TechHealthTabs/EntityResultsTab/EntityTrendColumn.esm.js +1 -1
  330. package/dist/components/TechHealthTabs/GroupResultsTab/GroupResultsTab.esm.js +1 -1
  331. package/dist/components/TechHealthTabs/GroupResultsTab/GroupTrendColumn.esm.js +1 -1
  332. package/dist/components/TechHealthTabs/MostRecentColumn.esm.js +1 -1
  333. package/dist/components/TechHealthTabs/NameColumn.esm.js +1 -1
  334. package/dist/components/TechHealthTabs/OwnerColumn.esm.js +1 -1
  335. package/dist/components/TechHealthTabs/PassRateTabHeader.esm.js +1 -1
  336. package/dist/components/TechHealthTabs/TrackResultsTab/TrackLevelTrendColumn.esm.js +1 -1
  337. package/dist/components/TechHealthTabs/TrackResultsTab/TrackResultsTab.esm.js +1 -1
  338. package/dist/components/TechHealthTabs/techHealthTabUtils.esm.js +1 -1
  339. package/dist/components/TopFailingChecksTable/TopFailingChecksTable.esm.js +2 -0
  340. package/dist/components/TrackCreatePage/TrackCreatePage.esm.js +1 -1
  341. package/dist/components/TrackEditPage/TrackEditPage.esm.js +1 -1
  342. package/dist/components/TrackEditPage/TrackEditView.esm.js +1 -1
  343. package/dist/components/TrackForm/Steps/LevelsStep/LevelsStepNew.esm.js +2 -0
  344. package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackBadgeTypeSelect/TrackBadgeTypeSelect.esm.js +1 -1
  345. package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackDescriptionInput/TrackDescriptionInput.esm.js +1 -1
  346. package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackDetailsStep.esm.js +1 -1
  347. package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackDocumentationUrlInput/TrackDocumentationUrlInput.esm.js +1 -1
  348. package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackDraftInput/TrackDraftInput.esm.js +2 -0
  349. package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackNameInput/TrackNameInput.esm.js +1 -1
  350. package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackOwnerSelect/TrackOwnerSelect.esm.js +1 -1
  351. package/dist/components/TrackForm/TrackForm.esm.js +1 -1
  352. package/dist/components/TrackForm/utils/useTrackForm.esm.js +1 -1
  353. package/dist/components/TrackHistoryChartCard/TrackHistoryChartCard.esm.js +1 -1
  354. package/dist/components/TrackPage/FilterBar/FilterBar.esm.js +1 -1
  355. package/dist/components/TrackPage/TrackEntitiesTable/TrackEntitiesTable.esm.js +1 -1
  356. package/dist/components/TrackPage/TrackEntitiesTable/TrackStatusChip.esm.js +1 -1
  357. package/dist/components/TrackPage/TrackEntitiesTable/columns.esm.js +1 -1
  358. package/dist/components/TrackPage/TrackEntitiesTable/utils.esm.js +1 -1
  359. package/dist/components/TrackPage/TrackHistoryChart.esm.js +1 -1
  360. package/dist/components/TrackPage/TrackPage.esm.js +1 -1
  361. package/dist/components/TrackPage/TrackProgressCard.esm.js +1 -1
  362. package/dist/components/TrackPage/TrackStatus.esm.js +2 -0
  363. package/dist/components/TrackPage/TrackStatusBar.esm.js +2 -0
  364. package/dist/components/TrackPage/TrackStatusTable.esm.js +2 -0
  365. package/dist/components/TracksPage/TrackListPage/TrackListPage.esm.js +1 -1
  366. package/dist/components/TracksPage/TrackListPage/TrackMetadata.esm.js +1 -1
  367. package/dist/components/TracksPage/TrackListPage/TrackSummaryCard.esm.js +1 -1
  368. package/dist/components/TracksPage/TrackListPage/TracksOverviewSkeleton.esm.js +1 -1
  369. package/dist/components/TracksPage/TracksPage.esm.js +1 -1
  370. package/dist/components/TracksTab/TracksTab.esm.js +1 -1
  371. package/dist/contexts/GenericFormContext.esm.js +1 -1
  372. package/dist/contexts/UserProvider.esm.js +1 -1
  373. package/dist/graphql/generated/index.esm.js +93 -45
  374. package/dist/hooks/aggregations/useCertificationStatus.esm.js +1 -1
  375. package/dist/hooks/aggregations/useCheckStatus.esm.js +1 -1
  376. package/dist/hooks/aggregations/useCheckStatuses.esm.js +1 -1
  377. package/dist/hooks/catalog/useGetEntityFacets.esm.js +1 -1
  378. package/dist/hooks/catalog/useGetEntityRefs.esm.js +1 -1
  379. package/dist/hooks/certifications/useAllCertifications.esm.js +1 -1
  380. package/dist/hooks/certifications/useCertificationDetails.esm.js +1 -1
  381. package/dist/hooks/certifications/useCertificationDetailsForTrack.esm.js +1 -1
  382. package/dist/hooks/checks/useCheck.esm.js +2 -0
  383. package/dist/hooks/checks/useDeleteCheck.esm.js +1 -1
  384. package/dist/hooks/checks/useGetChecks.esm.js +1 -1
  385. package/dist/hooks/checks/useSetManualResult.esm.js +1 -1
  386. package/dist/hooks/checks/useUpdateCheck.esm.js +1 -1
  387. package/dist/hooks/exemptions/useDeleteExemption.esm.js +1 -1
  388. package/dist/hooks/exemptions/useExemptCheckIds.esm.js +2 -0
  389. package/dist/hooks/exemptions/useSetEntityExempt.esm.js +1 -1
  390. package/dist/hooks/facets/useFacetFilters.esm.js +1 -1
  391. package/dist/hooks/graphqlKeys.esm.js +1 -1
  392. package/dist/hooks/tracks/useGetAllTracks.esm.js +1 -1
  393. package/dist/hooks/tracks/useTrack.esm.js +2 -0
  394. package/dist/hooks/tracks/useUpdateTrack.esm.js +1 -1
  395. package/dist/hooks/useConfirmationModal.esm.js +1 -1
  396. package/dist/hooks/useSoundcheckAlert.esm.js +1 -1
  397. package/dist/images/data-registry-blk.svg +36 -0
  398. package/dist/images/data-registry-wht.svg +36 -0
  399. package/dist/index.d.ts +4 -4
  400. package/dist/index.esm.js +1 -1
  401. package/dist/routes.esm.js +1 -1
  402. package/dist/utils/colors.esm.js +2 -0
  403. package/dist/utils/export.esm.js +3 -3
  404. package/dist/utils/formatters.esm.js +2 -0
  405. package/dist/utils/validation.esm.js +1 -1
  406. package/package.json +25 -21
  407. package/dist/components/Badges/badge.esm.js +0 -2
  408. package/dist/components/CampaignForm/Steps/CampaignTrackStep.esm.js +0 -2
  409. package/dist/components/CheckPage/CheckStatusBar.esm.js +0 -2
  410. package/dist/components/CheckPage/FilterBar/FilterBar.esm.js +0 -2
  411. package/dist/components/CheckPage/StatusRow.esm.js +0 -2
  412. package/dist/components/ChecksErrors/ChecksErrors.esm.js +0 -2
  413. package/dist/components/ContextMenu/ContextMenu.esm.js +0 -2
  414. package/dist/components/DraggableChip/DraggableChip.esm.js +0 -2
  415. package/dist/components/DraggableChip/chipStyles.esm.js +0 -2
  416. package/dist/components/DroppableInput/DroppableInput.esm.js +0 -2
  417. package/dist/components/LevelCard/LevelCard.esm.js +0 -2
  418. package/dist/components/LevelCard/LevelTooltip.esm.js +0 -2
  419. package/dist/components/TrackForm/Steps/LevelsStep/ChecksSection/ChecksSection.esm.js +0 -2
  420. package/dist/components/TrackForm/Steps/LevelsStep/LevelsSection/LevelChipsSection.esm.js +0 -2
  421. package/dist/components/TrackForm/Steps/LevelsStep/LevelsSection/LevelsSection.esm.js +0 -2
  422. package/dist/components/TrackForm/Steps/LevelsStep/LevelsStep.esm.js +0 -2
  423. package/dist/components/TrackPage/TrackLevelsChart.esm.js +0 -2
  424. package/dist/hooks/useContextMenu.esm.js +0 -2
@@ -1,2 +1,2 @@
1
- import t,{createContext as h,useState as e}from"react";import{useFormContext as E}from"react-hook-form";import{FactExplorerDialog as x}from"./FactExplorerDialog.esm.js";const a=h({open:!1,updateOpen:()=>{},updateOnSave:()=>{},updateFactRef:()=>{},updatePath:()=>{},updateEntityRef:()=>{},updatePathResolver:()=>{}}),F=({children:r})=>{const[p,o]=e(!1),[n,l]=e(),[u,d]=e(),[c,f]=e(),[i,m]=e(),[s,v]=e(),R=E()?.getValues("filtersStep.filter");return t.createElement(a.Provider,{value:{open:p,updateOpen:o,onSave:n,updateOnSave:l,factRef:u,updateFactRef:d,path:c,updatePath:f,entityRef:i,updateEntityRef:m,pathResolver:s,updatePathResolver:v,filters:R}},t.createElement(t.Fragment,null,r,t.createElement(x,null)))};export{a as FactExplorerContext,F as FactExplorerProvider};
1
+ import{jsx as t,jsxs as x,Fragment as R}from"react/jsx-runtime";import{createContext as F,useState as e}from"react";import{useFormContext as P}from"react-hook-form";import{FactExplorerDialog as E}from"./FactExplorerDialog.esm.js";const a=F({open:!1,updateOpen:()=>{},updateOnSave:()=>{},updateFactRef:()=>{},updatePath:()=>{},updateEntityRef:()=>{},updatePathResolver:()=>{}}),S=({children:r})=>{const[o,p]=e(!1),[n,d]=e(),[u,i]=e(),[l,f]=e(),[s,c]=e(),[h,m]=e(),v=P()?.getValues("filtersStep.filter");return t(a.Provider,{value:{open:o,updateOpen:p,onSave:n,updateOnSave:d,factRef:u,updateFactRef:i,path:l,updatePath:f,entityRef:s,updateEntityRef:c,pathResolver:h,updatePathResolver:m,filters:v},children:x(R,{children:[r,t(E,{})]})})};export{a as FactExplorerContext,S as FactExplorerProvider};
2
2
  //# sourceMappingURL=FactExplorerContext.esm.js.map
@@ -1,2 +1,2 @@
1
- import{Button as R}from"@material-ui/core";import E from"@material-ui/icons/Search";import a,{useContext as s}from"react";import{SoundcheckDialog as x}from"../SoundcheckDialog/SoundcheckDialog.esm.js";import{FactExplorer as v}from"./FactExplorer.esm.js";import{FactExplorerContext as m}from"./FactExplorerContext.esm.js";const F=()=>{const{open:e,updateOpen:o,onSave:r,factRef:p,updateFactRef:n,path:l,updatePath:c,entityRef:t,updateEntityRef:f,pathResolver:i,filters:u}=s(m);return a.createElement(x,{open:e,handleClose:()=>o(!1),title:"Fact Explorer",fullScreen:!1},a.createElement(v,{onSave:r,factRef:p,updateFactRef:n,path:l,updatePath:c,entityRef:t,updateEntityRef:f,pathResolver:i,filters:u}))},S=({onSave:e,factRef:o,path:r,pathResolver:p,className:n,text:l="Explore Facts",hideIcon:c})=>{const{updateOpen:t,updateOnSave:f,updateFactRef:i,updatePath:u,updatePathResolver:d}=s(m);return a.createElement(R,{onClick:()=>{t(!0),i(o??""),u(r??""),d(p??""),f(()=>h=>{e&&e(h),t(!1)})},className:n,variant:"text",startIcon:c?void 0:a.createElement(E,null)},l)};export{F as FactExplorerDialog,S as FactExplorerDialogButton};
1
+ import{jsx as a}from"react/jsx-runtime";import{Button as R}from"@material-ui/core";import x from"@material-ui/icons/Search";import{useContext as u}from"react";import{SoundcheckDialog as v}from"../SoundcheckDialog/SoundcheckDialog.esm.js";import{FactExplorer as E}from"./FactExplorer.esm.js";import{FactExplorerContext as d}from"./FactExplorerContext.esm.js";const F=()=>{const{open:t,updateOpen:o,onSave:r,factRef:p,updateFactRef:n,path:c,updatePath:l,entityRef:e,updateEntityRef:f,pathResolver:i,filters:s}=u(d);return a(v,{open:t,handleClose:()=>o(!1),title:"Fact Explorer",fullScreen:!1,children:a(E,{onSave:r,factRef:p,updateFactRef:n,path:c,updatePath:l,entityRef:e,updateEntityRef:f,pathResolver:i,filters:s})})},S=({onSave:t,factRef:o,path:r,pathResolver:p,className:n,text:c="Explore Facts",hideIcon:l})=>{const{updateOpen:e,updateOnSave:f,updateFactRef:i,updatePath:s,updatePathResolver:h}=u(d);return a(R,{onClick:()=>{e(!0),i(o??""),s(r??""),h(p??""),f(()=>m=>{t&&t(m),e(!1)})},className:n,variant:"text",startIcon:l?void 0:a(x,{}),children:c})};export{F as FactExplorerDialog,S as FactExplorerDialogButton};
2
2
  //# sourceMappingURL=FactExplorerDialog.esm.js.map
@@ -1,2 +1,2 @@
1
- import{Fade as n}from"@material-ui/core";import m,{useState as c,useEffect as i}from"react";const u=({children:e})=>{const[t,o]=c(!1);return i(()=>{const r=setTimeout(()=>{o(!0)},250);return()=>clearTimeout(r)},[]),m.createElement(n,{in:t,timeout:250},e)};export{u as FadeIn};
1
+ import{jsx as n}from"react/jsx-runtime";import{Fade as i}from"@material-ui/core";import{useState as m,useEffect as c}from"react";const s=({children:t})=>{const[e,o]=m(!1);return c(()=>{const r=setTimeout(()=>{o(!0)},250);return()=>clearTimeout(r)},[]),n(i,{in:e,timeout:250,children:t})};export{s as FadeIn};
2
2
  //# sourceMappingURL=FadeIn.esm.js.map
@@ -1,2 +1,2 @@
1
- import{parseEntityRef as S,DEFAULT_NAMESPACE as A}from"@backstage/catalog-model";import{useApi as O,configApiRef as v}from"@backstage/core-plugin-api";import{makeStyles as w,Typography as T,Box as z,FormControlLabel as G,Checkbox as N,TextField as I}from"@material-ui/core";import M from"@material-ui/icons/CheckBox";import U from"@material-ui/icons/CheckBoxOutlineBlank";import B from"@material-ui/icons/ExpandMore";import{Autocomplete as D}from"@material-ui/lab";import{combineEntityFilterQueries as P}from"@spotify/backstage-plugin-soundcheck-common";import t,{useState as R,useMemo as q,useCallback as u}from"react";import{useGetEntityFacets as H}from"../../hooks/catalog/useGetEntityFacets.esm.js";import{getGroupFilterFromConfig as K}from"../../utils/getGroupFilterFromConfig.esm.js";import{FormFieldLabel as Q}from"../FormFieldLabel/FormFieldLabel.esm.js";import{ListboxVirtualized as V}from"../ListboxVirtualized/ListboxVirtualized.esm.js";const _=w({container:{padding:0},formControl:{flexGrow:1},label:{lineHeight:"1em"}}),j=({facet:s,label:p,values:l,onChange:a,disabled:b,filter:g,isOwnerSelect:f})=>{const m=_(),E=O(v),[C,i]=R(!1),{data:r,isLoading:h,error:L}=H(s,P(g,f?K(E):void 0)),o=q(()=>r?.map(e=>e.toLocaleLowerCase("en-US")),[r]),d=l?.map(e=>e.toLocaleLowerCase("en-US"))??[],x=u((e,n)=>{a(n),o&&o.every(c=>n.includes(c))&&i(!1)},[o,a,i]),k=u(()=>{a(l?.length?l:void 0)},[l,a]);if(!r||!o||L)return t.createElement(T,{color:"error"},"Failed to load facet: ",s);const y=b||h||!l?.length&&(!r?.length||!o?.length),F=Array.from(new Set([...o,...d]));return t.createElement(z,{pb:1,pt:1,className:m.container},t.createElement(Q,{title:p,docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/filters"}),t.createElement(D,{open:C,onOpen:()=>i(!0),onClose:()=>i(!1),className:m.formControl,multiple:!0,limitTags:4,disableCloseOnSelect:!0,"aria-label":p,options:F,value:d,getOptionLabel:e=>{if(f){const n=r[o.indexOf(e)];return n?S(n,{defaultKind:"group",defaultNamespace:A}).name:e}return r[o.indexOf(e)]??e},onChange:x,onBlur:k,disabled:y,ListboxComponent:V,renderOption:(e,{selected:n})=>t.createElement(G,{onClick:c=>c.preventDefault(),control:t.createElement(N,{icon:t.createElement(U,{fontSize:"small"}),checkedIcon:t.createElement(M,{fontSize:"small"}),checked:n}),label:r[o.indexOf(e)]??e,classes:{label:m.label}}),size:"small",popupIcon:t.createElement(B,{"data-testid":"selected-facets-expand"}),renderInput:e=>t.createElement(I,{...e,variant:"outlined"})}))};export{j as EntityAutocompletePicker};
1
+ import{jsx as t,jsxs as L}from"react/jsx-runtime";import{makeStyles as z,FormControlLabel as A,Checkbox as I,Typography as N,Box as j,TextField as B}from"@material-ui/core";import E from"@material-ui/icons/CheckBox";import G from"@material-ui/icons/CheckBoxOutlineBlank";import U from"@material-ui/icons/ExpandMore";import{Autocomplete as V}from"@material-ui/lab";import{useState as D,useMemo as s,useCallback as d}from"react";import{useGetEntityFacets as H}from"../../hooks/catalog/useGetEntityFacets.esm.js";import{FormFieldLabel as M}from"../FormFieldLabel/FormFieldLabel.esm.js";import{ListboxVirtualized as P}from"../ListboxVirtualized/ListboxVirtualized.esm.js";const $=z({container:{padding:0},formControl:{flexGrow:1},label:{lineHeight:"1em"}}),q=({facet:f,label:b,values:l,onChange:n,disabled:g,filter:x,renderOption:u,renderTags:k,facetFilter:h})=>{const i=$(),[y,c]=D(!1),{data:r,isLoading:C,error:S}=H(f,x),o=s(()=>r?.filter(h??(()=>!0)).map(e=>e.toLocaleLowerCase("en-US")),[r,h]),m=s(()=>l?.map(e=>e.toLocaleLowerCase("en-US"))??[],[l]),F=d((e,a)=>{n(a),o&&o.every(p=>a.includes(p))&&c(!1)},[o,n]),v=d(()=>{n(l?.length?l:void 0)},[l,n]),O=d((e,a)=>u?.(e,a)??t(A,{onClick:p=>p.preventDefault(),control:t(I,{icon:t(G,{fontSize:"small"}),checkedIcon:t(E,{fontSize:"small"}),checked:a.selected}),label:e,classes:{label:i.label}}),[u,i.label]),T=s(()=>g||C||!l?.length&&(!r?.length||!o?.length),[g,C,l?.length,r?.length,o?.length]),w=s(()=>Array.from(new Set([...o??[],...m])),[o,m]);return S?L(N,{color:"error",children:["Failed to load facet: ",f]}):L(j,{pb:1,pt:1,className:i.container,children:[t(M,{title:b,docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/filters"}),t(V,{open:y,onOpen:()=>c(!0),onClose:()=>c(!1),className:i.formControl,multiple:!0,limitTags:4,disableCloseOnSelect:!0,"aria-label":b,options:w,value:m,getOptionLabel:e=>r&&o?r[o.indexOf(e)]??e:e,onChange:F,onBlur:v,disabled:T,ListboxComponent:P,renderOption:O,renderTags:k,size:"small",popupIcon:t(U,{"data-testid":"selected-facets-expand"}),renderInput:e=>t(B,{...e,variant:"outlined"})})]})};export{q as EntityAutocompletePicker};
2
2
  //# sourceMappingURL=EntityAutocompletePicker.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as R,Divider as W,Box as d,Tabs as z,Tab as N,Grid as c,Paper as H,Typography as k,Chip as T,Switch as X,FormHelperText as Y}from"@material-ui/core";import{isEmpty as P}from"lodash";import e,{useState as j,useMemo as I}from"react";import{useFormContext as G}from"react-hook-form";import M from"react-use/lib/useLocalStorage";import{FormFieldLabel as v}from"../FormFieldLabel/FormFieldLabel.esm.js";import{EntityAutocompletePicker as _}from"./EntityAutocompletePicker.esm.js";import{FilterKeyValueInput as $}from"./FilterKeyValueInput.esm.js";import{FilterPreviewTable as q}from"./FilterPreviewTable/FilterPreviewTable.esm.js";import{FILTER_OPTIONS as O,emptyFilters as J}from"./types.esm.js";import{filterPresent as D,isValidOtherFilterKey as Q}from"./utils.esm.js";const U=R(t=>({title:{fontWeight:700},filterContainer:{display:"flex",flexWrap:"wrap"},selectionTabs:{marginBottom:t.spacing(2)},divider:{marginTop:t.spacing(2)},filterDisplayBox:{padding:t.spacing(2),paddingLeft:t.spacing(4),border:`1px solid ${t.palette.divider}`,marginBottom:t.spacing(0),display:"flex",alignItems:"center",flex:1},error:{borderColor:t.palette.error.main}})),f=t=>P(t)?"":`${t.length>1?`[${t.join(", ")}]`:t[0]}`,Z=({filterValue:t,excludeFilter:y,keyValueFilter:s,excludeKeyValueFilter:n})=>{const m=(r=J())=>O.map(l=>P(r[l.key])?"":`${l.facet}: ${f(r[l.key])}`).filter(l=>!!l),i=r=>[r?.selectedLabels?.map(l=>`metadata.labels.${l.key}: ${f(l.value)}`),r?.selectedAnnotations?.map(l=>`metadata.annotations.${l.key}: ${f(l.value)}`),r?.selectedOtherFilters?.map(l=>`${l.key}: ${f(l.value)}`)].flat(),g=[...m(t),...i(s)],o=[...m(y),...i(n)];return{includeFilterDisplay:g,excludeFilterDisplay:o}},ee=({filterName:t,disabled:y,keyValueFilterName:s,excludeFilterName:n,excludeKeyValueFilterName:m})=>{const i=U(),{setValue:g,watch:o}=G(),[r,l]=j(0),[p,K]=M("soundcheck-show-preview",!0),w=I(()=>r===0?t:n,[n,t,r]),u=I(()=>r===0?s:m,[m,s,r]),V=o(w??t),A=a=>h=>{g(w??t,{...V,[a]:h??[]})},E=o(t),F=n?o(n):void 0,x=s?o(s):void 0,b=m?o(m):void 0,{includeFilterDisplay:S,excludeFilterDisplay:B}=Z({filterValue:E,excludeFilter:F,keyValueFilter:x,excludeKeyValueFilter:b}),C=D(E,x),L=D(F,b);return e.createElement(e.Fragment,null,n&&e.createElement(e.Fragment,null,e.createElement(W,{className:i.divider}),e.createElement(d,{className:i.selectionTabs},e.createElement(z,{value:r,onChange:(a,h)=>l(h)},e.createElement(N,{label:"Include Filters","aria-label":"include filters"}),e.createElement(N,{label:"Exclude Filters","aria-label":"exclude filters"})))),e.createElement(c,{container:!0,spacing:6},e.createElement(c,{item:!0,container:!0,className:i.filterContainer,spacing:2},O.map(a=>e.createElement(c,{item:!0,xs:12,sm:6,md:4,key:a.key},e.createElement(_,{...a,values:V?.[a.key],onChange:A(a.key),disabled:y}))),u&&e.createElement(e.Fragment,null,e.createElement(c,{item:!0,xs:12,sm:6,md:4},e.createElement(v,{title:"Label",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/filters"}),e.createElement($,{name:`${u}.selectedLabels`,title:"Label Filter"})),e.createElement(c,{item:!0,xs:12,sm:6,md:4},e.createElement(v,{title:"Annotation",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/filters"}),e.createElement($,{name:`${u}.selectedAnnotations`,title:"Annotation Filter"})),e.createElement(c,{item:!0,xs:12,sm:6,md:4},e.createElement(v,{title:"Other",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/filters"}),e.createElement($,{name:`${u}.selectedOtherFilters`,title:"Other Catalog Filter",validateKey:Q})))),e.createElement(c,{item:!0,xs:12},e.createElement(H,{className:`${i.filterDisplayBox} ${!C&&L?i.error:""}`,elevation:0},e.createElement(d,{flex:1,overflow:"auto"},e.createElement(d,{display:"flex",flexWrap:"wrap",alignItems:"center",style:{overflowX:"auto",overflowY:"hidden"}},e.createElement(k,{style:{marginRight:4,marginBottom:4},variant:"subtitle2",component:"span"},"Filter:"),S.map(a=>e.createElement(T,{size:"small",label:a,key:a,style:{marginBottom:4}}))),B.length>0&&e.createElement(d,{display:"flex",flexWrap:"wrap",alignItems:"center",style:{overflowX:"auto",overflowY:"hidden"}},e.createElement(k,{style:{marginRight:4,marginBottom:4},variant:"subtitle2",component:"span"},"Exclude:"),B.map(a=>e.createElement(T,{size:"small",label:a,key:a,style:{marginBottom:4}})))),e.createElement(k,{style:{marginLeft:10},variant:"subtitle2",component:"div"},p?"Hide":"Show"," Preview"),e.createElement(d,null,e.createElement(X,{checked:p,onChange:()=>{K(!p)},inputProps:{"aria-label":"toggle entity preview"}}))),e.createElement(d,{marginBottom:2},!C&&L&&e.createElement(Y,{error:!0},"Exclude filter cannot be used alone. Please add an include filter.")),p&&e.createElement(q,{filter:E,keyValueFilter:x,excludeFilter:F,excludeKeyValueFilter:b}))))};export{ee as FilterComponent};
1
+ import{jsxs as i,Fragment as $,jsx as e}from"react/jsx-runtime";import{makeStyles as j,Divider as z,Box as p,Tabs as X,Tab as O,Grid as d,Paper as Y,Typography as w,Chip as P,Switch as G,FormHelperText as H}from"@material-ui/core";import{isEmpty as I}from"lodash";import{useState as M,useMemo as K}from"react";import{useFormContext as _}from"react-hook-form";import q from"react-use/lib/useLocalStorage";import{FormFieldLabel as V}from"../FormFieldLabel/FormFieldLabel.esm.js";import{EntityAutocompletePicker as J}from"./EntityAutocompletePicker.esm.js";import{FilterKeyValueInput as L}from"./FilterKeyValueInput.esm.js";import{FilterPreviewTable as Q}from"./FilterPreviewTable/FilterPreviewTable.esm.js";import{FILTER_OPTIONS as E,emptyFilters as U}from"./types.esm.js";import{filterPresent as A,isValidOtherFilterKey as Z}from"./utils.esm.js";const ee=j(l=>({title:{fontWeight:700},filterContainer:{display:"flex",flexWrap:"wrap"},selectionTabs:{marginBottom:l.spacing(2)},divider:{marginTop:l.spacing(2)},filterDisplayBox:{padding:l.spacing(2),paddingLeft:l.spacing(4),border:`1px solid ${l.palette.divider}`,marginBottom:l.spacing(0),display:"flex",alignItems:"center",flex:1},error:{borderColor:l.palette.error.main}})),f=l=>I(l)?"":`${l.length>1?`[${l.join(", ")}]`:l[0]}`,le=({filterValue:l,excludeFilter:h,keyValueFilter:m,excludeKeyValueFilter:o})=>{const s=(a=U())=>E.map(t=>I(a[t.key])?"":`${t.facet}: ${f(a[t.key])}`).filter(t=>!!t),n=a=>[a?.selectedLabels?.map(t=>`metadata.labels.${t.key}: ${f(t.value)}`),a?.selectedAnnotations?.map(t=>`metadata.annotations.${t.key}: ${f(t.value)}`),a?.selectedOtherFilters?.map(t=>`${t.key}: ${f(t.value)}`)].flat(),y=[...s(l),...n(m)],c=[...s(h),...n(o)];return{includeFilterDisplay:y,excludeFilterDisplay:c}},te=({filterName:l,disabled:h,keyValueFilterName:m,excludeFilterName:o,excludeKeyValueFilterName:s})=>{const n=ee(),{setValue:y,watch:c}=_(),[a,t]=M(0),[g,W]=q("soundcheck-show-preview",!0),B=K(()=>a===0?l:o,[o,l,a]),u=K(()=>a===0?m:s,[s,m,a]),C=c(B??l),R=r=>k=>{y(B??l,{...C,[r]:k??[]})},x=c(l),F=o?c(o):void 0,b=m?c(m):void 0,v=s?c(s):void 0,{includeFilterDisplay:S,excludeFilterDisplay:T}=le({filterValue:x,excludeFilter:F,keyValueFilter:b,excludeKeyValueFilter:v}),N=A(x,b),D=A(F,v);return i($,{children:[o&&i($,{children:[e(z,{className:n.divider}),e(p,{className:n.selectionTabs,children:i(X,{value:a,onChange:(r,k)=>t(k),children:[e(O,{label:"Include Filters","aria-label":"include filters"}),e(O,{label:"Exclude Filters","aria-label":"exclude filters"})]})})]}),i(d,{container:!0,spacing:6,children:[i(d,{item:!0,container:!0,className:n.filterContainer,spacing:2,children:[E.map(r=>e(d,{item:!0,xs:12,sm:6,md:4,children:e(J,{...r,values:C?.[r.key],onChange:R(r.key),disabled:h})},r.key)),u&&i($,{children:[i(d,{item:!0,xs:12,sm:6,md:4,children:[e(V,{title:"Label",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/filters"}),e(L,{name:`${u}.selectedLabels`,title:"Label Filter"})]}),i(d,{item:!0,xs:12,sm:6,md:4,children:[e(V,{title:"Annotation",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/filters"}),e(L,{name:`${u}.selectedAnnotations`,title:"Annotation Filter"})]}),i(d,{item:!0,xs:12,sm:6,md:4,children:[e(V,{title:"Other",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/filters"}),e(L,{name:`${u}.selectedOtherFilters`,title:"Other Catalog Filter",validateKey:Z})]})]})]}),i(d,{item:!0,xs:12,children:[i(Y,{className:`${n.filterDisplayBox} ${!N&&D?n.error:""}`,elevation:0,children:[i(p,{flex:1,overflow:"auto",children:[i(p,{display:"flex",flexWrap:"wrap",alignItems:"center",style:{overflowX:"auto",overflowY:"hidden"},children:[e(w,{style:{marginRight:4,marginBottom:4},variant:"subtitle2",component:"span",children:"Filter:"}),S.map(r=>e(P,{size:"small",label:r,style:{marginBottom:4}},r))]}),T.length>0&&i(p,{display:"flex",flexWrap:"wrap",alignItems:"center",style:{overflowX:"auto",overflowY:"hidden"},children:[e(w,{style:{marginRight:4,marginBottom:4},variant:"subtitle2",component:"span",children:"Exclude:"}),T.map(r=>e(P,{size:"small",label:r,style:{marginBottom:4}},r))]})]}),e(w,{style:{marginLeft:10},variant:"subtitle2",component:"div",children:"Preview"}),e(p,{children:e(G,{checked:g,onChange:()=>{W(!g)},inputProps:{"aria-label":"toggle entity preview"}})})]}),e(p,{marginBottom:2,children:!N&&D&&e(H,{error:!0,children:"Exclude filter cannot be used alone. Please add an include filter."})}),g&&e(Q,{filter:x,keyValueFilter:b,excludeFilter:F,excludeKeyValueFilter:v})]})]})]})};export{te as FilterComponent};
2
2
  //# sourceMappingURL=FilterComponent.esm.js.map
@@ -1,2 +1,2 @@
1
- import{useTheme as h,Box as C,FormControl as E,Select as f,Chip as F,FormHelperText as S}from"@material-ui/core";import t,{useState as k,useMemo as x,useCallback as K}from"react";import{useFormContext as V}from"react-hook-form";import{KeyValueInputDialog as b}from"./KeyValueInputDialog.esm.js";const I=({name:l,title:s,validateKey:u})=>{const{setValue:r,getFieldState:c,trigger:i,watch:d}=V(),n=d(l),{error:m}=c(l),[g,p]=k(!1),o=h(),y=x(()=>n?.map(e=>`${e.key}:${e.value?.join(" | ")}`)??[],[n]),v=K(e=>{r(l,e),i(l)},[l,r,i]);return t.createElement(C,null,t.createElement(b,{title:s,values:n,open:g,handleClose:()=>p(!1),onSave:v,validateKey:u}),t.createElement(E,{size:"small",fullWidth:!0},t.createElement(f,{value:y,onChange:()=>{},multiple:!0,variant:"outlined",open:!1,onOpen:()=>p(!0),onClose:()=>{},error:!!m,displayEmpty:!0,SelectDisplayProps:{style:{paddingLeft:o.spacing(.75)}},renderValue:e=>e.map(a=>t.createElement(F,{size:"small",style:{marginTop:-o.spacing(1),marginBottom:-o.spacing(1)},label:a.length>40?`${a.substring(0,35)}...`:a,key:a}))})),m&&t.createElement(S,{error:!0},"Invalid key value pair detected."))};export{I as FilterKeyValueInput};
1
+ import{jsxs as v,jsx as t}from"react/jsx-runtime";import{useTheme as f,Box as C,FormControl as x,Select as F,Chip as S,FormHelperText as K}from"@material-ui/core";import{useState as V,useMemo as b,useCallback as j}from"react";import{useFormContext as k}from"react-hook-form";import{KeyValueInputDialog as I}from"./KeyValueInputDialog.esm.js";const T=({name:l,title:m,validateKey:u})=>{const{setValue:i,getFieldState:d,trigger:n,watch:c}=k(),a=c(l),{error:s}=d(l),[g,p]=V(!1),r=f(),y=b(()=>a?.map(e=>`${e.key}:${e.value?.join(" | ")}`)??[],[a]),h=j(e=>{i(l,e),n(l)},[l,i,n]);return v(C,{children:[t(I,{title:m,values:a,open:g,handleClose:()=>p(!1),onSave:h,validateKey:u}),t(x,{size:"small",fullWidth:!0,children:t(F,{value:y,onChange:()=>{},multiple:!0,variant:"outlined",open:!1,onOpen:()=>p(!0),onClose:()=>{},error:!!s,displayEmpty:!0,SelectDisplayProps:{style:{paddingLeft:r.spacing(.75)}},renderValue:e=>e.map(o=>t(S,{size:"small",style:{marginTop:-r.spacing(1),marginBottom:-r.spacing(1)},label:o.length>40?`${o.substring(0,35)}...`:o},o))})}),s&&t(K,{error:!0,children:"Invalid key value pair detected."})]})};export{T as FilterKeyValueInput};
2
2
  //# sourceMappingURL=FilterKeyValueInput.esm.js.map
@@ -1,2 +1,2 @@
1
- import{RELATION_PART_OF as s,RELATION_OWNED_BY as f}from"@backstage/catalog-model";import{EntityRefLink as p,EntityRefLinks as u,getEntityRelations as y,humanizeEntityRef as g}from"@backstage/plugin-catalog-react";import{Chip as E}from"@material-ui/core";import i from"react";const o=t=>{const{title:n,relation:c,defaultKind:r,filter:d}=t,m=e=>y(e,c,d),a=e=>m(e).map(l=>g(l,{defaultKind:r})).join(", ");return{title:n,customFilterAndSearch(e,l){return a(l).includes(e)},customSort(e,l){return a(e).localeCompare(a(l))},render:e=>i.createElement(u,{entityRefs:m(e),defaultKind:r,target:"_blank"})}},R=()=>({title:"Name",highlight:!0,render:t=>i.createElement(p,{entityRef:t,title:t.metadata?.title,target:"_blank",rel:"noreferrer"})}),C=()=>o({title:"System",relation:s,defaultKind:"system",filter:{kind:"system"}}),T=()=>o({title:"Owner",relation:f,defaultKind:"group"}),k=()=>({title:"Lifecycle",field:"spec.lifecycle"}),x=()=>({title:"Kind",field:"kind"}),K=()=>({title:"Type",field:"spec.type"}),S=()=>({title:"Tags",field:"metadata.tags",cellStyle:{padding:"0px 16px 0px 20px"},render:t=>i.createElement(i.Fragment,null,t.metadata.tags&&t.metadata.tags.map(n=>i.createElement(E,{key:n,label:n,size:"small",variant:"outlined",style:{marginTop:"4px",marginBottom:"4px"}})))});export{R as createEntityRefColumn,x as createKindColumn,T as createOwnerColumn,k as createSpecLifecycleColumn,K as createSpecTypeColumn,C as createSystemColumn,S as createTagsColumn};
1
+ import{jsx as l,Fragment as c}from"react/jsx-runtime";import{RELATION_PART_OF as f,RELATION_OWNED_BY as p}from"@backstage/catalog-model";import{EntityRefLink as u,EntityRefLinks as y,getEntityRelations as g,humanizeEntityRef as C}from"@backstage/plugin-catalog-react";import{Chip as R}from"@material-ui/core";const m=e=>{const{title:i,relation:d,defaultKind:r,filter:s}=e,o=t=>g(t,d,s),n=t=>o(t).map(a=>C(a,{defaultKind:r})).join(", ");return{title:i,customFilterAndSearch(t,a){return n(a).includes(t)},customSort(t,a){return n(t).localeCompare(n(a))},render:t=>l(y,{entityRefs:o(t),defaultKind:r,target:"_blank"})}},h=()=>({title:"Name",highlight:!0,customFilterAndSearch:(e,i)=>i.metadata.name.toLowerCase().includes(e.toLowerCase()),render:e=>l(u,{entityRef:e,title:e.metadata?.title,target:"_blank",rel:"noreferrer"})}),x=()=>m({title:"System",relation:f,defaultKind:"system",filter:{kind:"system"}}),E=()=>m({title:"Owner",relation:p,defaultKind:"group"}),L=()=>({title:"Lifecycle",field:"spec.lifecycle"}),S=()=>({title:"Kind",field:"kind"}),T=()=>({title:"Type",field:"spec.type"}),K=()=>({title:"Tags",field:"metadata.tags",cellStyle:{padding:"0px 16px 0px 20px"},render:e=>l(c,{children:e.metadata.tags&&e.metadata.tags.map(i=>l(R,{label:i,size:"small",variant:"outlined",style:{marginTop:"4px",marginBottom:"4px"}},i))})});export{h as createEntityRefColumn,S as createKindColumn,E as createOwnerColumn,L as createSpecLifecycleColumn,T as createSpecTypeColumn,x as createSystemColumn,K as createTagsColumn};
2
2
  //# sourceMappingURL=EntityTableColumns.esm.js.map
@@ -1,2 +1,2 @@
1
- import{parseEntityRef as B}from"@backstage/catalog-model";import{Table as j}from"@backstage/core-components";import{makeStyles as k,useTheme as D,Box as h}from"@material-ui/core";import{combineEntityFilterQueries as K,difference as O}from"@spotify/backstage-plugin-soundcheck-common";import i,{useState as b,useMemo as d}from"react";import{useEntitiesByRefs as N}from"../../../hooks/catalog/useEntitiesByRefs.esm.js";import{useGetEntityRefs as C}from"../../../hooks/catalog/useGetEntityRefs.esm.js";import{SearchBar as $}from"../../SearchBar/SearchBar.esm.js";import{mapFiltersToCatalogFilter as T}from"../utils.esm.js";import{createEntityRefColumn as A,createSystemColumn as I,createOwnerColumn as M,createKindColumn as W,createSpecTypeColumn as G,createSpecLifecycleColumn as Q,createTagsColumn as X}from"./EntityTableColumns.esm.js";const Y=k(()=>({entityTable:{'& span[class*="CatalogReactEntityDisplayName-root"]':{"&:hover":{textDecoration:"underline"}}}})),w=[A(),I(),M(),W(),G(),Q(),X()],q=15e3,H=({filter:y,excludeFilter:g,keyValueFilter:f,excludeKeyValueFilter:u})=>{const a=T(y,f),r=!!a?.[0]&&Object.values(a[0]).some(l=>!!l),o=g||u?T(g,u):[],e=!!o?.[0]&&Object.values(o[0]).some(l=>!!l),{data:n,isFetching:s}=C(a,e&&!r?q:void 0,r),m=e?K(a,o):void 0,{data:c,isFetching:S}=C(m??{},void 0,r&&!!m);return{allEntityRefs:d(()=>O(n??[],c??[]),[c,n]),isLoading:s||S}},J=({filter:y,excludeFilter:g,keyValueFilter:f,excludeKeyValueFilter:u,additionalColumns:a=[],title:r,hideTags:o=!1})=>{const[e,n]=b({page:0,pageSize:10}),[s,m]=b(""),{allEntityRefs:c,isLoading:S}=H({filter:y,excludeFilter:g,keyValueFilter:f,excludeKeyValueFilter:u}),l=d(()=>{const t=new RegExp(s,"i");return c.filter(V=>B(V).name.match(t))},[c,s]),p=l.length,F=D(),x=Y(),z=d(()=>l.slice(e.page*e.pageSize,(e.page+1)*e.pageSize),[l,e.page,e.pageSize]),{data:R,isLoading:E}=N({entityRefs:z}),v=d(()=>o?[...w.slice(0,-1),...a]:[...w,...a],[a,o]),L=p>0?`All (${p||0}) `:"No Items",P=r||L;return i.createElement(i.Fragment,null,i.createElement("div",{className:x.entityTable},i.createElement(j,{title:P,columns:v,subtitle:p===0?"Add or adjust filters to see preview.":"",data:R?.items?.filter(t=>!!t)??[],isLoading:E||S,options:{padding:"dense",paging:p>e.pageSize,toolbar:!0,draggable:!1,tableLayout:"fixed",search:!1,showTitle:!0,rowStyle:{fontSize:F.typography.body1.fontSize},showFirstLastPageButtons:!1,emptyRowsWhenPaging:!0,pageSizeOptions:[10,25,50],loadingType:"linear",showEmptyDataSourceMessage:!E,pageSize:e.pageSize,sorting:!1},onPageChange:t=>{n({...e,page:t})},onSearchChange:t=>{m(t)},onRowsPerPageChange:t=>{n({...e,pageSize:t})},components:{Toolbar:t=>i.createElement(h,{padding:2,paddingLeft:4,display:"flex",alignItems:"center",justifyContent:"space-between",borderBottom:`1px solid ${F.palette.divider}`},i.createElement(h,null,t.title),i.createElement(h,null,i.createElement($,{searchTerm:s,setSearchTerm:m})))},page:e.page,totalCount:p,localization:{pagination:{labelDisplayedRows:""}}})))};export{J as FilterPreviewTable};
1
+ import{jsx as h,Fragment as V}from"react/jsx-runtime";import{parseEntityRef as j}from"@backstage/catalog-model";import{Table as k}from"@backstage/core-components";import{makeStyles as D,useTheme as K}from"@material-ui/core";import{combineEntityFilterQueries as O,difference as N}from"@spotify/backstage-plugin-soundcheck-common";import{useState as F,useMemo as u}from"react";import{useEntitiesByRefs as A}from"../../../hooks/catalog/useEntitiesByRefs.esm.js";import{useGetEntityRefs as C}from"../../../hooks/catalog/useGetEntityRefs.esm.js";import{mapFiltersToCatalogFilter as b}from"../utils.esm.js";import{createEntityRefColumn as B,createSystemColumn as M,createOwnerColumn as W,createKindColumn as G,createSpecTypeColumn as I,createSpecLifecycleColumn as Q,createTagsColumn as U}from"./EntityTableColumns.esm.js";const X=D(()=>({entityTable:{'& span[class*="CatalogReactEntityDisplayName-root"]':{"&:hover":{textDecoration:"underline"}}}})),z=[B(),M(),W(),G(),I(),Q(),U()],$=15e3,q=({filter:d,excludeFilter:p,keyValueFilter:y,excludeKeyValueFilter:g})=>{const i=b(d,y),l=!!i?.[0]&&Object.values(i[0]).some(a=>!!a),o=p||g?b(p,g):[],e=!!o?.[0]&&Object.values(o[0]).some(a=>!!a),{data:r,isFetching:m}=C(i,e&&!l?$:void 0,l),c=e?O(i,o):void 0,{data:n,isFetching:f}=C(c??{},void 0,l&&!!c);return{allEntityRefs:u(()=>N(r??[],n??[]),[n,r]),isLoading:m||f}},H=({filter:d,excludeFilter:p,keyValueFilter:y,excludeKeyValueFilter:g,additionalColumns:i=[],title:l,hideTags:o=!1})=>{const[e,r]=F({page:0,pageSize:10}),[m,c]=F(""),{allEntityRefs:n,isLoading:f}=q({filter:d,excludeFilter:p,keyValueFilter:y,excludeKeyValueFilter:g}),a=u(()=>{const t=new RegExp(m,"i");return n.filter(P=>j(P).name.match(t))},[n,m]),s=a.length,R=K(),w=X(),x=u(()=>a.slice(e.page*e.pageSize,(e.page+1)*e.pageSize),[a,e.page,e.pageSize]),{data:T,isLoading:S}=A({entityRefs:x}),E=u(()=>o?[...z.slice(0,-1),...i]:[...z,...i],[i,o]),v=s>0?`All (${s||0}) `:"No Items",L=l||v;return h(V,{children:h("div",{className:w.entityTable,children:h(k,{title:L,columns:E,subtitle:s===0?"Add or adjust filters to see preview.":"",data:T?.items?.filter(t=>!!t)??[],isLoading:S||f,options:{padding:"dense",paging:s>e.pageSize,toolbar:!0,draggable:!1,tableLayout:"fixed",search:!0,showTitle:!0,rowStyle:{fontSize:R.typography.body1.fontSize},showFirstLastPageButtons:!1,emptyRowsWhenPaging:!0,pageSizeOptions:[10,25,50],loadingType:"linear",showEmptyDataSourceMessage:!S,pageSize:e.pageSize,sorting:!1},onPageChange:t=>{r({...e,page:t})},onSearchChange:t=>{c(t)},onRowsPerPageChange:t=>{r({...e,pageSize:t})},page:e.page,totalCount:s,localization:{pagination:{labelDisplayedRows:""}}})})})};export{H as FilterPreviewTable};
2
2
  //# sourceMappingURL=FilterPreviewTable.esm.js.map
@@ -1,2 +1,2 @@
1
- import{Box as n,IconButton as x,Divider as K,Button as C,FormHelperText as S,TextField as z,Chip as A}from"@material-ui/core";import V from"@material-ui/icons/Add";import W from"@material-ui/icons/Delete";import e,{useEffect as F,useCallback as E,useMemo as G,useState as M}from"react";import{useImmer as T}from"use-immer";import{SoundcheckDialog as $}from"../SoundcheckDialog/SoundcheckDialog.esm.js";const B=({value:v,onChange:s,onKeyDown:d,placeholder:o,endAdornment:u,error:a,helperText:i})=>e.createElement(e.Fragment,null,i&&e.createElement(S,{error:a},i),e.createElement(n,{display:"flex",alignItems:"center"},e.createElement(z,{value:v,onChange:s,variant:"outlined",margin:"dense",fullWidth:!0,onKeyDown:d,placeholder:o,InputProps:{endAdornment:u},error:a}))),H=({values:v,addValue:s,deleteValue:d})=>{const[o,u]=M("");return e.createElement(n,{width:"100%"},e.createElement(n,{marginTop:1,marginBottom:1,display:"flex",gridGap:1,flexWrap:"wrap"},v.map(a=>e.createElement(A,{label:a,size:"small",key:a,onDelete:()=>d(a),style:{marginBottom:4}}))),e.createElement(B,{value:o,onChange:a=>u(a.currentTarget.value),onKeyDown:a=>{a.key==="Enter"&&(s(o),u(""))},placeholder:"Type a value and press enter to add to value list.",endAdornment:e.createElement(n,{display:"flex",alignItems:"center"},e.createElement(C,{onClick:()=>s(o),style:{padding:0},size:"small",variant:"text",disabled:!o?.length},"Add"))}))},L=({title:v,open:s,handleClose:d,values:o,onSave:u,validateKey:a})=>{const[i,m]=T([{key:"",value:[]}]);F(()=>{o?.length>0?m(o):m([{key:"",value:[]}])},[o]);const[y,g]=T({}),f=E(({key:t,value:l,idx:r})=>{m(p=>{const c=p[r];c.key=t===void 0?c.key:t,c.value=l===void 0?c.value:l,t&&y[r]&&g(h=>{h[r]=""})})},[y,g,m]),w=E(t=>{m(l=>{l.splice(t,1),l.length===0&&l.push({key:"",value:[]})})},[m]),D=E(t=>{m(l=>{l.splice(t+1,0,{key:"",value:[]})})},[m]),I=E(()=>{let t=!1;if(a){const r=i.map(c=>c.key);let p=0;g(c=>{for(const h of r){const{errorMessage:k}=a(h);k&&(t=!0),c[p]=k??"",p++}})}if(t)return;const l=i.filter(r=>r.key&&r.value);u(l),d()},[a,i,u,d,g]),b=G(()=>i.every(t=>!!t.key&&t.value?.length||!t.key&&!t.value?.length),[i]);return e.createElement($,{title:v,open:s,handleClose:d,fullScreen:!1},e.createElement(n,{marginLeft:1,minWidth:640},i.map((t,l)=>e.createElement(n,{key:l},e.createElement(n,{display:"flex",alignItems:"flex-end",gridGap:12,marginBottom:2},e.createElement(n,{flexGrow:1},e.createElement(B,{value:t.key,onChange:r=>f({key:r.target.value,idx:l}),placeholder:"Key",error:!!y[l],helperText:y[l]})),e.createElement(n,{width:480},e.createElement(H,{values:t.value,addValue:r=>{f({idx:l,value:[...t.value,r]})},deleteValue:r=>{f({idx:l,value:t.value.filter(p=>p!==r)})}})),e.createElement(n,{marginBottom:.75},e.createElement(x,{"aria-label":`remove index ${l} key value pair`,size:"small",onClick:()=>D(l)},e.createElement(V,null))),e.createElement(n,{marginBottom:.75},e.createElement(x,{"aria-label":`remove index ${l} key value pair`,size:"small",onClick:()=>w(l)},e.createElement(W,null)))),e.createElement(K,null))),e.createElement(n,{display:"flex",paddingTop:2,marginTop:1},e.createElement(C,{variant:"contained",size:"medium",color:"primary",onClick:I,disabled:!b},"Save"))))};export{L as KeyValueInputDialog};
1
+ import{jsx as e,jsxs as v,Fragment as z}from"react/jsx-runtime";import{Box as i,IconButton as B,Divider as V,Button as T,FormHelperText as A,TextField as W,Chip as E}from"@material-ui/core";import F from"@material-ui/icons/Add";import G from"@material-ui/icons/Delete";import{useEffect as $,useCallback as f,useMemo as j,useState as L}from"react";import{useImmer as w}from"use-immer";import{SoundcheckDialog as M}from"../SoundcheckDialog/SoundcheckDialog.esm.js";const D=({value:h,onChange:c,onKeyDown:u,placeholder:o,endAdornment:m,error:r,helperText:t})=>v(z,{children:[t&&e(A,{error:r,children:t}),e(i,{display:"flex",alignItems:"center",children:e(W,{value:h,onChange:c,variant:"outlined",margin:"dense",fullWidth:!0,onKeyDown:u,placeholder:o,InputProps:{endAdornment:m},error:r})})]}),H=({values:h,addValue:c,deleteValue:u})=>{const[o,m]=L("");return v(i,{width:"100%",children:[e(i,{marginTop:1,marginBottom:1,display:"flex",gridGap:1,flexWrap:"wrap",children:h.map(r=>e(E,{label:r,size:"small",onDelete:()=>u(r),style:{marginBottom:4}},r))}),e(D,{value:o,onChange:r=>m(r.currentTarget.value),onKeyDown:r=>{r.key==="Enter"&&(c(o),m(""))},placeholder:"Type a value and press enter to add to value list.",endAdornment:e(i,{display:"flex",alignItems:"center",children:e(T,{onClick:()=>c(o),style:{padding:0},size:"small",variant:"text",disabled:!o?.length,children:"Add"})})})]})},P=({title:h,open:c,handleClose:u,values:o,onSave:m,validateKey:r})=>{const[t,d]=w([{key:"",value:[]}]);$(()=>{o?.length>0?d(o):d([{key:"",value:[]}])},[o]);const[y,g]=w({}),x=f(({key:a,value:l,idx:n})=>{d(p=>{const s=p[n];s.key=a===void 0?s.key:a,s.value=l===void 0?s.value:l,a&&y[n]&&g(k=>{k[n]=""})})},[y,g,d]),I=f(a=>{d(l=>{l.splice(a,1),l.length===0&&l.push({key:"",value:[]})})},[d]),b=f(a=>{d(l=>{l.splice(a+1,0,{key:"",value:[]})})},[d]),K=f(()=>{let a=!1;if(r){const n=t.map(s=>s.key);let p=0;g(s=>{for(const k of n){const{errorMessage:C}=r(k);C&&(a=!0),s[p]=C??"",p++}})}if(a)return;const l=t.filter(n=>n.key&&n.value);m(l),u()},[r,t,m,u,g]),S=j(()=>t.every(a=>!!a.key&&a.value?.length||!a.key&&!a.value?.length),[t]);return e(M,{title:h,open:c,handleClose:u,fullScreen:!1,children:v(i,{marginLeft:1,minWidth:640,children:[t.map((a,l)=>v(i,{children:[v(i,{display:"flex",alignItems:"flex-end",gridGap:12,marginBottom:2,children:[e(i,{flexGrow:1,children:e(D,{value:a.key,onChange:n=>x({key:n.target.value,idx:l}),placeholder:"Key",error:!!y[l],helperText:y[l]})}),e(i,{width:480,children:e(H,{values:a.value,addValue:n=>{x({idx:l,value:[...a.value,n]})},deleteValue:n=>{x({idx:l,value:a.value.filter(p=>p!==n)})}})}),e(i,{marginBottom:.75,children:e(B,{"aria-label":`remove index ${l} key value pair`,size:"small",onClick:()=>b(l),children:e(F,{})})}),e(i,{marginBottom:.75,children:e(B,{"aria-label":`remove index ${l} key value pair`,size:"small",onClick:()=>I(l),children:e(G,{})})})]}),e(V,{})]},l)),e(i,{display:"flex",paddingTop:2,marginTop:1,children:e(T,{variant:"contained",size:"medium",color:"primary",onClick:K,disabled:!S,children:"Save"})})]})})};export{P as KeyValueInputDialog};
2
2
  //# sourceMappingURL=KeyValueInputDialog.esm.js.map
@@ -0,0 +1,2 @@
1
+ import{jsxs as s,jsx as e,Fragment as p}from"react/jsx-runtime";import{createElement as T}from"react";import{parseEntityRef as w}from"@backstage/catalog-model";import{useApi as E,configApiRef as L}from"@backstage/core-plugin-api";import{EntityDisplayName as h}from"@backstage/plugin-catalog-react";import{makeStyles as O,Box as f,Typography as R,Button as g,Grid as n,Checkbox as z,Chip as N}from"@material-ui/core";import{combineEntityFilterQueries as j}from"@spotify/backstage-plugin-soundcheck-common";import{getGroupFilterFromConfig as B}from"../../utils/getGroupFilterFromConfig.esm.js";import{EntitiesAutocompletePicker as W}from"../EntitiesAutocompletePicker/EntitiesAutocompletePicker.esm.js";import{EntityAutocompletePicker as c}from"../Filter/EntityAutocompletePicker.esm.js";const y=(i,{selected:r})=>s(p,{children:[e(z,{value:i,checked:r,color:"primary"}),e(h,{entityRef:i})]}),u=(i,r)=>e(p,{children:i.map((l,a)=>T(N,{...r({index:a}),key:l,label:e(h,{entityRef:l}),size:"small"}))}),D=i=>{try{return w(i).kind.toLowerCase()==="system"}catch{return!1}},G=O(i=>({sidebar:{width:"275px",flexShrink:0,height:"100%",padding:i.spacing(3),display:"flex",flexDirection:"column",borderRight:`1px solid ${i.palette.divider}`},filterLabel:{fontWeight:"bold",marginBottom:i.spacing(1)},additionalFilters:{marginTop:i.spacing(2)}})),P=({trackFilter:i,stagedTypes:r,stagedLifecycles:l,stagedOwners:a,stagedSystems:d,onTypesChange:b,onLifecyclesChange:C,onOwnersChange:x,onSystemsChange:F,onApplyFilters:k,onClearFilters:v,hasFilterChanges:A,children:m})=>{const o=G(),S=E(L);return s("div",{className:o.sidebar,children:[s(f,{display:"flex",alignItems:"center",justifyContent:"space-between",mb:1,children:[e(R,{variant:"subtitle2",className:o.filterLabel,children:"Filters"}),(r.length>0||l.length>0||a.length>0||d.length>0)&&e(g,{size:"small",onClick:v,children:"Clear All"})]}),s(n,{container:!0,spacing:1,children:[e(n,{item:!0,xs:12,children:e(c,{facet:"spec.type",label:"Type",values:r,onChange:t=>b(t??[]),filter:i})}),e(n,{item:!0,xs:12,children:e(c,{facet:"spec.lifecycle",label:"Lifecycle",values:l,onChange:t=>C(t??[]),filter:i})}),e(n,{item:!0,xs:12,children:e(W,{label:"Owner",values:a,onChange:t=>x(t??[]),filter:j({kind:["group"]},B(S)),renderOption:y,renderTags:u})}),e(n,{item:!0,xs:12,children:e(c,{facet:"relations.partOf",label:"System",values:d,onChange:t=>F(t??[]),filter:i,renderOption:y,renderTags:u,facetFilter:D})})]}),m&&e("div",{className:o.additionalFilters,children:m}),e(f,{mt:2,children:e(g,{variant:"contained",color:"primary",size:"small",fullWidth:!0,onClick:k,disabled:!A,children:"Apply Filters"})})]})};export{P as FilterSidebar};
2
+ //# sourceMappingURL=FilterSidebar.esm.js.map
@@ -0,0 +1,2 @@
1
+ import{jsxs as s,jsx as e}from"react/jsx-runtime";import{makeStyles as h,Box as l,TextField as C,FormControlLabel as S,Checkbox as b,Typography as g}from"@material-ui/core";import x from"@material-ui/icons/CheckBox";import k from"@material-ui/icons/CheckBoxOutlineBlank";import L from"@material-ui/icons/ExpandMore";import{Autocomplete as I}from"@material-ui/lab";import{useState as A,useEffect as F,useCallback as c}from"react";import{CheckIcon as N}from"../CheckIcon/CheckIcon.esm.js";import{FormFieldLabel as T}from"../FormFieldLabel/FormFieldLabel.esm.js";import{ListboxVirtualized as y}from"../ListboxVirtualized/ListboxVirtualized.esm.js";const O=h({container:{padding:0},formControl:{flexGrow:1},label:{lineHeight:"1em"}});function m(r){return r.toLowerCase().split("_").map(t=>t.charAt(0).toUpperCase()+t.slice(1)).join(" ")}const v=(r,{selected:t})=>e(S,{onClick:o=>o.preventDefault(),control:e(b,{icon:e(k,{fontSize:"small"}),checkedIcon:e(x,{fontSize:"small"}),checked:t}),label:s(l,{display:"flex",alignItems:"center",children:[e(N,{result:r}),e(l,{mr:1}),e(g,{children:m(r)})]})}),z=({states:r,stagedStates:t,onStagedStatesChange:o})=>{const n=O(),[p,a]=A(!1);F(()=>{o(r)},[r,o]);const d=c((i,u)=>{o(u)},[o]),f=c(()=>{o(t?.length?t:[])},[t,o]);return s(l,{pb:1,pt:1,className:n.container,children:[e(T,{title:"State",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/filters"}),e(I,{open:p,onOpen:()=>a(!0),onClose:()=>a(!1),className:n.formControl,multiple:!0,limitTags:4,disableCloseOnSelect:!0,"aria-label":"State",options:["PASSED","FAILED","WARNING","NOT_APPLICABLE"],value:t,getOptionLabel:m,onChange:d,onBlur:f,ListboxComponent:y,renderOption:v,size:"small",popupIcon:e(L,{"data-testid":"selected-facets-expand"}),renderInput:i=>e(C,{...i,variant:"outlined"})})]})};export{z as StateFilter};
2
+ //# sourceMappingURL=StateFilter.esm.js.map
@@ -1,2 +1,2 @@
1
- import{Box as s,Paper as g,Grid as o,Button as r}from"@material-ui/core";import{makeStyles as p}from"@material-ui/core/styles";import e from"react";const d=p(t=>({box:{zIndex:9,bottom:"0"},footer:{padding:t.spacing(1,2)},noMargin:{margin:0},cancelButton:{color:t.palette.text.primary},saveButton:{marginRight:t.spacing(2),marginLeft:t.spacing(3)},noLeftMargin:{marginLeft:0}})),f=({onCancel:t,saveButtonText:i,isLoading:c,onSave:n,disableSave:m,noMargin:l})=>{const a=d();return e.createElement(s,{className:a.box},e.createElement(g,{elevation:3,className:a.footer},e.createElement(o,{container:!0,item:!0,spacing:2,justifyContent:"flex-start",className:a.noMargin},e.createElement(o,{item:!0},n&&e.createElement(r,{variant:"contained",color:"primary",disabled:c||m,onClick:n?()=>n():void 0,className:`${a.saveButton} ${l?a.noLeftMargin:""}`},i)),e.createElement(o,{item:!0},e.createElement(r,{variant:"text",color:"primary",onClick:t,className:a.cancelButton},"Cancel")))))};export{f as FooterButtons};
1
+ import{jsx as e,jsxs as m}from"react/jsx-runtime";import{Box as d,Paper as g,Grid as o,Button as i}from"@material-ui/core";import{makeStyles as p}from"@material-ui/core/styles";const f=p(n=>({box:{zIndex:9,bottom:"0"},footer:{padding:n.spacing(1,2)},noMargin:{margin:0},cancelButton:{color:n.palette.text.primary},saveButton:{marginRight:n.spacing(2),marginLeft:n.spacing(3)},noLeftMargin:{marginLeft:0}})),x=({onCancel:n,saveButtonText:r,isLoading:c,onSave:a,disableSave:s,noMargin:l})=>{const t=f();return e(d,{className:t.box,children:e(g,{elevation:3,className:t.footer,children:m(o,{container:!0,item:!0,spacing:2,justifyContent:"flex-start",className:t.noMargin,children:[e(o,{item:!0,children:a&&e(i,{variant:"contained",color:"primary",disabled:c||s,onClick:a?()=>a():void 0,className:`${t.saveButton} ${l?t.noLeftMargin:""}`,children:r})}),e(o,{item:!0,children:e(i,{variant:"text",color:"primary",onClick:n,className:t.cancelButton,children:"Cancel"})})]})})})};export{x as FooterButtons};
2
2
  //# sourceMappingURL=FooterButtons.esm.js.map
@@ -1,2 +1,2 @@
1
- import{TextField as g}from"@material-ui/core";import{Autocomplete as b}from"@material-ui/lab";import n,{useState as h}from"react";import{ListboxVirtualized as x}from"../ListboxVirtualized/ListboxVirtualized.esm.js";const C=({options:l,onChange:i,value:e,placeholder:r,getOptionLabel:a,disabled:p,fullWidth:d,noOptionsText:u,freeSolo:m=!1,isLoading:s=!1})=>{const[c,f]=h(e??"");return n.createElement(b,{options:l,inputValue:c,onInputChange:(t,o)=>f(o),onChange:(t,o)=>i(o),value:e===""?null:e,getOptionLabel:a,ListboxComponent:x,disabled:p,fullWidth:d,noOptionsText:u,freeSolo:m,loading:s,autoSelect:!0,renderInput:t=>n.createElement(g,{...t,placeholder:r,variant:"outlined",margin:"dense"})})};export{C as ControlledAutocomplete};
1
+ import{jsx as i}from"react/jsx-runtime";import{TextField as L}from"@material-ui/core";import{Autocomplete as T}from"@material-ui/lab";import{useState as v,useMemo as V}from"react";import{ListboxVirtualized as A}from"../ListboxVirtualized/ListboxVirtualized.esm.js";const W=({options:r,onChange:a,value:e,placeholder:p,getOptionLabel:d,disabled:u,fullWidth:s,noOptionsText:m,freeSolo:c=!1,isLoading:g=!1,autoSelect:O=!0,renderOption:f,testId:S,disableCloseOnSelect:b,multiple:t,multipleValue:n,getOptionSelected:x})=>{const[C,h]=v(e??""),I=V(()=>t?n||[]:e||null,[t,n,e]);return i(T,{multiple:t,disableCloseOnSelect:b,options:r,inputValue:C,onInputChange:(o,l)=>h(l),onChange:(o,l)=>a(l),value:I,getOptionLabel:d,ListboxComponent:A,disabled:u,fullWidth:s,noOptionsText:m,freeSolo:c,loading:g,closeIcon:null,getOptionSelected:x,autoSelect:O,renderOption:f,renderTags:()=>null,"data-testid":S,renderInput:o=>i(L,{...o,placeholder:p,variant:"outlined",margin:"dense"})})};export{W as ControlledAutocomplete};
2
2
  //# sourceMappingURL=ControlledAutocomplete.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as I,TextField as L}from"@material-ui/core";import{Autocomplete as y}from"@material-ui/lab";import d from"react";import{Controller as E}from"react-hook-form";import{ListboxVirtualized as F}from"../ListboxVirtualized/ListboxVirtualized.esm.js";const p=I(t=>({clearIndicator:{marginRight:t.spacing(1)},helperText:{marginLeft:0},noMargin:{margin:0}})),O=({name:t,rules:u,label:h,control:g,options:b,getOptionLabel:f,getOptionValue:l,onChange:m,disabled:x,placeholder:C,freeSolo:v=!0,width:s,helperText:S,disableClearable:T,fullWidth:c})=>{const a=p();return d.createElement(E,{name:t,control:g,rules:u,render:({field:o,fieldState:n})=>d.createElement(y,{...o,value:o.value===""?null:o.value,freeSolo:v,autoSelect:!0,"data-testid":`${t}-autocomplete`,style:s?{width:s}:{minWidth:c?void 0:250},disabled:x,options:b,getOptionLabel:f,classes:{clearIndicator:a.clearIndicator},disableClearable:T,fullWidth:c,renderInput:i=>d.createElement(L,{...i,variant:"outlined",label:h,error:n.invalid,placeholder:C,FormHelperTextProps:{className:a.helperText},margin:"dense",className:a.noMargin,helperText:S??(n.error?n.error.message:null)}),onChange:(i,e)=>{const r=l?l(e):e;m?.(r),o.onChange(r)},onInputChange:(i,e)=>{const r=l?l(e):e;m?.(r)},ListboxComponent:F})})};export{O as FormControlledAutocomplete,p as useStyles};
1
+ import{jsx as s}from"react/jsx-runtime";import{makeStyles as I,TextField as L}from"@material-ui/core";import{Autocomplete as y}from"@material-ui/lab";import{Controller as F}from"react-hook-form";import{ListboxVirtualized as O}from"../ListboxVirtualized/ListboxVirtualized.esm.js";const c=I(l=>({clearIndicator:{marginRight:l.spacing(1)},helperText:{marginLeft:0},noMargin:{margin:0}})),W=({name:l,rules:u,label:g,control:h,options:b,getOptionLabel:f,getOptionValue:t,onChange:d,disabled:x,placeholder:C,freeSolo:v=!0,width:m,helperText:S,disableClearable:T,fullWidth:p})=>{const a=c();return s(F,{name:l,control:h,rules:u,render:({field:o,fieldState:n})=>s(y,{...o,value:o.value===""?null:o.value,freeSolo:v,autoSelect:!0,"data-testid":`${l}-autocomplete`,style:m?{width:m}:{minWidth:p?void 0:250},disabled:x,options:b,getOptionLabel:f,classes:{clearIndicator:a.clearIndicator},disableClearable:T,fullWidth:p,renderInput:i=>s(L,{...i,variant:"outlined",label:g,error:n.invalid,placeholder:C,FormHelperTextProps:{className:a.helperText},margin:"dense",className:a.noMargin,helperText:S??(n.error?n.error.message:null)}),onChange:(i,e)=>{const r=t?t(e):e;d?.(r),o.onChange(r)},onInputChange:(i,e)=>{const r=t?t(e):e;d?.(r)},ListboxComponent:O})})};export{W as FormControlledAutocomplete,c as useStyles};
2
2
  //# sourceMappingURL=FormControlledAutocomplete.esm.js.map
@@ -1,2 +1,2 @@
1
- import{TextField as T,FormControlLabel as L,Checkbox as k}from"@material-ui/core";import z from"@material-ui/icons/CheckBox";import F from"@material-ui/icons/CheckBoxOutlineBlank";import{Autocomplete as I}from"@material-ui/lab";import e from"react";import{Controller as O}from"react-hook-form";import{ListboxVirtualized as W}from"../ListboxVirtualized/ListboxVirtualized.esm.js";import{useStyles as w}from"./FormControlledAutocomplete.esm.js";const y=({name:i,rules:s,label:p,control:u,options:f,getOptionLabel:h,getOptionValue:m,onChange:b,disabled:C,placeholder:g,freeSolo:x=!0,width:c,helperText:v,disableClearable:E,fullWidth:d})=>{const a=w();return e.createElement(O,{name:i,control:u,rules:s,render:({field:l,fieldState:n})=>e.createElement(I,{...l,value:l.value,freeSolo:x,autoSelect:!0,"data-testid":`${i}-autocomplete`,style:c?{width:c}:{minWidth:d?void 0:250},disabled:C,options:f,getOptionLabel:h,classes:{clearIndicator:a.clearIndicator},disableClearable:E,fullWidth:d,multiple:!0,size:"small",renderInput:t=>e.createElement(T,{...t,variant:"outlined",label:p,error:n.invalid,placeholder:l.value?.length?"":g,FormHelperTextProps:{className:a.helperText},margin:"dense",className:a.noMargin,helperText:v??(n.error?n.error.message:null)}),renderOption:(t,{selected:o})=>e.createElement(L,{onClick:r=>r.preventDefault(),control:e.createElement(k,{icon:e.createElement(F,{fontSize:"small"}),checkedIcon:e.createElement(z,{fontSize:"small"}),checked:o}),label:t}),onChange:(t,o)=>{const r=m?o.map(S=>m(S)):o;b?.(r),l.onChange(r)},ListboxComponent:W})})};export{y as FormControlledMultipleAutocomplete};
1
+ import{jsx as e}from"react/jsx-runtime";import{TextField as L,FormControlLabel as k,Checkbox as z}from"@material-ui/core";import F from"@material-ui/icons/CheckBox";import I from"@material-ui/icons/CheckBoxOutlineBlank";import{Autocomplete as O}from"@material-ui/lab";import{Controller as N}from"react-hook-form";import{ListboxVirtualized as W}from"../ListboxVirtualized/ListboxVirtualized.esm.js";import{useStyles as w}from"./FormControlledAutocomplete.esm.js";const y=({name:i,rules:p,label:c,control:u,options:f,getOptionLabel:h,getOptionValue:m,onChange:b,disabled:C,placeholder:g,freeSolo:x=!0,width:s,helperText:v,disableClearable:S,fullWidth:d})=>{const a=w();return e(N,{name:i,control:u,rules:p,render:({field:l,fieldState:n})=>e(O,{...l,value:l.value,freeSolo:x,autoSelect:!0,"data-testid":`${i}-autocomplete`,style:s?{width:s}:{minWidth:d?void 0:250},disabled:C,options:f,getOptionLabel:h,classes:{clearIndicator:a.clearIndicator},disableClearable:S,fullWidth:d,multiple:!0,size:"small",renderInput:o=>e(L,{...o,variant:"outlined",label:c,error:n.invalid,placeholder:l.value?.length?"":g,FormHelperTextProps:{className:a.helperText},margin:"dense",className:a.noMargin,helperText:v??(n.error?n.error.message:null)}),renderOption:(o,{selected:t})=>e(k,{onClick:r=>r.preventDefault(),control:e(z,{icon:e(I,{fontSize:"small"}),checkedIcon:e(F,{fontSize:"small"}),checked:t}),label:o}),onChange:(o,t)=>{const r=m?t.map(T=>m(T)):t;b?.(r),l.onChange(r)},ListboxComponent:W})})};export{y as FormControlledMultipleAutocomplete};
2
2
  //# sourceMappingURL=FormControlledMultipleAutocomplete.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as g,FormControl as E,InputLabel as f,Select as y,MenuItem as d,FormHelperText as h}from"@material-ui/core";import e from"react";import{Controller as k}from"react-hook-form";const x=g(l=>({helperText:{marginLeft:0},selectField:{width:"100%",display:"flex",alignItems:"center"},menuBackground:{backgroundColor:l.palette.background.paper}})),F=({name:l,control:c,selectLabel:r,options:i,disabled:p,rules:u,style:b,helperText:o,placeholder:m})=>{const a=x();return e.createElement(k,{name:l,control:c,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(y,{...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"},m&&e.createElement(d,{value:"",disabled:!0},m),i?.map(({value:n,label:v})=>e.createElement(d,{key:n,value:n,"data-testid":`${n}-menu-item`},v))),(o||t.error)&&e.createElement(h,{className:a.helperText},t.error?t.error.message:o))})};export{F as FormControlledSelect};
1
+ import{jsx as r,jsxs as i}from"react/jsx-runtime";import{makeStyles as g,FormControl as v,InputLabel as f,Select as y,MenuItem as c,FormHelperText as k}from"@material-ui/core";import{Controller as F}from"react-hook-form";const C=g(e=>({helperText:{marginLeft:0},selectField:{width:"100%",display:"flex",alignItems:"center"},menuBackground:{backgroundColor:e.palette.background.paper}})),I=({name:e,control:m,selectLabel:t,options:p,disabled:u,rules:b,style:h,helperText:n,placeholder:d})=>{const a=C();return r(F,{name:e,control:m,rules:b,render:({field:s,fieldState:l})=>i(v,{variant:"outlined",style:h??{minWidth:200},error:l.invalid,children:[t&&r(f,{id:`${e}-select-label`,children:t}),i(y,{...s,className:a.selectField,disabled:u,error:l.invalid,"data-testid":`${e}-select`,labelId:`${e}-select-label`,label:t,displayEmpty:!0,value:s.value??"",MenuProps:{classes:{paper:a.menuBackground}},margin:"dense",children:[d&&r(c,{value:"",disabled:!0,children:d}),p?.map(({value:o,label:x})=>r(c,{value:o,"data-testid":`${o}-menu-item`,children:x},o))]}),(n||l.error)&&r(k,{className:a.helperText,children:l.error?l.error.message:n})]})})};export{I as FormControlledSelect};
2
2
  //# sourceMappingURL=FormControlledSelect.esm.js.map
@@ -1,2 +1,2 @@
1
- import{TextField as n}from"@material-ui/core";import l from"react";import{Controller as i}from"react-hook-form";const p=({control:o,disabled:t,className:a,helperTextClassName:m,name:s,placeholder:d})=>l.createElement(i,{name:s,control:o,render:({field:e,fieldState:r})=>l.createElement(n,{...e,value:e.value??"",type:"text",variant:"outlined",margin:"dense",placeholder:d,className:a,disabled:t,error:!!r.error,helperText:r.error?.message,FormHelperTextProps:{className:m}})});export{p as FormControlledTextField};
1
+ import{jsx as l}from"react/jsx-runtime";import{TextField as n}from"@material-ui/core";import{Controller as p}from"react-hook-form";const c=({control:o,disabled:t,className:a,helperTextClassName:d,name:m,placeholder:s,fullWidth:i})=>l(p,{name:m,control:o,render:({field:e,fieldState:r})=>l(n,{...e,value:e.value??"",type:"text",variant:"outlined",margin:"dense",placeholder:s,className:a,disabled:t,error:!!r.error,helperText:r.error?.message,FormHelperTextProps:{className:d},fullWidth:i})});export{c as FormControlledTextField};
2
2
  //# sourceMappingURL=FormControlledTextField.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as l,Typography as m,Link as i}from"@material-ui/core";import a from"@material-ui/icons/InfoOutlined";import e from"react";const o=l(()=>({centerAlignment:{display:"flex",alignItems:"center"}})),c=({title:n,docLink:t})=>{const r=o();return e.createElement(m,{variant:"subtitle2",className:r.centerAlignment},n,t&&e.createElement(i,{className:r.centerAlignment,target:"_blank",rel:"noopener noreferrer",href:t},e.createElement(a,{style:{marginLeft:4},fontSize:"inherit"})))};export{c as FormFieldLabel};
1
+ import{jsxs as i,jsx as r}from"react/jsx-runtime";import{makeStyles as l,Typography as o,Link as a}from"@material-ui/core";import m from"@material-ui/icons/InfoOutlined";const s=l(()=>({centerAlignment:{display:"flex",alignItems:"center"}})),c=({title:t,docLink:e})=>{const n=s();return i(o,{variant:"subtitle2",className:n.centerAlignment,children:[t,e&&r(a,{className:n.centerAlignment,target:"_blank",rel:"noopener noreferrer",href:e,children:r(m,{style:{marginLeft:4},fontSize:"inherit"})})]})};export{c as FormFieldLabel};
2
2
  //# sourceMappingURL=FormFieldLabel.esm.js.map
@@ -1,2 +1,2 @@
1
- import{Typography as c}from"@material-ui/core";import e from"react";import{formStyles as n}from"../../utils/formStyles.esm.js";import"@backstage/catalog-model";import"@spotify/backstage-plugin-soundcheck-common";import"lodash";import{FilterComponent as p}from"../Filter/FilterComponent.esm.js";const d=({description:r,name:t,keyValueFilterName:m,excludeFilterName:l,excludeKeyValueFilterName:i,disabled:a})=>{const o=n();return e.createElement("div",{className:o.filters},e.createElement(c,{variant:"body2"},r),e.createElement(p,{filterName:t,keyValueFilterName:m,disabled:a,excludeFilterName:l,excludeKeyValueFilterName:i}))};export{d as FormFilterSection};
1
+ import{jsxs as d,jsx as e}from"react/jsx-runtime";import{Typography as p}from"@material-ui/core";import{formStyles as s}from"../../utils/formStyles.esm.js";import"@backstage/catalog-model";import"@spotify/backstage-plugin-soundcheck-common";import"lodash";import{FilterComponent as c}from"../Filter/FilterComponent.esm.js";const n=({description:r,name:i,keyValueFilterName:t,excludeFilterName:l,excludeKeyValueFilterName:m,disabled:o})=>{const a=s();return d("div",{className:a.filters,children:[e(p,{variant:"body2",children:r}),e(c,{filterName:i,keyValueFilterName:t,disabled:o,excludeFilterName:l,excludeKeyValueFilterName:m})]})};export{n as FormFilterSection};
2
2
  //# sourceMappingURL=FormFilterSection.esm.js.map
@@ -1,2 +1,2 @@
1
- import{useTheme as v,Typography as n}from"@material-ui/core";import{makeStyles as f}from"@material-ui/core/styles";import c from"@uiw/react-md-editor";import e from"react";import{Controller as g}from"react-hook-form";import x from"rehype-sanitize";const E=f(r=>({markdown:{whiteSpace:"pre-wrap",marginBottom:r.spacing(1)},container:{display:"flex",flexDirection:"column",gap:r.spacing(1)},helperText:{color:r.palette.grey[500]},errorText:{color:r.palette.error.main},errorBorder:{border:`1px solid ${r.palette.error.main}`}})),w=({name:r,control:d,label:m,description:i,disabled:o,rules:s,error:t,helperText:p,placeholder:u})=>{const h=v(),a=E();return e.createElement(g,{name:r,control:d,defaultValue:o?"No description provided.":"",rules:s,render:({field:l})=>e.createElement("div",{"data-color-mode":h.palette.type,className:a.container},e.createElement("div",null,m&&e.createElement(n,{variant:"subtitle2"},m),i&&!o&&e.createElement(n,{variant:"caption"},i)),e.createElement("div",null,o?e.createElement(c.Markdown,{className:a.markdown,source:l.value}):e.createElement(c,{textareaProps:{placeholder:u},value:l.value,className:t&&a.errorBorder,onChange:l.onChange,previewOptions:{rehypePlugins:[[x]]},"data-testid":`markdown-editor-${r}`}),(p||t)&&!o&&e.createElement(n,{variant:"caption",className:t?a.errorText:a.helperText},t?t.message:p)))})};export{w as FormMarkdownInput};
1
+ import{jsx as r,jsxs as n}from"react/jsx-runtime";import{useTheme as v,Typography as i}from"@material-ui/core";import{makeStyles as w}from"@material-ui/core/styles";import p from"@uiw/react-md-editor";import{Controller as T}from"react-hook-form";import c from"remark-gfm";import{ALLOWED_HTML_TAGS as h}from"../SoundcheckMarkdownContent/SoundcheckMarkdownContent.esm.js";import{components as k}from"../SoundcheckMarkdownContent/ComponentRenders.esm.js";const y=w(e=>({markdown:{whiteSpace:"pre-wrap",marginBottom:e.spacing(1)},container:{display:"flex",flexDirection:"column",gap:e.spacing(1)},helperText:{color:e.palette.grey[500]},errorText:{color:e.palette.error.main},errorBorder:{border:`1px solid ${e.palette.error.main}`}})),N=({name:e,control:u,label:d,description:m,disabled:a,rules:f,error:o,helperText:s,placeholder:x})=>{const g=v(),t=y();return r(T,{name:e,control:u,defaultValue:a?"No description provided.":"",rules:f,render:({field:l})=>n("div",{"data-color-mode":g.palette.type,className:t.container,children:[n("div",{children:[d&&r(i,{variant:"subtitle2",children:d}),m&&!a&&r(i,{variant:"caption",children:m})]}),n("div",{children:[a?r(p.Markdown,{className:t.markdown,source:l.value,allowedElements:h,remarkPlugins:[c]}):r(p,{textareaProps:{placeholder:x},value:l.value,className:o&&t.errorBorder,onChange:l.onChange,previewOptions:{allowedElements:h,remarkPlugins:[c],components:{details:k?.details}},"data-testid":`markdown-editor-${e}`}),(s||o)&&!a&&r(i,{variant:"caption",className:o?t.errorText:t.helperText,children:o?o.message:s})]})]})})};export{N as FormMarkdownInput};
2
2
  //# sourceMappingURL=FormMarkdownInput.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as B,Grid as c,Card as C,Stepper as N,Step as h,StepLabel as T,StepContent as F,Box as L,Button as i}from"@material-ui/core";import e from"react";import{useStepper as w}from"../../hooks/useStepper.esm.js";import{formStyles as R}from"../../utils/formStyles.esm.js";import{FooterButtons as A}from"../FooterButtons/FooterButtons.esm.js";const P=B(a=>({iconRoot:{color:a.palette.action.disabledBackground},iconText:{fill:a.palette.text.secondary},iconActive:{"& text":{fill:a.palette.primary.contrastText}}})),V=({onClose:a,handleSubmit:s,trigger:m,onSubmit:p,initialVisited:d,stepNameMap:S,steps:r,isLoading:u,isReadOnly:x,saveButtonText:v})=>{const t=R(),n=P(),{activeStep:E,handleNext:b,handleBack:k,isPreviousStep:y,isVisitedStep:f,onStepClick:g}=w(d,S);return e.createElement(e.Fragment,null,e.createElement(c,{container:!0,spacing:2,className:t.root},e.createElement(c,{item:!0,style:{width:"100%"}},e.createElement(C,{className:t.card},e.createElement(N,{className:t.stepper,activeStep:E,orientation:"vertical"},r.map((l,o)=>e.createElement(h,{key:l.label},e.createElement(T,{className:y(o)||f(o)?t.stepLabel:void 0,onClick:()=>g(o),StepIconProps:{classes:{root:n.iconRoot,text:n.iconText,active:n.iconActive}}},l.label),e.createElement(F,null,l.content(),e.createElement(L,{className:t.buttonChoices,sx:{mb:2}},e.createElement("div",null,o!==0&&e.createElement(i,{className:t.backButton,onClick:k},"Back"),o!==r.length-1&&e.createElement(i,{variant:"contained",color:"primary",onClick:async()=>{await b(m)}},"Next"))))))))),e.createElement(c,{item:!0,xs:12},e.createElement(A,{onCancel:a,saveButtonText:v,isLoading:u,onSave:x?void 0:s(p)}))))};export{V as FormStepper};
1
+ import{jsx as e,Fragment as C,jsxs as n}from"react/jsx-runtime";import{makeStyles as N,Grid as r,Card as T,Stepper as F,Step as L,StepLabel as w,StepContent as R,Box as j,Button as s}from"@material-ui/core";import{useStepper as A}from"../../hooks/useStepper.esm.js";import{formStyles as P}from"../../utils/formStyles.esm.js";import{FooterButtons as V}from"../FooterButtons/FooterButtons.esm.js";const G=N(i=>({iconRoot:{color:i.palette.action.disabledBackground},iconText:{fill:i.palette.text.secondary},iconActive:{"& text":{fill:i.palette.primary.contrastText}}})),I=({onClose:i,handleSubmit:p,trigger:d,onSubmit:m,initialVisited:h,stepNameMap:x,steps:l,isLoading:S,isReadOnly:v,saveButtonText:u})=>{const t=P(),a=G(),{activeStep:b,handleNext:B,handleBack:f,isPreviousStep:g,isVisitedStep:k,onStepClick:y}=A(h,x);return e(C,{children:n(r,{container:!0,spacing:2,className:t.root,children:[e(r,{item:!0,style:{width:"100%"},children:e(T,{className:t.card,children:e(F,{className:t.stepper,activeStep:b,orientation:"vertical",children:l.map((c,o)=>n(L,{children:[e(w,{className:g(o)||k(o)?t.stepLabel:void 0,onClick:()=>y(o),StepIconProps:{classes:{root:a.iconRoot,text:a.iconText,active:a.iconActive}},children:c.label}),n(R,{children:[c.content(),e(j,{className:t.buttonChoices,sx:{mb:2},children:n("div",{children:[o!==0&&e(s,{className:t.backButton,onClick:f,children:"Back"}),o!==l.length-1&&e(s,{variant:"contained",color:"primary",onClick:async()=>{await B(d)},children:"Next"})]})})]})]},c.label))})})}),e(r,{item:!0,xs:12,children:e(V,{onCancel:i,saveButtonText:u,isLoading:S,onSave:v?void 0:p(m)})})]})})};export{I as FormStepper};
2
2
  //# sourceMappingURL=FormStepper.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as y,TextField as g}from"@material-ui/core";import a from"react";import{Controller as F}from"react-hook-form";const P=y(e=>({helperText:{marginLeft:0},labelText:{color:`${e.palette.text.primary} !important`}})),I=({name:e,control:o,error:r,label:n,placeholder:m,disabled:s,numbersOnly:i,inputProps:p,rules:u,messages:l,helperText:d,multiline:c,minRows:x,variant:b="standard",size:T,margin:f="normal"})=>{const t=P();return a.createElement(F,{name:e,control:o,defaultValue:"",rules:u,render:({field:h})=>a.createElement(g,{...h,FormHelperTextProps:{className:t.helperText},InputLabelProps:{className:t.labelText},fullWidth:!0,multiline:c,minRows:x,placeholder:m,label:n,disabled:s,type:i?"number":"text",InputProps:p,margin:f,error:!!r,helperText:r&&l?l[r.type]:d,variant:b,size:T})})};export{I as FormTextInput};
1
+ import{jsx as a}from"react/jsx-runtime";import{makeStyles as y,TextField as g}from"@material-ui/core";import{Controller as I}from"react-hook-form";const P=y(e=>({helperText:{marginLeft:0},labelText:{color:`${e.palette.text.primary} !important`}})),F=({name:e,control:o,error:r,label:n,placeholder:m,disabled:s,numbersOnly:i,inputProps:p,rules:u,messages:l,helperText:d,multiline:x,minRows:c,variant:b="standard",size:T,margin:f="normal"})=>{const t=P();return a(I,{name:e,control:o,defaultValue:"",rules:u,render:({field:h})=>a(g,{...h,FormHelperTextProps:{className:t.helperText},InputLabelProps:{className:t.labelText},fullWidth:!0,multiline:x,minRows:c,placeholder:m,label:n,disabled:s,type:i?"number":"text",InputProps:p,margin:f,error:!!r,helperText:r&&l?l[r.type]:d,variant:b,size:T})})};export{F as FormTextInput};
2
2
  //# sourceMappingURL=FormTextInput.esm.js.map
@@ -1,4 +1,4 @@
1
- import{MarkdownContent as r}from"@backstage/core-components";import{makeStyles as p}from"@material-ui/core";import{dump as m}from"js-yaml";import n,{useMemo as i}from"react";const d=p(e=>({markdownBox:{padding:0,margin:0,fontSize:e.typography.body2.fontSize,"& pre":{margin:0,background:`${e.palette.background.paper} !important`}},preBox:{padding:e.spacing(1),fontSize:e.typography.body2.fontSize,margin:0,background:e.palette.background.paper}})),g=({data:e,dataType:o="json"})=>{const a=d(),t=i(()=>o==="json"?JSON.stringify(e,null,2):o==="yaml"?m(e,{noRefs:!0}):"",[e,o]);return t?.length&&t.length>15e4?n.createElement("pre",{className:a.preBox},t):n.createElement(r,{className:a.markdownBox,content:`\`\`\`${o}
1
+ import{jsx as m}from"react/jsx-runtime";import{makeStyles as n}from"@material-ui/core";import{dump as a}from"js-yaml";import{useMemo as p}from"react";import{SoundcheckMarkdownContent as i}from"../SoundcheckMarkdownContent/SoundcheckMarkdownContent.esm.js";import"@backstage/core-components";import"react-markdown";import"rehype-raw";import"remark-gfm";const d=n(o=>({markdownBox:{padding:0,margin:0,fontSize:o.typography.body2.fontSize,"& pre":{margin:0}},preBox:{padding:o.spacing(1),fontSize:o.typography.body2.fontSize,margin:0,background:o.palette.background.paper}})),s=({data:o,dataType:r="json"})=>{const e=d(),t=p(()=>r==="json"?JSON.stringify(o,null,2):r==="yaml"?a(o,{noRefs:!0}):"",[o,r]);return t?.length&&t.length>15e4?m("pre",{className:e.preBox,children:t}):m(i,{className:e.markdownBox,content:`\`\`\`${r}
2
2
  ${t}
3
- \`\`\``})};export{g as FormattedPreview};
3
+ \`\`\``})};export{s as FormattedPreview};
4
4
  //# sourceMappingURL=FormattedPreview.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as _,Grid as i,RadioGroup as q,Radio as g,Typography as m,TextField as E,FormControl as F,InputLabel as R,Select as S,MenuItem as w,Divider as A}from"@material-ui/core";import e,{useState as v,useRef as H,useEffect as B}from"react";import{getCronDescription as O}from"../../utils/cron.esm.js";import{MIN_TIME_UNIT_VALUE as V,MAX_TIME_UNIT_VALUE as W}from"../../utils/time.esm.js";import{TimeUnit as G}from"./types.esm.js";import{VALID_TIME_UNITS as X,toTimeUnit as j}from"./util.esm.js";const z=_(a=>({divider:{marginTop:a.spacing(3),marginBottom:a.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:a.spacing(1)},selectField:{paddingRight:a.spacing(2)},inputLabel:{color:`${a.palette.text.primary} !important`},menuBackground:{backgroundColor:a.palette.background.paper}})),f=32,y=12,N=a=>a?(Math.ceil(a.length/f)-1)*y:0,J=({value:a,onChange:d,disabled:o,errors:c,intervalTitle:b,intervalDescription:h,intervalLabel:I,cronTitle:L,cronDescription:P})=>{const t=z(),[n,l]=v(a),[T,x]=v(`${a.value}`),p=H();B(()=>{d&&n!==p.current&&(p.current=n,d(n))},[n,d]);const C=r=>{l({...a,type:r.target.value})},D=r=>{x(r.target.value);const s=parseInt(r.target.value,10);l({...a,value:isNaN(s)?0:s})},$=r=>{l({...n,unit:j(r.target.value)??G.Hours})},k=r=>{const s=r.target.value;l({...n,cron:s})},M=()=>{l({...n,type:"cron"})},U=()=>{l({...n,type:"HumanDuration"})},u=c?.message??O(n.cron);return e.createElement(i,{container:!0,direction:"row"},e.createElement(i,{item:!0,className:`${t.noPadding} ${t.fullWidth}`},e.createElement(q,{name:"frequencyType",value:n.type,onChange:C},e.createElement(i,{container:!0,alignItems:"flex-start",className:t.fullWidth},e.createElement(i,{item:!0,className:t.noPaddingLeft},e.createElement(g,{disabled:o,value:"HumanDuration"})),e.createElement(i,{item:!0,className:`${t.noPadding} ${t.radioOptions}`},e.createElement(m,{variant:"body1",className:t.title,onClick:U},b??"Run on a regular interval"),e.createElement(m,{variant:"caption"},h??"Set consistent time intervals."),n.type==="HumanDuration"&&e.createElement(i,{container:!0,className:t.humanDurationContainer,spacing:2},e.createElement(i,{item:!0,className:t.noPadding},e.createElement(E,{id:"every",type:"number",inputProps:{min:V,max:W},label:I??"Every",name:"every",disabled:o,value:T,error:!!c?.message,helperText:c?.message,onChange:D,InputLabelProps:{className:t.inputLabel}})),e.createElement(i,{item:!0,className:t.noPadding},e.createElement(F,null,e.createElement(R,{className:t.inputLabel,id:"frequency-unit"},"Unit"),e.createElement(S,{labelId:"frequency-unit",disabled:o,value:n.unit,onChange:$,"data-testid":"frequency-unit",className:t.selectField,MenuProps:{classes:{paper:t.menuBackground}}},X.map(r=>e.createElement(w,{key:r,value:r},r)))))))),e.createElement(A,{className:t.divider}),e.createElement(i,{container:!0,alignItems:"flex-start"},e.createElement(i,{item:!0,className:t.noPaddingLeft},e.createElement(g,{disabled:o,value:"cron"})),e.createElement(i,{item:!0,className:`${t.noPadding} ${t.radioOptions}`},e.createElement(m,{variant:"body1",className:t.title,onClick:M},L??"Run on a schedule"),e.createElement(m,{variant:"caption"},P??"Set a specific schedule using a cron expression."),n.type==="cron"&&e.createElement(i,{item:!0,className:t.noPadding},e.createElement(E,{id:"cron-expression","data-testid":"cron-expression",className:t.cronInput,label:u,disabled:o,placeholder:"* * * * *",error:!!c?.message,value:n.cron,onChange:k,InputProps:{style:{paddingTop:`${N(u)}px`}}})))))))};export{J as FrequencyComponent,N as calculateCronLabelPadding,f as characterLimitPerLine,y as paddingPerExtraLine};
1
+ import{jsx as n,jsxs as o}from"react/jsx-runtime";import{makeStyles as q,Grid as t,RadioGroup as F,Radio as h,Typography as p,TextField as v,FormControl as R,InputLabel as S,Select as w,MenuItem as A,Divider as H}from"@material-ui/core";import{useState as f,useRef as B,useEffect as G}from"react";import{getCronDescription as O}from"../../utils/cron.esm.js";import{MIN_TIME_UNIT_VALUE as V,MAX_TIME_UNIT_VALUE as W}from"../../utils/time.esm.js";import{TimeUnit as j}from"./types.esm.js";import{VALID_TIME_UNITS as X,toTimeUnit as z}from"./util.esm.js";const J=q(a=>({divider:{marginTop:a.spacing(3),marginBottom:a.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:a.spacing(1)},selectField:{paddingRight:a.spacing(2)},inputLabel:{color:`${a.palette.text.primary} !important`},menuBackground:{backgroundColor:a.palette.background.paper}})),N=32,y=12,b=a=>a?(Math.ceil(a.length/N)-1)*y:0,K=({value:a,onChange:m,disabled:s,errors:d,intervalTitle:I,intervalDescription:L,intervalLabel:P,cronTitle:T,cronDescription:x})=>{const e=J(),[i,l]=f(a),[C,D]=f(`${a.value}`),u=B();G(()=>{m&&i!==u.current&&(u.current=i,m(i))},[i,m]);const E=r=>{l({...a,type:r.target.value})},$=r=>{D(r.target.value);const c=parseInt(r.target.value,10);l({...a,value:isNaN(c)?0:c})},M=r=>{l({...i,unit:z(r.target.value)??j.Hours})},U=r=>{const c=r.target.value;l({...i,cron:c})},_=()=>{l({...i,type:"cron"})},k=()=>{l({...i,type:"HumanDuration"})},g=d?.message??O(i.cron);return n(t,{container:!0,direction:"row",children:n(t,{item:!0,className:`${e.noPadding} ${e.fullWidth}`,children:o(F,{name:"frequencyType",value:i.type,onChange:E,children:[o(t,{container:!0,alignItems:"flex-start",className:e.fullWidth,children:[n(t,{item:!0,className:e.noPaddingLeft,children:n(h,{disabled:s,value:"HumanDuration"})}),o(t,{item:!0,className:`${e.noPadding} ${e.radioOptions}`,children:[n(p,{variant:"body1",className:e.title,onClick:k,children:I??"Run on a regular interval"}),n(p,{variant:"caption",children:L??"Set consistent time intervals."}),i.type==="HumanDuration"&&o(t,{container:!0,className:e.humanDurationContainer,spacing:2,children:[n(t,{item:!0,className:e.noPadding,children:n(v,{id:"every",type:"number",inputProps:{min:V,max:W},label:P??"Every",name:"every",disabled:s,value:C,error:!!d?.message,helperText:d?.message,onChange:$,InputLabelProps:{className:e.inputLabel}})}),n(t,{item:!0,className:e.noPadding,children:o(R,{children:[n(S,{className:e.inputLabel,id:"frequency-unit",children:"Unit"}),n(w,{labelId:"frequency-unit",disabled:s,value:i.unit,onChange:M,"data-testid":"frequency-unit",className:e.selectField,MenuProps:{classes:{paper:e.menuBackground}},children:X.map(r=>n(A,{value:r,children:r},r))})]})})]})]})]}),n(H,{className:e.divider}),o(t,{container:!0,alignItems:"flex-start",children:[n(t,{item:!0,className:e.noPaddingLeft,children:n(h,{disabled:s,value:"cron"})}),o(t,{item:!0,className:`${e.noPadding} ${e.radioOptions}`,children:[n(p,{variant:"body1",className:e.title,onClick:_,children:T??"Run on a schedule"}),n(p,{variant:"caption",children:x??"Set a specific schedule using a cron expression."}),i.type==="cron"&&n(t,{item:!0,className:e.noPadding,children:n(v,{id:"cron-expression","data-testid":"cron-expression",className:e.cronInput,label:g,disabled:s,placeholder:"* * * * *",error:!!d?.message,value:i.cron,onChange:U,InputProps:{style:{paddingTop:`${b(g)}px`}}})})]})]})]})})})};export{K as FrequencyComponent,b as calculateCronLabelPadding,N as characterLimitPerLine,y as paddingPerExtraLine};
2
2
  //# sourceMappingURL=FrequencyComponent.esm.js.map
@@ -1,2 +1,2 @@
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};
1
+ import{jsx as t}from"react/jsx-runtime";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 g}from"../OverviewChartCard/OverviewChartCard.esm.js";import"../OverviewChartCard/OverviewChartCardStyles.esm.js";import{overallGroupPassRatesToCsv as n}from"../TechHealthTabs/TechHealthExportFunctions.esm.js";const u=()=>{const{groupPassRatesOverviewTrends:{data:r,isLoading:a,isError:o}}=i(),s=r?.groupPassRates?.edges.length,e=!r?.groupPassRates||!s||a||o;return t(g,{title:"Team pass rate",subtitle:"Compare the aggregate pass rate for teams",chartSectionContent:t(p,{}),disableDataExport:e,csvFilename:m,csvData:n(r)})};export{u as GroupPassRateCard};
2
2
  //# sourceMappingURL=GroupPassRateCard.esm.js.map
@@ -1,2 +1,2 @@
1
- import{useApi as E,configApiRef as v}from"@backstage/core-plugin-api";import{makeStyles as O,alpha as k,TextField as w,CircularProgress as y}from"@material-ui/core";import P from"@material-ui/lab/Autocomplete";import s,{useMemo as x,useCallback as I,useEffect as f}from"react";import{useSearchParams as A}from"react-router-dom";import F from"react-use/lib/useLocalStorage";import{useGroupOptions as G}from"../../hooks/groups/useGroupOptions.esm.js";const L=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,margin:b,baseClass:a})=>{const{options:o,isLoading:p,isError:d}=G(),t=L(),[i,h]=A(),[n,C]=F("soundcheck.overview.groupRef",null),u=i.get("group"),m=E(v).getOptionalString("soundcheck.overview.defaultSelectedGroupType"),g=x(()=>{if(!p&&o.length){if(u||n){const e=u??n;return o.find(c=>c.ref===e)??o[0]}else if(m)return o.find(e=>e.type===m)??o[0];return o[0]}return null},[m,p,o,u,n]),l=I((e,c)=>{e&&i.get("group")!==e&&(i.set("group",e),h(i,{replace:c}),C(e))},[i,C,h]),S=I((e,c)=>{l?.(c?.ref)},[l]);return f(()=>{n&&!u&&l(n,!0)},[n,u,l]),f(()=>{l(g?.ref,!0)},[l,g]),f(()=>{r?.(d?new Error("Error loading groups"):void 0)},[d,r]),d?null:s.createElement(P,{"aria-label":"Current group",className:a?"":t.root,classes:{clearIndicator:a?"":t.clearIndicator,popupIndicator:a?"":t.popupIndicator},disableClearable:!0,options:o??[],loading:p,groupBy:e=>e.key,value:g,freeSolo:!1,onChange:S,getOptionLabel:e=>e.name,renderInput:e=>s.createElement(w,{...e,variant:"outlined",placeholder:p?"Loading":"Select a group",className:t.textField,margin:b,InputProps:{...e.InputProps,className:a?"":t.input,classes:{notchedOutline:a?"":t.notchedOutline},endAdornment:s.createElement(s.Fragment,null,p?s.createElement(y,{color:"inherit",size:20}):null,e.InputProps.endAdornment)}})})};export{N as GroupSelector};
1
+ import{jsx as m,jsxs as v}from"react/jsx-runtime";import{useApi as O,configApiRef as k}from"@backstage/core-plugin-api";import{makeStyles as x,alpha as y,TextField as E,CircularProgress as P}from"@material-ui/core";import w from"@material-ui/lab/Autocomplete";import{useMemo as A,useCallback as I,useEffect as f,Fragment as F}from"react";import{useSearchParams as G}from"react-router-dom";import L from"react-use/lib/useLocalStorage";import{useGroupOptions as N}from"../../hooks/groups/useGroupOptions.esm.js";const R=x(o=>({root:{width:"100%",minWidth:250},textField:{"& $notchedOutline":{borderColor:y(o.page.fontColor,.25)},"&:hover $notchedOutline":{borderColor:o.page.fontColor}},input:{backgroundColor:"transparent",color:o.page.fontColor},clearIndicator:{color:o.page.fontColor},popupIndicator:{color:o.page.fontColor},notchedOutline:{}}),{name:"SoundcheckGroupSelector"}),j=({setError:o,margin:b,baseClass:a})=>{const{options:e,isLoading:p,isError:c}=N(),t=R(),[i,h]=G(),[n,C]=L("soundcheck.overview.groupRef",null),u=i.get("group"),d=O(k).getOptionalString("soundcheck.overview.defaultSelectedGroupType"),g=A(()=>{if(!p&&e.length){if(u||n){const r=u??n;return e.find(s=>s.ref===r)??e[0]}else if(d)return e.find(r=>r.type===d)??e[0];return e[0]}return null},[d,p,e,u,n]),l=I((r,s)=>{r&&i.get("group")!==r&&(i.set("group",r),h(i,{replace:s}),C(r))},[i,C,h]),S=I((r,s)=>{l?.(s?.ref)},[l]);return f(()=>{n&&!u&&l(n,!0)},[n,u,l]),f(()=>{l(g?.ref,!0)},[l,g]),f(()=>{o?.(c?new Error("Error loading groups"):void 0)},[c,o]),c?null:m(w,{"aria-label":"Current group",className:a?"":t.root,classes:{clearIndicator:a?"":t.clearIndicator,popupIndicator:a?"":t.popupIndicator},disableClearable:!0,options:e??[],loading:p,groupBy:r=>r.key,value:g,freeSolo:!1,onChange:S,getOptionLabel:r=>r.name,renderInput:r=>m(E,{...r,variant:"outlined",placeholder:p?"Loading":"Select a group",className:t.textField,margin:b,InputProps:{...r.InputProps,className:a?"":t.input,classes:{notchedOutline:a?"":t.notchedOutline},endAdornment:v(F,{children:[p?m(P,{color:"inherit",size:20}):null,r.InputProps.endAdornment]})}})})};export{j as GroupSelector};
2
2
  //# sourceMappingURL=GroupSelector.esm.js.map
@@ -1,2 +1,2 @@
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"@spotify/backstage-plugin-soundcheck-common";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};
1
+ import{jsx as m}from"react/jsx-runtime";import{useEntity as u}from"@backstage/plugin-catalog-react";import{makeStyles as y}from"@material-ui/core";import{useState as g,useEffect as v}from"react";import C from"react-confetti";import L 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 w}from"../../hooks/certifications/useCertificationDetailsForTrack.esm.js";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";const P=y(()=>({root:{position:"absolute",width:"100%",height:"100%"}})),b=({programId:t})=>{const s=P(),{entity:a}=u(),{data:f,isLoading:n}=w(a,t),[l,{width:c,height:h}]=L(),o=n?void 0:f?.highestLevel?.ordinal??-1,i=p(o),r=p(t),[d,e]=g(!1);return v(()=>{typeof i<"u"&&typeof o<"u"&&t===r&&o>i&&e(!0)},[o,i,t,r]),d?m("div",{ref:l,className:s.root,children:m(C,{width:c,height:h,numberOfPieces:1e3,gravity:1,initialVelocityY:20,recycle:!1,onConfettiComplete:()=>e(!1)})}):null};export{b as LevelUpParty};
2
2
  //# sourceMappingURL=LevelUpParty.esm.js.map
@@ -0,0 +1,2 @@
1
+ import{jsxs as a,Fragment as c,jsx as e}from"react/jsx-runtime";import{useRouteRef as u}from"@backstage/core-plugin-api";import{TableCell as d,Box as r,Typography as h,Link as N}from"@material-ui/core";import{makeStyles as w}from"@material-ui/core/styles";import{Skeleton as s}from"@material-ui/lab";import{CircularProgressbar as C,buildStyles as S}from"react-circular-progressbar";import"react-circular-progressbar/dist/styles.css";import{useSearchParams as R}from"react-router-dom";import{trackCheckDetailsRouteRef as B}from"../../routes.esm.js";import{getPercentageColor as g}from"../../utils/colors.esm.js";import{compactNumberFormatter as f}from"../../utils/formatters.esm.js";import{CheckStatusBar as v}from"../CheckStatusBar/CheckStatusBar.esm.js";const b=w(i=>({checkContent:{display:"flex",alignItems:"center",gap:i.spacing(2),width:"100%",paddingTop:i.spacing(1),paddingBottom:i.spacing(1)},checkStatus:{display:"flex",alignItems:"center",gap:i.spacing(1),minWidth:"fit-content"},checkName:{display:"flex",alignItems:"center"},checkNameLink:{color:"inherit",textDecoration:"none","&:hover":{textDecoration:"none"}},progressCircle:{width:"24px !important",height:"24px !important"},passPercentage:{fontWeight:"bold",fontSize:"1.25em",minWidth:"50px"},passingText:{color:i.palette.text.secondary,display:"flex",flexDirection:"column",alignItems:"flex-end",lineHeight:1.2,minWidth:"40px"},categoryBarSection:{display:"flex",flexDirection:"column",alignItems:"flex-end",width:"100%",justifyContent:"flex-end"},categoryBar:{"& .MuiBox-root > div":{height:"8px"},width:"100%"},skeleton:{backgroundColor:i.palette.action.hover},passingTextCell:{width:"100px",paddingRight:0,paddingTop:i.spacing(1),paddingBottom:i.spacing(1)}})),I=({check:i,status:n,theme:o,trackId:x})=>{const t=b(),k=u(B),[m]=R(),p=n?n.numberOfEntities-n.notApplicable-n.exempt:0,l=p>0?Math.round((n?.passed??0)/p*100):0,y=`${k({trackId:x,checkId:i.id})}${m.toString()?`?${m.toString()}`:""}`;return a(c,{children:[e(d,{style:{width:"120px",paddingRight:0},children:e(r,{className:t.checkStatus,children:n?a(c,{children:[e(r,{className:t.progressCircle,children:e(C,{value:l,strokeWidth:12,styles:S({strokeLinecap:"round",pathColor:g(o,l),trailColor:o.palette.divider})})}),a(h,{className:t.passPercentage,style:{color:g(o,l)},children:[l,"%"]})]}):a(c,{children:[e(s,{variant:"circle",width:24,height:24,className:t.skeleton}),e(s,{width:45,height:24,className:t.skeleton})]})})}),e(d,{style:{width:"300px",paddingRight:0},children:e(r,{className:t.checkName,children:e(N,{href:y,className:t.checkNameLink,children:e(h,{children:i.name})})})}),e(d,{style:{width:"250px",paddingRight:0},children:e(r,{className:t.categoryBarSection,children:n?e(r,{style:{width:"100%",display:"flex",justifyContent:"flex-end"},children:e(v,{status:n,className:t.categoryBar})}):e(s,{variant:"rect",width:250,height:8,className:t.skeleton})})}),e(d,{style:{width:"100px",paddingRight:0,paddingTop:o.spacing(1),paddingBottom:o.spacing(1)},children:e(r,{className:t.passingText,children:n?a(c,{children:[a(h,{variant:"caption",children:[f(n.passed)," of"," ",f(p)]}),e(h,{variant:"caption",children:"passing"})]}):a(c,{children:[e(s,{width:60,height:16,className:t.skeleton}),e(s,{width:40,height:16,className:t.skeleton})]})})})]})};export{I as CheckRowContent};
2
+ //# sourceMappingURL=CheckRowContent.esm.js.map
@@ -0,0 +1,2 @@
1
+ import{jsx as e,jsxs as s,Fragment as x}from"react/jsx-runtime";import{TableRow as i,TableContainer as y,Table as d,TableBody as m,useTheme as T,TableCell as h,Box as I,IconButton as b,Typography as N,Collapse as S}from"@material-ui/core";import{makeStyles as w}from"@material-ui/core/styles";import B from"@material-ui/icons/KeyboardArrowDown";import H from"@material-ui/icons/KeyboardArrowUp";import{memo as R,useState as z,useCallback as L,useMemo as j}from"react";import{CheckRowContent as W}from"./CheckRowContent.esm.js";const p=w(l=>({root:{width:"100%"},levelCell:{display:"flex",alignItems:"flex-start",width:"100%",padding:l.spacing(1)},levelContent:{display:"flex",flexDirection:"column",gap:l.spacing(2),width:"100%"},levelHeader:{display:"flex",alignItems:"center"},levelName:{fontSize:"1rem",fontWeight:500,lineHeight:1,marginLeft:l.spacing(1)},headerCell:{fontWeight:500,color:l.palette.text.secondary,padding:l.spacing(2)}})),u=R(({check:l,status:n,theme:a,trackId:t})=>e(i,{children:e(W,{check:l,status:n,theme:a,trackId:t})}));u.displayName="CheckRow";const D=({level:l,checkStatuses:n,trackId:a})=>{const t=p(),o=T(),[r,k]=z(!0),g=L(()=>{k(c=>!c)},[]),f=j(()=>l.checks.map(c=>{const v=n?.find(C=>C.id===c.id);return e(u,{check:c,status:v,theme:o,trackId:a},c.id)}),[l.checks,n,o,a]);return s(x,{children:[e(i,{children:e(h,{colSpan:4,className:t.levelCell,children:s(I,{className:t.levelHeader,children:[e(b,{size:"small",onClick:g,children:r?e(H,{}):e(B,{})}),e(N,{className:t.levelName,children:l.name??`Level ${l.ordinal}`})]})})}),e(i,{children:e(h,{style:{paddingTop:0,paddingBottom:0},children:e(S,{in:r,timeout:"auto",unmountOnExit:!0,children:e(d,{size:"small",padding:"none",children:e(m,{children:f})})})})})]})},E=({track:l,checkStatuses:n})=>{const a=p();return l.levels?.length?e(y,{component:"div",className:a.root,children:e(d,{children:e(m,{children:l.levels.map(t=>e(D,{level:t,checkStatuses:n,trackId:l.id},t.ordinal))})})}):null};export{E as LevelsTable};
2
+ //# sourceMappingURL=LevelsTable.esm.js.map
@@ -1,2 +1,2 @@
1
- import x from"@material-ui/core/ListSubheader";import{useTheme as v}from"@material-ui/core/styles";import C from"@material-ui/core/useMediaQuery";import e from"react";import{VariableSizeList as b}from"react-window";const c=8,z=r=>{const{data:t,index:i,style:l}=r;return e.cloneElement(t[i],{style:{...l,top:l.top+c,lineHeight:"1em"}})},p=e.createContext({}),w=e.forwardRef((r,t)=>{const i=e.useContext(p);return e.createElement("div",{ref:t,...r,...i})}),R=r=>{const t=e.useRef(null);return e.useEffect(()=>{t.current!==null&&t.current.resetAfterIndex(0,!0)},[r]),t},S=e.forwardRef((r,t)=>{const{children:i,height:l,itemHeight:f,...d}=r,m=e.Children.toArray(i),h=v(),E=C(h.breakpoints.up("sm"),{noSsr:!0}),s=m.length,u=E?42:48,a=n=>{if(f)return f;if(e.isValidElement(n)){if(n.type===x)return 48;const o=n.props.children;if(o&&typeof o=="string")return o.length>40?54:u}return u},g=()=>s>8?8*u:m.map(a).reduce((n,o)=>n+o,0),y=R(s);return e.createElement("div",{ref:t},e.createElement(p.Provider,{value:d},e.createElement(b,{itemData:m,height:l??g()+2*c,width:"100%",ref:y,outerElementType:w,innerElementType:"ul",itemSize:n=>a(m[n]),overscanCount:5,itemCount:s},z)))});export{S as ListboxVirtualized};
1
+ import{jsx as m}from"react/jsx-runtime";import E from"@material-ui/core/ListSubheader";import{useTheme as v}from"@material-ui/core/styles";import S from"@material-ui/core/useMediaQuery";import{createContext as V,forwardRef as p,useContext as b,Children as z,cloneElement as L,useRef as T,useEffect as w,isValidElement as A}from"react";import{VariableSizeList as H}from"react-window";const d=8,R=t=>{const{data:e,index:n,style:o}=t;return L(e[n],{style:{...o,top:o.top+d,lineHeight:"1em"}})},h=V({}),j=p((t,e)=>{const n=b(h);return m("div",{ref:e,...t,...n})}),k=t=>{const e=T(null);return w(()=>{e.current!==null&&e.current.resetAfterIndex(0,!0)},[t]),e},D=p((t,e)=>{const{children:n,height:o,itemHeight:f,...a}=t,l=z.toArray(n),g=v(),y=S(g.breakpoints.up("sm"),{noSsr:!0}),s=l.length,u=y?42:48,c=r=>{if(f)return f;if(A(r)){if(r.type===E)return 48;const i=r.props.children;if(i&&typeof i=="string")return i.length>40?54:u}return u},x=()=>s>8?8*u:l.map(c).reduce((r,i)=>r+i,0),C=k(s);return m("div",{ref:e,children:m(h.Provider,{value:a,children:m(H,{itemData:l,height:o??x()+2*d,width:"100%",ref:C,outerElementType:j,innerElementType:"ul",itemSize:r=>c(l[r]),overscanCount:5,itemCount:s,children:R})})})});export{D as ListboxVirtualized};
2
2
  //# sourceMappingURL=ListboxVirtualized.esm.js.map
@@ -1,2 +1,2 @@
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};
1
+ import{jsx as n}from"react/jsx-runtime";import{makeStyles as e,Grid as a,CircularProgress as o}from"@material-ui/core";const t=e(i=>({loadingContainer:{marginTop:i.spacing(1),display:"flex",justifyContent:"center",alignItems:"center",height:"100%"}})),s=({size:i})=>{const r=t();return n(a,{"aria-label":"loading indicator",container:!0,className:r.loadingContainer,children:n(o,{size:i})})};export{s as LoadingIndicator};
2
2
  //# sourceMappingURL=LoadingIndicator.esm.js.map
@@ -1,2 +1,2 @@
1
- import{withStyles as y,Button as v,makeStyles as k,Popover as w,TextField as C,Checkbox as O}from"@material-ui/core";import P from"@material-ui/icons/ArrowDropDown";import{Autocomplete as S}from"@material-ui/lab";import t,{useState as F}from"react";import{ListboxVirtualized as L}from"../ListboxVirtualized/ListboxVirtualized.esm.js";const p=y(e=>({root:{color:e.palette.text.primary,paddingLeft:e.spacing(1),paddingRight:e.spacing(1),textTransform:"initial",fontSize:e.typography.body1.fontSize}}))(v),z=k(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"},listbox:{border:"none",height:400},option:{padding:`${e.spacing(.5)}px !important`,'&[data-selected="true"]':{background:"inherit"}},chips:{display:"flex",flexWrap:"wrap"},chip:{margin:1}})),I=({name:e,options:s,label:n,icon:c,filters:d,setFilters:m,disabled:u,customRenderOption:g})=>{const r=z(),[a,i]=F(null),h=o=>{i(o.currentTarget)},b=()=>{i(null)},f=(o,l)=>{m(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(O,{value:o,checked:l,color:"primary"}),o);return t.createElement(t.Fragment,null,t.createElement(p,{startIcon:c,endIcon:t.createElement(P,null),onClick:h,disabled:u},n),t.createElement(w,{id:`${n}-filter-popover`,open:!!a,anchorEl:a,onClose:b,anchorOrigin:{vertical:"bottom",horizontal:"left"},transformOrigin:{vertical:"top",horizontal:"left"},PaperProps:{elevation:4,className:r.popper}},t.createElement(S,{multiple:!0,disablePortal:!0,classes:{root:r.root,paper:r.paper,popperDisablePortal:r.popperDisablePortal,listbox:r.listbox,option:r.option},ListboxComponent:L,renderOption:g??E,id:`multi-select-filter-${e}--select`,value:d,options:s,limitTags:3,onChange:f,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,I as default};
1
+ import{jsxs as p,Fragment as s,jsx as r}from"react/jsx-runtime";import{withStyles as w,Button as C,makeStyles as S,Popover as P,TextField as O,Checkbox as T}from"@material-ui/core";import z from"@material-ui/icons/ArrowDropDown";import{Autocomplete as F}from"@material-ui/lab";import{useState as I}from"react";import{ListboxVirtualized as L}from"../ListboxVirtualized/ListboxVirtualized.esm.js";const d=w(o=>({root:{color:o.palette.text.primary,paddingLeft:o.spacing(1),paddingRight:o.spacing(1),textTransform:"initial",fontSize:o.typography.body1.fontSize}}))(C),$=S(o=>({root:{borderBottom:`1px solid ${o.palette.grey.A100}`,padding:o.spacing(1.5),backgroundColor:o.palette.background.paper},popper:{width:300,height:400,overflow:"hidden"},paper:{boxShadow:"none",margin:0},popperDisablePortal:{width:"100% !important"},listbox:{border:"none",height:400},option:{padding:`${o.spacing(.5)}px !important`,'&[data-selected="true"]':{background:"inherit"}},chips:{display:"flex",flexWrap:"wrap"},chip:{margin:1}})),B=({name:o,options:c,label:l,icon:m,filters:h,setFilters:u,disabled:g,customRenderOption:f})=>{const t=$(),[n,a]=I(null),b=e=>{a(e.currentTarget)},x=()=>{a(null)},v=(e,i)=>{u(i)},y=e=>r(O,{...e,name:"filter",variant:"outlined",placeholder:"Filter",fullWidth:!0}),k=(e,{selected:i})=>p(s,{children:[r(T,{value:e,checked:i,color:"primary"}),e]});return p(s,{children:[r(d,{startIcon:m,endIcon:r(z,{}),onClick:b,disabled:g,children:l}),r(P,{id:`${l}-filter-popover`,open:!!n,anchorEl:n,onClose:x,anchorOrigin:{vertical:"bottom",horizontal:"left"},transformOrigin:{vertical:"top",horizontal:"left"},PaperProps:{elevation:4,className:t.popper},children:r(F,{multiple:!0,disablePortal:!0,classes:{root:t.root,paper:t.paper,popperDisablePortal:t.popperDisablePortal,listbox:t.listbox,option:t.option},ListboxComponent:L,renderOption:f??k,id:`multi-select-filter-${o}--select`,value:h,options:c,limitTags:3,onChange:v,getOptionSelected:(e,i)=>e.toLowerCase()===i.toLowerCase(),renderInput:y,renderTags:()=>null,closeIcon:null,popupIcon:null,handleHomeEndKeys:!0,clearOnEscape:!0,open:!0})})]})};export{d as QuickFilterButton,B as default};
2
2
  //# sourceMappingURL=MultiSelectFilter.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as r,Button as a}from"@material-ui/core";import n from"react";const l=r(t=>({button:{fontSize:t.typography.subtitle2.fontSize,color:t.palette.text.primary,textTransform:"none",padding:0}})),i=({label:t,...e})=>{const o=l();return n.createElement(a,{className:o.button,variant:"text",...e,"aria-label":t},t)};export{i as NoBorderButton};
1
+ import{jsx as e}from"react/jsx-runtime";import{makeStyles as n,Button as a}from"@material-ui/core";const i=n(t=>({button:{fontSize:t.typography.subtitle2.fontSize,color:t.palette.text.primary,textTransform:"none",padding:0}})),l=({label:t,...o})=>{const r=i();return e(a,{className:r.button,variant:"text",...o,"aria-label":t,children:t})};export{l as NoBorderButton};
2
2
  //# sourceMappingURL=NoBorderButton.esm.js.map
@@ -1,2 +1,2 @@
1
- import e from"react";const t=()=>e.createElement("div",null,e.createElement("h1",null,"Org Health"));export{t as default};
1
+ import{jsx as r}from"react/jsx-runtime";const e=()=>r("div",{children:r("h1",{children:"Org Health"})});export{e as default};
2
2
  //# sourceMappingURL=OrgHealthPage.esm.js.map
@@ -1,2 +1,2 @@
1
- import{Card as E,Box as a,Typography as m,Tooltip as p,Button as d}from"@material-ui/core";import C from"@material-ui/icons/GetApp";import e from"react";import{CSVLink as h}from"react-csv";import{useOverviewChartCardStyles as N}from"./OverviewChartCardStyles.esm.js";const u=({title:c,subtitle:n,summaryCardContent:r,chartSectionContent:o,disableDataExport:l,csvData:s,csvFilename:i})=>{const t=N();return e.createElement(E,{className:t.card},e.createElement(a,{className:t.headerRow},e.createElement(a,{className:t.headerSection},e.createElement(m,{className:t.title},c),e.createElement(m,{variant:"caption"},n)),e.createElement(a,{className:t.headerExportSection},e.createElement(h,{data:s,filename:i,onClick:()=>!l},e.createElement(p,{title:"Export to CSV"},e.createElement("span",null,e.createElement(d,{disabled:l},e.createElement(C,null))))))),e.createElement(a,{className:t.contentRow},r&&e.createElement(a,{className:t.leftSection},e.createElement(a,{className:t.summaryCard},r)),e.createElement(a,{className:t.chartSection},o)))};export{u as OverviewChartCard};
1
+ import{jsxs as t,jsx as e}from"react/jsx-runtime";import{Card as h,Box as r,Typography as n,Tooltip as p,Button as C}from"@material-ui/core";import N from"@material-ui/icons/GetApp";import{CSVLink as S}from"react-csv";import{useOverviewChartCardStyles as f}from"./OverviewChartCardStyles.esm.js";const v=({title:l,subtitle:o,summaryCardContent:i,chartSectionContent:s,disableDataExport:c,csvData:d,csvFilename:m})=>{const a=f();return t(h,{className:a.card,children:[t(r,{className:a.headerRow,children:[t(r,{className:a.headerSection,children:[e(n,{className:a.title,children:l}),e(n,{variant:"caption",children:o})]}),e(r,{className:a.headerExportSection,children:e(S,{data:d,filename:m,onClick:()=>!c,children:e(p,{title:"Export to CSV",children:e("span",{children:e(C,{disabled:c,children:e(N,{})})})})})})]}),t(r,{className:a.contentRow,children:[i&&e(r,{className:a.leftSection,children:e(r,{className:a.summaryCard,children:i})}),e(r,{className:a.chartSection,children:s})]})]})};export{v as OverviewChartCard};
2
2
  //# sourceMappingURL=OverviewChartCard.esm.js.map
@@ -1,2 +1,2 @@
1
- import{stringifyEntityRef as i}from"@backstage/catalog-model";import{useEntity as o}from"@backstage/plugin-catalog-react";import{SpotifyLicenseBanner as m}from"@spotify/backstage-plugin-core";import e,{useEffect as a}from"react";import{useSearchParams as c,Routes as l,Route as s}from"react-router-dom";import{soundcheckBackend as p,invalidLicenseMessage as u}from"../../utils/license.esm.js";import{SoundcheckQueryClientProvider as f}from"../SoundcheckQueryClientProvider/SoundcheckQueryClientProvider.esm.js";import{OverviewPageContent as d}from"./OverviewPageContent.esm.js";const g=()=>{const{entity:r}=o(),[t,n]=c();return a(()=>{!t.get("group")&&r&&(t.set("group",i(r)),n(t,{replace:!0}))},[t,n,r]),e.createElement(f,null,e.createElement(l,null,e.createElement(s,{path:"/*",element:e.createElement(e.Fragment,null,e.createElement(m,{backend:p,invalidLicenseMessage:u,inline:!0}),e.createElement(d,{isFixedGroup:!0}))})))};export{g as FixedGroupOverviewPage};
1
+ import{jsx as e,jsxs as t,Fragment as n}from"react/jsx-runtime";import{stringifyEntityRef as m}from"@backstage/catalog-model";import{useEntity as s}from"@backstage/plugin-catalog-react";import{SpotifyLicenseBanner as c}from"@spotify/backstage-plugin-core";import{useEffect as p}from"react";import{useSearchParams as a,Routes as f,Route as u}from"react-router-dom";import{soundcheckBackend as d,invalidLicenseMessage as g}from"../../utils/license.esm.js";import{SoundcheckQueryClientProvider as l}from"../SoundcheckQueryClientProvider/SoundcheckQueryClientProvider.esm.js";import{OverviewPageContent as h}from"./OverviewPageContent.esm.js";const v=()=>{const{entity:i}=s(),[r,o]=a();return p(()=>{!r.get("group")&&i&&(r.set("group",m(i)),o(r,{replace:!0}))},[r,o,i]),e(l,{children:e(f,{children:e(u,{path:"/*",element:t(n,{children:[e(c,{backend:d,invalidLicenseMessage:g,inline:!0}),e(h,{isFixedGroup:!0})]})})})})};export{v as FixedGroupOverviewPage};
2
2
  //# sourceMappingURL=FixedGroupOverviewPage.esm.js.map
@@ -1,2 +1,2 @@
1
- import{Page as o,Header as i}from"@backstage/core-components";import{makeStyles as m}from"@material-ui/core";import{SpotifyLicenseBanner as a}from"@spotify/backstage-plugin-core";import e from"react";import{UserProvider as c}from"../../contexts/UserProvider.esm.js";import l from"../../hooks/useConfirmationModal.esm.js";import{soundcheckBackend as s,invalidLicenseMessage as d}from"../../utils/license.esm.js";import{SoundcheckQueryClientProvider as p}from"../SoundcheckQueryClientProvider/SoundcheckQueryClientProvider.esm.js";import{OverviewPageContent as v}from"./OverviewPageContent.esm.js";const f=m(r=>({overviewContainer:{padding:r.spacing(1,3)}})),u=r=>{const{title:t="Soundcheck"}=r,n=f();return e.createElement(p,null,e.createElement(c,null,e.createElement(l,null,e.createElement(o,{themeId:"website"},e.createElement(a,{backend:s,invalidLicenseMessage:d}),e.createElement(i,{title:t}),e.createElement("div",{className:n.overviewContainer},e.createElement(v,null))))))};export{u as OverviewPage};
1
+ import{jsx as e,jsxs as n}from"react/jsx-runtime";import{Page as t,Header as c}from"@backstage/core-components";import{makeStyles as m}from"@material-ui/core";import{SpotifyLicenseBanner as s}from"@spotify/backstage-plugin-core";import{UserProvider as d}from"../../contexts/UserProvider.esm.js";import a from"../../hooks/useConfirmationModal.esm.js";import{soundcheckBackend as l,invalidLicenseMessage as p}from"../../utils/license.esm.js";import{SoundcheckQueryClientProvider as v}from"../SoundcheckQueryClientProvider/SoundcheckQueryClientProvider.esm.js";import{OverviewPageContent as f}from"./OverviewPageContent.esm.js";const h=m(r=>({overviewContainer:{padding:r.spacing(1,3)}})),g=r=>{const{title:i="Soundcheck"}=r,o=h();return e(v,{children:e(d,{children:e(a,{children:n(t,{themeId:"website",children:[e(s,{backend:l,invalidLicenseMessage:p}),e(c,{title:i}),e("div",{className:o.overviewContainer,children:e(f,{})})]})})})})};export{g as OverviewPage};
2
2
  //# sourceMappingURL=OverviewPage.esm.js.map