@spotify/backstage-plugin-soundcheck 0.7.0 → 0.8.0

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.
@@ -1,299 +0,0 @@
1
- import{createApiRef as Fe,createRouteRef as b,createSubRouteRef as C,createPlugin as Le,createApiFactory as Ae,discoveryApiRef as Oe,fetchApiRef as xe,createRoutableExtension as $,createComponentExtension as qe,useApi as B,errorApiRef as Te,useRouteRef as j}from"@backstage/core-plugin-api";import{GraphQLClient as Be}from"graphql-request";import s from"graphql-tag";import a,{createContext as V,useState as P,useCallback as E,useContext as K,useRef as Ge,useEffect as Me,Fragment as ze}from"react";import{QueryClient as Ue,QueryClientProvider as We,useQuery as _}from"@tanstack/react-query";import{memoize as He}from"lodash";import Qe from"@material-ui/core/styles/makeStyles";import{makeStyles as p,Typography as u,Modal as je,Box as X,Button as J,Fade as Ve,alpha as R,Tooltip as Ke,withStyles as N,Divider as _e}from"@material-ui/core";import{MarkdownContent as Y,Link as Z,EmptyState as ee,InfoCard as Xe}from"@backstage/core-components";import{useEntity as te,humanizeEntityRef as Je}from"@backstage/plugin-catalog-react";import{useAutoUpdatingRelativeTime as Ye,SpotifyLicenseBanner as Ze}from"@spotify/backstage-plugin-core";import{stringifyEntityRef as re,parseEntityRef as et}from"@backstage/catalog-model";import{Alert as tt,Skeleton as f}from"@material-ui/lab";import{Link as rt}from"react-router-dom";import I from"classnames";import at from"@material-ui/icons/Schedule";import{DateTime as ae}from"luxon";import nt from"@material-ui/icons/Check";import it from"@material-ui/icons/Close";import ot from"@material-ui/icons/RemoveCircleOutline";import ct from"@material-ui/icons/HelpOutline";var ne=(e=>(e.Medal="MEDAL",e))(ne||{}),st=(e=>(e.Excludes="EXCLUDES",e.Includes="INCLUDES",e))(st||{}),g=(e=>(e.Failed="FAILED",e.NotApplicable="NOT_APPLICABLE",e.NotReported="NOT_REPORTED",e.Passed="PASSED",e))(g||{});const lt=s`
2
- fragment CertificationSummary on Certification {
3
- entityRef
4
- program {
5
- id
6
- name
7
- }
8
- highestLevel {
9
- ordinal
10
- name
11
- description
12
- badge {
13
- ... on BadgeVariantMedal {
14
- variant
15
- options {
16
- level
17
- color
18
- }
19
- }
20
- }
21
- }
22
- }
23
- `,mt=s`
24
- fragment check on Check {
25
- id
26
- name
27
- description
28
- }
29
- `,dt=s`
30
- fragment level on Level {
31
- ordinal
32
- name
33
- description
34
- checks {
35
- ...check
36
- }
37
- }
38
- ${mt}`,ut=s`
39
- fragment CheckResultSummary on CheckResult {
40
- id
41
- name
42
- result
43
- timestamp
44
- }
45
- `,pt=s`
46
- fragment LevelResultDetails on LevelResult {
47
- ordinal
48
- name
49
- description
50
- badge {
51
- ... on BadgeVariantMedal {
52
- variant
53
- options {
54
- level
55
- color
56
- }
57
- }
58
- }
59
- certified
60
- checks {
61
- ...CheckResultSummary
62
- }
63
- }
64
- ${ut}`,ht=s`
65
- fragment CheckResultDetails on CheckResult {
66
- id
67
- name
68
- description
69
- result
70
- timestamp
71
- notes
72
- }
73
- `,gt=s`
74
- fragment OverviewLevelResult on OverviewLevelResult {
75
- ordinal
76
- name
77
- checks {
78
- check {
79
- id
80
- name
81
- description
82
- }
83
- results {
84
- id
85
- entityRef
86
- result
87
- }
88
- }
89
- }
90
- `,ie=s`
91
- fragment HighestLevel on LevelResult {
92
- entityRef
93
- ordinal
94
- name
95
- badge {
96
- ... on BadgeVariantMedal {
97
- variant
98
- options {
99
- color
100
- level
101
- }
102
- }
103
- }
104
- }
105
- `,ft=s`
106
- mutation createCheck($input: CheckerInput!) {
107
- check: createChecker(input: $input) {
108
- id
109
- filter
110
- name
111
- description
112
- }
113
- }
114
- `,kt=s`
115
- mutation createProgram($input: ProgramInput!) {
116
- program: createProgram(input: $input) {
117
- id
118
- ownerEntityRef
119
- name
120
- description
121
- documentationURL
122
- }
123
- }
124
- `,yt=s`
125
- mutation deleteChecker($checkerId: String!) {
126
- deleteChecker(checkerId: $checkerId)
127
- }
128
- `,vt=s`
129
- mutation deleteProgram($programId: String!) {
130
- programDeleted: deleteProgram(programId: $programId)
131
- }
132
- `,Ct=s`
133
- mutation updateCheck($input: CheckerInput!) {
134
- check: updateChecker(input: $input) {
135
- id
136
- filter
137
- name
138
- description
139
- }
140
- }
141
- `,Et=s`
142
- mutation updateProgram($input: ProgramInput!) {
143
- program: updateProgram(input: $input) {
144
- id
145
- ownerEntityRef
146
- name
147
- description
148
- documentationURL
149
- }
150
- }
151
- `,Rt=s`
152
- query getAllCertifications($entityRef: String!) {
153
- certifications(entityRef: $entityRef, includeFilteredChecks: false) {
154
- ...CertificationSummary
155
- }
156
- }
157
- ${lt}`,wt=s`
158
- query getAllPrograms($programIds: [String!], $first: Int, $after: String) {
159
- programs(programIds: $programIds, first: $first, after: $after) {
160
- totalCount
161
- endCursor
162
- hasNextPage
163
- edges {
164
- cursor
165
- program {
166
- id
167
- ownerEntityRef
168
- name
169
- description
170
- documentationURL
171
- filter
172
- levels {
173
- ...level
174
- }
175
- isEditable
176
- }
177
- }
178
- }
179
- }
180
- ${dt}`,St=s`
181
- query getCertificationDetails($entityRef: String!, $programId: String!) {
182
- programCertification(
183
- entityRef: $entityRef
184
- programId: $programId
185
- includeFilteredChecks: false
186
- ) {
187
- program {
188
- id
189
- name
190
- description
191
- documentationURL
192
- }
193
- highestLevel {
194
- ...HighestLevel
195
- }
196
- levels {
197
- ...LevelResultDetails
198
- }
199
- }
200
- }
201
- ${ie}
202
- ${pt}`,bt=s`
203
- query getCheckResultDetails($entityRef: String!, $programId: String!, $checkId: String!) {
204
- checkResult(entityRef: $entityRef, programId: $programId, checkId: $checkId) {
205
- ...CheckResultDetails
206
- }
207
- }
208
- ${ht}`,$t=s`
209
- query getCheckers($ids: [String!], $first: Int, $after: String, $orderAlphabetical: String, $searchByOwner: String, $searchByName: String) {
210
- checkers(
211
- ids: $ids
212
- first: $first
213
- after: $after
214
- orderAlphabetical: $orderAlphabetical
215
- searchByOwner: $searchByOwner
216
- searchByName: $searchByName
217
- ) {
218
- totalCount
219
- endCursor
220
- hasNextPage
221
- edges {
222
- cursor
223
- checker {
224
- id
225
- ownerEntityRef
226
- supportChannel
227
- name
228
- description
229
- rule
230
- passedMessage
231
- failedMessage
232
- filter
233
- isEditable
234
- schedule
235
- }
236
- }
237
- }
238
- }
239
- `,Pt=s`
240
- query getFacetsForOwner($ownerEntityRef: String!) {
241
- facetsForOwner(ownerEntityRef: $ownerEntityRef) {
242
- types {
243
- kind
244
- type
245
- count
246
- }
247
- }
248
- }
249
- `,Nt=s`
250
- query getCollectors($ids: [String!]) {
251
- collectors(ids: $ids) {
252
- id
253
- name
254
- description
255
- isConfigurable
256
- factNames
257
- collectionConfigs {
258
- factRefs
259
- filter
260
- frequency
261
- cache
262
- }
263
- }
264
- }
265
- `,It=s`
266
- query getFactSchemas($collectorId: String!, $factName: String!) {
267
- factSchema(collectorId: $collectorId, factName: $factName) {
268
- schema
269
- }
270
- }
271
- `,Dt=s`
272
- query getOverallCheckPassRate($filter: Filter) {
273
- overallCheckPassRate(filter: $filter)
274
- }
275
- `,Ft=s`
276
- query getProgramOverviewForOwner($ownerEntityRef: String!, $facet: FacetInput) {
277
- programOverviewForOwner(
278
- ownerEntityRef: $ownerEntityRef
279
- facet: $facet
280
- includeFilteredChecks: false
281
- ) {
282
- programs {
283
- program {
284
- id
285
- name
286
- }
287
- highestLevels {
288
- ...HighestLevel
289
- }
290
- levels {
291
- ...OverviewLevelResult
292
- }
293
- }
294
- entityRefs
295
- }
296
- }
297
- ${ie}
298
- ${gt}`,Lt=(e,t,r)=>e();function At(e,t=Lt){return{createCheck(r,n){return t(i=>e.request(ft,r,{...n,...i}),"createCheck","mutation")},createProgram(r,n){return t(i=>e.request(kt,r,{...n,...i}),"createProgram","mutation")},deleteChecker(r,n){return t(i=>e.request(yt,r,{...n,...i}),"deleteChecker","mutation")},deleteProgram(r,n){return t(i=>e.request(vt,r,{...n,...i}),"deleteProgram","mutation")},updateCheck(r,n){return t(i=>e.request(Ct,r,{...n,...i}),"updateCheck","mutation")},updateProgram(r,n){return t(i=>e.request(Et,r,{...n,...i}),"updateProgram","mutation")},getAllCertifications(r,n){return t(i=>e.request(Rt,r,{...n,...i}),"getAllCertifications","query")},getAllPrograms(r,n){return t(i=>e.request(wt,r,{...n,...i}),"getAllPrograms","query")},getCertificationDetails(r,n){return t(i=>e.request(St,r,{...n,...i}),"getCertificationDetails","query")},getCheckResultDetails(r,n){return t(i=>e.request(bt,r,{...n,...i}),"getCheckResultDetails","query")},getCheckers(r,n){return t(i=>e.request($t,r,{...n,...i}),"getCheckers","query")},getFacetsForOwner(r,n){return t(i=>e.request(Pt,r,{...n,...i}),"getFacetsForOwner","query")},getCollectors(r,n){return t(i=>e.request(Nt,r,{...n,...i}),"getCollectors","query")},getFactSchemas(r,n){return t(i=>e.request(It,r,{...n,...i}),"getFactSchemas","query")},getOverallCheckPassRate(r,n){return t(i=>e.request(Dt,r,{...n,...i}),"getOverallCheckPassRate","query")},getProgramOverviewForOwner(r,n){return t(i=>e.request(Ft,r,{...n,...i}),"getProgramOverviewForOwner","query")}}}var oe=(e,t,r)=>{if(!t.has(e))throw TypeError("Cannot "+r)},o=(e,t,r)=>(oe(e,t,"read from private field"),r?r.call(e):t.get(e)),w=(e,t,r)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,r)},G=(e,t,r,n)=>(oe(e,t,"write to private field"),n?n.call(e,r):t.set(e,r),r),D,F,m,M,d;const L=Fe({id:"plugin.soundcheck"}),Ot=e=>"response"in e&&"errors"in e.response,xt=e=>"response"in e&&"message"in e.response;class qt{constructor(t){w(this,D,void 0),w(this,F,void 0),w(this,m,void 0),w(this,M,n=>{var i,c,l;return Ot(n)?(l=(c=(i=n.response)==null?void 0:i.errors)==null?void 0:c[0].message)!=null?l:`${n}`:xt(n)?n.response.message:`${n}`}),w(this,d,async n=>{try{return await n()}catch(i){throw new Error(`Error from Soundcheck backend: ${o(this,M).call(this,i)}`)}}),G(this,D,t.fetchApi),G(this,F,t.discoveryApi);const r=new Be("/graphql",{fetch:async(n,i)=>{const c=`${await o(this,F).getBaseUrl("soundcheck")}${n}`;return o(this,D).fetch(c,i)}});G(this,m,At(r))}async getAllCertifications(t){return o(this,d).call(this,async()=>{const{certifications:r}=await o(this,m).getAllCertifications({entityRef:t});return r})}async getCertificationDetails(t,r){return o(this,d).call(this,async()=>{const{programCertification:n}=await o(this,m).getCertificationDetails({entityRef:t,programId:r});return n})}async getCheckResultDetails(t,r,n){return o(this,d).call(this,async()=>{const{checkResult:i}=await o(this,m).getCheckResultDetails({entityRef:t,programId:r,checkId:n});return i})}async getFacetsForOwner(t){return o(this,d).call(this,async()=>{const{facetsForOwner:r}=await o(this,m).getFacetsForOwner({ownerEntityRef:t});return r})}async getProgramOverviewForOwner(t,r){return o(this,d).call(this,async()=>{const{programOverviewForOwner:n}=await o(this,m).getProgramOverviewForOwner({ownerEntityRef:t,facet:r});return n})}async getAllPrograms(t,r,n){return o(this,d).call(this,async()=>{const{programs:i}=await o(this,m).getAllPrograms({programIds:t,first:r,after:n});return i})}async createProgram(t){return o(this,d).call(this,async()=>{const{program:r}=await o(this,m).createProgram({input:t});return r})}async updateProgram(t){return o(this,d).call(this,async()=>{const{program:r}=await o(this,m).updateProgram({input:t});return r})}async deleteProgram(t){return o(this,d).call(this,async()=>{const{programDeleted:r}=await o(this,m).deleteProgram({programId:t});return r})}async getChecks(t,r,n){return o(this,d).call(this,async()=>{const{checkers:i}=await o(this,m).getCheckers({ids:t,first:r,after:n});return i})}async createCheck(t){return o(this,d).call(this,async()=>{const{check:r}=await o(this,m).createCheck({input:t});return r})}async updateCheck(t){return o(this,d).call(this,async()=>{const{check:r}=await o(this,m).updateCheck({input:t});return r})}async deleteCheck(t){return o(this,d).call(this,async()=>await o(this,m).deleteChecker({checkerId:t}))}async getCollectors(t){return o(this,d).call(this,async()=>{const{collectors:r}=await o(this,m).getCollectors({ids:t});return r})}async getFactSchema(t,r){if(!(!t||!r))return o(this,d).call(this,async()=>{const{factSchema:n}=await o(this,m).getFactSchemas({collectorId:t,factName:r});return n})}async getOverallCheckPassRate(t){return o(this,d).call(this,async()=>await o(this,m).getOverallCheckPassRate({filter:t}))}}D=new WeakMap,F=new WeakMap,m=new WeakMap,M=new WeakMap,d=new WeakMap;const A=b({id:"soundcheck-entity"}),Tt=b({id:"soundcheck-group"}),ce=C({id:"soundcheck-entity-certification-track-redirect",parent:A,path:"/:trackId"}),se=C({id:"soundcheck-entity-certification",parent:A,path:"/:trackId/:checkId"}),Bt=b({id:"soundcheck-overview"}),O=b({id:"soundcheck"});C({id:"soundcheck-checks",parent:O,path:"/checks"}),C({id:"soundcheck-tracks",parent:O,path:"/tracks"}),C({id:"soundcheck-track-details",parent:O,path:"/tracks/:trackId"});const y=Le({id:"soundcheck",apis:[Ae({api:L,deps:{discoveryApi:Oe,fetchApi:xe},factory:e=>new qt(e)})],routes:{entityContent:A}}),Gt=y.provide($({name:"EntitySoundcheckContent",component:()=>import("./EntitySoundcheckContent-52a2a214.esm.js").then(e=>e.EntitySoundcheckContent),mountPoint:A})),Mt=y.provide(qe({name:"EntitySoundcheckCard",component:{lazy:()=>import("./index-0024f6e1.esm.js").then(e=>e.EntitySoundcheckCard)}})),zt=y.provide($({name:"GroupSoundcheckContent",component:()=>import("./index-829d0670.esm.js").then(e=>e.FixedGroupOverviewPage),mountPoint:Tt})),Ut=y.provide($({name:"SoundcheckOverviewPage",component:()=>import("./index-829d0670.esm.js").then(e=>e.OverviewPage),mountPoint:Bt})),Wt=y.provide($({name:"SoundcheckRoutingPage",component:()=>import("./index-c29fd0e9.esm.js").then(e=>e.RoutingPage),mountPoint:O})),Ht=He(e=>new Ue({defaultOptions:{queries:{refetchInterval:6e4,refetchIntervalInBackground:!1,refetchOnWindowFocus:"always",retry:2,retryDelay:t=>{const r=450+Math.ceil(Math.random()*100);return Math.min(r*2**t,3e4)},onError:t=>e.post(t)}}})),Qt=e=>{const t=B(Te),r=Ht(t);return a.createElement(We,{client:r},e.children)};function le(e){const t=B(L),r=re(e);return _(["soundcheck/certifications",r],async()=>t.getAllCertifications(r))}function me(e,t){const r=B(L),n=re(e);return _(["soundcheck/certifications",n,t],async()=>r.getCertificationDetails(n,t),{enabled:!!t})}var de=(e=>(e.GetAllPrograms="soundcheck/programs",e.GetChecks="soundcheck/checks",e.GetCollectors="soundcheck/collectors",e.GetFactSchema="soundcheck/collectors/schema",e.GetEntityFacets="soundcheck/catalog/facets",e.CheckPassRateOverview="soundcheck/charts/checkPassRateOverview",e.TrackHistory="soundcheck/charts/trackHistory",e.TrackSummary="soundcheck/charts/trackSummary",e.GetAllEntityNames="soundcheck/entityNames",e.GetOverallCheckPassRate="soundcheck/charts/overallCheckPassRate",e))(de||{}),ue=(e=>(e.DeleteCheck="soundcheck/deleteCheck",e.CreateCheck="soundcheck/createCheck",e.UpdateCheck="soundcheck/updateCheck",e.DeleteProgram="soundcheck/deleteProgram",e.CreateProgram="soundcheck/createProgram",e.UpdateProgram="soundcheck/updateProgram",e))(ue||{});const jt=p(e=>({root:{padding:e.spacing(3)},icon:{display:"none"},message:{padding:0},type:{fontWeight:700,lineHeight:1.75}})),x=e=>{const{type:t,...r}=jt();return a.createElement(tt,{severity:e.severity,elevation:1,classes:r,onClose:e.onClose},a.createElement(u,{classes:{root:t}},e.title),e.children)},pe=V({}),Vt=e=>{const[t,r]=P(),n=E(c=>{r(c)},[]),i=E(()=>{r(null)},[]);return a.createElement(pe.Provider,{value:{showAlert:n,clearAlert:i}},t&&a.createElement(x,{severity:t.severity,title:t.title,onClose:i},t.message),e.children)},Kt=()=>K(pe),_t=p(e=>({modalContent:{position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",padding:"25px",backgroundColor:e.palette.type==="dark"?e.palette.grey[800]:e.palette.grey[200]},modalButtons:{display:"flex",justifyContent:"space-evenly","& button":{width:"40%",maxWidth:"185px"}},modalMessage:{margin:"15px 0 35px"}})),he=V({}),Xt=e=>{const t=_t(),[r,n]=P(!1),[i,c]=P(),l=Ge(),h=E(({title:S,message:Ne,error:Ie})=>(c({title:S,message:Ne,error:Ie}),n(!0),new Promise(De=>{l.current=De})),[]),v=E(()=>{l.current&&l.current(!0),n(!1)},[]),k=E(()=>{l.current&&l.current(!1),n(!1)},[]);return a.createElement(he.Provider,{value:{showModal:h}},e.children,i&&a.createElement(je,{open:r,onClose:k,"aria-labelledby":"confirmation-modal-title","aria-describedby":"confirmation-modal-description"},a.createElement(X,{className:t.modalContent},a.createElement(u,{id:"confirmation-modal-title",variant:"h6"},i.title),a.createElement(u,{className:t.modalMessage,id:"confirmation-modal-description",variant:"body1"},i.message),a.createElement("div",{className:t.modalButtons},!i.error&&a.createElement(J,{onClick:k,variant:"contained","aria-label":"cancel"},"Cancel"),a.createElement(J,{color:"primary",onClick:v,variant:"contained","aria-label":"confirm"},i.error?"Ok":"Confirm")))))},Jt=()=>K(he),ge=24,Yt=11,z=e=>e==="small"?1:2,Zt=p({root:{position:"relative",display:"inline-flex",alignItems:"center",justifyContent:"center",borderRadius:"50%",borderWidth:"2px",fontWeight:700,width:({size:e})=>`${ge*z(e)}px`,height:({size:e})=>`${ge*z(e)}px`,fontSize:({size:e})=>`${Yt*z(e)}px`}}),fe=({className:e,label:t,size:r="small"})=>{const n=Zt({size:r});return a.createElement("span",{className:I(e,n.root),role:"img","aria-label":`${t} badge`},t)},er=p(e=>({root:{background:({color:t})=>t,color:e.palette.common.black,borderColor:e.palette.common.black,borderStyle:"solid","&::after":{position:"absolute",display:"block",content:'""',top:0,left:0,width:"100%",height:"100%",borderRadius:"50%",boxShadow:["inset 0 -0.18em 0 0 rgba(0, 0, 0, 0.25)","inset 0px 0.18em 0px 0px rgba(255, 255, 255, 0.5)","inset 0px 1.3em 0px -0.5em rgba(255, 255, 255, 0.2)"].join(",")}}})),U=({className:e,badge:t,size:r="small"})=>{const n=er({color:t.options.color,size:r});return a.createElement(fe,{className:I(e,n.root),size:r,label:`L${t.options.level}`})},tr=p({root:{borderColor:"currentColor",borderStyle:"dashed"}}),ke=({className:e,size:t="small"})=>{const r=tr();return a.createElement(fe,{className:I(e,r.root),size:t,label:"NL"})},W=p(e=>({description:{padding:0,margin:0,display:"block","& p":{margin:0}},root:{padding:e.spacing(2),margin:0,display:"grid",gridTemplateColumns:"min-content auto",gridGap:e.spacing(2)},title:{fontSize:e.typography.pxToRem(18),fontWeight:700,lineHeight:1.235,marginBottom:"6px"},level:{textTransform:"uppercase",color:e.palette.text.secondary,fontWeight:700,letterSpacing:"1px"}}));function rr({description:e,documentationUrl:t}){const r=W();return t?a.createElement("div",{className:r.description},a.createElement(Y,{content:e}),a.createElement(Z,{to:t},"Learn more")):a.createElement("div",{className:r.description},a.createElement(Y,{content:e}))}const ye=({name:e,level:t,badge:r,description:n,documentationUrl:i})=>{const c=W();return a.createElement("div",{className:c.root},r?a.createElement(U,{size:"large",badge:r}):a.createElement(ke,{size:"large"}),a.createElement("div",null,a.createElement(u,{variant:"caption",className:c.level},t!=null?t:"No Level"),a.createElement(u,{className:c.title},e),n&&a.createElement(rr,{description:n,documentationUrl:i})))},q=({children:e})=>{const[t,r]=P(!1);return Me(()=>{const n=setTimeout(()=>{r(!0)},250);return()=>clearTimeout(n)},[]),a.createElement(Ve,{in:t,timeout:250},e)},H=({hideDescription:e=!1})=>{const t=W();return a.createElement(q,null,a.createElement("div",{className:t.root},a.createElement(f,{width:44,height:44}),a.createElement("div",null,a.createElement(u,{variant:"caption",className:t.level},a.createElement(f,{width:100})),a.createElement(u,{variant:"h4",className:t.title},a.createElement(f,{width:300})),!e&&a.createElement(u,{variant:"body2"},a.createElement(f,null)))))},ve=p(e=>{const t=e.palette.type==="dark"?e.palette.grey[700]:e.palette.grey[100];return{wrapper:{backgroundColor:t,color:R(e.palette.getContrastText(t),.8),fontSize:e.typography.caption.fontSize,minHeight:"auto",borderTop:`1px solid ${e.palette.divider}`,borderBottom:`1px solid ${e.palette.divider}`,padding:e.spacing(1),display:"grid",gridTemplateAreas:({badge:r})=>[`"${r?"badge":"title"} title"`,`"${r?".":"description"} description"`].join(" "),gridTemplateColumns:"auto 1fr"},title:{gridArea:"title",textTransform:"uppercase",fontWeight:"bold",color:R(e.palette.getContrastText(t),.8),fontSize:e.typography.body2.fontSize,paddingTop:e.spacing(.5),paddingBottom:e.spacing(.5),lineHeight:1},badge:{gridArea:"badge",marginRight:e.spacing(1)},description:{gridArea:"description",color:R(e.palette.getContrastText(t),.8),fontSize:e.typography.subtitle2.fontSize,marginTop:e.spacing(1)}}}),ar=e=>{const t=ve({badge:e.badge});return a.createElement("div",{className:t.wrapper},e.badge?a.createElement(U,{className:t.badge,badge:e.badge}):null,a.createElement(u,{className:t.title},e.title),e.description?a.createElement(u,{className:t.description},e.description):null)},nr=()=>{const e=ve({});return a.createElement(q,null,a.createElement("div",{className:e.wrapper},a.createElement(f,{className:e.title}),a.createElement(u,{className:e.description},a.createElement(f,null))))},ir=p(e=>({root:{display:"inline-flex",alignItems:"center",gap:e.spacing(1)}})),Ce=({timestamp:e,description:t})=>{const r=ir(),n=ae.fromISO(e).toLocaleString(ae.DATETIME_FULL),i=Ye(e),c=t?`${t}: ${i}`:void 0;return a.createElement("div",{className:r.root},a.createElement(Ke,{title:n},a.createElement(u,{variant:"caption","aria-label":c},i)),a.createElement(at,null))},or=e=>({[g.Passed]:"Check passed",[g.NotReported]:"Check not reported",[g.Failed]:"Check failed",[g.NotApplicable]:"Check not applicable"})[e],cr=N(e=>({root:{color:e.palette.success.main}}))(nt),sr=N(e=>({root:{color:e.palette.error.main}}))(it),lr=N(e=>({root:{color:e.palette.info.main}}))(ct),mr=N(e=>({root:{color:e.palette.text.disabled}}))(ot),Ee=({result:e,className:t})=>{const r={className:t,"aria-label":or(e),"aria-hidden":!1};return e===g.Passed?a.createElement(cr,{...r}):e===g.NotReported?a.createElement(lr,{...r}):e===g.Failed?a.createElement(sr,{...r}):e===g.NotApplicable?a.createElement(mr,{...r}):null},Re=p(e=>({root:{display:"grid",width:"100%",gridTemplateColumns:"auto 1fr auto",gridColumnGap:e.spacing(1),padding:e.spacing(1),alignItems:"center","&.selected":{backgroundColor:R(e.palette.primary[e.palette.type],.2)},"&:hover, &:active, &:focus":{backgroundColor:R(e.palette.primary[e.palette.type],.3)}}})),dr=({className:e,href:t,children:r})=>t?a.createElement(rt,{to:t,className:e},r):a.createElement("div",{className:e},r),ur=({result:e,name:t,timestamp:r,selected:n=!1,href:i})=>{const c=Re(),l=I(c.root,{selected:n});return a.createElement(dr,{href:i,className:l},a.createElement(Ee,{result:e}),a.createElement(u,{variant:"body2"},t),r?a.createElement(Ce,{timestamp:r}):null)},Q=()=>{const e=Re();return a.createElement(q,null,a.createElement("div",{className:e.root},a.createElement(f,{width:24,height:24}),a.createElement(u,{variant:"body2"},a.createElement(f,null)),a.createElement(f,{width:100,height:24})))},pr=()=>{const e=we();return a.createElement("div",{className:e.root},a.createElement(H,null),new Array(3).fill(null).map((t,r)=>a.createElement(a.Fragment,{key:`skeleton-level-${r}`},a.createElement(nr,null),a.createElement("ul",{className:e.checks},a.createElement(Q,null),a.createElement(Q,null),a.createElement(Q,null)))))},hr=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"}}})),gr=({checks:e,trackId:t,checkId:r})=>{const n=hr(),i=j(se);return e.length?a.createElement("ul",{className:n.checks},e.map(c=>a.createElement("li",{key:c.id,className:n.checkItem},a.createElement(ur,{...c,selected:c.id===r,href:i({trackId:t,checkId:c.id})})))):a.createElement(u,{variant:"body2",className:n.noChecks},"No applicable checks at this level.")},fr=({level:e,checkId:t,trackId:r})=>{var n;return a.createElement(a.Fragment,null,a.createElement(ar,{badge:e.badge,title:e.name,description:e.description}),a.createElement(gr,{checks:(n=e.checks)!=null?n:[],trackId:r,checkId:t}))},we=p(e=>({root:{borderRight:`1px solid ${e.palette.divider}`},checks:{padding:0,margin:0,flex:1,listStyle:"none"}})),kr=({trackId:e,checkId:t})=>{var r,n;const i=we(),{entity:c}=te(),{data:l,isLoading:h,isError:v}=me(c,e);return v?a.createElement("div",{className:i.root},a.createElement(X,{padding:2},a.createElement(x,{severity:"error",title:"Error loading certification"}))):h||!e?a.createElement(pr,null):l?a.createElement("div",{className:i.root},a.createElement(ye,{name:l.program.name,level:(r=l.highestLevel)==null?void 0:r.name,badge:(n=l.highestLevel)==null?void 0:n.badge,description:l.program.description,documentationUrl:l.program.documentationURL}),l==null?void 0:l.levels.map(k=>a.createElement(fr,{key:k.ordinal,level:k,checkId:t,trackId:e}))):null},yr=()=>a.createElement(a.Fragment,null,a.createElement(H,{hideDescription:!0}),a.createElement(H,{hideDescription:!0})),Se=({className:e,description:t="There are no tracks configured that apply to this entity."})=>a.createElement("div",{className:e},a.createElement(ee,{title:"No certifications available",missing:"data",description:t})),vr=({ownerEntityRef:e})=>e?a.createElement(ee,{missing:"data",title:"Missing entities",description:a.createElement(a.Fragment,null,"Looks like the group"," ",Je(et(e),{defaultKind:"Group"})," ","doesn't own any entities.",a.createElement("br",null),a.createElement("br",null),"Please select another group from the dropdown in the corner of the header.")}):null,be="soundcheck",$e="Submitted check results will still be stored, but it will not be possible to view certifications or individual results until a valid license is present.",Pe=Qe(e=>({certificationWrapper:{display:"flex",justifyContent:"space-between",alignItems:"center"},infoCard:{display:"grid",gridRowGap:e.spacing(2)},emptyState:{"& > div":{backgroundColor:e.palette.background.paper}}})),T=({children:e,title:t})=>{const r=Pe();return a.createElement(Xe,{title:t},a.createElement("div",{className:r.infoCard},a.createElement(Ze,{inline:!0,backend:be,invalidLicenseMessage:$e}),e))},Cr=({title:e="Soundcheck"})=>{const{entity:t}=te(),r=Pe(),{data:n,isError:i,isLoading:c}=le(t),l=j(ce);return i?a.createElement(T,{title:e},a.createElement(x,{severity:"error",title:"Error loading certifications"})):c||!n?a.createElement(T,{title:e},a.createElement(yr,null)):n.length===0?a.createElement(T,{title:e},a.createElement(Se,{className:r.emptyState})):a.createElement(T,{title:e},n.map((h,v)=>{var k,S;return a.createElement(ze,{key:h.program.name},a.createElement("div",{className:r.certificationWrapper,"data-testid":"soundcheck-track-row"},a.createElement(ye,{key:h.program.id,name:h.program.name,badge:(k=h.highestLevel)==null?void 0:k.badge,level:(S=h.highestLevel)==null?void 0:S.name}),a.createElement(Z,{to:l({trackId:h.program.id})},"View Details")),v<n.length-1?a.createElement(_e,null):null)}))};export{x as A,ne as B,kr as C,Gt as E,q as F,zt as G,U as L,ue as M,ke as N,de as Q,g as R,Qt as S,Ce as a,le as b,ce as c,Se as d,be as e,se as f,Cr as g,Ee as h,$e as i,vr as j,Kt as k,Jt as l,Vt as m,y as n,Mt as o,Ut as p,Wt as q,L as s,me as u,Xt as w};
299
- //# sourceMappingURL=index-37aedac7.esm.js.map
@@ -1,2 +0,0 @@
1
- import t,{useState as f,useEffect as P,useCallback as H,createContext as Pe,useContext as Te,useMemo as _,useReducer as De}from"react";import{useSearchParams as Xe,useLocation as la,Routes as oa,Route as sa}from"react-router-dom";import{MarkdownContent as ia,Link as ca,DismissableBanner as Ze,Page as ma,Header as da,TabbedLayout as te}from"@backstage/core-components";import{DATA_VIZ_LIGHT_THEME as xe,SpotifyLicenseBanner as ua}from"@spotify/backstage-plugin-core";import{Box as C,Paper as Ee,Grid as d,Button as O,Slide as pa,Dialog as ha,AppBar as ga,Toolbar as Ea,Typography as v,IconButton as ve,TextField as $,Collapse as va,makeStyles as b,ButtonGroup as et,Menu as tt,MenuItem as ae,FormControl as Ie,InputLabel as $e,Select as Ae,RadioGroup as fa,Radio as at,FormControlLabel as fe,Checkbox as ye,Card as Re,ListItemIcon as ne,ListItemText as re,withStyles as ya,CardHeader as ba,CardContent as Ca,Divider as Fe,CardActions as ka,List as Oe,ListItem as Q,Tooltip as le,InputAdornment as nt,NativeSelect as rt,TablePagination as xa,Chip as Me,CircularProgress as wa,Accordion as Sa,AccordionSummary as La,AccordionDetails as Na,Tabs as Pa,Tab as oe,FormGroup as Ta}from"@material-ui/core";import{makeStyles as z,createStyles as Da}from"@material-ui/core/styles";import{a as Ia,b as lt,u as $a,U as Aa,G as Ra,O as Fa}from"./OverviewPageContent-dbbba0be.esm.js";import Ve from"@material-ui/icons/Close";import{Controller as X,useWatch as Be,useForm as Oa}from"react-hook-form";import Ma from"@material-ui/icons/AddCircleOutline";import Va from"@material-ui/icons/ArrowDropDown";import ot from"@material-ui/icons/Delete";import{useApi as I,alertApiRef as Ba,configApiRef as Ga}from"@backstage/core-plugin-api";import{useQuery as W,useQueryClient as se,useMutation as ie}from"@tanstack/react-query";import{s as G,Q as T,k as Z,M as ce,l as we,m as Ha,S as za,w as Wa}from"./index-37aedac7.esm.js";import{asArray as qa,FrequencySchema as Ka,parseFactRef as Ge,stringifyFactRef as Ua,soundcheckCheckUpdatePermission as ja,soundcheckCheckDeletePermission as _a,soundcheckCheckCreatePermission as Qa,soundcheckTrackUpdatePermission as Ya,soundcheckTrackDeletePermission as Ja,soundcheckTrackCreatePermission as Xa}from"@spotify/backstage-plugin-soundcheck-common";import Za from"cron-validate";import en from"cronstrue";import tn from"lodash/isObject";import{Autocomplete as st,Skeleton as He}from"@material-ui/lab";import an from"@material-ui/icons/CheckBox";import nn from"@material-ui/icons/CheckBoxOutlineBlank";import rn from"@material-ui/icons/ExpandMore";import{catalogApiRef as it,EntityRefLink as ct}from"@backstage/plugin-catalog-react";import"@backstage/catalog-model";import{v4 as mt}from"uuid";import ln from"@material-ui/icons/MoreVert";import dt from"@material-ui/icons/Group";import{usePermission as me}from"@backstage/plugin-permission-react";import on from"@material-ui/icons/Search";import{useDrag as sn,useDrop as cn,DndProvider as mn}from"react-dnd";import{HTML5Backend as dn}from"react-dnd-html5-backend";import un from"@material-ui/icons/OpenInNew";import pn from"@material-ui/icons/DoneAllRounded";import hn from"@material-ui/icons/Menu";import ut from"@material-ui/icons/DragIndicator";import gn from"@material-ui/icons/Visibility";import pt from"@material-ui/icons/Add";import ht from"@material-ui/icons/Remove";import{ResponsiveContainer as En,LineChart as vn,CartesianGrid as gt,XAxis as Et,YAxis as vt,Tooltip as ft,Legend as yt,Line as fn,BarChart as yn,Bar as bn}from"recharts";import Cn from"@material-ui/lab/Autocomplete";import kn from"../images/catalog.svg";import xn from"../images/git.svg";import wn from"../images/octocat.svg";import Sn from"../images/settings.svg";import Ln from"../images/soundcheck.png";import Nn from"../images/tech_insights.png";import"react-use/lib/useAsync";import"./RefetchingIndicator-7160bb11.esm.js";import"react-use/lib/useDebounce";import"lodash";import"react-window";import"graphql-request";import"graphql-tag";import"@material-ui/core/styles/makeStyles";import"classnames";import"@material-ui/icons/Schedule";import"luxon";import"@material-ui/icons/Check";import"@material-ui/icons/RemoveCircleOutline";import"@material-ui/icons/HelpOutline";function Pn(e,n,a){const r=I(G);return W([T.GetAllPrograms,e,n,a],async()=>r.getAllPrograms(e,n,a))}const Tn="Error Creating Track";function Dn(){const e=I(G),n=se(),{showAlert:a}=Z(),r=async l=>{const o=await e.createProgram(l);if(!o)throw new Error("Failed to create track.");return o};return ie([ce.CreateProgram],r,{onSuccess:async()=>{await n.invalidateQueries({queryKey:[T.GetAllPrograms]})},onError:l=>{let o="Failed to create track.";l instanceof Error&&(o=l.message),a({severity:"error",title:Tn,message:o})}})}function bt(e,n,a){const r=I(G);return W([T.GetChecks,e,n,a],async()=>r.getChecks(e,n,a))}const In=e=>{const[n,a]=f(void 0),[r,l]=f([[]]),[o,s]=f([!1]);P(()=>{n===void 0&&e!=null&&e.length&&a(e)},[e,n]);const c=H((p,g)=>{l(E=>{const y=[...E];return y[g]=[...y[g],p],y}),a(E=>E==null?void 0:E.filter(y=>y.id!==p.id)),s(E=>{if(E[g]){const y=[...E];return y[g]=!1,y}return E})},[]),i=H((p,g)=>{l(E=>{const y=[...E];return y[g]=y[g].filter(k=>k.id!==p.id),y}),a(E=>[...E!=null?E:[],p])},[]),u=H(()=>{l(p=>[...p,[]]),s(p=>[...p,!1])},[]),m=H(p=>{r.length>1&&l(g=>{const E=[...g],y=E.splice(p,1)[0];return a(k=>[...k!=null?k:[],...y]),E})},[r]),h=H(()=>{const p=r.map(g=>g.length===0);return s(p),!p.some(g=>g)},[r]);return{chips:n,inputChipsList:r,handleDrop:c,handleDelete:i,addInput:u,removeInput:m,inputErrors:o,setInputErrors:s,areInputsValid:h,setInputChipsList:l}},$n=z(e=>({box:{zIndex:9,position:"fixed",bottom:"0",width:"100%"},footer:{padding:e.spacing(2)}})),Ct=({onCancel:e,saveButtonText:n,isLoading:a,onSave:r,disableSave:l})=>{const o=$n();return t.createElement(C,{className:o.box},t.createElement(Ee,{elevation:3,className:o.footer},t.createElement(d,{container:!0,item:!0,spacing:2,justifyContent:"space-between"},t.createElement(d,{item:!0},t.createElement(O,{variant:"contained",color:"primary",onClick:e},"Cancel")),t.createElement(d,{item:!0},r&&t.createElement(O,{variant:"contained",color:"primary",disabled:a||l,onClick:r?()=>r():void 0},n)))))},kt=Pe({selectedProgram:null,setSelectedProgram:()=>{},isLoading:!1,setIsLoading:()=>{},showAddModal:!1,setShowAddModal:()=>{}}),An=({children:e})=>{const[n,a]=f(null),[r,l]=f(!1),[o,s]=f(!1);return t.createElement(kt.Provider,{value:{selectedProgram:n,setSelectedProgram:a,isLoading:r,setIsLoading:l,showAddModal:o,setShowAddModal:s}},e)},de=()=>Te(kt),xt=Pe({selectedCheck:null,setSelectedCheck:()=>{},isLoading:!1,setIsLoading:()=>{},showAddModal:!1,setShowAddModal:()=>{},isReadOnly:!1,showReadOnlyModal:()=>{},hideModal:()=>{}}),Rn=({children:e})=>{const[n,a]=f(null),[r,l]=f(!1),[o,s]=f(!1),[c,i]=f(!1),u=h=>{l(!0),a(h)},m=()=>{a(null),l(!1),i(!1)};return t.createElement(xt.Provider,{value:{selectedCheck:n,setSelectedCheck:a,isLoading:o,setIsLoading:s,showAddModal:c,setShowAddModal:i,isReadOnly:r,showReadOnlyModal:u,hideModal:m}},e)},q=()=>Te(xt),Fn=z(e=>({appBar:{position:"relative"},title:{flex:1,fontSize:e.typography.h6.fontSize},closeIcon:{marginRight:e.spacing(2)},content:{flex:"1 0 auto",padding:e.spacing(2),overflowX:"hidden",backgroundColor:e.palette.type==="dark"?"#333":e.palette.common.white}})),On=t.forwardRef(function(e,n){return t.createElement(pa,{direction:"up",ref:n,...e})}),ze=({open:e,handleClose:n,title:a,children:r})=>{const l=Fn();return t.createElement(ha,{fullScreen:!0,open:e,onClose:n,TransitionComponent:On},t.createElement(ga,{className:l.appBar},t.createElement(Ea,null,t.createElement(v,{className:l.title},a),t.createElement(ve,{edge:"end",color:"inherit",onClick:n,"aria-label":"close",className:l.closeIcon},t.createElement(Ve,null)))),t.createElement(C,{className:l.content},r))},be=({name:e,control:n,error:a,label:r,placeholder:l,disabled:o,rules:s,messages:c,helperText:i,multiline:u,minRows:m})=>t.createElement(X,{name:e,control:n,defaultValue:"",rules:s,render:({field:h})=>t.createElement($,{...h,fullWidth:!0,multiline:u,minRows:m,placeholder:l,label:r,disabled:o,variant:"outlined",margin:"normal",error:!!a,helperText:a&&c?c[a.type]:i})}),Mn=z(()=>({section:{gap:0}})),Vn=({control:e,error:n,isLoading:a,disabled:r})=>{const l=Mn();return t.createElement("div",{className:l.section},t.createElement(be,{name:"checkName",control:e,error:n,label:"Check Name",placeholder:"Choose a name",disabled:a||r,rules:{required:!0,maxLength:100},messages:{required:"This field is required",maxLength:"Input must be less than 100 characters"}}))},Bn=z(e=>({root:{display:"flex",flexDirection:"column",gap:0},button:{marginLeft:-e.spacing(1)},title:{fontWeight:700,color:e.palette.primary.main}})),Ce=({title:e,children:n})=>{const[a,r]=f(!1),l=Bn(),o=()=>{r(!a)};return t.createElement("div",{className:l.root},t.createElement(d,{container:!0,alignItems:"center",spacing:0},t.createElement(d,{item:!0},t.createElement(ve,{onClick:o,className:l.button},t.createElement(Ma,null))),t.createElement(d,{item:!0},t.createElement(v,{className:l.title},e))),t.createElement(va,{in:a},n))},Gn=({control:e,passError:n,failError:a,isLoading:r,disabled:l})=>t.createElement(Ce,{title:l?"Pass and fail messages":"Pass and fail messages (optional)"},t.createElement(be,{name:"passMessage",control:e,error:n,label:"Pass Message",placeholder:"Enter pass message...",disabled:r||l}),t.createElement(be,{name:"failMessage",control:e,error:a,label:"Fail Message",placeholder:"Enter fail message...",disabled:r||l})),Hn=({control:e,error:n,isLoading:a,disabled:r})=>t.createElement(be,{name:"description",control:e,error:n,label:"Check Description",disabled:a||r,multiline:!0,minRows:4,placeholder:r?void 0:"Enter a brief description about the check",helperText:r?void 0:"Enter a brief description about the check",rules:{required:!0,maxLength:500},messages:{required:"This field is required",maxLength:"Description must be less than 500 characters"}}),zn=b(e=>({button:{backgroundColor:e.palette.background.default,color:e.palette.primary.main},label:{paddingRight:e.spacing(2)},icon:{borderLeft:`1px solid ${e.palette.primary.main}`,padding:e.spacing(1,0,0,1)},menu:{marginTop:"52px"}})),Wn=({onAddCondition:e,onAddExpression:n})=>{const a=zn(),[r,l]=f(null),o=!!r,s=i=>{l(i.currentTarget)},c=()=>{l(null)};return t.createElement(C,null,t.createElement(et,{color:"primary"},t.createElement(O,{id:"add-button",className:a.button,"aria-controls":o?"add-menu":void 0,"aria-haspopup":"true","aria-expanded":o?"true":void 0,onClick:s},t.createElement(C,{className:a.label},"Add"),t.createElement(C,{className:a.icon},t.createElement(Va,null)))),t.createElement(tt,{id:"add-menu",anchorEl:r,open:o,onClose:c,classes:{paper:a.menu},MenuListProps:{"aria-labelledby":"add-button"}},t.createElement(ae,{onClick:()=>{e(),c()}},"Add Condition"),t.createElement(ae,{onClick:()=>{n(),c()}},"Add Expression")))},wt=({name:e,control:n,selectLabel:a,options:r,disabled:l,rules:o})=>t.createElement(X,{name:e,control:n,rules:o,render:({field:s,fieldState:c})=>t.createElement(Ie,{variant:"outlined",style:{minWidth:200}},t.createElement($e,{id:`${e}-select-label`},a),t.createElement(Ae,{...s,disabled:l,error:c.invalid,"data-testid":`${e}-select`,labelId:`${e}-select-label`,label:a},r.map(({value:i,label:u})=>t.createElement(ae,{key:i,value:i},u))))});var Y=(e=>(e.AllOf="all",e.AnyOf="any",e))(Y||{});const qn={all:"ALL OF",any:"ANY OF"};var St=(e=>(e.Equal="equal",e.NotEqual="notEqual",e.Matches="matches",e.LessThan="lessThan",e.LessThanInclusive="lessThanInclusive",e.GreaterThan="greaterThan",e.GreaterThanInclusive="greaterThanInclusive",e.In="in",e.NotIn="notIn",e.Contains="contains",e.DoesNotContain="doesNotContain",e.SemverGt="semverGt",e.SemverGte="semverGte",e.SemverLt="semverLt",e.SemverLte="semverLte",e.SemverEq="semverEq",e.SemverNeq="semverNeq",e.SemverSatisfies="semverSatisfies",e.SemverGtr="semverGtr",e.SemverLtr="semverLtr",e))(St||{});const Kn={equal:"Equals",notEqual:"Does Not Equal",matches:"Matches",semverGt:"Version Greater Than",semverGte:"Version Greater Than or Equals",semverLt:"Version Less Than",semverLte:"Version Less Than or Equals",semverEq:"Version Equals",semverNeq:"Version Not Equals",semverSatisfies:"Version Satisfies Range",semverGtr:"Version Greater Than Range",semverLtr:"Version Less Than Range",lessThan:"Less Than",lessThanInclusive:"Less Than or Equals",greaterThan:"Greater Than",greaterThanInclusive:"Greater Than or Equals",in:"In Array",notIn:"Not in Array",contains:"Contains",doesNotContain:"Does Not Contain"},Un=b(e=>({container:{borderLeft:`1px solid ${e.palette.grey[500]}`,marginLeft:e.spacing(2),padding:e.spacing(2,0,2,0),display:"flex",flexDirection:"row",alignItems:"center",gap:e.spacing(0)},connector:{borderBottom:`1px solid ${e.palette.grey[500]}`,padding:e.spacing(0),width:"15px",height:"45px"},innerContainer:{backgroundColor:e.palette.background.default,border:`1px solid ${e.palette.grey[500]}`,display:"flex",flexDirection:"column"},inputsContainer:{padding:e.spacing(2),display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",gap:e.spacing(1)},header:{background:"linear-gradient(90deg, #007DFF 0%, #0057B2 100%)",width:"100%",height:"8px"},deleteButton:{marginLeft:e.spacing(1),width:"45px",height:"45px"},deleteIcon:{color:e.palette.type==="dark"?e.palette.background.default:e.palette.common.black}}));function Lt(e){const n=I(G);return W([T.GetCollectors,e],async()=>n.getCollectors(e))}function jn(e,n){const a=I(G);return W([T.GetFactSchema,e,n],()=>a.getFactSchema(e,n),{enabled:!!e&&!!n})}var N=(e=>(e.Months="months",e.Weeks="weeks",e.Days="days",e.Hours="hours",e.Minutes="minutes",e.Seconds="seconds",e))(N||{});const Nt=[N.Months,N.Weeks,N.Days,N.Hours,N.Minutes,N.Seconds];function _n(e){return Nt.includes(e)}function Qn(e){switch(e){case"months":return N.Months;case"weeks":return N.Weeks;case"days":return N.Days;case"hours":return N.Hours;case"minutes":return N.Minutes;case"seconds":return N.Seconds;default:return null}}function Yn(e){const[n,a]=f(""),[r,l]=f(!1);return P(()=>{if(e&&e!=="")try{const o=en.toString(e);Za(e).isValid()?(a(o),l(!0)):(a("Invalid cron expression"),l(!1))}catch(o){if(typeof o=="string"){const s=o.replace(/^Error:\s*/,"");a(s)}else a("Invalid cron expression");l(!1)}else a(""),l(!1)},[e]),{description:n,valid:r}}const Jn=({value:e,onChange:n,setValid:a,disabled:r})=>{const[l,o]=f(e),{description:s,valid:c}=Yn(l.cron);P(()=>{a(e.type!=="cron"||c)},[e,a,c]),P(()=>{n&&n(l)},[l,n]);const i=p=>{o({...e,type:p.target.value})},u=p=>{o({...e,value:parseInt(p.target.value,10)})},m=p=>{var g;o({...l,unit:(g=Qn(p.target.value))!=null?g:N.Hours})},h=p=>{const g=p.target.value;o({...l,cron:g})};return t.createElement(d,{container:!0,direction:"row"},t.createElement(d,{item:!0},t.createElement(fa,{name:"frequencyType",value:l.type,onChange:i},t.createElement(d,{container:!0,alignItems:"flex-start"},t.createElement(d,{item:!0},t.createElement(at,{disabled:r,value:"HumanDuration"})),t.createElement(d,{item:!0},t.createElement(v,{variant:"body1"},"Run on a regular interval"),t.createElement(v,{variant:"caption"},"Run on a regular interval that you define"),l.type==="HumanDuration"&&t.createElement(d,{container:!0,alignItems:"center"},t.createElement(d,{item:!0},t.createElement($,{id:"every",type:"number",label:"Every",name:"every",disabled:r,value:l.value,onChange:u,inputProps:{min:1}})),t.createElement(d,{item:!0},t.createElement(Ie,null,t.createElement($e,{id:"frequency-unit"},"Unit"),t.createElement(Ae,{labelId:"frequency-unit",disabled:r,value:l.unit,onChange:m},Nt.map(p=>t.createElement(ae,{key:p,value:p},p)))))))),t.createElement(d,{container:!0,alignItems:"flex-start",spacing:2},t.createElement(d,{item:!0},t.createElement(at,{disabled:r,value:"cron"})),t.createElement(d,{item:!0},t.createElement(v,{variant:"body1"},"Run on a schedule"),t.createElement(v,{variant:"caption"},"Run on a schedule defined via cron expression"),l.type==="cron"&&t.createElement(d,{item:!0},t.createElement($,{"data-testid":"cron-expression",style:{minWidth:250},label:s,disabled:r,placeholder:"* * * * *",error:!c,value:l.cron,onChange:h})))))))},Xn=(e,n,a,r)=>{const l={};return r&&r.forEach(o=>{var s,c;o&&(l[o.id]={id:o.id,name:(s=o.name)!=null?s:o.id,description:(c=o.description)!=null?c:""})}),e.map((o,s)=>{const c=o.map(i=>l[i.id]);return{name:n[s],description:a[s],ordinal:s+1,checks:c}})},Zn=e=>e.map(n=>n.checks.map(a=>{var r;return{id:a.id,label:(r=a.name)!=null?r:a.id}})),er=e=>{var n;return{id:e.id,name:e.name,description:e.description||"",ownerEntityRef:e.ownerEntityRef,documentationURL:e.documentationURL||"",levels:((n=e.levels)==null?void 0:n.map(a=>({ordinal:a.ordinal,name:a.name||"",description:a.description||"",checks:a.checks.map(r=>({id:r.id,name:r.name,description:r.description}))})))||[],filter:e.filter}},Se={selectedKinds:"kind",selectedTypes:"spec.type",selectedLifecycles:"spec.lifecycle",selectedOwners:"spec.owner",selectedSystems:"spec.system",selectedTags:"metadata.tags"},Pt=e=>!e||Object.values(e).every(n=>n.length===0)?void 0:{catalog:Object.entries(e).reduce((n,[a,r])=>{const l=Se[a];return r.length>0&&(n[l]=r),n},{})},Tt=e=>Object.keys(Se).reduce((n,a)=>{var r,l;return n[a]=qa((l=(r=e==null?void 0:e.catalog)==null?void 0:r[Se[a]])!=null?l:[]),n},{}),tr=e=>{if(!e||Object.values(e).every(a=>a.length===0))return;const n={};for(const[a,r]of Object.entries(e))r.length>0&&(n[Se[a]]=r);return[n]},ar=e=>{var n;if(tn(e)&&"frequency"in e){const a=Ka.safeParse(e.frequency);if(a.success){const r=a.data;if("cron"in r)return{enabled:!0,frequency:{type:"cron",unit:N.Hours,value:1,cron:r.cron}};const l=Object.keys(r);if(l.length){const o=l[0];if(_n(o))return{enabled:!0,frequency:{type:"HumanDuration",unit:o,value:(n=r[o])!=null?n:1,cron:""}}}}}return{enabled:!1,frequency:{type:"HumanDuration",unit:N.Hours,value:1,cron:""}}},nr=(e,n)=>{const{enabled:a,frequency:r}=e;if(a){const{cron:l,type:o,unit:s,value:c}=r;return o==="HumanDuration"?{frequency:{[s]:c},filter:tr(n)}:{frequency:{cron:l}}}},rr=(e,n)=>{const a=e?Zn(e.levels):[[]],r=a.flat().map(o=>o.id),l=n.filter(o=>!r.includes(o.id));return{inputChips:a,used:l}},lr={enabled:!1,frequency:{type:"HumanDuration",unit:N.Hours,value:1,cron:""}},We=e=>{var n;if(!e)return{};if(e.expressionType){const a={[e.expressionType]:(n=e.conditions)==null?void 0:n.map(r=>({factRef:r.factRef,path:r.path,operator:r.operator,value:r.value}))};return e.expressions&&e.expressions.forEach(r=>{var l;(l=a[e.expressionType])==null||l.push(We(r))}),a}if(e.expressions)return e.expressions.map(We);if(e.conditions&&e.conditions.length===1){const a=e.conditions[0];return{factRef:a.factRef,path:a.path,operator:a.operator,value:a.value}}return{}},Dt=(e,n=!0)=>{if(!e)return{conditions:[]};const a=Object.keys(e),r=a.includes("all")||n&&!a.includes("any")?Y.AllOf:Y.AnyOf;if(a.includes(r)||n){const l=e[r]||[e],o=[],s=[];return l.forEach(c=>{const i=Object.keys(c);i.includes("all")||i.includes("any")?s.push(Dt(c,!1)):o.push({factRef:c.factRef,path:c.path,operator:c.operator,value:c.value})}),{expressions:s.length>0?s:void 0,conditions:o,expressionType:r}}return{expressionType:Y.AllOf,conditions:[{factRef:e.factRef,path:e.path,operator:e.operator,value:e.value}]}},or=e=>({checkName:e.name||"",description:e.description||"",teamOwner:e.ownerEntityRef||"",supportChannel:e.supportChannel||"",expressions:Dt(e.rule),passMessage:e.passedMessage||void 0,failMessage:e.failedMessage||void 0,filters:Tt(e.filter),schedule:ar(e.schedule)}),qe=(e,n="$")=>{const a=[];if(e.type==="object"&&e.properties){const r=e.properties;for(const l in r)if(r.hasOwnProperty(l)){const o=`${n}.${l}`;a.push(o);const s=r[l];a.push(...qe(s,o))}}if(e.type==="array"&&e.items){const r=`${n}[*]`;a.push(r);const l=Array.isArray(e.items)?e.items:[e.items];for(const o of l)a.push(...qe(o,r))}return a},sr={checkName:"",description:"",teamOwner:"",supportChannel:"",expressions:{expressionType:Y.AllOf,expressions:void 0,conditions:[{factRef:"",path:"",operator:"",value:"",conditions:[]}]},filters:{selectedKinds:[],selectedTypes:[],selectedLifecycles:[],selectedOwners:[],selectedSystems:[],selectedTags:[]},schedule:lr},ir=(e,n)=>{const{data:a,isLoading:r}=Lt(),l=Be({control:n,name:`${e}.factRef`}),[o,s]=f(()=>It(l));P(()=>{s(It(l))},[l]);const{data:c}=jn(o==null?void 0:o.source,o==null?void 0:o.name),i=_(()=>c?qe(c.schema):[],[c]),u=_(()=>a==null?void 0:a.flatMap(m=>m.factNames.map(h=>{const p=Ge(h,{defaultSource:m.id,defaultScope:"default"});return{label:p.name,value:Ua(p)}})),[a]);return{isLoading:r,pathOptions:i,factRefOptions:u}};function It(e){if(e)try{return Ge(e,{defaultSource:"unknown",defaultScope:"default"})}catch{return null}return null}const $t=({name:e,rules:n,label:a,control:r,options:l,getOptionLabel:o,getOptionValue:s,disabled:c})=>t.createElement(X,{name:e,control:r,rules:n,render:({field:i,fieldState:u})=>t.createElement(st,{...i,freeSolo:!0,"data-testid":`${e}-autocomplete`,style:{minWidth:250},disabled:c,options:l,getOptionLabel:o,renderInput:m=>t.createElement($,{...m,variant:"outlined",label:a,error:u.invalid,helperText:u.error?u.error.message:null}),onChange:(m,h)=>i.onChange(s?s(h):h),onInputChange:(m,h)=>i.onChange(s?s(h):h)})}),cr=e=>{try{return Ge(e),!0}catch{return"Invalid fact reference. [source]:[scope]/[name]."}},mr=({control:e,name:n,handleDelete:a,disabled:r,disableDelete:l})=>{const o=Un(),s=_(()=>Object.values(St).map(p=>({value:p,label:Kn[p]})),[]),{pathOptions:c,factRefOptions:i,isLoading:u}=ir(n,e),m={required:!0},h=_(()=>{var p;return(p=i==null?void 0:i.map(g=>g.value))!=null?p:[]},[i]);return t.createElement(C,{className:o.container},t.createElement(C,{className:o.connector}),t.createElement(C,{className:o.innerContainer},t.createElement(C,{className:o.header}),t.createElement(C,{className:o.inputsContainer},t.createElement($t,{name:`${n}.factRef`,control:e,rules:{...m,maxLength:500,validate:cr},label:"Fact",options:h,getOptionLabel:p=>{var g,E;return(E=(g=i==null?void 0:i.find(y=>p===y.value))==null?void 0:g.label)!=null?E:p},getOptionValue:p=>{var g,E,y;return(y=(E=(g=i==null?void 0:i.find(k=>p===k.label))==null?void 0:g.value)!=null?E:p)!=null?y:""},disabled:r||u}),t.createElement($t,{name:`${n}.path`,label:"Path",rules:m,control:e,disabled:r||u,options:c}),t.createElement(wt,{name:`${n}.operator`,rules:m,control:e,selectLabel:"Operator",options:s,disabled:r}),t.createElement(X,{name:`${n}.value`,control:e,defaultValue:"",rules:m,render:({field:p,fieldState:g})=>t.createElement($,{...p,label:"Value",variant:"outlined",placeholder:"Enter a value",error:g.invalid,helperText:g.error?g.error.message:null,disabled:r})}))),!r&&!l&&t.createElement(ve,{onClick:a,className:o.deleteButton,"data-test-id":`${n}-delete-button`},t.createElement(ot,{className:o.deleteIcon})))},dr=({conditions:e,control:n,name:a,handleDelete:r,disabled:l,disableDelete:o,setValue:s})=>t.createElement(t.Fragment,null,e.map((c,i)=>t.createElement(d,{item:!0,key:i},t.createElement(mr,{control:n,name:`${a}.conditions[${i}]`,"data-testid":`${a}-condition-input`,handleDelete:()=>r(i),disabled:l,disableDelete:o,setValue:s})))),ur=({expression:e,control:n,name:a,depth:r,getValues:l,setValue:o,trigger:s,disabled:c})=>e?t.createElement(d,{item:!0},t.createElement(At,{control:n,name:`${a}`,depth:r+1,getValues:l,setValue:o,trigger:s,disabled:c})):null,pr=b(e=>({button:{fontWeight:700,backgroundColor:e.palette.background.default,color:e.palette.primary.main,"&:hover":{backgroundColor:"rgba(46, 119, 208, 0.2)"}},selectedButton:{backgroundColor:"rgba(46, 119, 208, 0.15)"}})),hr=({control:e,name:n,getValues:a,disabled:r})=>{const l=pr(),o=`${n}`,s=a(o),[c,i]=f(s||Y.AllOf),u=m=>{i(m)};return t.createElement(X,{control:e,name:n,render:({field:{onChange:m}})=>t.createElement(et,{color:"primary"},Object.values(Y).map(h=>t.createElement(O,{key:h,className:c===h?`${l.selectedButton} ${l.button}`:`${l.button}`,onClick:()=>{u(h),m(h)},disabled:r},qn[h])))})},gr=(e,n,a,r)=>({handleAddCondition:async()=>{const l=`${e}`,o=n(l),s=[...(o==null?void 0:o.conditions)||[],{factRef:"",path:"",operator:"",value:""}],c=`${e}.conditions`;a(c,s),await r(c)},handleAddExpression:async()=>{const l=`${e}.expressions`,o=n(l)||[];o.push({expressionType:Y.AllOf,expressions:void 0,conditions:[{factRef:"",path:"",operator:"",value:""}]}),a(l,o),await r(l)},handleDeleteCondition:async(l,o)=>{const s=o.split("[")[0],c=`${o}.conditions`,i=n(c);if(i.splice(l,1),i.length===0){a(c,void 0);const u=parseInt(o.slice(o.lastIndexOf("[")+1,o.lastIndexOf("]")),10),m=n(s);m.splice(u,1),a(s,m.length>0?m:void 0),await r(s)}else a(c,i),await r(c)}}),Er=z(e=>({root:{backgroundColor:e.palette.type==="dark"?e.palette.grey[700]:e.palette.grey[100],border:`1px solid ${e.palette.grey[500]}`,padding:e.spacing(2)},inner:{marginLeft:e.spacing(2),paddingBottom:e.spacing(2),borderLeft:`1px solid ${e.palette.grey[500]}`,display:"flex",flexDirection:"row",gap:0},connector:{borderBottom:`1px solid ${e.palette.grey[500]}`,padding:e.spacing(0),width:"15px",height:"20px"}})),At=({control:e,name:n,depth:a,getValues:r,setValue:l,trigger:o,disabled:s})=>{const c=Er(),{handleAddCondition:i,handleAddExpression:u,handleDeleteCondition:m}=gr(n,r,l,o),h=`${n}`,p=r(h),g=(p==null?void 0:p.conditions)||[],E=p==null?void 0:p.expressions;return t.createElement(C,{className:a>0?c.inner:c.root},a>0&&t.createElement(C,{className:c.connector}),t.createElement(d,{container:!0,spacing:0,direction:"column"},t.createElement(d,{item:!0},t.createElement(hr,{control:e,disabled:s,name:`${n}.expressionType`,getValues:r})),t.createElement(d,{item:!0,container:!0,spacing:0,direction:"column"},t.createElement(dr,{disableDelete:g.length===1&&a===0,handleDelete:y=>m(y,n),disabled:s,conditions:g,control:e,name:n,setValue:l}),E==null?void 0:E.map((y,k)=>t.createElement(ur,{key:k,expression:y,control:e,name:`${n}.expressions[${k}]`,depth:a,getValues:r,setValue:l,trigger:o,disabled:s}))),!s&&t.createElement(d,{item:!0},t.createElement(Wn,{onAddCondition:i,onAddExpression:u}))))},vr=({control:e,supportContactError:n,disabled:a,isLoading:r,options:l})=>{var o;return t.createElement(Ce,{title:a?"Owner Details":"Owner Details (optional)"},t.createElement(wt,{name:"teamOwner",control:e,selectLabel:"Owner",options:(o=l==null?void 0:l.map(s=>({value:s.ref,label:s.name})))!=null?o:[],disabled:a||r}),t.createElement(be,{name:"supportChannel",control:e,error:n,label:"Support channel",placeholder:"Enter a channel or email to get check support",disabled:a||r,rules:{},messages:{}}))},Rt=[{facet:"kind",label:"Kind",stateKey:"selectedKinds"},{facet:"spec.type",label:"Type",stateKey:"selectedTypes"},{facet:"spec.lifecycle",label:"Lifecycle",stateKey:"selectedLifecycles"},{facet:"spec.owner",label:"Owner",stateKey:"selectedOwners"},{facet:"spec.system",label:"System",stateKey:"selectedSystems"},{facet:"metadata.tags",label:"Tags",stateKey:"selectedTags"}],fr=e=>{const n=I(Ba),a=I(it);return W([T.GetEntityFacets,e],async()=>{var r;return((r=(await a.getEntityFacets({facets:[e]})).facets[e])==null?void 0:r.map(l=>l.value).sort())||[]},{onError:()=>{n.post({message:`Failed to load facet: ${e}`,severity:"error"})}})},yr=b({formControl:{flexGrow:1}}),Ft=({facet:e,label:n,values:a,onChange:r,disabled:l})=>{const o=yr(),{data:s,error:c}=fr(e),i=_(()=>s==null?void 0:s.map(p=>p.toLocaleLowerCase("en-US")),[s]),u=H((p,g)=>{r(i&&i.every(E=>g.includes(E))?void 0:g)},[i,r]),m=H(()=>{r(a!=null&&a.length?a:void 0)},[a,r]);if(!s||!i||c)return t.createElement(v,{color:"error"},"Failed to load facet: ",e);const h=l||!(a!=null&&a.length)&&(!(s!=null&&s.length)||!(i!=null&&i.length));return t.createElement(C,{pb:1,pt:1},t.createElement(v,{variant:"subtitle2"},n),t.createElement(st,{className:o.formControl,multiple:!0,limitTags:4,disableCloseOnSelect:!0,"aria-label":n,options:i,value:a!=null?a:[],getOptionLabel:p=>{var g;return(g=s[i.indexOf(p)])!=null?g:p},onChange:u,onBlur:m,disabled:h,renderOption:(p,{selected:g})=>{var E;return t.createElement(fe,{control:t.createElement(ye,{icon:t.createElement(nn,{fontSize:"small"}),checkedIcon:t.createElement(an,{fontSize:"small"}),checked:g}),label:(E=s[i.indexOf(p)])!=null?E:p})},size:"small",popupIcon:t.createElement(rn,{"data-testid":"selected-facets-expand"}),renderInput:p=>t.createElement($,{...p,variant:"outlined"})}))},br=b(e=>({title:{fontWeight:700},container:{padding:e.spacing(0,1.5)},filterContainer:{display:"flex",flexWrap:"wrap",padding:e.spacing(2)}})),Cr=({control:e,setFilters:n,disabled:a})=>{const r=br(),l=Be({control:e,name:"filters",defaultValue:{selectedKinds:[],selectedTypes:[],selectedLifecycles:[],selectedOwners:[],selectedSystems:[],selectedTags:[]}}),o=s=>c=>{n(s,c)};return t.createElement(Ce,{title:a?"Filters":"Filters (optional)"},t.createElement(d,{className:r.container,item:!0,xs:12},t.createElement(v,{variant:"body2"},"Apply filters so it's only applicable to relevant entities."),t.createElement(d,{item:!0,xs:12},t.createElement(Ee,null,t.createElement(d,{container:!0,className:r.filterContainer,spacing:2},Rt.map(s=>t.createElement(d,{item:!0,xs:12,sm:6,md:4,key:s.stateKey},t.createElement(Ft,{facet:s.facet,label:s.label,values:l==null?void 0:l[s.stateKey],onChange:o(s.stateKey),disabled:a}))))))))},kr=({control:e,setValue:n,trigger:a,disabled:r})=>t.createElement(Cr,{control:e,setFilters:async(l,o)=>{n(`filters.${l}`,o!=null?o:[]),await a(`filters.${l}`)},disabled:r}),xr=b(e=>({container:{padding:e.spacing(0,1.5)}})),wr=({control:e,disabled:n})=>{const a=xr(),r=Be({control:e,name:"schedule"}),[l,o]=f(!0);return t.createElement(d,{className:a.container,item:!0,xs:12},t.createElement(d,{item:!0},t.createElement(X,{name:"schedule.enabled",control:e,render:({field:s})=>t.createElement(fe,{disabled:n,control:t.createElement(ye,{checked:s.value,onChange:s.onChange}),label:"Schedule check"})})),t.createElement(d,{item:!0},t.createElement(X,{name:"schedule.frequency",control:e,rules:{validate:(s,c)=>l},render:({field:s})=>t.createElement(Jn,{disabled:n||!r.enabled,value:s.value,onChange:s.onChange,valid:l,setValid:o})})))},Sr=b(e=>({container:{padding:e.spacing(0,1.5)},scheduleContainer:{padding:e.spacing(2)}})),Lr=({control:e,disabled:n})=>{const a=Sr();return t.createElement(Ce,{title:n?"Schedule":"Schedule (optional)"},t.createElement(d,{className:a.container,item:!0,xs:12},t.createElement(d,{item:!0},t.createElement(v,{variant:"body2"},"By default checks are execute when any fact they depend on is updated. However, you may also schedule a check to run on a schedule.")),t.createElement(d,{item:!0,xs:12},t.createElement(Ee,{className:a.scheduleContainer},t.createElement(wr,{disabled:n,control:e})))))},Nr=e=>{const{selectedCheck:n}=q();let a=sr;n&&(a=or(n));const{control:r,handleSubmit:l,getValues:o,setValue:s,trigger:c,formState:{errors:i}}=Oa({defaultValues:a}),{showModal:u}=we();return{control:r,handleSubmit:l,getValues:o,setValue:s,trigger:c,errors:i,onSubmit:async m=>{var h,p,g,E;if(!await u({title:"Save Check",message:`Are you sure you want to save check: ${m.checkName}?`,error:!1}))return;const y={id:n?n.id:mt(),ownerEntityRef:(h=m.teamOwner)!=null?h:void 0,name:m.checkName,description:m.description,passedMessage:(p=m.passMessage)!=null?p:void 0,failedMessage:(g=m.failMessage)!=null?g:void 0,rule:We(m.expressions),filter:m.filters?Pt(m.filters):void 0,supportChannel:(E=m.supportChannel)!=null?E:void 0,schedule:nr(m.schedule,m.filters)};e(y)}}},Pr=()=>t.createElement("div",{style:{display:"flex",gap:"10px",flexDirection:"column"}},t.createElement(v,{variant:"h6"},"Creating and managing checks"),t.createElement(v,{variant:"body1"},"Checks are entities created from four components: facts, paths, operators and values. These components are then organized via a boolean calculator in the UI."),t.createElement(v,{variant:"body1"},"To create a check, select the components that you want to use, organize them into rules and give your check a meaningful name and a description."),t.createElement(v,{variant:"body1"},"Once created, you will be able to manage and edit your track on its detail page.")),Ot=z(e=>({root:{overflow:"hidden",display:"flex",marginBottom:"53px"},card:{padding:e.spacing(3),display:"flex",gap:e.spacing(2.5)},sectionLabel:{fontWeight:700,margin:e.spacing(2,0),color:e.palette.primary.main}})),Ke=({title:e,open:n,onSave:a})=>{const r=Ot(),{hideModal:l,isLoading:o,isReadOnly:s}=q(),{control:c,handleSubmit:i,getValues:u,setValue:m,trigger:h,errors:p,onSubmit:g}=Nr(a),{options:E}=Ia();return t.createElement(ze,{handleClose:l,title:e,open:n},t.createElement("form",{onSubmit:i(g)},t.createElement(d,{container:!0,spacing:2,className:r.root},t.createElement(d,{item:!0,xs:9},t.createElement(Re,{className:r.card},t.createElement(v,{className:r.sectionLabel,style:{margin:0}},"Check Details"),t.createElement(Vn,{control:c,error:p.checkName,isLoading:o,disabled:s}),t.createElement(Hn,{control:c,error:p.description,isLoading:o,disabled:s}),t.createElement(vr,{control:c,disabled:s,isLoading:o,options:E}),t.createElement(v,{className:r.sectionLabel},"Rules"),t.createElement(At,{control:c,getValues:u,setValue:m,trigger:h,disabled:s,name:"expressions",depth:0}),t.createElement(kr,{control:c,setValue:m,trigger:h,disabled:s}),t.createElement(Gn,{control:c,passError:p.passMessage,failError:p.failMessage,isLoading:o,disabled:s}),t.createElement(Lr,{control:c,disabled:s}))),t.createElement(d,{item:!0,xs:3},t.createElement(Pr,null))),t.createElement(d,{container:!0,spacing:4,className:r.root},t.createElement(Ct,{onCancel:l,saveButtonText:"Save Check",isLoading:o,onSave:s?void 0:i(g)}))))},Tr="Error Creating Check";function Dr(){const e=I(G),n=se(),{showAlert:a}=Z(),r=async l=>{const o=await e.updateCheck(l);if(!o)throw new Error("Failed to update check.");return o};return ie([ce.UpdateCheck],r,{onSuccess:()=>{n.invalidateQueries({queryKey:[T.GetChecks]})},onError:l=>{let o="Failed to update check.";l instanceof Error&&(o=l.message),a({severity:"error",title:Tr,message:o})}})}const Ir=()=>{const{selectedCheck:e,hideModal:n}=q(),{setIsLoading:a}=q(),{mutateAsync:r,isLoading:l}=Dr();return P(()=>{a(l)},[a,l]),t.createElement(Ke,{title:"Edit a Check",open:!!e,onSave:async o=>{await r(o)&&n()}})},$r="Error Creating Check";function Ar(){const e=I(G),n=se(),{showAlert:a}=Z(),r=async l=>{const o=await e.createCheck(l);if(!o)throw new Error("Failed to create check.");return o};return ie([ce.CreateCheck],r,{onSuccess:()=>{n.invalidateQueries({queryKey:[T.GetChecks]})},onError:l=>{let o="Failed to create check.";l instanceof Error&&(o=l.message),a({severity:"error",title:$r,message:o})}})}const Rr=()=>{const{hideModal:e,showAddModal:n,setIsLoading:a}=q(),{mutateAsync:r,isLoading:l}=Ar();return P(()=>{a(l)},[a,l]),t.createElement(Ke,{title:"Create a Check",open:n,onSave:async o=>{await r(o)&&e()}})},Fr=({handleDelete:e})=>{const[n,a]=f(null),r=!!n,l=s=>{s.stopPropagation(),a(s.currentTarget)},o=s=>{s.stopPropagation(),a(null)};return t.createElement(t.Fragment,null,t.createElement(ve,{"aria-label":"summary-card-actions",id:"summary-card-action-menu-button","aria-controls":r?"summary-card-action-menu":void 0,"aria-expanded":r?"true":void 0,"aria-haspopup":"true",onClick:l},t.createElement(ln,null)),t.createElement(tt,{id:"summary-card-action-menu",anchorEl:n,open:r,onClose:o,getContentAnchorEl:null,anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},MenuListProps:{"aria-labelledby":"summary-card-action-menu-button"}},e&&t.createElement(ae,{"data-testid":"summary-card-action-delete",onClick:s=>{e(s),o(s)}},t.createElement(ne,null,t.createElement(ot,{fontSize:"small"})),t.createElement(re,null,"Delete"))))},Or=ya(e=>Da({root:{width:"100%",height:"100%",minHeight:"385px",display:"flex",flexDirection:"column",padding:e.spacing(2),position:"relative"}}))(Re),Mr=b(e=>({root:{position:"relative",height:"100%"},summaryName:{fontSize:e.typography.pxToRem(24),color:e.palette.primary.main,maxHeight:"250px",overflow:"hidden",textOverflow:"ellipsis",display:"-webkit-box",WebkitLineClamp:6,WebkitBoxOrient:"vertical","-webkit-line-clamp":4,"-webkit-box-orient":"vertical",wordBreak:"break-word"},summaryDescription:{padding:0,maxHeight:"175px",overflow:"hidden",textOverflow:"ellipsis",display:"-webkit-box",WebkitLineClamp:6,WebkitBoxOrient:"vertical",wordBreak:"break-word"},card:{paddingTop:e.spacing(1),paddingBottom:0,paddingLeft:e.spacing(1),paddingRight:e.spacing(1)}})),Ue=({title:e,description:n,viewLabel:a="View",editLabel:r="Edit",children:l,handleDelete:o,handleEdit:s,handleView:c})=>{const i=Mr();return t.createElement(Or,{className:i.card},t.createElement(ba,{title:e,titleTypographyProps:{className:i.summaryName},subheader:t.createElement(ia,{className:i.summaryDescription,content:n!=null?n:""}),action:o&&t.createElement(Fr,{handleDelete:o})}),t.createElement(Ca,null,l),t.createElement(Fe,null),t.createElement(ka,null,t.createElement(O,{size:"medium",color:"primary",role:"link",onClick:s||c,disabled:!c&&!s},s?r:a)))},Vr="Error Deleting Check";function Br(){const e=I(G),n=se(),{showAlert:a}=Z(),r=async l=>{const o=await e.deleteCheck(l);if(!o)throw new Error(`Failed to delete check ${l}`);return o};return ie([ce.DeleteCheck],r,{onSuccess:()=>{n.invalidateQueries({queryKey:[T.GetChecks]})},onError:(l,o)=>{let s=`Failed to delete check ${o}`;l instanceof Error&&(s=l.message),a({severity:"error",title:Vr,message:s})}})}const Gr=b(e=>({root:{position:"relative",height:"100%"},cardSection:{marginBottom:e.spacing(2)},listItem:{padding:0},listItemText:{margin:0}})),Hr=({check:e})=>{var n;const a=Gr();return t.createElement(Oe,{dense:!0,disablePadding:!0,className:a.cardSection},t.createElement(v,{variant:"overline",color:"textSecondary"},"Check Details"),t.createElement(Q,{disableGutters:!0,className:a.listItem},t.createElement(le,{title:"Owner"},t.createElement(ne,null,t.createElement(dt,{color:"action",fontSize:"small"}))),t.createElement(re,{className:a.listItemText,primary:t.createElement(ct,{entityRef:(n=e.ownerEntityRef)!=null?n:"No Owner"})})))},zr=({check:e})=>{const{id:n,name:a,description:r,isEditable:l,ownerEntityRef:o}=e,{loading:s,allowed:c}=me({permission:ja,resourceRef:n}),{loading:i,allowed:u}=me({permission:_a,resourceRef:n}),{showModal:m}=we(),{mutate:h}=Br(),{showReadOnlyModal:p,setSelectedCheck:g}=q(),E=H(async()=>{await m({title:"Delete Check",message:`Are you sure you want to delete the check '${a!=null?a:n}'?`})&&h(n)},[m,a,h,n]);return t.createElement(Ue,{title:a!=null?a:n,description:r,children:o&&t.createElement(Hr,{check:e}),handleView:()=>p(e),handleEdit:l&&!s&&c?()=>g(e):void 0,handleDelete:l&&!i&&u?E:void 0})},Wr=()=>t.createElement(t.Fragment,null,Array.from({length:10},(e,n)=>t.createElement(d,{key:`loading-${n}`,xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem"},t.createElement(He,{variant:"rect",height:385})))),qr=b(()=>({searchIcon:{opacity:".5"},clearButton:{height:"36px",width:"36px"}})),Mt=({searchTerm:e,setSearchTerm:n,showClear:a=!0,placeholder:r="Search...",...l})=>{const o=qr(),s=i=>{n(i.target.value)},c=()=>{n("")};return t.createElement($,{...l,fullWidth:!0,placeholder:r,value:e,onChange:s,InputProps:{startAdornment:t.createElement(nt,{position:"start"},t.createElement(on,{className:o.searchIcon,"data-testid":"search-icon"})),endAdornment:a&&e?t.createElement(nt,{position:"end"},t.createElement(ve,{edge:"end",onClick:c,className:o.clearButton},t.createElement(Ve,null))):null}})},Kr=b(()=>({searchbar:{maxWidth:"350px"},filters:{display:"flex",alignItems:"center"},dropdownFilters:{margin:"0 15px",display:"flex",alignItems:"center"},selectHolder:{marginLeft:"10px"}})),Vt=({searchPlaceholder:e,isLoading:n,searchTerm:a,setSearchTerm:r,filterAlpha:l,handleAlphabeticalFilterChange:o,filterOwner:s,handleOwnerFilterChange:c,owners:i})=>{const u=Kr();return t.createElement(d,{item:!0,xs:9,className:u.filters},t.createElement(Mt,{searchTerm:a,disabled:n,setSearchTerm:r,placeholder:e||"Search",variant:"outlined",size:"small",className:u.searchbar}),t.createElement("div",{className:u.dropdownFilters},t.createElement(v,null,"Sort by: "),t.createElement(rt,{className:u.selectHolder,value:l,onChange:o},t.createElement("option",{value:"default"},"Default"),t.createElement("option",{value:"ascending"},"Name A-Z"),t.createElement("option",{value:"descending"},"Name Z-A"))),t.createElement("div",{className:u.dropdownFilters},t.createElement(v,null,"Filter by owner: "),t.createElement(rt,{className:u.selectHolder,value:s,onChange:c},t.createElement("option",{key:"all",value:"all"},"All"),i==null?void 0:i.map((m,h)=>t.createElement("option",{key:m+h,value:m},m)))))},Ur=(e,n)=>e==null?void 0:e.sort((a,r)=>{var l,o,s,c;const i=(o=(l=a==null?void 0:a.name)==null?void 0:l.toLocaleLowerCase())!=null?o:a==null?void 0:a.id.toLocaleLowerCase(),u=(c=(s=r==null?void 0:r.name)==null?void 0:s.toLocaleLowerCase())!=null?c:r==null?void 0:r.id.toLocaleLowerCase();return!i||!u?0:i<u?n==="ascending"?-1:1:i>u?n==="ascending"?1:-1:0}),Bt=e=>{const n=e==null?void 0:e.map(a=>a==null?void 0:a.ownerEntityRef).filter(a=>a!=="");return[...new Set(n)]},ue=({searchTermProp:e,filterAlphaProp:n,filterOwnerProp:a,checks:r,tracks:l})=>{var o,s;const c=r||l||[],i=(o=c==null?void 0:c.filter)==null?void 0:o.call(c,m=>{var h;return((h=m==null?void 0:m.name)!=null?h:m==null?void 0:m.id).toLocaleLowerCase().includes(e.toLocaleLowerCase())}),u=a&&a!=="all"?(s=i==null?void 0:i.filter)==null?void 0:s.call(i,m=>{var h;return((h=m==null?void 0:m.ownerEntityRef)==null?void 0:h.toLowerCase())===a.toLowerCase()}):i;return n==="default"?u:Ur(u!=null?u:[],n)},jr=b(e=>({pagination:{width:"-webkit-fill-available",display:"flex",justifyContent:"center",position:"fixed",bottom:"0",backgroundColor:e.palette.type==="dark"?"#333333":"#F8F8F8",marginRight:"40px"}})),Gt=({response:e,listingsPerPage:n,cursor:a,setCursor:r,prevCursors:l,setPrevCursors:o,labelPerPageDropdown:s,urlRoute:c})=>{var i;const u=jr(),m=e!=null&&e.edges?e==null?void 0:e.edges[(e==null?void 0:e.edges.length)-1]:{cursor:""},[h,p]=f(0),g=()=>{o(L=>[...L,a]),r(m==null?void 0:m.cursor)},E=()=>{r(l[l.length-1]),o(L=>L.slice(0,-1))},y=(L,A)=>{p(x=>(A>x?g():E(),A))},k=L=>{window.open(`/soundcheck/${c!=null?c:"tracks?tracksPerPage="}${L.target.value}`,"_self")};return t.createElement(xa,{className:u.pagination,component:"div",count:(i=e==null?void 0:e.totalCount)!=null?i:-1,rowsPerPage:n!=null?n:10,onPageChange:y,page:h,onRowsPerPageChange:k,labelRowsPerPage:s!=null?s:"Listings per page:",rowsPerPageOptions:[]})},_r=b(e=>({headerButtons:{display:"flex",gap:e.spacing(1),flexWrap:"nowrap",justifyContent:"end",alignItems:"center"},header:{padding:e.spacing(0,0,1)}})),Qr=({checksPerPage:e,currentCursor:n})=>{const a=_r(),[r,l]=f(n),[o,s]=f([]),{data:c,isLoading:i}=bt(void 0,e,r),{loading:u,allowed:m}=me({permission:Qa}),[h,p]=f(c);P(()=>{c&&p(()=>{var w;return{endCursor:c.endCursor,totalCount:c.totalCount,hasNextPage:(w=c==null?void 0:c.hasNextPage)!=null?w:!1,edges:c.edges}})},[c]);const g=h==null?void 0:h.edges.map(w=>w.checker),{setShowAddModal:E}=q(),[y,k]=f(),[L,A]=f(""),[x,D]=f("default"),[R,M]=f("all"),[pe,K]=f([]),ee=w=>{const F=ue({searchTermProp:L,filterAlphaProp:w.target.value,filterOwnerProp:R,checks:g!=null?g:[]});D(w.target.value),k(F)},he=w=>{const F=ue({searchTermProp:L,filterAlphaProp:x,filterOwnerProp:w.target.value,checks:g!=null?g:[]});M(w.target.value),k(F)};return P(()=>{const w=h==null?void 0:h.edges.map(J=>J.checker),F=Bt(w!=null?w:[]);k(w),K(F!=null?F:[])},[i,h]),P(()=>{const w=h==null?void 0:h.edges.map(J=>J.checker),F=ue({searchTermProp:L,filterAlphaProp:x,filterOwnerProp:R,checks:w!=null?w:[]});k(F)},[L,x,R,h]),t.createElement(d,{container:!0,direction:"row"},t.createElement(d,{container:!0,spacing:4,className:a.header},t.createElement(Vt,{searchPlaceholder:"Search available checks",isLoading:i,searchTerm:L,setSearchTerm:A,filterAlpha:x,handleAlphabeticalFilterChange:ee,filterOwner:R,handleOwnerFilterChange:he,owners:pe}),t.createElement(d,{item:!0,xs:3},t.createElement("div",{className:a.headerButtons},!u&&t.createElement(O,{disabled:!m,variant:"contained",color:"primary",onClick:()=>E(!0)},"Create Check")))),t.createElement(d,{container:!0,spacing:4,role:"list","aria-label":"checks"},i?t.createElement(Wr,null):y==null?void 0:y.map(w=>t.createElement(d,{key:w.id,xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem","aria-label":"result"},t.createElement(zr,{check:w})))),((h==null?void 0:h.hasNextPage)||(o==null?void 0:o.length)>0)&&t.createElement(Gt,{response:h,listingsPerPage:e,cursor:r,setCursor:l,prevCursors:o,setPrevCursors:s,labelPerPageDropdown:"Checks Per Page:",urlRoute:"checks?checksPerPage="}))},Yr=()=>{const{selectedCheck:e}=q();return t.createElement(Ke,{title:"Check Details",open:!!e,onSave:()=>{}})},Jr=b(e=>({checksPageContainer:{padding:e.spacing(3)}})),Xr=()=>{const e=Jr(),[n]=Xe(),a=n.get("checksPerPage"),r=a?parseInt(a,10):9,{selectedCheck:l,showAddModal:o,isReadOnly:s}=q();return t.createElement("div",{className:e.checksPageContainer},t.createElement(Qr,{checksPerPage:r}),o&&t.createElement(Rr,null),l&&!s&&t.createElement(Ir,null),l&&s&&t.createElement(Yr,null))},Zr=()=>t.createElement(Rn,null,t.createElement(Xr,null)),el=b(e=>({root:{position:"relative",height:"100%"},cardSection:{marginBottom:e.spacing(2)},listItem:{padding:0},listItemText:{margin:0}})),tl=({program:e})=>{var n,a,r;const l=el(),o=(a=(n=e.levels)==null?void 0:n.length)!=null?a:0,s=(r=e.levels)==null?void 0:r.reduce((c,i)=>c+i.checks.length,0);return t.createElement(Oe,{dense:!0,disablePadding:!0,className:l.cardSection},t.createElement(v,{variant:"overline",color:"textSecondary"},"Track Details"),t.createElement(Q,{disableGutters:!0,className:l.listItem},t.createElement(le,{title:"Levels"},t.createElement(ne,null,t.createElement(hn,{color:"action",fontSize:"small"}))),t.createElement(re,{className:l.listItemText,primary:t.createElement(v,{variant:"body2",color:"textSecondary"},`${o} ${o===1?"Level":"Levels"}`)})),t.createElement(Q,{disableGutters:!0,className:l.listItem},t.createElement(le,{title:"Checks"},t.createElement(ne,null,t.createElement(pn,{color:"action",fontSize:"small"}))),t.createElement(re,{className:l.listItemText,primary:t.createElement(v,{variant:"body2",color:"textSecondary"},`${s} ${s===1?"Check":"Checks"}`)})),e.documentationURL&&t.createElement(Q,{disableGutters:!0,className:l.listItem},t.createElement(le,{title:"Documentation"},t.createElement(ne,null,t.createElement(un,{color:"action",fontSize:"small"}))),t.createElement(re,{className:l.listItemText,primary:t.createElement(ca,{to:e.documentationURL,target:"_blank",rel:"noopener noreferrer"},"Learn more")})),t.createElement(Q,{disableGutters:!0,className:l.listItem},t.createElement(le,{title:"Owner"},t.createElement(ne,null,t.createElement(dt,{color:"action",fontSize:"small"}))),t.createElement(re,{className:l.listItemText,primary:t.createElement(ct,{entityRef:e.ownerEntityRef})})))},al="Error Deleting Track";function nl(){const e=I(G),n=se(),{showAlert:a}=Z(),r=async l=>{const o=await e.deleteProgram(l);if(!o)throw new Error(`Failed to delete track ${l}`);return o};return ie([ce.DeleteProgram],r,{onSuccess:()=>{n.invalidateQueries({queryKey:[T.GetAllPrograms]})},onError:(l,o)=>{let s=`Failed to delete track ${o}`;l instanceof Error&&(s=l.message),a({severity:"error",title:al,message:s})}})}const rl=({summary:e})=>{const{loading:n,allowed:a}=me({permission:Ya,resourceRef:e.id}),{loading:r,allowed:l}=me({permission:Ja,resourceRef:e.id}),{showModal:o}=we(),{mutate:s}=nl(),{setSelectedProgram:c}=de(),i=H(async()=>{await o({title:"Delete Track",message:`Are you sure you want to delete track ${e.name}?`})&&s(e.id)},[o,e.id,e.name,s]);return t.createElement(Ue,{title:e.name,description:e.description,children:t.createElement(tl,{program:e}),handleView:()=>{c(e)},handleEdit:e.isEditable&&!n&&a?()=>{c(e)}:void 0,handleDelete:e.isEditable&&!r&&l?i:void 0})},ll=()=>t.createElement(t.Fragment,null,Array.from({length:6},(e,n)=>t.createElement(d,{key:`loading-${n}`,xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem"},t.createElement(He,{variant:"rect",height:385})))),ol=b(e=>({headerButtons:{display:"flex",gap:e.spacing(1),flexWrap:"nowrap",justifyContent:"end"},header:{padding:e.spacing(0,0,1)}})),sl=({programsPerPage:e,currentCursor:n})=>{var a;const r=ol(),{loading:l,allowed:o}=me({permission:Xa}),{setShowAddModal:s}=de(),[c,i]=f(n),[u,m]=f([]),{data:h,isLoading:p}=Pn(void 0,e,c),[g,E]=f(h);P(()=>{h&&E(()=>{var S;return{endCursor:h.endCursor,totalCount:h.totalCount,hasNextPage:(S=h==null?void 0:h.hasNextPage)!=null?S:!1,edges:h.edges}})},[h]);const y=(a=g==null?void 0:g.edges)==null?void 0:a.map(S=>S==null?void 0:S.program),{userEntityRef:k}=lt(),{showAlert:L}=Z(),[A,x]=f(),[D,R]=f(""),[M,pe]=f("default"),[K,ee]=f("all"),[he,w]=f([]),F=S=>{const V=ue({searchTermProp:D,filterAlphaProp:S.target.value,filterOwnerProp:K,tracks:y!=null?y:[]});pe(S.target.value),x(V)},J=S=>{const V=ue({searchTermProp:D,filterAlphaProp:M,filterOwnerProp:S.target.value,tracks:y!=null?y:[]});ee(S.target.value),x(V)};P(()=>{const S=g==null?void 0:g.edges.map(ge=>ge.program),V=Bt(S!=null?S:[]);x(S),w(V!=null?V:[])},[p,g]),P(()=>{const S=g==null?void 0:g.edges.map(ge=>ge.program),V=ue({searchTermProp:D,filterAlphaProp:M,filterOwnerProp:K,tracks:S!=null?S:[]});x(V)},[D,M,K,g]);const ke=()=>{k?s(!0):L({severity:"error",title:"User Error",message:"Logged in user has not been found in Catalog. Unable to create a Track at this time"})};return t.createElement(d,{container:!0,direction:"row"},t.createElement(d,{container:!0,spacing:4,className:r.header},t.createElement(Vt,{searchPlaceholder:"Search available tracks",isLoading:p,searchTerm:D,setSearchTerm:R,filterAlpha:M,handleAlphabeticalFilterChange:F,filterOwner:K,handleOwnerFilterChange:J,owners:he}),t.createElement(d,{item:!0,xs:3},t.createElement("div",{className:r.headerButtons},!l&&t.createElement(O,{disabled:!o,variant:"contained",color:"primary",onClick:()=>ke()},"Create Track")))),t.createElement(d,{container:!0,spacing:4,role:"list","aria-label":"tracks"},p?t.createElement(ll,null):A==null?void 0:A.map(S=>t.createElement(d,{key:S.id,xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem","aria-label":"result"},t.createElement(rl,{summary:S})))),((g==null?void 0:g.hasNextPage)||(u==null?void 0:u.length)>0)&&t.createElement(Gt,{response:g,listingsPerPage:e,cursor:c,setCursor:i,prevCursors:u,setPrevCursors:m,labelPerPageDropdown:"Track Per Page:",urlRoute:"tracks?tracksPerPage="}))},il=b(e=>({titleInput:{marginBottom:e.spacing(1)},title:{fontWeight:700}})),cl=({programName:e,programNameError:n,handleProgramNameChange:a,disabled:r})=>{const l=il();return t.createElement(d,{item:!0,xs:12},t.createElement($,{fullWidth:!0,placeholder:"Untitled track",value:e,onChange:a,disabled:r,className:l.titleInput,variant:"outlined",size:"small",margin:"normal",error:n,helperText:n?"Track name must be at least 1 character and less than 100 characters":""}))},Ht=b(e=>{const n=e.palette.type==="dark",a=n?e.palette.common.white:e.palette.common.black,r=n?e.palette.grey[700]:e.palette.common.white,l=n?e.palette.grey[500]:e.palette.grey[300],o=n?e.palette.common.white:e.palette.common.black;return{chip:{width:"100%",height:"36px",color:a,justifyContent:"space-between",background:r,border:`1px solid ${l}`,borderRadius:4,boxShadow:"0px 2px 5px rgba(0, 0, 0, 0.1)",cursor:"move","& *":{fontWeight:700},"&:focus":{background:r,borderColor:o,"& $icon":{color:e.palette.primary.main}}},icon:{},deleteButton:{marginRight:"auto"}}}),ml=({chip:e,disabled:n})=>{var a;const[r,l]=sn(()=>({type:"chip",item:{id:e.id,label:e.label},collect:s=>({isDragging:s.isDragging()})})),o=Ht();return t.createElement(Me,{ref:l,label:e.label,className:o.chip,icon:t.createElement(ut,{"data-testid":"drag-indicator-icon"}),disabled:n,onDelete:()=>{},deleteIcon:t.createElement(le,{title:(a=e.description)!=null?a:""},t.createElement(gn,{className:o.icon,"data-testid":"visibility-icon"}))})},zt=b(e=>({columnHeader:{display:"flex",justifyContent:"space-between",alignItems:"center"},subtitle:{color:e.palette.primary.main,fontWeight:"bold"},chipContainer:{display:"flex",flexDirection:"column",alignItems:"flex-start",padding:e.spacing(1),gap:e.spacing(1)},loadingContainer:{marginTop:e.spacing(1),display:"flex",justifyContent:"center",alignItems:"center",height:"100%"}})),dl=()=>{const e=zt();return t.createElement(d,{container:!0,className:e.loadingContainer},t.createElement(wa,null))},ul=({chips:e,disabled:n})=>t.createElement(t.Fragment,null,e.map(a=>t.createElement(ml,{disabled:n,key:a.id,chip:a}))),pl=()=>t.createElement(v,{variant:"body1",color:"textSecondary"},"There are no matches."),hl=({isLoading:e,chips:n=[],disabled:a})=>{const r=zt(),[l,o]=f(""),s=_(()=>n.filter(u=>u.label.toLowerCase().includes(l.toLowerCase())),[n,l]),c=n.length>0||l,i=()=>{if(e)return t.createElement(dl,null);if(s.length>0)return t.createElement(ul,{disabled:a!=null?a:!1,chips:s});if(c)return t.createElement(pl,null)};return t.createElement(d,{container:!0},t.createElement(d,{item:!0,xs:12,className:r.columnHeader},t.createElement(v,{className:r.subtitle},"Checks")),t.createElement(d,{item:!0,xs:12},t.createElement(Mt,{searchTerm:l,disabled:e||a,setSearchTerm:o,placeholder:"Search available checks",variant:"outlined",size:"small"})),t.createElement(d,{item:!0,className:r.chipContainer,xs:12},i()))},gl=b(e=>({button:{border:"none",fontWeight:700,fontSize:e.typography.subtitle2.fontSize,lineHeight:"19px",color:e.palette.primary.main,textTransform:"none"}})),Wt=({label:e,...n})=>{const a=gl();return t.createElement(O,{className:a.button,...n},e)},El=b(e=>({input:{border:`1px solid ${e.palette.grey[600]}`,borderRadius:4,padding:e.spacing(1),minHeight:80},hoverBackground:{background:e.palette.type==="dark"?e.palette.grey[600]:e.palette.grey[200]},normalBackground:{background:e.palette.type==="dark"?e.palette.grey[700]:e.palette.common.white},error:{border:"1px solid red"},chipContainer:{display:"flex",flexDirection:"column",fontWeight:"bold",fontSize:e.typography.pxToRem(16),color:e.palette.grey[600]}})),vl=({chips:e,onDelete:n,onDrop:a,error:r=!1,placeholder:l="",disabled:o})=>{const s=El(),c=Ht(),[{isOver:i},u]=cn(()=>({accept:"chip",drop:m=>{a(m)},collect:m=>({isOver:m.isOver()})}));return t.createElement("div",{ref:u,className:`${s.input} ${r?s.error:""} ${i?s.hoverBackground:s.normalBackground}`,"data-testid":"droppable-input"},t.createElement("div",{className:s.chipContainer},e!=null&&e.length?e.map(m=>t.createElement(Me,{key:m.id,label:m.label,className:c.chip,icon:t.createElement(ut,null),style:{cursor:"pointer"},onDelete:()=>n(m),disabled:o})):l))},fl=b(e=>({inputBase:{fontSize:e.typography.subtitle1.fontSize,fontWeight:700}})),yl=({levelName:e,handleLevelNameChange:n,disabled:a})=>{const r=fl();return t.createElement($,{fullWidth:!0,placeholder:"Untitled level",value:e,size:"small",variant:"outlined",onChange:n,label:"Level Name",disabled:a,InputProps:{classes:{input:r.inputBase}}})},bl=b(e=>({inputBase:{fontSize:e.typography.fontSize,fontWeight:"normal"}})),Cl=({levelDescription:e,levelNameLabel:n,handleLevelDescriptionChange:a,disabled:r})=>{const l=bl();return t.createElement($,{fullWidth:!0,placeholder:"Enter description here",multiline:!0,value:e,size:"small",variant:"outlined",label:`${n} Description`,onChange:a,disabled:r,InputProps:{classes:{input:l.inputBase}}})},kl=b(e=>({columnHeader:{display:"flex",justifyContent:"space-between",alignItems:"center"},subtitle:{fontWeight:"bold",color:e.palette.primary.main},levelHeader:{display:"flex",alignItems:"center"},removeButton:{minWidth:150}})),xl=({inputChipsList:e,handleDelete:n,handleDrop:a,addInput:r,removeInput:l,levelsErrors:o,levelNames:s,levelDescriptions:c,handleLevelNameChange:i,handleLevelDescriptionChange:u,disabled:m})=>{const h=kl();return t.createElement(d,{container:!0},t.createElement(d,{item:!0,xs:12,className:h.columnHeader},t.createElement(v,{className:h.subtitle},"Levels"),!m&&t.createElement(Wt,{label:"Add Level",startIcon:t.createElement(pt,null),onClick:r,disabled:m})),t.createElement(d,{container:!0,item:!0,spacing:5},e.map((p,g)=>t.createElement(d,{container:!0,item:!0,xs:12,key:g,spacing:2},t.createElement(d,{item:!0,xs:12,className:h.levelHeader},t.createElement(d,{container:!0,spacing:1},t.createElement(d,{item:!0,xs:!0},t.createElement(yl,{levelName:s[g],handleLevelNameChange:E=>i(E.target.value,g),disabled:m!=null?m:!1})),e.length>1&&!m&&t.createElement(d,{item:!0,className:h.removeButton},t.createElement(Wt,{label:"Remove Level",startIcon:t.createElement(ht,null),onClick:()=>l(g),disabled:m})))),t.createElement(d,{item:!0,xs:12},t.createElement(vl,{chips:p,onDelete:E=>n(E,g),onDrop:E=>a(E,g),error:o[g],placeholder:"Drag and drop checks here to include them in this level",disabled:m})),t.createElement(d,{item:!0,xs:12},t.createElement(Cl,{levelDescription:c[g],levelNameLabel:s[g],handleLevelDescriptionChange:E=>u(E.target.value,g),disabled:m!=null?m:!1}))))))},wl=b(e=>({titleInput:{marginBottom:e.spacing(1)},regularFontSize:{fontSize:e.typography.fontSize},title:{fontWeight:700,fontSize:e.typography.fontSize}})),Sl=({programDescription:e,programDescriptionError:n,handleProgramDescriptionChange:a,disabled:r})=>{const l=wl();return t.createElement(d,{item:!0,xs:12},t.createElement($,{fullWidth:!0,placeholder:"Example: Make sure the project has a ReadMe file and is using the latest version of JavaScript",value:e,onChange:a,disabled:r,className:l.titleInput,minRows:4,variant:"outlined",size:"small",margin:"normal",multiline:!0,InputProps:{classes:{input:l.regularFontSize}},error:n,helperText:n?"Track description must be at least 1 character and less than 250 characters":""}))};var Ll=(e=>(e.SetProgramNameError="VALIDATE_NAME",e.SetName="SET_NAME",e))(Ll||{});const Nl={programName:"",programNameError:!1},Pl=(e,n)=>{switch(n.type){case"SET_NAME":return{...e,programName:n.value};case"VALIDATE_NAME":return{...e,programNameError:n.value};default:return e}},Tl=(e="")=>{const[n,a]=De(Pl,{...Nl,programName:e}),r=()=>{const s=n.programName.trim().length,c=s>0&&s<=100;return a({type:"VALIDATE_NAME",value:!c}),c},l=s=>{a({type:"SET_NAME",value:s})},o=s=>{l(s.target.value),n.programNameError&&r()};return{programName:n.programName,programNameError:n.programNameError,handleProgramNameChange:o,setProgramName:l,isProgramNameValid:r}};var Dl=(e=>(e.SetProgramDescriptionError="VALIDATE_DESCRIPTION",e.SetDescription="SET_DESCRIPTION",e))(Dl||{});const Il={programDescription:"",programDescriptionError:!1},$l=(e,n)=>{switch(n.type){case"SET_DESCRIPTION":return{...e,programDescription:n.value};case"VALIDATE_DESCRIPTION":return{...e,programDescriptionError:n.value};default:return e}},Al=(e="")=>{const[n,a]=De($l,{...Il,programDescription:e}),r=()=>{const s=n.programDescription.trim().length,c=s>0&&s<=250;return a({type:"VALIDATE_DESCRIPTION",value:!c}),c},l=s=>{a({type:"SET_DESCRIPTION",value:s})},o=s=>{l(s.target.value),n.programDescriptionError&&r()};return{programDescription:n.programDescription,programDescriptionError:n.programDescriptionError,handleProgramDescriptionChange:o,setProgramDescription:l,isProgramDescriptionValid:r}},Rl=({programName:e,programDescription:n,areInputsValid:a,isProgramNameValid:r,isProgramDescriptionValid:l,inputChipsList:o,checkers:s,onSave:c,programId:i,levelNames:u,levelDescriptions:m,filters:h})=>{const{showModal:p}=we(),{userEntityRef:g}=lt();return async()=>{if(!(r()&&l()&&a())||!await p({title:"Save Track",message:`Are you sure you want to save track: ${e}?`})||!g)return;const E=i!=null?i:mt(),y=Xn(o,u,m,s),k={description:n,id:E,levels:y,name:e,ownerEntityRef:g,filter:Pt(h)};c(k)}},Fl=e=>{const n=_(()=>e?er(e):null,[e]),[a,r]=f([]),[l,o]=f(!1),{data:s,isLoading:c}=bt(),i=s==null?void 0:s.edges.map(x=>x.checker),u=_(()=>(i!=null?i:[]).filter(x=>!!x).map(x=>{var D,R,M;return{id:(D=x.id)!=null?D:"",label:(R=x.name)!=null?R:x.id,description:(M=x.description)!=null?M:""}}),[i]),{chips:m,inputChipsList:h,handleDrop:p,handleDelete:g,addInput:E,removeInput:y,inputErrors:k,areInputsValid:L,setInputChipsList:A}=In(a);return P(()=>{if(!a.length&&u.length&&!l){const{inputChips:x,used:D}=rr(n,u);A(x),r(D),o(!0)}},[u,A,a.length,n,l]),{checkers:i,checkersLoading:c,chips:m,inputChipsList:h,handleDrop:p,handleDelete:g,addInput:E,removeInput:y,inputErrors:k,areInputsValid:L}},Ol=e=>{const[n,a]=f(e);return{levelNames:n,handleLevelNameChange:(r,l)=>{a(n.map((o,s)=>s===l?r:o))},addLevelName:r=>{a([...n,r])},removeLevelName:r=>{a(n.filter((l,o)=>o!==r))}}},Ml=e=>{const[n,a]=f(e);return{levelDescriptions:n,handleLevelDescriptionChange:(r,l)=>{a(n.map((o,s)=>s===l?r:o))},addLevelDescription:r=>{a([...n,r])},removeLevelDescription:r=>{a(n.filter((l,o)=>o!==r))}}},Vl=b(e=>({title:{fontWeight:700},filterContainer:{display:"flex",flexWrap:"wrap",padding:e.spacing(2)},description:{fontSize:e.typography.fontSize}})),Bl=({filters:e,setFilters:n,disabled:a})=>{const r=Vl(),l=o=>s=>{n(o,s!=null?s:[])};return t.createElement(Ce,{title:a?"Filters":"Filters (optional)"},t.createElement(d,{container:!0,item:!0,xs:12,spacing:2},!a&&t.createElement(d,{item:!0},t.createElement(v,{className:r.description},"Apply filters so it's only applicable to relevant entities.")),t.createElement(d,{item:!0,xs:12},t.createElement(Ee,null,t.createElement(d,{container:!0,className:r.filterContainer,spacing:2},Rt.map(o=>t.createElement(d,{item:!0,xs:12,sm:6,md:4,key:o.stateKey},t.createElement(Ft,{facet:o.facet,label:o.label,values:e[o.stateKey],onChange:l(o.stateKey),disabled:a}))))))))};var Gl=(e=>(e.SetFilter="SET_FILTER",e))(Gl||{});const Hl={selectedKinds:[],selectedTypes:[],selectedLifecycles:[],selectedOwners:[],selectedSystems:[],selectedTags:[]},zl=(e,n)=>{switch(n.type){case"SET_FILTER":return{...e,[n.key]:n.values};default:return e}},Wl=e=>{let n=Hl;e&&(n=Tt(e));const[a,r]=De(zl,n);return{filters:a,setFilters:(l,o)=>{r({type:"SET_FILTER",key:l,values:o})}}},ql=b(e=>({regularFontSize:{fontSize:e.typography.fontSize,fontWeight:"bold"},description:{fontWeight:"normal",fontSize:e.typography.fontSize},root:{overflow:"hidden",display:"flex",padding:e.spacing(1),marginBottom:"53px"}})),qt=({onSave:e,title:n,open:a,handleClose:r})=>{var l,o,s,c;const{selectedProgram:i,isLoading:u,setSelectedProgram:m}=de(),{checkers:h,checkersLoading:p,chips:g,inputChipsList:E,handleDrop:y,handleDelete:k,addInput:L,removeInput:A,inputErrors:x,areInputsValid:D}=Fl(i),{programName:R,programNameError:M,handleProgramNameChange:pe,isProgramNameValid:K}=Tl(i==null?void 0:i.name),{programDescription:ee,programDescriptionError:he,handleProgramDescriptionChange:w,isProgramDescriptionValid:F}=Al(i==null?void 0:i.description),J=(o=i?(l=i.levels)==null?void 0:l.map(B=>{var j;return(j=B.name)!=null?j:`Level ${B.ordinal}`}):E.map((B,j)=>`Level ${j+1}`))!=null?o:[],{levelNames:ke,handleLevelNameChange:S,addLevelName:V,removeLevelName:ge}=Ol(J),Jt=(c=i?(s=i.levels)==null?void 0:s.map(B=>{var j;return(j=B.description)!=null?j:""}):E.map((B,j)=>""))!=null?c:[],{levelDescriptions:Qe,handleLevelDescriptionChange:Xt,addLevelDescription:Zt,removeLevelDescription:ea}=Ml(Jt),ta=()=>{L(),V(`Level ${E.length+1}`),Zt("")},aa=B=>{A(B),ge(B),ea(B)},{filters:Ye,setFilters:na}=Wl(i==null?void 0:i.filter),ra=Rl({programName:R,programDescription:ee,areInputsValid:D,isProgramNameValid:K,isProgramDescriptionValid:F,inputChipsList:E,checkers:h,onSave:e,programId:i==null?void 0:i.id,levelNames:ke,levelDescriptions:Qe,filters:Ye}),Ne=ql(),Je=Ot(),U=i?!(i!=null&&i.isEditable):!1;return t.createElement(ze,{handleClose:r,title:n,open:a},t.createElement(d,{container:!0,spacing:4,className:Ne.root},t.createElement(d,{item:!0,xs:12},t.createElement(d,{item:!0,xs:12},t.createElement(v,{className:Je.sectionLabel,style:{margin:0}},"Track Details"),t.createElement(cl,{disabled:u||U,programName:R,programNameError:M,handleProgramNameChange:pe})),t.createElement(d,{item:!0,xs:12},t.createElement(Sl,{disabled:u||U,programDescription:ee,programDescriptionError:he,handleProgramDescriptionChange:w}))),t.createElement(d,{item:!0,xs:12},t.createElement(Bl,{disabled:U,filters:Ye,setFilters:na})),t.createElement(d,{item:!0,xs:12},t.createElement(d,{container:!0,spacing:4},t.createElement(d,{item:!0,xs:12},t.createElement(v,{className:Je.sectionLabel,style:{margin:0}},"Track Levels"),!U&&t.createElement(v,{className:Ne.description},"Add the checks that apply to each level. You can preview the checks to see the rules that apply to each check.")),!U&&t.createElement(d,{item:!0,xs:5},t.createElement(hl,{chips:g,isLoading:p||u,disabled:U})),t.createElement(d,{item:!0,xs:7},t.createElement(xl,{inputChipsList:E,handleDelete:k,handleDrop:y,addInput:ta,removeInput:aa,levelsErrors:x,levelNames:ke,handleLevelNameChange:S,levelDescriptions:Qe,handleLevelDescriptionChange:Xt,disabled:U}))))),t.createElement(d,{container:!0,spacing:4,className:Ne.root},t.createElement(Ct,{onCancel:()=>{m(null),r()},saveButtonText:"Save Track",isLoading:u||p,onSave:ra,disableSave:U})))},Kl=()=>{const{setIsLoading:e,setShowAddModal:n,showAddModal:a}=de(),{mutateAsync:r,isLoading:l}=Dn();return P(()=>{e(l)},[e,l]),t.createElement(qt,{handleClose:()=>n(!1),title:"Create Track",open:a,onSave:async o=>{await r(o)&&n(!1)}})},Ul="Error Updating Track";function jl(){const e=I(G),n=se(),{showAlert:a}=Z(),r=async l=>{const o=await e.updateProgram(l);if(!o)throw new Error("Failed to update track.");return o};return ie([ce.UpdateProgram],r,{onSuccess:async()=>{await n.invalidateQueries({queryKey:[T.GetAllPrograms]})},onError:l=>{let o="Failed to update track.";l instanceof Error&&(o=l.message),a({severity:"error",title:Ul,message:o})}})}const _l=()=>{const{setSelectedProgram:e,setIsLoading:n,selectedProgram:a}=de(),{mutateAsync:r,isLoading:l}=jl();P(()=>n(l),[n,l]);const o=async s=>{await r(s)&&e(null)};return t.createElement(qt,{handleClose:()=>e(null),title:a!=null&&a.isEditable?"Edit Track":"View Track",open:!!a,onSave:o})},Ql=b(e=>({programsPageContainer:{padding:e.spacing(3)},headerButtons:{display:"flex",gap:e.spacing(1),flexWrap:"nowrap"}})),Yl=()=>{const{selectedProgram:e,showAddModal:n}=de(),[a]=Xe(),r=a.get("tracksPerPage"),l=r?parseInt(r,10):9,o=Ql(),s="Programs will now be referred to as Tracks throughout the Soundcheck UI.";return t.createElement("div",{className:o.programsPageContainer},t.createElement(Ze,{variant:"info",message:s,id:"programTrackBanner"}),t.createElement(mn,{backend:dn},t.createElement(sl,{programsPerPage:l}),n&&t.createElement(Kl,null),e&&t.createElement(_l,null)))},Jl=()=>t.createElement(An,null,t.createElement(Yl,null)),Xl=z(e=>({root:{display:"flex",flexDirection:"row",padding:"0",margin:"-24px"},header:{display:"flex",justifyContent:"space-between",padding:e.spacing(2)},tabs:{borderBottom:`1px solid ${e.palette.border}`,marginBottom:e.spacing(2)},button:{marginRight:e.spacing(1)},filters:{flex:1},content:{flex:3}})),Kt=({children:e})=>t.createElement(C,{style:{height:"100%",minHeight:"150px"}},t.createElement(En,{width:"100%",height:150,debounce:1},e)),Ut=({data:e,lines:n})=>t.createElement(Kt,null,t.createElement(vn,{data:e},t.createElement(gt,{strokeDasharray:"3 3"}),t.createElement(Et,{dataKey:"name"}),t.createElement(vt,{width:25}),t.createElement(ft,null),t.createElement(yt,null),n.map((a,r)=>t.createElement(fn,{key:a.dataKey,type:"monotone",dataKey:a.dataKey,stroke:xe[r%xe.length],name:a.name})))),Zl=({chartData:e})=>t.createElement(Ut,{data:e,lines:[{dataKey:"passRate",name:"Check pass rate"}]}),eo=(e,n)=>{const a=new Date(e);return a.setDate(a.getDate()-n),a},je=e=>{let n=(e.getMonth()+1).toString(),a=e.getDate().toString();return n.length<2&&(n=`0${n}`),a.length<2&&(a=`0${a}`),[n,a].join("/")},to=e=>W([T.CheckPassRateOverview,e],async()=>{const n=new Date,a=Array.from({length:30},(r,l)=>{const o=eo(n,l);return{date:je(o),passRate:parseFloat((Math.random()*100).toFixed(2))}});return{checkPassRateOverview:{snapshotPassRate:parseFloat((a.reduce((r,l)=>r+l.passRate,0)/30).toFixed(2)),passRateTrend:a.reverse()}}}),jt=(e,n)=>Array.from({length:e},(a,r)=>{const l=new Date;return l.setDate(l.getDate()-r),{name:je(l),[n]:Math.floor(Math.random()*100)}}).filter(Boolean).reverse(),ao=e=>W([T.TrackHistory,e],async()=>{const n=["Level1","Level2","Level3"];let a=jt(30,n[0]);return n.slice(1).forEach(r=>{const l=jt(30,r);a=a.map((o,s)=>({...o,...l[s]}))}),{levels:a}}),no=b(e=>({header:{display:"flex",justifyContent:"space-between",marginBottom:e.spacing(2)}})),ro=()=>{var e,n;const a=no(),{data:r}=ao(),l=(e=["Level1","Level2","Level3"].map(o=>({dataKey:o,name:o})))!=null?e:[];return t.createElement(C,null,t.createElement(C,{className:a.header},t.createElement(v,{variant:"h6"},"Trend")),t.createElement(Ut,{data:(n=r==null?void 0:r.levels)!=null?n:[],lines:l}))},lo=t.memo(({data:e,bars:n})=>t.createElement(Kt,{"aria-label":"Bar chart representing data points."},t.createElement(yn,{data:e},t.createElement(gt,{strokeDasharray:"3 3"}),t.createElement(Et,{dataKey:"name"}),t.createElement(vt,{width:25}),t.createElement(ft,null),t.createElement(yt,null),n.map((a,r)=>t.createElement(bn,{key:a.dataKey,dataKey:a.dataKey,fill:xe[r%xe.length],name:a.name}))))),oo=["Level 1","Level 2","Level 3"],so=(e,n)=>{const a=Array.from({length:e},()=>Math.floor(Math.random()*100)).reduce((l,o)=>l+o,0),r=Math.floor(a/e);return{name:n,[n.replace(/\s/g,"")]:r}},io=e=>W([T.TrackSummary,e],async()=>({data:oo.map(n=>so(30,n))})),co=()=>{var e;const{data:n}=io(),a=["Level 1","Level 2","Level 3"].map(r=>({dataKey:r.replace(/\s/g,""),name:r}));return t.createElement(lo,{data:(e=n==null?void 0:n.data)!=null?e:[],bars:a})},_t=z(e=>({card:{display:"flex",flexDirection:"column",padding:e.spacing(1,2),gap:e.spacing(1),border:`1px solid ${e.palette.divider}`},title:{fontWeight:"bold"},contentRow:{display:"flex",gap:e.spacing(2)},leftSection:{flex:1},summaryCard:{flex:1,height:"100%",border:`1px solid ${e.palette.divider}`,padding:e.spacing(1,2),display:"flex",flexDirection:"column",justifyContent:"space-between"},chartSection:{flex:3,padding:e.spacing(1,2),border:`1px solid ${e.palette.divider}`},percentage:{fontSize:"5.5em",fontWeight:"bold",textAlign:"center"}})),Le=({title:e,summaryCardContent:n,chartSectionContent:a})=>{const r=_t();return t.createElement(Re,{className:r.card},t.createElement(C,{className:r.contentRow},t.createElement(C,{className:r.leftSection},t.createElement(v,{variant:"h6",className:r.title},e))),t.createElement(C,{className:r.contentRow},t.createElement(C,{className:r.leftSection},t.createElement(C,{className:r.summaryCard},n)),t.createElement(C,{className:r.chartSection},a)))},mo=b(e=>({chartHeader:{marginBottom:e.spacing(2)}})),uo=()=>{var e,n;const a=mo(),r=_t(),{data:l}=to(),o=(n=(e=l==null?void 0:l.checkPassRateOverview)==null?void 0:e.passRateTrend)==null?void 0:n.map(u=>({name:je(new Date(u.date)),passRate:Math.round(u.passRate)})).filter(Boolean),s=l!=null&&l.checkPassRateOverview.snapshotPassRate?`${Math.round(l==null?void 0:l.checkPassRateOverview.snapshotPassRate)}%`:"Loading...",c=t.createElement(C,null,t.createElement(v,null,"Overall pass rate for the past 30 days."),t.createElement(v,{className:r.percentage},s)),i=t.createElement(C,null,t.createElement(v,{variant:"h6",className:a.chartHeader},"Trend"),t.createElement(Zl,{chartData:o}));return t.createElement(Le,{title:"Check pass rate",summaryCardContent:c,chartSectionContent:i})},po=()=>t.createElement(Le,{title:"Track pass rate",summaryCardContent:t.createElement(C,null,t.createElement(v,null,"Pass rate per level"),t.createElement(co,null)),chartSectionContent:t.createElement(ro,null)}),ho=()=>t.createElement(Le,{title:"Entity pass rate",summaryCardContent:t.createElement(C,null,t.createElement(v,null,"Pass rate per entity")),chartSectionContent:t.createElement(t.Fragment,null)}),go=()=>t.createElement(Le,{title:"Group pass rate",summaryCardContent:t.createElement(C,null,t.createElement(v,null,"Pass rate per group")),chartSectionContent:t.createElement(t.Fragment,null)}),Eo=z(e=>({root:{display:"flex",flexDirection:"column",gap:e.spacing(2),padding:e.spacing(2)}})),vo=()=>{const e=Eo();return t.createElement(C,{className:e.root},t.createElement(uo,null),t.createElement(po,null),t.createElement(ho,null),t.createElement(go,null))},fo=b(()=>({chipsContainer:{display:"flex",flexWrap:"wrap"},addedFilters:{width:"100%",marginBottom:"15px",position:"relative"},filterLabel:{position:"absolute",top:"-12px",left:"9px",fontSize:"0.8rem"}})),Qt=({filterChips:e,setFilterChips:n})=>{const a=fo(),r=l=>()=>{n(o=>o.filter(s=>s.key!==l.key))};return t.createElement(Ee,{variant:"outlined",className:a.addedFilters,style:{padding:"15px"}},t.createElement(v,{className:a.filterLabel},"Filters"),t.createElement("div",{className:a.chipsContainer},e==null?void 0:e.map(l=>{var o;return t.createElement(Me,{label:(o=l.label)!=null?o:"Default Label",key:l.key,onDelete:r(l),deleteIcon:t.createElement(Ve,null),size:"small"})})))};function yo(){const e=I(it);return W([T.GetAllEntityNames],async()=>{const{items:n}=await e.getEntities({filter:{kind:["Component","Service","System","Website"]},fields:["metadata.name"]});return n.map(({metadata:{name:a}})=>a)})}const bo=b(e=>({filterChips:{marginBottom:e.spacing(1)},summary:{marginBottom:e.spacing(3)},grid:{width:"100%"}})),Co=()=>{const e=bo(),{data:n}=yo(),[a,r]=f([]),[l,o]=f(""),s=(c,i)=>{o(c.timeStamp.toString()),!(!i||a.some(({label:u})=>u===i))&&r(u=>[...u,{key:u.length>0?u[u.length-1].key+1:0,label:i}])};return t.createElement(d,{className:e.grid},t.createElement(v,{className:e.summary},"Filter your view by software"),t.createElement("div",{className:e.filterChips},t.createElement(Qt,{filterChips:a,setFilterChips:r})),t.createElement(Cn,{key:l,disablePortal:!0,id:"entity-search-box",options:n!=null?n:[],onChange:s,renderInput:c=>t.createElement($,{...c,variant:"outlined",placeholder:"Select an entity"})}))},ko=b(()=>({formControl:{padding:"25px",margin:"5px",width:"33%",minWidth:"75px",minHeight:"50px"},selectContainer:{padding:"25px",margin:"5px",width:"100%",minWidth:"100px",minHeight:"50px","& > div":{textAlign:"center",paddingTop:"16px",paddingBottom:"16px"}},textField:{width:"100%",minWidth:"75px",margin:"0",marginLeft:"5px","& input":{padding:"16px"},"& > label":{transform:"translate(14px, 15px) scale(1)"},'& > label[data-shrink="true"]':{transform:"translate(14px, -11px) scale(0.75)"}}})),_e=({setFilterValue:e,inputLabel:n,filterValue:a,mappedValues:r})=>{const l=ko(),o=t.createElement(t.Fragment,null,t.createElement($e,{id:`${n}-select-label`},n),t.createElement(Ae,{"data-testid":`${n}-select`,labelId:`${n}-select-label`,label:n,className:l.selectContainer,defaultValue:"",value:a,onChange:i=>e(typeof i.target.value=="string"?i.target.value:"")},r==null?void 0:r.map(({value:i,label:u})=>t.createElement(ae,{key:i,value:i},u)))),s=t.createElement($,{label:n,variant:"outlined",margin:"normal",onChange:i=>e(i.target.value),className:l.textField,value:a}),c=r?o:s;return t.createElement(Ie,{variant:"outlined",className:l.formControl},c)},xo=b(()=>({container:{display:"flex",flexWrap:"wrap"},filterContainer:{display:"flex",justifyContent:"space-between",alignItems:"center",marginLeft:"-10px"},saveBtn:{display:"flex",width:"33%",margin:"10px 0"}})),wo=[{value:"name",label:"Name"},{value:"owner",label:"Owner"}],So=[{value:"is",label:"Is"},{value:"is-not",label:"Is Not"}],Lo=()=>{const e=xo(),[n,a]=f(""),[r,l]=f(""),[o,s]=f(""),[c,i]=f([]),u=n.length>0&&r.length>0&&o.length>0,m=()=>{u&&(i(h=>{const p={key:h.length>0?h[h.length-1].key+1:0,label:`${n}-${r}-${o}`};return[...h,p]}),a(""),l(""),s(""))};return t.createElement("div",{className:e.container},c.length>0&&t.createElement(Qt,{filterChips:c,setFilterChips:i}),t.createElement("div",{className:e.filterContainer},t.createElement(_e,{setFilterValue:a,mappedValues:wo,inputLabel:"Type",filterValue:n}),t.createElement(_e,{setFilterValue:l,mappedValues:So,inputLabel:"Relation",filterValue:r}),t.createElement(_e,{setFilterValue:s,inputLabel:"Value",filterValue:o})),t.createElement(O,{variant:"contained",color:"primary",onClick:m,className:e.saveBtn,disabled:!u},"Add"))},No=b(e=>({filterContainer:{display:"flex",width:"100%",minWidth:"275px",borderRight:e.palette.type==="dark"?"1px solid rgba(255,255,255,0.12)":"1px solid rgba(0,0,0,0.12)",height:"100%",flexFlow:"column"},filterSub:{display:"flex",justifyContent:"space-between",alignItems:"baseline","& p":{width:"65%"}},headerContainer:{display:"flex",flexFlow:"wrap"},accordion:{width:"100%",backgroundColor:"transparent",boxShadow:"none","& div":{padding:"0"}}})),Po=[{name:"Groups",children:t.createElement(v,null,"Filters go here")},{name:"Entities",children:t.createElement(Co,null)},{name:"Tracks",children:t.createElement(v,null,"Filters go here")},{name:"Check properties",children:t.createElement(Lo,null)}],To=()=>{const e=No(),[n,a]=f(!1),r=()=>!1,l=o=>(s,c)=>{a(c?o:!1)};return t.createElement(Oe,{className:e.filterContainer},t.createElement(Q,{divider:!0,className:e.headerContainer},t.createElement(v,{variant:"h3"},"Soundcheck"),t.createElement(v,null,"Owner: ",t.createElement("b",null,"Toast-infra"))),t.createElement(Q,{divider:!0,className:e.filterSub},t.createElement(v,null,t.createElement("i",null,"Select filters to refine your selection")),t.createElement(O,{size:"small",onClick:r},"Clear All")),Po.map((o,s)=>t.createElement(Q,{divider:!0},t.createElement(Sa,{className:e.accordion,expanded:n===`panel${s}`,onChange:l(`panel${s}`)},t.createElement(La,{expandIcon:n===`panel${s}`?t.createElement(ht,null):t.createElement(pt,null),"aria-controls":`panel${s}bh-content`,id:`panel${s}bh-header`},t.createElement(v,null,o.name)),t.createElement(Na,null,o.children)))))},Do=()=>{const e=Xl(),[n,a]=t.useState(0),r=(l,o)=>{a(o)};return t.createElement(C,{className:e.root},t.createElement(C,{className:e.filters},t.createElement(To,null)),t.createElement(C,{className:e.content},t.createElement(C,{className:e.header},t.createElement(C,null,t.createElement(v,{variant:"h4"},"Tech Health"),t.createElement(v,null,"View health by tracks, checks, entities, and more")),t.createElement(C,null,t.createElement(O,{variant:"contained",color:"primary",className:e.button},"Save"),t.createElement(O,{variant:"outlined"},"Share"))),t.createElement(Pa,{value:n,onChange:r,indicatorColor:"primary",textColor:"primary",className:e.tabs},t.createElement(oe,{label:"Summary"}),t.createElement(oe,{label:"Check Results"}),t.createElement(oe,{label:"Track progress"}),t.createElement(oe,{label:"Entities"}),t.createElement(oe,{label:"Checks by entity"}),t.createElement(oe,{label:"Teams"})),n===0&&t.createElement(vo,null)))},Io=({collector:e,children:n})=>{const{description:a,id:r,name:l}=e;return t.createElement(Ue,{title:l!=null?l:r,description:a,viewLabel:"Configure",editLabel:"Configure",children:n,handleView:void 0,handleEdit:void 0})},$o=()=>t.createElement(t.Fragment,null,Array.from({length:10},(e,n)=>t.createElement(d,{key:`loading-${n}`,xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem"},t.createElement(He,{variant:"rect",height:385}))));function Ao(e){switch(e){case"catalog":return kn;case"github":return wn;case"scm":return xn;case"soundcheck":return Ln;case"techinsights":return Nn;default:return Sn}}const Ro=b(e=>({container:{display:"flex",justifyContent:"center",alignItems:"center"},imageContainer:{width:"150px",height:"150px"},image:{width:"100%",height:"100%",objectFit:"contain"}})),Fo=({collector:e})=>{const{id:n}=e,a=Ro();return t.createElement(t.Fragment,null,t.createElement("div",{className:a.container},t.createElement("div",{className:a.imageContainer},t.createElement("img",{src:Ao(n),alt:n,className:a.image}))))},Oo=()=>{const{data:e,isLoading:n}=Lt();return t.createElement(d,{container:!0,direction:"row"},t.createElement(d,{item:!0,xs:12},t.createElement(Ze,{variant:"info",message:"You'll soon be able to edit fact collector configurations through the UI!",id:"collectorConfigComingSoon"})),t.createElement(d,{container:!0,spacing:4,role:"list","aria-label":"checks"},n?t.createElement($o,null):e==null?void 0:e.sort((a,r)=>{var l,o;return((l=a.name)!=null?l:a.id).localeCompare((o=r.name)!=null?o:r.id)}).map(a=>t.createElement(d,{key:a.id,xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem","aria-label":"result"},t.createElement(Io,{collector:a},t.createElement(Fo,{collector:a}))))))},Mo=()=>t.createElement(Ta,null,t.createElement(fe,{control:t.createElement(ye,null),label:t.createElement(C,{display:"flex",flexDirection:"column"},t.createElement(v,{variant:"body1",component:"span"},t.createElement("b",null,"Repository Details")),t.createElement(v,{variant:"caption",color:"textSecondary",component:"p"},"Collects Github repository details as a fact."))}),t.createElement(Fe,null),t.createElement(fe,{control:t.createElement(ye,null),label:t.createElement("div",null,t.createElement(v,{variant:"body1",component:"span"},t.createElement("b",null,"Repository Languages")),t.createElement(v,{variant:"caption",color:"textSecondary",component:"p"},"Collects Github repository language usage as a fact."))}),t.createElement(Fe,null),t.createElement(fe,{control:t.createElement(ye,null),label:t.createElement("div",null,t.createElement(v,{variant:"body1",component:"span"},t.createElement("b",null,"Branch Protections")),t.createElement(v,{variant:"caption",color:"textSecondary",component:"p"},"Collects Github repository branch protection settings as a fact."))})),Vo=({title:e,open:n,handleClose:a})=>t.createElement(ze,{handleClose:a,title:e,open:n},t.createElement(Mo,null)),Yt=Pe({selectedCollector:null,setSelectedCollector:()=>{},showModal:!1,setShowModal:()=>{},hideModal:()=>{}}),Bo=({children:e})=>{const[n,a]=f(null),[r,l]=f(!1),o=()=>{a(null),l(!1)};return t.createElement(Yt.Provider,{value:{selectedCollector:n,setSelectedCollector:a,showModal:r,setShowModal:l,hideModal:o}},e)},Go=()=>Te(Yt),Ho=b(e=>({checksPageContainer:{padding:e.spacing(3)}})),zo=()=>{const e=Ho(),{selectedCollector:n,hideModal:a}=Go();return t.createElement("div",{className:e.checksPageContainer},t.createElement(Oo,null),n&&t.createElement(Vo,{title:n,open:!!n,handleClose:a}))},Wo=()=>t.createElement(Bo,null,t.createElement(zo,null)),qo=b(()=>({tabContent:{margin:0,padding:0}})),Ko=({title:e="Soundcheck"})=>{var n;const a=qo(),[r,l]=$a(),{group:o}=r,[s,c]=f(void 0),i=(n=I(Ga).getOptionalBoolean("soundcheck.reporting"))!=null?n:!1,u=h=>{h&&l({...r,group:h})},m=la();return t.createElement(Ha,null,t.createElement(Aa,null,t.createElement(za,null,t.createElement(Wa,null,t.createElement(ma,{themeId:"website"},t.createElement(ua,{backend:"soundcheck",invalidLicenseMessage:"Submitted facts and check results will still be stored, but it will not be possible to view certifications or individual results until a valid license is present."}),t.createElement(da,{title:e},m.pathname.split("/").length-1===1&&t.createElement(Ra,{onChange:u,initialValue:o,setError:c})),t.createElement(oa,null,t.createElement(sa,{path:"/*",element:t.createElement(te,null,t.createElement(te.Route,{title:"Overview",path:"/"},t.createElement("div",{className:a.tabContent},t.createElement(Fa,{groupSelectorError:s,searchParams:r,setSearchParams:l}))),i&&t.createElement(te.Route,{title:"Tech Health",path:"/tech-health"},t.createElement(Do,null)),t.createElement(te.Route,{title:"Checks",path:"/checks"},t.createElement(Zr,null)),t.createElement(te.Route,{title:"Tracks",path:"/tracks"},t.createElement(Jl,null)),t.createElement(te.Route,{title:"Collectors",path:"/collectors"},t.createElement(Wo,null)))})))))))};export{Ko as RoutingPage};
2
- //# sourceMappingURL=index-c29fd0e9.esm.js.map