@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{EntityRefLink as b}from"@backstage/plugin-catalog-react";import{makeStyles as S,Box as c,Typography as a,Divider as f,Grid as o}from"@material-ui/core";import{parseFactRef as N,getRuleHash as k}from"@spotify/backstage-plugin-soundcheck-common";import e from"react";import{ResultState as R}from"../../graphql/generated/index.esm.js";import{ResultStateBox as B}from"../CheckDetails/ResultStateBox.esm.js";import{ExpressionTypeReadableMap as F,ExpressionType as T}from"../CheckForm/types/ExpressionType.esm.js";import"../Frequency/types.esm.js";import"../Frequency/util.esm.js";import"../Frequency/FrequencyComponent.esm.js";import"../CheckForm/types/Path.esm.js";import{mapRuleToExpression as P}from"../CheckForm/utils/checkFormUtils.esm.js";import{CheckIcon as w}from"../CheckIcon/CheckIcon.esm.js";import{ExpandableSection as z}from"../ExpandableSection/ExpandableSection.esm.js";import{FormattedPreview as x}from"../FormattedPreview/FormattedPreview.esm.js";const v=S(t=>({dryRunRoot:{padding:t.spacing(2)},dryRunSection:{marginBottom:t.spacing(2)},rulesSection:{padding:t.spacing(2),margin:0,width:"100%"},resultBox:{fontSize:t.typography.body1.fontSize},factBox:{padding:0,border:`1px solid ${t.palette.divider}`,overflow:"auto",fontSize:t.typography.body2.fontSize,maxHeight:500},nested:{margin:t.spacing(3)},expressionType:{padding:t.spacing(1,2)},expressionWrapper:{border:`1px solid ${t.palette.divider}`,marginBottom:t.spacing(2)},resultDisplay:{display:"flex",alignItems:"center"},resultIcon:{marginRight:t.spacing(.25)},ownerLink:{"& span":{"&:hover":{textDecoration:"underline"}},fontSize:t.typography.body1.fontSize},valueBox:{maxHeight:500,overflow:"auto"}})),D=({passed:t})=>{const n=v();return e.createElement(a,{variant:"body1",className:n.resultDisplay},e.createElement(w,{className:n.resultIcon,result:t?R.Passed:R.Failed})," ",t?"Passed":"Failed")},g=({check:t,expression:n,facts:s,ruleResults:m})=>{const l=v();return e.createElement(e.Fragment,null,e.createElement(c,{className:l.expressionWrapper},e.createElement(a,{className:l.expressionType,variant:"subtitle1"},F[n.expressionType??T.AllOf]),n.conditions?.map((r,i)=>{const p=r.operatorPrefix?`${r.operatorPrefix}:${r.operator}`:r.operator,d=N(r.factRef),y=s?.find(E=>E.factRef===r.factRef),h=k({factRef:d,value:r.value,operator:p,path:r.path}),u=m?.find(E=>E.name===h);return e.createElement("div",{key:`expression-${i}`},e.createElement(f,{variant:"middle"}),e.createElement(o,{container:!0,className:l.rulesSection,spacing:2},e.createElement(o,{item:!0,xs:6},e.createElement(a,{variant:"subtitle2",color:"textSecondary"},"Integration"),e.createElement(a,{variant:"body1"},d.source)),e.createElement(o,{item:!0,xs:6},e.createElement(a,{variant:"subtitle2",color:"textSecondary"},"Fact"),e.createElement(a,{variant:"body1"},d.name)),t?.pathResolver&&e.createElement(o,{item:!0,xs:6},e.createElement(a,{variant:"subtitle2",color:"textSecondary"},"Path Resolver"),e.createElement(a,{variant:"body1"},t.pathResolver)),e.createElement(o,{item:!0,xs:6},e.createElement(a,{variant:"subtitle2",color:"textSecondary"},"Path"),e.createElement(a,{variant:"body1"},r.path)),e.createElement(o,{item:!0,xs:6},e.createElement(a,{variant:"subtitle2",color:"textSecondary"},"Operator"),e.createElement(a,{variant:"body1"},p)),u?.result!==void 0&&e.createElement(o,{item:!0,xs:6},e.createElement(a,{variant:"subtitle2",color:"textSecondary"},"Result"),e.createElement(D,{passed:u.result})),e.createElement(o,{item:!0,xs:12},e.createElement(a,{variant:"subtitle2",color:"textSecondary"},"Expected"),e.createElement(a,{component:"div",variant:"body2",className:l.valueBox},e.createElement(x,{data:r?.value}))),e.createElement(o,{item:!0,xs:12},e.createElement(a,{variant:"subtitle2",color:"textSecondary"},"Resolved Value"),e.createElement(a,{component:"div",variant:"body2",className:l.valueBox},e.createElement(x,{data:u?.factResult}))),!!y&&e.createElement(o,{item:!0,xs:12},e.createElement(z,{elevation:0,title:"Related Fact"},e.createElement("div",{className:l.factBox},e.createElement(x,{data:y.data}))))))}),!!n?.expressions&&e.createElement(e.Fragment,null,e.createElement(f,{variant:"middle"}),e.createElement(c,{className:l.nested},n?.expressions?.map((r,i)=>e.createElement(g,{check:t,facts:s,ruleResults:m,expression:r,key:`nested-expression-${i}`}))))))},I=({entityRef:t,check:n,checkResult:s,details:m,facts:l,ruleResults:r})=>{const i=v(),p=P(n?.rule);return e.createElement(c,{className:i.dryRunRoot},e.createElement(c,{className:i.dryRunSection},t&&e.createElement(e.Fragment,null,e.createElement(a,{variant:"h5"},"Entity"),e.createElement(a,{variant:"body1"},e.createElement(b,{className:i.ownerLink,entityRef:t})))),e.createElement(c,{className:i.dryRunSection},e.createElement(a,{variant:"h5"},"Check Result"),e.createElement("div",{className:i.resultBox},s?e.createElement(B,{name:n?.name??"",state:s,details:m}):"No Results")),e.createElement(a,{variant:"h5"},"Rules"),e.createElement(g,{check:n,facts:l,ruleResults:r,expression:p}))};export{I as CheckDryRunDetails};
1
+ import{jsxs as i,jsx as e,Fragment as v}from"react/jsx-runtime";import{EntityRefLink as B}from"@backstage/plugin-catalog-react";import{makeStyles as E,Box as h,Typography as r,Divider as b,Grid as l}from"@material-ui/core";import{parseFactRef as F,getRuleHash as P}from"@spotify/backstage-plugin-soundcheck-common";import{ResultState as S}from"../../graphql/generated/index.esm.js";import{ResultStateBox as T}from"../CheckDetails/ResultStateBox.esm.js";import{ExpressionTypeReadableMap as w,ExpressionType as z}from"../CheckForm/types/ExpressionType.esm.js";import"../Frequency/types.esm.js";import"../Frequency/util.esm.js";import"../Frequency/FrequencyComponent.esm.js";import"../CheckForm/types/Path.esm.js";import{mapRuleToExpression as k}from"../CheckForm/utils/checkFormUtils.esm.js";import{CheckIcon as D}from"../CheckIcon/CheckIcon.esm.js";import{ExpandableSection as $}from"../ExpandableSection/ExpandableSection.esm.js";import{FormattedPreview as f}from"../FormattedPreview/FormattedPreview.esm.js";const R=E(t=>({dryRunRoot:{padding:t.spacing(2)},dryRunSection:{marginBottom:t.spacing(2)},rulesSection:{padding:t.spacing(2),margin:0,width:"100%"},resultBox:{fontSize:t.typography.body1.fontSize},factBox:{padding:0,border:`1px solid ${t.palette.divider}`,overflow:"auto",fontSize:t.typography.body2.fontSize,maxHeight:500},nested:{margin:t.spacing(3)},expressionType:{padding:t.spacing(1,2)},expressionWrapper:{border:`1px solid ${t.palette.divider}`,marginBottom:t.spacing(2)},resultDisplay:{display:"flex",alignItems:"center"},resultIcon:{marginRight:t.spacing(.25)},ownerLink:{"& span":{"&:hover":{textDecoration:"underline"}},fontSize:t.typography.body1.fontSize},valueBox:{maxHeight:500,overflow:"auto"}})),I=({passed:t})=>{const n=R();return i(r,{variant:"body1",className:n.resultDisplay,children:[e(D,{className:n.resultIcon,result:t?S.Passed:S.Failed})," ",t?"Passed":"Failed"]})},g=({check:t,expression:n,facts:d,ruleResults:m})=>{const o=R();return e(v,{children:i(h,{className:o.expressionWrapper,children:[e(r,{className:o.expressionType,variant:"subtitle1",children:w[n.expressionType??z.AllOf]}),n.conditions?.map((a,c)=>{const s=a.operatorPrefix?`${a.operatorPrefix}:${a.operator}`:a.operator,p=F(a.factRef),u=d?.find(y=>y.factRef===a.factRef),N=P({factRef:p,value:a.value,operator:s,path:a.path}),x=m?.find(y=>y.name===N);return i("div",{children:[e(b,{variant:"middle"}),i(l,{container:!0,className:o.rulesSection,spacing:2,children:[i(l,{item:!0,xs:6,children:[e(r,{variant:"subtitle2",color:"textSecondary",children:"Integration"}),e(r,{variant:"body1",children:p.source})]}),i(l,{item:!0,xs:6,children:[e(r,{variant:"subtitle2",color:"textSecondary",children:"Fact"}),e(r,{variant:"body1",children:p.name})]}),t?.pathResolver&&i(l,{item:!0,xs:6,children:[e(r,{variant:"subtitle2",color:"textSecondary",children:"Path Resolver"}),e(r,{variant:"body1",children:t.pathResolver})]}),i(l,{item:!0,xs:6,children:[e(r,{variant:"subtitle2",color:"textSecondary",children:"Path"}),e(r,{variant:"body1",children:a.path})]}),i(l,{item:!0,xs:6,children:[e(r,{variant:"subtitle2",color:"textSecondary",children:"Operator"}),e(r,{variant:"body1",children:s})]}),x?.result!==void 0&&i(l,{item:!0,xs:6,children:[e(r,{variant:"subtitle2",color:"textSecondary",children:"Result"}),e(I,{passed:x.result})]}),i(l,{item:!0,xs:12,children:[e(r,{variant:"subtitle2",color:"textSecondary",children:"Expected"}),e(r,{component:"div",variant:"body2",className:o.valueBox,children:e(f,{data:a?.value})})]}),i(l,{item:!0,xs:12,children:[e(r,{variant:"subtitle2",color:"textSecondary",children:"Resolved Value"}),e(r,{component:"div",variant:"body2",className:o.valueBox,children:e(f,{data:x?.factResult})})]}),!!u&&e(l,{item:!0,xs:12,children:e($,{elevation:0,title:"Related Fact",children:e("div",{className:o.factBox,children:e(f,{data:u.data})})})})]})]},`expression-${c}`)}),!!n?.expressions&&i(v,{children:[e(b,{variant:"middle"}),e(h,{className:o.nested,children:n?.expressions?.map((a,c)=>e(g,{check:t,facts:d,ruleResults:m,expression:a},`nested-expression-${c}`))})]})]})})},C=({entityRef:t,check:n,checkResult:d,details:m,facts:o,ruleResults:a,applicabilityResults:c})=>{const s=R(),p=k(n?.rule),u=k(n?.applicable);return i(h,{className:s.dryRunRoot,children:[e(h,{className:s.dryRunSection,children:t&&i(v,{children:[e(r,{variant:"h5",children:"Entity"}),e(r,{variant:"body1",children:e(B,{className:s.ownerLink,entityRef:t})})]})}),i(h,{className:s.dryRunSection,children:[e(r,{variant:"h5",children:"Check Result"}),e("div",{className:s.resultBox,children:d?e(T,{name:n?.name??"",state:d,details:m}):"No Results"})]}),!!c?.length&&i("div",{children:[e(r,{variant:"h5",children:"Applicability Rule"}),e(g,{check:n,facts:o,ruleResults:c,expression:u})]}),!!a?.length&&i("div",{children:[e(r,{variant:"h5",children:"Check Rule"}),e(g,{check:n,facts:o,ruleResults:a,expression:p})]})]})};export{C as CheckDryRunDetails};
2
2
  //# sourceMappingURL=CheckDryRunDetails.esm.js.map
@@ -1,2 +1,2 @@
1
- import o,{useContext as u}from"react";import{SoundcheckDialog as i}from"../SoundcheckDialog/SoundcheckDialog.esm.js";import"./CheckDryRun.esm.js";import"@material-ui/core";import{CheckDryRunDetails as m}from"./CheckDryRunDetails.esm.js";import{CheckDryRunContext as a}from"./CheckDryRunContext.esm.js";import"../CheckForm/utils/checkFormUtils.esm.js";const p=()=>{const{entityRef:r,open:c,updateOpen:n,check:e,result:t,facts:l,ruleResults:s}=u(a);return o.createElement(i,{handleClose:()=>n(!1),title:`${e?.name??"Check"} Run Results`,open:c,fullScreen:!1},o.createElement(m,{entityRef:r,check:e,checkResult:t?.checkResult,details:t?.details,facts:l,ruleResults:s}))};export{p as CheckDryRunDialog};
1
+ import{jsx as l}from"react/jsx-runtime";import{useContext as u}from"react";import{SoundcheckDialog as p}from"../SoundcheckDialog/SoundcheckDialog.esm.js";import"./CheckDryRun.esm.js";import"@material-ui/core";import{CheckDryRunDetails as a}from"./CheckDryRunDetails.esm.js";import{CheckDryRunContext as m}from"./CheckDryRunContext.esm.js";import"../CheckForm/utils/checkFormUtils.esm.js";const R=()=>{const{entityRef:o,open:i,updateOpen:r,check:e,result:t,facts:s,ruleResults:c,applicabilityResults:n}=u(m);return l(p,{handleClose:()=>r(!1),title:`${e?.name??"Check"} Run Results`,open:i,fullScreen:!1,children:l(a,{entityRef:o,check:e,checkResult:t?.checkResult,details:t?.details,facts:s,ruleResults:c,applicabilityResults:n})})};export{R as CheckDryRunDialog};
2
2
  //# sourceMappingURL=CheckDryRunDialog.esm.js.map
@@ -1,2 +1,2 @@
1
- import{Button as u}from"@material-ui/core";import m,{useContext as a,useCallback as k}from"react";import"./CheckDryRun.esm.js";import"../SoundcheckDialog/SoundcheckDialog.esm.js";import"./CheckDryRunDetails.esm.js";import{CheckDryRunContext as p}from"./CheckDryRunContext.esm.js";import"../CheckForm/utils/checkFormUtils.esm.js";const R=({text:s="Details",entityRef:t,check:e,checkResult:o,facts:r,ruleResults:i,size:n="medium"})=>{const{setValues:c}=a(p),l=k(()=>{c({entityRef:t,check:e,checkResult:o,facts:r,ruleResults:i})},[e,o,t,r,i,c]);return m.createElement(u,{size:n,variant:"text",color:"inherit",onClick:l},s)};export{R as CheckDryRunDialogButton};
1
+ import{jsx as m}from"react/jsx-runtime";import{Button as a}from"@material-ui/core";import{useContext as p,useCallback as R}from"react";import"./CheckDryRun.esm.js";import"../SoundcheckDialog/SoundcheckDialog.esm.js";import"./CheckDryRunDetails.esm.js";import{CheckDryRunContext as f}from"./CheckDryRunContext.esm.js";import"../CheckForm/utils/checkFormUtils.esm.js";const h=({text:c="Details",entityRef:t,check:e,checkResult:i,facts:r,ruleResults:o,applicabilityResults:s,size:n="medium"})=>{const{setValues:l}=p(f),u=R(()=>{l({entityRef:t,check:e,checkResult:i,facts:r,ruleResults:o,applicabilityResults:s})},[e,i,t,r,o,s,l]);return m(a,{size:n,variant:"text",color:"inherit",onClick:u,children:c})};export{h as CheckDryRunDialogButton};
2
2
  //# sourceMappingURL=CheckDryRunDialogButton.esm.js.map
@@ -1,2 +1,2 @@
1
- import{Content as s}from"@backstage/core-components";import e from"react";import{FormProvider as d}from"react-hook-form";import"../../contexts/TrackFormContext.esm.js";import{useCheckFormContext as f}from"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";import{formStyles as u}from"../../utils/formStyles.esm.js";import"@material-ui/core";import"@material-ui/icons/Search";import"../SoundcheckDialog/SoundcheckDialog.esm.js";import"../FactExplorer/FactExplorer.esm.js";import{FactExplorerProvider as S}from"../FactExplorer/FactExplorerContext.esm.js";import{FormFilterSection as h}from"../FormFilterSection/FormFilterSection.esm.js";import{FormStepper as C}from"../FormStepper/FormStepper.esm.js";import"./FormFields/CheckNameInput/CheckNameInput.esm.js";import"./FormFields/PassFailMessageInput/PassFailMessageInput.esm.js";import"../FormMarkdownInput/FormMarkdownInput.esm.js";import{CHECK_FIELDS as F}from"./utils/checkFormUtils.esm.js";import"./FormFields/TeamDetailsInput/TeamDetailsInput.esm.js";import"./FormFields/RuleInput/AddMenuButton.esm.js";import"./FormFields/RuleInput/RuleInputBox.esm.js";import"./FormFields/RuleInput/Expressions/ExpressionBox.esm.js";import"./FormFields/RuleInput/Expressions/ExpressionTypeToggle.esm.js";import"@material-ui/icons/Close";import"@material-ui/icons/Delete";import"@material-ui/icons/List";import"@spotify/backstage-plugin-soundcheck-common";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import"./FormFields/RuleInput/Conditions/styles.esm.js";import"@backstage/catalog-model";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import"./FormFields/RuleInput/Conditions/ValueListInput.esm.js";import"./FormFields/RuleInput/Conditions/ConditionList.esm.js";import{ScheduleSection as E}from"./FormFields/CheckScheduleSection/ScheduleSection.esm.js";import"./FormFields/CheckPathResolverInput.esm.js";import{CheckDetailsStep as b}from"./Steps/CheckDetailsStep.esm.js";import{CheckRulesStep as k}from"./Steps/CheckRulesStep.esm.js";import{CheckReviewStep as y}from"./Steps/CheckReviewStep.esm.js";import"./types/ExpressionType.esm.js";import{CheckStepNameMapping as g}from"./types/CheckFormTypes.esm.js";import"../Frequency/types.esm.js";import"../Frequency/util.esm.js";import"../Frequency/FrequencyComponent.esm.js";import"./types/Path.esm.js";import{useCheckForm as v}from"./useCheckForm.esm.js";const x=({onSave:p,onClose:o})=>{const{isLoading:l,isReadOnly:r,selectedItem:n}=f(),{formMethods:t,onSubmit:i}=v(p),a=u(),m=[{label:"Enter check details",content:()=>e.createElement(b,null)},{label:"Add rules",content:()=>e.createElement(k,null)},{label:"Choose the affected entities (Optional)",content:()=>e.createElement(h,{name:"filtersStep.filter",keyValueFilterName:"filtersStep.keyValueFilter",disabled:r,description:F.filter.description,excludeFilterName:"filtersStep.excludeFilter",excludeKeyValueFilterName:"filtersStep.excludeKeyValueFilter"})},{label:"Set the check schedule (Optional)",content:()=>e.createElement(E,{control:t.control,disabled:r})},{label:"Review and test (Optional)",content:()=>e.createElement(y,null)}],c=n?[...Array(m.length).keys()]:[0];return e.createElement(s,{className:a.formWrapper},e.createElement(d,{...t},e.createElement(S,null,e.createElement("form",{onSubmit:t.handleSubmit(i)},e.createElement(C,{onClose:()=>o?o():void 0,handleSubmit:t.handleSubmit,trigger:t.trigger,onSubmit:i,initialVisited:c,stepNameMap:g,steps:m,isLoading:l,isReadOnly:r,saveButtonText:"Save Check"})))))};export{x as CheckForm};
1
+ import{jsx as t}from"react/jsx-runtime";import{Content as s}from"@backstage/core-components";import{FormProvider as d}from"react-hook-form";import"../../contexts/TrackFormContext.esm.js";import{useCheckFormContext as h}from"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"react";import"../../contexts/UserProvider.esm.js";import{formStyles as f}from"../../utils/formStyles.esm.js";import"@material-ui/core";import"@material-ui/icons/Search";import"../SoundcheckDialog/SoundcheckDialog.esm.js";import"../FactExplorer/FactExplorer.esm.js";import{FactExplorerProvider as S}from"../FactExplorer/FactExplorerContext.esm.js";import{FormStepper as u}from"../FormStepper/FormStepper.esm.js";import"./FormFields/CheckNameInput/CheckNameInput.esm.js";import"./FormFields/PassFailMessageInput/PassFailMessageInput.esm.js";import"../FormMarkdownInput/FormMarkdownInput.esm.js";import"./utils/checkFormUtils.esm.js";import"./FormFields/TeamDetailsInput/TeamDetailsInput.esm.js";import"./FormFields/RuleInput/AddMenuButton.esm.js";import"./FormFields/RuleInput/RuleInputBox.esm.js";import"./FormFields/RuleInput/Expressions/ExpressionBox.esm.js";import"./FormFields/RuleInput/Expressions/ExpressionTypeToggle.esm.js";import"@material-ui/icons/Close";import"@material-ui/icons/Delete";import"@material-ui/icons/List";import"@spotify/backstage-plugin-soundcheck-common";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import"./FormFields/RuleInput/Conditions/styles.esm.js";import"@backstage/catalog-model";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import"./FormFields/RuleInput/Conditions/ValueListInput.esm.js";import"./FormFields/RuleInput/Conditions/ConditionList.esm.js";import{ScheduleSection as C}from"./FormFields/CheckScheduleSection/ScheduleSection.esm.js";import"./FormFields/CheckPathResolverInput.esm.js";import{CheckDetailsStep as b}from"./Steps/CheckDetailsStep.esm.js";import{CheckRulesStep as k}from"./Steps/CheckRulesStep.esm.js";import{CheckApplicabilityStep as g}from"./Steps/CheckApplicabilityStep.esm.js";import{CheckReviewStep as v}from"./Steps/CheckReviewStep.esm.js";import"./types/ExpressionType.esm.js";import{CheckStepNameMapping as y}from"./types/CheckFormTypes.esm.js";import"../Frequency/types.esm.js";import"../Frequency/util.esm.js";import"../Frequency/FrequencyComponent.esm.js";import"./types/Path.esm.js";import{useCheckForm as F}from"./useCheckForm.esm.js";const x=({onSave:p,onClose:r})=>{const{isLoading:n,isReadOnly:i,selectedItem:l}=h(),{formMethods:o,onSubmit:e}=F(p),a=f(),m=[{label:"Enter check details",content:()=>t(b,{})},{label:"Add rules",content:()=>t(k,{})},{label:"Choose the affected entities (Optional)",content:()=>t(g,{})},{label:"Set the check schedule (Optional)",content:()=>t(C,{control:o.control,disabled:i})},{label:"Review and test (Optional)",content:()=>t(v,{})}],c=l?[...Array(m.length).keys()]:[0];return t(s,{className:a.formWrapper,children:t(d,{...o,children:t(S,{children:t("form",{onSubmit:o.handleSubmit(e),children:t(u,{onClose:()=>r?r():void 0,handleSubmit:o.handleSubmit,trigger:o.trigger,onSubmit:e,initialVisited:c,stepNameMap:y,steps:m,isLoading:n,isReadOnly:i,saveButtonText:"Save Check"})})})})})};export{x as CheckForm};
2
2
  //# sourceMappingURL=CheckForm.esm.js.map
@@ -1,2 +1,2 @@
1
- import n from"react";import{FormMarkdownInput as d}from"../../../FormMarkdownInput/FormMarkdownInput.esm.js";import{CHECK_FIELDS as l}from"../../utils/checkFormUtils.esm.js";const a=({control:o,isLoading:t,disabled:r,error:i})=>{const{description:e}=l.details;return n.createElement(d,{name:"detailsStep.description",control:o,error:i,label:e.name,placeholder:r?void 0:e.placeholder,disabled:r||t})};export{a as CheckDescriptionInput};
1
+ import{jsx as n}from"react/jsx-runtime";import{FormMarkdownInput as d}from"../../../FormMarkdownInput/FormMarkdownInput.esm.js";import{CHECK_FIELDS as l}from"../../utils/checkFormUtils.esm.js";const p=({control:e,isLoading:t,disabled:r,error:i})=>{const{description:o}=l.details;return n(d,{name:"detailsStep.description",control:e,error:i,label:o.name,placeholder:r?void 0:o.placeholder,disabled:r||t})};export{p as CheckDescriptionInput};
2
2
  //# sourceMappingURL=CheckDescriptionInput.esm.js.map
@@ -1,2 +1,2 @@
1
- import{Typography as m,TextField as p}from"@material-ui/core";import{makeStyles as c}from"@material-ui/core/styles";import e from"react";import{Controller as s}from"react-hook-form";import{CHECK_FIELDS as d}from"../../utils/checkFormUtils.esm.js";const f=c(r=>({container:{display:"flex",flexDirection:"column",gap:r.spacing(1)},helperText:{marginLeft:0}})),h=({control:r,error:l,isLoading:o,disabled:n})=>{const a=f(),{name:t}=d.details;return e.createElement("div",{className:a.container},e.createElement("div",null,e.createElement(m,{variant:"subtitle2"},t.name)),e.createElement(s,{name:"detailsStep.name",control:r,defaultValue:"",render:({field:i})=>e.createElement(p,{...i,FormHelperTextProps:{className:a.helperText},variant:"outlined",fullWidth:!0,placeholder:t.placeholder,disabled:o||n,type:"text",margin:"dense",error:!!l,helperText:l?.message??t.helperText})}))};export{h as CheckNameInput};
1
+ import{jsxs as m,jsx as e}from"react/jsx-runtime";import{Typography as s,TextField as d}from"@material-ui/core";import{makeStyles as p}from"@material-ui/core/styles";import{Controller as c}from"react-hook-form";import{CHECK_FIELDS as h}from"../../utils/checkFormUtils.esm.js";const x=p(r=>({container:{display:"flex",flexDirection:"column",gap:r.spacing(1)},helperText:{marginLeft:0}})),f=({control:r,error:l,isLoading:a,disabled:i})=>{const o=x(),{name:t}=h.details;return m("div",{className:o.container,children:[e("div",{children:e(s,{variant:"subtitle2",children:t.name})}),e(c,{name:"detailsStep.name",control:r,defaultValue:"",render:({field:n})=>e(d,{...n,FormHelperTextProps:{className:o.helperText},variant:"outlined",fullWidth:!0,placeholder:t.placeholder,disabled:a||i,type:"text",margin:"dense",error:!!l,helperText:l?.message??t.helperText})})]})};export{f as CheckNameInput};
2
2
  //# sourceMappingURL=CheckNameInput.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as s}from"@material-ui/core";import t,{useMemo as m}from"react";import{useGetPathResolvers as i}from"../../../hooks/useGetPathResolvers.esm.js";import{FormControlledAutocomplete as n}from"../../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import"@material-ui/icons/CheckBox";import"@material-ui/icons/CheckBoxOutlineBlank";import"@material-ui/lab";import"react-hook-form";import"../../ListboxVirtualized/ListboxVirtualized.esm.js";import{FormFieldLabel as c}from"../../FormFieldLabel/FormFieldLabel.esm.js";const d=s(o=>({wrapper:{marginBottom:o.spacing(2)}})),h=({control:o})=>{const a=d(),{data:r,isLoading:l}=i(),p=m(()=>r?.map(e=>e.id),[r]);return t.createElement("div",{className:a.wrapper},t.createElement(c,{title:"Path resolver (Optional)",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/checks#path-resolvers"}),t.createElement("div",null,t.createElement(n,{control:o,name:"rulesStep.pathResolver",disabled:l,options:p??[],freeSolo:!1,disableClearable:!0,width:250,getOptionLabel:e=>e==="jsonpath"?"jsonpath (default)":e,getOptionValue:e=>e&&e==="jsonpath (default)"?"jsonpath":e??"",placeholder:"path resolver"})))};export{h as CheckPathResolverInput};
1
+ import{jsxs as l,jsx as t}from"react/jsx-runtime";import{makeStyles as i}from"@material-ui/core";import{useMemo as m}from"react";import{useGetPathResolvers as n}from"../../../hooks/useGetPathResolvers.esm.js";import{FormControlledAutocomplete as c}from"../../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import"@material-ui/icons/CheckBox";import"@material-ui/icons/CheckBoxOutlineBlank";import"@material-ui/lab";import"react-hook-form";import"../../ListboxVirtualized/ListboxVirtualized.esm.js";import{FormFieldLabel as d}from"../../FormFieldLabel/FormFieldLabel.esm.js";const h=i(e=>({wrapper:{marginBottom:e.spacing(2)}})),u=({control:e})=>{const s=h(),{data:r,isLoading:p}=n(),a=m(()=>r?.map(o=>o.id),[r]);return l("div",{className:s.wrapper,children:[t(d,{title:"Path resolver (Optional)",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/checks#path-resolvers"}),t("div",{children:t(c,{control:e,name:"rulesStep.pathResolver",disabled:p,options:a??[],freeSolo:!1,disableClearable:!0,width:250,getOptionLabel:o=>o==="jsonpath"?"jsonpath (default)":o,getOptionValue:o=>o&&o==="jsonpath (default)"?"jsonpath":o??"",placeholder:"path resolver"})})]})};export{u as CheckPathResolverInput};
2
2
  //# sourceMappingURL=CheckPathResolverInput.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as p,Typography as o,Grid as l,FormControlLabel as E,Checkbox as b}from"@material-ui/core";import e from"react";import{useWatch as f,useFormContext as y,Controller as m}from"react-hook-form";import"../../../Frequency/types.esm.js";import"../../../Frequency/util.esm.js";import{FrequencyComponent as C}from"../../../Frequency/FrequencyComponent.esm.js";import{CHECK_FIELDS as S}from"../../utils/checkFormUtils.esm.js";const v=p(t=>({container:{display:"flex",flexDirection:"column",gap:t.spacing(1)}})),x=({control:t,disabled:r})=>{const n=v(),d=f({control:t,name:"scheduleStep.schedule"}),{watch:s}=y(),c=s("detailsStep.type"),{description:i,checkboxLabel:u}=S.schedule;return e.createElement("div",{className:n.container},c==="manual"&&e.createElement("div",{className:n.container},e.createElement(o,null,"Schedules do not apply to manual checks. These types of checks are meant to be executed manually by users and so cannot be scheduled.")),c!=="manual"&&e.createElement("div",{className:n.container},e.createElement(o,{variant:"body2"},i),e.createElement(l,{item:!0,xs:12},e.createElement(l,{item:!0},e.createElement(m,{name:"scheduleStep.schedule.enabled",control:t,render:({field:a})=>e.createElement(E,{disabled:r,control:e.createElement(b,{checked:a.value,onChange:a.onChange}),label:u})})),e.createElement(l,{item:!0},e.createElement(m,{name:"scheduleStep.schedule.frequency",control:t,render:({field:a,fieldState:h})=>e.createElement(C,{disabled:r||!d.enabled,value:a.value,onChange:a.onChange,errors:h.error})})))))};export{x as ScheduleSection};
1
+ import{jsxs as l,jsx as e}from"react/jsx-runtime";import{makeStyles as b,Typography as d,Grid as c,FormControlLabel as f,Checkbox as y}from"@material-ui/core";import{useWatch as C,useFormContext as x,Controller as i}from"react-hook-form";import"../../../Frequency/types.esm.js";import"../../../Frequency/util.esm.js";import{FrequencyComponent as S}from"../../../Frequency/FrequencyComponent.esm.js";import{CHECK_FIELDS as g}from"../../utils/checkFormUtils.esm.js";const v=b(n=>({container:{display:"flex",flexDirection:"column",gap:n.spacing(1)}})),k=({control:n,disabled:a})=>{const r=v(),s=C({control:n,name:"scheduleStep.schedule"}),{watch:h}=x(),t=h("detailsStep.type"),{description:m,checkboxLabel:u}=g.schedule;return l("div",{className:r.container,children:[t==="manual"&&e("div",{className:r.container,children:e(d,{children:"Schedules do not apply to manual checks. These types of checks are meant to be executed manually by users and so cannot be scheduled."})}),t!=="manual"&&l("div",{className:r.container,children:[e(d,{variant:"body2",children:m}),l(c,{item:!0,xs:12,children:[e(c,{item:!0,children:e(i,{name:"scheduleStep.schedule.enabled",control:n,render:({field:o})=>e(f,{disabled:a,control:e(y,{checked:o.value,onChange:o.onChange}),label:u})})}),e(c,{item:!0,children:e(i,{name:"scheduleStep.schedule.frequency",control:n,render:({field:o,fieldState:p})=>e(S,{disabled:a||!s.enabled,value:o.value,onChange:o.onChange,errors:p.error})})})]})]})]})};export{k as ScheduleSection};
2
2
  //# sourceMappingURL=ScheduleSection.esm.js.map
@@ -1,2 +1,2 @@
1
- import{Box as t,Typography as a}from"@material-ui/core";import e from"react";import{FormControlledSelect as c}from"../../../FormControlledSelect/FormControlledSelect.esm.js";import{CHECK_FIELDS as m}from"../../utils/checkFormUtils.esm.js";const i=({control:l,disabled:o,isLoading:n})=>{const{type:r}=m.details;return e.createElement(t,{marginTop:1},e.createElement(t,null,e.createElement(a,{variant:"subtitle2"},r.name),e.createElement(a,{variant:"caption"},"Choose the type of check. Manual checks have results set by users, not by Soundcheck.")),e.createElement(c,{name:"detailsStep.type",style:{width:250},control:l,disabled:o||n,options:[{value:"default",label:"Default"},{value:"manual",label:"Manual"}]}))};export{i as CheckTypeInput};
1
+ import{jsxs as t,jsx as e}from"react/jsx-runtime";import{Box as o,Typography as a}from"@material-ui/core";import{FormControlledSelect as s}from"../../../FormControlledSelect/FormControlledSelect.esm.js";import{CHECK_FIELDS as c}from"../../utils/checkFormUtils.esm.js";const p=({control:l,disabled:n,isLoading:r})=>{const{type:i}=c.details;return t(o,{marginTop:1,children:[t(o,{children:[e(a,{variant:"subtitle2",children:i.name}),e(a,{variant:"caption",children:"Choose the type of check. Manual checks have results set by users, not by Soundcheck."})]}),e(s,{name:"detailsStep.type",style:{width:250},control:l,disabled:n||r,options:[{value:"default",label:"Default"},{value:"manual",label:"Manual"}]})]})};export{p as CheckTypeInput};
2
2
  //# sourceMappingURL=CheckTypeInput.esm.js.map
@@ -1,2 +1,2 @@
1
- import{Typography as s,Tabs as v,Tab as o}from"@material-ui/core";import{makeStyles as h}from"@material-ui/core/styles";import e,{useState as M}from"react";import{FormMarkdownInput as i}from"../../../FormMarkdownInput/FormMarkdownInput.esm.js";import{CHECK_FIELDS as S}from"../../utils/checkFormUtils.esm.js";const C=h(a=>({container:{display:"flex",flexDirection:"column",gap:a.spacing(1)},tabContent:{padding:a.spacing(1)}})),T=({control:a,isLoading:l,disabled:n})=>{const r=C(),[t,c]=M(0),{name:m,description:p,passMessagePlaceholder:d,failMessagePlaceholder:b,passedTabName:g,failedTabName:u}=S.rulesStep.messages,E=(y,f)=>{c(f)};return e.createElement("div",{className:r.container},e.createElement("div",null,e.createElement(s,{variant:"subtitle2"},m),e.createElement(s,{variant:"caption"},p)),e.createElement(v,{orientation:"horizontal",variant:"scrollable",value:t,onChange:E},e.createElement(o,{label:g}),e.createElement(o,{label:u})),e.createElement("div",{className:r.tabContent},t===0&&e.createElement(i,{name:"rulesStep.passedMessage",control:a,placeholder:d,disabled:l||n}),t===1&&e.createElement(i,{name:"rulesStep.failedMessage",control:a,placeholder:b,disabled:l||n})))};export{T as PassFailMessageInput};
1
+ import{jsxs as s,jsx as e}from"react/jsx-runtime";import{Typography as n,Tabs as M,Tab as t}from"@material-ui/core";import{makeStyles as S}from"@material-ui/core/styles";import{useState as x}from"react";import{FormMarkdownInput as d}from"../../../FormMarkdownInput/FormMarkdownInput.esm.js";import{CHECK_FIELDS as C}from"../../utils/checkFormUtils.esm.js";const T=S(a=>({container:{display:"flex",flexDirection:"column",gap:a.spacing(1)},tabContent:{padding:a.spacing(1)}})),y=({control:a,isLoading:r,disabled:l})=>{const i=T(),[o,c]=x(0),{name:p,description:m,passMessagePlaceholder:b,failMessagePlaceholder:g,passedTabName:h,failedTabName:f}=C.rulesStep.messages,u=(F,v)=>{c(v)};return s("div",{className:i.container,children:[s("div",{children:[e(n,{variant:"subtitle2",children:p}),e(n,{variant:"caption",children:m})]}),s(M,{orientation:"horizontal",variant:"scrollable",value:o,onChange:u,children:[e(t,{label:h}),e(t,{label:f})]}),s("div",{className:i.tabContent,children:[o===0&&e(d,{name:"rulesStep.passedMessage",control:a,placeholder:b,disabled:r||l}),o===1&&e(d,{name:"rulesStep.failedMessage",control:a,placeholder:g,disabled:r||l})]})]})};export{y as PassFailMessageInput};
2
2
  //# sourceMappingURL=PassFailMessageInput.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as u,Box as o,ButtonGroup as m,Button as g,Menu as b,MenuItem as l}from"@material-ui/core";import E from"@material-ui/icons/ArrowDropDown";import e,{useState as x}from"react";const C=u(t=>({label:{padding:t.spacing(0,1.5,0,0)},icon:{borderLeft:`1px solid ${t.palette.divider}`,display:"flex",alignItems:"center",padding:0},menu:{margin:0,backgroundColor:t.palette.background.paper},button:{padding:t.spacing(.5,1.5),paddingRight:t.spacing(.5)}})),k=({onAddCondition:t,onAddExpression:s})=>{const n=C(),[i,r]=x(null),a=!!i,c=p=>{r(p.currentTarget)},d=()=>{r(null)};return e.createElement(o,null,e.createElement(m,{color:"primary"},e.createElement(g,{className:n.button,"data-testid":"add-button",id:"add-button","aria-controls":a?"add-menu":void 0,"aria-haspopup":"true","aria-expanded":a?"true":void 0,onClick:c,size:"medium"},e.createElement(o,{className:n.label},"Add"),e.createElement(o,{className:n.icon},e.createElement(E,null)))),e.createElement(b,{id:"add-menu",anchorEl:i,open:a,onClose:d,classes:{paper:n.menu},MenuListProps:{"aria-labelledby":"add-button"}},e.createElement(l,{"data-testid":"add-condition",onClick:()=>{t(),d()}},"Add Condition"),e.createElement(l,{"data-testid":"add-expression",onClick:()=>{s(),d()}},"Add Expression")))};export{k as AddMenuButton};
1
+ import{jsxs as i,jsx as e}from"react/jsx-runtime";import{makeStyles as m,Box as a,ButtonGroup as g,Button as b,Menu as h,MenuItem as l}from"@material-ui/core";import x from"@material-ui/icons/ArrowDropDown";import{useState as A}from"react";const C=m(d=>({label:{padding:d.spacing(0,1.5,0,0)},icon:{borderLeft:`1px solid ${d.palette.divider}`,display:"flex",alignItems:"center",padding:0},menu:{margin:0,backgroundColor:d.palette.background.paper},button:{padding:d.spacing(.5,1.5),paddingRight:d.spacing(.5)}})),f=({onAddCondition:d,onAddExpression:p})=>{const n=C(),[r,s]=A(null),o=!!r,c=u=>{s(u.currentTarget)},t=()=>{s(null)};return i(a,{children:[e(g,{color:"primary",children:i(b,{className:n.button,"data-testid":"add-button",id:"add-button","aria-controls":o?"add-menu":void 0,"aria-haspopup":"true","aria-expanded":o?"true":void 0,onClick:c,size:"medium",children:[e(a,{className:n.label,children:"Add"}),e(a,{className:n.icon,children:e(x,{})})]})}),i(h,{id:"add-menu",anchorEl:r,open:o,onClose:t,classes:{paper:n.menu},MenuListProps:{"aria-labelledby":"add-button"},children:[e(l,{"data-testid":"add-condition",onClick:()=>{d(),t()},children:"Add Condition"}),e(l,{"data-testid":"add-expression",onClick:()=>{p(),t()},children:"Add Expression"})]})]})};export{f as AddMenuButton};
2
2
  //# sourceMappingURL=AddMenuButton.esm.js.map
@@ -1,2 +1,2 @@
1
- import{Grid as r}from"@material-ui/core";import{makeStyles as s}from"@material-ui/core/styles";import t from"react";import{RuleConditionInput as p}from"./RuleConditionInput.esm.js";import{ValueListContextProvider as c}from"./ValueListContext.esm.js";const u=s(()=>({noPadding:{padding:0}})),b=({conditions:i,name:n,handleDelete:o,disabled:d,disableDelete:a,depth:l})=>{const m=u();return t.createElement(c,null,i.map((f,e)=>t.createElement(r,{item:!0,key:e,className:m.noPadding},t.createElement(p,{name:`${n}.conditions[${e}]`,"data-testid":`${n}-condition-input`,handleDelete:()=>o(e),disabled:d,disableDelete:l===0&&e===0?!0:a}))))};export{b as ConditionList};
1
+ import{jsx as t}from"react/jsx-runtime";import{Grid as m}from"@material-ui/core";import{makeStyles as s}from"@material-ui/core/styles";import{RuleConditionInput as p}from"./RuleConditionInput.esm.js";import{ValueListContextProvider as c}from"./ValueListContext.esm.js";const b=s(()=>({noPadding:{padding:0}})),f=({conditions:n,name:i,handleDelete:d,disabled:o,disableDelete:r,depth:a})=>{const l=b();return t(c,{children:n.map((h,e)=>t(m,{item:!0,className:l.noPadding,children:t(p,{name:`${i}.conditions[${e}]`,"data-testid":`${i}-condition-input`,handleDelete:()=>d(e),disabled:o,disableDelete:a===0&&e===0?!0:r})},e))})};export{f as ConditionList};
2
2
  //# sourceMappingURL=ConditionList.esm.js.map
@@ -1,2 +1,2 @@
1
- import{Box as r,IconButton as m,FormHelperText as c}from"@material-ui/core";import s from"@material-ui/icons/Close";import e from"react";import{useRuleConditionStyles as i}from"./styles.esm.js";const u=({value:t,handleClear:n,error:l})=>{const a=i(),o=t?.factRef&&t?.path?e.createElement(e.Fragment,null,e.createElement("strong",null,"Fact:")," ",t.factRef," ",e.createElement("strong",null,"Path:")," ",t.path):JSON.stringify(t);return e.createElement(e.Fragment,null,e.createElement(r,{className:a.valueDisplay},e.createElement(r,{overflow:"hidden",flexGrow:1},o),e.createElement(m,{onClick:n,size:"small"},e.createElement(s,null))),l&&e.createElement(c,{error:!0},l.message))};export{u as FactValueDisplay};
1
+ import{jsxs as l,Fragment as i,jsx as r}from"react/jsx-runtime";import{Box as n,IconButton as c,FormHelperText as m}from"@material-ui/core";import h from"@material-ui/icons/Close";import{useRuleConditionStyles as d}from"./styles.esm.js";const f=({value:e,handleClear:t,error:o})=>{const a=d(),s=e?.factRef&&e?.path?l(i,{children:[r("strong",{children:"Fact:"})," ",e.factRef," ",r("strong",{children:"Path:"})," ",e.path]}):JSON.stringify(e);return l(i,{children:[l(n,{className:a.valueDisplay,children:[r(n,{overflow:"hidden",flexGrow:1,children:s}),r(c,{onClick:t,size:"small",children:r(h,{})})]}),o&&r(m,{error:!0,children:o.message})]})};export{f as FactValueDisplay};
2
2
  //# sourceMappingURL=FactValueDisplay.esm.js.map
@@ -1,2 +1,2 @@
1
- import{Box as o,FormLabel as c,TextField as j,IconButton as L}from"@material-ui/core";import V from"@material-ui/icons/Close";import D from"@material-ui/icons/Delete";import T from"@material-ui/icons/List";import{asArray as k}from"@spotify/backstage-plugin-soundcheck-common";import e,{useMemo as y,useCallback as h}from"react";import{useFormContext as G,Controller as M}from"react-hook-form";import{useOperators as W}from"../../../../../hooks/operators/useOperators.esm.js";import{FactExplorerDialogButton as C}from"../../../../FactExplorer/FactExplorerDialog.esm.js";import"../../../../FactExplorer/FactExplorerContext.esm.js";import{FormControlledAutocomplete as E}from"../../../../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import{FactValueDisplay as z}from"./FactValueDisplay.esm.js";import{useRuleConditionStyles as H}from"./styles.esm.js";import{useRuleOptions as q}from"./useRuleOptions.esm.js";import{ValueListInputDialogButton as A}from"./ValueListInput.esm.js";const J=({name:a,handleDelete:F,disabled:i,disableDelete:b})=>{const r=H(),{control:s,setValue:m,watch:p,clearErrors:d}=G(),{data:N,isLoading:R}=W(),O=p("rulesStep.pathResolver")==="jsonpath",u=y(()=>N?.map(t=>({value:t.name,label:t.title})).sort((t,l)=>t.label.localeCompare(l.label))??[],[N]),w=y(()=>u.map(t=>t.value),[u]),{pathOptions:B,factRefOptions:f,isLoading:x}=q(a,s),S=y(()=>f?.map(t=>t.value)??[],[f]),I=h(({factRef:t,path:l})=>{m(`${a}.factRef`,t),m(`${a}.path`,l),d()},[d,a,m]),P=h(({factRef:t,path:l})=>{m(`${a}.value`,{factRef:t,path:l}),d()},[d,a,m]),g=h(t=>{m(`${a}.value`,t.length>0?t:""),d()},[d,a,m]),n=p(`${a}.value`),$=h(()=>{m(`${a}.value`,"")},[a,m]);return e.createElement(o,{className:r.container},e.createElement(o,{className:r.connector}),e.createElement(o,{paddingTop:2,paddingLeft:2,paddingRight:2,paddingBottom:2,width:"100%",className:r.innerContainer},e.createElement(o,{className:r.inputsContainer},f&&e.createElement(o,null,e.createElement(c,{className:r.formLabel},"Fact"),e.createElement(E,{name:`${a}.factRef`,control:s,placeholder:"Fact",options:S,getOptionLabel:t=>f?.find(l=>t===l.value)?.label??t,getOptionValue:t=>f?.find(l=>t===l.label)?.value??t??"",disabled:i||x,width:428})),e.createElement(o,{flexGrow:1},e.createElement(c,{className:r.formLabel},"Path"),e.createElement(E,{name:`${a}.path`,placeholder:"Path",control:s,disabled:i||x,options:O?B:[],fullWidth:!0})),e.createElement(o,null,e.createElement(c,{className:r.formLabel,style:{visibility:"hidden"}},"Explore"),e.createElement(o,{width:150},e.createElement(C,{factRef:p(`${a}.factRef`),path:p(`${a}.path`),onSave:I,pathResolver:p("rulesStep.pathResolver"),className:r.exploreButton,hideIcon:!0})))),e.createElement(o,{className:r.inputsContainer},u&&e.createElement(e.Fragment,null,e.createElement(o,null,e.createElement(c,{className:r.formLabel},"Prefix (Optional)"),e.createElement(E,{name:`${a}.operatorPrefix`,control:s,placeholder:"Prefix",options:["all","any","none"],disabled:R||i,width:120})),e.createElement(o,null,e.createElement(c,{className:r.formLabel},"Operator"),e.createElement(E,{name:`${a}.operator`,control:s,placeholder:"Operator",options:w,disabled:R||i,getOptionLabel:t=>(l=>u?.find(v=>l===v.value)?.label??l??"")(t),getOptionValue:t=>(l=>u?.find(v=>l===v.label)?.value??l??"")(t),width:300}))),e.createElement(o,{flexGrow:1},e.createElement(c,{className:r.formLabel},"Value"),typeof n=="object"&&!Array.isArray(n)?e.createElement(z,{value:n,handleClear:$}):e.createElement(M,{name:`${a}.value`,control:s,defaultValue:"",render:({field:t,fieldState:l})=>e.createElement(j,{...t,variant:"outlined",placeholder:"Enter a value",FormHelperTextProps:{className:r.helperText},error:l.invalid,helperText:l.error?l.error.message:null,margin:"dense",disabled:i||typeof n=="object",className:r.noMargin,fullWidth:!0,InputProps:{endAdornment:e.createElement(L,{onClick:$,size:"small"},e.createElement(V,null)),startAdornment:Array.isArray(n)?e.createElement(A,{values:n,onSave:g,iconButton:e.createElement(T,null)}):null}})})),e.createElement(o,null,e.createElement(c,{className:r.formLabel,style:{visibility:"hidden"}},"Alternative Input"),e.createElement(o,{display:"flex",width:150},e.createElement(C,{factRef:typeof n=="object"?n?.factRef:void 0,path:typeof n=="object"?n?.path:void 0,onSave:P,pathResolver:p("rulesStep.pathResolver"),className:r.exploreButton,text:"Fact",hideIcon:!0}),e.createElement(A,{values:typeof n=="object"&&!Array.isArray(n)?void 0:k(n),onSave:g}))))),e.createElement(L,{onClick:F,className:r.deleteButton,"data-test-id":`${a}-delete-button`,disabled:i||b,hidden:i||b,style:{visibility:i||b?"hidden":void 0}},e.createElement(D,{className:r.deleteIcon})))};export{J as RuleConditionInput};
1
+ import{jsxs as n,jsx as a,Fragment as D}from"react/jsx-runtime";import{Box as r,FormLabel as c,TextField as T,IconButton as A}from"@material-ui/core";import k from"@material-ui/icons/Close";import E from"@material-ui/icons/Delete";import G from"@material-ui/icons/List";import{asArray as M}from"@spotify/backstage-plugin-soundcheck-common";import{useMemo as R,useCallback as b}from"react";import{useFormContext as W,Controller as z}from"react-hook-form";import{useOperators as H}from"../../../../../hooks/operators/useOperators.esm.js";import{FactExplorerDialogButton as F}from"../../../../FactExplorer/FactExplorerDialog.esm.js";import"../../../../FactExplorer/FactExplorerContext.esm.js";import{FormControlledAutocomplete as v}from"../../../../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import{FactValueDisplay as q}from"./FactValueDisplay.esm.js";import{useRuleConditionStyles as J}from"./styles.esm.js";import{useRuleOptions as K}from"./useRuleOptions.esm.js";import{ValueListInputDialogButton as O}from"./ValueListInput.esm.js";const Q=({name:l,handleDelete:w,disabled:d,disableDelete:x})=>{const t=J(),{control:p,setValue:s,watch:m,clearErrors:h}=W(),{data:N,isLoading:g}=H(),S=m("rulesStep.pathResolver")==="jsonpath",f=R(()=>N?.map(e=>({value:e.name,label:e.title})).sort((e,o)=>e.label.localeCompare(o.label))??[],[N]),j=R(()=>f.map(e=>e.value),[f]),{pathOptions:B,factRefOptions:u,isLoading:$}=K(l,p),I=R(()=>u?.map(e=>e.value)??[],[u]),P=b(({factRef:e,path:o})=>{s(`${l}.factRef`,e),s(`${l}.path`,o),h()},[h,l,s]),V=b(({factRef:e,path:o})=>{s(`${l}.value`,{factRef:e,path:o}),h()},[h,l,s]),L=b(e=>{s(`${l}.value`,e.length>0?e:""),h()},[h,l,s]),i=m(`${l}.value`),C=b(()=>{s(`${l}.value`,"")},[l,s]);return n(r,{className:t.container,children:[a(r,{className:t.connector}),n(r,{paddingTop:2,paddingLeft:2,paddingRight:2,paddingBottom:2,width:"100%",className:t.innerContainer,children:[n(r,{className:t.inputsContainer,children:[u&&n(r,{children:[a(c,{className:t.formLabel,children:"Fact"}),a(v,{name:`${l}.factRef`,control:p,placeholder:"Fact",options:I,getOptionLabel:e=>u?.find(o=>e===o.value)?.label??e,getOptionValue:e=>u?.find(o=>e===o.label)?.value??e??"",disabled:d||$,width:428})]}),n(r,{flexGrow:1,children:[a(c,{className:t.formLabel,children:"Path"}),a(v,{name:`${l}.path`,placeholder:"Path",control:p,disabled:d||$,options:S?B:[],fullWidth:!0})]}),n(r,{children:[a(c,{className:t.formLabel,style:{visibility:"hidden"},children:"Explore"}),a(r,{width:150,children:a(F,{factRef:m(`${l}.factRef`),path:m(`${l}.path`),onSave:P,pathResolver:m("rulesStep.pathResolver"),className:t.exploreButton,hideIcon:!0})})]})]}),n(r,{className:t.inputsContainer,children:[f&&n(D,{children:[n(r,{children:[a(c,{className:t.formLabel,children:"Prefix (Optional)"}),a(v,{name:`${l}.operatorPrefix`,control:p,placeholder:"Prefix",options:["all","any","none"],disabled:g||d,width:120})]}),n(r,{children:[a(c,{className:t.formLabel,children:"Operator"}),a(v,{name:`${l}.operator`,control:p,placeholder:"Operator",options:j,disabled:g||d,getOptionLabel:e=>(o=>f?.find(y=>o===y.value)?.label??o??"")(e),getOptionValue:e=>(o=>f?.find(y=>o===y.label)?.value??o??"")(e),width:300})]})]}),n(r,{flexGrow:1,children:[a(c,{className:t.formLabel,children:"Value"}),typeof i=="object"&&!Array.isArray(i)?a(q,{value:i,handleClear:C}):a(z,{name:`${l}.value`,control:p,defaultValue:"",render:({field:e,fieldState:o})=>a(T,{...e,variant:"outlined",placeholder:"Enter a value",FormHelperTextProps:{className:t.helperText},error:o.invalid,helperText:o.error?o.error.message:null,margin:"dense",disabled:d||typeof i=="object",className:t.noMargin,fullWidth:!0,InputProps:{endAdornment:a(A,{onClick:C,size:"small",children:a(k,{})}),startAdornment:Array.isArray(i)?a(O,{values:i,onSave:L,iconButton:a(G,{})}):null}})})]}),n(r,{children:[a(c,{className:t.formLabel,style:{visibility:"hidden"},children:"Alternative Input"}),n(r,{display:"flex",width:150,children:[a(F,{factRef:typeof i=="object"?i?.factRef:void 0,path:typeof i=="object"?i?.path:void 0,onSave:V,pathResolver:m("rulesStep.pathResolver"),className:t.exploreButton,text:"Fact",hideIcon:!0}),a(O,{values:typeof i=="object"&&!Array.isArray(i)?void 0:M(i),onSave:L})]})]})]})]}),a(A,{onClick:w,className:t.deleteButton,"data-test-id":`${l}-delete-button`,disabled:d||x,hidden:d||x,style:{visibility:d||x?"hidden":void 0},children:a(E,{className:t.deleteIcon})})]})};export{Q as RuleConditionInput};
2
2
  //# sourceMappingURL=RuleConditionInput.esm.js.map
@@ -1,2 +1,2 @@
1
- import t,{createContext as s,useState as e}from"react";import{ValueListInputDialog as d}from"./ValueListInput.esm.js";const a=s({open:!1,updateOpen:()=>{},values:Array(5).fill(""),updateValues:()=>{},onSave:()=>{},updateOnSave:()=>{}}),v=({children:n})=>{const[r,u]=e(!1),[l,o]=e(Array(5).fill("")),[p,i]=e(()=>()=>{});return t.createElement(a.Provider,{value:{open:r,updateOpen:u,values:l,updateValues:o,onSave:p,updateOnSave:i}},t.createElement(d,null),n)};export{a as ValueListContext,v as ValueListContextProvider};
1
+ import{jsxs as i,jsx as s}from"react/jsx-runtime";import{createContext as d,useState as e}from"react";import{ValueListInputDialog as v}from"./ValueListInput.esm.js";const t=d({open:!1,updateOpen:()=>{},values:Array(5).fill(""),updateValues:()=>{},onSave:()=>{},updateOnSave:()=>{}}),m=({children:a})=>{const[o,r]=e(!1),[n,u]=e(Array(5).fill("")),[l,p]=e(()=>()=>{});return i(t.Provider,{value:{open:o,updateOpen:r,values:n,updateValues:u,onSave:l,updateOnSave:p},children:[s(v,{}),a]})};export{t as ValueListContext,m as ValueListContextProvider};
2
2
  //# sourceMappingURL=ValueListContext.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as C,Box as p,Typography as k,TextField as S,IconButton as f,Button as d,Divider as x}from"@material-ui/core";import y from"@material-ui/icons/Add";import B from"@material-ui/icons/Delete";import e,{useContext as E,useCallback as r}from"react";import{SoundcheckDialog as h}from"../../../../SoundcheckDialog/SoundcheckDialog.esm.js";import{ValueListContext as v}from"./ValueListContext.esm.js";const V=C(t=>({dialogButton:{padding:t.spacing(1,1.5)}})),I=()=>{const{values:t,updateValues:n,updateOpen:i,onSave:o}=E(v),u=r((a,l)=>{const s=[...t];s[a]=l,n(s)},[n,t]),c=r(a=>{const l=[...t];l.splice(a,1),n(l)},[n,t]),m=r(()=>{const a=[...t,""];n(a)},[n,t]),g=r(()=>{o(t.filter(a=>!!a)),i(!1)},[o,i,t]);return e.createElement(p,{minWidth:640,paddingLeft:2,paddingRight:2,"data-testid":"rule-value-list-input"},e.createElement(k,{component:"div",variant:"subtitle2"},"Rule Value"),t.map((a,l)=>e.createElement(p,{display:"flex",marginBottom:1,alignItems:"center",key:l},e.createElement(S,{value:a,onChange:s=>u(l,s.currentTarget.value),variant:"outlined",margin:"dense",fullWidth:!0}),e.createElement(f,{onClick:()=>c(l),size:"small"},e.createElement(B,null)))),e.createElement(p,{marginTop:1,marginBottom:2},e.createElement(d,{onClick:m,startIcon:e.createElement(y,null),size:"small",variant:"outlined"},"Add")),e.createElement(x,null),e.createElement(p,{marginTop:2,display:"flex",gridGap:8,justifyContent:"flex-end"},e.createElement(d,{onClick:()=>i(!1),variant:"text"},"Cancel"),e.createElement(d,{onClick:g,variant:"contained",color:"primary"},"Save")))},L=({values:t=Array(5).fill(""),onSave:n,iconButton:i})=>{const{updateOpen:o,updateValues:u,updateOnSave:c}=E(v),m=r(()=>{const a=[...t.map(l=>String(l)),"","",""];o(!0),u(a),c(()=>n||(()=>{}))},[n,c,o,u,t]),g=V();return i?e.createElement(f,{"aria-label":"edit list",onClick:m,size:"small"},i):e.createElement(d,{className:g.dialogButton,onClick:m},"List")},T=()=>{const{open:t,updateOpen:n}=E(v);return e.createElement(h,{open:t,handleClose:()=>n(!1),title:"Input Value List",fullScreen:!1},e.createElement(I,null))};export{T as ValueListInputDialog,L as ValueListInputDialogButton};
1
+ import{jsx as e,jsxs as h}from"react/jsx-runtime";import{makeStyles as x,Box as p,Typography as k,TextField as B,IconButton as C,Button as m,Divider as S}from"@material-ui/core";import y from"@material-ui/icons/Add";import L from"@material-ui/icons/Delete";import{useContext as f,useCallback as r}from"react";import{SoundcheckDialog as V}from"../../../../SoundcheckDialog/SoundcheckDialog.esm.js";import{ValueListContext as v}from"./ValueListContext.esm.js";const I=x(t=>({dialogButton:{padding:t.spacing(1,1.5)}})),T=()=>{const{values:t,updateValues:n,updateOpen:a,onSave:o}=f(v),d=r((i,l)=>{const c=[...t];c[i]=l,n(c)},[n,t]),s=r(i=>{const l=[...t];l.splice(i,1),n(l)},[n,t]),u=r(()=>{const i=[...t,""];n(i)},[n,t]),g=r(()=>{o(t.filter(i=>!!i)),a(!1)},[o,a,t]);return h(p,{minWidth:640,paddingLeft:2,paddingRight:2,"data-testid":"rule-value-list-input",children:[e(k,{component:"div",variant:"subtitle2",children:"Rule Value"}),t.map((i,l)=>h(p,{display:"flex",marginBottom:1,alignItems:"center",children:[e(B,{value:i,onChange:c=>d(l,c.currentTarget.value),variant:"outlined",margin:"dense",fullWidth:!0}),e(C,{onClick:()=>s(l),size:"small",children:e(L,{})})]},l)),e(p,{marginTop:1,marginBottom:2,children:e(m,{onClick:u,startIcon:e(y,{}),size:"small",variant:"outlined",children:"Add"})}),e(S,{}),h(p,{marginTop:2,display:"flex",gridGap:8,justifyContent:"flex-end",children:[e(m,{onClick:()=>a(!1),variant:"text",children:"Cancel"}),e(m,{onClick:g,variant:"contained",color:"primary",children:"Save"})]})]})},b=({values:t=Array(5).fill(""),onSave:n,iconButton:a})=>{const{updateOpen:o,updateValues:d,updateOnSave:s}=f(v),u=r(()=>{const i=[...t.map(l=>String(l)),"","",""];o(!0),d(i),s(()=>n||(()=>{}))},[n,s,o,d,t]),g=I();return a?e(C,{"aria-label":"edit list",onClick:u,size:"small",children:a}):e(m,{className:g.dialogButton,onClick:u,children:"List"})},D=()=>{const{open:t,updateOpen:n}=f(v);return e(V,{open:t,handleClose:()=>n(!1),title:"Input Value List",fullScreen:!1,children:e(T,{})})};export{D as ValueListInputDialog,b as ValueListInputDialogButton};
2
2
  //# sourceMappingURL=ValueListInput.esm.js.map
@@ -1,2 +1,2 @@
1
- import{Grid as d}from"@material-ui/core";import{makeStyles as i}from"@material-ui/core/styles";import e from"react";import{RuleInputBox as a}from"../RuleInputBox.esm.js";const s=i(()=>({noPadding:{padding:0}})),p=({expression:o,name:t,depth:n,disabled:r})=>{const m=s();return o?e.createElement(d,{item:!0,className:m.noPadding},e.createElement(a,{name:`${t}`,depth:n+1,disabled:r})):null};export{p as ExpressionBox};
1
+ import{jsx as o}from"react/jsx-runtime";import{Grid as m}from"@material-ui/core";import{makeStyles as t}from"@material-ui/core/styles";import{RuleInputBox as s}from"../RuleInputBox.esm.js";const p=t(()=>({noPadding:{padding:0}})),a=({expression:e,name:n,depth:i,disabled:r})=>{const d=p();return e?o(m,{item:!0,className:d.noPadding,children:o(s,{name:`${n}`,depth:i+1,disabled:r})}):null};export{a as ExpressionBox};
2
2
  //# sourceMappingURL=ExpressionBox.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as b,ButtonGroup as g,Button as k}from"@material-ui/core";import n,{useState as E}from"react";import{useFormContext as f,Controller as y}from"react-hook-form";import{ExpressionType as a,ExpressionTypeReadableMap as C}from"../../../types/ExpressionType.esm.js";import"../../../../Frequency/types.esm.js";import"../../../../Frequency/util.esm.js";import"../../../../Frequency/FrequencyComponent.esm.js";import"../../../types/Path.esm.js";const x=b(e=>({button:{backgroundColor:e.palette.background.paper,padding:e.spacing(.5,1.5)},selectedButton:{backgroundColor:e.palette.action.hover}})),B=({name:e,disabled:l})=>{const o=x(),{control:p,getValues:m}=f(),s=`${e}`,c=m(s),[i,u]=E(c||a.AllOf),d=r=>{u(r)};return n.createElement(y,{control:p,name:e,render:({field:{onChange:r}})=>n.createElement(g,{color:"primary"},Object.values(a).map(t=>n.createElement(k,{key:t,className:i===t?`${o.selectedButton} ${o.button}`:`${o.button}`,onClick:()=>{d(t),r(t)},disabled:l},C[t])))})};export{B as ExpressionTypeToggle};
1
+ import{jsx as n}from"react/jsx-runtime";import{makeStyles as b,ButtonGroup as g,Button as f}from"@material-ui/core";import{useState as k}from"react";import{useFormContext as x,Controller as C}from"react-hook-form";import{ExpressionType as p,ExpressionTypeReadableMap as y}from"../../../types/ExpressionType.esm.js";import"../../../../Frequency/types.esm.js";import"../../../../Frequency/util.esm.js";import"../../../../Frequency/FrequencyComponent.esm.js";import"../../../types/Path.esm.js";const h=b(o=>({button:{backgroundColor:o.palette.background.paper,padding:o.spacing(.5,1.5)},selectedButton:{backgroundColor:o.palette.action.hover}})),B=({name:o,disabled:a})=>{const e=h(),{control:l,getValues:i}=x(),s=`${o}`,m=i(s),[c,d]=k(m||p.AllOf),u=r=>{d(r)};return n(C,{control:l,name:o,render:({field:{onChange:r}})=>n(g,{color:"primary",children:Object.values(p).map(t=>n(f,{className:c===t?`${e.selectedButton} ${e.button}`:`${e.button}`,onClick:()=>{u(t),r(t)},disabled:a,children:y[t]},t))})})};export{B as ExpressionTypeToggle};
2
2
  //# sourceMappingURL=ExpressionTypeToggle.esm.js.map
@@ -1,2 +1,2 @@
1
- import{Box as s,Grid as r}from"@material-ui/core";import{makeStyles as b}from"@material-ui/core/styles";import t from"react";import{useFormContext as B}from"react-hook-form";import{AddMenuButton as N}from"./AddMenuButton.esm.js";import"@material-ui/icons/Close";import"@material-ui/icons/Delete";import"@material-ui/icons/List";import"@spotify/backstage-plugin-soundcheck-common";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../../api.esm.js";import"@material-ui/icons/Search";import"../../../SoundcheckDialog/SoundcheckDialog.esm.js";import"../../../FactExplorer/FactExplorer.esm.js";import"../../../FactExplorer/FactExplorerContext.esm.js";import"../../../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import"./Conditions/styles.esm.js";import"@backstage/catalog-model";import"../../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../../../hooks/useSoundcheckAlert.esm.js";import"../../../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import"../../utils/checkFormUtils.esm.js";import"./Conditions/ValueListInput.esm.js";import{ConditionList as y}from"./Conditions/ConditionList.esm.js";import{ExpressionBox as A}from"./Expressions/ExpressionBox.esm.js";import{ExpressionTypeToggle as C}from"./Expressions/ExpressionTypeToggle.esm.js";import{useRuleInputHandlers as P}from"./useRuleInputHandlers.esm.js";const $=b(e=>({root:{padding:0},inner:{marginLeft:e.spacing(2),paddingBottom:e.spacing(2),borderLeft:`1px solid ${e.palette.border}`,display:"flex",flexDirection:"row",gap:0},connector:{borderBottom:`1px solid ${e.palette.border}`,padding:e.spacing(0),width:"15px",height:"20px"},noPadding:{padding:0}})),k=({name:e,depth:i,disabled:n})=>{const o=$(),{setValue:l,trigger:c,watch:p}=B(),{handleAddCondition:g,handleAddExpression:x,handleDeleteCondition:f}=P(e,p,l,c),E=`${e}`,d=p(E),u=d?.conditions||[],h=d?.expressions;return t.createElement(s,{className:i>0?o.inner:o.root},i>0&&t.createElement(s,{className:o.connector}),t.createElement(r,{container:!0,spacing:0,direction:"column",className:o.noPadding},t.createElement(r,{item:!0,className:o.noPadding},t.createElement(C,{disabled:n,name:`${e}.expressionType`})),t.createElement(r,{item:!0,container:!0,spacing:0,direction:"column",className:o.noPadding},t.createElement(y,{depth:i,handleDelete:m=>f(m,e),disabled:n,conditions:u,name:e}),h?.map((m,a)=>t.createElement(A,{key:a,expression:m,name:`${e}.expressions[${a}]`,depth:i,disabled:n}))),!n&&t.createElement(r,{item:!0,className:o.noPadding},t.createElement(N,{onAddCondition:g,onAddExpression:x}))))};export{k as RuleInputBox};
1
+ import{jsxs as p,jsx as e}from"react/jsx-runtime";import{Box as l,Grid as t}from"@material-ui/core";import{makeStyles as N}from"@material-ui/core/styles";import{useFormContext as $}from"react-hook-form";import{AddMenuButton as y}from"./AddMenuButton.esm.js";import"@material-ui/icons/Close";import"@material-ui/icons/Delete";import"@material-ui/icons/List";import"@spotify/backstage-plugin-soundcheck-common";import"react";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../../api.esm.js";import"@material-ui/icons/Search";import"../../../SoundcheckDialog/SoundcheckDialog.esm.js";import"../../../FactExplorer/FactExplorer.esm.js";import"../../../FactExplorer/FactExplorerContext.esm.js";import"../../../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import"./Conditions/styles.esm.js";import"@backstage/catalog-model";import"../../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../../../hooks/useSoundcheckAlert.esm.js";import"../../../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import"../../utils/checkFormUtils.esm.js";import"./Conditions/ValueListInput.esm.js";import{ConditionList as A}from"./Conditions/ConditionList.esm.js";import{ExpressionBox as C}from"./Expressions/ExpressionBox.esm.js";import{ExpressionTypeToggle as P}from"./Expressions/ExpressionTypeToggle.esm.js";import{useRuleInputHandlers as w}from"./useRuleInputHandlers.esm.js";const E=N(o=>({root:{padding:0},inner:{marginLeft:o.spacing(2),paddingBottom:o.spacing(2),borderLeft:`1px solid ${o.palette.border}`,display:"flex",flexDirection:"row",gap:0},connector:{borderBottom:`1px solid ${o.palette.border}`,padding:o.spacing(0),width:"15px",height:"20px"},noPadding:{padding:0}})),D=({name:o,depth:n,disabled:r})=>{const i=E(),{setValue:c,trigger:g,watch:m}=$(),{handleAddCondition:x,handleAddExpression:h,handleDeleteCondition:f}=w(o,m,c,g),u=`${o}`,s=m(u),b=s?.conditions||[],B=s?.expressions;return p(l,{className:n>0?i.inner:i.root,children:[n>0&&e(l,{className:i.connector}),p(t,{container:!0,spacing:0,direction:"column",className:i.noPadding,children:[e(t,{item:!0,className:i.noPadding,children:e(P,{disabled:r,name:`${o}.expressionType`})}),p(t,{item:!0,container:!0,spacing:0,direction:"column",className:i.noPadding,children:[e(A,{depth:n,handleDelete:d=>f(d,o),disabled:r,conditions:b,name:o}),B?.map((d,a)=>e(C,{expression:d,name:`${o}.expressions[${a}]`,depth:n,disabled:r},a))]}),!r&&e(t,{item:!0,className:i.noPadding,children:e(y,{onAddCondition:x,onAddExpression:h})})]})]})};export{D as RuleInputBox};
2
2
  //# sourceMappingURL=RuleInputBox.esm.js.map
@@ -1,2 +1,2 @@
1
- import{parseEntityRef as v}from"@backstage/catalog-model";import{Typography as y}from"@material-ui/core";import{makeStyles as b}from"@material-ui/core/styles";import{uniqBy as g}from"lodash";import o from"react";import{useFormContext as h}from"react-hook-form";import"../../../../contexts/TrackFormContext.esm.js";import"../../../../contexts/CheckFormContext.esm.js";import"../../../../contexts/CampaignFormContext.esm.js";import{useLoggedInUser as w}from"../../../../contexts/UserProvider.esm.js";import{useGroupOptions as x}from"../../../../hooks/groups/useGroupOptions.esm.js";import{FormControlledAutocomplete as L}from"../../../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import"@material-ui/icons/CheckBox";import"@material-ui/icons/CheckBoxOutlineBlank";import"@material-ui/lab";import"../../../ListboxVirtualized/ListboxVirtualized.esm.js";import{useLabelOptions as S}from"../../../FormControlledAutocomplete/useLabelOptions.esm.js";import{CHECK_FIELDS as C}from"../../utils/checkFormUtils.esm.js";const R=b(a=>({container:{display:"flex",flexDirection:"column",gap:a.spacing(1)}})),T=({control:a,disabled:i,error:l})=>{const n=R(),{options:p,isLoading:s}=x();let e=g(p.map(m=>({value:m.ref,label:m.name})),"value");const{user:c,userEntityRef:r}=w();r&&(e=[{value:r,label:c?.metadata?.name??r},...e]);const{watch:u}=h(),t=u("detailsStep.ownerEntityRef");t&&r!==t&&!e.some(m=>m.value===t)&&(e=[{value:t,label:v(t).name},...e]);const f=S(e),{owner:{name:d,selectLabel:E}}=C.details;return o.createElement("div",{className:n.container},o.createElement("div",null,o.createElement(y,{variant:"subtitle2"},d)),o.createElement("div",null,o.createElement(L,{freeSolo:!1,name:"detailsStep.ownerEntityRef",control:a,placeholder:E,width:250,helperText:l?.message??void 0,disabled:i||s,...f})))};export{T as TeamDetailsInput};
1
+ import{jsxs as y,jsx as i}from"react/jsx-runtime";import{parseEntityRef as h}from"@backstage/catalog-model";import{Typography as b}from"@material-ui/core";import{makeStyles as g}from"@material-ui/core/styles";import{uniqBy as x}from"lodash";import{useFormContext as E}from"react-hook-form";import"../../../../contexts/TrackFormContext.esm.js";import"../../../../contexts/CheckFormContext.esm.js";import"../../../../contexts/CampaignFormContext.esm.js";import"react";import{useLoggedInUser as w}from"../../../../contexts/UserProvider.esm.js";import{useGroupOptions as L}from"../../../../hooks/groups/useGroupOptions.esm.js";import{FormControlledAutocomplete as S}from"../../../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import"@material-ui/icons/CheckBox";import"@material-ui/icons/CheckBoxOutlineBlank";import"@material-ui/lab";import"../../../ListboxVirtualized/ListboxVirtualized.esm.js";import{useLabelOptions as C}from"../../../FormControlledAutocomplete/useLabelOptions.esm.js";import{CHECK_FIELDS as R}from"../../utils/checkFormUtils.esm.js";const T=g(m=>({container:{display:"flex",flexDirection:"column",gap:m.spacing(1)}})),D=({control:m,disabled:a,error:n})=>{const l=T(),{options:p,isLoading:s}=L();let e=x(p.map(r=>({value:r.ref,label:r.name})),"value");const{user:c,userEntityRef:t}=w();t&&(e=[{value:t,label:c?.metadata?.name??t},...e]);const{watch:d}=E(),o=d("detailsStep.ownerEntityRef");o&&t!==o&&!e.some(r=>r.value===o)&&(e=[{value:o,label:h(o).name},...e]);const f=C(e),{owner:{name:u,selectLabel:v}}=R.details;return y("div",{className:l.container,children:[i("div",{children:i(b,{variant:"subtitle2",children:u})}),i("div",{children:i(S,{freeSolo:!1,name:"detailsStep.ownerEntityRef",control:m,placeholder:v,width:250,helperText:n?.message??void 0,disabled:a||s,...f})})]})};export{D as TeamDetailsInput};
2
2
  //# sourceMappingURL=TeamDetailsInput.esm.js.map
@@ -0,0 +1,2 @@
1
+ import{jsxs as i,jsx as e}from"react/jsx-runtime";import{FormControlLabel as y,Switch as b,Typography as m}from"@material-ui/core";import{makeStyles as x}from"@material-ui/core/styles";import{useFormContext as g}from"react-hook-form";import"../../../contexts/TrackFormContext.esm.js";import{useCheckFormContext as k}from"../../../contexts/CheckFormContext.esm.js";import"../../../contexts/CampaignFormContext.esm.js";import"react";import"../../../contexts/UserProvider.esm.js";import{FormFieldLabel as s}from"../../FormFieldLabel/FormFieldLabel.esm.js";import{FormFilterSection as F}from"../../FormFilterSection/FormFilterSection.esm.js";import{FormMarkdownInput as v}from"../../FormMarkdownInput/FormMarkdownInput.esm.js";import"../FormFields/CheckNameInput/CheckNameInput.esm.js";import"../FormFields/PassFailMessageInput/PassFailMessageInput.esm.js";import{CHECK_FIELDS as C}from"../utils/checkFormUtils.esm.js";import"../FormFields/TeamDetailsInput/TeamDetailsInput.esm.js";import"../FormFields/RuleInput/AddMenuButton.esm.js";import{RuleInputBox as S}from"../FormFields/RuleInput/RuleInputBox.esm.js";import"../FormFields/RuleInput/Expressions/ExpressionBox.esm.js";import"../FormFields/RuleInput/Expressions/ExpressionTypeToggle.esm.js";import"@material-ui/icons/Close";import"@material-ui/icons/Delete";import"@material-ui/icons/List";import"@spotify/backstage-plugin-soundcheck-common";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../api.esm.js";import"@material-ui/icons/Search";import"../../SoundcheckDialog/SoundcheckDialog.esm.js";import"../../FactExplorer/FactExplorer.esm.js";import"../../FactExplorer/FactExplorerContext.esm.js";import"../../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import"../FormFields/RuleInput/Conditions/styles.esm.js";import"@backstage/catalog-model";import"../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../../hooks/useSoundcheckAlert.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import"../FormFields/RuleInput/Conditions/ValueListInput.esm.js";import"../FormFields/RuleInput/Conditions/ConditionList.esm.js";import"../FormFields/CheckScheduleSection/ScheduleSection.esm.js";import"../FormFields/CheckPathResolverInput.esm.js";import{ExpressionType as N}from"../types/ExpressionType.esm.js";import"../../Frequency/types.esm.js";import"../../Frequency/util.esm.js";import"../../Frequency/FrequencyComponent.esm.js";import"../types/Path.esm.js";const w=x(t=>({container:{display:"flex",flexDirection:"column",gap:t.spacing(2)},innerContainer:{display:"flex",flexDirection:"column"}})),E=()=>{const t=w(),{isLoading:r,isReadOnly:o}=k(),{control:d,watch:n,setValue:a}=g(),l="filtersStep.applicabilityExpressions",p="filtersStep.notApplicableMessage",h=n("detailsStep.type"),c=n(l),f=u=>{u.target.checked?(a(l,{expressionType:N.AllOf,conditions:[{factRef:"",path:"",operator:"",operatorPrefix:"",value:""}]}),a(p,"")):(a(l,void 0),a(p,void 0))};return i("div",{className:t.container,children:[e(F,{name:"filtersStep.filter",keyValueFilterName:"filtersStep.keyValueFilter",disabled:r||o,description:C.filter.description,excludeFilterName:"filtersStep.excludeFilter",excludeKeyValueFilterName:"filtersStep.excludeKeyValueFilter"}),h!=="manual"&&i("div",{className:t.container,children:[i("div",{className:t.innerContainer,children:[e(y,{label:e(s,{title:"Applicability rule (Optional)",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/checks/#applicability-rule"}),disabled:r||o,control:e(b,{checked:!!c?.conditions?.length,onChange:f})}),e(m,{variant:"caption",children:"The check applies to all entities that match the catalog filters above. If you want to add an extra fact-based applicability rule, turn on the toggle and define the fact-based rule. With this rule enabled, the check will only apply to entities that match both the catalog filters and the fact-based rule. The fact-based rule is re-checked every time the check runs."})]}),!!c?.conditions?.length&&i("div",{className:t.container,children:[e("div",{className:t.innerContainer,children:e(S,{disabled:r||o,name:l,depth:0})}),i("div",{className:t.innerContainer,children:[e(s,{title:"Not applicable message (Optional)"}),e(m,{variant:"caption",children:"Add a message explaining why the check doesn't apply if an entity fails the fact-based rule."}),e(v,{name:p,control:d,placeholder:"Enter not applicable message...",disabled:r||o})]})]})]})]})};export{E as CheckApplicabilityStep};
2
+ //# sourceMappingURL=CheckApplicabilityStep.esm.js.map
@@ -1,2 +1,2 @@
1
- import{useApi as n,configApiRef as a}from"@backstage/core-plugin-api";import{makeStyles as s}from"@material-ui/core/styles";import t from"react";import{useFormContext as c}from"react-hook-form";import"../../../contexts/TrackFormContext.esm.js";import{useCheckFormContext as l}from"../../../contexts/CheckFormContext.esm.js";import"../../../contexts/CampaignFormContext.esm.js";import"../../../contexts/UserProvider.esm.js";import{CheckNameInput as d}from"../FormFields/CheckNameInput/CheckNameInput.esm.js";import"../FormFields/PassFailMessageInput/PassFailMessageInput.esm.js";import{CheckDescriptionInput as f}from"../FormFields/CheckDescriptionInput/CheckDescriptionInput.esm.js";import{TeamDetailsInput as u}from"../FormFields/TeamDetailsInput/TeamDetailsInput.esm.js";import"../FormFields/RuleInput/AddMenuButton.esm.js";import"../FormFields/RuleInput/RuleInputBox.esm.js";import"../FormFields/RuleInput/Expressions/ExpressionBox.esm.js";import"../FormFields/RuleInput/Expressions/ExpressionTypeToggle.esm.js";import"@material-ui/core";import"@material-ui/icons/Close";import"@material-ui/icons/Delete";import"@material-ui/icons/List";import"@spotify/backstage-plugin-soundcheck-common";import"@tanstack/react-query";import"../../../api.esm.js";import"@material-ui/icons/Search";import"../../SoundcheckDialog/SoundcheckDialog.esm.js";import"../../FactExplorer/FactExplorer.esm.js";import"../../FactExplorer/FactExplorerContext.esm.js";import"../../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import"../FormFields/RuleInput/Conditions/styles.esm.js";import"@backstage/catalog-model";import"../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../../hooks/useSoundcheckAlert.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import"../utils/checkFormUtils.esm.js";import"../FormFields/RuleInput/Conditions/ValueListInput.esm.js";import"../FormFields/RuleInput/Conditions/ConditionList.esm.js";import"../FormFields/CheckScheduleSection/ScheduleSection.esm.js";import"../FormFields/CheckPathResolverInput.esm.js";import{CheckTypeInput as g}from"../FormFields/CheckTypeInput/CheckTypeInput.esm.js";const C=s(i=>({container:{display:"flex",flexDirection:"column",gap:i.spacing(1)}})),k=()=>{const i=C(),{isLoading:e,isReadOnly:r}=l(),{control:o,formState:{errors:m}}=c(),p=n(a).getOptionalStringArray("soundcheck.flags")?.includes("enable-MCE");return t.createElement("div",{className:i.container},t.createElement(d,{control:o,error:m?.detailsStep?.name,isLoading:e,disabled:r}),t.createElement(f,{control:o,error:m?.detailsStep?.description,isLoading:e,disabled:r}),t.createElement(u,{control:o,disabled:r,error:m?.detailsStep?.ownerEntityRef}),p&&t.createElement(g,{control:o,disabled:r,isLoading:e}))};export{k as CheckDetailsStep};
1
+ import{jsxs as e,jsx as t}from"react/jsx-runtime";import{makeStyles as n}from"@material-ui/core/styles";import{useFormContext as s}from"react-hook-form";import"../../../contexts/TrackFormContext.esm.js";import{useCheckFormContext as a}from"../../../contexts/CheckFormContext.esm.js";import"../../../contexts/CampaignFormContext.esm.js";import"react";import"../../../contexts/UserProvider.esm.js";import{CheckNameInput as c}from"../FormFields/CheckNameInput/CheckNameInput.esm.js";import"../FormFields/PassFailMessageInput/PassFailMessageInput.esm.js";import{CheckDescriptionInput as l}from"../FormFields/CheckDescriptionInput/CheckDescriptionInput.esm.js";import{TeamDetailsInput as d}from"../FormFields/TeamDetailsInput/TeamDetailsInput.esm.js";import"../FormFields/RuleInput/AddMenuButton.esm.js";import"../FormFields/RuleInput/RuleInputBox.esm.js";import"../FormFields/RuleInput/Expressions/ExpressionBox.esm.js";import"../FormFields/RuleInput/Expressions/ExpressionTypeToggle.esm.js";import"@material-ui/core";import"@material-ui/icons/Close";import"@material-ui/icons/Delete";import"@material-ui/icons/List";import"@spotify/backstage-plugin-soundcheck-common";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../api.esm.js";import"@material-ui/icons/Search";import"../../SoundcheckDialog/SoundcheckDialog.esm.js";import"../../FactExplorer/FactExplorer.esm.js";import"../../FactExplorer/FactExplorerContext.esm.js";import"../../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import"../FormFields/RuleInput/Conditions/styles.esm.js";import"@backstage/catalog-model";import"../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../../hooks/useSoundcheckAlert.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import"../utils/checkFormUtils.esm.js";import"../FormFields/RuleInput/Conditions/ValueListInput.esm.js";import"../FormFields/RuleInput/Conditions/ConditionList.esm.js";import"../FormFields/CheckScheduleSection/ScheduleSection.esm.js";import"../FormFields/CheckPathResolverInput.esm.js";import{CheckTypeInput as f}from"../FormFields/CheckTypeInput/CheckTypeInput.esm.js";const u=n(i=>({container:{display:"flex",flexDirection:"column",gap:i.spacing(1)}})),x=()=>{const i=u(),{isLoading:m,isReadOnly:o}=a(),{control:r,formState:{errors:p}}=s();return e("div",{className:i.container,children:[t(c,{control:r,error:p?.detailsStep?.name,isLoading:m,disabled:o}),t(l,{control:r,error:p?.detailsStep?.description,isLoading:m,disabled:o}),t(d,{control:r,disabled:o,error:p?.detailsStep?.ownerEntityRef}),t(f,{control:r,disabled:o,isLoading:m})]})};export{x as CheckDetailsStep};
2
2
  //# sourceMappingURL=CheckDetailsStep.esm.js.map
@@ -1,2 +1,2 @@
1
- import{stringifyEntityRef as x}from"@backstage/catalog-model";import{EntityListProvider as k}from"@backstage/plugin-catalog-react";import{makeStyles as v,Typography as h}from"@material-ui/core";import{isEqual as S,pickBy as F}from"lodash";import t,{useMemo as b}from"react";import{useFormContext as p}from"react-hook-form";import"../../../contexts/TrackFormContext.esm.js";import{useCheckFormContext as w}from"../../../contexts/CheckFormContext.esm.js";import"../../../contexts/CampaignFormContext.esm.js";import"../../../contexts/UserProvider.esm.js";import{CheckDryRun as T}from"../../CheckDryRun/CheckDryRun.esm.js";import"../../SoundcheckDialog/SoundcheckDialog.esm.js";import"../../CheckDryRun/CheckDryRunDetails.esm.js";import{CheckDryRunProvider as C}from"../../CheckDryRun/CheckDryRunContext.esm.js";import{mapToCheckerInput as D}from"../utils/checkFormUtils.esm.js";import{ExpandableSection as R}from"../../ExpandableSection/ExpandableSection.esm.js";import{FilterPreviewTable as A}from"../../Filter/FilterPreviewTable/FilterPreviewTable.esm.js";import{emptyFilters as n,emptyKeyValueFilters as c}from"../../Filter/types.esm.js";import{FormattedPreview as V}from"../../FormattedPreview/FormattedPreview.esm.js";const I=v(e=>({container:{display:"flex",flexDirection:"column",gap:e.spacing(2)},preview:{color:e.palette.text.primary,fontSize:e.typography.body1.fontSize,borderTop:`1px solid ${e.palette.divider}`,overflow:"auto",padding:e.spacing(1,2),maxHeight:420,"& pre":{marginTop:0,background:`${e.palette.background.paper} !important`}},previewSection:{marginBottom:e.spacing(2)}})),N=()=>{const e=I(),{getValues:r}=p(),{selectedItem:o}=w(),i=D(r(),o),m=r("filtersStep.filter"),s=r("filtersStep.keyValueFilter"),d=r("filtersStep.excludeFilter"),u=r("filtersStep.excludeKeyValueFilter"),y=S(m,n()),{watch:f}=p(),a=f("detailsStep.type")==="manual";a&&delete i.rule;const E=b(()=>{const l={...i,id:o?i.id:"<ID WILL BE GENERATED WHEN CHECK IS SAVED>"};return F(l,g=>!!g)},[i,o]);return t.createElement(C,null,t.createElement(h,{variant:"body2"},a?"Manual checks cannot be dry-run. These types of checks are meant to be executed manually by users.":"Take a moment to review your check and perform dry runs to ensure everything is working as expected before you save."),t.createElement("div",{className:e.container},t.createElement(R,{className:e.previewSection,title:"YAML"},t.createElement("div",{className:e.preview},t.createElement(V,{data:E,dataType:"yaml"}))),!a&&t.createElement(k,{pagination:{limit:10}},t.createElement(A,{title:`Test Against ${y?"Select Filters to Dry Run Against Applicable Entities":"Applicable Entities"}`,filter:m??n(),keyValueFilter:s??c(),excludeFilter:d??n(),excludeKeyValueFilter:u??c(),hideTags:!0,additionalColumns:[{title:"Dry Run",cellStyle:{padding:"0px 16px 0px 20px"},id:"dry-run",render:l=>t.createElement(t.Fragment,null,t.createElement(T,{check:i,entityRef:x(l)}))}]}))))};export{N as CheckReviewStep};
1
+ import{jsxs as m,jsx as t,Fragment as k}from"react/jsx-runtime";import{stringifyEntityRef as v}from"@backstage/catalog-model";import{EntityListProvider as S}from"@backstage/plugin-catalog-react";import{makeStyles as F,Typography as b}from"@material-ui/core";import{isEqual as E,pickBy as w}from"lodash";import{useMemo as T}from"react";import{useFormContext as c}from"react-hook-form";import"../../../contexts/TrackFormContext.esm.js";import{useCheckFormContext as C}from"../../../contexts/CheckFormContext.esm.js";import"../../../contexts/CampaignFormContext.esm.js";import"../../../contexts/UserProvider.esm.js";import{CheckDryRun as D}from"../../CheckDryRun/CheckDryRun.esm.js";import"../../SoundcheckDialog/SoundcheckDialog.esm.js";import"../../CheckDryRun/CheckDryRunDetails.esm.js";import{CheckDryRunProvider as R}from"../../CheckDryRun/CheckDryRunContext.esm.js";import{mapToCheckerInput as A}from"../utils/checkFormUtils.esm.js";import{ExpandableSection as V}from"../../ExpandableSection/ExpandableSection.esm.js";import{FilterPreviewTable as I}from"../../Filter/FilterPreviewTable/FilterPreviewTable.esm.js";import{emptyFilters as p,emptyKeyValueFilters as s}from"../../Filter/types.esm.js";import{FormattedPreview as N}from"../../FormattedPreview/FormattedPreview.esm.js";const K=F(e=>({container:{display:"flex",flexDirection:"column",gap:e.spacing(2)},preview:{color:e.palette.text.primary,fontSize:e.typography.body1.fontSize,borderTop:`1px solid ${e.palette.divider}`,overflow:"auto",padding:e.spacing(1,2),maxHeight:420,"& pre":{marginTop:0,background:`${e.palette.background.paper} !important`}},previewSection:{marginBottom:e.spacing(2)}})),L=()=>{const e=K(),{getValues:r}=c(),{selectedItem:o}=C(),i=A(r(),o),l=r("filtersStep.filter"),d=r("filtersStep.keyValueFilter"),u=r("filtersStep.excludeFilter"),y=r("filtersStep.excludeKeyValueFilter"),f=E(l,p()),{watch:g}=c(),a=g("detailsStep.type")==="manual";a&&(i.rule={});const h=T(()=>{const n={...i,id:o?i.id:"<ID WILL BE GENERATED WHEN CHECK IS SAVED>"};return w(n,x=>!!x)},[i,o]);return m(R,{children:[t(b,{variant:"body2",children:a?"Manual checks cannot be dry-run. These types of checks are meant to be executed manually by users.":"Take a moment to review your check and perform dry runs to ensure everything is working as expected before you save."}),m("div",{className:e.container,children:[t(V,{className:e.previewSection,title:"YAML",children:t("div",{className:e.preview,children:t(N,{data:h,dataType:"yaml"})})}),!a&&t(S,{pagination:{limit:10},children:t(I,{title:`Test Against ${f?"Select Filters to Dry Run Against Applicable Entities":"Applicable Entities"}`,filter:l??p(),keyValueFilter:d??s(),excludeFilter:u??p(),excludeKeyValueFilter:y??s(),hideTags:!0,additionalColumns:[{title:"Dry Run",cellStyle:{padding:"0px 16px 0px 20px"},id:"dry-run",render:n=>t(k,{children:t(D,{check:i,entityRef:v(n)})})}]})})]})]})};export{L as CheckReviewStep};
2
2
  //# sourceMappingURL=CheckReviewStep.esm.js.map
@@ -1,2 +1,2 @@
1
- import{Typography as o,FormControlLabel as d,Checkbox as u}from"@material-ui/core";import{makeStyles as E}from"@material-ui/core/styles";import e from"react";import{useFormContext as c,Controller as h}from"react-hook-form";import"../../../contexts/TrackFormContext.esm.js";import{useCheckFormContext as f}from"../../../contexts/CheckFormContext.esm.js";import"../../../contexts/CampaignFormContext.esm.js";import"../../../contexts/UserProvider.esm.js";import{FormFieldLabel as C}from"../../FormFieldLabel/FormFieldLabel.esm.js";import"../FormFields/CheckNameInput/CheckNameInput.esm.js";import{PassFailMessageInput as v}from"../FormFields/PassFailMessageInput/PassFailMessageInput.esm.js";import"../../FormMarkdownInput/FormMarkdownInput.esm.js";import{CHECK_FIELDS as g}from"../utils/checkFormUtils.esm.js";import"../FormFields/TeamDetailsInput/TeamDetailsInput.esm.js";import"../FormFields/RuleInput/AddMenuButton.esm.js";import{RuleInputBox as k}from"../FormFields/RuleInput/RuleInputBox.esm.js";import"../FormFields/RuleInput/Expressions/ExpressionBox.esm.js";import"../FormFields/RuleInput/Expressions/ExpressionTypeToggle.esm.js";import"@material-ui/icons/Close";import"@material-ui/icons/Delete";import"@material-ui/icons/List";import"@spotify/backstage-plugin-soundcheck-common";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../api.esm.js";import"@material-ui/icons/Search";import"../../SoundcheckDialog/SoundcheckDialog.esm.js";import"../../FactExplorer/FactExplorer.esm.js";import"../../FactExplorer/FactExplorerContext.esm.js";import"../../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import"../FormFields/RuleInput/Conditions/styles.esm.js";import"@backstage/catalog-model";import"../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../../hooks/useSoundcheckAlert.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import"../FormFields/RuleInput/Conditions/ValueListInput.esm.js";import"../FormFields/RuleInput/Conditions/ConditionList.esm.js";import"../FormFields/CheckScheduleSection/ScheduleSection.esm.js";import{CheckPathResolverInput as y}from"../FormFields/CheckPathResolverInput.esm.js";const b=E(t=>({container:{display:"flex",flexDirection:"column",gap:t.spacing(2)},innerContainer:{display:"flex",flexDirection:"column"}})),x=()=>{const t=b(),{isLoading:p,isReadOnly:n}=f(),{control:i}=c(),{rules:m,warnings:a}=g.rulesStep,{watch:s}=c(),r=s("detailsStep.type");return e.createElement(e.Fragment,null,r==="manual"&&e.createElement("div",{className:t.container},e.createElement("div",{className:t.innerContainer},e.createElement(o,null,"Rules do not apply to manual checks. These types of checks are meant to have their state manually set by users, not executed by Soundcheck."))),(r==="default"||r===void 0||r===null)&&e.createElement("div",{className:t.container},e.createElement("div",{className:t.innerContainer},e.createElement(y,{control:i}),e.createElement("div",null,e.createElement(C,{title:m.name,docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/checks#rules"}),e.createElement(o,{variant:"caption"},m.description)),e.createElement(k,{disabled:n,name:"rulesStep.expressions",depth:0})),e.createElement(v,{control:i,isLoading:p,disabled:n}),e.createElement("div",{className:t.container},e.createElement("div",{className:t.innerContainer},e.createElement("div",null,e.createElement(o,{variant:"subtitle2"},a.name),e.createElement(o,{variant:"caption"},a.description)),e.createElement(h,{name:"rulesStep.warning",control:i,render:({field:l})=>e.createElement(d,{disabled:n,control:e.createElement(u,{checked:l.value,onChange:l.onChange}),label:a.label})})))))};export{x as CheckRulesStep};
1
+ import{jsxs as r,Fragment as h,jsx as e}from"react/jsx-runtime";import{Typography as t,FormControlLabel as u,Checkbox as f}from"@material-ui/core";import{makeStyles as C}from"@material-ui/core/styles";import{useFormContext as s,Controller as v}from"react-hook-form";import"../../../contexts/TrackFormContext.esm.js";import{useCheckFormContext as g}from"../../../contexts/CheckFormContext.esm.js";import"../../../contexts/CampaignFormContext.esm.js";import"react";import"../../../contexts/UserProvider.esm.js";import{FormFieldLabel as k}from"../../FormFieldLabel/FormFieldLabel.esm.js";import"../FormFields/CheckNameInput/CheckNameInput.esm.js";import{PassFailMessageInput as x}from"../FormFields/PassFailMessageInput/PassFailMessageInput.esm.js";import"../../FormMarkdownInput/FormMarkdownInput.esm.js";import{CHECK_FIELDS as y}from"../utils/checkFormUtils.esm.js";import"../FormFields/TeamDetailsInput/TeamDetailsInput.esm.js";import"../FormFields/RuleInput/AddMenuButton.esm.js";import{RuleInputBox as b}from"../FormFields/RuleInput/RuleInputBox.esm.js";import"../FormFields/RuleInput/Expressions/ExpressionBox.esm.js";import"../FormFields/RuleInput/Expressions/ExpressionTypeToggle.esm.js";import"@material-ui/icons/Close";import"@material-ui/icons/Delete";import"@material-ui/icons/List";import"@spotify/backstage-plugin-soundcheck-common";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../api.esm.js";import"@material-ui/icons/Search";import"../../SoundcheckDialog/SoundcheckDialog.esm.js";import"../../FactExplorer/FactExplorer.esm.js";import"../../FactExplorer/FactExplorerContext.esm.js";import"../../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import"../FormFields/RuleInput/Conditions/styles.esm.js";import"@backstage/catalog-model";import"../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../../hooks/useSoundcheckAlert.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import"../FormFields/RuleInput/Conditions/ValueListInput.esm.js";import"../FormFields/RuleInput/Conditions/ConditionList.esm.js";import"../FormFields/CheckScheduleSection/ScheduleSection.esm.js";import{CheckPathResolverInput as F}from"../FormFields/CheckPathResolverInput.esm.js";const S=C(o=>({container:{display:"flex",flexDirection:"column",gap:o.spacing(2)},innerContainer:{display:"flex",flexDirection:"column"}})),L=()=>{const o=S(),{isLoading:c,isReadOnly:n}=g(),{control:m}=s(),{rules:p,warnings:a}=y.rulesStep,{watch:d}=s(),i=d("detailsStep.type");return r(h,{children:[i==="manual"&&e("div",{className:o.container,children:e("div",{className:o.innerContainer,children:e(t,{children:"Rules do not apply to manual checks. These types of checks are meant to have their state manually set by users, not executed by Soundcheck."})})}),(i==="default"||i===void 0||i===null)&&r("div",{className:o.container,children:[r("div",{className:o.innerContainer,children:[e(F,{control:m}),r("div",{children:[e(k,{title:p.name,docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/checks#rules"}),e(t,{variant:"caption",children:p.description})]}),e(b,{disabled:n,name:"rulesStep.expressions",depth:0})]}),e(x,{control:m,isLoading:c,disabled:n}),e("div",{className:o.container,children:r("div",{className:o.innerContainer,children:[r("div",{children:[e(t,{variant:"subtitle2",children:a.name}),e(t,{variant:"caption",children:a.description})]}),e(v,{name:"rulesStep.warning",control:m,render:({field:l})=>e(u,{disabled:n,control:e(f,{checked:l.value,onChange:l.onChange}),label:a.label})})]})})]})]})};export{L as CheckRulesStep};
2
2
  //# sourceMappingURL=CheckRulesStep.esm.js.map
@@ -1,2 +1,2 @@
1
- import{zodResolver as a}from"@hookform/resolvers/zod";import{useForm as u}from"react-hook-form";import"../../contexts/TrackFormContext.esm.js";import{useCheckFormContext as c}from"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"react";import{useLoggedInUser as l}from"../../contexts/UserProvider.esm.js";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as f}from"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{mapCheckerToFormValues as d,mapToCheckerInput as h,DEFAULT_FORM_VALUES as C}from"./utils/checkFormUtils.esm.js";import{manualCheckFormSchema as S,defaultCheckFormSchema as k}from"./utils/validation.esm.js";const F=p=>{const{selectedItem:r}=c(),{userEntityRef:m}=l();let e=C;r&&(e=d(r)),m&&!e.detailsStep.ownerEntityRef&&(e.detailsStep.ownerEntityRef=m);const s=u({defaultValues:e,mode:"onChange",resolver:(o,t,i)=>o.detailsStep.type==="manual"?a(S)(o,t,i):a(k)(o,t,i)}),{showModal:n}=f();return{formMethods:s,onSubmit:async o=>{if(!await n({title:"Save Check",message:`Are you sure you want to save check: ${o.detailsStep.name}?`,error:!1}))return;const t=h(o,r);p(t)}}};export{F as useCheckForm};
1
+ import{zodResolver as a}from"@hookform/resolvers/zod";import{useForm as u}from"react-hook-form";import"../../contexts/TrackFormContext.esm.js";import{useCheckFormContext as c}from"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"react/jsx-runtime";import"react";import{useLoggedInUser as l}from"../../contexts/UserProvider.esm.js";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as f}from"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{mapCheckerToFormValues as d,mapToCheckerInput as h,DEFAULT_FORM_VALUES as C}from"./utils/checkFormUtils.esm.js";import{manualCheckFormSchema as S,defaultCheckFormSchema as k}from"./utils/validation.esm.js";const F=p=>{const{selectedItem:r}=c(),{userEntityRef:m}=l();let e=C;r&&(e=d(r)),m&&!e.detailsStep.ownerEntityRef&&(e.detailsStep.ownerEntityRef=m);const s=u({defaultValues:e,mode:"onChange",resolver:(o,t,i)=>o.detailsStep.type==="manual"?a(S)(o,t,i):a(k)(o,t,i)}),{showModal:n}=f();return{formMethods:s,onSubmit:async o=>{if(!await n({title:"Save Check",message:`Are you sure you want to save check: ${o.detailsStep.name}?`,error:!1}))return;const t=h(o,r);p(t)}}};export{F as useCheckForm};
2
2
  //# sourceMappingURL=useCheckForm.esm.js.map
@@ -1,3 +1,3 @@
1
- import{FrequencySchema as C}from"@spotify/backstage-plugin-soundcheck-common";import{isObject as R}from"lodash";import{v4 as O}from"uuid";import{mapInputFilterToFormFilters as x,mapCatalogFilterToFormKeyValueFilters as g,mapFiltersToCatalogFilter as h}from"../../Filter/utils.esm.js";import"../../Filter/FilterComponent.esm.js";import{emptyFilters as v,emptyKeyValueFilters as F}from"../../Filter/types.esm.js";import{TimeUnit as w}from"../../Frequency/types.esm.js";import{isTimeUnit as A}from"../../Frequency/util.esm.js";import"../../Frequency/FrequencyComponent.esm.js";import{ExpressionType as l}from"../types/ExpressionType.esm.js";import{defaultSchedule as P}from"../types/Schedule.esm.js";import"../types/Path.esm.js";import{CHECK_NAME_MAX_LENGTH as M}from"./validation.esm.js";const k=e=>{if(R(e)&&"frequency"in e){const r=C.safeParse(e.frequency);if(r.success){const t=r.data;if("cron"in t)return{enabled:!0,frequency:{type:"cron",unit:w.Hours,value:1,cron:t.cron}};const o=Object.keys(t);if(o.length){const s=o[0];if(A(s))return{enabled:!0,frequency:{type:"HumanDuration",unit:s,value:t[s]??1,cron:""}}}}}return{enabled:!1,frequency:{type:"HumanDuration",unit:w.Hours,value:1,cron:""}}},S=(e,r)=>{const{enabled:t,frequency:o}=e;if(t){const{cron:s,type:i,unit:a,value:p}=o;return i==="HumanDuration"?{frequency:{[a]:p},filter:h(r)}:{frequency:{cron:s}}}},m=e=>{if(Array.isArray(e))return e.map(r=>m(r));if(typeof e=="string"){if(e==="true")return!0;if(e==="false")return!1;const r=Number(e);if(!isNaN(r))return r}return e},u=e=>{if(!e)return{};if(e.expressionType){const r={[e.expressionType]:e.conditions?.map(t=>({factRef:t.factRef,path:t.path,operator:t.operatorPrefix?`${t.operatorPrefix}:${t.operator}`:t.operator,value:m(t.value)}))};return e.expressions&&e.expressions.forEach(t=>{r[e.expressionType]?.push(u(t))}),r}if(e.expressions)return e.expressions.map(u);if(e.conditions&&e.conditions.length===1){const r=e.conditions[0];return{factRef:r.factRef,path:r.path,operator:r.operatorPrefix?`${r.operatorPrefix}:${r.operator}`:r.operator,value:m(r.value)}}return{}},T=e=>{if(e?.match(/.:./)){const r=e.split(":");if(["all","any","none"].includes(r[0]))return{operator:r[1],operatorPrefix:r[0]}}return{}},y=(e,r=!0)=>{if(!e)return{conditions:[]};const t=Object.keys(e);let o=t.includes("all")||r&&!t.includes("any")?l.AllOf:l.AnyOf;if(t.includes("not")&&(o=l.Not),t.includes(o)||r){const a=e[o]||[e],p=[],f=[];return a.forEach(n=>{const d=Object.keys(n);if(d.includes("all")||d.includes("any")||d.includes("not"))f.push(y(n,!1));else{const{operator:b,operatorPrefix:E}=T(n.operator);p.push({factRef:n.factRef,path:n.path,operator:b??n.operator,value:n.value,operatorPrefix:E})}}),{expressions:f.length>0?f:void 0,conditions:p,expressionType:o}}const{operator:s,operatorPrefix:i}=T(e.operator);return{expressionType:l.AllOf,conditions:[{factRef:e.factRef,path:e.path,operator:s??e.operator,value:e.value,operatorPrefix:i}]}},V=e=>({detailsStep:{name:e.name??"",description:e.description??"",ownerEntityRef:e.ownerEntityRef??"",type:e.type??"default"},rulesStep:{pathResolver:e.pathResolver??"jsonpath",expressions:y(e.rule),passedMessage:e.passedMessage??void 0,failedMessage:e.failedMessage??void 0,warning:e.warning??!1},filtersStep:{filter:x(e.filter),keyValueFilter:g(e.filter),excludeFilter:x(e.exclude),excludeKeyValueFilter:g(e.exclude)},scheduleStep:{schedule:k(e.schedule)}}),N=(e,r)=>{const{detailsStep:t,rulesStep:o,filtersStep:s,scheduleStep:i}=e;return{id:r?r.id:O(),ownerEntityRef:t.ownerEntityRef??void 0,name:t.name,description:t.description,pathResolver:o.pathResolver,passedMessage:o.passedMessage??void 0,failedMessage:o.failedMessage??void 0,rule:t.type==="manual"?void 0:u(o.expressions),warning:o.warning??!1,filter:s.filter||s.keyValueFilter?h(s.filter,s.keyValueFilter):void 0,exclude:s.excludeFilter||s.excludeKeyValueFilter?h(s.excludeFilter,s.excludeKeyValueFilter):void 0,schedule:S(i.schedule,s.filter),type:t.type}},c=(e,r="$")=>{const t=[];if(e.type==="object"&&e.properties){const o=e.properties;for(const s in o)if(o.hasOwnProperty(s)){const i=`${r}.${s}`;t.push(i);const a=o[s];t.push(...c(a,i))}}if(e.type==="array"&&e.items){const o=`${r}[*]`;t.push(o);const s=Array.isArray(e.items)?e.items:[e.items];for(const i of s)t.push(...c(i,o))}if(e.oneOf){const o=Array.isArray(e.oneOf)?e.oneOf:[e.oneOf];for(const s of o)t.push(...c(s,r))}if(e.allOf){const o=Array.isArray(e.allOf)?e.allOf:[e.allOf];for(const s of o)t.push(...c(s,r))}return[...new Set(t)]},q={detailsStep:{name:"",description:"",ownerEntityRef:"",type:"default"},rulesStep:{pathResolver:"jsonpath",expressions:{expressionType:l.AllOf,expressions:void 0,conditions:[{factRef:"",path:"",operator:"",operatorPrefix:"",value:"",conditions:[]}]},warning:!1},filtersStep:{filter:v(),keyValueFilter:F(),excludeFilter:v(),excludeKeyValueFilter:F()},scheduleStep:{schedule:P()}},K={details:{name:{name:"Check name",helperText:`Max ${M} characters`,placeholder:"Name your check (e.g., 'Code Coverage\u2019)"},description:{name:"Check description",placeholder:"Describe your check clearly so others understand its purpose. e.g., 'Ensure code coverage meets the minimum threshold.'"},owner:{name:"Check owner",selectLabel:"Assign an owner"},type:{name:"Check Type",selectLabel:"Choose the type of check."}},rulesStep:{rules:{name:"Check rules",description:"Define the rules the check will verify."},messages:{name:"Pass/Fail messages (Optional)",description:"Add the messages for check success and failure.",passMessagePlaceholder:"Enter pass message...",failMessagePlaceholder:"Enter fail message...",passedTabName:"Passed Message",failedTabName:"Failed Message"},warnings:{name:"Enable warnings",description:"Enable to classify failures as warnings, so they don\u2019t impact certification.",label:"Warning"}},filter:{description:`Use the filters below to narrow the scope of the Check. Only Entities that match the selected include and exclude filters will be applicable to the Check. Exclude filters must be used with with an include filter.
2
- For example, selecting an include filter of 'Kind' as 'Component' and an exclude filter of 'Type' as 'Service' will select all entities with kind Component where type is NOT Service.`},schedule:{description:"Checks are automatically triggered whenever a dependent fact is updated. When collectors are scheduled, there is generally no need to schedule checks.",checkboxLabel:"Schedule check"}};export{K as CHECK_FIELDS,q as DEFAULT_FORM_VALUES,c as generateJsonPaths,V as mapCheckerToFormValues,u as mapExpressionToRule,k as mapInputScheduleToSchedule,y as mapRuleToExpression,S as mapScheduleToInputSchedule,N as mapToCheckerInput};
1
+ import{FrequencySchema as A}from"@spotify/backstage-plugin-soundcheck-common";import{isObject as C}from"lodash";import{v4 as R}from"uuid";import{mapInputFilterToFormFilters as x,mapCatalogFilterToFormKeyValueFilters as g,mapFiltersToCatalogFilter as m}from"../../Filter/utils.esm.js";import"../../Filter/FilterComponent.esm.js";import{emptyFilters as v,emptyKeyValueFilters as b}from"../../Filter/types.esm.js";import{TimeUnit as F}from"../../Frequency/types.esm.js";import{isTimeUnit as M}from"../../Frequency/util.esm.js";import"../../Frequency/FrequencyComponent.esm.js";import{ExpressionType as l}from"../types/ExpressionType.esm.js";import{defaultSchedule as O}from"../types/Schedule.esm.js";import"../types/Path.esm.js";import{CHECK_NAME_MAX_LENGTH as P}from"./validation.esm.js";const w=e=>{if(C(e)&&"frequency"in e){const r=A.safeParse(e.frequency);if(r.success){const t=r.data;if("cron"in t)return{enabled:!0,frequency:{type:"cron",unit:F.Hours,value:1,cron:t.cron}};const i=Object.keys(t);if(i.length){const s=i[0];if(M(s))return{enabled:!0,frequency:{type:"HumanDuration",unit:s,value:t[s]??1,cron:""}}}}}return{enabled:!1,frequency:{type:"HumanDuration",unit:F.Hours,value:1,cron:""}}},E=(e,r)=>{const{enabled:t,frequency:i}=e;if(t){const{cron:s,type:o,unit:a,value:u}=i;return o==="HumanDuration"?{frequency:{[a]:u},filter:m(r)}:{frequency:{cron:s}}}},y=e=>{if(Array.isArray(e))return e.map(r=>y(r));if(typeof e=="string"){if(e==="true")return!0;if(e==="false")return!1;const r=Number(e);if(!isNaN(r))return r}return e},p=e=>{if(!e)return{};if(e.expressionType){const r={[e.expressionType]:e.conditions?.map(t=>({factRef:t.factRef,path:t.path,operator:t.operatorPrefix?`${t.operatorPrefix}:${t.operator}`:t.operator,value:y(t.value)}))};return e.expressions&&e.expressions.forEach(t=>{r[e.expressionType]?.push(p(t))}),r}if(e.expressions)return e.expressions.map(p);if(e.conditions&&e.conditions.length===1){const r=e.conditions[0];return{factRef:r.factRef,path:r.path,operator:r.operatorPrefix?`${r.operatorPrefix}:${r.operator}`:r.operator,value:y(r.value)}}return{}},k=e=>{if(e?.match(/.:./)){const r=e.split(":");if(["all","any","none"].includes(r[0]))return{operator:r[1],operatorPrefix:r[0]}}return{}},f=(e,r=!0)=>{if(!e)return{conditions:[]};const t=Object.keys(e);let i=t.includes("all")||r&&!t.includes("any")?l.AllOf:l.AnyOf;if(t.includes("not")&&(i=l.Not),t.includes(i)||r){const a=e[i]||[e],u=[],d=[];return a.forEach(n=>{const h=Object.keys(n);if(h.includes("all")||h.includes("any")||h.includes("not"))d.push(f(n,!1));else{const{operator:T,operatorPrefix:S}=k(n.operator);u.push({factRef:n.factRef,path:n.path,operator:T??n.operator,value:n.value,operatorPrefix:S})}}),{expressions:d.length>0?d:void 0,conditions:u,expressionType:i}}const{operator:s,operatorPrefix:o}=k(e.operator);return{expressionType:l.AllOf,conditions:[{factRef:e.factRef,path:e.path,operator:s??e.operator,value:e.value,operatorPrefix:o}]}},V=e=>({detailsStep:{name:e.name??"",description:e.description??"",ownerEntityRef:e.ownerEntityRef??"",type:e.type??"default"},rulesStep:{pathResolver:e.pathResolver??"jsonpath",expressions:f(e.rule),passedMessage:e.passedMessage??void 0,failedMessage:e.failedMessage??void 0,warning:e.warning??!1},filtersStep:{filter:x(e.filter),keyValueFilter:g(e.filter),excludeFilter:x(e.exclude),excludeKeyValueFilter:g(e.exclude),applicabilityExpressions:f(e.applicable),notApplicableMessage:e.notApplicableMessage??void 0},scheduleStep:{schedule:w(e.schedule)}}),N=(e,r)=>{const{detailsStep:t,rulesStep:i,filtersStep:s,scheduleStep:o}=e;return{id:r?r.id:R(),ownerEntityRef:t.ownerEntityRef??void 0,name:t.name,description:t.description,pathResolver:i.pathResolver,passedMessage:i.passedMessage??void 0,failedMessage:i.failedMessage??void 0,rule:t.type==="manual"?void 0:p(i.expressions),warning:i.warning??!1,filter:s.filter||s.keyValueFilter?m(s.filter,s.keyValueFilter):void 0,exclude:s.excludeFilter||s.excludeKeyValueFilter?m(s.excludeFilter,s.excludeKeyValueFilter):void 0,applicable:t.type!=="manual"&&s.applicabilityExpressions?.conditions?.length?p(s.applicabilityExpressions):void 0,notApplicableMessage:s.notApplicableMessage&&t.type!=="manual"&&s.applicabilityExpressions?.conditions?.length?s.notApplicableMessage:void 0,schedule:E(o.schedule,s.filter),type:t.type}},c=(e,r="$")=>{const t=[];if(e.type==="object"&&e.properties){const i=e.properties;for(const s in i)if(i.hasOwnProperty(s)){const o=`${r}.${s}`;t.push(o);const a=i[s];t.push(...c(a,o))}}if(e.type==="array"&&e.items){const i=`${r}[*]`;t.push(i);const s=Array.isArray(e.items)?e.items:[e.items];for(const o of s)t.push(...c(o,i))}if(e.oneOf){const i=Array.isArray(e.oneOf)?e.oneOf:[e.oneOf];for(const s of i)t.push(...c(s,r))}if(e.allOf){const i=Array.isArray(e.allOf)?e.allOf:[e.allOf];for(const s of i)t.push(...c(s,r))}return[...new Set(t)]},q={detailsStep:{name:"",description:"",ownerEntityRef:"",type:"default"},rulesStep:{pathResolver:"jsonpath",expressions:{expressionType:l.AllOf,expressions:void 0,conditions:[{factRef:"",path:"",operator:"",operatorPrefix:"",value:"",conditions:[]}]},warning:!1},filtersStep:{filter:v(),keyValueFilter:b(),excludeFilter:v(),excludeKeyValueFilter:b()},scheduleStep:{schedule:O()}},K={details:{name:{name:"Check name",helperText:`Max ${P} characters`,placeholder:"Name your check (e.g., 'Code Coverage\u2019)"},description:{name:"Check description",placeholder:"Describe your check clearly so others understand its purpose. e.g., 'Ensure code coverage meets the minimum threshold.'"},owner:{name:"Check owner",selectLabel:"Assign an owner"},type:{name:"Check Type",selectLabel:"Choose the type of check."}},rulesStep:{rules:{name:"Check rules",description:"Define the rules the check will verify."},messages:{name:"Pass/Fail messages (Optional)",description:"Add the messages for check success and failure.",passMessagePlaceholder:"Enter pass message...",failMessagePlaceholder:"Enter fail message...",passedTabName:"Passed Message",failedTabName:"Failed Message"},warnings:{name:"Enable warnings",description:"Enable to classify failures as warnings, so they don\u2019t impact certification.",label:"Warning"}},filter:{description:`Use the filters below to narrow the scope of the Check. Only Entities that match the selected include and exclude filters will be applicable to the Check. Exclude filters must be used with with an include filter.
2
+ For example, selecting an include filter of 'Kind' as 'Component' and an exclude filter of 'Type' as 'Service' will select all entities with kind Component where type is NOT Service.`},schedule:{description:"Checks are automatically triggered whenever a dependent fact is updated. When collectors are scheduled, there is generally no need to schedule checks.",checkboxLabel:"Schedule check"}};export{K as CHECK_FIELDS,q as DEFAULT_FORM_VALUES,c as generateJsonPaths,V as mapCheckerToFormValues,p as mapExpressionToRule,w as mapInputScheduleToSchedule,f as mapRuleToExpression,E as mapScheduleToInputSchedule,N as mapToCheckerInput};
3
3
  //# sourceMappingURL=checkFormUtils.esm.js.map
@@ -1,2 +1,2 @@
1
- import{CheckMessagingSchema as p,DefaultCheckDetailsSchema as m,ManualCheckDetailsSchema as f,parseFactRef as u}from"@spotify/backstage-plugin-soundcheck-common";import{z as e}from"zod";import{FrequencySchema as d,formFiltersSchema as a}from"../../../utils/validation.esm.js";import{ExpressionType as r}from"../types/ExpressionType.esm.js";import"../../Frequency/types.esm.js";import"../../Frequency/util.esm.js";import"../../Frequency/FrequencyComponent.esm.js";import"../types/Path.esm.js";const i=t=>{try{return u(t),!0}catch{return"Invalid fact reference. [source]:[scope]/[name]."}},h=100,o=async t=>{if(!await i(t))throw new Error("Fact reference validation failed");return t},n=e.union([e.string().min(1,"Required"),e.number(),e.boolean()]),s=e.lazy(()=>e.strictObject({factRef:e.string().refine(o,{message:"Valid format: [source]:[scope]/[name]"}),path:e.string().min(1,"Required"),operator:e.string().min(1,"Required"),operatorPrefix:e.string().optional().nullable(),value:n.or(e.array(n).min(1,"Required")).or(e.strictObject({factRef:e.string().refine(o,{message:"Valid format: [source]:[scope]/[name]"}),path:e.string().min(1,"Required")})),conditions:e.array(s).optional()})),c=e.lazy(()=>e.strictObject({expressionType:e.enum([r.AllOf,r.AnyOf,r.Not]).optional(),expressions:e.array(c).optional(),conditions:e.array(s).optional()})),S=e.strictObject({expressions:c,pathResolver:e.string().optional()}).merge(p),y=e.strictObject({enabled:e.boolean(),frequency:d}),l=e.strictObject({schedule:y.optional()}),b=e.strictObject({detailsStep:m,rulesStep:S,filtersStep:a,scheduleStep:l}),g=e.strictObject({detailsStep:f,rulesStep:e.any(),filtersStep:a,scheduleStep:l});export{h as CHECK_NAME_MAX_LENGTH,b as defaultCheckFormSchema,g as manualCheckFormSchema,i as validateFactRef};
1
+ import{CheckMessagingSchema as p,DefaultCheckDetailsSchema as m,ManualCheckDetailsSchema as f,parseFactRef as u}from"@spotify/backstage-plugin-soundcheck-common";import{z as e}from"zod";import{baseFiltersSchema as d,refineFilters as h,FrequencySchema as b}from"../../../utils/validation.esm.js";import{ExpressionType as r}from"../types/ExpressionType.esm.js";import"../../Frequency/types.esm.js";import"../../Frequency/util.esm.js";import"../../Frequency/FrequencyComponent.esm.js";import"../types/Path.esm.js";const a=t=>{try{return u(t),!0}catch{return"Invalid fact reference. [source]:[scope]/[name]."}},y=100,n=async t=>{if(!await a(t))throw new Error("Fact reference validation failed");return t},o=e.union([e.string().min(1,"Required"),e.number(),e.boolean()]),s=e.lazy(()=>e.strictObject({factRef:e.string().refine(n,{message:"Valid format: [source]:[scope]/[name]"}),path:e.string().min(1,"Required"),operator:e.string().min(1,"Required"),operatorPrefix:e.string().optional().nullable(),value:o.or(e.array(o).min(1,"Required")).or(e.strictObject({factRef:e.string().refine(n,{message:"Valid format: [source]:[scope]/[name]"}),path:e.string().min(1,"Required")})),conditions:e.array(s).optional()})),i=e.lazy(()=>e.strictObject({expressionType:e.enum([r.AllOf,r.AnyOf,r.Not]).optional(),expressions:e.array(i).optional(),conditions:e.array(s).optional()})),g=e.strictObject({expressions:i,pathResolver:e.string().optional()}).merge(p),c=e.lazy(()=>e.strictObject({applicabilityExpressions:i.optional(),notApplicableMessage:e.string().optional()}).merge(d).refine(h,"Cannot have an exclude filter without an include filter.")),S=e.strictObject({enabled:e.boolean(),frequency:b}),l=e.strictObject({schedule:S.optional()}),O=e.strictObject({detailsStep:m,rulesStep:g,filtersStep:c,scheduleStep:l}),R=e.strictObject({detailsStep:f,rulesStep:e.any(),filtersStep:c,scheduleStep:l});export{y as CHECK_NAME_MAX_LENGTH,O as defaultCheckFormSchema,R as manualCheckFormSchema,a as validateFactRef};
2
2
  //# sourceMappingURL=validation.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as C,useTheme as g,Box as y,Typography as x}from"@material-ui/core";import r from"react";import{CircularProgressbar as v,buildStyles as f}from"react-circular-progressbar";import{checkPassRatesSummaryCsvFilename as u}from"../../utils/charts.esm.js";import"recharts";import{convertPassRateToDataPoints as d}from"../Charts/ChartTypes.esm.js";import"../Charts/LineChart/LineChart.esm.js";import{getChartFontColor as i,getChartColors as R}from"../Charts/chartUtils.esm.js";import{PassRateHistoryLineChart as k}from"../Charts/LineChart/PassRateHistoryLineChart.esm.js";import"luxon";import{useSummaryAggregationsContext as P}from"../TechHealthSummary/SummaryAggregationsProvider.esm.js";import"@backstage/catalog-model";import"../Charts/BarChart/BarChart.esm.js";import{OverviewChartCard as T}from"../OverviewChartCard/OverviewChartCard.esm.js";import"../OverviewChartCard/OverviewChartCardStyles.esm.js";import"react-circular-progressbar/dist/styles.css";import{overallCheckPassRateToCsv as S}from"../TechHealthTabs/TechHealthExportFunctions.esm.js";const D=C(e=>({chartHeader:{marginBottom:e.spacing(2)},overallSummaryBox:{display:"flex",flexDirection:"column",height:"100%",color:i(e),textAlign:"center",gap:e.spacing(2)},percentage:{fontSize:e.typography.pxToRem(65),lineHeight:`${e.typography.pxToRem(88)}px`,fontWeight:"bold"},summaryText:{fontSize:e.typography.pxToRem(14),lineHeight:`${e.typography.pxToRem(14)}px`}})),E=()=>{const e=g(),m=D(),{checkPassRateTrend:{data:t,isLoading:l,isError:p}}=P(),a=t?.overallCheckPassRates?.length??0,c=d(t?.overallCheckPassRates??[]),o=a?t?.overallCheckPassRates?.[a-1]:void 0;let s;o?s=`${o}%`:s="No Data";const n=r.createElement(y,{className:m.overallSummaryBox},r.createElement(v,{value:o??0,text:s,styles:f({textColor:i(e),pathColor:R(e)[0],trailColor:e.palette.divider,textSize:a?void 0:8})}),r.createElement(x,{className:m.summaryText},"Current check pass rate")),h=!t?.overallCheckPassRates||!a||l||p;return r.createElement(T,{title:"Check pass rate",subtitle:"Aggregate pass rate for checks",summaryCardContent:n,chartSectionContent:r.createElement(k,{chartData:c}),disableDataExport:h,csvFilename:u,csvData:S(t)})};export{E as CheckHistoryChartCard};
1
+ import{jsxs as C,jsx as o}from"react/jsx-runtime";import{makeStyles as g,useTheme as y,Box as x,Typography as v}from"@material-ui/core";import{CircularProgressbar as d,buildStyles as f}from"react-circular-progressbar";import{checkPassRatesSummaryCsvFilename as u}from"../../utils/charts.esm.js";import"recharts";import{convertPassRateToDataPoints as R}from"../Charts/ChartTypes.esm.js";import"../Charts/LineChart/LineChart.esm.js";import{getChartFontColor as m,getChartColors as k}from"../Charts/chartUtils.esm.js";import{PassRateHistoryLineChart as P}from"../Charts/LineChart/PassRateHistoryLineChart.esm.js";import"luxon";import{useSummaryAggregationsContext as T}from"../TechHealthSummary/SummaryAggregationsProvider.esm.js";import"@backstage/catalog-model";import"../Charts/BarChart/BarChart.esm.js";import{OverviewChartCard as S}from"../OverviewChartCard/OverviewChartCard.esm.js";import"../OverviewChartCard/OverviewChartCardStyles.esm.js";import"react-circular-progressbar/dist/styles.css";import{overallCheckPassRateToCsv as D}from"../TechHealthTabs/TechHealthExportFunctions.esm.js";const b=g(e=>({chartHeader:{marginBottom:e.spacing(2)},overallSummaryBox:{display:"flex",flexDirection:"column",height:"100%",color:m(e),textAlign:"center",gap:e.spacing(2)},percentage:{fontSize:e.typography.pxToRem(65),lineHeight:`${e.typography.pxToRem(88)}px`,fontWeight:"bold"},summaryText:{fontSize:e.typography.pxToRem(14),lineHeight:`${e.typography.pxToRem(14)}px`}})),H=()=>{const e=y(),i=b(),{checkPassRateTrend:{data:t,isLoading:l,isError:p}}=T(),r=t?.overallCheckPassRates?.length??0,c=R(t?.overallCheckPassRates??[]),a=r?t?.overallCheckPassRates?.[r-1]:void 0;let s;a?s=`${a}%`:s="No Data";const n=C(x,{className:i.overallSummaryBox,children:[o(d,{value:a??0,text:s,styles:f({textColor:m(e),pathColor:k(e)[0],trailColor:e.palette.divider,textSize:r?void 0:8})}),o(v,{className:i.summaryText,children:"Current check pass rate"})]}),h=!t?.overallCheckPassRates||!r||l||p;return o(S,{title:"Check pass rate",subtitle:"Aggregate pass rate for checks",summaryCardContent:n,chartSectionContent:o(P,{chartData:c}),disableDataExport:h,csvFilename:u,csvData:D(t)})};export{H as CheckHistoryChartCard};
2
2
  //# sourceMappingURL=CheckHistoryChartCard.esm.js.map
@@ -1,2 +1,2 @@
1
- import{withStyles as r}from"@material-ui/core";import i from"@material-ui/icons/Check";import c from"@material-ui/icons/Close";import p from"@material-ui/icons/HelpOutline";import n from"@material-ui/icons/NotInterested";import l from"@material-ui/icons/RemoveCircleOutline";import s from"@material-ui/icons/ReportProblemOutlined";import o from"react";import{ResultState as a}from"../../graphql/generated/index.esm.js";import{resultToText as d}from"../../text.esm.js";const f=r(e=>({root:{color:e.palette.success.main}}))(i),E=r(e=>({root:{color:e.palette.error.main}}))(c),u=r(e=>({root:{color:e.palette.warning.main}}))(s),x=r(e=>({root:{color:e.palette.text.primary}}))(p),b=r(e=>({root:{color:e.palette.text.disabled}}))(l),N=r(e=>({root:{color:e.palette.text.disabled}}))(n),g=r(e=>({root:{color:e.palette.error.main}}))(l),h=({result:e,className:m})=>{const t={className:m,"aria-label":d(e),"aria-hidden":!1};return e===a.Passed?o.createElement(f,{...t}):e===a.NotReported?o.createElement(x,{...t}):e===a.Failed?o.createElement(E,{...t}):e===a.Warning?o.createElement(u,{...t}):e===a.NotApplicable?o.createElement(b,{...t}):e===a.Exempt?o.createElement(N,{...t}):e===a.Error?o.createElement(g,{...t}):null};export{h as CheckIcon};
1
+ import{jsx as t}from"react/jsx-runtime";import{withStyles as l,Tooltip as c}from"@material-ui/core";import n from"@material-ui/icons/Check";import s from"@material-ui/icons/Close";import d from"@material-ui/icons/HelpOutline";import f from"@material-ui/icons/NotInterested";import m from"@material-ui/icons/RemoveCircleOutline";import x from"@material-ui/icons/ReportProblemOutlined";import{ResultState as p}from"../../graphql/generated/index.esm.js";import{resultToText as r}from"../../text.esm.js";const h=l(o=>({root:{color:o.palette.success.main}}))(n),u=l(o=>({root:{color:o.palette.error.main}}))(s),b=l(o=>({root:{color:o.palette.warning.main}}))(x),N=l(o=>({root:{color:o.palette.text.primary}}))(d),T=l(o=>({root:{color:o.palette.text.disabled}}))(m),g=l(o=>({root:{color:o.palette.text.disabled}}))(f),I=l(o=>({root:{color:o.palette.error.main}}))(m),i=({icon:o,tooltip:a})=>t(c,{title:a,children:o}),R=({result:o,className:a})=>{const e={className:a,"aria-label":r(o),"aria-hidden":!1};return o===p.Passed?t(i,{icon:t(h,{...e}),tooltip:r(o)}):o===p.NotReported?t(i,{icon:t(N,{...e}),tooltip:r(o)}):o===p.Failed?t(i,{icon:t(u,{...e}),tooltip:r(o)}):o===p.Warning?t(i,{icon:t(b,{...e}),tooltip:r(o)}):o===p.NotApplicable?t(i,{icon:t(T,{...e}),tooltip:r(o)}):o===p.Exempt?t(i,{icon:t(g,{...e}),tooltip:r(o)}):o===p.Error?t(i,{icon:t(I,{...e}),tooltip:r(o)}):null};export{R as CheckIcon,i as IconWithTooltip};
2
2
  //# sourceMappingURL=CheckIcon.esm.js.map
@@ -1,2 +1,2 @@
1
- import{usePermission as p}from"@backstage/plugin-permission-react";import{soundcheckCheckUpdatePermission as c}from"@spotify/backstage-plugin-soundcheck-common";import e from"react";import{useParams as d}from"react-router-dom";import"../../contexts/TrackFormContext.esm.js";import{CheckFormProvider as l}from"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"../../contexts/UserProvider.esm.js";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import{useGetChecks as f}from"../../hooks/checks/useGetChecks.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{LoadingIndicator as h}from"../LoadingIndicator/LoadingIndicator.esm.js";import{PageWarningMessage as u}from"../PageWarningMessage/PageWarningMessage.esm.js";import{CheckEditView as g}from"./CheckEditView.esm.js";const k=()=>{const{checkId:o}=d(),{data:m,isLoading:n}=f({ids:[o??""],first:1}),r=m?.edges?.[0]?.node,{loading:s,allowed:a}=p({permission:c,resourceRef:o}),t=s||n,i=a&&r?.isEditable;return e.createElement(e.Fragment,null,e.createElement(u,{entityName:"check",entityId:o,showCannotEdit:!t&&!i,showNotFound:!t&&!r}),t&&e.createElement(h,null),e.createElement(l,null,!t&&!!r&&i&&e.createElement(g,{check:r})))};export{k as CheckEditPage};
1
+ import{jsxs as n,Fragment as c,jsx as i}from"react/jsx-runtime";import{usePermission as a}from"@backstage/plugin-permission-react";import{soundcheckCheckUpdatePermission as d}from"@spotify/backstage-plugin-soundcheck-common";import{useParams as h}from"react-router-dom";import"../../contexts/TrackFormContext.esm.js";import{CheckFormProvider as f}from"../../contexts/CheckFormContext.esm.js";import"../../contexts/CampaignFormContext.esm.js";import"react";import"../../contexts/UserProvider.esm.js";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import{useCheck as k}from"../../hooks/checks/useCheck.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{LoadingIndicator as g}from"../LoadingIndicator/LoadingIndicator.esm.js";import{PageWarningMessage as u}from"../PageWarningMessage/PageWarningMessage.esm.js";import{CheckEditView as l}from"./CheckEditView.esm.js";const C=()=>{const{checkId:t}=h(),{data:o,isLoading:e}=k(t),{loading:p,allowed:s}=a({permission:d,resourceRef:t}),r=p||e,m=s&&o?.isEditable;return n(c,{children:[i(u,{entityName:"check",entityId:t,showCannotEdit:!r&&!m,showNotFound:!r&&!o}),r&&i(g,{}),i(f,{children:!r&&!!o&&m&&i(l,{check:o})})]})};export{C as CheckEditPage};
2
2
  //# sourceMappingURL=CheckEditPage.esm.js.map