@spotify/backstage-plugin-soundcheck 0.12.9 → 0.12.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (178) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/alpha/package.json +2 -2
  3. package/dist/api.esm.js +1 -1
  4. package/dist/components/CacheConfig/CacheConfigComponent.esm.js +1 -1
  5. package/dist/components/CacheConfig/utils.esm.js +1 -1
  6. package/dist/components/CampaignsTab/CampaignDetailsPage/CampaignChecks.esm.js +1 -1
  7. package/dist/components/CampaignsTab/CampaignDetailsPage/CampaignDetailsPage.esm.js +1 -1
  8. package/dist/components/CampaignsTab/CampaignDetailsPage/CampaignResultsTable.esm.js +1 -1
  9. package/dist/components/CampaignsTab/CampaignListPage/CampaignListPage.esm.js +1 -1
  10. package/dist/components/CampaignsTab/CampaignListPage/CampaignSummaryCard.esm.js +1 -1
  11. package/dist/components/CampaignsTab/CampaignListPage/useArchiveConfirmationModal.esm.js +1 -1
  12. package/dist/components/CampaignsTab/MutateCampaignsViews/CampaignForm.esm.js +1 -1
  13. package/dist/components/CampaignsTab/MutateCampaignsViews/EditCampaignView.esm.js +1 -1
  14. package/dist/components/CampaignsTab/MutateCampaignsViews/Steps/CampaignDetailsStep/CampaignDescriptionField.esm.js +1 -1
  15. package/dist/components/CampaignsTab/MutateCampaignsViews/Steps/CampaignDetailsStep/CampaignNameField.esm.js +1 -1
  16. package/dist/components/CampaignsTab/MutateCampaignsViews/Steps/CampaignDetailsStep/CampaignOwnerField.esm.js +1 -1
  17. package/dist/components/CampaignsTab/MutateCampaignsViews/Steps/CampaignDetailsStep/CampaignScheduleField/CampaignScheduleField.esm.js +1 -1
  18. package/dist/components/CampaignsTab/MutateCampaignsViews/Steps/CampaignDetailsStep/CampaignSupportChannelField.esm.js +1 -1
  19. package/dist/components/CampaignsTab/MutateCampaignsViews/Steps/CampaignMilestonesStep.esm.js +1 -1
  20. package/dist/components/CampaignsTab/MutateCampaignsViews/Steps/CampaignTrackStep.esm.js +1 -1
  21. package/dist/components/CampaignsTab/MutateCampaignsViews/hooks/utils.esm.js +1 -1
  22. package/dist/components/CertificationAccordion/CertificationAccordion.esm.js +1 -1
  23. package/dist/components/CertificationSidebar/CertificationLevel.esm.js +1 -1
  24. package/dist/components/CertificationSidebar/CertificationSidebar.esm.js +1 -1
  25. package/dist/components/CertificationSidebar/Check.esm.js +1 -1
  26. package/dist/components/CertificationSidebar/CheckResultSummaryList.esm.js +1 -1
  27. package/dist/components/CertificationsPage/CertificationTab.esm.js +1 -1
  28. package/dist/components/CertificationsPage/CertificationTabs.esm.js +1 -1
  29. package/dist/components/CertificationsPage/CertificationsPage.esm.js +1 -1
  30. package/dist/components/CertificationsPage/Playlist/PlaylistProgress.esm.js +1 -1
  31. package/dist/components/Charts/BarChart/GroupPassRateHistoryBarChart.esm.js +1 -1
  32. package/dist/components/Charts/BarChart/TrackSummaryBarChart.esm.js +1 -1
  33. package/dist/components/Charts/ChartWrapper/ChartWrapper.esm.js +1 -1
  34. package/dist/components/Charts/LineChart/EntityPassRateHistoryLineChart.esm.js +1 -1
  35. package/dist/components/Charts/LineChart/TrackPassRateHistoryLineChart.esm.js +1 -1
  36. package/dist/components/CheckCard/CheckCard.esm.js +1 -1
  37. package/dist/components/CheckDetails/ResultStateBox.esm.js +1 -1
  38. package/dist/components/CheckHistoryChartCard/CheckHistoryChartCard.esm.js +1 -1
  39. package/dist/components/CheckIcon/CheckIcon.esm.js +1 -1
  40. package/dist/components/CheckPage/CheckEntitiesTable/CheckEntitiesTable.esm.js +2 -0
  41. package/dist/components/CheckPage/CheckEntitiesTable/columns.esm.js +2 -0
  42. package/dist/components/CheckPage/CheckEntitiesTable/utils.esm.js +2 -0
  43. package/dist/components/CheckPage/CheckInsightsPage.esm.js +2 -0
  44. package/dist/components/CheckPage/CheckPage.esm.js +1 -1
  45. package/dist/components/CheckPage/CheckStatusBar.esm.js +2 -0
  46. package/dist/components/CheckPage/CheckStatusHistoryChart.esm.js +2 -0
  47. package/dist/components/CheckPage/CheckStatusTable.esm.js +2 -0
  48. package/dist/components/CheckPage/FilterBar/FilterBar.esm.js +2 -0
  49. package/dist/components/CheckPage/StatusRow.esm.js +2 -0
  50. package/dist/components/CheckPage/utils.esm.js +2 -0
  51. package/dist/components/ChecksErrors/ChecksErrors.esm.js +1 -1
  52. package/dist/components/ChecksPage/CheckListPage/CheckListPage.esm.js +1 -1
  53. package/dist/components/ChecksPage/CheckListPage/CheckMetadata.esm.js +1 -1
  54. package/dist/components/ChecksPage/CheckListPage/CheckSummaryCard.esm.js +1 -1
  55. package/dist/components/ChecksPage/MutateCheckViews/CheckForm/Steps/CheckDetailsStep.esm.js +1 -1
  56. package/dist/components/ChecksPage/MutateCheckViews/FormFields/CheckNameInput/CheckNameInput.esm.js +1 -1
  57. package/dist/components/ChecksPage/MutateCheckViews/FormFields/RuleInput/Conditions/ControlledAutocomplete.esm.js +1 -1
  58. package/dist/components/ChecksPage/MutateCheckViews/FormFields/RuleInput/Conditions/RuleConditionInput.esm.js +1 -1
  59. package/dist/components/ChecksPage/MutateCheckViews/FormFields/RuleInput/Conditions/useRuleOptions.esm.js +1 -1
  60. package/dist/components/ChecksPage/MutateCheckViews/FormFields/RuleInput/RuleInputBox.esm.js +1 -1
  61. package/dist/components/ChecksPage/MutateCheckViews/FormFields/RuleInput/useRuleInputHandlers.esm.js +1 -1
  62. package/dist/components/ChecksPage/MutateCheckViews/FormFields/TeamDetailsInput/TeamDetailsInput.esm.js +1 -1
  63. package/dist/components/ChecksPage/MutateCheckViews/utils/checkFormUtils.esm.js +1 -1
  64. package/dist/components/CollectorPage/CollectorPage.esm.js +1 -1
  65. package/dist/components/CollectorPage/Configurators/Configurator.esm.js +1 -1
  66. package/dist/components/CollectorPage/Configurators/Github/FactCollectionConfig.esm.js +1 -1
  67. package/dist/components/CollectorPage/Configurators/Github/utils.esm.js +1 -1
  68. package/dist/components/CollectorsPage/CollectorListPage/CollectorListPage.esm.js +1 -1
  69. package/dist/components/CollectorsPage/CollectorListPage/CollectorLogo.esm.js +1 -1
  70. package/dist/components/CollectorsPage/CollectorListPage/CollectorSummaryCard.esm.js +1 -1
  71. package/dist/components/DraggableChip/DraggableChip.esm.js +1 -1
  72. package/dist/components/DroppableInput/DroppableInput.esm.js +1 -1
  73. package/dist/components/EditTrackPage/EditTrackPage.esm.js +1 -1
  74. package/dist/components/EmptyState/EmptyState.esm.js +1 -1
  75. package/dist/components/EntityContent/EntityContent.esm.js +1 -1
  76. package/dist/components/EntityPassRateCard/EntityPassRateCard.esm.js +1 -1
  77. package/dist/components/EntitySoundcheckCard/Card.esm.js +1 -1
  78. package/dist/components/Filter/EntityAutocompletePicker.esm.js +1 -1
  79. package/dist/components/Filter/FilterComponent.esm.js +1 -1
  80. package/dist/components/Filter/FilterPreviewTable/FilterPreviewTable.esm.js +1 -1
  81. package/dist/components/Filter/utils.esm.js +1 -1
  82. package/dist/components/FormControlledSelect/FormControlledSelect.esm.js +1 -1
  83. package/dist/components/FormFilterSection/FormFilterSection.esm.js +1 -1
  84. package/dist/components/Frequency/FrequencyComponent.esm.js +1 -1
  85. package/dist/components/Frequency/util.esm.js +1 -1
  86. package/dist/components/GroupPassRateCard/GroupPassRateCard.esm.js +1 -1
  87. package/dist/components/GroupSelector/GroupSelector.esm.js +1 -1
  88. package/dist/components/LevelCard/LevelCard.esm.js +1 -1
  89. package/dist/components/LevelCard/LevelTooltip.esm.js +1 -1
  90. package/dist/components/LevelUpParty/LevelUpParty.esm.js +1 -1
  91. package/dist/components/LoadingIndicator/LoadingIndicator.esm.js +1 -1
  92. package/dist/components/MultiSelectFilter/MultiSelectFilter.esm.js +1 -1
  93. package/dist/components/OverviewPage/CampaignRow/CampaignRow.esm.js +1 -1
  94. package/dist/components/OverviewPage/CampaignRow/utils.esm.js +1 -1
  95. package/dist/components/OverviewPage/OverviewPageContent.esm.js +1 -1
  96. package/dist/components/OverviewPage/OverviewTabs.esm.js +1 -1
  97. package/dist/components/OverviewPage/TableContent/TableContent.esm.js +1 -1
  98. package/dist/components/OverviewPage/TableContent/VirtualTableContent.esm.js +1 -1
  99. package/dist/components/Pagination/CursorPagination.esm.js +1 -1
  100. package/dist/components/Pagination/Pagination.esm.js +1 -1
  101. package/dist/components/PassRateGrid/PassRateGrid.esm.js +1 -1
  102. package/dist/components/PassRateGrid/PassRateMetadata.esm.js +1 -1
  103. package/dist/components/ResultsTable/CheckCell/CheckCell.esm.js +1 -1
  104. package/dist/components/ResultsTable/HighestLevelBadge.esm.js +1 -1
  105. package/dist/components/ResultsTable/ProgramCheckIndicator.esm.js +1 -1
  106. package/dist/components/ResultsTable/ProgramCheckRow.esm.js +1 -1
  107. package/dist/components/ResultsTable/ProgramTitleRow.esm.js +1 -1
  108. package/dist/components/ResultsTable/ResultsTableFooter.esm.js +1 -1
  109. package/dist/components/ResultsTable/skeletons/ResultsTableSkeleton.esm.js +1 -1
  110. package/dist/components/ResultsTable/virtualized/Row.esm.js +1 -1
  111. package/dist/components/ResultsTable/virtualized/VirtualizedResultsTable.esm.js +1 -1
  112. package/dist/components/Router.esm.js +1 -1
  113. package/dist/components/RoutingPage/RoutingPage.esm.js +1 -1
  114. package/dist/components/SearchBar/SearchBar.esm.js +1 -1
  115. package/dist/components/SearchFilters/SearchFilters.esm.js +1 -1
  116. package/dist/components/SummaryCard/SummaryCard.esm.js +1 -1
  117. package/dist/components/TechHealth/Filters/FacetFilter.esm.js +1 -1
  118. package/dist/components/TechHealth/Filters/FilterProvider.esm.js +1 -1
  119. package/dist/components/TechHealth/Filters/Filters.esm.js +1 -1
  120. package/dist/components/TechHealth/Filters/FiltersSection.esm.js +1 -1
  121. package/dist/components/TechHealth/Filters/useFacetOptions.esm.js +1 -1
  122. package/dist/components/TechHealth/Filters/utils.esm.js +1 -1
  123. package/dist/components/TechHealth/TechHealth.esm.js +1 -1
  124. package/dist/components/TechHealthTabs/CampaignResultsTab/CampaignResultsTab.esm.js +1 -1
  125. package/dist/components/TechHealthTabs/CheckResultsTab/CheckResultsTab.esm.js +1 -1
  126. package/dist/components/TechHealthTabs/CheckResultsTab/CheckTrendColumn.esm.js +1 -1
  127. package/dist/components/TechHealthTabs/EntityResultsTab/EntityResultsTab.esm.js +1 -1
  128. package/dist/components/TechHealthTabs/EntityResultsTab/EntityTrendColumn.esm.js +1 -1
  129. package/dist/components/TechHealthTabs/GroupResultsTab/GroupResultsTab.esm.js +1 -1
  130. package/dist/components/TechHealthTabs/GroupResultsTab/GroupTrendColumn.esm.js +1 -1
  131. package/dist/components/TechHealthTabs/NameColumn.esm.js +1 -1
  132. package/dist/components/TechHealthTabs/OwnerColumn.esm.js +1 -1
  133. package/dist/components/TechHealthTabs/PassRateTabHeader.esm.js +1 -1
  134. package/dist/components/TechHealthTabs/TechHealthExportFunctions.esm.js +1 -1
  135. package/dist/components/TechHealthTabs/TrackResultsTab/TrackLevelTrendColumn.esm.js +1 -1
  136. package/dist/components/TechHealthTabs/TrackResultsTab/TrackResultsTab.esm.js +1 -1
  137. package/dist/components/TechHealthTabs/techHealthTabUtils.esm.js +1 -1
  138. package/dist/components/TrackForm/Steps/LevelsStep/ChecksSection/ChecksSection.esm.js +1 -1
  139. package/dist/components/TrackForm/Steps/LevelsStep/LevelsSection/LevelChipsSection.esm.js +1 -1
  140. package/dist/components/TrackForm/Steps/LevelsStep/LevelsSection/LevelsSection.esm.js +1 -1
  141. package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackDescriptionInput/TrackDescriptionInput.esm.js +1 -1
  142. package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackDetailsStep.esm.js +1 -1
  143. package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackDocumentationUrlInput/TrackDocumentationUrlInput.esm.js +1 -1
  144. package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackNameInput/TrackNameInput.esm.js +1 -1
  145. package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackOwnerSelect/TrackOwnerSelect.esm.js +1 -1
  146. package/dist/components/TrackForm/utils/useTrackForm.esm.js +1 -1
  147. package/dist/components/TrackHistoryChartCard/TrackHistoryChartCard.esm.js +1 -1
  148. package/dist/components/TrackPage/FilterBar/FilterBar.esm.js +1 -1
  149. package/dist/components/TrackPage/TrackEntitiesTable/TrackEntitiesTable.esm.js +1 -1
  150. package/dist/components/TrackPage/TrackEntitiesTable/TrackStatusChip.esm.js +1 -1
  151. package/dist/components/TrackPage/TrackEntitiesTable/columns.esm.js +1 -1
  152. package/dist/components/TrackPage/TrackEntitiesTable/utils.esm.js +1 -1
  153. package/dist/components/TrackPage/TrackHistoryChart.esm.js +1 -1
  154. package/dist/components/TrackPage/TrackLevelsChart.esm.js +1 -1
  155. package/dist/components/TrackPage/TrackPage.esm.js +1 -1
  156. package/dist/components/TracksPage/TrackListPage/TrackListPage.esm.js +1 -1
  157. package/dist/components/TracksPage/TrackListPage/TrackMetadata.esm.js +1 -1
  158. package/dist/graphql/generated/index.esm.js +47 -27
  159. package/dist/hooks/aggregations/useAggregatedTrackPassRateTrend.esm.js +1 -1
  160. package/dist/hooks/aggregations/useCheckStatus.esm.js +1 -1
  161. package/dist/hooks/campaigns/useGetCampaigns.esm.js +1 -1
  162. package/dist/hooks/catalog/useGetEntityFacets.esm.js +1 -1
  163. package/dist/hooks/certifications/useProgramOverviewForOwner.esm.js +1 -1
  164. package/dist/hooks/checks/useCheckDetails.esm.js +1 -1
  165. package/dist/hooks/checks/useExecuteCheck.esm.js +2 -0
  166. package/dist/hooks/entities/useCheckEntities.esm.js +2 -0
  167. package/dist/hooks/entities/useEntityRefsForUser.esm.js +1 -1
  168. package/dist/hooks/facets/useFacetFilters.esm.js +1 -1
  169. package/dist/hooks/graphqlKeys.esm.js +1 -1
  170. package/dist/hooks/groups/useAllGroups.esm.js +1 -1
  171. package/dist/hooks/groups/useUsersGroupClaims.esm.js +1 -1
  172. package/dist/hooks/tracks/useGetAllTracks.esm.js +1 -1
  173. package/dist/hooks/tracks/useGetChecksMap.esm.js +1 -1
  174. package/dist/images/k8s_blue.svg +108 -0
  175. package/dist/images/k8s_white.svg +108 -0
  176. package/dist/routes.esm.js +1 -1
  177. package/dist/text.esm.js +1 -1
  178. package/package.json +26 -19
package/CHANGELOG.md CHANGED
@@ -1,5 +1,27 @@
1
1
  # @spotify/backstage-plugin-soundcheck
2
2
 
3
+ ## 0.12.11
4
+
5
+ ### Patch Changes
6
+
7
+ - Fix overview page tabs extending beyond screen length.
8
+
9
+ ## 0.12.10
10
+
11
+ ### Patch Changes
12
+
13
+ - Updated dependency `uuid` to `^10.0.0`.
14
+ - Fixes an issue where the horizontal scroll bar would be hidden if there were many entities on the overview page.
15
+ - Fixes the progress indicators on the Soundcheck overview page to show total progress instead of page progress.
16
+ - Added possibility to execute checks from Soundcheck for Entity page.
17
+ - Soundcheck now records results of checks that failed to execute and will display the error on entities' Soundcheck pages. To prevent flaky checks, checks that fail to execute due to errors will NOT update the check result in the database except in the case that no result existed before.
18
+ - Bump react-hook-form requirement from ^7.19.5 to ^7.51.5
19
+ - Added additional plugin metadata to `package.json`.
20
+ - Upgraded Backstage to v1.28.2
21
+ - Updated dependencies
22
+ - @spotify/backstage-plugin-core@0.7.2
23
+ - @spotify/backstage-plugin-soundcheck-common@0.13.3
24
+
3
25
  ## 0.12.9
4
26
 
5
27
  ### Patch Changes
@@ -1,6 +1,6 @@
1
1
  {
2
- "name": "@spotify/backstage-plugin-soundcheck",
3
- "version": "0.12.9",
2
+ "name": "@spotify/backstage-plugin-soundcheck__alpha",
3
+ "version": "0.12.11",
4
4
  "main": "../dist/alpha.esm.js",
5
5
  "module": "../dist/alpha.esm.js",
6
6
  "types": "../dist/alpha.d.ts"
package/dist/api.esm.js CHANGED
@@ -1,2 +1,2 @@
1
- import{createApiRef as d}from"@backstage/core-plugin-api";import{GraphQLClient as m}from"graphql-request";import{getSdk as f}from"./graphql/generated/index.esm.js";var w=(n,t,e)=>{if(!t.has(n))throw TypeError("Cannot "+e)},a=(n,t,e)=>(w(n,t,"read from private field"),e?e.call(n):t.get(n)),l=(n,t,e)=>{if(t.has(n))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(n):t.set(n,e)},g=(n,t,e,i)=>(w(n,t,"write to private field"),i?i.call(n,e):t.set(n,e),e),o,u,s,y,r;const C=d({id:"plugin.soundcheck"}),k=n=>"response"in n&&"errors"in n.response,v=n=>"response"in n&&"message"in n.response;class R{constructor(t){l(this,o,void 0),l(this,u,void 0),l(this,s,void 0),l(this,y,i=>{var c,h,p;return k(i)?(p=(h=(c=i.response)==null?void 0:c.errors)==null?void 0:h[0].message)!=null?p:`${i}`:v(i)?i.response.message:`${i}`}),l(this,r,async i=>{try{return await i()}catch(c){throw new Error(`Error from Soundcheck backend: ${a(this,y).call(this,c)}`)}}),g(this,o,t.fetchApi),g(this,u,t.discoveryApi);const e=new m("/graphql",{fetch:async(i,c)=>{const h=`${await a(this,u).getBaseUrl("soundcheck")}${i}`;return a(this,o).fetch(h,c)}});g(this,s,f(e))}async getAllCertifications(t){return a(this,r).call(this,async()=>{const{certifications:e}=await a(this,s).getAllCertifications({entityRef:t});return e})}async getCertificationDetails(t){return a(this,r).call(this,async()=>{const{certifications:e}=await a(this,s).getCertificationDetails({entityRef:t});return e})}async getCertificationDetailsForTrack(t,e){return a(this,r).call(this,async()=>{const{programCertification:i}=await a(this,s).getCertificationDetailsForTrack({entityRef:t,programId:e});return i})}async getCheckResultDetails(t,e,i){return a(this,r).call(this,async()=>{const{checkResult:c}=await a(this,s).getCheckResultDetails({entityRef:t,programId:e,checkId:i});return c})}async getFacetsForOwner(t){return a(this,r).call(this,async()=>{const{facetsForOwner:e}=await a(this,s).getFacetsForOwner({ownerEntityRef:t});return e})}async getProgramOverviewForOwner(t,e,i,c){return a(this,r).call(this,async()=>{const{programOverviewForOwner:h}=await a(this,s).getProgramOverviewForOwner({ownerEntityRef:t,facet:e,first:i,after:c});return h})}async getTracks(t){return a(this,r).call(this,async()=>{const{programs:e}=await a(this,s).getTracks({filter:t});return e})}async createProgram(t){return a(this,r).call(this,async()=>{const{program:e}=await a(this,s).createProgram({input:t});return e})}async updateProgram(t){return a(this,r).call(this,async()=>{const{program:e}=await a(this,s).updateProgram({input:t});return e})}async deleteProgram(t){return a(this,r).call(this,async()=>{const{programDeleted:e}=await a(this,s).deleteProgram({programId:t});return e})}async getPlaylists(t){return a(this,r).call(this,async()=>{const{playlists:e}=await a(this,s).getPlaylists({entityRef:t});return e})}async getOperators(){return a(this,r).call(this,async()=>{const{operators:t}=await a(this,s).getOperators();return t})}async getChecks(t){return a(this,r).call(this,async()=>{const{checkers:e}=await a(this,s).getCheckers({filter:t});return e})}async createCheck(t){return a(this,r).call(this,async()=>{const{check:e}=await a(this,s).createCheck({input:t});return e})}async updateCheck(t){return a(this,r).call(this,async()=>{const{check:e}=await a(this,s).updateCheck({input:t});return e})}async deleteCheck(t){return a(this,r).call(this,async()=>await a(this,s).deleteChecker({checkerId:t}))}async getCollectors(t){return a(this,r).call(this,async()=>{const{collectors:e}=await a(this,s).getCollectors({ids:t});return e})}async getFactSchema(t,e){if(!(!t||!e))return a(this,r).call(this,async()=>{const{factSchema:i}=await a(this,s).getFactSchemas({collectorId:t,factName:e});return i})}async updateCollectorConfig(t){return a(this,r).call(this,async()=>{const{collector:e}=await a(this,s).updateCollectorConfig({input:t});return e})}async getOverallCheckPassRates(t){return a(this,r).call(this,async()=>await a(this,s).getOverallCheckPassRates({filter:t}))}async getIndividualCheckPassRates(t){return a(this,r).call(this,async()=>await a(this,s).getIndividualCheckPassRates({filter:t}))}async getOverallTrackPassRate(t){return a(this,r).call(this,async()=>await a(this,s).getOverallTrackPassRate({filter:t}))}async getIndividualTrackPassRate(t){return a(this,r).call(this,async()=>await a(this,s).getIndividualTrackPassRate({filter:t}))}async getOverallEntityPassRates(t){return a(this,r).call(this,async()=>await a(this,s).getOverallEntityPassRates({filter:t}))}async getIndividualEntityPassRates(t){return a(this,r).call(this,async()=>await a(this,s).getIndividualEntityPassRates({input:t}))}async getOverallGroupPassRates(t){return a(this,r).call(this,async()=>await a(this,s).getOverallGroupPassRates({input:t}))}async getIndividualGroupPassRates(t){return a(this,r).call(this,async()=>await a(this,s).getIndividualGroupPassRates({input:t}))}async getEntityRefsForTechHealthFilter(t){return a(this,r).call(this,async()=>await a(this,s).getEntityRefsForTechHealthFilter({ownerEntityRef:t}))}async getTrackEntities(t){return a(this,r).call(this,async()=>await a(this,s).getTrackEntities({input:t}))}async getCampaigns(t){return a(this,r).call(this,async()=>{const{campaigns:e}=await a(this,s).getCampaigns({filter:t});return e})}async createCampaign(t){return a(this,r).call(this,async()=>{const{campaign:e}=await a(this,s).createCampaign({input:t});return e})}async updateCampaign(t){return a(this,r).call(this,async()=>{const{campaign:e}=await a(this,s).updateCampaign({input:t});return e})}async deleteCampaign(t){return a(this,r).call(this,async()=>{const{campaignDeleted:e}=await a(this,s).deleteCampaign({campaignId:t});return e})}async archiveCampaign(t){return a(this,r).call(this,async()=>{const{campaignArchived:e}=await a(this,s).archiveCampaign({campaignId:t});return e})}async getCampaignProgress(t,e,i){return a(this,r).call(this,async()=>{const{campaignProgress:c}=await a(this,s).getCampaignProgress({id:t,first:e,after:i});return c})}async getCampaignOwners(){return a(this,r).call(this,async()=>{const{campaignOwners:t}=await a(this,s).getCampaignOwners();return t})}async getCheckOwners(){return a(this,r).call(this,async()=>{const{checkOwners:t}=await a(this,s).getCheckOwners();return t})}async getTrackOwners(){return a(this,r).call(this,async()=>{const{trackOwners:t}=await a(this,s).getTrackOwners();return t})}async getCertificationStatus(t){return a(this,r).call(this,async()=>a(this,s).getCertificationStatus({input:t}))}async getCertificationStatusHistory(t){return a(this,r).call(this,async()=>a(this,s).getCertificationStatusHistory({input:t}))}async getCheckStatus(t){return a(this,r).call(this,async()=>a(this,s).getCheckStatus({input:t}))}async getCheckStatusHistory(t){return a(this,r).call(this,async()=>a(this,s).getCheckStatusHistory({input:t}))}async getCheckEntities(t){return a(this,r).call(this,async()=>await a(this,s).getCheckEntities({input:t}))}}o=new WeakMap,u=new WeakMap,s=new WeakMap,y=new WeakMap,r=new WeakMap;export{R as SoundcheckApi,C as soundcheckApiRef};
1
+ import{createApiRef as i}from"@backstage/core-plugin-api";import{GraphQLClient as c}from"graphql-request";import{getSdk as h}from"./graphql/generated/index.esm.js";const o=i({id:"plugin.soundcheck"}),u=r=>"response"in r&&"errors"in r.response,g=r=>"response"in r&&"message"in r.response;class y{#a;#s;#t;constructor(t){this.#a=t.fetchApi,this.#s=t.discoveryApi;const e=new c("/graphql",{fetch:async(a,s)=>{const n=`${await this.#s.getBaseUrl("soundcheck")}${a}`;return this.#a.fetch(n,s)}});this.#t=h(e)}#r=t=>u(t)?t.response?.errors?.[0].message??`${t}`:g(t)?t.response.message:`${t}`;#e=async t=>{try{return await t()}catch(e){throw new Error(`Error from Soundcheck backend: ${this.#r(e)}`)}};async getAllCertifications(t){return this.#e(async()=>{const{certifications:e}=await this.#t.getAllCertifications({entityRef:t});return e})}async getCertificationDetails(t){return this.#e(async()=>{const{certifications:e}=await this.#t.getCertificationDetails({entityRef:t});return e})}async getCertificationDetailsForTrack(t,e){return this.#e(async()=>{const{programCertification:a}=await this.#t.getCertificationDetailsForTrack({entityRef:t,programId:e});return a})}async getCheckResultDetails(t,e,a){return this.#e(async()=>{const{checkResult:s}=await this.#t.getCheckResultDetails({entityRef:t,programId:e,checkId:a});return s})}async getFacetsForOwner(t){return this.#e(async()=>{const{facetsForOwner:e}=await this.#t.getFacetsForOwner({ownerEntityRef:t});return e})}async getProgramOverviewForOwner(t,e,a,s){return this.#e(async()=>{const{programOverviewForOwner:n}=await this.#t.getProgramOverviewForOwner({ownerEntityRef:t,facet:e,first:a,after:s});return n})}async getTracks(t){return this.#e(async()=>{const{programs:e}=await this.#t.getTracks({filter:t});return e})}async createProgram(t){return this.#e(async()=>{const{program:e}=await this.#t.createProgram({input:t});return e})}async updateProgram(t){return this.#e(async()=>{const{program:e}=await this.#t.updateProgram({input:t});return e})}async deleteProgram(t){return this.#e(async()=>{const{programDeleted:e}=await this.#t.deleteProgram({programId:t});return e})}async getPlaylists(t){return this.#e(async()=>{const{playlists:e}=await this.#t.getPlaylists({entityRef:t});return e})}async getOperators(){return this.#e(async()=>{const{operators:t}=await this.#t.getOperators();return t})}async getChecks(t){return this.#e(async()=>{const{checkers:e}=await this.#t.getCheckers({filter:t});return e})}async createCheck(t){return this.#e(async()=>{const{check:e}=await this.#t.createCheck({input:t});return e})}async updateCheck(t){return this.#e(async()=>{const{check:e}=await this.#t.updateCheck({input:t});return e})}async deleteCheck(t){return this.#e(async()=>await this.#t.deleteChecker({checkerId:t}))}async executeCheck(t){return this.#e(async()=>{const{result:e}=await this.#t.executeCheck({input:t});return e})}async getCollectors(t){return this.#e(async()=>{const{collectors:e}=await this.#t.getCollectors({ids:t});return e})}async getFactSchema(t,e){if(!(!t||!e))return this.#e(async()=>{const{factSchema:a}=await this.#t.getFactSchemas({collectorId:t,factName:e});return a})}async updateCollectorConfig(t){return this.#e(async()=>{const{collector:e}=await this.#t.updateCollectorConfig({input:t});return e})}async getOverallCheckPassRates(t){return this.#e(async()=>await this.#t.getOverallCheckPassRates({filter:t}))}async getIndividualCheckPassRates(t){return this.#e(async()=>await this.#t.getIndividualCheckPassRates({filter:t}))}async getOverallTrackPassRate(t){return this.#e(async()=>await this.#t.getOverallTrackPassRate({filter:t}))}async getIndividualTrackPassRate(t){return this.#e(async()=>await this.#t.getIndividualTrackPassRate({filter:t}))}async getOverallEntityPassRates(t){return this.#e(async()=>await this.#t.getOverallEntityPassRates({filter:t}))}async getIndividualEntityPassRates(t){return this.#e(async()=>await this.#t.getIndividualEntityPassRates({input:t}))}async getOverallGroupPassRates(t){return this.#e(async()=>await this.#t.getOverallGroupPassRates({input:t}))}async getIndividualGroupPassRates(t){return this.#e(async()=>await this.#t.getIndividualGroupPassRates({input:t}))}async getEntityRefsForTechHealthFilter(t){return this.#e(async()=>await this.#t.getEntityRefsForTechHealthFilter({ownerEntityRef:t}))}async getTrackEntities(t){return this.#e(async()=>await this.#t.getTrackEntities({input:t}))}async getCampaigns(t){return this.#e(async()=>{const{campaigns:e}=await this.#t.getCampaigns({filter:t});return e})}async createCampaign(t){return this.#e(async()=>{const{campaign:e}=await this.#t.createCampaign({input:t});return e})}async updateCampaign(t){return this.#e(async()=>{const{campaign:e}=await this.#t.updateCampaign({input:t});return e})}async deleteCampaign(t){return this.#e(async()=>{const{campaignDeleted:e}=await this.#t.deleteCampaign({campaignId:t});return e})}async archiveCampaign(t){return this.#e(async()=>{const{campaignArchived:e}=await this.#t.archiveCampaign({campaignId:t});return e})}async getCampaignProgress(t,e,a){return this.#e(async()=>{const{campaignProgress:s}=await this.#t.getCampaignProgress({id:t,first:e,after:a});return s})}async getCampaignOwners(){return this.#e(async()=>{const{campaignOwners:t}=await this.#t.getCampaignOwners();return t})}async getCheckOwners(){return this.#e(async()=>{const{checkOwners:t}=await this.#t.getCheckOwners();return t})}async getTrackOwners(){return this.#e(async()=>{const{trackOwners:t}=await this.#t.getTrackOwners();return t})}async getCertificationStatus(t){return this.#e(async()=>this.#t.getCertificationStatus({input:t}))}async getCertificationStatusHistory(t){return this.#e(async()=>this.#t.getCertificationStatusHistory({input:t}))}async getCheckStatus(t){return this.#e(async()=>(await this.#t.getCheckStatus({input:t})).checkStatus)}async getCheckStatusHistory(t){return this.#e(async()=>(await this.#t.getCheckStatusHistory({input:t})).checkStatusHistory)}async getCheckEntities(t){return this.#e(async()=>await this.#t.getCheckEntities({input:t}))}}export{y as SoundcheckApi,o as soundcheckApiRef};
2
2
  //# sourceMappingURL=api.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as D,Grid as n,Checkbox as u,Typography as d,TextField as C,FormControl as v,InputLabel as N,Select as T,MenuItem as y}from"@material-ui/core";import e,{useState as p,useEffect as L}from"react";import{MIN_TIME_UNIT_VALUE as x,MAX_TIME_UNIT_VALUE as k}from"../../utils/time.esm.js";import{TimeUnit as M}from"../Frequency/types.esm.js";import{VALID_TIME_UNITS as S,toTimeUnit as U}from"../Frequency/util.esm.js";import"../Frequency/FrequencyComponent.esm.js";const _=D(l=>({duration:{display:"flex",gap:l.spacing(2),alignItems:"flex-start",marginTop:l.spacing(1)},durationInput:{paddingLeft:0},label:{cursor:"pointer"},font:{fontSize:l.typography.body1.fontSize},inputLabel:{color:`${l.palette.text.primary} !important`},inputLabelDisabled:{color:l.palette.action.disabled},unitInput:{minWidth:100},unitMenu:{backgroundColor:l.palette.background.paper}})),F=({value:l,onChange:s,disabled:r,errors:m})=>{const i=_(),[t,c]=p(l),[b,h]=p(`${l.value}`);L(()=>{s&&s(t)},[t,s]);const g=a=>{c({...t,enabled:a.target.checked,hasDuration:a.target.checked&&t.hasDuration})},E=a=>{c({...t,hasDuration:a.target.checked})},f=a=>{h(a.target.value);const o=parseInt(a.target.value,10);c({...t,value:isNaN(o)?0:o})},I=a=>{var o;c({...t,unit:(o=U(a.target.value))!=null?o:M.Hours})};return e.createElement(n,{container:!0,direction:"column",className:i.font},e.createElement(n,{item:!0},e.createElement(n,{container:!0,alignItems:"center"},e.createElement(n,{item:!0},e.createElement(u,{id:"enableCaching",disabled:r,checked:t.enabled,onChange:g,"data-testid":"enableCaching"})),e.createElement(n,{item:!0},e.createElement("label",{htmlFor:"enableCaching",className:i.label},"Enable caching")))),e.createElement(n,{item:!0},e.createElement(n,{container:!0,alignItems:"flex-start"},e.createElement(n,{item:!0},e.createElement(u,{id:"hasDuration",disabled:r||!t.enabled,checked:t.enabled&&t.hasDuration,onChange:E,"data-testid":"hasDuration"})),e.createElement(n,{item:!0,className:i.durationInput},e.createElement(d,{variant:"body1"},e.createElement("label",{htmlFor:"hasDuration",className:t.enabled?i.label:""},"Duration")),e.createElement(d,{variant:"caption"},"Set the maximum length that fact data is cached for"),e.createElement(n,{className:i.duration},e.createElement(n,{item:!0},e.createElement(C,{id:"every",type:"number",label:"For",name:"for",disabled:r||!t.hasDuration,value:b,onChange:f,error:!!(m!=null&&m.message),helperText:m==null?void 0:m.message,inputProps:{min:x,max:k},"data-testid":"forTextField",InputLabelProps:{className:r||!t.hasDuration?i.inputLabelDisabled:i.inputLabel}})),e.createElement(n,{item:!0},e.createElement(v,null,e.createElement(N,{className:r||!t.hasDuration?i.inputLabelDisabled:i.inputLabel,id:"duration-unit"},"Unit"),e.createElement(T,{labelId:"duration-unit",disabled:r||!t.hasDuration,value:t.unit,onChange:I,"data-testid":"unitSelect",inputProps:{className:i.unitInput},MenuProps:{classes:{list:i.unitMenu}}},S.map(a=>e.createElement(y,{key:a,value:a},a))))))))))};export{F as CacheConfigComponent};
1
+ import{makeStyles as D,Grid as n,Checkbox as u,Typography as d,TextField as C,FormControl as N,InputLabel as T,Select as v,MenuItem as y}from"@material-ui/core";import e,{useState as p,useEffect as L}from"react";import{MIN_TIME_UNIT_VALUE as x,MAX_TIME_UNIT_VALUE as k}from"../../utils/time.esm.js";import{TimeUnit as M}from"../Frequency/types.esm.js";import{VALID_TIME_UNITS as S,toTimeUnit as U}from"../Frequency/util.esm.js";import"../Frequency/FrequencyComponent.esm.js";const _=D(l=>({duration:{display:"flex",gap:l.spacing(2),alignItems:"flex-start",marginTop:l.spacing(1)},durationInput:{paddingLeft:0},label:{cursor:"pointer"},font:{fontSize:l.typography.body1.fontSize},inputLabel:{color:`${l.palette.text.primary} !important`},inputLabelDisabled:{color:l.palette.action.disabled},unitInput:{minWidth:100},unitMenu:{backgroundColor:l.palette.background.paper}})),F=({value:l,onChange:m,disabled:r,errors:c})=>{const i=_(),[t,o]=p(l),[b,h]=p(`${l.value}`);L(()=>{m&&m(t)},[t,m]);const g=a=>{o({...t,enabled:a.target.checked,hasDuration:a.target.checked&&t.hasDuration})},E=a=>{o({...t,hasDuration:a.target.checked})},f=a=>{h(a.target.value);const s=parseInt(a.target.value,10);o({...t,value:isNaN(s)?0:s})},I=a=>{o({...t,unit:U(a.target.value)??M.Hours})};return e.createElement(n,{container:!0,direction:"column",className:i.font},e.createElement(n,{item:!0},e.createElement(n,{container:!0,alignItems:"center"},e.createElement(n,{item:!0},e.createElement(u,{id:"enableCaching",disabled:r,checked:t.enabled,onChange:g,"data-testid":"enableCaching"})),e.createElement(n,{item:!0},e.createElement("label",{htmlFor:"enableCaching",className:i.label},"Enable caching")))),e.createElement(n,{item:!0},e.createElement(n,{container:!0,alignItems:"flex-start"},e.createElement(n,{item:!0},e.createElement(u,{id:"hasDuration",disabled:r||!t.enabled,checked:t.enabled&&t.hasDuration,onChange:E,"data-testid":"hasDuration"})),e.createElement(n,{item:!0,className:i.durationInput},e.createElement(d,{variant:"body1"},e.createElement("label",{htmlFor:"hasDuration",className:t.enabled?i.label:""},"Duration")),e.createElement(d,{variant:"caption"},"Set the maximum length that fact data is cached for"),e.createElement(n,{className:i.duration},e.createElement(n,{item:!0},e.createElement(C,{id:"every",type:"number",label:"For",name:"for",disabled:r||!t.hasDuration,value:b,onChange:f,error:!!c?.message,helperText:c?.message,inputProps:{min:x,max:k},"data-testid":"forTextField",InputLabelProps:{className:r||!t.hasDuration?i.inputLabelDisabled:i.inputLabel}})),e.createElement(n,{item:!0},e.createElement(N,null,e.createElement(T,{className:r||!t.hasDuration?i.inputLabelDisabled:i.inputLabel,id:"duration-unit"},"Unit"),e.createElement(v,{labelId:"duration-unit",disabled:r||!t.hasDuration,value:t.unit,onChange:I,"data-testid":"unitSelect",inputProps:{className:i.unitInput},MenuProps:{classes:{list:i.unitMenu}}},S.map(a=>e.createElement(y,{key:a,value:a},a))))))))))};export{F as CacheConfigComponent};
2
2
  //# sourceMappingURL=CacheConfigComponent.esm.js.map
@@ -1,2 +1,2 @@
1
- import i from"lodash";import{TimeUnit as a}from"../Frequency/types.esm.js";import{toTimeUnit as s}from"../Frequency/util.esm.js";import"../Frequency/FrequencyComponent.esm.js";const u=()=>({enabled:!1,hasDuration:!1,unit:a.Days,value:1});function l(t){if(t){const{enabled:e,hasDuration:n}=t;if(e&&n){const{unit:o,value:r}=t;return{duration:{[o]:r}}}return e}}function m(t){var e;const n=u();if(!t)return n;if(typeof t=="boolean")return{...n,enabled:t};if(!i.isObject(t)||!("duration"in t))return n;const o=t.duration;if(!i.isObject(o))return n;const r=Object.entries(o);if(r.length===0)return n;const[f,c]=r[0];return{...n,enabled:!0,hasDuration:!0,unit:(e=s(f))!=null?e:a.Days,value:c}}export{u as defaultCacheConfig,l as mapCacheConfigToHumanDurationOrBoolean,m as mapToCacheConfig};
1
+ import i from"lodash";import{TimeUnit as a}from"../Frequency/types.esm.js";import{toTimeUnit as c}from"../Frequency/util.esm.js";import"../Frequency/FrequencyComponent.esm.js";const u=()=>({enabled:!1,hasDuration:!1,unit:a.Days,value:1});function s(t){if(t){const{enabled:e,hasDuration:n}=t;if(e&&n){const{unit:o,value:r}=t;return{duration:{[o]:r}}}return e}}function l(t){const e=u();if(!t)return e;if(typeof t=="boolean")return{...e,enabled:t};if(!i.isObject(t)||!("duration"in t))return e;const n=t.duration;if(!i.isObject(n))return e;const o=Object.entries(n);if(o.length===0)return e;const[r,f]=o[0];return{...e,enabled:!0,hasDuration:!0,unit:c(r)??a.Days,value:f}}export{u as defaultCacheConfig,s as mapCacheConfigToHumanDurationOrBoolean,l as mapToCacheConfig};
2
2
  //# sourceMappingURL=utils.esm.js.map
@@ -1,2 +1,2 @@
1
- import{Typography as c}from"@material-ui/core";import{makeStyles as m}from"@material-ui/core/styles";import e from"react";import{DraggableChip as p}from"../../DraggableChip/DraggableChip.esm.js";const s=m(a=>({sectionLabel:{margin:a.spacing(2,0)},chipContainer:{display:"flex",flexDirection:"column",fontWeight:"bold",fontSize:a.typography.pxToRem(16),color:a.palette.grey[600],"& .Mui-disabled":{opacity:1}}})),g=({campaign:a})=>{var t,r,n;const i=s(),l=(n=(r=(t=a.track)==null?void 0:t.levels)==null?void 0:r[0].checks)!=null?n:[];return e.createElement(e.Fragment,null,e.createElement(c,{color:"textPrimary",variant:"h5",className:i.sectionLabel},"Campaign Checks"),e.createElement("div",{className:i.chipContainer},l.length?l.map(o=>e.createElement(p,{key:o.id,chip:o,disabled:!0})):e.createElement(c,{variant:"body1",color:"textSecondary",style:{alignSelf:"center"}},"There are no checks for this campaign.")))};export{g as CampaignChecks};
1
+ import{Typography as n}from"@material-ui/core";import{makeStyles as c}from"@material-ui/core/styles";import e from"react";import{DraggableChip as o}from"../../DraggableChip/DraggableChip.esm.js";const l=c(a=>({sectionLabel:{margin:a.spacing(2,0)},chipContainer:{display:"flex",flexDirection:"column",fontWeight:"bold",fontSize:a.typography.pxToRem(16),color:a.palette.grey[600],"& .Mui-disabled":{opacity:1}}})),m=({campaign:a})=>{const t=l(),r=a.track?.levels?.[0].checks??[];return e.createElement(e.Fragment,null,e.createElement(n,{color:"textPrimary",variant:"h5",className:t.sectionLabel},"Campaign Checks"),e.createElement("div",{className:t.chipContainer},r.length?r.map(i=>e.createElement(o,{key:i.id,chip:i,disabled:!0})):e.createElement(n,{variant:"body1",color:"textSecondary",style:{alignSelf:"center"}},"There are no checks for this campaign.")))};export{m as CampaignChecks};
2
2
  //# sourceMappingURL=CampaignChecks.esm.js.map
@@ -1,2 +1,2 @@
1
- import{Grid as a}from"@material-ui/core";import{makeStyles as c}from"@material-ui/core/styles";import e from"react";import{DndProvider as s}from"react-dnd";import{HTML5Backend as g}from"react-dnd-html5-backend";import{useParams as d}from"react-router-dom";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../api.esm.js";import"../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../../hooks/useSoundcheckAlert.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as f}from"../../../hooks/useNavigateBack.esm.js";import{useGetCampaign as E}from"../../../hooks/campaigns/useGetCampaign.esm.js";import{campaignsPageRouteRef as u}from"../../../routes.esm.js";import{EmptyCampaignState as C}from"../../EmptyState/CampaignEmptyState.esm.js";import{FullScreenDialog as v}from"../../FullScreenDialog/FullScreenDialog.esm.js";import{Loading as S}from"../../TechHealth/Loading/Loading.esm.js";import{CampaignChecks as x}from"./CampaignChecks.esm.js";import{CampaignDetails as P}from"./CampaignDetails.esm.js";import{CampaignMilestones as k}from"./CampaignMilestones.esm.js";import{CampaignProgress as y}from"./CampaignProgress.esm.js";const D=c(t=>({root:{flexGrow:1,padding:t.spacing(2)},progressSection:{minHeight:350,fontSize:t.typography.body1.fontSize}})),h=()=>{var t,r;const o=D(),{campaignId:i}=d(),{data:n,isLoading:p}=E(i!=null?i:""),m=(r=(t=n==null?void 0:n.edges)==null?void 0:t[0])==null?void 0:r.node,[l]=f(u);return p?e.createElement("div",{"data-testid":"loading-indicator"},e.createElement(S,null)):m?e.createElement(v,{title:"Campaign Details",open:!0,handleClose:l},e.createElement(s,{backend:g},e.createElement(a,{container:!0,className:o.root,spacing:3,direction:"column"},e.createElement(a,{item:!0,xs:12},e.createElement(P,{campaign:m})),e.createElement(a,{item:!0,xs:6},e.createElement(x,{campaign:m})),e.createElement(a,{item:!0,xs:12,className:o.progressSection},e.createElement(y,{campaign:m})),e.createElement(a,{item:!0,xs:12},e.createElement(k,{campaign:m}))))):e.createElement(C,null)};export{h as CampaignDetailsPage};
1
+ import{Grid as a}from"@material-ui/core";import{makeStyles as p}from"@material-ui/core/styles";import e from"react";import{DndProvider as c}from"react-dnd";import{HTML5Backend as s}from"react-dnd-html5-backend";import{useParams as l}from"react-router-dom";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../api.esm.js";import"../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../../hooks/useSoundcheckAlert.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as g}from"../../../hooks/useNavigateBack.esm.js";import{useGetCampaign as d}from"../../../hooks/campaigns/useGetCampaign.esm.js";import{campaignsPageRouteRef as f}from"../../../routes.esm.js";import{EmptyCampaignState as E}from"../../EmptyState/CampaignEmptyState.esm.js";import{FullScreenDialog as C}from"../../FullScreenDialog/FullScreenDialog.esm.js";import{Loading as u}from"../../TechHealth/Loading/Loading.esm.js";import{CampaignChecks as x}from"./CampaignChecks.esm.js";import{CampaignDetails as S}from"./CampaignDetails.esm.js";import{CampaignMilestones as k}from"./CampaignMilestones.esm.js";import{CampaignProgress as y}from"./CampaignProgress.esm.js";const D=p(t=>({root:{flexGrow:1,padding:t.spacing(2)},progressSection:{minHeight:350,fontSize:t.typography.body1.fontSize}})),P=()=>{const t=D(),{campaignId:r}=l(),{data:o,isLoading:i}=d(r??""),m=o?.edges?.[0]?.node,[n]=g(f);return i?e.createElement("div",{"data-testid":"loading-indicator"},e.createElement(u,null)):m?e.createElement(C,{title:"Campaign Details",open:!0,handleClose:n},e.createElement(c,{backend:s},e.createElement(a,{container:!0,className:t.root,spacing:3,direction:"column"},e.createElement(a,{item:!0,xs:12},e.createElement(S,{campaign:m})),e.createElement(a,{item:!0,xs:6},e.createElement(x,{campaign:m})),e.createElement(a,{item:!0,xs:12,className:t.progressSection},e.createElement(y,{campaign:m})),e.createElement(a,{item:!0,xs:12},e.createElement(k,{campaign:m}))))):e.createElement(E,null)};export{P as CampaignDetailsPage};
2
2
  //# sourceMappingURL=CampaignDetailsPage.esm.js.map
@@ -1,2 +1,2 @@
1
- import{useRouteRef as k}from"@backstage/core-plugin-api";import{entityRouteRef as C}from"@backstage/plugin-catalog-react";import{makeStyles as y,Grid as T}from"@material-ui/core";import{countBy as w}from"lodash";import m from"react";import{VariableSizeGrid as v}from"react-window";import{ResultState as p}from"../../../graphql/generated/index.esm.js";import{checkTitleCell as H,checkResultCell as A,entityHeaderCell as f,getCellRenderer as S}from"../../ResultsTable/virtualized/Cell.esm.js";import{CellWidths as g,calculateTableHeight as W,calculateTableWidth as x,RowHeights as N,findLongestRefTitle as E,calculateHeightForRefTitle as F}from"../../ResultsTable/virtualized/virtualizedTableUtils.esm.js";const d=25,G=(r,o,c,s)=>{var n;const l=[];for(const{check:e,results:a}of r)l.push({height:N.check,cells:[H(e.name,w(a.filter(({result:t})=>t!==p.NotApplicable),"result")),...o.flatMap(t=>{var h,u;if(t===void 0)return[];const R=(u=(h=a.find(({entityRef:b})=>b===t))==null?void 0:h.result)!=null?u:p.NotApplicable;return[A(s,e,t,R,c)]})]});const i=E(o!=null?o:[]);return l.push({height:Math.min(F((n=i.length)!=null?n:1),220),cells:[f(""),...o.map(e=>f(e||""))]}),l},M=y(r=>({table:{backgroundColor:r.palette.background.paper,borderCollapse:"collapse",whiteSpace:"nowrap",textAlign:"left"}})),z=({results:r,campaignTrackId:o})=>{const c=M(),s=k(C),{checks:n,entityRefs:l}=r,i=l.length>=d?l:[...l,...Array.from({length:d-l.length},()=>{})],e=G(n,i,s,o),a=S(e);return m.createElement(T,{item:!0,xs:12},m.createElement(v,{style:{overflow:"auto hidden"},className:c.table,columnCount:i.length+1,columnWidth:t=>t===0?g.programTitle:g.checkResult,rowCount:e.length,rowHeight:t=>e[t].height,height:W(e),width:x(i.length+1)},a))};export{z as CampaignResultsTable};
1
+ import{useRouteRef as R}from"@backstage/core-plugin-api";import{entityRouteRef as C}from"@backstage/plugin-catalog-react";import{makeStyles as b,Grid as k}from"@material-ui/core";import m from"react";import{VariableSizeGrid as T}from"react-window";import{ResultState as w}from"../../../graphql/generated/index.esm.js";import{checkTitleCell as y,checkResultCell as S,entityHeaderCell as p,getCellRenderer as A}from"../../ResultsTable/virtualized/Cell.esm.js";import{CellWidths as u,calculateTableHeight as H,calculateTableWidth as x,RowHeights as E,findLongestRefTitle as N,calculateHeightForRefTitle as W}from"../../ResultsTable/virtualized/virtualizedTableUtils.esm.js";const g=25,v=(r,a,c,n)=>{const i=[];for(const{check:e,results:l,totalCount:s,totalPassing:o}of r)i.push({height:E.check,cells:[y(e.name,{PASSED:o,FAILED:s-o}),...a.flatMap(h=>{if(h===void 0)return[];const f=l.find(({entityRef:d})=>d===h)?.result??w.NotApplicable;return[S(n,e,h,f,c)]})]});const t=N(a??[]);return i.push({height:Math.min(W(t.length??1),220),cells:[p(""),...a.map(e=>p(e||""))]}),i},D=b(r=>({table:{backgroundColor:r.palette.background.paper,borderCollapse:"collapse",whiteSpace:"nowrap",textAlign:"left"}})),F=({results:r,campaignTrackId:a})=>{const c=D(),n=R(C),{checks:i,entityRefs:t}=r,e=t.length>=g?t:[...t,...Array.from({length:g-t.length},()=>{})],l=v(i,e,n,a),s=A(l);return m.createElement(k,{item:!0,xs:12},m.createElement(T,{style:{overflow:"auto hidden"},className:c.table,columnCount:e.length+1,columnWidth:o=>o===0?u.programTitle:u.checkResult,rowCount:l.length,rowHeight:o=>l[o].height,height:H(l),width:x(e.length+1)},s))};export{F as CampaignResultsTable};
2
2
  //# sourceMappingURL=CampaignResultsTable.esm.js.map
@@ -1,2 +1,2 @@
1
- import{useApi as M,featureFlagsApiRef as Y}from"@backstage/core-plugin-api";import{usePermission as q}from"@backstage/plugin-permission-react";import{makeStyles as z,Grid as i,Button as J}from"@material-ui/core";import{soundcheckCampaignCreatePermission as K}from"@spotify/backstage-plugin-soundcheck-common";import a,{useState as n,useEffect as Q}from"react";import U from"react-use/lib/useDebounce";import"../../../contexts/TrackFormContext.esm.js";import"../../../contexts/CheckFormContext.esm.js";import{useCampaignFormContext as V}from"../../../contexts/CampaignFormContext.esm.js";import"../../../contexts/UserProvider.esm.js";import{useGetCampaignOwners as X}from"../../../hooks/campaigns/useGetCampaignOwners.esm.js";import{useGetCampaigns as Z}from"../../../hooks/campaigns/useGetCampaigns.esm.js";import{FilterDefault as d}from"../../../utils/filters.esm.js";import{EmptyState as _}from"../../EmptyState/EmptyState.esm.js";import{EmptyCampaignState as $}from"../../EmptyState/CampaignEmptyState.esm.js";import{Pagination as ee}from"../../Pagination/Pagination.esm.js";import{SearchFilters as ae}from"../../SearchFilters/SearchFilters.esm.js";import{CampaignNoResults as E}from"../MutateCampaignsViews/types/CampaignFormTypes.esm.js";import{CampaignsOverviewSkeleton as te}from"../skeletons/CampaignsOverviewSkeleton.esm.js";import{CampaignSummaryCard as re}from"./CampaignSummaryCard.esm.js";import ne from"./useArchiveConfirmationModal.esm.js";const ie=z(r=>({headerButtons:{display:"flex",gap:r.spacing(1),flexWrap:"nowrap",justifyContent:"end",alignItems:"end"},header:{padding:r.spacing(0,0,1)},container:{padding:r.spacing(3),gap:r.spacing(3)},createButton:{lineHeight:"1.25rem",paddingTop:r.spacing(1.5),paddingBottom:r.spacing(1.5)}})),oe=({campaignsPerPage:r,currentCursor:S})=>{const s=ie(),[u,w]=n(S),[p,x]=n(""),[y,b]=n(""),[f,A]=n(d.Alpha),[h,B]=n(d.Owner),[C,N]=n(d.Status),{data:F,isLoading:k}=X();U(()=>{b(p)},500,[p]);const{setShowAddModal:I}=V(),{loading:O,allowed:L}=q({permission:K}),{data:t,isLoading:g}=Z({ids:void 0,first:r,after:u,orderAlphabetical:f,searchByOwner:h,searchByName:y,searchByStatus:C}),[o,G]=n(t),l=o==null?void 0:o.edges.map(e=>e.node),[c,R]=n([]),P=M(Y),T=!P.getRegisteredFlags().find(e=>e.name==="soundcheck-enable-campaigns")||P.isActive("soundcheck-enable-campaigns"),D=!L||!T,W=e=>{A(e.target.value)},j=e=>{B(e.target.value)},H=e=>{N(e.target.value)};if(Q(()=>{t&&G(()=>{var e,v;return{totalCount:t.totalCount,edges:t.edges,pageInfo:{startCursor:t.pageInfo.startCursor,endCursor:t.pageInfo.endCursor,hasNextPage:(e=t==null?void 0:t.pageInfo.hasNextPage)!=null?e:!1,hasPreviousPage:(v=t==null?void 0:t.pageInfo.hasPreviousPage)!=null?v:!1}}})},[t]),!g&&!l)return a.createElement($,null);let m;return g?m=a.createElement(te,null):l!=null&&l.length?m=l.map(e=>a.createElement(i,{key:e.id,xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem","aria-label":"result"},a.createElement(ne,null,a.createElement(re,{campaign:e})))):m=a.createElement(i,{xs:12,item:!0,role:"listitem","aria-label":"result"},a.createElement(_,{title:E.title,description:E.description})),a.createElement(i,{container:!0,direction:"row",className:s.container},a.createElement(i,{container:!0,className:s.header},a.createElement(ae,{searchPlaceholder:"Search Available Campaigns",isLoading:g||k,searchTerm:p,setSearchTerm:x,filterAlpha:f,handleAlphabeticalFilterChange:W,filterOwner:h,handleOwnerFilterChange:j,filterStatus:C,handleStatusFilterChange:H,owners:F}),a.createElement(i,{item:!0,xs:2,className:s.headerButtons},!O&&a.createElement(J,{disabled:D,variant:"contained",color:"primary",onClick:()=>I(!0),className:s.createButton},"Create Campaign"))),a.createElement(i,{container:!0,spacing:4,role:"list","aria-label":"campaigns"},m),((o==null?void 0:o.pageInfo.hasNextPage)||(c==null?void 0:c.length)>0)&&a.createElement(i,{item:!0,xs:12},a.createElement(ee,{response:o,listingsPerPage:r,cursor:u,setCursor:w,prevCursors:c,setPrevCursors:R,labelPerPageDropdown:"Campaigns Per Page:",urlRoute:"campaigns?campaignsPerPage="})))};export{oe as CampaignListPage};
1
+ import{useApi as M,featureFlagsApiRef as W}from"@backstage/core-plugin-api";import{usePermission as U}from"@backstage/plugin-permission-react";import{makeStyles as q,Grid as n,Button as z}from"@material-ui/core";import{soundcheckCampaignCreatePermission as J}from"@spotify/backstage-plugin-soundcheck-common";import e,{useState as i,useEffect as K}from"react";import Q from"react-use/lib/useDebounce";import"../../../contexts/TrackFormContext.esm.js";import"../../../contexts/CheckFormContext.esm.js";import{useCampaignFormContext as V}from"../../../contexts/CampaignFormContext.esm.js";import"../../../contexts/UserProvider.esm.js";import{useGetCampaignOwners as X}from"../../../hooks/campaigns/useGetCampaignOwners.esm.js";import{useGetCampaigns as Y}from"../../../hooks/campaigns/useGetCampaigns.esm.js";import{FilterDefault as c}from"../../../utils/filters.esm.js";import{EmptyState as Z}from"../../EmptyState/EmptyState.esm.js";import{EmptyCampaignState as _}from"../../EmptyState/CampaignEmptyState.esm.js";import{Pagination as $}from"../../Pagination/Pagination.esm.js";import{SearchFilters as ee}from"../../SearchFilters/SearchFilters.esm.js";import{CampaignNoResults as E}from"../MutateCampaignsViews/types/CampaignFormTypes.esm.js";import{CampaignsOverviewSkeleton as ae}from"../skeletons/CampaignsOverviewSkeleton.esm.js";import{CampaignSummaryCard as te}from"./CampaignSummaryCard.esm.js";import re from"./useArchiveConfirmationModal.esm.js";const ie=q(t=>({headerButtons:{display:"flex",gap:t.spacing(1),flexWrap:"nowrap",justifyContent:"end",alignItems:"end"},header:{padding:t.spacing(0,0,1)},container:{padding:t.spacing(3),gap:t.spacing(3)},createButton:{lineHeight:"1.25rem",paddingTop:t.spacing(1.5),paddingBottom:t.spacing(1.5)}})),ne=({campaignsPerPage:t,currentCursor:S})=>{const o=ie(),[d,v]=i(S),[m,w]=i(""),[x,y]=i(""),[u,b]=i(c.Alpha),[f,A]=i(c.Owner),[h,B]=i(c.Status),{data:N,isLoading:F}=X();Q(()=>{y(m)},500,[m]);const{setShowAddModal:k}=V(),{loading:I,allowed:O}=U({permission:J}),{data:r,isLoading:l}=Y({ids:void 0,first:t,after:d,orderAlphabetical:u,searchByOwner:f,searchByName:x,searchByStatus:h}),[p,L]=i(r),g=p?.edges.map(a=>a.node),[C,G]=i([]),P=M(W),R=!P.getRegisteredFlags().find(a=>a.name==="soundcheck-enable-campaigns")||P.isActive("soundcheck-enable-campaigns"),T=!O||!R,D=a=>{b(a.target.value)},j=a=>{A(a.target.value)},H=a=>{B(a.target.value)};if(K(()=>{r&&L(()=>({totalCount:r.totalCount,edges:r.edges,pageInfo:{startCursor:r.pageInfo.startCursor,endCursor:r.pageInfo.endCursor,hasNextPage:r?.pageInfo.hasNextPage??!1,hasPreviousPage:r?.pageInfo.hasPreviousPage??!1}}))},[r]),!l&&!g)return e.createElement(_,null);let s;return l?s=e.createElement(ae,null):g?.length?s=g.map(a=>e.createElement(n,{key:a.id,xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem","aria-label":"result"},e.createElement(re,null,e.createElement(te,{campaign:a})))):s=e.createElement(n,{xs:12,item:!0,role:"listitem","aria-label":"result"},e.createElement(Z,{title:E.title,description:E.description})),e.createElement(n,{container:!0,direction:"row",className:o.container},e.createElement(n,{container:!0,className:o.header},e.createElement(ee,{searchPlaceholder:"Search Available Campaigns",isLoading:l||F,searchTerm:m,setSearchTerm:w,filterAlpha:u,handleAlphabeticalFilterChange:D,filterOwner:f,handleOwnerFilterChange:j,filterStatus:h,handleStatusFilterChange:H,owners:N}),e.createElement(n,{item:!0,xs:2,className:o.headerButtons},!I&&e.createElement(z,{disabled:T,variant:"contained",color:"primary",onClick:()=>k(!0),className:o.createButton},"Create Campaign"))),e.createElement(n,{container:!0,spacing:4,role:"list","aria-label":"campaigns"},s),(p?.pageInfo.hasNextPage||C?.length>0)&&e.createElement(n,{item:!0,xs:12},e.createElement($,{response:p,listingsPerPage:t,cursor:d,setCursor:v,prevCursors:C,setPrevCursors:G,labelPerPageDropdown:"Campaigns Per Page:",urlRoute:"campaigns?campaignsPerPage="})))};export{ne as CampaignListPage};
2
2
  //# sourceMappingURL=CampaignListPage.esm.js.map
@@ -1,2 +1,2 @@
1
- import{useRouteRef as c}from"@backstage/core-plugin-api";import{usePermission as l}from"@backstage/plugin-permission-react";import{soundcheckCampaignUpdatePermission as S,soundcheckCampaignDeletePermission as T}from"@spotify/backstage-plugin-soundcheck-common";import u,{useCallback as U}from"react";import{useNavigate as I}from"react-router-dom";import{v4 as b}from"uuid";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../../api.esm.js";import"../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../../hooks/useSoundcheckAlert.esm.js";import{useArchiveCampaign as x}from"../../../hooks/campaigns/useArchiveCampaign.esm.js";import{useDeleteCampaign as N}from"../../../hooks/campaigns/useDeleteCampaign.esm.js";import{useCreateTrack as V}from"../../../hooks/tracks/useCreateTrack.esm.js";import{useConfirmationModal as j}from"../../../hooks/useConfirmationModal.esm.js";import{campaignDetailsRouteRef as q,campaignEditRouteRef as z}from"../../../routes.esm.js";import{SummaryCard as B}from"../../SummaryCard/SummaryCard.esm.js";import{CampaignMetadata as F}from"./CampaignMetadata.esm.js";import{useArchiveConfirmationModal as G}from"./useArchiveConfirmationModal.esm.js";const H=({campaign:e})=>{const{id:f,name:t,description:g,ownerEntityRef:h,archived:v}=e,C=c(q),R=c(z),r=I(),m=e.archived,{showModal:n}=j(),{showArchiveModal:w}=G(),{mutate:y}=V(),{mutate:s}=N(),{mutate:A}=x(),{loading:E,allowed:k}=l({permission:S,resourceRef:e.id}),{loading:d,allowed:p}=l({permission:T,resourceRef:e.id}),D=U(async()=>{await n({title:"Delete Campaign",message:`Are you sure you want to delete campaign ${e.name}?`})&&s(e.id)},[n,s,e.id,e.name]),M=()=>{var a,o;const{track:i}=e,L={id:b(),ownerEntityRef:i.ownerEntityRef,description:(a=i.description)!=null?a:"",name:i.name,documentationURL:i.documentationURL,type:"standard",levels:(o=i.levels)!=null?o:[],filter:i.filter};y(L)},P=async()=>{const{saveTrack:a,confirmed:o}=await w({title:"Archive Campaign",message:`Are you sure you want to archive campaign ${e.name}?`});o&&(a&&M(),A(e.id))};return u.createElement(B,{title:t!=null?t:f,description:g,children:(h||v)&&u.createElement(F,{campaign:e}),handleView:()=>r(C({campaignId:e.id})),handleEdit:!E&&k&&!m?()=>r(R({campaignId:e.id})):void 0,handleDelete:!d&&p?D:void 0,handleArchive:!d&&p&&!m?P:void 0})};export{H as CampaignSummaryCard};
1
+ import{useRouteRef as d}from"@backstage/core-plugin-api";import{usePermission as p}from"@backstage/plugin-permission-react";import{soundcheckCampaignUpdatePermission as M,soundcheckCampaignDeletePermission as P}from"@spotify/backstage-plugin-soundcheck-common";import c,{useCallback as L}from"react";import{useNavigate as S}from"react-router-dom";import{v4 as U}from"uuid";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../../api.esm.js";import"../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../../hooks/useSoundcheckAlert.esm.js";import{useArchiveCampaign as I}from"../../../hooks/campaigns/useArchiveCampaign.esm.js";import{useDeleteCampaign as T}from"../../../hooks/campaigns/useDeleteCampaign.esm.js";import{useCreateTrack as b}from"../../../hooks/tracks/useCreateTrack.esm.js";import{useConfirmationModal as x}from"../../../hooks/useConfirmationModal.esm.js";import{campaignDetailsRouteRef as N,campaignEditRouteRef as V}from"../../../routes.esm.js";import{SummaryCard as j}from"../../SummaryCard/SummaryCard.esm.js";import{CampaignMetadata as q}from"./CampaignMetadata.esm.js";import{useArchiveConfirmationModal as z}from"./useArchiveConfirmationModal.esm.js";const B=({campaign:e})=>{const{id:l,name:u,description:f,ownerEntityRef:g,archived:h}=e,v=d(N),C=d(V),o=S(),t=e.archived,{showModal:r}=x(),{showArchiveModal:R}=z(),{mutate:w}=b(),{mutate:m}=T(),{mutate:y}=I(),{loading:A,allowed:k}=p({permission:M,resourceRef:e.id}),{loading:n,allowed:s}=p({permission:P,resourceRef:e.id}),E=L(async()=>{await r({title:"Delete Campaign",message:`Are you sure you want to delete campaign ${e.name}?`})&&m(e.id)},[r,m,e.id,e.name]),D=()=>{const{track:i}=e,a={id:U(),ownerEntityRef:i.ownerEntityRef,description:i.description??"",name:i.name,documentationURL:i.documentationURL,type:"standard",levels:i.levels??[],filter:i.filter};w(a)};return c.createElement(j,{title:u??l,description:f,children:(g||h)&&c.createElement(q,{campaign:e}),handleView:()=>o(v({campaignId:e.id})),handleEdit:!A&&k&&!t?()=>o(C({campaignId:e.id})):void 0,handleDelete:!n&&s?E:void 0,handleArchive:!n&&s&&!t?async()=>{const{saveTrack:i,confirmed:a}=await R({title:"Archive Campaign",message:`Are you sure you want to archive campaign ${e.name}?`});a&&(i&&D(),y(e.id))}:void 0})};export{B as CampaignSummaryCard};
2
2
  //# sourceMappingURL=CampaignSummaryCard.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as T,Modal as B,Box as u,Typography as c,FormControlLabel as N,Checkbox as w,Button as f}from"@material-ui/core";import e,{createContext as M,useState as m,useRef as A,useCallback as s,useContext as P}from"react";const S=T(a=>({modalContent:{position:"absolute",display:"flex",flexDirection:"column",gap:a.spacing(1),top:"50%",left:"50%",transform:"translate(-50%, -50%)",backgroundColor:a.palette.background.paper},modalButtons:{display:"flex",justifyContent:"flex-end","& button":{width:"40%",maxWidth:"185px"},padding:a.spacing(2,3),borderTop:`1px solid ${a.palette.divider}`},checkbox:{marginBottom:a.spacing(2)},cancelButton:{color:a.palette.text.primary},modalText:{padding:a.spacing(2,3,0,3)},modalTop:{marginBottom:a.spacing(1)}})),v=M({showArchiveModal:()=>Promise.resolve({confirmed:!1,saveTrack:!1})}),L=a=>{const o=S(),[b,i]=m(!1),[r,h]=m(null),[l,d]=m(!1),n=A(),x=s(({title:t,message:C,error:E})=>(h({title:t,message:C,error:E}),d(!1),i(!0),new Promise(y=>{n.current=y})),[]),g=s(()=>{var t;(t=n.current)==null||t.call(n,{confirmed:!0,saveTrack:l}),i(!1)},[l]),p=s(()=>{var t;(t=n.current)==null||t.call(n,{confirmed:!1,saveTrack:l}),i(!1)},[l]),k=t=>{d(t.target.checked)};return e.createElement(v.Provider,{value:{showArchiveModal:x}},a.children,r&&e.createElement(B,{open:b,onClose:p,"aria-labelledby":"confirmation-modal-title","aria-describedby":"confirmation-modal-description"},e.createElement(u,{className:o.modalContent},e.createElement("div",{className:o.modalText},e.createElement("div",{className:o.modalTop},e.createElement(c,{id:"confirmation-modal-title",variant:"h6"},r.title),e.createElement(c,{id:"confirmation-modal-description",variant:"body1"},r.message)),e.createElement(u,{className:o.checkbox},e.createElement(N,{control:e.createElement(w,{"data-testid":"save-track-checkbox",checked:l,onChange:k,size:"small"}),label:"Create Track"}),e.createElement(c,{id:"confirmation-modal-check-box-description",variant:"subtitle2",color:"textSecondary"},"Create a track from this campaign if you wish to promote it to a long term health initiative."))),e.createElement("div",{className:o.modalButtons},!r.error&&e.createElement(f,{onClick:p,variant:"text","aria-label":"cancel",className:o.cancelButton},"Cancel"),e.createElement(f,{color:"primary",onClick:g,variant:"contained","aria-label":"confirm"},r.error?"Ok":"Confirm")))))},W=()=>P(v);export{L as default,W as useArchiveConfirmationModal};
1
+ import{makeStyles as T,Modal as B,Box as u,Typography as c,FormControlLabel as N,Checkbox as w,Button as f}from"@material-ui/core";import e,{createContext as M,useState as m,useRef as A,useCallback as s,useContext as P}from"react";const S=T(t=>({modalContent:{position:"absolute",display:"flex",flexDirection:"column",gap:t.spacing(1),top:"50%",left:"50%",transform:"translate(-50%, -50%)",backgroundColor:t.palette.background.paper},modalButtons:{display:"flex",justifyContent:"flex-end","& button":{width:"40%",maxWidth:"185px"},padding:t.spacing(2,3),borderTop:`1px solid ${t.palette.divider}`},checkbox:{marginBottom:t.spacing(2)},cancelButton:{color:t.palette.text.primary},modalText:{padding:t.spacing(2,3,0,3)},modalTop:{marginBottom:t.spacing(1)}})),b=M({showArchiveModal:()=>Promise.resolve({confirmed:!1,saveTrack:!1})}),L=t=>{const a=S(),[h,n]=m(!1),[o,x]=m(null),[r,d]=m(!1),l=A(),v=s(({title:i,message:C,error:E})=>(x({title:i,message:C,error:E}),d(!1),n(!0),new Promise(y=>{l.current=y})),[]),g=s(()=>{l.current?.({confirmed:!0,saveTrack:r}),n(!1)},[r]),p=s(()=>{l.current?.({confirmed:!1,saveTrack:r}),n(!1)},[r]),k=i=>{d(i.target.checked)};return e.createElement(b.Provider,{value:{showArchiveModal:v}},t.children,o&&e.createElement(B,{open:h,onClose:p,"aria-labelledby":"confirmation-modal-title","aria-describedby":"confirmation-modal-description"},e.createElement(u,{className:a.modalContent},e.createElement("div",{className:a.modalText},e.createElement("div",{className:a.modalTop},e.createElement(c,{id:"confirmation-modal-title",variant:"h6"},o.title),e.createElement(c,{id:"confirmation-modal-description",variant:"body1"},o.message)),e.createElement(u,{className:a.checkbox},e.createElement(N,{control:e.createElement(w,{"data-testid":"save-track-checkbox",checked:r,onChange:k,size:"small"}),label:"Create Track"}),e.createElement(c,{id:"confirmation-modal-check-box-description",variant:"subtitle2",color:"textSecondary"},"Create a track from this campaign if you wish to promote it to a long term health initiative."))),e.createElement("div",{className:a.modalButtons},!o.error&&e.createElement(f,{onClick:p,variant:"text","aria-label":"cancel",className:a.cancelButton},"Cancel"),e.createElement(f,{color:"primary",onClick:g,variant:"contained","aria-label":"confirm"},o.error?"Ok":"Confirm")))))},W=()=>P(b);export{L as default,W as useArchiveConfirmationModal};
2
2
  //# sourceMappingURL=useArchiveConfirmationModal.esm.js.map
@@ -1,2 +1,2 @@
1
- import{Typography as v}from"@material-ui/core";import e from"react";import{Controller as y}from"react-hook-form";import"../../../contexts/TrackFormContext.esm.js";import"../../../contexts/CheckFormContext.esm.js";import{useCampaignFormContext as F}from"../../../contexts/CampaignFormContext.esm.js";import"../../../contexts/UserProvider.esm.js";import L from"../../../hooks/useFeatureFlag.esm.js";import{formStyles as D}from"../../../utils/formStyles.esm.js";import"@spotify/backstage-plugin-soundcheck-common";import{emptyFilters as M}from"../../Filter/types.esm.js";import{FilterComponent as A}from"../../Filter/FilterComponent.esm.js";import{FormStepper as N}from"../../FormStepper/FormStepper.esm.js";import{CampaignFormDescription as O}from"./CampaignFormDescription.esm.js";import{useCampaignForm as x}from"./hooks/useCampaignForm.esm.js";import{CampaignDetailsStep as T}from"./Steps/CampaignDetailsStep/CampaignDetailsStep.esm.js";import{CampaignTrackStep as I}from"./Steps/CampaignTrackStep.esm.js";import{CampaignMilestonesStep as R}from"./Steps/CampaignMilestonesStep.esm.js";import{StepNameMapping as V}from"./types/CampaignFormTypes.esm.js";import{CAMPAIGN_FIELDS as B}from"./utils/campaignFormUtils.esm.js";var d=(t=>(t.Details="Enter campaign details",t.Checks="Add checks",t.Entities="Choose the affected entities (Optional)",t.Milestones="Set campaign milestones",t))(d||{});const G=({onSave:t,onCancel:g,selectedCampaign:a})=>{const f=D(),{isLoading:o,isReadOnly:C}=F(),{control:r,handleSubmit:n,errors:i,trigger:S,getValues:h,onSubmit:m,checkChips:u,checksLoading:b}=x(t,a),l=h(),E=l.detailsStep.startDate;L("debugMode")&&console.log(l);const s=[{label:"Enter campaign details",content:()=>e.createElement(T,{control:r,isLoading:o,disabled:!1,errors:i.detailsStep,startDate:E})},{label:"Add checks",content:()=>e.createElement(I,{control:r,isLoading:o||b,disabled:!1,errors:i.tracksStep,checkChips:u})},{label:"Choose the affected entities (Optional)",content:()=>e.createElement("div",{className:f.filters},e.createElement(v,{variant:"body2"},B.filter.description),e.createElement(y,{name:"filtersStep",control:r,render:({field:p})=>{var c;return e.createElement(A,{value:(c=p.value)!=null?c:M(),onChange:p.onChange})}}))},{label:"Set campaign milestones",content:()=>e.createElement(R,{control:r,isLoading:o,disabled:!1,errors:i.milestonesStep})}],k=a?[...Array(s.length).keys()]:[0];return e.createElement("form",{onSubmit:n(m)},e.createElement(N,{onClose:g,handleSubmit:n,trigger:S,onSubmit:m,initialVisited:k,stepNameMap:V,steps:s,isLoading:o,isReadOnly:C,saveButtonText:"Save Campaign",detailsComponent:e.createElement(O,null)}))};export{G as CampaignForm,d as CampaignStepLabel};
1
+ import{Typography as k}from"@material-ui/core";import e from"react";import{Controller as y}from"react-hook-form";import"../../../contexts/TrackFormContext.esm.js";import"../../../contexts/CheckFormContext.esm.js";import{useCampaignFormContext as v}from"../../../contexts/CampaignFormContext.esm.js";import"../../../contexts/UserProvider.esm.js";import F from"../../../hooks/useFeatureFlag.esm.js";import{formStyles as L}from"../../../utils/formStyles.esm.js";import"@spotify/backstage-plugin-soundcheck-common";import{emptyFilters as D}from"../../Filter/types.esm.js";import{FilterComponent as M}from"../../Filter/FilterComponent.esm.js";import{FormStepper as A}from"../../FormStepper/FormStepper.esm.js";import{CampaignFormDescription as N}from"./CampaignFormDescription.esm.js";import{useCampaignForm as O}from"./hooks/useCampaignForm.esm.js";import{CampaignDetailsStep as x}from"./Steps/CampaignDetailsStep/CampaignDetailsStep.esm.js";import{CampaignTrackStep as T}from"./Steps/CampaignTrackStep.esm.js";import{CampaignMilestonesStep as I}from"./Steps/CampaignMilestonesStep.esm.js";import{StepNameMapping as R}from"./types/CampaignFormTypes.esm.js";import{CAMPAIGN_FIELDS as V}from"./utils/campaignFormUtils.esm.js";var c=(t=>(t.Details="Enter campaign details",t.Checks="Add checks",t.Entities="Choose the affected entities (Optional)",t.Milestones="Set campaign milestones",t))(c||{});const B=({onSave:t,onCancel:d,selectedCampaign:a})=>{const g=L(),{isLoading:o,isReadOnly:f}=v(),{control:i,handleSubmit:n,errors:r,trigger:C,getValues:S,onSubmit:m,checkChips:h,checksLoading:b}=O(t,a),s=S(),u=s.detailsStep.startDate;F("debugMode")&&console.log(s);const l=[{label:"Enter campaign details",content:()=>e.createElement(x,{control:i,isLoading:o,disabled:!1,errors:r.detailsStep,startDate:u})},{label:"Add checks",content:()=>e.createElement(T,{control:i,isLoading:o||b,disabled:!1,errors:r.tracksStep,checkChips:h})},{label:"Choose the affected entities (Optional)",content:()=>e.createElement("div",{className:g.filters},e.createElement(k,{variant:"body2"},V.filter.description),e.createElement(y,{name:"filtersStep",control:i,render:({field:p})=>e.createElement(M,{value:p.value??D(),onChange:p.onChange})}))},{label:"Set campaign milestones",content:()=>e.createElement(I,{control:i,isLoading:o,disabled:!1,errors:r.milestonesStep})}],E=a?[...Array(l.length).keys()]:[0];return e.createElement("form",{onSubmit:n(m)},e.createElement(A,{onClose:d,handleSubmit:n,trigger:C,onSubmit:m,initialVisited:E,stepNameMap:R,steps:l,isLoading:o,isReadOnly:f,saveButtonText:"Save Campaign",detailsComponent:e.createElement(N,null)}))};export{B as CampaignForm,c as CampaignStepLabel};
2
2
  //# sourceMappingURL=CampaignForm.esm.js.map
@@ -1,2 +1,2 @@
1
- import{useRouteRef as d}from"@backstage/core-plugin-api";import e,{useEffect as C}from"react";import{useNavigate as E,useParams as v}from"react-router-dom";import"../../../contexts/TrackFormContext.esm.js";import"../../../contexts/CheckFormContext.esm.js";import{useCampaignFormContext as L}from"../../../contexts/CampaignFormContext.esm.js";import"../../../contexts/UserProvider.esm.js";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../../api.esm.js";import"../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../../hooks/useSoundcheckAlert.esm.js";import{useUpdateCampaign as R}from"../../../hooks/campaigns/useUpdateCampaign.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import{useGetCampaign as S}from"../../../hooks/campaigns/useGetCampaign.esm.js";import{campaignsPageRouteRef as y}from"../../../routes.esm.js";import{EmptyCampaignState as F}from"../../EmptyState/CampaignEmptyState.esm.js";import{FullScreenDialog as w}from"../../FullScreenDialog/FullScreenDialog.esm.js";import{Loading as x}from"../../TechHealth/Loading/Loading.esm.js";import{CampaignForm as I}from"./CampaignForm.esm.js";const P=()=>{var t,o;const m=E(),a=d(y),{campaignId:i}=v(),{setIsLoading:r}=L(),{mutateAsync:g,isLoading:n}=R(),{data:p,isLoading:l}=S(i!=null?i:""),s=(o=(t=p==null?void 0:p.edges)==null?void 0:t[0])==null?void 0:o.node;if(C(()=>r(n),[r,n]),!l&&!s)return e.createElement(F,null);const c=async f=>{await g(f,{onSuccess:()=>m(a())})},u=()=>m(a());return e.createElement(w,{title:"Update Campaign",open:!0,handleClose:u},l?e.createElement(x,null):e.createElement(I,{onSave:c,onCancel:u,selectedCampaign:s}))};export{P as EditCampaignView};
1
+ import{useRouteRef as l}from"@backstage/core-plugin-api";import e,{useEffect as u}from"react";import{useNavigate as d,useParams as C}from"react-router-dom";import"../../../contexts/TrackFormContext.esm.js";import"../../../contexts/CheckFormContext.esm.js";import{useCampaignFormContext as E}from"../../../contexts/CampaignFormContext.esm.js";import"../../../contexts/UserProvider.esm.js";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../../api.esm.js";import"../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../../hooks/useSoundcheckAlert.esm.js";import{useUpdateCampaign as L}from"../../../hooks/campaigns/useUpdateCampaign.esm.js";import"../../../hooks/useConfirmationModal.esm.js";import{useGetCampaign as R}from"../../../hooks/campaigns/useGetCampaign.esm.js";import{campaignsPageRouteRef as S}from"../../../routes.esm.js";import{EmptyCampaignState as y}from"../../EmptyState/CampaignEmptyState.esm.js";import{FullScreenDialog as F}from"../../FullScreenDialog/FullScreenDialog.esm.js";import{Loading as v}from"../../TechHealth/Loading/Loading.esm.js";import{CampaignForm as w}from"./CampaignForm.esm.js";const x=()=>{const t=d(),o=l(S),{campaignId:p}=C(),{setIsLoading:m}=E(),{mutateAsync:s,isLoading:a}=L(),{data:g,isLoading:r}=R(p??""),i=g?.edges?.[0]?.node;if(u(()=>m(a),[m,a]),!r&&!i)return e.createElement(y,null);const c=async f=>{await s(f,{onSuccess:()=>t(o())})},n=()=>t(o());return e.createElement(F,{title:"Update Campaign",open:!0,handleClose:n},r?e.createElement(v,null):e.createElement(w,{onSave:c,onCancel:n,selectedCampaign:i}))};export{x as EditCampaignView};
2
2
  //# sourceMappingURL=EditCampaignView.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as p,Typography as o,TextField as d}from"@material-ui/core";import e from"react";import{Controller as c}from"react-hook-form";import{CAMPAIGN_FIELDS as u}from"../../utils/campaignFormUtils.esm.js";const f=p(r=>({helperText:{marginLeft:0},container:{marginBottom:r.spacing(2)}})),g=({control:r,errors:t,isLoading:a,disabled:m})=>{const n=f(),{description:i}=u.details;return e.createElement("div",{className:n.container},e.createElement(o,{variant:"subtitle2"},i.name),e.createElement(o,{variant:"caption"},i.description),e.createElement(c,{name:"detailsStep.description",control:r,defaultValue:"",render:({field:s})=>{var l;return e.createElement(d,{...s,FormHelperTextProps:{className:n.helperText},variant:"outlined",multiline:!0,minRows:4,fullWidth:!0,placeholder:i.placeholder,disabled:a||m,type:"text",margin:"dense",error:!!(t!=null&&t.description),helperText:(l=t==null?void 0:t.description)==null?void 0:l.message})}}))};export{g as CampaignDescriptionField};
1
+ import{makeStyles as s,Typography as n,TextField as p}from"@material-ui/core";import e from"react";import{Controller as c}from"react-hook-form";import{CAMPAIGN_FIELDS as d}from"../../utils/campaignFormUtils.esm.js";const g=s(t=>({helperText:{marginLeft:0},container:{marginBottom:t.spacing(2)}})),f=({control:t,errors:i,isLoading:a,disabled:l})=>{const o=g(),{description:r}=d.details;return e.createElement("div",{className:o.container},e.createElement(n,{variant:"subtitle2"},r.name),e.createElement(n,{variant:"caption"},r.description),e.createElement(c,{name:"detailsStep.description",control:t,defaultValue:"",render:({field:m})=>e.createElement(p,{...m,FormHelperTextProps:{className:o.helperText},variant:"outlined",multiline:!0,minRows:4,fullWidth:!0,placeholder:r.placeholder,disabled:a||l,type:"text",margin:"dense",error:!!i?.description,helperText:i?.description?.message})}))};export{f as CampaignDescriptionField};
2
2
  //# sourceMappingURL=CampaignDescriptionField.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as s,Typography as i,TextField as c}from"@material-ui/core";import e from"react";import{Controller as u}from"react-hook-form";import{CAMPAIGN_FIELDS as f}from"../../utils/campaignFormUtils.esm.js";const g=s(a=>({helperText:{marginLeft:0},container:{marginBottom:a.spacing(2)}})),h=({control:a,errors:t,isLoading:m,disabled:p})=>{const l=g(),{name:r}=f.details;return e.createElement("div",{className:l.container},e.createElement(i,{variant:"subtitle2"},r.name),e.createElement(i,{variant:"caption"},r.description),e.createElement(u,{name:"detailsStep.name",control:a,defaultValue:"",render:({field:d})=>{var n,o;return e.createElement(c,{...d,FormHelperTextProps:{className:l.helperText},variant:"outlined",fullWidth:!0,placeholder:r.placeholder,disabled:m||p,type:"text",margin:"dense",error:!!(t!=null&&t.name),helperText:(o=(n=t==null?void 0:t.name)==null?void 0:n.message)!=null?o:r.helperText})}}))};export{h as CampaignNameField};
1
+ import{makeStyles as p,Typography as l,TextField as s}from"@material-ui/core";import e from"react";import{Controller as c}from"react-hook-form";import{CAMPAIGN_FIELDS as d}from"../../utils/campaignFormUtils.esm.js";const g=p(r=>({helperText:{marginLeft:0},container:{marginBottom:r.spacing(2)}})),f=({control:r,errors:a,isLoading:o,disabled:i})=>{const n=g(),{name:t}=d.details;return e.createElement("div",{className:n.container},e.createElement(l,{variant:"subtitle2"},t.name),e.createElement(l,{variant:"caption"},t.description),e.createElement(c,{name:"detailsStep.name",control:r,defaultValue:"",render:({field:m})=>e.createElement(s,{...m,FormHelperTextProps:{className:n.helperText},variant:"outlined",fullWidth:!0,placeholder:t.placeholder,disabled:o||i,type:"text",margin:"dense",error:!!a?.name,helperText:a?.name?.message??t.helperText})}))};export{f as CampaignNameField};
2
2
  //# sourceMappingURL=CampaignNameField.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as v,Typography as c}from"@material-ui/core";import{uniqBy as g}from"lodash";import e from"react";import"../../../../../contexts/TrackFormContext.esm.js";import"../../../../../contexts/CheckFormContext.esm.js";import"../../../../../contexts/CampaignFormContext.esm.js";import{useLoggedInUser as E}from"../../../../../contexts/UserProvider.esm.js";import{FormControlledSelect as y}from"../../../../FormControlledSelect/FormControlledSelect.esm.js";import{useOptions as h}from"../../../../GroupSelector/useOptions.esm.js";import{CAMPAIGN_FIELDS as w}from"../../utils/campaignFormUtils.esm.js";const x=v(t=>({helperText:{marginLeft:0},selectField:{display:"flex",flexDirection:"column",gap:t.spacing(1),marginBottom:t.spacing(2)},fieldContainer:{width:"250px"}})),C=({control:t,errors:l,isLoading:u,disabled:f})=>{var o,n;const i=x(),{owner:a}=w.details,{options:m}=h(),{user:s,userEntityRef:p}=E();let r=g(m==null?void 0:m.map(d=>({value:d.ref,label:d.name})),"value");return p&&(r=[{value:p,label:s==null?void 0:s.metadata.name},...r]),e.createElement("div",{className:i.selectField},e.createElement("header",null,e.createElement(c,{variant:"subtitle2"},a.name),e.createElement(c,{variant:"caption"},a.description)),e.createElement("div",{className:i.fieldContainer},e.createElement(y,{name:"detailsStep.ownerEntityRef",control:t,options:r,placeholder:"Owner",disabled:f||u,style:{width:"100%"},helperText:(n=(o=l==null?void 0:l.ownerEntityRef)==null?void 0:o.message)!=null?n:void 0})))};export{C as CampaignOwnerField};
1
+ import{makeStyles as f,Typography as l}from"@material-ui/core";import{uniqBy as u}from"lodash";import e from"react";import"../../../../../contexts/TrackFormContext.esm.js";import"../../../../../contexts/CheckFormContext.esm.js";import"../../../../../contexts/CampaignFormContext.esm.js";import{useLoggedInUser as g}from"../../../../../contexts/UserProvider.esm.js";import{FormControlledSelect as E}from"../../../../FormControlledSelect/FormControlledSelect.esm.js";import{useOptions as y}from"../../../../GroupSelector/useOptions.esm.js";import{CAMPAIGN_FIELDS as v}from"../../utils/campaignFormUtils.esm.js";const h=f(t=>({helperText:{marginLeft:0},selectField:{display:"flex",flexDirection:"column",gap:t.spacing(1),marginBottom:t.spacing(2)},fieldContainer:{width:"250px"}})),w=({control:t,errors:m,isLoading:s,disabled:p})=>{const o=h(),{owner:i}=v.details,{options:d}=y(),{user:c,userEntityRef:a}=g();let r=u(d?.map(n=>({value:n.ref,label:n.name})),"value");return a&&(r=[{value:a,label:c?.metadata.name},...r]),e.createElement("div",{className:o.selectField},e.createElement("header",null,e.createElement(l,{variant:"subtitle2"},i.name),e.createElement(l,{variant:"caption"},i.description)),e.createElement("div",{className:o.fieldContainer},e.createElement(E,{name:"detailsStep.ownerEntityRef",control:t,options:r,placeholder:"Owner",disabled:p||s,style:{width:"100%"},helperText:m?.ownerEntityRef?.message??void 0})))};export{w as CampaignOwnerField};
2
2
  //# sourceMappingURL=CampaignOwnerField.esm.js.map
@@ -1,2 +1,2 @@
1
- import C from"@date-io/luxon";import{makeStyles as F,Typography as g}from"@material-ui/core";import{KeyboardDatePicker as D}from"@material-ui/pickers/DatePicker";import{MuiPickersUtilsProvider as b}from"@material-ui/pickers/MuiPickersUtilsProvider";import e,{useState as s}from"react";import{Controller as y}from"react-hook-form";import{CAMPAIGN_FIELDS as S}from"../../../utils/campaignFormUtils.esm.js";import{EndDateChips as O}from"./EndDateChips.esm.js";const I=F(t=>({helperText:{margin:t.spacing(.5,0)},selectFieldGroup:{display:"flex",flexDirection:"column",gap:t.spacing(2),marginBottom:t.spacing(2)},selectField:{display:"flex",flexDirection:"column",gap:t.spacing(1),padding:0},scheduleTitle:{fontWeight:"bold"},fieldContainer:{width:"250px"},select:{width:"100%",height:"100%",paddingRight:t.spacing(.5),"& button":{paddingTop:0,paddingBottom:0,"&:hover":{backgroundColor:"transparent"}}},dialog:{padding:0,"& [class*=MuiToolbar-root]":{backgroundColor:t.palette.background.paper,borderBottom:`1px solid ${t.palette.divider}`,"& [class*=MuiPickersToolbarText]":{color:t.palette.text.primary}},"& [class*=MuiDialogActions-root]":{borderTop:`1px solid ${t.palette.divider}`,padding:t.spacing(1),"& [class*=MuiButton-label]":{color:t.palette.text.primary}}}})),B=({control:t,errors:l,isLoading:d,disabled:p,startDate:x})=>{const a=I(),[E,c]=s(!1),[N,m]=s(!1),[P,T]=s(x),[M,f]=s(void 0),{startingDate:h,endingDate:v}=S.details;return e.createElement("div",{className:a.selectFieldGroup},e.createElement(g,{variant:"subtitle2",className:a.scheduleTitle},"Campaign schedule"),e.createElement("div",{className:a.selectField},e.createElement(g,{variant:"subtitle2"},h.name),e.createElement("div",{className:a.fieldContainer},e.createElement(y,{control:t,name:"detailsStep.startDate",render:({field:r})=>{var n,i;const{ref:k,...u}=r;return e.createElement(b,{utils:C},e.createElement(D,{inputRef:r.ref,...u,format:"MMMM dd, yyyy",autoOk:!0,FormHelperTextProps:{className:a.helperText},inputVariant:"outlined",className:a.select,error:!!(l!=null&&l.startDate),helperText:(i=(n=l==null?void 0:l.startDate)==null?void 0:n.message)!=null?i:void 0,onChange:o=>{T(o),r.onChange(o)},open:E,disabled:d||p,DialogProps:{PaperProps:{className:a.dialog}},margin:"dense",size:"small",InputProps:{readOnly:!0,placeholder:h.placeholder,onClick:()=>c(!0),className:a.select},onOpen:()=>c(!0),onClose:()=>c(!1)}))}}))),e.createElement("div",{className:a.selectField},e.createElement(g,{variant:"subtitle2"},v.name),e.createElement("div",{className:a.fieldContainer},e.createElement(y,{name:"detailsStep.targetCompletionDate",control:t,render:({field:r})=>{var n,i;const{ref:k,...u}=r;return e.createElement(b,{utils:C},e.createElement(D,{inputRef:r.ref,...u,disablePast:!0,format:"MMMM dd, yyyy",autoOk:!0,FormHelperTextProps:{className:a.helperText},inputVariant:"outlined",className:a.select,error:!!(l!=null&&l.targetCompletionDate),helperText:(i=(n=l==null?void 0:l.targetCompletionDate)==null?void 0:n.message)!=null?i:void 0,onChange:o=>{r.onChange(o)},open:N,disabled:d||p,DialogProps:{PaperProps:{className:a.dialog}},InputProps:{readOnly:!0,placeholder:v.placeholder,onClick:()=>m(!0),className:a.select,margin:"dense"},margin:"dense",onOpen:()=>{f(void 0),m(!0)},onClose:()=>m(!1),ToolbarComponent:o=>e.createElement(O,{props:o,isLoading:d,disabled:!!p,startDate:P,selectedDuration:M,setSelectedDuration:f})}))}}))))};export{B as CampaignScheduleField};
1
+ import h from"@date-io/luxon";import{makeStyles as N,Typography as m}from"@material-ui/core";import{KeyboardDatePicker as C}from"@material-ui/pickers/DatePicker";import{MuiPickersUtilsProvider as b}from"@material-ui/pickers/MuiPickersUtilsProvider";import e,{useState as i}from"react";import{Controller as D}from"react-hook-form";import{CAMPAIGN_FIELDS as k}from"../../../utils/campaignFormUtils.esm.js";import{EndDateChips as F}from"./EndDateChips.esm.js";const S=N(t=>({helperText:{margin:t.spacing(.5,0)},selectFieldGroup:{display:"flex",flexDirection:"column",gap:t.spacing(2),marginBottom:t.spacing(2)},selectField:{display:"flex",flexDirection:"column",gap:t.spacing(1),padding:0},scheduleTitle:{fontWeight:"bold"},fieldContainer:{width:"250px"},select:{width:"100%",height:"100%",paddingRight:t.spacing(.5),"& button":{paddingTop:0,paddingBottom:0,"&:hover":{backgroundColor:"transparent"}}},dialog:{padding:0,"& [class*=MuiToolbar-root]":{backgroundColor:t.palette.background.paper,borderBottom:`1px solid ${t.palette.divider}`,"& [class*=MuiPickersToolbarText]":{color:t.palette.text.primary}},"& [class*=MuiDialogActions-root]":{borderTop:`1px solid ${t.palette.divider}`,padding:t.spacing(1),"& [class*=MuiButton-label]":{color:t.palette.text.primary}}}})),O=({control:t,errors:o,isLoading:n,disabled:s,startDate:x})=>{const a=S(),[v,d]=i(!1),[y,p]=i(!1),[E,T]=i(x),[P,g]=i(void 0),{startingDate:u,endingDate:f}=k.details;return e.createElement("div",{className:a.selectFieldGroup},e.createElement(m,{variant:"subtitle2",className:a.scheduleTitle},"Campaign schedule"),e.createElement("div",{className:a.selectField},e.createElement(m,{variant:"subtitle2"},u.name),e.createElement("div",{className:a.fieldContainer},e.createElement(D,{control:t,name:"detailsStep.startDate",render:({field:r})=>{const{ref:M,...c}=r;return e.createElement(b,{utils:h},e.createElement(C,{inputRef:r.ref,...c,format:"MMMM dd, yyyy",autoOk:!0,FormHelperTextProps:{className:a.helperText},inputVariant:"outlined",className:a.select,error:!!o?.startDate,helperText:o?.startDate?.message??void 0,onChange:l=>{T(l),r.onChange(l)},open:v,disabled:n||s,DialogProps:{PaperProps:{className:a.dialog}},margin:"dense",size:"small",InputProps:{readOnly:!0,placeholder:u.placeholder,onClick:()=>d(!0),className:a.select},onOpen:()=>d(!0),onClose:()=>d(!1)}))}}))),e.createElement("div",{className:a.selectField},e.createElement(m,{variant:"subtitle2"},f.name),e.createElement("div",{className:a.fieldContainer},e.createElement(D,{name:"detailsStep.targetCompletionDate",control:t,render:({field:r})=>{const{ref:M,...c}=r;return e.createElement(b,{utils:h},e.createElement(C,{inputRef:r.ref,...c,disablePast:!0,format:"MMMM dd, yyyy",autoOk:!0,FormHelperTextProps:{className:a.helperText},inputVariant:"outlined",className:a.select,error:!!o?.targetCompletionDate,helperText:o?.targetCompletionDate?.message??void 0,onChange:l=>{r.onChange(l)},open:y,disabled:n||s,DialogProps:{PaperProps:{className:a.dialog}},InputProps:{readOnly:!0,placeholder:f.placeholder,onClick:()=>p(!0),className:a.select,margin:"dense"},margin:"dense",onOpen:()=>{g(void 0),p(!0)},onClose:()=>p(!1),ToolbarComponent:l=>e.createElement(F,{props:l,isLoading:n,disabled:!!s,startDate:E,selectedDuration:P,setSelectedDuration:g})}))}}))))};export{O as CampaignScheduleField};
2
2
  //# sourceMappingURL=CampaignScheduleField.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as s,Typography as l}from"@material-ui/core";import e from"react";import{FormTextInput as d}from"../../../../FormTextInput/FormTextInput.esm.js";import{CAMPAIGN_FIELDS as c}from"../../utils/campaignFormUtils.esm.js";const u=s(r=>({fieldContainer:{width:"250px"},container:{marginBottom:r.spacing(2)}})),v=({control:r,errors:n,isLoading:p,disabled:m})=>{var a,o;const i=u(),{support:t}=c.details;return e.createElement("div",{className:i.container},e.createElement(l,{variant:"subtitle2"},t.name),e.createElement(l,{variant:"caption"},t.description),e.createElement("div",{className:i.fieldContainer},e.createElement(d,{name:"detailsStep.supportChannel",control:r,placeholder:t.placeholder,disabled:m||p,variant:"outlined",margin:"dense",error:n==null?void 0:n.supportChannel,helperText:(o=(a=n==null?void 0:n.supportChannel)==null?void 0:a.message)!=null?o:void 0})))};export{v as CampaignSupportChannelField};
1
+ import{makeStyles as p,Typography as o}from"@material-ui/core";import e from"react";import{FormTextInput as m}from"../../../../FormTextInput/FormTextInput.esm.js";import{CAMPAIGN_FIELDS as s}from"../../utils/campaignFormUtils.esm.js";const d=p(t=>({fieldContainer:{width:"250px"},container:{marginBottom:t.spacing(2)}})),c=({control:t,errors:a,isLoading:i,disabled:l})=>{const n=d(),{support:r}=s.details;return e.createElement("div",{className:n.container},e.createElement(o,{variant:"subtitle2"},r.name),e.createElement(o,{variant:"caption"},r.description),e.createElement("div",{className:n.fieldContainer},e.createElement(m,{name:"detailsStep.supportChannel",control:t,placeholder:r.placeholder,disabled:l||i,variant:"outlined",margin:"dense",error:a?.supportChannel,helperText:a?.supportChannel?.message??void 0})))};export{c as CampaignSupportChannelField};
2
2
  //# sourceMappingURL=CampaignSupportChannelField.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as R,Divider as A,Grid as h,Typography as c,TextField as f}from"@material-ui/core";import H from"@material-ui/icons/Remove";import e from"react";import{useFieldArray as I,Controller as T}from"react-hook-form";import{NoBorderButton as b}from"../../../NoBorderButton/NoBorderButton.esm.js";import{CAMPAIGN_FIELDS as M}from"../utils/campaignFormUtils.esm.js";const k=R(m=>({milestoneHeader:{display:"flex",alignItems:"center",marginBottom:m.spacing(1)},divider:{margin:"20px 0"},helperText:{marginLeft:0},selectContainer:{width:"250px"},section:{marginBottom:m.spacing(2)}})),B=({control:m,errors:l,isLoading:E,disabled:d})=>{const n=k(),{name:v,description:x,passrate:g}=M.milestones,{fields:y,append:N,remove:C}=I({control:m,name:"milestonesStep.milestones"}),F=()=>N({name:"",description:"",passRate:"0"});return e.createElement(e.Fragment,null,y.map((S,t)=>e.createElement("div",{key:S.id},t!==0&&e.createElement(A,{className:n.divider}),e.createElement(h,{container:!0,spacing:1,className:n.milestoneHeader},e.createElement(h,{item:!0,xs:!0},e.createElement(c,{variant:"subtitle2"},v.name),e.createElement(c,{variant:"caption"},v.description),e.createElement(T,{name:`milestonesStep.milestones.${t}.name`,control:m,defaultValue:"",render:({field:p})=>{var r,a,i,s,o,u;return e.createElement(f,{...p,FormHelperTextProps:{className:n.helperText},variant:"outlined",fullWidth:!0,placeholder:v.placeholder,disabled:E||d,type:"text",margin:"dense",error:!!((a=(r=l==null?void 0:l.milestones)==null?void 0:r[t])!=null&&a.name),helperText:(u=(o=(s=(i=l==null?void 0:l.milestones)==null?void 0:i[t])==null?void 0:s.name)==null?void 0:o.message)!=null?u:v.helperText})}})),t!==0&&!d&&e.createElement(h,{item:!0},e.createElement(b,{label:"Remove Milestone",startIcon:e.createElement(H,null),onClick:()=>C(t),disabled:d}))),e.createElement("div",{className:n.section},e.createElement(c,{variant:"subtitle2"},x.name),e.createElement(c,{variant:"caption"},x.description),e.createElement(T,{name:`milestonesStep.milestones.${t}.description`,control:m,defaultValue:"",render:({field:p})=>{var r,a,i,s,o;return e.createElement(f,{...p,FormHelperTextProps:{className:n.helperText},variant:"outlined",multiline:!0,minRows:4,fullWidth:!0,placeholder:x.placeholder,disabled:E||d,type:"text",margin:"dense",error:!!((a=(r=l==null?void 0:l.milestones)==null?void 0:r[t])!=null&&a.description),helperText:(o=(s=(i=l==null?void 0:l.milestones)==null?void 0:i[t])==null?void 0:s.description)==null?void 0:o.message})}})),e.createElement("div",{className:n.section},e.createElement(c,{variant:"subtitle2"},g.name),e.createElement(c,{variant:"caption"},g.description),e.createElement("div",{className:n.selectContainer},e.createElement(T,{name:`milestonesStep.milestones.${t}.passRate`,control:m,defaultValue:"",render:({field:p})=>{var r,a,i,s,o,u;return e.createElement(f,{...p,FormHelperTextProps:{className:n.helperText},variant:"outlined",fullWidth:!0,placeholder:g.placeholder,disabled:E||d,type:"number",margin:"dense",error:!!((a=(r=l==null?void 0:l.milestones)==null?void 0:r[t])!=null&&a.passRate),helperText:(u=(o=(s=(i=l==null?void 0:l.milestones)==null?void 0:i[t])==null?void 0:s.passRate)==null?void 0:o.message)!=null?u:void 0})}}))))),e.createElement(b,{label:"Add Milestone",onClick:()=>F(),disabled:d}))};export{B as CampaignMilestonesStep};
1
+ import{makeStyles as b,Divider as y,Grid as p,Typography as i,TextField as E}from"@material-ui/core";import N from"@material-ui/icons/Remove";import e from"react";import{useFieldArray as C,Controller as u}from"react-hook-form";import{NoBorderButton as x}from"../../../NoBorderButton/NoBorderButton.esm.js";import{CAMPAIGN_FIELDS as F}from"../utils/campaignFormUtils.esm.js";const S=b(r=>({milestoneHeader:{display:"flex",alignItems:"center",marginBottom:r.spacing(1)},divider:{margin:"20px 0"},helperText:{marginLeft:0},selectContainer:{width:"250px"},section:{marginBottom:r.spacing(2)}})),R=({control:r,errors:n,isLoading:o,disabled:l})=>{const a=S(),{name:s,description:c,passrate:d}=F.milestones,{fields:f,append:g,remove:h}=C({control:r,name:"milestonesStep.milestones"}),v=()=>g({name:"",description:"",passRate:"0"});return e.createElement(e.Fragment,null,f.map((T,t)=>e.createElement("div",{key:T.id},t!==0&&e.createElement(y,{className:a.divider}),e.createElement(p,{container:!0,spacing:1,className:a.milestoneHeader},e.createElement(p,{item:!0,xs:!0},e.createElement(i,{variant:"subtitle2"},s.name),e.createElement(i,{variant:"caption"},s.description),e.createElement(u,{name:`milestonesStep.milestones.${t}.name`,control:r,defaultValue:"",render:({field:m})=>e.createElement(E,{...m,FormHelperTextProps:{className:a.helperText},variant:"outlined",fullWidth:!0,placeholder:s.placeholder,disabled:o||l,type:"text",margin:"dense",error:!!n?.milestones?.[t]?.name,helperText:n?.milestones?.[t]?.name?.message??s.helperText})})),t!==0&&!l&&e.createElement(p,{item:!0},e.createElement(x,{label:"Remove Milestone",startIcon:e.createElement(N,null),onClick:()=>h(t),disabled:l}))),e.createElement("div",{className:a.section},e.createElement(i,{variant:"subtitle2"},c.name),e.createElement(i,{variant:"caption"},c.description),e.createElement(u,{name:`milestonesStep.milestones.${t}.description`,control:r,defaultValue:"",render:({field:m})=>e.createElement(E,{...m,FormHelperTextProps:{className:a.helperText},variant:"outlined",multiline:!0,minRows:4,fullWidth:!0,placeholder:c.placeholder,disabled:o||l,type:"text",margin:"dense",error:!!n?.milestones?.[t]?.description,helperText:n?.milestones?.[t]?.description?.message})})),e.createElement("div",{className:a.section},e.createElement(i,{variant:"subtitle2"},d.name),e.createElement(i,{variant:"caption"},d.description),e.createElement("div",{className:a.selectContainer},e.createElement(u,{name:`milestonesStep.milestones.${t}.passRate`,control:r,defaultValue:"",render:({field:m})=>e.createElement(E,{...m,FormHelperTextProps:{className:a.helperText},variant:"outlined",fullWidth:!0,placeholder:d.placeholder,disabled:o||l,type:"number",margin:"dense",error:!!n?.milestones?.[t]?.passRate,helperText:n?.milestones?.[t]?.passRate?.message??void 0})}))))),e.createElement(x,{label:"Add Milestone",onClick:()=>v(),disabled:l}))};export{R as CampaignMilestonesStep};
2
2
  //# sourceMappingURL=CampaignMilestonesStep.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as E,FormControl as x,Typography as d,Grid as o}from"@material-ui/core";import{findIndex as b}from"lodash";import e,{useCallback as y}from"react";import{DndProvider as v}from"react-dnd";import{HTML5Backend as S}from"react-dnd-html5-backend";import{useFieldArray as T,Controller as D}from"react-hook-form";import N from"../../../../hooks/useFeatureFlag.esm.js";import{ChecksErrors as L}from"../../../ChecksErrors/ChecksErrors.esm.js";import{DroppableInput as M}from"../../../DroppableInput/DroppableInput.esm.js";import{ChecksSection as I}from"../../../TrackForm/Steps/LevelsStep/ChecksSection/ChecksSection.esm.js";const w=E(t=>({columnHeader:{display:"flex",justifyContent:"space-between",alignItems:"center"},subtitle:{color:t.palette.text.primary,marginLeft:"-16px"},helperText:{fontSize:t.typography.subtitle2.fontSize,color:t.palette.textSubtle,marginBottom:t.spacing(1)},levelsContainer:{marginTop:"0",flexDirection:"column"},errorText:{marginTop:t.spacing(3),marginLeft:t.spacing(-4)},formContainer:{width:"100%"}})),H=({control:t,disabled:l,isLoading:i,errors:r,checkChips:m})=>{const a=w(),{fields:c,remove:s,replace:h}=T({control:t,name:"tracksStep.checks",keyName:"key"});N("debugMode")&&(console.log(m),console.log(c));const g=new Set(c.flatMap(({id:n})=>n)),f=m.filter(n=>!g.has(n.id)),p=n=>{h([...c,n])},k=y(n=>{const u=b(c,C=>C.id===n.id);s(u)},[s,c]);return e.createElement(D,{control:t,name:"tracksStep.checks",render:()=>e.createElement(x,{error:!!(r!=null&&r.checks),disabled:l||i,variant:"outlined",className:a.formContainer},e.createElement(d,{className:a.helperText},"Drag or right-click on a check to add it to the Campaign."),e.createElement(o,{item:!0,xs:12},e.createElement(o,{container:!0,spacing:4},e.createElement(v,{backend:S},e.createElement(o,{item:!0,xs:5},e.createElement(I,{chips:f,isLoading:i,disabled:l,label:"Campaign Checks",onContextMenuAdd:p})),e.createElement(o,{item:!0,xs:7},e.createElement(o,{container:!0},e.createElement(o,{item:!0,xs:12,className:a.columnHeader},e.createElement(d,{variant:"subtitle1",className:a.subtitle},"Included Checks")),e.createElement(o,{container:!0,item:!0,spacing:5,className:a.levelsContainer},e.createElement(M,{chips:c,onDelete:k,onDrop:p,error:!!(r!=null&&r.checks),placeholder:"Drag and drop checks here to include them in this level",disabled:l}))),(r==null?void 0:r.checks)&&e.createElement("div",{className:a.errorText},e.createElement(L,{checksErrors:r.checks})))))))})};export{H as CampaignTrackStep};
1
+ import{makeStyles as E,FormControl as x,Typography as d,Grid as a}from"@material-ui/core";import{findIndex as b}from"lodash";import e,{useCallback as y}from"react";import{DndProvider as S}from"react-dnd";import{HTML5Backend as T}from"react-dnd-html5-backend";import{useFieldArray as v,Controller as D}from"react-hook-form";import N from"../../../../hooks/useFeatureFlag.esm.js";import{ChecksErrors as L}from"../../../ChecksErrors/ChecksErrors.esm.js";import{DroppableInput as M}from"../../../DroppableInput/DroppableInput.esm.js";import{ChecksSection as I}from"../../../TrackForm/Steps/LevelsStep/ChecksSection/ChecksSection.esm.js";const w=E(t=>({columnHeader:{display:"flex",justifyContent:"space-between",alignItems:"center"},subtitle:{color:t.palette.text.primary,marginLeft:"-16px"},helperText:{fontSize:t.typography.subtitle2.fontSize,color:t.palette.textSubtle,marginBottom:t.spacing(1)},levelsContainer:{marginTop:"0",flexDirection:"column"},errorText:{marginTop:t.spacing(3),marginLeft:t.spacing(-4)},formContainer:{width:"100%"}})),H=({control:t,disabled:i,isLoading:l,errors:c,checkChips:m})=>{const o=w(),{fields:n,remove:s,replace:h}=v({control:t,name:"tracksStep.checks",keyName:"key"});N("debugMode")&&(console.log(m),console.log(n));const g=new Set(n.flatMap(({id:r})=>r)),f=m.filter(r=>!g.has(r.id)),p=r=>{h([...n,r])},k=y(r=>{const u=b(n,C=>C.id===r.id);s(u)},[s,n]);return e.createElement(D,{control:t,name:"tracksStep.checks",render:()=>e.createElement(x,{error:!!c?.checks,disabled:i||l,variant:"outlined",className:o.formContainer},e.createElement(d,{className:o.helperText},"Drag or right-click on a check to add it to the Campaign."),e.createElement(a,{item:!0,xs:12},e.createElement(a,{container:!0,spacing:4},e.createElement(S,{backend:T},e.createElement(a,{item:!0,xs:5},e.createElement(I,{chips:f,isLoading:l,disabled:i,label:"Campaign Checks",onContextMenuAdd:p})),e.createElement(a,{item:!0,xs:7},e.createElement(a,{container:!0},e.createElement(a,{item:!0,xs:12,className:o.columnHeader},e.createElement(d,{variant:"subtitle1",className:o.subtitle},"Included Checks")),e.createElement(a,{container:!0,item:!0,spacing:5,className:o.levelsContainer},e.createElement(M,{chips:n,onDelete:k,onDrop:p,error:!!c?.checks,placeholder:"Drag and drop checks here to include them in this level",disabled:i}))),c?.checks&&e.createElement("div",{className:o.errorText},e.createElement(L,{checksErrors:c.checks})))))))})};export{H as CampaignTrackStep};
2
2
  //# sourceMappingURL=CampaignTrackStep.esm.js.map
@@ -1,2 +1,2 @@
1
- import{v4 as C}from"uuid";import{mapInputFilterToFormFilters as S}from"../../../Filter/utils.esm.js";import"../../../Filter/FilterComponent.esm.js";import{mapTrackFormToInput as h}from"../../../TrackForm/utils/useTrackForm.esm.js";const D=({name:s,ownerEntityRef:t,description:r,targetCompletionDate:o,supportChannel:l,milestones:a,startDate:m,track:n})=>{var p;return{detailsStep:{name:s,description:r,ownerEntityRef:t,supportChannel:l,startDate:m,targetCompletionDate:o},tracksStep:{checks:(p=n==null?void 0:n.levels)==null?void 0:p[0].checks.map(e=>{var i;return{id:e.id,name:(i=e.name)!=null?i:e.id,description:e.description}})},filtersStep:S(n.filter),milestonesStep:{milestones:a.map(e=>({id:Number(e.id),name:e.name,description:e.description,passRate:e.targetPercent.toString()}))}}},R=(s,t,r)=>{var o;const{tracksStep:{checks:l},detailsStep:{name:a,description:m,ownerEntityRef:n,supportChannel:p,startDate:e,targetCompletionDate:i},filtersStep:d,milestonesStep:{milestones:u}}=s,c=h({detailsStep:{name:`${a}`,description:`The checks for the ${a} campaign.`,ownerEntityRef:n},levelsStep:{levels:[{name:"Level 1",checks:l,description:""}]},filtersStep:{filter:d}},r!=null?r:{},t==null?void 0:t.track);return{id:(o=t==null?void 0:t.id)!=null?o:C(),track:{...c,type:"campaign"},name:a,description:m,ownerEntityRef:n,supportChannel:p,startDate:e,targetCompletionDate:i,milestones:u.map(({id:f,name:g,description:k,passRate:v})=>({id:f,trackId:c.id,name:g,description:k,targetPercent:parseInt(v,10),targetCompletionDate:i}))}};export{R as mapCampaignFormDataToCampaignInput,D as mapCampaignToFormValues};
1
+ import{v4 as S}from"uuid";import{mapInputFilterToFormFilters as h}from"../../../Filter/utils.esm.js";import"../../../Filter/FilterComponent.esm.js";import{mapTrackFormToInput as u}from"../../../TrackForm/utils/useTrackForm.esm.js";const D=({name:r,ownerEntityRef:a,description:p,targetCompletionDate:o,supportChannel:e,milestones:s,startDate:i,track:n})=>({detailsStep:{name:r,description:p,ownerEntityRef:a,supportChannel:e,startDate:i,targetCompletionDate:o},tracksStep:{checks:n?.levels?.[0].checks.map(t=>({id:t.id,name:t.name??t.id,description:t.description}))},filtersStep:h(n.filter),milestonesStep:{milestones:s.map(t=>({id:Number(t.id),name:t.name,description:t.description,passRate:t.targetPercent.toString()}))}}),R=(r,a,p)=>{const{tracksStep:{checks:o},detailsStep:{name:e,description:s,ownerEntityRef:i,supportChannel:n,startDate:t,targetCompletionDate:m},filtersStep:l,milestonesStep:{milestones:d}}=r,c=u({detailsStep:{name:`${e}`,description:`The checks for the ${e} campaign.`,ownerEntityRef:i},levelsStep:{levels:[{name:"Level 1",checks:o,description:""}]},filtersStep:{filter:l}},p??{},a?.track);return{id:a?.id??S(),track:{...c,type:"campaign"},name:e,description:s,ownerEntityRef:i,supportChannel:n,startDate:t,targetCompletionDate:m,milestones:d.map(({id:f,name:g,description:k,passRate:C})=>({id:f,trackId:c.id,name:g,description:k,targetPercent:parseInt(C,10),targetCompletionDate:m}))}};export{R as mapCampaignFormDataToCampaignInput,D as mapCampaignToFormValues};
2
2
  //# sourceMappingURL=utils.esm.js.map
@@ -1,2 +1,2 @@
1
- import{useEntity as f}from"@backstage/plugin-catalog-react";import{styled as o,Accordion as E,AccordionSummary as b,AccordionDetails as y,makeStyles as h,Box as v}from"@material-ui/core";import R from"@material-ui/icons/ExpandMore";import e,{useRef as x}from"react";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import{useCertificationDetailsForTrack as k}from"../../hooks/certifications/useCertificationDetailsForTrack.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{AlertPanel as I}from"../AlertPanel/AlertPanel.esm.js";import"../CertificationSidebar/CertificationSidebar.esm.js";import{CertificationSummary as L}from"../CertificationSidebar/CertificationSummary.esm.js";import{CertificationSidebarSkeleton as C}from"../CertificationSidebar/skeletons/CertificationSidebarSkeleton.esm.js";import"@material-ui/lab";import{CertificationLevel as S}from"../CertificationSidebar/CertificationLevel.esm.js";const T=o(E)(({theme:t})=>({margin:"0",border:`1px solid ${t.palette.divider}`,borderRadius:0,"&.Mui-expanded":{borderRadius:0},"&:first-child":{borderTopLeftRadius:0,borderTopRightRadius:0},"&:last-child":{borderBottomLeftRadius:0,borderBottomRightRadius:0},"&:not(:first-child)":{borderTop:`1px solid ${t.palette.divider}`},"&:not(:last-child)":{marginBottom:t.spacing(1)}})),A=o(({...t})=>e.createElement(b,{classes:{content:"content",expanded:"expanded"},...t}))(({theme:t})=>({borderRadius:0,paddingTop:0,paddingLeft:0,paddingRight:t.spacing(1),"& > .content":{margin:"0 !important",padding:"0 !important"},"& > .content.expanded":{margin:"0 !important",padding:"0 !important"}})),B=o(y)(()=>({margin:"0 !important",borderRadius:0,padding:0})),d=h(()=>({sidebar:{width:"100%"}})),D=({playlistId:t,trackId:i,checkId:m})=>{var a;const l=d(),{entity:c}=f(),p=x(null),{data:r,isLoading:s,isError:u}=k(c,i);if(u)return e.createElement("div",null,e.createElement(v,{padding:2},e.createElement(I,{severity:"error",title:"Error loading certification"})));if(s||!i)return e.createElement(C,null);if(!r)return null;const g=r.program.type==="campaign";return e.createElement(T,{ref:p,defaultExpanded:!0,elevation:0},e.createElement(A,{expandIcon:e.createElement(R,null),"aria-controls":"certification-content",id:"certification-summary"},e.createElement(L,{name:r.program.name,badge:(a=r.highestLevel)==null?void 0:a.badge,description:r.program.description,documentationUrl:r.program.documentationURL,trackType:r.program.type})),e.createElement(B,null,e.createElement("div",{className:l.sidebar},r==null?void 0:r.levels.map(n=>e.createElement(S,{key:n.ordinal,level:n,checkId:m,trackId:i,playlistId:t,isCampaign:g})))))};export{D as CertificationAccordion,d as useStyles};
1
+ import{useEntity as u}from"@backstage/plugin-catalog-react";import{styled as o,Accordion as f,AccordionSummary as E,AccordionDetails as b,makeStyles as y,Box as h}from"@material-ui/core";import R from"@material-ui/icons/ExpandMore";import e,{useRef as x}from"react";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import{useCertificationDetailsForTrack as v}from"../../hooks/certifications/useCertificationDetailsForTrack.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{AlertPanel as k}from"../AlertPanel/AlertPanel.esm.js";import"../CertificationSidebar/CertificationSidebar.esm.js";import{CertificationSummary as I}from"../CertificationSidebar/CertificationSummary.esm.js";import{CertificationSidebarSkeleton as L}from"../CertificationSidebar/skeletons/CertificationSidebarSkeleton.esm.js";import"@material-ui/lab";import{CertificationLevel as T}from"../CertificationSidebar/CertificationLevel.esm.js";const C=o(f)(({theme:t})=>({margin:"0",border:`1px solid ${t.palette.divider}`,borderRadius:0,"&.Mui-expanded":{borderRadius:0},"&:first-child":{borderTopLeftRadius:0,borderTopRightRadius:0},"&:last-child":{borderBottomLeftRadius:0,borderBottomRightRadius:0},"&:not(:first-child)":{borderTop:`1px solid ${t.palette.divider}`},"&:not(:last-child)":{marginBottom:t.spacing(1)}})),S=o(({...t})=>e.createElement(E,{classes:{content:"content",expanded:"expanded"},...t}))(({theme:t})=>({borderRadius:0,paddingTop:0,paddingLeft:0,paddingRight:t.spacing(1),"& > .content":{margin:"0 !important",padding:"0 !important"},"& > .content.expanded":{margin:"0 !important",padding:"0 !important"}})),A=o(b)(()=>({margin:"0 !important",borderRadius:0,padding:0})),n=y(()=>({sidebar:{width:"100%"}})),B=({playlistId:t,trackId:i,checkId:d})=>{const m=n(),{entity:c}=u(),p=x(null),{data:r,isLoading:l,isError:s}=v(c,i);if(s)return e.createElement("div",null,e.createElement(h,{padding:2},e.createElement(k,{severity:"error",title:"Error loading certification"})));if(l||!i)return e.createElement(L,null);if(!r)return null;const g=r.program.type==="campaign";return e.createElement(C,{ref:p,defaultExpanded:!0,elevation:0},e.createElement(S,{expandIcon:e.createElement(R,null),"aria-controls":"certification-content",id:"certification-summary"},e.createElement(I,{name:r.program.name,badge:r.highestLevel?.badge,description:r.program.description,documentationUrl:r.program.documentationURL,trackType:r.program.type})),e.createElement(A,null,e.createElement("div",{className:m.sidebar},r?.levels.map(a=>e.createElement(T,{key:a.ordinal,level:a,checkId:d,trackId:i,playlistId:t,isCampaign:g})))))};export{B as CertificationAccordion,n as useStyles};
2
2
  //# sourceMappingURL=CertificationAccordion.esm.js.map
@@ -1,2 +1,2 @@
1
- import t from"react";import{CheckResultSummaryList as m}from"./CheckResultSummaryList.esm.js";import{LevelSummary as n}from"./LevelSummary.esm.js";const o=({level:e,checkId:c,trackId:a,playlistId:l,isCampaign:i})=>{var r;return t.createElement(t.Fragment,null,!i&&t.createElement(n,{badge:e.badge,title:e.name,description:e.description}),t.createElement(m,{checks:(r=e.checks)!=null?r:[],playlistId:l,trackId:a,checkId:c}))};export{o as CertificationLevel};
1
+ import t from"react";import{CheckResultSummaryList as m}from"./CheckResultSummaryList.esm.js";import{LevelSummary as l}from"./LevelSummary.esm.js";const n=({level:e,checkId:c,trackId:r,playlistId:a,isCampaign:i})=>t.createElement(t.Fragment,null,!i&&t.createElement(l,{badge:e.badge,title:e.name,description:e.description}),t.createElement(m,{checks:e.checks??[],playlistId:a,trackId:r,checkId:c}));export{n as CertificationLevel};
2
2
  //# sourceMappingURL=CertificationLevel.esm.js.map
@@ -1,2 +1,2 @@
1
- import{useEntity as d}from"@backstage/plugin-catalog-react";import{makeStyles as s,Box as f}from"@material-ui/core";import r from"react";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import{useCertificationDetailsForTrack as u}from"../../hooks/certifications/useCertificationDetailsForTrack.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{AlertPanel as g}from"../AlertPanel/AlertPanel.esm.js";import{CertificationLevel as y}from"./CertificationLevel.esm.js";import{CertificationSummary as k}from"./CertificationSummary.esm.js";import{CertificationSidebarSkeleton as v}from"./skeletons/CertificationSidebarSkeleton.esm.js";import"@material-ui/lab";const E=s(()=>({checks:{padding:0,margin:0,flex:1,listStyle:"none"}})),S=({playlistId:a,trackId:t,checkId:m})=>{var i;const{entity:n}=d(),{data:e,isLoading:l,isError:p}=u(n,t);if(p)return r.createElement("div",null,r.createElement(f,{padding:2},r.createElement(g,{severity:"error",title:"Error loading certification"})));if(l||!t)return r.createElement(v,null);if(!e)return null;const c=e.program.type==="campaign";return r.createElement("div",null,r.createElement(k,{name:e.program.name,badge:(i=e.highestLevel)==null?void 0:i.badge,description:e.program.description,documentationUrl:e.program.documentationURL,trackType:e.program.type}),e==null?void 0:e.levels.map(o=>r.createElement(y,{key:o.ordinal,level:o,checkId:m,trackId:t,playlistId:a,isCampaign:c})))};export{S as CertificationSidebar,E as useStyles};
1
+ import{useEntity as c}from"@backstage/plugin-catalog-react";import{makeStyles as d,Box as s}from"@material-ui/core";import r from"react";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import{useCertificationDetailsForTrack as f}from"../../hooks/certifications/useCertificationDetailsForTrack.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{AlertPanel as g}from"../AlertPanel/AlertPanel.esm.js";import{CertificationLevel as u}from"./CertificationLevel.esm.js";import{CertificationSummary as y}from"./CertificationSummary.esm.js";import{CertificationSidebarSkeleton as k}from"./skeletons/CertificationSidebarSkeleton.esm.js";import"@material-ui/lab";const E=d(()=>({checks:{padding:0,margin:0,flex:1,listStyle:"none"}})),v=({playlistId:o,trackId:t,checkId:a})=>{const{entity:m}=c(),{data:e,isLoading:n,isError:l}=f(m,t);if(l)return r.createElement("div",null,r.createElement(s,{padding:2},r.createElement(g,{severity:"error",title:"Error loading certification"})));if(n||!t)return r.createElement(k,null);if(!e)return null;const p=e.program.type==="campaign";return r.createElement("div",null,r.createElement(y,{name:e.program.name,badge:e.highestLevel?.badge,description:e.program.description,documentationUrl:e.program.documentationURL,trackType:e.program.type}),e?.levels.map(i=>r.createElement(u,{key:i.ordinal,level:i,checkId:a,trackId:t,playlistId:o,isCampaign:p})))};export{v as CertificationSidebar,E as useStyles};
2
2
  //# sourceMappingURL=CertificationSidebar.esm.js.map
@@ -1,2 +1,2 @@
1
- import{makeStyles as s,Typography as i}from"@material-ui/core";import p from"classnames";import t from"react";import{Link as d}from"react-router-dom";import{CheckIcon as u}from"../CheckIcon/CheckIcon.esm.js";import{RelativeTime as f}from"../RelativeTime/RelativeTime.esm.js";const a=s(e=>({root:{display:"grid",width:"100%",gridTemplateColumns:"auto 1fr auto",gridColumnGap:e.spacing(1),padding:e.spacing(1),alignItems:"center","&.selected":{backgroundColor:e.palette.action.hover},"&:hover, &:active, &:focus":{backgroundColor:e.palette.action.hover}}})),h=({className:e,href:r,children:o})=>r?t.createElement(d,{to:r,className:e},o):t.createElement("div",{className:e},o),g=({result:e,name:r,timestamp:o,selected:m=!1,href:l})=>{const c=a(),n=p(c.root,{selected:m});return t.createElement(h,{href:l,className:n},t.createElement(u,{result:e}),t.createElement(i,{variant:"body2"},r),o?t.createElement(f,{timestamp:o}):null)};export{g as Check,a as useStyles};
1
+ import{stringifyEntityRef as d}from"@backstage/catalog-model";import{useEntity as f}from"@backstage/plugin-catalog-react";import{makeStyles as E,Typography as g,Tooltip as y,IconButton as k,CircularProgress as C}from"@material-ui/core";import v from"@material-ui/icons/Refresh";import b from"classnames";import e from"react";import{Link as I}from"react-router-dom";import{useExecuteCheck as N}from"../../hooks/checks/useExecuteCheck.esm.js";import{CheckIcon as R}from"../CheckIcon/CheckIcon.esm.js";import{RelativeTime as T}from"../RelativeTime/RelativeTime.esm.js";const m=E(t=>({root:{display:"grid",width:"100%",gridTemplateColumns:"auto 1fr auto auto auto",gridColumnGap:t.spacing(.5),padding:t.spacing(1),alignItems:"center","&.selected":{backgroundColor:t.palette.action.hover},"&:hover, &:active, &:focus":{backgroundColor:t.palette.action.hover}}})),x=({className:t,href:r,name:o,children:a})=>r?e.createElement(I,{"aria-label":`select check ${o}`,to:r,className:t},a):e.createElement("div",{className:t},a),z=({result:t,name:r,id:o,timestamp:a,hasChecker:l=!1,selected:n=!1,href:s})=>{const p=m(),u=b(p.root,{selected:n}),{entity:c}=f(),{mutateAsync:h,isLoading:i}=N();return e.createElement(x,{href:s,className:u,name:r},e.createElement(R,{result:t}),e.createElement(g,{variant:"body2"},r),a&&!i?e.createElement(T,{timestamp:a}):null,!i&&e.createElement(y,{title:"Execute Check"},e.createElement(k,{size:"small",color:"inherit",onClick:async()=>{!c||!o||await h({checkerId:o,entityRef:d(c),shouldRefreshFacts:!0}).catch(S=>{})},disabled:!c||!o||!l},e.createElement(v,{fontSize:"small"}))),i&&e.createElement(C,{color:"inherit",size:"1em"}))};export{z as Check,m as useStyles};
2
2
  //# sourceMappingURL=Check.esm.js.map
@@ -1,2 +1,2 @@
1
- import{useRouteRef as l}from"@backstage/core-plugin-api";import{makeStyles as p,Typography as n}from"@material-ui/core";import c from"react";import{certificationRouteRef as k,certificationPlaylistTrackCheckRouteRef as h}from"../../routes.esm.js";import{Check as y}from"./Check.esm.js";const i=p(e=>({noChecks:{padding:e.spacing(1)},checks:{padding:0,margin:0,flex:1,listStyle:"none"},checkItem:{borderBottom:`1px solid ${e.palette.divider}`,"&:last-of-type":{borderBottom:"0"},color:e.palette.text.primary,"& a":{color:e.palette.text.primary,textDecoration:"none"}}})),f=({checks:e,playlistId:o,trackId:r,checkId:m})=>{const a=i(),s=l(k),d=l(h);return e.length?c.createElement("ul",{className:a.checks},e.map(t=>c.createElement("li",{key:t.id,className:a.checkItem},c.createElement(y,{...t,selected:t.id===m,href:o?d({playlistId:o,trackId:r,checkId:t.id}):s({trackId:r,checkId:t.id})})))):c.createElement(n,{variant:"body2",className:a.noChecks},"No applicable checks at this level.")};export{f as CheckResultSummaryList,i as useStyles};
1
+ import{useRouteRef as a}from"@backstage/core-plugin-api";import{makeStyles as h,Typography as f}from"@material-ui/core";import o from"react";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import{useGetChecks as y}from"../../hooks/checks/useGetChecks.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{certificationRouteRef as u,certificationPlaylistTrackCheckRouteRef as I}from"../../routes.esm.js";import{Check as g}from"./Check.esm.js";const m=h(e=>({noChecks:{padding:e.spacing(1)},checks:{padding:0,margin:0,flex:1,listStyle:"none"},checkItem:{borderBottom:`1px solid ${e.palette.divider}`,"&:last-of-type":{borderBottom:"0"},color:e.palette.text.primary,"& a":{color:e.palette.text.primary,textDecoration:"none"}}})),C=({checks:e,playlistId:c,trackId:i,checkId:l})=>{const r=m(),p=a(u),s=a(I),{data:d,isLoading:n}=y({ids:e.map(t=>t.id)});return e.length?o.createElement("ul",{className:r.checks},e.map(t=>o.createElement("li",{key:t.id,className:r.checkItem},o.createElement(g,{...t,hasChecker:!n&&(d?.edges??[]).map(k=>k.node.id).includes(t.id),selected:t.id===l,href:c?s({playlistId:c,trackId:i,checkId:t.id}):p({trackId:i,checkId:t.id})})))):o.createElement(f,{variant:"body2",className:r.noChecks},"No applicable checks at this level.")};export{C as CheckResultSummaryList,m as useStyles};
2
2
  //# sourceMappingURL=CheckResultSummaryList.esm.js.map
@@ -1,2 +1,2 @@
1
- import{useEntity as s}from"@backstage/plugin-catalog-react";import{makeStyles as c,Tab as d}from"@material-ui/core";import t from"react";import{Link as g}from"react-router-dom";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import{useCertificationDetailsForTrack as f}from"../../hooks/certifications/useCertificationDetailsForTrack.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{CertificationBadge as b}from"../Badges/CertificationBadge.esm.js";const o=c(e=>({root:{maxWidth:"80ch",textTransform:"uppercase",paddingTop:e.spacing(2),paddingBottom:e.spacing(2)},wrapper:{display:"inline-block",textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden"},badge:{marginRight:e.spacing(1)}})),u=({id:e,name:i,badge:p,href:m,selected:n=!1})=>{const r=o(),{entity:l}=s(),{data:a}=f(l,e);return t.createElement(d,{className:r.root,classes:{wrapper:r.wrapper},value:e,label:t.createElement(t.Fragment,null,t.createElement(b,{badge:p,trackType:a==null?void 0:a.program.type,className:r.badge}),i),component:g,to:m,selected:n})};export{u as CertificationTab,o as useStyles};
1
+ import{useEntity as c}from"@backstage/plugin-catalog-react";import{makeStyles as l,Tab as d}from"@material-ui/core";import t from"react";import{Link as g}from"react-router-dom";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import{useCertificationDetailsForTrack as f}from"../../hooks/certifications/useCertificationDetailsForTrack.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{CertificationBadge as b}from"../Badges/CertificationBadge.esm.js";const a=l(e=>({root:{maxWidth:"80ch",textTransform:"uppercase",paddingTop:e.spacing(2),paddingBottom:e.spacing(2)},wrapper:{display:"inline-block",textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden"},badge:{marginRight:e.spacing(1)}})),u=({id:e,name:o,badge:i,href:p,selected:m=!1})=>{const r=a(),{entity:n}=c(),{data:s}=f(n,e);return t.createElement(d,{className:r.root,classes:{wrapper:r.wrapper},value:e,label:t.createElement(t.Fragment,null,t.createElement(b,{badge:i,trackType:s?.program.type,className:r.badge}),o),component:g,to:p,selected:m})};export{u as CertificationTab,a as useStyles};
2
2
  //# sourceMappingURL=CertificationTab.esm.js.map
@@ -1,2 +1,2 @@
1
- import{useRouteRef as s}from"@backstage/core-plugin-api";import{useEntity as y}from"@backstage/plugin-catalog-react";import{Tabs as g}from"@material-ui/core";import m from"react";import{useAllCertifications as b}from"../../hooks/certifications/useAllCertifications.esm.js";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/catalog-model";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{usePlaylists as k}from"../../hooks/playlists/usePlaylists.esm.js";import{certificationPlaylistRouteRef as C,certificationTrackRouteRef as h}from"../../routes.esm.js";import{CertificationTab as I}from"./CertificationTab.esm.js";import{PlaylistCertificationTab as R}from"./PlaylistCertificationTab.esm.js";import{CertificationTabsSkeleton as T}from"./skeletons/CertificationTabsSkeleton.esm.js";function v(n=[],t=[],a,l){if(a){const r=n.findIndex(o=>o.id===a);return r<0?!1:r}const e=t.findIndex(r=>r.program.id===l);return e<0?!1:e+n.length}const E=({playlistId:n,trackId:t})=>{const{entity:a}=y(),{isLoading:l,data:e}=b(a),{isLoading:r,data:o}=k(a),c=s(C),d=s(h);if(r||l||!t)return m.createElement(T,null);const u=v(o,e,n,t);return m.createElement(g,{value:u,indicatorColor:"primary","aria-label":"Certifications",variant:"scrollable"},(o==null?void 0:o.length)&&o.map(({id:i,name:f})=>m.createElement(R,{key:i,id:i,name:f,selected:i===t,href:c({playlistId:i})})),e&&e.filter(({program:{type:i}})=>i!=="playlist").map(({program:{id:i,name:f},highestLevel:p})=>m.createElement(I,{key:i,id:i,name:f,badge:p==null?void 0:p.badge,selected:i===t,href:d({trackId:i})})))};export{E as CertificationTabs};
1
+ import{useRouteRef as p}from"@backstage/core-plugin-api";import{useEntity as y}from"@backstage/plugin-catalog-react";import{Tabs as g}from"@material-ui/core";import n from"react";import{useAllCertifications as b}from"../../hooks/certifications/useAllCertifications.esm.js";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/catalog-model";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{usePlaylists as h}from"../../hooks/playlists/usePlaylists.esm.js";import{certificationPlaylistRouteRef as C,certificationTrackRouteRef as k}from"../../routes.esm.js";import{CertificationTab as I}from"./CertificationTab.esm.js";import{PlaylistCertificationTab as R}from"./PlaylistCertificationTab.esm.js";import{CertificationTabsSkeleton as T}from"./skeletons/CertificationTabsSkeleton.esm.js";function E(m=[],t=[],o,l){if(o){const i=m.findIndex(a=>a.id===o);return i<0?!1:i}const r=t.findIndex(i=>i.program.id===l);return r<0?!1:r+m.length}const v=({playlistId:m,trackId:t})=>{const{entity:o}=y(),{isLoading:l,data:r}=b(o),{isLoading:i,data:a}=h(o),c=p(C),s=p(k);if(i||l||!t)return n.createElement(T,null);const d=E(a,r,m,t);return n.createElement(g,{value:d,indicatorColor:"primary","aria-label":"Certifications",variant:"scrollable"},a?.length&&a.map(({id:e,name:f})=>n.createElement(R,{key:e,id:e,name:f,selected:e===t,href:c({playlistId:e})})),r&&r.filter(({program:{type:e}})=>e!=="playlist").map(({program:{id:e,name:f},highestLevel:u})=>n.createElement(I,{key:e,id:e,name:f,badge:u?.badge,selected:e===t,href:s({trackId:e})})))};export{v as CertificationTabs};
2
2
  //# sourceMappingURL=CertificationTabs.esm.js.map
@@ -1,2 +1,2 @@
1
- import{stringifyEntityRef as u}from"@backstage/catalog-model";import{useEntity as v}from"@backstage/plugin-catalog-react";import{makeStyles as I,Paper as h,Divider as g}from"@material-ui/core";import e from"react";import{useParams as k}from"react-router-dom";import{useAllCertifications as C}from"../../hooks/certifications/useAllCertifications.esm.js";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{usePlaylists as P}from"../../hooks/playlists/usePlaylists.esm.js";import{AlertPanel as s}from"../AlertPanel/AlertPanel.esm.js";import{CertificationSidebar as b}from"../CertificationSidebar/CertificationSidebar.esm.js";import"../CertificationSidebar/CertificationSummary.esm.js";import"@material-ui/lab";import"../CertificationSidebar/Check.esm.js";import"../CertificationSidebar/LevelSummary.esm.js";import{isDarkTheme as w}from"../Charts/chartUtils.esm.js";import{CheckDetails as N}from"../CheckDetails/CheckDetails.esm.js";import{NoCertifications as R}from"../EmptyState/EmptyState.esm.js";import{LevelUpParty as $}from"../LevelUpParty/LevelUpParty.esm.js";import{RefetchingIndicator as x}from"../RefetchingIndicator/RefetchingIndicator.esm.js";import{CertificationTabs as D}from"./CertificationTabs.esm.js";import{PlaylistComponent as S}from"./Playlist/PlaylistComponent.esm.js";const p=I(t=>({paper:{overflow:"hidden",position:"relative",border:w(t)?`1px solid ${t.palette.divider}`:void 0},view:{display:"grid",gridTemplateColumns:"1fr 2fr"},sidebar:{borderRight:`1px solid ${t.palette.divider}`}})),T=()=>{const{playlistId:t,trackId:r,checkId:m}=k(),a=p(),{entity:i}=v(),{isError:c,isFetched:d,data:l}=C(i),{isError:f,data:n}=P(i);if(c||f)return e.createElement(s,{severity:"error",title:"Error loading certifications"});const o=t&&(n==null?void 0:n.find(E=>E.id===t));if(t&&!o)return e.createElement(s,{severity:"error",title:"Playlist ${playlistId} not found."});if(d&&!(l!=null&&l.length))return e.createElement(R,null);const y=i?u(i):void 0;return e.createElement(h,{className:a.paper},e.createElement(x,null),e.createElement(D,{playlistId:t,trackId:r}),e.createElement(g,null),o&&e.createElement(S,{playlist:o,entityRef:y}),!o&&r&&e.createElement("div",{"data-testid":"soundcheck-certification-view",className:a.view},e.createElement("div",{className:a.sidebar},e.createElement(b,{trackId:r,checkId:m})),e.createElement(N,{programId:r,checkId:m}),e.createElement($,{programId:r})))};export{T as CertificationsPage,p as useStyles};
1
+ import{stringifyEntityRef as u}from"@backstage/catalog-model";import{useEntity as v}from"@backstage/plugin-catalog-react";import{makeStyles as I,Paper as h,Divider as g}from"@material-ui/core";import e from"react";import{useParams as k}from"react-router-dom";import{useAllCertifications as C}from"../../hooks/certifications/useAllCertifications.esm.js";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{usePlaylists as P}from"../../hooks/playlists/usePlaylists.esm.js";import{AlertPanel as l}from"../AlertPanel/AlertPanel.esm.js";import{CertificationSidebar as b}from"../CertificationSidebar/CertificationSidebar.esm.js";import"../CertificationSidebar/CertificationSummary.esm.js";import"@material-ui/lab";import"../CertificationSidebar/Check.esm.js";import"../CertificationSidebar/LevelSummary.esm.js";import{isDarkTheme as w}from"../Charts/chartUtils.esm.js";import{CheckDetails as N}from"../CheckDetails/CheckDetails.esm.js";import{NoCertifications as R}from"../EmptyState/EmptyState.esm.js";import{LevelUpParty as $}from"../LevelUpParty/LevelUpParty.esm.js";import{RefetchingIndicator as x}from"../RefetchingIndicator/RefetchingIndicator.esm.js";import{CertificationTabs as D}from"./CertificationTabs.esm.js";import{PlaylistComponent as S}from"./Playlist/PlaylistComponent.esm.js";const n=I(t=>({paper:{overflow:"hidden",position:"relative",border:w(t)?`1px solid ${t.palette.divider}`:void 0},view:{display:"grid",gridTemplateColumns:"1fr 2fr"},sidebar:{borderRight:`1px solid ${t.palette.divider}`}})),T=()=>{const{playlistId:t,trackId:r,checkId:a}=k(),m=n(),{entity:i}=v(),{isError:s,isFetched:p,data:c}=C(i),{isError:d,data:f}=P(i);if(s||d)return e.createElement(l,{severity:"error",title:"Error loading certifications"});const o=t&&f?.find(E=>E.id===t);if(t&&!o)return e.createElement(l,{severity:"error",title:"Playlist ${playlistId} not found."});if(p&&!c?.length)return e.createElement(R,null);const y=i?u(i):void 0;return e.createElement(h,{className:m.paper},e.createElement(x,null),e.createElement(D,{playlistId:t,trackId:r}),e.createElement(g,null),o&&e.createElement(S,{playlist:o,entityRef:y}),!o&&r&&e.createElement("div",{"data-testid":"soundcheck-certification-view",className:m.view},e.createElement("div",{className:m.sidebar},e.createElement(b,{trackId:r,checkId:a})),e.createElement(N,{programId:r,checkId:a}),e.createElement($,{programId:r})))};export{T as CertificationsPage,n as useStyles};
2
2
  //# sourceMappingURL=CertificationsPage.esm.js.map
@@ -1,2 +1,2 @@
1
- import{LinearGauge as u}from"@backstage/core-components";import{makeStyles as f,useTheme as v,Typography as y}from"@material-ui/core";import s from"lodash";import t,{useMemo as h}from"react";import{ResultState as d}from"../../../graphql/generated/index.esm.js";import{LevelBadge as k}from"../../Badges/LevelBadge.esm.js";import{NoLevelBadge as x}from"../../Badges/NoLevelBadge.esm.js";import"../../Badges/CampaignBadge.esm.js";import{usePlaylistCertificationContext as N}from"./PlaylistContext.esm.js";const E=(o,r)=>{if(r)return r.filter(e=>o.trackIds.includes(e.program.id)).map(e=>{const i=s.sumBy(e.levels,l=>s.filter(l.checks,{result:d.Passed}).length),m=s.sumBy(e.levels,l=>s.reject(l.checks,{result:d.NotApplicable}).length),a=m===0?0:i/m;return{id:e.program.id,name:e.program.name,checkPassRate:a}})},p=f(()=>({root:{margin:0,width:"250px"},trackItem:{display:"flex",flexDirection:"column",alignItems:"flex-start"},badgeAndName:{display:"flex",flexDirection:"row",alignItems:"center"},trackName:{marginLeft:"8px"}})),P=({playlist:o})=>{const r=p(),{data:e}=N(),i=v(),m=h(()=>E(o,e),[e,o]);return t.createElement("div",{className:r.root},m&&m.map(a=>{var l,n;const c=(n=(l=e==null?void 0:e.find(g=>g.program.id===a.id))==null?void 0:l.highestLevel)==null?void 0:n.badge;return t.createElement("div",{className:r.trackItem,key:a.id},t.createElement("div",{className:r.badgeAndName},c?t.createElement(k,{badge:c}):t.createElement(x,null),t.createElement(y,{variant:"caption",color:"textSecondary",className:r.trackName},a.name)),t.createElement("div",{style:{width:"100%",marginBottom:"8px"}},t.createElement(u,{value:a.checkPassRate,getColor:()=>i.palette.status.ok})))}))};export{P as PlaylistProgress,p as useStyles};
1
+ import{LinearGauge as p}from"@backstage/core-components";import{makeStyles as g,useTheme as f,Typography as u}from"@material-ui/core";import s from"lodash";import t,{useMemo as y}from"react";import{ResultState as n}from"../../../graphql/generated/index.esm.js";import{LevelBadge as h}from"../../Badges/LevelBadge.esm.js";import{NoLevelBadge as k}from"../../Badges/NoLevelBadge.esm.js";import"../../Badges/CampaignBadge.esm.js";import{usePlaylistCertificationContext as v}from"./PlaylistContext.esm.js";const x=(o,r)=>{if(r)return r.filter(e=>o.trackIds.includes(e.program.id)).map(e=>{const i=s.sumBy(e.levels,m=>s.filter(m.checks,{result:n.Passed}).length),l=s.sumBy(e.levels,m=>s.reject(m.checks,{result:n.NotApplicable}).length),a=l===0?0:i/l;return{id:e.program.id,name:e.program.name,checkPassRate:a}})},c=g(()=>({root:{margin:0,width:"250px"},trackItem:{display:"flex",flexDirection:"column",alignItems:"flex-start"},badgeAndName:{display:"flex",flexDirection:"row",alignItems:"center"},trackName:{marginLeft:"8px"}})),N=({playlist:o})=>{const r=c(),{data:e}=v(),i=f(),l=y(()=>x(o,e),[e,o]);return t.createElement("div",{className:r.root},l&&l.map(a=>{const m=e?.find(d=>d.program.id===a.id)?.highestLevel?.badge;return t.createElement("div",{className:r.trackItem,key:a.id},t.createElement("div",{className:r.badgeAndName},m?t.createElement(h,{badge:m}):t.createElement(k,null),t.createElement(u,{variant:"caption",color:"textSecondary",className:r.trackName},a.name)),t.createElement("div",{style:{width:"100%",marginBottom:"8px"}},t.createElement(p,{value:a.checkPassRate,getColor:()=>i.palette.status.ok})))}))};export{N as PlaylistProgress,c as useStyles};
2
2
  //# sourceMappingURL=PlaylistProgress.esm.js.map
@@ -1,2 +1,2 @@
1
- import{parseEntityRef as u}from"@backstage/catalog-model";import l from"react";import{useSummaryAggregationsContext as i}from"../../TechHealthSummary/SummaryAggregationsProvider.esm.js";import{BarChart as p,BarChartLayout as m}from"./BarChart.esm.js";const d=a=>{var t;return(t=a==null?void 0:a.map(({node:r})=>{const{id:e,groupTitle:o,snapshotPassRate:s}=r;return{name:o!=null?o:u(e).name,passRate:s}}))!=null?t:[]},v=()=>{var a,t;const{groupPassRatesOverviewTrends:{data:r}}=i(),e=(t=(a=r==null?void 0:r.groupPassRates)==null?void 0:a.edges)==null?void 0:t.sort((s,n)=>n.node.snapshotPassRate-s.node.snapshotPassRate),o=d(e);return l.createElement(p,{data:o,layout:m.Vertical})};export{v as GroupPassRateHistoryBarChart};
1
+ import{parseEntityRef as o}from"@backstage/catalog-model";import n from"react";import{useSummaryAggregationsContext as p}from"../../TechHealthSummary/SummaryAggregationsProvider.esm.js";import{BarChart as m,BarChartLayout as i}from"./BarChart.esm.js";const u=t=>t?.map(({node:a})=>{const{id:r,groupTitle:s,snapshotPassRate:e}=a;return{name:s??o(r).name,passRate:e}})??[],d=()=>{const{groupPassRatesOverviewTrends:{data:t}}=p(),a=t?.groupPassRates?.edges?.sort((s,e)=>e.node.snapshotPassRate-s.node.snapshotPassRate),r=u(a);return n.createElement(m,{data:r,layout:i.Vertical})};export{d as GroupPassRateHistoryBarChart};
2
2
  //# sourceMappingURL=GroupPassRateHistoryBarChart.esm.js.map