@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.
- package/CHANGELOG.md +56 -0
- package/README.md +132 -7
- package/dist/esm/{EntitySoundcheckContent-52a2a214.esm.js → EntitySoundcheckContent-592fa779.esm.js} +2 -2
- package/dist/esm/OverviewPageContent-7cf86a3a.esm.js +2 -0
- package/dist/esm/{RefetchingIndicator-7160bb11.esm.js → RefetchingIndicator-b042ec49.esm.js} +2 -2
- package/dist/esm/index-100619e3.esm.js +2 -0
- package/dist/esm/{index-0024f6e1.esm.js → index-540b325c.esm.js} +2 -2
- package/dist/esm/index-95ae147b.esm.js +388 -0
- package/dist/esm/{index-829d0670.esm.js → index-fcd50c7d.esm.js} +2 -2
- package/dist/index.esm.js +1 -1
- package/package.json +23 -17
- package/dist/esm/OverviewPageContent-dbbba0be.esm.js +0 -2
- package/dist/esm/index-37aedac7.esm.js +0 -299
- package/dist/esm/index-c29fd0e9.esm.js +0 -2
|
@@ -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
|