@spotify/backstage-plugin-soundcheck 0.6.0 → 0.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +20 -0
- package/dist/esm/{EntitySoundcheckContent-b20f0ec8.esm.js → EntitySoundcheckContent-ac967308.esm.js} +2 -2
- package/dist/esm/{OverviewPageContent-b39812fb.esm.js → OverviewPageContent-cee8c2bb.esm.js} +2 -2
- package/dist/esm/{RefetchingIndicator-026bd666.esm.js → RefetchingIndicator-50e5cc94.esm.js} +2 -2
- package/dist/esm/{index-5913b2d3.esm.js → index-094c5781.esm.js} +2 -2
- package/dist/esm/{index-95047e64.esm.js → index-39051bf4.esm.js} +2 -2
- package/dist/esm/index-d27c0b4b.esm.js +2 -0
- package/dist/esm/index-ee6cc5f1.esm.js +2 -0
- package/dist/index.esm.js +1 -1
- package/package.json +1 -1
- package/dist/esm/index-5ffaa13b.esm.js +0 -2
- package/dist/esm/index-e398f5c6.esm.js +0 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
# @spotify/backstage-plugin-soundcheck
|
|
2
2
|
|
|
3
|
+
## 0.6.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Resolved an issue that could cause the `<SoundcheckOverviewPage />` not to render properly.
|
|
8
|
+
|
|
9
|
+
## 0.6.1
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- Updated view track to not render non-applicable components.
|
|
14
|
+
- Resolved an issue with removing all filters from a track.
|
|
15
|
+
- Resolved an issue that could cause an error alert to display when viewing a check.
|
|
16
|
+
- Long check/track names are now truncated on the Checks/Tracks UI.
|
|
17
|
+
- Resolved an issue that could cause check/track filters not to populate.
|
|
18
|
+
- Adds pagination controls to the 'Checks' view for Soundcheck.
|
|
19
|
+
- Resolved an issue that would cause an error if an invalid fact reference was typed into a rule.
|
|
20
|
+
- Resolved an issue loading rules with nested conditions when viewing or editing a check in No Code UI.
|
|
21
|
+
- Resolves an issue that was causing a full page refresh after creating/editing checks or tracks
|
|
22
|
+
|
|
3
23
|
## 0.6.0
|
|
4
24
|
|
|
5
25
|
### Minor Changes
|
package/dist/esm/{EntitySoundcheckContent-b20f0ec8.esm.js → EntitySoundcheckContent-ac967308.esm.js}
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e,{useState as W,useEffect as $}from"react";import{Link as O,useParams as Q,Routes as j,Route as k,Navigate as I}from"react-router-dom";import{makeStyles as p,Typography as f,Box as U,Tab as L,Tabs as T,Paper as V,Divider as Y}from"@material-ui/core";import{SpotifyLicenseBanner as q}from"@spotify/backstage-plugin-core";import{useEntity as u}from"@backstage/plugin-catalog-react";import{R as G}from"./RefetchingIndicator-
|
|
2
|
-
//# sourceMappingURL=EntitySoundcheckContent-
|
|
1
|
+
import e,{useState as W,useEffect as $}from"react";import{Link as O,useParams as Q,Routes as j,Route as k,Navigate as I}from"react-router-dom";import{makeStyles as p,Typography as f,Box as U,Tab as L,Tabs as T,Paper as V,Divider as Y}from"@material-ui/core";import{SpotifyLicenseBanner as q}from"@spotify/backstage-plugin-core";import{useEntity as u}from"@backstage/plugin-catalog-react";import{R as G}from"./RefetchingIndicator-50e5cc94.esm.js";import{s as H,R as o,A as y,F as B,a as J,u as x,L as K,N as X,b as C,c as g,d as Z,C as _,e as ee,i as te,f as F,S as ae}from"./index-094c5781.esm.js";import{Skeleton as s}from"@material-ui/lab";import{MarkdownContent as P}from"@backstage/core-components";import{stringifyEntityRef as ne}from"@backstage/catalog-model";import{useApi as re,useRouteRef as b,useRouteRefParams as ie}from"@backstage/core-plugin-api";import{useQuery as le}from"@tanstack/react-query";import ce from"react-use/lib/useMeasure";import A from"react-use/lib/usePrevious";import oe from"react-confetti";import"react-use/lib/useDebounce";import"graphql-request";import"graphql-tag";import"lodash";import"@material-ui/core/styles/makeStyles";import"classnames";import"@material-ui/icons/Schedule";import"luxon";import"@material-ui/icons/Check";import"@material-ui/icons/Close";import"@material-ui/icons/RemoveCircleOutline";import"@material-ui/icons/HelpOutline";function se(t,n,a){const r=re(H),i=ne(t);return le(["soundcheck/check-details",i,n,a],async()=>r.getCheckResultDetails(i,n,a),{enabled:!!n&&!!a})}const me=p({markdownContent:{"& :last-child":{marginBottom:0}}}),de=({state:t,notes:n})=>{const a=me(),r={[o.Passed]:"success",[o.Failed]:"error",[o.NotReported]:"info",[o.NotApplicable]:"info"}[t],i={[o.Passed]:"Check passed",[o.Failed]:"Check did not pass",[o.NotReported]:"Check not reported",[o.NotApplicable]:"Check not applicable"}[t];return e.createElement(y,{severity:r,title:i},n?e.createElement(P,{className:a.markdownContent,content:n}):null)},pe=()=>{const t=D();return e.createElement(B,null,e.createElement("div",{className:t.root,"data-testid":"check-details-view"},e.createElement("div",{className:t.topBar},e.createElement(f,{variant:"h2",className:t.title},e.createElement(s,{width:300,height:32})),e.createElement(s,{width:100,height:32})),e.createElement(s,{variant:"rect",height:120}),e.createElement("div",{"data-testid":"soundcheck-check-details-description"},e.createElement(f,{variant:"h3"},e.createElement(s,null)),e.createElement(s,null),e.createElement(s,null),e.createElement(s,null))))},D=p(t=>({root:{padding:`${t.spacing(3)}px ${t.spacing(5)}px`},title:{fontWeight:"normal",fontSize:t.typography.h5.fontSize},description:{padding:`${t.spacing(3)}px 0`},subtitle:{fontWeight:"normal",fontSize:t.typography.h6.fontSize},topBar:{display:"flex",justifyContent:"space-between",marginBottom:t.spacing(2)}})),ue=({programId:t,checkId:n})=>{const a=D(),{entity:r}=u(),{data:i,isLoading:l,isError:c}=se(r,t,n);if(c)return e.createElement(U,{padding:2},e.createElement(y,{severity:"error",title:"Error loading check details"}));if(l||!t||!n)return e.createElement(pe,null);if(!i)return null;const{name:h,description:d,result:v,timestamp:m,notes:E}=i;return e.createElement("div",{className:a.root,"data-testid":"check-details-view"},e.createElement("div",{className:a.topBar},e.createElement(f,{variant:"h2",className:a.title},h),m?e.createElement(J,{timestamp:m,description:"Last updated"}):null),e.createElement(de,{state:v,notes:E}),e.createElement("div",{className:a.description,"data-testid":"soundcheck-check-details-description"},e.createElement(f,{variant:"h3",className:a.subtitle},"Description"),e.createElement(P,{content:d})))},he=p(()=>({root:{position:"absolute",width:"100%",height:"100%"}})),Ee=({programId:t})=>{var n,a;const r=he(),{entity:i}=u(),{data:l,isLoading:c}=x(i,t),[h,{width:d,height:v}]=ce(),m=c?void 0:(a=(n=l==null?void 0:l.highestLevel)==null?void 0:n.ordinal)!=null?a:-1,E=A(m),R=A(t),[M,S]=W(!1);return $(()=>{typeof E!="undefined"&&typeof m!="undefined"&&t===R&&m>E&&S(!0)},[m,E,t,R]),M?e.createElement("div",{ref:h,className:r.root},e.createElement(oe,{width:d,height:v,numberOfPieces:1e3,gravity:1,initialVelocityY:20,recycle:!1,onConfettiComplete:()=>S(!1)})):null},z=p(t=>({root:{maxWidth:"80ch",textTransform:"uppercase",paddingTop:t.spacing(2),paddingBottom:t.spacing(2)},wrapper:{display:"inline-block",textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden"},badge:{marginRight:t.spacing(1)}})),fe=({id:t,name:n,badge:a,href:r,selected:i=!1})=>{const l=z();return e.createElement(L,{className:l.root,classes:{wrapper:l.wrapper},value:t,label:e.createElement(e.Fragment,null,a?e.createElement(K,{badge:a,className:l.badge}):e.createElement(X,{className:l.badge}),n),component:O,to:r,selected:i})},w=()=>{const t=z();return e.createElement(L,{className:t.root,classes:{wrapper:t.wrapper},label:e.createElement(s,{width:180})})},ge=()=>e.createElement(B,null,e.createElement(T,{value:!1,indicatorColor:"primary"},e.createElement(w,null),e.createElement(w,null),e.createElement(w,null)));function ve(t=[],n){const a=t.findIndex(r=>r.program.id===n);return a<0?!1:a}const ke=({trackId:t})=>{const{entity:n}=u(),{isLoading:a,data:r}=C(n),i=b(g);if(a||!t)return e.createElement(ge,null);const l=ve(r,t);return e.createElement(T,{value:l,indicatorColor:"primary","aria-label":"Certifications",variant:"scrollable"},r&&r.map(({program:{id:c,name:h},highestLevel:d})=>e.createElement(fe,{key:c,id:c,name:h,badge:d==null?void 0:d.badge,selected:c===t,href:i({trackId:c})})))},ye=p({paper:{overflow:"hidden",position:"relative"},view:{display:"grid",gridTemplateColumns:"1fr 2fr"}}),Ce=()=>{const{trackId:t,checkId:n}=Q(),a=ye(),{entity:r}=u(),{isError:i,isFetched:l,data:c}=C(r);return i?e.createElement(y,{severity:"error",title:"Error loading certifications"}):l&&!(c!=null&&c.length)?e.createElement(Z,null):e.createElement(V,{className:a.paper},e.createElement(G,null),e.createElement(ke,{trackId:t}),e.createElement(Y,null),e.createElement("div",{"data-testid":"soundcheck-certification-view",className:a.view},e.createElement(_,{trackId:t,checkId:n}),e.createElement(ue,{programId:t,checkId:n}),e.createElement(Ee,{programId:t})))},be=p(t=>({root:{"&:not(:first-child)":{marginTop:t.spacing(2)}}})),N=()=>{const t=be();return e.createElement(e.Fragment,null,e.createElement(q,{backend:ee,invalidLicenseMessage:te,inline:!0}),e.createElement("div",{className:t.root},e.createElement(Ce,null)))},we=()=>{var t;const{entity:n}=u(),a=b(g),{data:r}=C(n),i=(t=r==null?void 0:r[0])==null?void 0:t.program.id;return i?e.createElement(I,{to:a({trackId:i}),replace:!0}):null},Ne=()=>{var t,n;const{entity:a}=u(),{trackId:r}=ie(g),i=b(F),{data:l}=x(a,r),c=(n=(t=l==null?void 0:l.levels[0])==null?void 0:t.checks[0])==null?void 0:n.id;return c?e.createElement(I,{to:i({trackId:r,checkId:c}),replace:!0}):null},Re=()=>e.createElement(j,null,e.createElement(k,{path:"/",element:e.createElement(e.Fragment,null,e.createElement(N,null),e.createElement(we,null))}),e.createElement(k,{path:g.path,element:e.createElement(e.Fragment,null,e.createElement(N,null),e.createElement(Ne,null))}),e.createElement(k,{path:F.path,element:e.createElement(N,null)})),Se=()=>e.createElement(ae,null,e.createElement(Re,null));export{Se as EntitySoundcheckContent};
|
|
2
|
+
//# sourceMappingURL=EntitySoundcheckContent-ac967308.esm.js.map
|
package/dist/esm/{OverviewPageContent-b39812fb.esm.js → OverviewPageContent-cee8c2bb.esm.js}
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import t,{useState as I,useEffect as k,useMemo as P,useCallback as j,createContext as pe,useContext as me,memo as b,Fragment as ue}from"react";import{useSearchParams as ge}from"react-router-dom";import{makeStyles as f,alpha as M,TextField as he,CircularProgress as fe,Tooltip as K,LinearProgress as ye,withStyles as ve,Grid as C,Typography as v}from"@material-ui/core";import ke from"@material-ui/lab/Autocomplete";import{stringifyEntityRef as H,parseEntityRef as w}from"@backstage/catalog-model";import{useApi as E,identityApiRef as U,useRouteRef as O,configApiRef as Ee}from"@backstage/core-plugin-api";import{useQuery as A}from"@tanstack/react-query";import{s as D,R as N,h as be,B as Ce,L as _,N as Q,A as we,d as Ne,j as Re}from"./index-5913b2d3.esm.js";import{catalogApiRef as W,humanizeEntityRef as x,entityRouteRef as B}from"@backstage/plugin-catalog-react";import $e from"react-use/lib/useAsync";import{HeaderTabs as q,Link as S,EmptyState as xe}from"@backstage/core-components";import{R as Te}from"./RefetchingIndicator-026bd666.esm.js";import{countBy as J}from"lodash";import{Skeleton as F}from"@material-ui/lab";import{VariableSizeGrid as Le}from"react-window";function Ie(){const e=E(W);return A(["soundcheck/all-groups"],async()=>{const{items:r}=await e.getEntities({filter:{kind:"Group"}});return r.filter(a=>(a==null?void 0:a.kind)==="Group").map(a=>{var n,l,o,i;return{name:(i=(o=(l=(n=a.spec)==null?void 0:n.profile)==null?void 0:l.displayName)!=null?o:a.metadata.title)!=null?i:a.metadata.name,ref:H(a)}})})}function Pe(e){const r=E(D);return A(["soundcheck/facets-for-owner",e],async()=>r.getFacetsForOwner(e),{enabled:!!e})}function X(e,r){const a=E(D);return A(["soundcheck/track-overview-for-owner",e,r],async()=>a.getProgramOverviewForOwner(e,r),{enabled:!!e&&!!(r!=null&&r.kind)})}function Oe(){const e=E(U),r=E(W);return A(["soundcheck/user-groups-claims"],async()=>{const{ownershipEntityRefs:a}=await e.getBackstageIdentity();return(await r.getEntitiesByRefs({entityRefs:a})).items.filter(n=>(n==null?void 0:n.kind)==="Group").map(n=>{var l,o,i,s;return{name:(s=(i=(o=(l=n.spec)==null?void 0:l.profile)==null?void 0:o.displayName)!=null?i:n.metadata.title)!=null?s:n.metadata.name,ref:H(n)}})})}const Ae=()=>{const[e,r]=ge(),a=Object.fromEntries(e.entries()),[n,l]=I(a);return k(()=>{r(n,{replace:!0})},[n]),[n,l]},Y=()=>{const{data:e,isLoading:r,isError:a}=Oe(),{data:n,isLoading:l,isError:o}=Ie();return{options:P(()=>{const i=[];return e&&i.push(...e.map(({name:s,ref:c})=>({name:s,ref:c,key:"My Groups"}))),n&&i.push(...n.map(({name:s,ref:c})=>({name:s,ref:c,key:"All Groups"}))),i},[e,n]),isLoading:r||l,isError:a||o}},Be=f(e=>({root:{width:"100%",minWidth:250},textField:{"& $notchedOutline":{borderColor:M(e.page.fontColor,.25)},"&:hover $notchedOutline":{borderColor:e.page.fontColor}},input:{backgroundColor:"transparent",color:e.page.fontColor},clearIndicator:{color:e.page.fontColor},popupIndicator:{color:e.page.fontColor},notchedOutline:{}})),Se=e=>{const{onChange:r,initialValue:a,setError:n}=e,{options:l,isLoading:o,isError:i}=Y(),s=Be(),[c,d]=I(null);k(()=>{if(!o&&l!=null&&l.length&&!c){const p=a?l.find(m=>m.ref===a):l[0];p&&(d(p),r==null||r(p.ref))}},[o,l,c,r,a]);const u=j((p,m)=>{d(m),r==null||r(m==null?void 0:m.ref)},[r,d]);return k(()=>{n==null||n(i?new Error("Error loading groups"):void 0)},[i,n]),i?null:t.createElement(ke,{"aria-label":"Current group",className:s.root,classes:{clearIndicator:s.clearIndicator,popupIndicator:s.popupIndicator},disableClearable:!0,options:l!=null?l:[],loading:o,groupBy:p=>p.key,value:c,freeSolo:!1,onChange:u,getOptionLabel:p=>p.name,renderInput:p=>t.createElement(he,{...p,variant:"outlined",placeholder:o?"Loading":"Select a group",className:s.textField,InputProps:{...p.InputProps,className:s.input,classes:{notchedOutline:s.notchedOutline},endAdornment:t.createElement(t.Fragment,null,o?t.createElement(fe,{color:"inherit",size:20}):null,p.InputProps.endAdornment)}})})},Z={loading:!1},ee=pe(Z),Fe=()=>me(ee),ze=({children:e})=>{const[r,a]=I(Z),n=E(W),l=E(U),{value:o,loading:i,error:s}=$e(async()=>{const[{token:c},d]=await Promise.all([l.getCredentials(),l.getBackstageIdentity()]);return c?await n.getEntityByRef(d.userEntityRef):null},[n,l]);return k(()=>{if(o){const c=H(o);a({user:o,userEntityRef:c,loading:i,error:s})}else a({loading:i,error:s})},[o,i,s]),t.createElement(ee.Provider,{value:r},e)},He=e=>({key:`skeleton${e}`,label:"",id:`skeleton${e}`}),We=()=>{const e=Array.from({length:4},(r,a)=>He(a));return t.createElement(q,{tabs:e})},Ge=f(e=>({root:{borderTop:`1px solid ${e.palette.divider}`,borderBottom:`1px solid ${e.palette.divider}`},tab:{textTransform:"uppercase",paddingTop:e.spacing(2),paddingBottom:e.spacing(2)}})),Ve=({unfilteredFacets:e,onChange:r,kind:a,type:n})=>{var l,o,i;const s=Ge(),c={types:(l=e==null?void 0:e.types.filter(({count:m})=>m>0))!=null?l:[]},d=j(m=>{var g;r((g=c==null?void 0:c.types[m].kind)!=null?g:"",c==null?void 0:c.types[m].type)},[c==null?void 0:c.types,r]);k(()=>{var m,g,y;const h=(c==null?void 0:c.types)&&c.types.length>=0,T=!a&&h,$=a&&h&&!(c!=null&&c.types.find(({kind:L,type:V})=>a===L&&(!n&&!V||n===V)));(T||$)&&r((g=(m=c==null?void 0:c.types[0])==null?void 0:m.kind)!=null?g:"",(y=c==null?void 0:c.types[0])==null?void 0:y.type)},[a,n,c==null?void 0:c.types,r]);const u=(o=c==null?void 0:c.types.map(({kind:m,type:g,count:y})=>{const h=`${m}|${g!=null?g:""}`;return{key:h,label:`${g!=null?g:m} (${y>50?"50+":y})`,id:h,tabProps:{className:s.tab}}}))!=null?o:[];if(!u.length)return null;const p=(i=c==null?void 0:c.types.findIndex(m=>m.kind===a&&(!m.type&&!n||m.type===n)))!=null?i:-1;return t.createElement(t.Fragment,null,t.createElement(Te,null),t.createElement(q,{onChange:d,tabs:u,selectedIndex:p>-1?p:void 0}))},je=f(e=>({root:{height:"8px",minWidth:"64px",marginLeft:e.spacing(2),borderRadius:"100vh",backgroundColor:e.palette.background.default},bar:{backgroundColor:e.palette.success.main,transition:"none"}})),te=e=>{var r,a;const n=je(e),l=P(()=>Object.entries(e.progress).reduce((i,[,s])=>i+s,0),[e.progress]);if(l===0)return null;const o=(r=e.progress[N.Passed])!=null?r:0;return t.createElement(K,{arrow:!0,title:`Check passing for ${o} of ${l} ${l===1?"entity":"entities"}`,enterDelay:0,placement:"top"},t.createElement(ye,{variant:"determinate",value:((a=e.progress[N.Passed])!=null?a:0)/l*100,classes:{root:n.root,bar:n.bar}}))},Me=f(e=>({headerWrapper:{marginTop:e.spacing(.5)},entityRefName:{fontWeight:"bold"},iconWrapper:{padding:e.spacing(1.5,.5),display:"flex",alignItems:"center",justifyContent:"center"}})),Ke=({check:{name:e,description:r},icon:a,entityRef:n})=>{const l=Me(),o=w(n);return t.createElement(C,{spacing:1},t.createElement(C,{container:!0,direction:"row",spacing:1,wrap:"nowrap"},t.createElement("div",{className:l.iconWrapper},a),t.createElement(v,{variant:"h6",className:l.headerWrapper,noWrap:!0},e)),t.createElement(C,{item:!0,wrap:"nowrap"},t.createElement(v,{variant:"subtitle2",className:l.entityRefName},x(o,{defaultKind:o.kind}))),t.createElement(v,{variant:"caption"},r))},Ue=ve(e=>{const r=e.palette.type==="dark"?e.palette.common.black:e.palette.grey[300];return{tooltip:{backgroundColor:r,color:e.palette.type==="dark"?e.palette.common.white:e.palette.grey[700]},arrow:{color:r}}})(K),De=({children:e,check:r,icon:a,entityRef:n})=>t.createElement(Ue,{arrow:!0,title:t.createElement(Ke,{check:r,icon:a,entityRef:n}),enterDelay:150,placement:"top"},e),_e=f(e=>({root:{padding:0},iconWrapper:{padding:e.spacing(1.5),display:"flex",alignItems:"center",justifyContent:"center"},link:{"&:hover $iconWrapper, &:active $iconWrapper, &:focus $iconWrapper":{backgroundColor:e.palette.infoBackground}},icon:{width:"17px",height:"17px"},virtualized:{borderBottom:`1px solid ${e.palette.divider}`,borderRight:`1px solid ${e.palette.divider}`}})),re=b(({programId:e,check:r,entityRef:a,result:n,entityRoute:l,isVirtualized:o})=>{const i=_e();if(typeof a!="string"){const u=t.createElement("div",{className:i.iconWrapper},t.createElement("div",{className:i.icon}));return o?t.createElement("div",{className:`${i.root} ${i.virtualized}`,"aria-hidden":!0},u):t.createElement("td",{className:i.root,"aria-hidden":!0},u)}const s=t.createElement(be,{className:i.icon,result:n!=null?n:N.NotReported}),c=t.createElement("div",{className:i.iconWrapper},s),d=n&&n===N.NotApplicable?c:t.createElement(S,{className:i.link,to:`${l(w(a))}/soundcheck/${e}/${r.id}`},c);return o?t.createElement("div",{className:`${i.root} ${i.virtualized}`},t.createElement(De,{check:r,icon:s,entityRef:a},d)):t.createElement("td",{className:`${i.root}`},d)}),ae=8,Qe=16,R={programTitle:70,levelTitle:30,check:42,entityRefFooter:100},z={programTitle:350+Qe*2,checkResult:42},qe=e=>e.reduce((r,a)=>r+a.height,0),Je=e=>e*z.checkResult+z.programTitle,Xe=e=>e.filter(r=>r!==void 0).map(r=>{const a=w(r);return x(a,{defaultKind:a.kind})}).reduce((r,a)=>r.length>a.length?r:a,""),Ye=e=>ae*e+ae,ne="NoLevel",Ze=e=>({name:ne,badge:{options:{level:0,color:""},variant:Ce.Medal},entityRef:e,ordinal:0}),le=f(e=>({checkNameCell:{padding:0,backgroundColor:e.palette.background.paper},checkNameContent:{padding:`0 ${e.spacing(2)}px`,display:"flex",justifyContent:"space-between",alignItems:"center"},checkNameTypography:{overflow:"hidden",textOverflow:"ellipsis"},checkIndicator:{flexBasis:e.spacing(8)},checkNameCellVirtualized:{height:`${R.check}px`,lineHeight:`${R.check}px`,borderBottom:`1px solid ${e.palette.divider}`,borderRight:`1px solid ${e.palette.divider}`}})),et=b(({programId:e,programName:r,check:a,entityRefs:n,results:l,entityRoute:o})=>{const i=le(),s=P(()=>J(l.filter(({result:d})=>d!==N.NotApplicable),"result"),[l]),c=new Map(l.map(d=>[d.entityRef,d.result]));return t.createElement("tr",{"data-testid":"track-check-row"},t.createElement("th",{scope:"row",className:i.checkNameCell,"aria-label":`${a.name} check for ${r} track`},t.createElement("div",{className:i.checkNameContent},t.createElement(v,{className:i.checkNameTypography,variant:"subtitle2",component:"p"},a.name),t.createElement(te,{className:i.checkIndicator,progress:s}))),n.map((d,u)=>t.createElement(re,{key:u,programId:e,check:a,entityRef:d,result:typeof d=="string"?c.get(d):void 0,entityRoute:o})))}),tt=({name:e,progress:r})=>{const a=le();return t.createElement("div",{className:a.checkNameCell,"aria-label":`${e} check`},t.createElement("div",{className:`${a.checkNameContent} ${a.checkNameCellVirtualized}`},t.createElement(v,{variant:"subtitle2",component:"p",className:a.checkNameTypography},e),t.createElement(te,{className:a.checkIndicator,progress:r})))},rt=f(e=>({virtualized:{borderRight:`1px solid ${e.palette.divider}`,height:`${R.programTitle}px`,display:"flex",justifyContent:"center",alignItems:"center"}})),at=b(({entityRef:e,highestLevels:r})=>{const a=r.find(n=>n.entityRef===e);return t.createElement(t.Fragment,null,a!=null&&a.badge?t.createElement(_,{badge:a.badge}):t.createElement(Q,null))}),nt=({highestLevel:e})=>{const r=rt();if(!(e!=null&&e.badge))return t.createElement("div",{className:r.virtualized},"\xA0");const a=e.name!==ne;return t.createElement("div",{className:r.virtualized},a?t.createElement(_,{badge:e.badge}):t.createElement(Q,null))},oe=f(e=>({programNameCell:{padding:0,position:"sticky",backgroundColor:e.palette.background.paper},programNameContent:{padding:e.spacing(2)},programNameTypography:{overflow:"hidden",textOverflow:"ellipsis"},badgeCellContent:{display:"flex",justifyContent:"center",alignItems:"center"},programNameCellVirtualized:{borderRight:`1px solid ${e.palette.divider}`}})),lt=b(({program:e,entityRefs:r,highestLevels:a})=>{const n=oe();return t.createElement("tr",{"data-testid":"track-title-row"},t.createElement("th",{scope:"row",className:n.programNameCell},t.createElement("div",{className:n.programNameContent},t.createElement(v,{className:n.programNameTypography,variant:"h5",component:"p"},e.name))),r.map((l,o)=>typeof l!="string"?t.createElement("td",{key:o,"aria-hidden":!0}):t.createElement("td",{key:o,"data-testid":"track-certification-cell"},t.createElement("div",{className:n.badgeCellContent},t.createElement(at,{entityRef:l,highestLevels:a})))))}),ot=b(({name:e})=>{const r=oe();return t.createElement("div",{className:`${r.programNameCell} ${r.programNameCellVirtualized}`},t.createElement("div",{className:r.programNameContent},t.createElement(v,{className:r.programNameTypography,variant:"h5",component:"p"},e)))}),G=f(e=>{const r=e.palette.type==="dark"?e.palette.grey[700]:e.palette.grey[100];return{root:{color:M(e.palette.getContrastText(r),.8),backgroundColor:r},levelContent:{padding:`${e.spacing(.5)}px ${e.spacing(2)}px`,backgroundColor:r},levelTypography:{overflow:"hidden",textOverflow:"ellipsis"},levelHeaderCell:{padding:`${e.spacing(.5)}px ${e.spacing(2)}px`,borderRight:`1px solid ${e.palette.divider}`,height:`${R.levelTitle}px`}}}),it=b(({level:e,entityRefs:r,programName:a})=>{const n=G();return t.createElement("tr",{className:n.root,"data-testid":"track-level-row"},t.createElement("th",{scope:"row",className:n.root},t.createElement("div",{className:n.levelContent},t.createElement(v,{className:n.levelTypography,variant:"subtitle2",component:"p","aria-label":`${e.name} for ${a} track`},e.name))),r.map((l,o)=>t.createElement("td",{key:o,className:n.root,"aria-hidden":!0})))}),st=({name:e})=>{const r=G();return t.createElement("div",{className:`${r.levelHeaderCell} ${r.root}`,"aria-label":`${e}`},t.createElement(v,{variant:"subtitle2",component:"p",className:r.levelTypography},e))},ct=()=>{const e=G();return t.createElement("div",{className:`${e.levelHeaderCell} ${e.root}`},"\xA0")},dt=({program:e,highestLevels:r,levels:a,entityRefs:n,entityRoute:l})=>t.createElement("tbody",null,t.createElement(lt,{program:e,entityRefs:n,highestLevels:r}),a.map((o,i)=>t.createElement(ue,{key:i},t.createElement(it,{entityRefs:n,level:o,programName:e.name}),o.checks.map(({check:s,results:c},d)=>t.createElement(et,{key:d,check:s,programId:e.id,programName:e.name,entityRefs:n,results:c,entityRoute:l}))))),ie=f(e=>({root:{position:"sticky",bottom:"-1px",backgroundColor:e.palette.background.default,boxShadow:`0 -1px ${e.palette.divider}`,"& td$cell, & th$cell":{border:0,padding:e.spacing(1)},"& td$cell":{backgroundColor:e.palette.background.default}},row:{boxShadow:`1px 0 ${e.palette.background.default}, -1px 0 ${e.palette.background.default}`},cell:{verticalAlign:"top"},cellInner:{textOrientation:"mixed",writingMode:"vertical-lr",transform:"rotate(-20deg)",transformOrigin:`100% ${e.spacing(1)}px`,wordBreak:"keep-all",fontWeight:"bold",overflow:"hidden",textOverflow:"ellipsis",maxHeight:"max(15vh, 175px)"}})),pt=({entityRefs:e})=>{const r=O(B),a=ie();return t.createElement("tfoot",{className:a.root,"data-testid":"results-table-footer"},t.createElement("tr",{className:a.row},t.createElement("td",{className:a.cell}),e.map((n,l)=>{if(typeof n!="string")return t.createElement("th",{key:l,className:a.cell,"aria-hidden":!0});const o=w(n);return t.createElement("th",{scope:"col",key:l,className:a.cell},t.createElement("div",{className:a.cellInner},t.createElement(S,{to:r(o)},x(o,{defaultKind:o.kind}))))})))},mt=({entityRef:e})=>{const r=O(B),a=ie(),n=e?w(e):void 0,l=n?t.createElement(S,{to:r(n)},x(n,{defaultKind:n.kind})):t.createElement(t.Fragment,null);return t.createElement("div",{className:a.cell},t.createElement("div",{className:a.cellInner},l))},ut=f(e=>({table:{backgroundColor:e.palette.background.paper,borderCollapse:"collapse",whiteSpace:"nowrap","& th, & td":{border:`1px solid ${e.palette.divider}`,borderCollapse:"collapse"},paddingBottom:e.spacing(2)},programTitle:{padding:e.spacing(2)},checkResult:{padding:e.spacing(1.5)},title:{padding:`${e.spacing(1)}px ${e.spacing(2)}px`},header:{backgroundColor:e.palette.type==="dark"?e.palette.grey[700]:e.palette.grey[100]}})),se=()=>{const e=ut(),r=new Array(25).fill(void 0),a=new Array(5).fill(void 0),n=new Array(3).fill(void 0);return t.createElement("table",{className:e.table},t.createElement("tbody",null,t.createElement("tr",null,t.createElement("td",{className:e.programTitle},t.createElement(F,{width:180,height:40})),r.map((l,o)=>t.createElement("td",{key:o}))),n.map((l,o)=>t.createElement(t.Fragment,{key:o},t.createElement("tr",{className:e.header},t.createElement("td",{className:e.title},t.createElement(F,{width:180})),r.map((i,s)=>t.createElement("td",{key:s}))),a.map((i,s)=>t.createElement("tr",{key:s},t.createElement("td",{className:e.title},t.createElement(F,{width:240})),r.map((c,d)=>t.createElement("td",{key:d,className:e.checkResult},t.createElement(F,{width:18,height:18,variant:"rect"})))))))))},gt=f(e=>({root:{width:"100%"},table:{overflow:"auto",backgroundColor:e.palette.background.paper,borderCollapse:"collapse",whiteSpace:"nowrap",textAlign:"left","& th, & td":{border:`1px solid ${e.palette.divider}`,borderCollapse:"collapse"},"& th:first-of-type":{position:"sticky",left:0,zIndex:1,maxWidth:"60ch"},"& tfoot":{bottom:0,zIndex:1e3},"& tbody td:first-of-type":{border:`1px solid ${e.palette.divider}`,boxShadow:`1px 0 ${e.palette.background.default}, -1px 0 ${e.palette.background.default}`}}})),ht=b(e=>{const{setError:r,kind:a,type:n,ownerEntityRef:l}=e,o=gt(),i=O(B),{data:s,isLoading:c,isError:d}=X(l,{kind:a,type:n});if(k(()=>{r==null||r(d?new Error("Error loading track overview"):void 0)},[d,r]),c)return t.createElement(se,null);if(!s||!l)return null;const{programs:u,entityRefs:p}=s;if(!c&&!u.length)return t.createElement(xe,{missing:"data",title:"Missing tracks",description:t.createElement(t.Fragment,null,"Looks like the group"," ",x(w(l),{defaultKind:"Group"})," ","doesn't own any ",n!=null?n:a," components that have Soundcheck tracks set up.",t.createElement("br",null),t.createElement("br",null),"If you're an administrator, you can learn more about configuring and filtering tracks in the"," ",t.createElement(S,{to:"https://www.npmjs.com/package/@spotify/backstage-plugin-soundcheck-backend#entity-filter"},"docs"),".")});if(d)return null;const m=p.length>=25?p:[...p,...Array.from({length:25-p.length},()=>{})];return t.createElement("div",{className:o.root},t.createElement("table",{className:o.table,"aria-label":"Check results"},u.map(({program:g,levels:y,highestLevels:h},T)=>t.createElement(dt,{key:T,program:g,entityRefs:m,levels:y,highestLevels:h,entityRoute:i})),t.createElement(pt,{entityRefs:m})))}),ft=e=>t.createElement(ot,{name:e}),yt=e=>({type:"ProgramHeader",render:()=>ft(e)}),vt=e=>e?t.createElement(st,{name:e}):t.createElement(ct,null),ce=e=>({type:"LevelHeader",render:()=>vt(e)}),kt=(e,r)=>t.createElement(tt,{name:e,progress:r}),Et=(e,r)=>({type:"CheckTitle",render:()=>kt(e,r)}),bt=(e,r,a,n,l)=>t.createElement(re,{check:r,entityRef:a,entityRoute:l,programId:e,result:n,isVirtualized:!0}),Ct=(e,r,a,n,l)=>({type:"CheckResult",render:()=>bt(e,r,a,n,l)}),wt=e=>t.createElement(mt,{entityRef:e}),de=e=>({type:"EntityHeader",render:()=>wt(e)}),Nt=e=>t.createElement(nt,{highestLevel:e}),Rt=e=>({type:"LevelBadge",render:()=>Nt(e)}),$t=e=>r=>{const a=e[r.rowIndex].cells[r.columnIndex];return a?t.createElement("div",{style:r.style},a.render()):t.createElement("div",{style:r.style})},xt=(e,r,a)=>{var n;const l=[];for(const{program:i,levels:s,highestLevels:c}of e){l.push({height:R.programTitle,cells:[yt(i.name),...r.map(d=>{const u=d?c.find(p=>p.entityRef===d)||Ze(d):void 0;return Rt(u)})]});for(const d of s){l.push({height:R.levelTitle,cells:[ce(d.name),...r.map(u=>ce(""))]});for(const{check:u,results:p}of d.checks)l.push({height:R.check,cells:[Et(u.name,J(p.filter(({result:m})=>m!==N.NotApplicable),"result")),...r.map(m=>{var g,y;return Ct(i.id,u,m,(y=(g=p.find(h=>h.entityRef===m))==null?void 0:g.result)!=null?y:N.NotApplicable,a)})]})}}const o=Xe(r!=null?r:[]);return l.push({height:Ye((n=o.length)!=null?n:1),cells:[de(""),...r.map(i=>de(i||""))]}),l},Tt=f(e=>({table:{backgroundColor:e.palette.background.paper,borderCollapse:"collapse",whiteSpace:"nowrap",textAlign:"left",overflow:"auto"}})),Lt=e=>{const{setError:r,kind:a,type:n,ownerEntityRef:l}=e,o=Tt(),i=O(B),{data:s,isLoading:c,isError:d}=X(l,{kind:a,type:n});if(k(()=>{r==null||r(d?new Error("Error loading program overview"):void 0)},[d,r]),c)return t.createElement(se,null);if(!s||!l)return null;const{programs:u,entityRefs:p}=s,m=p.length>=25?p:[...p,...Array.from({length:25-p.length},()=>{})],g=xt(u,m,i),y=$t(g);return t.createElement(C,{"aria-label":`Check results for ${n!=null?n:a}`,key:`${a}|${n!=null?n:""}`,item:!0,xs:12},t.createElement(Le,{className:o.table,columnCount:m.length+1,columnWidth:h=>h===0?z.programTitle:z.checkResult,rowCount:g.length,rowHeight:h=>g[h].height,height:qe(g),width:Je(m.length)},y))},It=({facets:e,ownerEntityRef:r,kind:a,type:n,setError:l})=>{const o=P(()=>{const i=new Map;return e.types.forEach(({kind:s,type:c})=>{const d=`${s}|${c!=null?c:""}`;i.set(d,t.createElement(Lt,{key:d,ownerEntityRef:r,kind:s,type:c,setError:l}))}),i},[e,r,l]);return t.createElement("div",null,o.get(`${a}|${n!=null?n:""}`))},Pt=f(()=>({scrollContainer:{overflow:"auto"}})),Ot=({facets:e,ownerEntityRef:r,hasError:a,kind:n,type:l,setError:o,useVirtualizedResultsTable:i})=>{var s,c,d;const u=Pt();return a?t.createElement(we,{severity:"error",title:a.message}):e&&((c=(s=e.types)==null?void 0:s.length)!=null?c:0)>0?(d=e.types)!=null&&d.find(p=>p.count>0)?t.createElement("div",{className:u.scrollContainer},i?t.createElement(It,{facets:e,kind:n,type:l,setError:o,ownerEntityRef:r,hasError:a}):t.createElement(ht,{ownerEntityRef:r,kind:n,type:l,setError:o})):t.createElement(Ne,{description:t.createElement(t.Fragment,null,"Looks like the group"," ",x(w(r),{defaultKind:"Group"})," ","doesn't own any entities that have any applicable tracks configured.",t.createElement("br",null),t.createElement("br",null),"Please select another group from the dropdown in the corner of the header.")}):t.createElement(Re,{ownerEntityRef:r})},At=f(()=>({tableContainer:{padding:0,backgroundColor:"transparent"}})),Bt=({groupSelectorError:e,searchParams:r,setSearchParams:a})=>{var n;const{group:l,kind:o,type:i}=r,[s,c]=I(void 0),[d,u]=I(void 0);k(()=>{((s==null?void 0:s.kind)!==o||(s==null?void 0:s.type)!==i)&&c({kind:o,type:i})},[o,i,s]);const{data:p,isLoading:m}=Pe(l),g=(n=E(Ee).getOptionalBoolean("soundcheck.virtualizeOverviewPage"))!=null?n:!1,y=d||e,h=($,L)=>{$&&(c({kind:$,type:L}),L?a({...r,kind:$,type:L}):(r!=null&&r.hasOwnProperty("type")&&delete r.type,a({...r,kind:$})))},T=At();return t.createElement(C,{container:!0,spacing:0},t.createElement(C,{item:!0,xs:12},m?t.createElement(We,null):t.createElement(Ve,{unfilteredFacets:p,kind:s==null?void 0:s.kind,type:s==null?void 0:s.type,onChange:h})),t.createElement(C,{item:!0,xs:12,className:T.tableContainer},!m&&t.createElement(Ot,{facets:p,kind:s==null?void 0:s.kind,type:s==null?void 0:s.type,setError:u,hasError:y,ownerEntityRef:l,useVirtualizedResultsTable:g})))};export{Se as G,Bt as O,ze as U,Y as a,Fe as b,Ae as u};
|
|
2
|
-
//# sourceMappingURL=OverviewPageContent-
|
|
1
|
+
import t,{useState as I,useEffect as k,useMemo as P,useCallback as j,createContext as pe,useContext as me,memo as b,Fragment as ue}from"react";import{useSearchParams as ge}from"react-router-dom";import{makeStyles as f,alpha as M,TextField as he,CircularProgress as fe,Tooltip as K,LinearProgress as ye,withStyles as ve,Grid as C,Typography as v}from"@material-ui/core";import ke from"@material-ui/lab/Autocomplete";import{stringifyEntityRef as H,parseEntityRef as w}from"@backstage/catalog-model";import{useApi as E,identityApiRef as U,useRouteRef as O,configApiRef as Ee}from"@backstage/core-plugin-api";import{useQuery as A}from"@tanstack/react-query";import{s as D,R as N,h as be,B as Ce,L as _,N as Q,A as we,d as Ne,j as Re}from"./index-094c5781.esm.js";import{catalogApiRef as W,humanizeEntityRef as x,entityRouteRef as B}from"@backstage/plugin-catalog-react";import $e from"react-use/lib/useAsync";import{HeaderTabs as q,Link as S,EmptyState as xe}from"@backstage/core-components";import{R as Te}from"./RefetchingIndicator-50e5cc94.esm.js";import{countBy as J}from"lodash";import{Skeleton as F}from"@material-ui/lab";import{VariableSizeGrid as Le}from"react-window";function Ie(){const e=E(W);return A(["soundcheck/all-groups"],async()=>{const{items:r}=await e.getEntities({filter:{kind:"Group"}});return r.filter(a=>(a==null?void 0:a.kind)==="Group").map(a=>{var n,l,o,i;return{name:(i=(o=(l=(n=a.spec)==null?void 0:n.profile)==null?void 0:l.displayName)!=null?o:a.metadata.title)!=null?i:a.metadata.name,ref:H(a)}})})}function Pe(e){const r=E(D);return A(["soundcheck/facets-for-owner",e],async()=>r.getFacetsForOwner(e),{enabled:!!e})}function X(e,r){const a=E(D);return A(["soundcheck/track-overview-for-owner",e,r],async()=>a.getProgramOverviewForOwner(e,r),{enabled:!!e&&!!(r!=null&&r.kind)})}function Oe(){const e=E(U),r=E(W);return A(["soundcheck/user-groups-claims"],async()=>{const{ownershipEntityRefs:a}=await e.getBackstageIdentity();return(await r.getEntitiesByRefs({entityRefs:a})).items.filter(n=>(n==null?void 0:n.kind)==="Group").map(n=>{var l,o,i,s;return{name:(s=(i=(o=(l=n.spec)==null?void 0:l.profile)==null?void 0:o.displayName)!=null?i:n.metadata.title)!=null?s:n.metadata.name,ref:H(n)}})})}const Ae=()=>{const[e,r]=ge(),a=Object.fromEntries(e.entries()),[n,l]=I(a);return k(()=>{r(n,{replace:!0})},[n]),[n,l]},Y=()=>{const{data:e,isLoading:r,isError:a}=Oe(),{data:n,isLoading:l,isError:o}=Ie();return{options:P(()=>{const i=[];return e&&i.push(...e.map(({name:s,ref:c})=>({name:s,ref:c,key:"My Groups"}))),n&&i.push(...n.map(({name:s,ref:c})=>({name:s,ref:c,key:"All Groups"}))),i},[e,n]),isLoading:r||l,isError:a||o}},Be=f(e=>({root:{width:"100%",minWidth:250},textField:{"& $notchedOutline":{borderColor:M(e.page.fontColor,.25)},"&:hover $notchedOutline":{borderColor:e.page.fontColor}},input:{backgroundColor:"transparent",color:e.page.fontColor},clearIndicator:{color:e.page.fontColor},popupIndicator:{color:e.page.fontColor},notchedOutline:{}})),Se=e=>{const{onChange:r,initialValue:a,setError:n}=e,{options:l,isLoading:o,isError:i}=Y(),s=Be(),[c,d]=I(null);k(()=>{if(!o&&l!=null&&l.length&&!c){const p=a?l.find(m=>m.ref===a):l[0];p&&(d(p),r==null||r(p.ref))}},[o,l,c,r,a]);const u=j((p,m)=>{d(m),r==null||r(m==null?void 0:m.ref)},[r,d]);return k(()=>{n==null||n(i?new Error("Error loading groups"):void 0)},[i,n]),i?null:t.createElement(ke,{"aria-label":"Current group",className:s.root,classes:{clearIndicator:s.clearIndicator,popupIndicator:s.popupIndicator},disableClearable:!0,options:l!=null?l:[],loading:o,groupBy:p=>p.key,value:c,freeSolo:!1,onChange:u,getOptionLabel:p=>p.name,renderInput:p=>t.createElement(he,{...p,variant:"outlined",placeholder:o?"Loading":"Select a group",className:s.textField,InputProps:{...p.InputProps,className:s.input,classes:{notchedOutline:s.notchedOutline},endAdornment:t.createElement(t.Fragment,null,o?t.createElement(fe,{color:"inherit",size:20}):null,p.InputProps.endAdornment)}})})},Z={loading:!1},ee=pe(Z),Fe=()=>me(ee),ze=({children:e})=>{const[r,a]=I(Z),n=E(W),l=E(U),{value:o,loading:i,error:s}=$e(async()=>{const[{token:c},d]=await Promise.all([l.getCredentials(),l.getBackstageIdentity()]);return c?await n.getEntityByRef(d.userEntityRef):null},[n,l]);return k(()=>{if(o){const c=H(o);a({user:o,userEntityRef:c,loading:i,error:s})}else a({loading:i,error:s})},[o,i,s]),t.createElement(ee.Provider,{value:r},e)},He=e=>({key:`skeleton${e}`,label:"",id:`skeleton${e}`}),We=()=>{const e=Array.from({length:4},(r,a)=>He(a));return t.createElement(q,{tabs:e})},Ge=f(e=>({root:{borderTop:`1px solid ${e.palette.divider}`,borderBottom:`1px solid ${e.palette.divider}`},tab:{textTransform:"uppercase",paddingTop:e.spacing(2),paddingBottom:e.spacing(2)}})),Ve=({unfilteredFacets:e,onChange:r,kind:a,type:n})=>{var l,o,i;const s=Ge(),c={types:(l=e==null?void 0:e.types.filter(({count:m})=>m>0))!=null?l:[]},d=j(m=>{var g;r((g=c==null?void 0:c.types[m].kind)!=null?g:"",c==null?void 0:c.types[m].type)},[c==null?void 0:c.types,r]);k(()=>{var m,g,y;const h=(c==null?void 0:c.types)&&c.types.length>=0,T=!a&&h,$=a&&h&&!(c!=null&&c.types.find(({kind:L,type:V})=>a===L&&(!n&&!V||n===V)));(T||$)&&r((g=(m=c==null?void 0:c.types[0])==null?void 0:m.kind)!=null?g:"",(y=c==null?void 0:c.types[0])==null?void 0:y.type)},[a,n,c==null?void 0:c.types,r]);const u=(o=c==null?void 0:c.types.map(({kind:m,type:g,count:y})=>{const h=`${m}|${g!=null?g:""}`;return{key:h,label:`${g!=null?g:m} (${y>50?"50+":y})`,id:h,tabProps:{className:s.tab}}}))!=null?o:[];if(!u.length)return null;const p=(i=c==null?void 0:c.types.findIndex(m=>m.kind===a&&(!m.type&&!n||m.type===n)))!=null?i:-1;return t.createElement(t.Fragment,null,t.createElement(Te,null),t.createElement(q,{onChange:d,tabs:u,selectedIndex:p>-1?p:void 0}))},je=f(e=>({root:{height:"8px",minWidth:"64px",marginLeft:e.spacing(2),borderRadius:"100vh",backgroundColor:e.palette.background.default},bar:{backgroundColor:e.palette.success.main,transition:"none"}})),te=e=>{var r,a;const n=je(e),l=P(()=>Object.entries(e.progress).reduce((i,[,s])=>i+s,0),[e.progress]);if(l===0)return null;const o=(r=e.progress[N.Passed])!=null?r:0;return t.createElement(K,{arrow:!0,title:`Check passing for ${o} of ${l} ${l===1?"entity":"entities"}`,enterDelay:0,placement:"top"},t.createElement(ye,{variant:"determinate",value:((a=e.progress[N.Passed])!=null?a:0)/l*100,classes:{root:n.root,bar:n.bar}}))},Me=f(e=>({headerWrapper:{marginTop:e.spacing(.5)},entityRefName:{fontWeight:"bold"},iconWrapper:{padding:e.spacing(1.5,.5),display:"flex",alignItems:"center",justifyContent:"center"}})),Ke=({check:{name:e,description:r},icon:a,entityRef:n})=>{const l=Me(),o=w(n);return t.createElement(C,{spacing:1},t.createElement(C,{container:!0,direction:"row",spacing:1,wrap:"nowrap"},t.createElement("div",{className:l.iconWrapper},a),t.createElement(v,{variant:"h6",className:l.headerWrapper,noWrap:!0},e)),t.createElement(C,{item:!0,wrap:"nowrap"},t.createElement(v,{variant:"subtitle2",className:l.entityRefName},x(o,{defaultKind:o.kind}))),t.createElement(v,{variant:"caption"},r))},Ue=ve(e=>{const r=e.palette.type==="dark"?e.palette.common.black:e.palette.grey[300];return{tooltip:{backgroundColor:r,color:e.palette.type==="dark"?e.palette.common.white:e.palette.grey[700]},arrow:{color:r}}})(K),De=({children:e,check:r,icon:a,entityRef:n})=>t.createElement(Ue,{arrow:!0,title:t.createElement(Ke,{check:r,icon:a,entityRef:n}),enterDelay:150,placement:"top"},e),_e=f(e=>({root:{padding:0},iconWrapper:{padding:e.spacing(1.5),display:"flex",alignItems:"center",justifyContent:"center"},link:{"&:hover $iconWrapper, &:active $iconWrapper, &:focus $iconWrapper":{backgroundColor:e.palette.infoBackground}},icon:{width:"17px",height:"17px"},virtualized:{borderBottom:`1px solid ${e.palette.divider}`,borderRight:`1px solid ${e.palette.divider}`}})),re=b(({programId:e,check:r,entityRef:a,result:n,entityRoute:l,isVirtualized:o})=>{const i=_e();if(typeof a!="string"){const u=t.createElement("div",{className:i.iconWrapper},t.createElement("div",{className:i.icon}));return o?t.createElement("div",{className:`${i.root} ${i.virtualized}`,"aria-hidden":!0},u):t.createElement("td",{className:i.root,"aria-hidden":!0},u)}const s=t.createElement(be,{className:i.icon,result:n!=null?n:N.NotReported}),c=t.createElement("div",{className:i.iconWrapper},s),d=n&&n===N.NotApplicable?c:t.createElement(S,{className:i.link,to:`${l(w(a))}/soundcheck/${e}/${r.id}`},c);return o?t.createElement("div",{className:`${i.root} ${i.virtualized}`},t.createElement(De,{check:r,icon:s,entityRef:a},d)):t.createElement("td",{className:`${i.root}`},d)}),ae=8,Qe=16,R={programTitle:70,levelTitle:30,check:42,entityRefFooter:100},z={programTitle:350+Qe*2,checkResult:42},qe=e=>e.reduce((r,a)=>r+a.height,0),Je=e=>e*z.checkResult+z.programTitle,Xe=e=>e.filter(r=>r!==void 0).map(r=>{const a=w(r);return x(a,{defaultKind:a.kind})}).reduce((r,a)=>r.length>a.length?r:a,""),Ye=e=>ae*e+ae,ne="NoLevel",Ze=e=>({name:ne,badge:{options:{level:0,color:""},variant:Ce.Medal},entityRef:e,ordinal:0}),le=f(e=>({checkNameCell:{padding:0,backgroundColor:e.palette.background.paper},checkNameContent:{padding:`0 ${e.spacing(2)}px`,display:"flex",justifyContent:"space-between",alignItems:"center"},checkNameTypography:{overflow:"hidden",textOverflow:"ellipsis"},checkIndicator:{flexBasis:e.spacing(8)},checkNameCellVirtualized:{height:`${R.check}px`,lineHeight:`${R.check}px`,borderBottom:`1px solid ${e.palette.divider}`,borderRight:`1px solid ${e.palette.divider}`}})),et=b(({programId:e,programName:r,check:a,entityRefs:n,results:l,entityRoute:o})=>{const i=le(),s=P(()=>J(l.filter(({result:d})=>d!==N.NotApplicable),"result"),[l]),c=new Map(l.map(d=>[d.entityRef,d.result]));return t.createElement("tr",{"data-testid":"track-check-row"},t.createElement("th",{scope:"row",className:i.checkNameCell,"aria-label":`${a.name} check for ${r} track`},t.createElement("div",{className:i.checkNameContent},t.createElement(v,{className:i.checkNameTypography,variant:"subtitle2",component:"p"},a.name),t.createElement(te,{className:i.checkIndicator,progress:s}))),n.map((d,u)=>t.createElement(re,{key:u,programId:e,check:a,entityRef:d,result:typeof d=="string"?c.get(d):void 0,entityRoute:o})))}),tt=({name:e,progress:r})=>{const a=le();return t.createElement("div",{className:a.checkNameCell,"aria-label":`${e} check`},t.createElement("div",{className:`${a.checkNameContent} ${a.checkNameCellVirtualized}`},t.createElement(v,{variant:"subtitle2",component:"p",className:a.checkNameTypography},e),t.createElement(te,{className:a.checkIndicator,progress:r})))},rt=f(e=>({virtualized:{borderRight:`1px solid ${e.palette.divider}`,height:`${R.programTitle}px`,display:"flex",justifyContent:"center",alignItems:"center"}})),at=b(({entityRef:e,highestLevels:r})=>{const a=r.find(n=>n.entityRef===e);return t.createElement(t.Fragment,null,a!=null&&a.badge?t.createElement(_,{badge:a.badge}):t.createElement(Q,null))}),nt=({highestLevel:e})=>{const r=rt();if(!(e!=null&&e.badge))return t.createElement("div",{className:r.virtualized},"\xA0");const a=e.name!==ne;return t.createElement("div",{className:r.virtualized},a?t.createElement(_,{badge:e.badge}):t.createElement(Q,null))},oe=f(e=>({programNameCell:{padding:0,position:"sticky",backgroundColor:e.palette.background.paper},programNameContent:{padding:e.spacing(2)},programNameTypography:{overflow:"hidden",textOverflow:"ellipsis"},badgeCellContent:{display:"flex",justifyContent:"center",alignItems:"center"},programNameCellVirtualized:{borderRight:`1px solid ${e.palette.divider}`}})),lt=b(({program:e,entityRefs:r,highestLevels:a})=>{const n=oe();return t.createElement("tr",{"data-testid":"track-title-row"},t.createElement("th",{scope:"row",className:n.programNameCell},t.createElement("div",{className:n.programNameContent},t.createElement(v,{className:n.programNameTypography,variant:"h5",component:"p"},e.name))),r.map((l,o)=>typeof l!="string"?t.createElement("td",{key:o,"aria-hidden":!0}):t.createElement("td",{key:o,"data-testid":"track-certification-cell"},t.createElement("div",{className:n.badgeCellContent},t.createElement(at,{entityRef:l,highestLevels:a})))))}),ot=b(({name:e})=>{const r=oe();return t.createElement("div",{className:`${r.programNameCell} ${r.programNameCellVirtualized}`},t.createElement("div",{className:r.programNameContent},t.createElement(v,{className:r.programNameTypography,variant:"h5",component:"p"},e)))}),G=f(e=>{const r=e.palette.type==="dark"?e.palette.grey[700]:e.palette.grey[100];return{root:{color:M(e.palette.getContrastText(r),.8),backgroundColor:r},levelContent:{padding:`${e.spacing(.5)}px ${e.spacing(2)}px`,backgroundColor:r},levelTypography:{overflow:"hidden",textOverflow:"ellipsis"},levelHeaderCell:{padding:`${e.spacing(.5)}px ${e.spacing(2)}px`,borderRight:`1px solid ${e.palette.divider}`,height:`${R.levelTitle}px`}}}),it=b(({level:e,entityRefs:r,programName:a})=>{const n=G();return t.createElement("tr",{className:n.root,"data-testid":"track-level-row"},t.createElement("th",{scope:"row",className:n.root},t.createElement("div",{className:n.levelContent},t.createElement(v,{className:n.levelTypography,variant:"subtitle2",component:"p","aria-label":`${e.name} for ${a} track`},e.name))),r.map((l,o)=>t.createElement("td",{key:o,className:n.root,"aria-hidden":!0})))}),st=({name:e})=>{const r=G();return t.createElement("div",{className:`${r.levelHeaderCell} ${r.root}`,"aria-label":`${e}`},t.createElement(v,{variant:"subtitle2",component:"p",className:r.levelTypography},e))},ct=()=>{const e=G();return t.createElement("div",{className:`${e.levelHeaderCell} ${e.root}`},"\xA0")},dt=({program:e,highestLevels:r,levels:a,entityRefs:n,entityRoute:l})=>t.createElement("tbody",null,t.createElement(lt,{program:e,entityRefs:n,highestLevels:r}),a.map((o,i)=>t.createElement(ue,{key:i},t.createElement(it,{entityRefs:n,level:o,programName:e.name}),o.checks.map(({check:s,results:c},d)=>t.createElement(et,{key:d,check:s,programId:e.id,programName:e.name,entityRefs:n,results:c,entityRoute:l}))))),ie=f(e=>({root:{position:"sticky",bottom:"-1px",backgroundColor:e.palette.background.default,boxShadow:`0 -1px ${e.palette.divider}`,"& td$cell, & th$cell":{border:0,padding:e.spacing(1)},"& td$cell":{backgroundColor:e.palette.background.default}},row:{boxShadow:`1px 0 ${e.palette.background.default}, -1px 0 ${e.palette.background.default}`},cell:{verticalAlign:"top"},cellInner:{textOrientation:"mixed",writingMode:"vertical-lr",transform:"rotate(-20deg)",transformOrigin:`100% ${e.spacing(1)}px`,wordBreak:"keep-all",fontWeight:"bold",overflow:"hidden",textOverflow:"ellipsis",maxHeight:"max(15vh, 175px)"}})),pt=({entityRefs:e})=>{const r=O(B),a=ie();return t.createElement("tfoot",{className:a.root,"data-testid":"results-table-footer"},t.createElement("tr",{className:a.row},t.createElement("td",{className:a.cell}),e.map((n,l)=>{if(typeof n!="string")return t.createElement("th",{key:l,className:a.cell,"aria-hidden":!0});const o=w(n);return t.createElement("th",{scope:"col",key:l,className:a.cell},t.createElement("div",{className:a.cellInner},t.createElement(S,{to:r(o)},x(o,{defaultKind:o.kind}))))})))},mt=({entityRef:e})=>{const r=O(B),a=ie(),n=e?w(e):void 0,l=n?t.createElement(S,{to:r(n)},x(n,{defaultKind:n.kind})):t.createElement(t.Fragment,null);return t.createElement("div",{className:a.cell},t.createElement("div",{className:a.cellInner},l))},ut=f(e=>({table:{backgroundColor:e.palette.background.paper,borderCollapse:"collapse",whiteSpace:"nowrap","& th, & td":{border:`1px solid ${e.palette.divider}`,borderCollapse:"collapse"},paddingBottom:e.spacing(2)},programTitle:{padding:e.spacing(2)},checkResult:{padding:e.spacing(1.5)},title:{padding:`${e.spacing(1)}px ${e.spacing(2)}px`},header:{backgroundColor:e.palette.type==="dark"?e.palette.grey[700]:e.palette.grey[100]}})),se=()=>{const e=ut(),r=new Array(25).fill(void 0),a=new Array(5).fill(void 0),n=new Array(3).fill(void 0);return t.createElement("table",{className:e.table},t.createElement("tbody",null,t.createElement("tr",null,t.createElement("td",{className:e.programTitle},t.createElement(F,{width:180,height:40})),r.map((l,o)=>t.createElement("td",{key:o}))),n.map((l,o)=>t.createElement(t.Fragment,{key:o},t.createElement("tr",{className:e.header},t.createElement("td",{className:e.title},t.createElement(F,{width:180})),r.map((i,s)=>t.createElement("td",{key:s}))),a.map((i,s)=>t.createElement("tr",{key:s},t.createElement("td",{className:e.title},t.createElement(F,{width:240})),r.map((c,d)=>t.createElement("td",{key:d,className:e.checkResult},t.createElement(F,{width:18,height:18,variant:"rect"})))))))))},gt=f(e=>({root:{width:"100%"},table:{overflow:"auto",backgroundColor:e.palette.background.paper,borderCollapse:"collapse",whiteSpace:"nowrap",textAlign:"left","& th, & td":{border:`1px solid ${e.palette.divider}`,borderCollapse:"collapse"},"& th:first-of-type":{position:"sticky",left:0,zIndex:1,maxWidth:"60ch"},"& tfoot":{bottom:0,zIndex:1e3},"& tbody td:first-of-type":{border:`1px solid ${e.palette.divider}`,boxShadow:`1px 0 ${e.palette.background.default}, -1px 0 ${e.palette.background.default}`}}})),ht=b(e=>{const{setError:r,kind:a,type:n,ownerEntityRef:l}=e,o=gt(),i=O(B),{data:s,isLoading:c,isError:d}=X(l,{kind:a,type:n});if(k(()=>{r==null||r(d?new Error("Error loading track overview"):void 0)},[d,r]),c)return t.createElement(se,null);if(!s||!l)return null;const{programs:u,entityRefs:p}=s;if(!c&&!u.length)return t.createElement(xe,{missing:"data",title:"Missing tracks",description:t.createElement(t.Fragment,null,"Looks like the group"," ",x(w(l),{defaultKind:"Group"})," ","doesn't own any ",n!=null?n:a," components that have Soundcheck tracks set up.",t.createElement("br",null),t.createElement("br",null),"If you're an administrator, you can learn more about configuring and filtering tracks in the"," ",t.createElement(S,{to:"https://www.npmjs.com/package/@spotify/backstage-plugin-soundcheck-backend#entity-filter"},"docs"),".")});if(d)return null;const m=p.length>=25?p:[...p,...Array.from({length:25-p.length},()=>{})];return t.createElement("div",{className:o.root},t.createElement("table",{className:o.table,"aria-label":"Check results"},u.map(({program:g,levels:y,highestLevels:h},T)=>t.createElement(dt,{key:T,program:g,entityRefs:m,levels:y,highestLevels:h,entityRoute:i})),t.createElement(pt,{entityRefs:m})))}),ft=e=>t.createElement(ot,{name:e}),yt=e=>({type:"ProgramHeader",render:()=>ft(e)}),vt=e=>e?t.createElement(st,{name:e}):t.createElement(ct,null),ce=e=>({type:"LevelHeader",render:()=>vt(e)}),kt=(e,r)=>t.createElement(tt,{name:e,progress:r}),Et=(e,r)=>({type:"CheckTitle",render:()=>kt(e,r)}),bt=(e,r,a,n,l)=>t.createElement(re,{check:r,entityRef:a,entityRoute:l,programId:e,result:n,isVirtualized:!0}),Ct=(e,r,a,n,l)=>({type:"CheckResult",render:()=>bt(e,r,a,n,l)}),wt=e=>t.createElement(mt,{entityRef:e}),de=e=>({type:"EntityHeader",render:()=>wt(e)}),Nt=e=>t.createElement(nt,{highestLevel:e}),Rt=e=>({type:"LevelBadge",render:()=>Nt(e)}),$t=e=>r=>{const a=e[r.rowIndex].cells[r.columnIndex];return a?t.createElement("div",{style:r.style},a.render()):t.createElement("div",{style:r.style})},xt=(e,r,a)=>{var n;const l=[];for(const{program:i,levels:s,highestLevels:c}of e){l.push({height:R.programTitle,cells:[yt(i.name),...r.map(d=>{const u=d?c.find(p=>p.entityRef===d)||Ze(d):void 0;return Rt(u)})]});for(const d of s){l.push({height:R.levelTitle,cells:[ce(d.name),...r.map(u=>ce(""))]});for(const{check:u,results:p}of d.checks)l.push({height:R.check,cells:[Et(u.name,J(p.filter(({result:m})=>m!==N.NotApplicable),"result")),...r.map(m=>{var g,y;return Ct(i.id,u,m,(y=(g=p.find(h=>h.entityRef===m))==null?void 0:g.result)!=null?y:N.NotApplicable,a)})]})}}const o=Xe(r!=null?r:[]);return l.push({height:Ye((n=o.length)!=null?n:1),cells:[de(""),...r.map(i=>de(i||""))]}),l},Tt=f(e=>({table:{backgroundColor:e.palette.background.paper,borderCollapse:"collapse",whiteSpace:"nowrap",textAlign:"left",overflow:"auto"}})),Lt=e=>{const{setError:r,kind:a,type:n,ownerEntityRef:l}=e,o=Tt(),i=O(B),{data:s,isLoading:c,isError:d}=X(l,{kind:a,type:n});if(k(()=>{r==null||r(d?new Error("Error loading program overview"):void 0)},[d,r]),c)return t.createElement(se,null);if(!s||!l)return null;const{programs:u,entityRefs:p}=s,m=p.length>=25?p:[...p,...Array.from({length:25-p.length},()=>{})],g=xt(u,m,i),y=$t(g);return t.createElement(C,{"aria-label":`Check results for ${n!=null?n:a}`,key:`${a}|${n!=null?n:""}`,item:!0,xs:12},t.createElement(Le,{className:o.table,columnCount:m.length+1,columnWidth:h=>h===0?z.programTitle:z.checkResult,rowCount:g.length,rowHeight:h=>g[h].height,height:qe(g),width:Je(m.length)},y))},It=({facets:e,ownerEntityRef:r,kind:a,type:n,setError:l})=>{const o=P(()=>{const i=new Map;return e.types.forEach(({kind:s,type:c})=>{const d=`${s}|${c!=null?c:""}`;i.set(d,t.createElement(Lt,{key:d,ownerEntityRef:r,kind:s,type:c,setError:l}))}),i},[e,r,l]);return t.createElement("div",null,o.get(`${a}|${n!=null?n:""}`))},Pt=f(()=>({scrollContainer:{overflow:"auto"}})),Ot=({facets:e,ownerEntityRef:r,hasError:a,kind:n,type:l,setError:o,useVirtualizedResultsTable:i})=>{var s,c,d;const u=Pt();return a?t.createElement(we,{severity:"error",title:a.message}):e&&((c=(s=e.types)==null?void 0:s.length)!=null?c:0)>0?(d=e.types)!=null&&d.find(p=>p.count>0)?t.createElement("div",{className:u.scrollContainer},i?t.createElement(It,{facets:e,kind:n,type:l,setError:o,ownerEntityRef:r,hasError:a}):t.createElement(ht,{ownerEntityRef:r,kind:n,type:l,setError:o})):t.createElement(Ne,{description:t.createElement(t.Fragment,null,"Looks like the group"," ",x(w(r),{defaultKind:"Group"})," ","doesn't own any entities that have any applicable tracks configured.",t.createElement("br",null),t.createElement("br",null),"Please select another group from the dropdown in the corner of the header.")}):t.createElement(Re,{ownerEntityRef:r})},At=f(()=>({tableContainer:{padding:0,backgroundColor:"transparent"}})),Bt=({groupSelectorError:e,searchParams:r,setSearchParams:a})=>{var n;const{group:l,kind:o,type:i}=r,[s,c]=I(void 0),[d,u]=I(void 0);k(()=>{((s==null?void 0:s.kind)!==o||(s==null?void 0:s.type)!==i)&&c({kind:o,type:i})},[o,i,s]);const{data:p,isLoading:m}=Pe(l),g=(n=E(Ee).getOptionalBoolean("soundcheck.virtualizeOverviewPage"))!=null?n:!1,y=d||e,h=($,L)=>{$&&(c({kind:$,type:L}),L?a({...r,kind:$,type:L}):(r!=null&&r.hasOwnProperty("type")&&delete r.type,a({...r,kind:$})))},T=At();return t.createElement(C,{container:!0,spacing:0},t.createElement(C,{item:!0,xs:12},m?t.createElement(We,null):t.createElement(Ve,{unfilteredFacets:p,kind:s==null?void 0:s.kind,type:s==null?void 0:s.type,onChange:h})),t.createElement(C,{item:!0,xs:12,className:T.tableContainer},!m&&t.createElement(Ot,{facets:p,kind:s==null?void 0:s.kind,type:s==null?void 0:s.type,setError:u,hasError:y,ownerEntityRef:l,useVirtualizedResultsTable:g})))};export{Se as G,Bt as O,ze as U,Y as a,Fe as b,Ae as u};
|
|
2
|
+
//# sourceMappingURL=OverviewPageContent-cee8c2bb.esm.js.map
|
package/dist/esm/{RefetchingIndicator-026bd666.esm.js → RefetchingIndicator-50e5cc94.esm.js}
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import t,{useState as n}from"react";import{makeStyles as a,LinearProgress as m}from"@material-ui/core";import s from"react-use/lib/useDebounce";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import{useIsFetching as c}from"@tanstack/react-query";import{F as d}from"./index-
|
|
2
|
-
//# sourceMappingURL=RefetchingIndicator-
|
|
1
|
+
import t,{useState as n}from"react";import{makeStyles as a,LinearProgress as m}from"@material-ui/core";import s from"react-use/lib/useDebounce";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import{useIsFetching as c}from"@tanstack/react-query";import{F as d}from"./index-094c5781.esm.js";import"@backstage/plugin-catalog-react";import"react-router-dom";const p=a(e=>({indicator:{position:"absolute",width:"100%",zIndex:e.zIndex.speedDial}})),l=()=>{const e=c(),i=p(),[r,o]=n(!!e);return s(()=>{o(!!e)},250,[e]),r?t.createElement(d,null,t.createElement("div",{className:i.indicator},t.createElement(m,{variant:"indeterminate","data-testid":"refetching-indicator"}))):null};export{l as R};
|
|
2
|
+
//# sourceMappingURL=RefetchingIndicator-50e5cc94.esm.js.map
|
|
@@ -302,5 +302,5 @@ ${ut}`,bt=s`
|
|
|
302
302
|
}
|
|
303
303
|
}
|
|
304
304
|
${ie}
|
|
305
|
-
${ht}`,Dt=(e,t,r)=>e();function Ft(e,t=Dt){return{createCheck(r,n){return t(i=>e.request(gt,r,{...n,...i}),"createCheck","mutation")},createProgram(r,n){return t(i=>e.request(ft,r,{...n,...i}),"createProgram","mutation")},deleteChecker(r,n){return t(i=>e.request(kt,r,{...n,...i}),"deleteChecker","mutation")},deleteProgram(r,n){return t(i=>e.request(yt,r,{...n,...i}),"deleteProgram","mutation")},updateCheck(r,n){return t(i=>e.request(vt,r,{...n,...i}),"updateCheck","mutation")},updateProgram(r,n){return t(i=>e.request(Ct,r,{...n,...i}),"updateProgram","mutation")},getAllCertifications(r,n){return t(i=>e.request(Et,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(Rt,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(St,r,{...n,...i}),"getCheckers","query")},getFacetsForOwner(r,n){return t(i=>e.request($t,r,{...n,...i}),"getFacetsForOwner","query")},getCollectors(r,n){return t(i=>e.request(Pt,r,{...n,...i}),"getCollectors","query")},getFactSchemas(r,n){return t(i=>e.request(Nt,r,{...n,...i}),"getFactSchemas","query")},getProgramOverviewForOwner(r,n){return t(i=>e.request(It,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)),R=(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)},M=(e,t,r,n)=>(oe(e,t,"write to private field"),n?n.call(e,r):t.set(e,r),r),D,F,m,z,d;const L=Fe({id:"plugin.soundcheck"}),Lt=e=>"response"in e&&"errors"in e.response,At=e=>"response"in e&&"message"in e.response;class xt{constructor(t){R(this,D,void 0),R(this,F,void 0),R(this,m,void 0),R(this,z,n=>{var i,c,l;return Lt(n)?(l=(c=(i=n.response)==null?void 0:i.errors)==null?void 0:c[0].message)!=null?l:`${n}`:At(n)?n.response.message:`${n}`}),R(this,d,async n=>{try{return await n()}catch(i){throw new Error(`Error from Soundcheck backend: ${o(this,z).call(this,i)}`)}}),M(this,D,t.fetchApi),M(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)}});M(this,m,Ft(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})}}D=new WeakMap,F=new WeakMap,m=new WeakMap,z=new WeakMap,d=new WeakMap;const A=S({id:"soundcheck-entity"}),Ot=S({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"}),qt=S({id:"soundcheck-overview"}),x=S({id:"soundcheck"});C({id:"soundcheck-checks",parent:x,path:"/checks"}),C({id:"soundcheck-tracks",parent:x,path:"/tracks"}),C({id:"soundcheck-track-details",parent:x,path:"/tracks/:trackId"});const y=Le({id:"soundcheck",apis:[Ae({api:L,deps:{discoveryApi:xe,fetchApi:Oe},factory:e=>new xt(e)})],routes:{entityContent:A}}),Tt=y.provide($({name:"EntitySoundcheckContent",component:()=>import("./EntitySoundcheckContent-b20f0ec8.esm.js").then(e=>e.EntitySoundcheckContent),mountPoint:A})),Bt=y.provide(qe({name:"EntitySoundcheckCard",component:{lazy:()=>import("./index-95047e64.esm.js").then(e=>e.EntitySoundcheckCard)}})),Mt=y.provide($({name:"GroupSoundcheckContent",component:()=>import("./index-5ffaa13b.esm.js").then(e=>e.FixedGroupOverviewPage),mountPoint:Ot})),zt=y.provide($({name:"SoundcheckOverviewPage",component:()=>import("./index-5ffaa13b.esm.js").then(e=>e.OverviewPage),mountPoint:qt})),Gt=y.provide($({name:"SoundcheckRoutingPage",component:()=>import("./index-e398f5c6.esm.js").then(e=>e.RoutingPage),mountPoint:x})),Ut=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)}}})),Wt=e=>{const t=B(Te),r=Ut(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))(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 Ht=p(e=>({root:{padding:e.spacing(3)},icon:{display:"none"},message:{padding:0},type:{fontWeight:700,lineHeight:1.75}})),O=e=>{const{type:t,...r}=Ht();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({}),Qt=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(O,{severity:t.severity,title:t.title,onClose:i},t.message),e.children)},jt=()=>K(pe),Vt=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({}),Kt=e=>{const t=Vt(),[r,n]=P(!1),[i,c]=P(),l=Me(),h=E(({title:b,message:Ne,error:Ie})=>(c({title:b,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(J,{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(X,{onClick:k,variant:"contained","aria-label":"cancel"},"Cancel"),a.createElement(X,{color:"primary",onClick:v,variant:"contained","aria-label":"confirm"},i.error?"Ok":"Confirm")))))},_t=()=>K(he),ge=24,Jt=11,G=e=>e==="small"?1:2,Xt=p({root:{position:"relative",display:"inline-flex",alignItems:"center",justifyContent:"center",borderRadius:"50%",borderWidth:"2px",fontWeight:700,width:({size:e})=>`${ge*G(e)}px`,height:({size:e})=>`${ge*G(e)}px`,fontSize:({size:e})=>`${Jt*G(e)}px`}}),fe=({className:e,label:t,size:r="small"})=>{const n=Xt({size:r});return a.createElement("span",{className:I(e,n.root),role:"img","aria-label":`${t} badge`},t)},Yt=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=Yt({color:t.options.color,size:r});return a.createElement(fe,{className:I(e,n.root),size:r,label:`L${t.options.level}`})},Zt=p({root:{borderColor:"currentColor",borderStyle:"dashed"}}),ke=({className:e,size:t="small"})=>{const r=Zt();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 er({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(er,{description:n,documentationUrl:i})))},q=({children:e})=>{const[t,r]=P(!1);return ze(()=>{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:w(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:w(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:w(e.palette.getContrastText(t),.8),fontSize:e.typography.subtitle2.fontSize,marginTop:e.spacing(1)}}}),tr=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)},rr=()=>{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))))},ar=p(e=>({root:{display:"inline-flex",alignItems:"center",gap:e.spacing(1)}})),Ce=({timestamp:e,description:t})=>{const r=ar(),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))},nr=e=>({[g.Passed]:"Check passed",[g.NotReported]:"Check not reported",[g.Failed]:"Check failed",[g.NotApplicable]:"Check not applicable"})[e],ir=N(e=>({root:{color:e.palette.success.main}}))(nt),or=N(e=>({root:{color:e.palette.error.main}}))(it),cr=N(e=>({root:{color:e.palette.info.main}}))(ct),sr=N(e=>({root:{color:e.palette.text.disabled}}))(ot),Ee=({result:e,className:t})=>{const r={className:t,"aria-label":nr(e),"aria-hidden":!1};return e===g.Passed?a.createElement(ir,{...r}):e===g.NotReported?a.createElement(cr,{...r}):e===g.Failed?a.createElement(or,{...r}):e===g.NotApplicable?a.createElement(sr,{...r}):null},we=p(e=>({root:{display:"grid",width:"100%",gridTemplateColumns:"auto 1fr auto",gridColumnGap:e.spacing(1),padding:e.spacing(1),alignItems:"center","&.selected":{backgroundColor:w(e.palette.primary[e.palette.type],.2)},"&:hover, &:active, &:focus":{backgroundColor:w(e.palette.primary[e.palette.type],.3)}}})),lr=({className:e,href:t,children:r})=>t?a.createElement(rt,{to:t,className:e},r):a.createElement("div",{className:e},r),mr=({result:e,name:t,timestamp:r,selected:n=!1,href:i})=>{const c=we(),l=I(c.root,{selected:n});return a.createElement(lr,{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=we();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})))},dr=()=>{const e=Re();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(rr,null),a.createElement("ul",{className:e.checks},a.createElement(Q,null),a.createElement(Q,null),a.createElement(Q,null)))))},ur=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"}}})),pr=({checks:e,trackId:t,checkId:r})=>{const n=ur(),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(mr,{...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.")},hr=({level:e,checkId:t,trackId:r})=>{var n;return a.createElement(a.Fragment,null,a.createElement(tr,{badge:e.badge,title:e.name,description:e.description}),a.createElement(pr,{checks:(n=e.checks)!=null?n:[],trackId:r,checkId:t}))},Re=p(e=>({root:{borderRight:`1px solid ${e.palette.divider}`},checks:{padding:0,margin:0,flex:1,listStyle:"none"}})),gr=({trackId:e,checkId:t})=>{var r,n;const i=Re(),{entity:c}=te(),{data:l,isLoading:h,isError:v}=me(c,e);return v?a.createElement("div",{className:i.root},a.createElement(J,{padding:2},a.createElement(O,{severity:"error",title:"Error loading certification"}))):h||!e?a.createElement(dr,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(hr,{key:k.ordinal,level:k,checkId:t,trackId:e}))):null},fr=()=>a.createElement(a.Fragment,null,a.createElement(H,{hideDescription:!0}),a.createElement(H,{hideDescription:!0})),be=({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})),kr=({ownerEntityRef:e})=>e?a.createElement(ee,{missing:"data",title:"Missing entities",description:a.createElement(a.Fragment,null,"Looks like the group"," ",Xe(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,Se="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(Je,{title:t},a.createElement("div",{className:r.infoCard},a.createElement(Ze,{inline:!0,backend:Se,invalidLicenseMessage:$e}),e))},yr=({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(O,{severity:"error",title:"Error loading certifications"})):c||!n?a.createElement(T,{title:e},a.createElement(fr,null)):n.length===0?a.createElement(T,{title:e},a.createElement(be,{className:r.emptyState})):a.createElement(T,{title:e},n.map((h,v)=>{var k,b;return a.createElement(Ge,{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:(b=h.highestLevel)==null?void 0:b.name}),a.createElement(Z,{to:l({trackId:h.program.id})},"View Details")),v<n.length-1?a.createElement(_e,null):null)}))};export{O as A,ne as B,gr as C,Tt as E,q as F,Mt as G,U as L,ue as M,ke as N,de as Q,g as R,Wt as S,Ce as a,le as b,ce as c,be as d,Se as e,se as f,yr as g,Ee as h,$e as i,kr as j,jt as k,_t as l,Qt as m,y as n,Bt as o,zt as p,Gt as q,L as s,me as u,Kt as w};
|
|
306
|
-
//# sourceMappingURL=index-
|
|
305
|
+
${ht}`,Dt=(e,t,r)=>e();function Ft(e,t=Dt){return{createCheck(r,n){return t(i=>e.request(gt,r,{...n,...i}),"createCheck","mutation")},createProgram(r,n){return t(i=>e.request(ft,r,{...n,...i}),"createProgram","mutation")},deleteChecker(r,n){return t(i=>e.request(kt,r,{...n,...i}),"deleteChecker","mutation")},deleteProgram(r,n){return t(i=>e.request(yt,r,{...n,...i}),"deleteProgram","mutation")},updateCheck(r,n){return t(i=>e.request(vt,r,{...n,...i}),"updateCheck","mutation")},updateProgram(r,n){return t(i=>e.request(Ct,r,{...n,...i}),"updateProgram","mutation")},getAllCertifications(r,n){return t(i=>e.request(Et,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(Rt,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(St,r,{...n,...i}),"getCheckers","query")},getFacetsForOwner(r,n){return t(i=>e.request($t,r,{...n,...i}),"getFacetsForOwner","query")},getCollectors(r,n){return t(i=>e.request(Pt,r,{...n,...i}),"getCollectors","query")},getFactSchemas(r,n){return t(i=>e.request(Nt,r,{...n,...i}),"getFactSchemas","query")},getProgramOverviewForOwner(r,n){return t(i=>e.request(It,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)),R=(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)},M=(e,t,r,n)=>(oe(e,t,"write to private field"),n?n.call(e,r):t.set(e,r),r),D,F,m,z,d;const L=Fe({id:"plugin.soundcheck"}),Lt=e=>"response"in e&&"errors"in e.response,At=e=>"response"in e&&"message"in e.response;class xt{constructor(t){R(this,D,void 0),R(this,F,void 0),R(this,m,void 0),R(this,z,n=>{var i,c,l;return Lt(n)?(l=(c=(i=n.response)==null?void 0:i.errors)==null?void 0:c[0].message)!=null?l:`${n}`:At(n)?n.response.message:`${n}`}),R(this,d,async n=>{try{return await n()}catch(i){throw new Error(`Error from Soundcheck backend: ${o(this,z).call(this,i)}`)}}),M(this,D,t.fetchApi),M(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)}});M(this,m,Ft(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})}}D=new WeakMap,F=new WeakMap,m=new WeakMap,z=new WeakMap,d=new WeakMap;const A=S({id:"soundcheck-entity"}),Ot=S({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"}),qt=S({id:"soundcheck-overview"}),x=S({id:"soundcheck"});C({id:"soundcheck-checks",parent:x,path:"/checks"}),C({id:"soundcheck-tracks",parent:x,path:"/tracks"}),C({id:"soundcheck-track-details",parent:x,path:"/tracks/:trackId"});const y=Le({id:"soundcheck",apis:[Ae({api:L,deps:{discoveryApi:xe,fetchApi:Oe},factory:e=>new xt(e)})],routes:{entityContent:A}}),Tt=y.provide($({name:"EntitySoundcheckContent",component:()=>import("./EntitySoundcheckContent-ac967308.esm.js").then(e=>e.EntitySoundcheckContent),mountPoint:A})),Bt=y.provide(qe({name:"EntitySoundcheckCard",component:{lazy:()=>import("./index-39051bf4.esm.js").then(e=>e.EntitySoundcheckCard)}})),Mt=y.provide($({name:"GroupSoundcheckContent",component:()=>import("./index-d27c0b4b.esm.js").then(e=>e.FixedGroupOverviewPage),mountPoint:Ot})),zt=y.provide($({name:"SoundcheckOverviewPage",component:()=>import("./index-d27c0b4b.esm.js").then(e=>e.OverviewPage),mountPoint:qt})),Gt=y.provide($({name:"SoundcheckRoutingPage",component:()=>import("./index-ee6cc5f1.esm.js").then(e=>e.RoutingPage),mountPoint:x})),Ut=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)}}})),Wt=e=>{const t=B(Te),r=Ut(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))(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 Ht=p(e=>({root:{padding:e.spacing(3)},icon:{display:"none"},message:{padding:0},type:{fontWeight:700,lineHeight:1.75}})),O=e=>{const{type:t,...r}=Ht();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({}),Qt=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(O,{severity:t.severity,title:t.title,onClose:i},t.message),e.children)},jt=()=>K(pe),Vt=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({}),Kt=e=>{const t=Vt(),[r,n]=P(!1),[i,c]=P(),l=Me(),h=E(({title:b,message:Ne,error:Ie})=>(c({title:b,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(J,{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(X,{onClick:k,variant:"contained","aria-label":"cancel"},"Cancel"),a.createElement(X,{color:"primary",onClick:v,variant:"contained","aria-label":"confirm"},i.error?"Ok":"Confirm")))))},_t=()=>K(he),ge=24,Jt=11,G=e=>e==="small"?1:2,Xt=p({root:{position:"relative",display:"inline-flex",alignItems:"center",justifyContent:"center",borderRadius:"50%",borderWidth:"2px",fontWeight:700,width:({size:e})=>`${ge*G(e)}px`,height:({size:e})=>`${ge*G(e)}px`,fontSize:({size:e})=>`${Jt*G(e)}px`}}),fe=({className:e,label:t,size:r="small"})=>{const n=Xt({size:r});return a.createElement("span",{className:I(e,n.root),role:"img","aria-label":`${t} badge`},t)},Yt=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=Yt({color:t.options.color,size:r});return a.createElement(fe,{className:I(e,n.root),size:r,label:`L${t.options.level}`})},Zt=p({root:{borderColor:"currentColor",borderStyle:"dashed"}}),ke=({className:e,size:t="small"})=>{const r=Zt();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 er({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(er,{description:n,documentationUrl:i})))},q=({children:e})=>{const[t,r]=P(!1);return ze(()=>{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:w(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:w(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:w(e.palette.getContrastText(t),.8),fontSize:e.typography.subtitle2.fontSize,marginTop:e.spacing(1)}}}),tr=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)},rr=()=>{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))))},ar=p(e=>({root:{display:"inline-flex",alignItems:"center",gap:e.spacing(1)}})),Ce=({timestamp:e,description:t})=>{const r=ar(),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))},nr=e=>({[g.Passed]:"Check passed",[g.NotReported]:"Check not reported",[g.Failed]:"Check failed",[g.NotApplicable]:"Check not applicable"})[e],ir=N(e=>({root:{color:e.palette.success.main}}))(nt),or=N(e=>({root:{color:e.palette.error.main}}))(it),cr=N(e=>({root:{color:e.palette.info.main}}))(ct),sr=N(e=>({root:{color:e.palette.text.disabled}}))(ot),Ee=({result:e,className:t})=>{const r={className:t,"aria-label":nr(e),"aria-hidden":!1};return e===g.Passed?a.createElement(ir,{...r}):e===g.NotReported?a.createElement(cr,{...r}):e===g.Failed?a.createElement(or,{...r}):e===g.NotApplicable?a.createElement(sr,{...r}):null},we=p(e=>({root:{display:"grid",width:"100%",gridTemplateColumns:"auto 1fr auto",gridColumnGap:e.spacing(1),padding:e.spacing(1),alignItems:"center","&.selected":{backgroundColor:w(e.palette.primary[e.palette.type],.2)},"&:hover, &:active, &:focus":{backgroundColor:w(e.palette.primary[e.palette.type],.3)}}})),lr=({className:e,href:t,children:r})=>t?a.createElement(rt,{to:t,className:e},r):a.createElement("div",{className:e},r),mr=({result:e,name:t,timestamp:r,selected:n=!1,href:i})=>{const c=we(),l=I(c.root,{selected:n});return a.createElement(lr,{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=we();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})))},dr=()=>{const e=Re();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(rr,null),a.createElement("ul",{className:e.checks},a.createElement(Q,null),a.createElement(Q,null),a.createElement(Q,null)))))},ur=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"}}})),pr=({checks:e,trackId:t,checkId:r})=>{const n=ur(),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(mr,{...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.")},hr=({level:e,checkId:t,trackId:r})=>{var n;return a.createElement(a.Fragment,null,a.createElement(tr,{badge:e.badge,title:e.name,description:e.description}),a.createElement(pr,{checks:(n=e.checks)!=null?n:[],trackId:r,checkId:t}))},Re=p(e=>({root:{borderRight:`1px solid ${e.palette.divider}`},checks:{padding:0,margin:0,flex:1,listStyle:"none"}})),gr=({trackId:e,checkId:t})=>{var r,n;const i=Re(),{entity:c}=te(),{data:l,isLoading:h,isError:v}=me(c,e);return v?a.createElement("div",{className:i.root},a.createElement(J,{padding:2},a.createElement(O,{severity:"error",title:"Error loading certification"}))):h||!e?a.createElement(dr,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(hr,{key:k.ordinal,level:k,checkId:t,trackId:e}))):null},fr=()=>a.createElement(a.Fragment,null,a.createElement(H,{hideDescription:!0}),a.createElement(H,{hideDescription:!0})),be=({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})),kr=({ownerEntityRef:e})=>e?a.createElement(ee,{missing:"data",title:"Missing entities",description:a.createElement(a.Fragment,null,"Looks like the group"," ",Xe(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,Se="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(Je,{title:t},a.createElement("div",{className:r.infoCard},a.createElement(Ze,{inline:!0,backend:Se,invalidLicenseMessage:$e}),e))},yr=({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(O,{severity:"error",title:"Error loading certifications"})):c||!n?a.createElement(T,{title:e},a.createElement(fr,null)):n.length===0?a.createElement(T,{title:e},a.createElement(be,{className:r.emptyState})):a.createElement(T,{title:e},n.map((h,v)=>{var k,b;return a.createElement(Ge,{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:(b=h.highestLevel)==null?void 0:b.name}),a.createElement(Z,{to:l({trackId:h.program.id})},"View Details")),v<n.length-1?a.createElement(_e,null):null)}))};export{O as A,ne as B,gr as C,Tt as E,q as F,Mt as G,U as L,ue as M,ke as N,de as Q,g as R,Wt as S,Ce as a,le as b,ce as c,be as d,Se as e,se as f,yr as g,Ee as h,$e as i,kr as j,jt as k,_t as l,Qt as m,y as n,Bt as o,zt as p,Gt as q,L as s,me as u,Kt as w};
|
|
306
|
+
//# sourceMappingURL=index-094c5781.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import t from"react";import{S as o,g as i}from"./index-
|
|
2
|
-
//# sourceMappingURL=index-
|
|
1
|
+
import t from"react";import{S as o,g as i}from"./index-094c5781.esm.js";import"@backstage/core-plugin-api";import"graphql-request";import"graphql-tag";import"@tanstack/react-query";import"lodash";import"@material-ui/core/styles/makeStyles";import"@material-ui/core";import"@backstage/core-components";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-core";import"@backstage/catalog-model";import"@material-ui/lab";import"react-router-dom";import"classnames";import"@material-ui/icons/Schedule";import"luxon";import"@material-ui/icons/Check";import"@material-ui/icons/Close";import"@material-ui/icons/RemoveCircleOutline";import"@material-ui/icons/HelpOutline";const m=({title:r})=>t.createElement(o,null,t.createElement(i,{title:r}));export{m as EntitySoundcheckCard};
|
|
2
|
+
//# sourceMappingURL=index-39051bf4.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import e,{useState as n}from"react";import{Page as g,Header as f}from"@backstage/core-components";import{SpotifyLicenseBanner as s}from"@spotify/backstage-plugin-core";import{u as h,U as P,G as S,O as c}from"./OverviewPageContent-cee8c2bb.esm.js";import{S as l,w as y,e as p,i as u}from"./index-094c5781.esm.js";import{stringifyEntityRef as k}from"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import{useEntity as w}from"@backstage/plugin-catalog-react";import{makeStyles as C}from"@material-ui/core";import{Routes as L,Route as O}from"react-router-dom";import"@material-ui/lab/Autocomplete";import"react-use/lib/useAsync";import"./RefetchingIndicator-50e5cc94.esm.js";import"react-use/lib/useDebounce";import"lodash";import"@material-ui/lab";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/Close";import"@material-ui/icons/RemoveCircleOutline";import"@material-ui/icons/HelpOutline";const b=C(t=>({overviewContainer:{padding:t.spacing(1,3)}})),G=t=>{const{title:i="Soundcheck"}=t,o=b(),[r,a]=h(),{group:d}=r,[E,v]=n(void 0);return e.createElement(l,null,e.createElement(P,null,e.createElement(y,null,e.createElement(g,{themeId:"website"},e.createElement(s,{backend:p,invalidLicenseMessage:u}),e.createElement(f,{title:i},e.createElement(S,{onChange:m=>{m&&a({...r,group:m})},initialValue:d,setError:v})),e.createElement("div",{className:o.overviewContainer},e.createElement(c,{groupSelectorError:E,searchParams:r,setSearchParams:a}))))))},M=()=>{const{entity:t}=w(),i={group:k(t)},[o,r]=n(i);return e.createElement(l,null,e.createElement(L,null,e.createElement(O,{path:"/*",element:e.createElement(e.Fragment,null,e.createElement(s,{backend:p,invalidLicenseMessage:u,inline:!0}),e.createElement(c,{searchParams:o,setSearchParams:r}))})))};export{M as FixedGroupOverviewPage,G as OverviewPage};
|
|
2
|
+
//# sourceMappingURL=index-d27c0b4b.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import t,{useState as v,useEffect as D,useCallback as G,createContext as $e,useContext as Me,useMemo as j,useReducer as we}from"react";import{useSearchParams as Ve,useLocation as Ft,Routes as $t,Route as Mt}from"react-router-dom";import{MarkdownContent as Vt,Link as Bt,DismissableBanner as Gt,Page as zt,Header as Wt,TabbedLayout as fe}from"@backstage/core-components";import{SpotifyLicenseBanner as qt}from"@spotify/backstage-plugin-core";import{Box as I,Paper as Ne,Grid as u,Button as A,Slide as Kt,Dialog as Ut,AppBar as Ht,Toolbar as jt,Typography as C,IconButton as he,TextField as z,Collapse as _t,makeStyles as k,ButtonGroup as Be,Menu as Ge,MenuItem as ye,FormControl as Qt,InputLabel as Jt,Select as Yt,FormControlLabel as Zt,Checkbox as Xt,Card as Le,ListItemIcon as Y,ListItemText as _,withStyles as ze,CardContent as We,CardHeader as ea,Divider as ta,CardActions as aa,List as be,ListItem as Z,Tooltip as X,InputAdornment as qe,NativeSelect as Se,Chip as Pe,CircularProgress as na}from"@material-ui/core";import{makeStyles as ee,createStyles as Ke}from"@material-ui/core/styles";import{a as ra,b as Ue,u as la,U as oa,G as sa,O as ia}from"./OverviewPageContent-cee8c2bb.esm.js";import He from"@material-ui/icons/Close";import{Controller as Ee,useWatch as je,useForm as ca}from"react-hook-form";import da from"@material-ui/icons/AddCircleOutline";import ma from"@material-ui/icons/ArrowDropDown";import _e from"@material-ui/icons/Delete";import{useApi as R,alertApiRef as pa}from"@backstage/core-plugin-api";import{useQuery as te,useQueryClient as ae,useMutation as ne}from"@tanstack/react-query";import{s as M,Q as F,k as Q,M as re,l as Ce,m as ua,S as ga,w as ha}from"./index-094c5781.esm.js";import{asArray as Ea,parseFactRef as Te,stringifyFactRef as va,soundcheckCheckUpdatePermission as fa,soundcheckCheckDeletePermission as ya,soundcheckCheckCreatePermission as ba,soundcheckTrackUpdatePermission as Ca,soundcheckTrackDeletePermission as ka,soundcheckTrackCreatePermission as xa}from"@spotify/backstage-plugin-soundcheck-common";import{Autocomplete as Qe,Skeleton as Je}from"@material-ui/lab";import wa from"@material-ui/icons/CheckBox";import Na from"@material-ui/icons/CheckBoxOutlineBlank";import La from"@material-ui/icons/ExpandMore";import{catalogApiRef as Sa,EntityRefLink as Ye}from"@backstage/plugin-catalog-react";import"@backstage/catalog-model";import{v4 as Ze}from"uuid";import Pa from"@material-ui/icons/MoreVert";import Xe from"@material-ui/icons/Group";import{usePermission as le}from"@backstage/plugin-permission-react";import Ta from"@material-ui/icons/Search";import{useDrag as Da,useDrop as Ia,DndProvider as Aa}from"react-dnd";import{HTML5Backend as Ra}from"react-dnd-html5-backend";import Oa from"@material-ui/icons/OpenInNew";import Fa from"@material-ui/icons/DoneAllRounded";import $a from"@material-ui/icons/Menu";import et from"@material-ui/icons/DragIndicator";import Ma from"@material-ui/icons/Visibility";import Va from"@material-ui/icons/Add";import Ba from"@material-ui/icons/Remove";import"@material-ui/lab/Autocomplete";import"react-use/lib/useAsync";import"./RefetchingIndicator-50e5cc94.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 Ga(e,n,a){const r=R(M);return te([F.GetAllPrograms,e,n,a],async()=>r.getAllPrograms(e,n,a))}function za(e){const n=R(M);return te([F.GetAllPrograms,e],async()=>n.getAllPrograms([e]))}const Wa="Error Creating Track";function qa(){const e=R(M),n=ae(),{showAlert:a}=Q(),r=async l=>{const o=await e.createProgram(l);if(!o)throw new Error("Failed to create track.");return o};return ne([re.CreateProgram],r,{onSuccess:async()=>{await n.invalidateQueries({queryKey:[F.GetAllPrograms]})},onError:l=>{let o="Failed to create track.";l instanceof Error&&(o=l.message),a({severity:"error",title:Wa,message:o})}})}function tt(e,n,a){const r=R(M);return te([F.GetChecks,e,n,a],async()=>r.getChecks(e,n,a))}const Ka=e=>{const[n,a]=v(void 0),[r,l]=v([[]]),[o,s]=v([!1]);D(()=>{n===void 0&&e!=null&&e.length&&a(e)},[e,n]);const c=G((h,g)=>{l(E=>{const f=[...E];return f[g]=[...f[g],h],f}),a(E=>E==null?void 0:E.filter(f=>f.id!==h.id)),s(E=>{if(E[g]){const f=[...E];return f[g]=!1,f}return E})},[]),d=G((h,g)=>{l(E=>{const f=[...E];return f[g]=f[g].filter(x=>x.id!==h.id),f}),a(E=>[...E!=null?E:[],h])},[]),m=G(()=>{l(h=>[...h,[]]),s(h=>[...h,!1])},[]),p=G(h=>{r.length>1&&l(g=>{const E=[...g],f=E.splice(h,1)[0];return a(x=>[...x!=null?x:[],...f]),E})},[r]),i=G(()=>{const h=r.map(g=>g.length===0);return s(h),!h.some(g=>g)},[r]);return{chips:n,inputChipsList:r,handleDrop:c,handleDelete:d,addInput:m,removeInput:p,inputErrors:o,setInputErrors:s,areInputsValid:i,setInputChipsList:l}},Ua=ee(e=>({box:{zIndex:9,position:"fixed",bottom:"0",width:"100%"},footer:{padding:e.spacing(2)}})),at=({onCancel:e,saveButtonText:n,isLoading:a,onSave:r,disableSave:l})=>{const o=Ua();return t.createElement(I,{className:o.box},t.createElement(Ne,{elevation:3,className:o.footer},t.createElement(u,{container:!0,item:!0,spacing:2,justifyContent:"space-between"},t.createElement(u,{item:!0},t.createElement(A,{variant:"contained",color:"primary",onClick:e},"Cancel")),t.createElement(u,{item:!0},r&&t.createElement(A,{variant:"contained",color:"primary",disabled:a||l,onClick:r?()=>r():void 0},n)))))},nt=$e({selectedProgram:null,setSelectedProgram:()=>{},isLoading:!1,setIsLoading:()=>{},showAddModal:!1,setShowAddModal:()=>{}}),Ha=({children:e})=>{const[n,a]=v(null),[r,l]=v(!1),[o,s]=v(!1);return t.createElement(nt.Provider,{value:{selectedProgram:n,setSelectedProgram:a,isLoading:r,setIsLoading:l,showAddModal:o,setShowAddModal:s}},e)},oe=()=>Me(nt),rt=$e({selectedCheck:null,setSelectedCheck:()=>{},isLoading:!1,setIsLoading:()=>{},showAddModal:!1,setShowAddModal:()=>{},isReadOnly:!1,showReadOnlyModal:()=>{},hideModal:()=>{}}),ja=({children:e})=>{const[n,a]=v(null),[r,l]=v(!1),[o,s]=v(!1),[c,d]=v(!1),m=i=>{l(!0),a(i)},p=()=>{a(null),l(!1),d(!1)};return t.createElement(rt.Provider,{value:{selectedCheck:n,setSelectedCheck:a,isLoading:o,setIsLoading:s,showAddModal:c,setShowAddModal:d,isReadOnly:r,showReadOnlyModal:m,hideModal:p}},e)},W=()=>Me(rt),_a=ee(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}})),Qa=t.forwardRef(function(e,n){return t.createElement(Kt,{direction:"up",ref:n,...e})}),lt=({open:e,handleClose:n,title:a,children:r})=>{const l=_a();return t.createElement(Ut,{fullScreen:!0,open:e,onClose:n,TransitionComponent:Qa},t.createElement(Ht,{className:l.appBar},t.createElement(jt,null,t.createElement(C,{className:l.title},a),t.createElement(he,{edge:"end",color:"inherit",onClick:n,"aria-label":"close",className:l.closeIcon},t.createElement(He,null)))),t.createElement(I,{className:l.content},r))},ve=({name:e,control:n,error:a,label:r,placeholder:l,disabled:o,rules:s,messages:c,helperText:d,multiline:m,minRows:p})=>t.createElement(Ee,{name:e,control:n,defaultValue:"",rules:s,render:({field:i})=>t.createElement(z,{...i,fullWidth:!0,multiline:m,minRows:p,placeholder:l,label:r,disabled:o,variant:"outlined",margin:"normal",error:!!a,helperText:a&&c?c[a.type]:d})}),Ja=ee(()=>({section:{gap:0}})),Ya=({control:e,error:n,isLoading:a,disabled:r})=>{const l=Ja();return t.createElement("div",{className:l.section},t.createElement(ve,{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"}}))},Za=ee(e=>({root:{display:"flex",flexDirection:"column",gap:0},button:{marginLeft:-e.spacing(1)},title:{fontWeight:700,color:e.palette.primary.main}})),ke=({title:e,children:n})=>{const[a,r]=v(!1),l=Za(),o=()=>{r(!a)};return t.createElement("div",{className:l.root},t.createElement(u,{container:!0,alignItems:"center",spacing:0},t.createElement(u,{item:!0},t.createElement(he,{onClick:o,className:l.button},t.createElement(da,null))),t.createElement(u,{item:!0},t.createElement(C,{className:l.title},e))),t.createElement(_t,{in:a},n))},Xa=({control:e,passError:n,failError:a,isLoading:r,disabled:l})=>t.createElement(ke,{title:l?"Pass and fail messages":"Pass and fail messages (optional)"},t.createElement(ve,{name:"passMessage",control:e,error:n,label:"Pass Message",placeholder:"Enter pass message...",disabled:r||l}),t.createElement(ve,{name:"failMessage",control:e,error:a,label:"Fail Message",placeholder:"Enter fail message...",disabled:r||l})),en=({control:e,error:n,isLoading:a,disabled:r})=>t.createElement(ve,{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"}}),tn=k(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"}})),an=({onAddCondition:e,onAddExpression:n})=>{const a=tn(),[r,l]=v(null),o=!!r,s=d=>{l(d.currentTarget)},c=()=>{l(null)};return t.createElement(I,null,t.createElement(Be,{color:"primary"},t.createElement(A,{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(I,{className:a.label},"Add"),t.createElement(I,{className:a.icon},t.createElement(ma,null)))),t.createElement(Ge,{id:"add-menu",anchorEl:r,open:o,onClose:c,classes:{paper:a.menu},MenuListProps:{"aria-labelledby":"add-button"}},t.createElement(ye,{onClick:()=>{e(),c()}},"Add Condition"),t.createElement(ye,{onClick:()=>{n(),c()}},"Add Expression")))},ot=({name:e,control:n,selectLabel:a,options:r,disabled:l})=>t.createElement(Ee,{name:e,control:n,render:({field:o})=>t.createElement(Qt,{variant:"outlined",style:{minWidth:200}},t.createElement(Jt,{id:`${e}-select-label`},a),t.createElement(Yt,{...o,disabled:l,"data-testid":`${e}-select`,labelId:`${e}-select-label`,label:a},r.map(({value:s,label:c})=>t.createElement(ye,{key:s,value:s},c))))});var H=(e=>(e.AllOf="all",e.AnyOf="any",e))(H||{});const nn={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 rn={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"},ln=k(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 on(e){const n=R(M);return te([F.GetCollectors,e],async()=>n.getCollectors(e))}function sn(e,n){const a=R(M);return te([F.GetFactSchema,e,n],()=>a.getFactSchema(e,n),{enabled:!!e&&!!n})}const cn=(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(d=>l[d.id]);return{name:n[s],description:a[s],ordinal:s+1,checks:c}})},dn=e=>e.map(n=>n.checks.map(a=>{var r;return{id:a.id,label:(r=a.name)!=null?r:a.id}})),mn=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}},De={selectedKinds:"kind",selectedTypes:"spec.type",selectedLifecycles:"spec.lifecycle",selectedOwners:"spec.owner",selectedSystems:"spec.system",selectedTags:"metadata.tags"},it=e=>!e||Object.values(e).every(n=>n.length===0)?void 0:{catalog:Object.entries(e).reduce((n,[a,r])=>{const l=De[a];return r.length>0&&(n[l]=r),n},{})},ct=e=>Object.keys(De).reduce((n,a)=>{var r,l;return n[a]=Ea((l=(r=e==null?void 0:e.catalog)==null?void 0:r[De[a]])!=null?l:[]),n},{}),pn=(e,n)=>{const a=e?dn(e.levels):[[]],r=a.flat().map(o=>o.id),l=n.filter(o=>!r.includes(o.id));return{inputChips:a,used:l}},Ie=e=>{var n,a;if(!e)return{};if(e.expressionType){const r={[e.expressionType]:(n=e.conditions)==null?void 0:n.map(l=>({factRef:l.factRef,path:l.path,operator:l.operator,value:l.value}))};return e.expression&&((a=r[e.expressionType])==null||a.push(Ie(e.expression))),r}if(e.expression)return Ie(e.expression);if(e.conditions&&e.conditions.length===1){const r=e.conditions[0];return{factRef:r.factRef,path:r.path,operator:r.operator,value:r.value}}return{}},dt=(e,n=!0)=>{if(!e)return{factRef:"",path:"",operator:"",value:"",conditions:[]};const a=Object.keys(e),r=a.includes("all")||n&&!a.includes("any")?H.AllOf:H.AnyOf;if(a.includes(r)||n){const l=e[r]||[e],o=[];let s=null;l.forEach(d=>{const m=Object.keys(d);m.includes("all")||m.includes("any")?s=dt(d,!1):o.push({factRef:d.factRef,path:d.path,operator:d.operator,value:d.value,conditions:[]})});const c={factRef:"",path:"",operator:"",value:"",expression:void 0,conditions:o,expressionType:r};return s&&(c.expression=s),c}return{factRef:e.factRef,path:e.path,operator:e.operator,value:e.value,expressionType:H.AllOf,conditions:[]}},un=e=>({checkName:e.name||"",description:e.description||"",teamOwner:e.ownerEntityRef||"",supportChannel:e.supportChannel||"",expression:dt(e.rule),passMessage:e.passedMessage||void 0,failMessage:e.failedMessage||void 0,filters:ct(e.filter)}),Ae=(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(...Ae(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(...Ae(o,r))}return a},gn={checkName:"",description:"",teamOwner:"",supportChannel:"",expression:{factRef:"",path:"",operator:"",value:"",expressionType:H.AllOf,conditions:[{factRef:"",path:"",operator:"",value:"",conditions:[]}]},filters:{selectedKinds:[],selectedTypes:[],selectedLifecycles:[],selectedOwners:[],selectedSystems:[],selectedTags:[]}},hn=(e,n)=>{const{data:a}=on(),r=je({control:n,name:`${e}.factRef`}),[l,o]=v(()=>mt(r));D(()=>{o(mt(r))},[r]);const{data:s}=sn(l==null?void 0:l.source,l==null?void 0:l.name),c=j(()=>s?Ae(s.schema):[],[s]),d=j(()=>a==null?void 0:a.flatMap(m=>m.factNames.map(p=>{const i=Te(p,{defaultSource:m.id,defaultScope:"default"});return{label:i.name,value:va(i)}})),[a]);return{pathOptions:c,factRefOptions:d}};function mt(e){if(e)try{return Te(e,{defaultSource:"unknown",defaultScope:"default"})}catch{return null}return null}const pt=({name:e,rules:n,label:a,control:r,options:l,getOptionLabel:o,disabled:s})=>t.createElement(Ee,{name:e,control:r,rules:n,render:({field:c,fieldState:d})=>t.createElement(Qe,{...c,freeSolo:!0,"data-testid":`${e}-autocomplete`,style:{minWidth:250},disabled:s,options:l,getOptionLabel:o,renderInput:m=>t.createElement(z,{...m,variant:"outlined",label:a,error:d.invalid,helperText:d.error?d.error.message:null}),onChange:(m,p)=>c.onChange(p),onInputChange:(m,p)=>c.onChange(p)})}),En=e=>{try{return Te(e),!0}catch{return"Invalid fact reference. [source]:[scope]/[name]."}},vn=({control:e,name:n,handleDelete:a,disabled:r})=>{var l;const o=ln(),s=j(()=>Object.values(st).map(m=>({value:m,label:rn[m]})),[]),{pathOptions:c,factRefOptions:d}=hn(n,e);return t.createElement(I,{className:o.container},t.createElement(I,{className:o.connector}),t.createElement(I,{className:o.innerContainer},t.createElement(I,{className:o.header}),t.createElement(I,{className:o.inputsContainer},t.createElement(pt,{name:`${n}.factRef`,control:e,rules:{required:!0,maxLength:500,validate:En},label:"Fact",options:(l=d==null?void 0:d.map(m=>m.value))!=null?l:[],getOptionLabel:m=>{var p,i;return(i=(p=d==null?void 0:d.find(h=>m===h.value))==null?void 0:p.label)!=null?i:m},disabled:r}),t.createElement(pt,{name:`${n}.path`,label:"Path",control:e,disabled:r,options:c}),t.createElement(ot,{name:`${n}.operator`,control:e,selectLabel:"Operator",options:s,disabled:r}),t.createElement(Ee,{name:`${n}.value`,control:e,defaultValue:"",render:({field:m})=>t.createElement(z,{...m,label:"Value",variant:"outlined",placeholder:"Enter a value",disabled:r})}))),!r&&t.createElement(he,{onClick:a,className:o.deleteButton,"data-test-id":`${n}-delete-button`},t.createElement(_e,{className:o.deleteIcon})))},fn=({conditions:e,control:n,name:a,handleDelete:r,disabled:l,setValue:o})=>t.createElement(t.Fragment,null,e.filter(s=>!s.expressionType).map((s,c)=>t.createElement(u,{item:!0,key:c},t.createElement(vn,{control:n,name:`${a}.conditions[${c}]`,"data-testid":`${a}-condition-input`,handleDelete:()=>r(c),disabled:l,setValue:o})))),yn=({expression:e,control:n,name:a,depth:r,getValues:l,setValue:o,trigger:s,disabled:c})=>e?t.createElement(u,{item:!0},t.createElement(ut,{control:n,name:`${a}.expression`,depth:r+1,getValues:l,setValue:o,trigger:s,disabled:c})):null,bn=k(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)"}})),Cn=({control:e,name:n,getValues:a,disabled:r})=>{const l=bn(),o=`${n}`,s=a(o),[c,d]=v(s||H.AllOf),m=p=>{d(p)};return t.createElement(Ee,{control:e,name:n,render:({field:{onChange:p}})=>t.createElement(Be,{color:"primary"},Object.values(H).map(i=>t.createElement(A,{key:i,className:c===i?`${l.selectedButton} ${l.button}`:`${l.button}`,onClick:()=>{m(i),p(i)},disabled:r},nn[i])))})},kn=(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()=>{a(`${e}.expression`,{factRef:"",path:"",operator:"",value:"",expressionType:H.AllOf,conditions:[{factRef:"",path:"",operator:"",value:""}]}),await r(`${e}.expression`)},handleDeleteCondition:async l=>{const o=`${e}`,s=[...n(o).conditions||[]];if(s.splice(l,1),s.length===0)a(o,void 0);else{const c=`${e}.conditions`;a(c,s)}await r(o)}}),xn=ee(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"}})),ut=({control:e,name:n,depth:a,getValues:r,setValue:l,trigger:o,disabled:s})=>{const c=xn(),{handleAddCondition:d,handleAddExpression:m,handleDeleteCondition:p}=kn(n,r,l,o),i=`${n}`,h=r(i),g=(h==null?void 0:h.conditions)||[],E=h==null?void 0:h.expression;return t.createElement(I,{className:a>0?c.inner:c.root},a>0&&t.createElement(I,{className:c.connector}),t.createElement(u,{container:!0,spacing:0,direction:"column"},t.createElement(u,{item:!0},t.createElement(Cn,{control:e,disabled:s,name:`${n}.expressionType`,getValues:r})),t.createElement(u,{item:!0,container:!0,spacing:0,direction:"column"},t.createElement(fn,{handleDelete:p,disabled:s,conditions:g,control:e,name:n,setValue:l}),t.createElement(yn,{expression:E,control:e,name:n,depth:a,getValues:r,setValue:l,trigger:o,disabled:s})),!s&&t.createElement(u,{item:!0},t.createElement(an,{onAddCondition:d,onAddExpression:m}))))},wn=({control:e,supportContactError:n,disabled:a,isLoading:r,options:l})=>{var o;return t.createElement(ke,{title:a?"Team details":"Team details (optional)"},t.createElement(ot,{name:"teamOwner",control:e,selectLabel:"Check owner",options:(o=l==null?void 0:l.map(s=>({value:s.ref,label:s.name})))!=null?o:[],disabled:a||r}),t.createElement(ve,{name:"supportChannel",control:e,error:n,label:"Support channel",placeholder:"Enter a channel or email to get check support",disabled:a||r,rules:{},messages:{}}))},gt=[{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"}],Nn=e=>{const n=R(pa),a=R(Sa);return te([F.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"})}})},Ln=k({formControl:{flexGrow:1}}),ht=({facet:e,label:n,values:a,onChange:r,disabled:l})=>{const o=Ln(),{data:s,error:c}=Nn(e),d=j(()=>s==null?void 0:s.map(i=>i.toLocaleLowerCase("en-US")),[s]),m=G((i,h)=>{r(d&&d.every(g=>h.includes(g))?void 0:h)},[d,r]),p=G(()=>{r(a!=null&&a.length?a:void 0)},[a,r]);return!(s!=null&&s.length)||!(d!=null&&d.length)||c?t.createElement(C,{color:"error"},"Failed to load facet: ",e):t.createElement(I,{pb:1,pt:1},t.createElement(C,{variant:"subtitle2"},n),t.createElement(Qe,{className:o.formControl,multiple:!0,limitTags:4,disableCloseOnSelect:!0,"aria-label":n,options:d,value:a!=null?a:[],getOptionLabel:i=>{var h;return(h=s[d.indexOf(i)])!=null?h:i},onChange:m,onBlur:p,disabled:l,renderOption:(i,{selected:h})=>{var g;return t.createElement(Zt,{control:t.createElement(Xt,{icon:t.createElement(Na,{fontSize:"small"}),checkedIcon:t.createElement(wa,{fontSize:"small"}),checked:h}),label:(g=s[d.indexOf(i)])!=null?g:i})},size:"small",popupIcon:t.createElement(La,{"data-testid":"selected-facets-expand"}),renderInput:i=>t.createElement(z,{...i,variant:"outlined"})}))},Sn=k(e=>({title:{fontWeight:700},container:{padding:e.spacing(0,1.5)},filterContainer:{display:"flex",flexWrap:"wrap",padding:e.spacing(2)}})),Pn=({control:e,setFilters:n,disabled:a})=>{const r=Sn(),l=je({control:e,name:"filters",defaultValue:{selectedKinds:[],selectedTypes:[],selectedLifecycles:[],selectedOwners:[],selectedSystems:[],selectedTags:[]}}),o=s=>c=>{n(s,c)};return t.createElement(ke,{title:a?"Filters":"Filters (optional)"},t.createElement(u,{className:r.container,item:!0,xs:12},t.createElement(C,{variant:"body2"},"Apply filters so it's only applicable to relevant entities."),t.createElement(u,{item:!0,xs:12},t.createElement(Ne,null,t.createElement(u,{container:!0,className:r.filterContainer,spacing:2},gt.map(s=>t.createElement(u,{item:!0,xs:12,sm:6,md:4,key:s.stateKey},t.createElement(ht,{facet:s.facet,label:s.label,values:l==null?void 0:l[s.stateKey],onChange:o(s.stateKey),disabled:a}))))))))},Tn=({control:e,setValue:n,trigger:a,disabled:r})=>t.createElement(Pn,{control:e,setFilters:async(l,o)=>{n(`filters.${l}`,o!=null?o:[]),await a(`filters.${l}`)},disabled:r}),Dn=e=>{const{selectedCheck:n}=W();let a=gn;n&&(a=un(n));const{control:r,handleSubmit:l,getValues:o,setValue:s,trigger:c,formState:{errors:d}}=ca({defaultValues:a}),{showModal:m}=Ce();function p(i){var h,g,E,f,x;if(i===void 0)return!1;let L=!0;if((h=i.conditions)!=null&&h.length&&((g=i.conditions)==null?void 0:g.length)>0)for(const S in i.conditions)i.conditions.hasOwnProperty(S)&&(L=L&&p((E=i.conditions)==null?void 0:E[S]));return i.expression&&(L=L&&p(i.expression)),L?!!(i.value!==""&&i.path!==""&&i.factRef!==""&&i.operator!==""||(f=i.conditions)!=null&&f.length&&((x=i.conditions)==null?void 0:x.length)>0||i.expression!==void 0):!1}return{control:r,handleSubmit:l,getValues:o,setValue:s,trigger:c,errors:d,onSubmit:async i=>{var h,g,E,f,x,L,S,w;const N=o();let P=p(N.expression);if((g=(h=N.expression)==null?void 0:h.conditions)!=null&&g.length&&(P=P&&((f=(E=N.expression)==null?void 0:E.conditions)==null?void 0:f.length)>0),!P){await m({title:"Invalid Rule(s)",message:"The check is invalid as it is either missing a rule or a rule is missing a value.",error:!0});return}if(!await m({title:"Save Check",message:`Are you sure you want to save check: ${i.checkName}?`,error:!1}))return;const T={id:n?n.id:Ze(),ownerEntityRef:(x=i.teamOwner)!=null?x:void 0,name:i.checkName,description:i.description,passedMessage:(L=i.passMessage)!=null?L:void 0,failedMessage:(S=i.failMessage)!=null?S:void 0,rule:Ie(i.expression),filter:i.filters?it(i.filters):void 0,supportChannel:(w=i.supportChannel)!=null?w:void 0};e(T)}}},In=()=>t.createElement("div",{style:{display:"flex",gap:"10px",flexDirection:"column"}},t.createElement(C,{variant:"h6"},"Creating and managing checks"),t.createElement(C,{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(C,{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(C,{variant:"body1"},"Once created, you will be able to manage and edit your track on its detail page.")),Et=ee(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}})),Re=({title:e,open:n,onSave:a})=>{const r=Et(),{hideModal:l,isLoading:o,isReadOnly:s}=W(),{control:c,handleSubmit:d,getValues:m,setValue:p,trigger:i,errors:h,onSubmit:g}=Dn(a),{options:E}=ra();return t.createElement(lt,{handleClose:l,title:e,open:n},t.createElement("form",{onSubmit:d(g)},t.createElement(u,{container:!0,spacing:2,className:r.root},t.createElement(u,{item:!0,xs:9},t.createElement(Le,{className:r.card},t.createElement(C,{className:r.sectionLabel,style:{margin:0}},"Check Details"),t.createElement(Ya,{control:c,error:h.checkName,isLoading:o,disabled:s}),t.createElement(en,{control:c,error:h.description,isLoading:o,disabled:s}),t.createElement(wn,{control:c,disabled:s,isLoading:o,options:E}),t.createElement(C,{className:r.sectionLabel},"Rules"),t.createElement(ut,{control:c,getValues:m,setValue:p,trigger:i,disabled:s,name:"expression",depth:0}),t.createElement(Tn,{control:c,setValue:p,trigger:i,disabled:s}),t.createElement(Xa,{control:c,passError:h.passMessage,failError:h.failMessage,isLoading:o,disabled:s}))),t.createElement(u,{item:!0,xs:3},t.createElement(In,null))),t.createElement(u,{container:!0,spacing:4,className:r.root},t.createElement(at,{onCancel:l,saveButtonText:"Save Check",isLoading:o,onSave:s?void 0:d(g)}))))},An="Error Creating Check";function Rn(){const e=R(M),n=ae(),{showAlert:a}=Q(),r=async l=>{const o=await e.updateCheck(l);if(!o)throw new Error("Failed to update check.");return o};return ne([re.UpdateCheck],r,{onSuccess:()=>{n.invalidateQueries({queryKey:[F.GetChecks]})},onError:l=>{let o="Failed to update check.";l instanceof Error&&(o=l.message),a({severity:"error",title:An,message:o})}})}const On=()=>{const{selectedCheck:e,hideModal:n}=W(),{setIsLoading:a}=W(),{mutateAsync:r,isLoading:l}=Rn();return D(()=>{a(l)},[a,l]),t.createElement(Re,{title:"Edit a Check",open:!!e,onSave:async o=>{await r(o)&&n()}})},Fn="Error Creating Check";function $n(){const e=R(M),n=ae(),{showAlert:a}=Q(),r=async l=>{const o=await e.createCheck(l);if(!o)throw new Error("Failed to create check.");return o};return ne([re.CreateCheck],r,{onSuccess:()=>{n.invalidateQueries({queryKey:[F.GetChecks]})},onError:l=>{let o="Failed to create check.";l instanceof Error&&(o=l.message),a({severity:"error",title:Fn,message:o})}})}const Mn=()=>{const{hideModal:e,showAddModal:n,setIsLoading:a}=W(),{mutateAsync:r,isLoading:l}=$n();return D(()=>{a(l)},[a,l]),t.createElement(Re,{title:"Create a Check",open:n,onSave:async o=>{await r(o)&&e()}})},Vn=({handleDelete:e})=>{const[n,a]=v(null),r=!!n,l=s=>{s.stopPropagation(),a(s.currentTarget)},o=s=>{s.stopPropagation(),a(null)};return t.createElement(t.Fragment,null,t.createElement(he,{"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(Pa,null)),t.createElement(Ge,{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(ye,{"data-testid":"summary-card-action-delete",onClick:s=>{e(s),o(s)}},t.createElement(Y,null,t.createElement(_e,{fontSize:"small"})),t.createElement(_,null,"Delete"))))},Bn=ze(e=>Ke({root:{width:"100%",height:"100%",minHeight:"385px",display:"flex",flexDirection:"column",padding:e.spacing(2),position:"relative"}}))(Le),Gn=ze(()=>Ke({root:{display:"flex",flexDirection:"column",flex:1,gap:"3px"}}))(We),zn=k(e=>({root:{position:"relative",height:"100%"},cardSection:{marginBottom:e.spacing(2)},summaryName:{fontSize:e.typography.pxToRem(24),color:e.palette.primary.main,maxHeight:"75px",overflow:"hidden",textOverflow:"ellipsis",display:"-webkit-box",WebkitLineClamp:6,WebkitBoxOrient:"vertical","-webkit-line-clamp":2,"-webkit-box-orient":"vertical",wordBreak:"break-word"},summaryDescription:{maxHeight:"150px",overflow:"hidden",textOverflow:"ellipsis",display:"-webkit-box",WebkitLineClamp:6,WebkitBoxOrient:"vertical",wordBreak:"break-word"}})),vt=({title:e,description:n,children:a,handleDelete:r,handleEdit:l,handleView:o})=>{const s=zn();return t.createElement(Bn,null,t.createElement("div",{className:s.summaryName},t.createElement(ea,{title:e,action:r&&t.createElement(Vn,{handleDelete:r})})),t.createElement(Gn,null,t.createElement("div",{className:s.cardSection},t.createElement("div",{className:s.summaryDescription},t.createElement(Vt,{content:n!=null?n:""}))),a&&t.createElement("div",{className:s.cardSection},a)),t.createElement(ta,null),t.createElement(aa,null,t.createElement(A,{size:"small",color:"primary",role:"link",onClick:l||o},l?"Edit":"View")))},Wn="Error Deleting Check";function qn(){const e=R(M),n=ae(),{showAlert:a}=Q(),r=async l=>{const o=await e.deleteCheck(l);if(!o)throw new Error(`Failed to delete check ${l}`);return o};return ne([re.DeleteCheck],r,{onSuccess:()=>{n.invalidateQueries({queryKey:[F.GetChecks]})},onError:(l,o)=>{let s=`Failed to delete check ${o}`;l instanceof Error&&(s=l.message),a({severity:"error",title:Wn,message:s})}})}const Kn=k(e=>({root:{position:"relative",height:"100%"},cardSection:{marginBottom:e.spacing(2)},listItem:{padding:0},listItemText:{margin:0}})),Un=({check:e})=>{var n;const a=Kn();return t.createElement(be,{dense:!0,disablePadding:!0,className:a.cardSection},t.createElement(C,{variant:"overline",color:"textSecondary"},"Check Details"),t.createElement(Z,{disableGutters:!0,className:a.listItem},t.createElement(X,{title:"Owner"},t.createElement(Y,null,t.createElement(Xe,{color:"action",fontSize:"small"}))),t.createElement(_,{className:a.listItemText,primary:t.createElement(Ye,{entityRef:(n=e.ownerEntityRef)!=null?n:"No Owner"})})))},Hn=({check:e})=>{const{id:n,name:a,description:r,isEditable:l,ownerEntityRef:o}=e,{loading:s,allowed:c}=le({permission:fa,resourceRef:n}),{loading:d,allowed:m}=le({permission:ya,resourceRef:n}),{showModal:p}=Ce(),{mutate:i}=qn(),{showReadOnlyModal:h,setSelectedCheck:g}=W(),E=G(async()=>{await p({title:"Delete Check",message:`Are you sure you want to delete the check '${a!=null?a:n}'?`})&&i(n)},[p,a,i,n]);return t.createElement(vt,{title:a!=null?a:n,description:r,children:o&&t.createElement(Un,{check:e}),handleView:()=>h(e),handleEdit:l&&!s&&c?()=>g(e):void 0,handleDelete:l&&!d&&m?E:void 0})},jn=()=>t.createElement(t.Fragment,null,Array.from({length:10},(e,n)=>t.createElement(u,{key:`loading-${n}`,xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem"},t.createElement(Je,{variant:"rect",height:385})))),_n=k(()=>({searchIcon:{opacity:".5"},clearButton:{height:"36px",width:"36px"}})),ft=({searchTerm:e,setSearchTerm:n,showClear:a=!0,placeholder:r="Search...",...l})=>{const o=_n(),s=d=>{n(d.target.value)},c=()=>{n("")};return t.createElement(z,{...l,fullWidth:!0,placeholder:r,value:e,onChange:s,InputProps:{startAdornment:t.createElement(qe,{position:"start"},t.createElement(Ta,{className:o.searchIcon,"data-testid":"search-icon"})),endAdornment:a&&e?t.createElement(qe,{position:"end"},t.createElement(he,{edge:"end",onClick:c,className:o.clearButton},t.createElement(He,null))):null}})},Qn=k(()=>({searchbar:{maxWidth:"350px"},filters:{display:"flex",alignItems:"center"},dropdownFilters:{margin:"0 15px",display:"flex",alignItems:"center"},selectHolder:{marginLeft:"10px"}})),yt=({searchPlaceholder:e,isLoading:n,searchTerm:a,setSearchTerm:r,filterAlpha:l,handleAlphabeticalFilterChange:o,filterOwner:s,handleOwnerFilterChange:c,owners:d})=>{const m=Qn();return t.createElement(u,{item:!0,xs:9,className:m.filters},t.createElement(ft,{searchTerm:a,disabled:n,setSearchTerm:r,placeholder:e||"Search",variant:"outlined",size:"small",className:m.searchbar}),t.createElement("div",{className:m.dropdownFilters},t.createElement(C,null,"Sort by: "),t.createElement(Se,{className:m.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:m.dropdownFilters},t.createElement(C,null,"Filter by owner: "),t.createElement(Se,{className:m.selectHolder,value:s,onChange:c},t.createElement("option",{key:"all",value:"all"},"All"),d==null?void 0:d.map((p,i)=>t.createElement("option",{key:p+i,value:p},p)))))},Jn=(e,n)=>e==null?void 0:e.sort((a,r)=>{var l,o,s,c;const d=(o=(l=a==null?void 0:a.name)==null?void 0:l.toLocaleLowerCase())!=null?o:a==null?void 0:a.id.toLocaleLowerCase(),m=(c=(s=r==null?void 0:r.name)==null?void 0:s.toLocaleLowerCase())!=null?c:r==null?void 0:r.id.toLocaleLowerCase();return!d||!m?0:d<m?n==="ascending"?-1:1:d>m?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)]},se=({searchTermProp:e,filterAlphaProp:n,filterOwnerProp:a,checks:r,tracks:l})=>{var o,s;const c=r||l||[],d=(o=c==null?void 0:c.filter)==null?void 0:o.call(c,p=>{var i;return((i=p==null?void 0:p.name)!=null?i:p==null?void 0:p.id).toLocaleLowerCase().includes(e.toLocaleLowerCase())}),m=a&&a!=="all"?(s=d==null?void 0:d.filter)==null?void 0:s.call(d,p=>{var i;return((i=p==null?void 0:p.ownerEntityRef)==null?void 0:i.toLowerCase())===a.toLowerCase()}):d;return n==="default"?m:Jn(m!=null?m:[],n)},Yn=k(e=>({headerButtons:{display:"flex",gap:e.spacing(1),flexWrap:"nowrap",justifyContent:"end",alignItems:"center"},header:{padding:e.spacing(0,0,1)},pagination:{display:"flex",width:"-webkit-fill-available",justifyContent:"space-between",position:"fixed",bottom:0,marginRight:"40px",backgroundColor:"#424242"},pageTotal:{padding:e.spacing(1),marginLeft:"-20px"}})),Zn=({checksPerPage:e,currentCursor:n})=>{const a=Yn(),[r,l]=v(n),[o,s]=v([]),{data:c,isLoading:d}=tt(void 0,e,r),{loading:m,allowed:p}=le({permission:ba}),[i,h]=v(c);D(()=>{c&&h(()=>{var y;return{endCursor:c.endCursor,totalCount:c.totalCount,hasNextPage:(y=c==null?void 0:c.hasNextPage)!=null?y:!1,edges:c.edges}})},[c]);const g=i==null?void 0:i.edges[(i==null?void 0:i.edges.length)-1],E=i==null?void 0:i.edges.map(y=>y.checker),{setShowAddModal:f}=W(),[x,L]=v(),[S,w]=v(""),[N,P]=v("default"),[T,q]=v("all"),[ie,B]=v([]),ce=y=>{const O=se({searchTermProp:S,filterAlphaProp:y.target.value,filterOwnerProp:T,checks:E!=null?E:[]});P(y.target.value),L(O)},de=y=>{const O=se({searchTermProp:S,filterAlphaProp:N,filterOwnerProp:y.target.value,checks:E!=null?E:[]});q(y.target.value),L(O)};D(()=>{const y=i==null?void 0:i.edges.map(b=>b.checker),O=bt(y!=null?y:[]);L(y),B(O!=null?O:[])},[d,i]),D(()=>{const y=i==null?void 0:i.edges.map(b=>b.checker),O=se({searchTermProp:S,filterAlphaProp:N,filterOwnerProp:T,checks:y!=null?y:[]});L(O)},[S,N,T,i]);const me=()=>{s(y=>[...y,r]),l(g==null?void 0:g.cursor)},pe=()=>{l(o[o.length-1]),s(y=>y.slice(0,-1))},J=i!=null&&i.totalCount&&e?Math.ceil((i==null?void 0:i.totalCount)/e):0,ue=y=>{window.open(`/soundcheck/checks?checksPerPage=${y.target.value}`,"_self")};return t.createElement(u,{container:!0,direction:"row"},t.createElement(u,{container:!0,spacing:4,className:a.header},t.createElement(yt,{searchPlaceholder:"Search available checks",isLoading:d,searchTerm:S,setSearchTerm:w,filterAlpha:N,handleAlphabeticalFilterChange:ce,filterOwner:T,handleOwnerFilterChange:de,owners:ie}),t.createElement(u,{item:!0,xs:3},t.createElement("div",{className:a.headerButtons},t.createElement(C,null,"Checks shown:"),t.createElement(Se,{value:e,onChange:ue},["10","25","50","100"].map(y=>t.createElement("option",{value:y},y))),!m&&t.createElement(A,{disabled:!p,variant:"contained",color:"primary",onClick:()=>f(!0)},"Create Check")))),t.createElement(u,{container:!0,spacing:4,role:"list","aria-label":"checks"},d?t.createElement(jn,null):x==null?void 0:x.map(y=>t.createElement(u,{key:y.id,xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem","aria-label":"result"},t.createElement(Hn,{check:y})))),((i==null?void 0:i.hasNextPage)||(o==null?void 0:o.length)>0)&&t.createElement("div",{className:a.pagination},t.createElement(A,{disabled:(o==null?void 0:o.length)<=0,onClick:pe},"Load Previous Checks"),t.createElement(C,{className:a.pageTotal},"Page ",o.length+1,"/",J),t.createElement(A,{disabled:!(i!=null&&i.hasNextPage),onClick:me},"Load Next Checks")))},Xn=()=>{const{selectedCheck:e}=W();return t.createElement(Re,{title:"Check Details",open:!!e,onSave:()=>{}})},er=k(e=>({checksPageContainer:{padding:e.spacing(3)}})),tr=()=>{const e=er(),[n]=Ve(),a=n.get("checksPerPage"),r=a?parseInt(a,10):10,{selectedCheck:l,showAddModal:o,isReadOnly:s}=W();return t.createElement("div",{className:e.checksPageContainer},t.createElement(Zn,{checksPerPage:r}),o&&t.createElement(Mn,null),l&&!s&&t.createElement(On,null),l&&s&&t.createElement(Xn,null))},ar=()=>t.createElement(ja,null,t.createElement(tr,null)),nr=k(e=>({root:{position:"relative",height:"100%"},cardSection:{marginBottom:e.spacing(2)},listItem:{padding:0},listItemText:{margin:0}})),rr=({program:e})=>{var n,a,r;const l=nr(),o=(a=(n=e.levels)==null?void 0:n.length)!=null?a:0,s=(r=e.levels)==null?void 0:r.reduce((c,d)=>c+d.checks.length,0);return t.createElement(be,{dense:!0,disablePadding:!0,className:l.cardSection},t.createElement(C,{variant:"overline",color:"textSecondary"},"Track Details"),t.createElement(Z,{disableGutters:!0,className:l.listItem},t.createElement(X,{title:"Levels"},t.createElement(Y,null,t.createElement($a,{color:"action",fontSize:"small"}))),t.createElement(_,{className:l.listItemText,primary:t.createElement(C,{variant:"body2",color:"textSecondary"},`${o} ${o===1?"Level":"Levels"}`)})),t.createElement(Z,{disableGutters:!0,className:l.listItem},t.createElement(X,{title:"Checks"},t.createElement(Y,null,t.createElement(Fa,{color:"action",fontSize:"small"}))),t.createElement(_,{className:l.listItemText,primary:t.createElement(C,{variant:"body2",color:"textSecondary"},`${s} ${s===1?"Check":"Checks"}`)})),e.documentationURL&&t.createElement(Z,{disableGutters:!0,className:l.listItem},t.createElement(X,{title:"Documentation"},t.createElement(Y,null,t.createElement(Oa,{color:"action",fontSize:"small"}))),t.createElement(_,{className:l.listItemText,primary:t.createElement(Bt,{to:e.documentationURL,target:"_blank",rel:"noopener noreferrer"},"Learn more")})),t.createElement(Z,{disableGutters:!0,className:l.listItem},t.createElement(X,{title:"Owner"},t.createElement(Y,null,t.createElement(Xe,{color:"action",fontSize:"small"}))),t.createElement(_,{className:l.listItemText,primary:t.createElement(Ye,{entityRef:e.ownerEntityRef})})))},lr="Error Deleting Track";function or(){const e=R(M),n=ae(),{showAlert:a}=Q(),r=async l=>{const o=await e.deleteProgram(l);if(!o)throw new Error(`Failed to delete track ${l}`);return o};return ne([re.DeleteProgram],r,{onSuccess:()=>{n.invalidateQueries({queryKey:[F.GetAllPrograms]})},onError:(l,o)=>{let s=`Failed to delete track ${o}`;l instanceof Error&&(s=l.message),a({severity:"error",title:lr,message:s})}})}const sr=({summary:e})=>{const{loading:n,allowed:a}=le({permission:Ca,resourceRef:e.id}),{loading:r,allowed:l}=le({permission:ka,resourceRef:e.id}),{showModal:o}=Ce(),{mutate:s}=or(),{setSelectedProgram:c}=oe(),d=G(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(vt,{title:e.name,description:e.description,children:t.createElement(rr,{program:e}),handleView:()=>{c(e)},handleEdit:e.isEditable&&!n&&a?()=>{c(e)}:void 0,handleDelete:e.isEditable&&!r&&l?d:void 0})},ir=()=>t.createElement(t.Fragment,null,Array.from({length:6},(e,n)=>t.createElement(u,{key:`loading-${n}`,xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem"},t.createElement(Je,{variant:"rect",height:385})))),cr=k(e=>({headerButtons:{display:"flex",gap:e.spacing(1),flexWrap:"nowrap",justifyContent:"end"},header:{padding:e.spacing(0,0,1)},pagination:{display:"flex",width:"100%",justifyContent:"space-between"}})),dr=({programsPerPage:e,currentCursor:n})=>{var a;const r=cr(),{loading:l,allowed:o}=le({permission:xa}),{setShowAddModal:s}=oe(),[c,d]=v(n),[m,p]=v([]),{data:i,isLoading:h}=Ga(void 0,e,c),[g,E]=v(i);D(()=>{i&&E(()=>{var b;return{endCursor:i.endCursor,totalCount:i.totalCount,hasNextPage:(b=i==null?void 0:i.hasNextPage)!=null?b:!1,edges:i.edges}})},[i]);const f=(a=g==null?void 0:g.edges)==null?void 0:a.map(b=>b==null?void 0:b.program),x=g==null?void 0:g.edges[(g==null?void 0:g.edges.length)-1],{userEntityRef:L}=Ue(),{showAlert:S}=Q(),[w,N]=v(),[P,T]=v(""),[q,ie]=v("default"),[B,ce]=v("all"),[de,me]=v([]),pe=b=>{const $=se({searchTermProp:P,filterAlphaProp:b.target.value,filterOwnerProp:B,tracks:f!=null?f:[]});ie(b.target.value),N($)},J=b=>{const $=se({searchTermProp:P,filterAlphaProp:q,filterOwnerProp:b.target.value,tracks:f!=null?f:[]});ce(b.target.value),N($)};D(()=>{const b=g==null?void 0:g.edges.map(ge=>ge.program),$=bt(b!=null?b:[]);N(b),me($!=null?$:[])},[h,g]),D(()=>{const b=g==null?void 0:g.edges.map(ge=>ge.program),$=se({searchTermProp:P,filterAlphaProp:q,filterOwnerProp:B,tracks:b!=null?b:[]});N($)},[P,q,B,g]);const ue=()=>{p(b=>[...b,c]),d(x==null?void 0:x.cursor)},y=()=>{d(m[m.length-1]),p(b=>b.slice(0,-1))},O=()=>{L?s(!0):S({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(u,{container:!0,direction:"row"},t.createElement(u,{container:!0,spacing:4,className:r.header},t.createElement(yt,{searchPlaceholder:"Search available tracks",isLoading:h,searchTerm:P,setSearchTerm:T,filterAlpha:q,handleAlphabeticalFilterChange:pe,filterOwner:B,handleOwnerFilterChange:J,owners:de}),t.createElement(u,{item:!0,xs:3},t.createElement("div",{className:r.headerButtons},!l&&t.createElement(A,{disabled:!o,variant:"contained",color:"primary",onClick:()=>O()},"Create Track")))),t.createElement(u,{container:!0,spacing:4,role:"list","aria-label":"tracks"},h?t.createElement(ir,null):w==null?void 0:w.map(b=>t.createElement(u,{key:b.id,xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem","aria-label":"result"},t.createElement(sr,{summary:b})))),((g==null?void 0:g.hasNextPage)||(m==null?void 0:m.length)>0)&&t.createElement("div",{className:r.pagination},t.createElement(A,{disabled:(m==null?void 0:m.length)<=0,onClick:y},"Load Previous Tracks"),t.createElement(A,{disabled:!(g!=null&&g.hasNextPage),onClick:ue},"Load Next Tracks")))},mr=k(e=>({titleInput:{marginBottom:e.spacing(1)},title:{fontWeight:700}})),Ct=({programName:e,programNameError:n,handleProgramNameChange:a,disabled:r})=>{const l=mr();return t.createElement(u,{item:!0,xs:12},t.createElement(z,{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":""}))},kt=k(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"}}}),pr=({chip:e,disabled:n})=>{var a;const[r,l]=Da(()=>({type:"chip",item:{id:e.id,label:e.label},collect:s=>({isDragging:s.isDragging()})})),o=kt();return t.createElement(Pe,{ref:l,label:e.label,className:o.chip,icon:t.createElement(et,{"data-testid":"drag-indicator-icon"}),disabled:n,onDelete:()=>{},deleteIcon:t.createElement(X,{title:(a=e.description)!=null?a:""},t.createElement(Ma,{className:o.icon,"data-testid":"visibility-icon"}))})},xt=k(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%"}})),ur=()=>{const e=xt();return t.createElement(u,{container:!0,className:e.loadingContainer},t.createElement(na,null))},gr=({chips:e,disabled:n})=>t.createElement(t.Fragment,null,e.map(a=>t.createElement(pr,{disabled:n,key:a.id,chip:a}))),hr=()=>t.createElement(C,{variant:"body1",color:"textSecondary"},"There are no matches."),Er=({isLoading:e,chips:n=[],disabled:a})=>{const r=xt(),[l,o]=v(""),s=j(()=>n.filter(m=>m.label.toLowerCase().includes(l.toLowerCase())),[n,l]),c=n.length>0||l,d=()=>{if(e)return t.createElement(ur,null);if(s.length>0)return t.createElement(gr,{disabled:a!=null?a:!1,chips:s});if(c)return t.createElement(hr,null)};return t.createElement(u,{container:!0},t.createElement(u,{item:!0,xs:12,className:r.columnHeader},t.createElement(C,{className:r.subtitle},"Checks")),t.createElement(u,{item:!0,xs:12},t.createElement(ft,{searchTerm:l,disabled:e||a,setSearchTerm:o,placeholder:"Search available checks",variant:"outlined",size:"small"})),t.createElement(u,{item:!0,className:r.chipContainer,xs:12},d()))},vr=k(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=vr();return t.createElement(A,{className:a.button,...n},e)},fr=k(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]}})),yr=({chips:e,onDelete:n,onDrop:a,error:r=!1,placeholder:l="",disabled:o})=>{const s=fr(),c=kt(),[{isOver:d},m]=Ia(()=>({accept:"chip",drop:p=>{a(p)},collect:p=>({isOver:p.isOver()})}));return t.createElement("div",{ref:m,className:`${s.input} ${r?s.error:""} ${d?s.hoverBackground:s.normalBackground}`,"data-testid":"droppable-input"},t.createElement("div",{className:s.chipContainer},e!=null&&e.length?e.map(p=>t.createElement(Pe,{key:p.id,label:p.label,className:c.chip,icon:t.createElement(et,null),style:{cursor:"pointer"},onDelete:()=>n(p),disabled:o})):l))},br=k(e=>({inputBase:{fontSize:e.typography.subtitle1.fontSize,fontWeight:700}})),Cr=({levelName:e,handleLevelNameChange:n,disabled:a})=>{const r=br();return t.createElement(z,{fullWidth:!0,placeholder:"Untitled level",value:e,size:"small",variant:"outlined",onChange:n,label:"Level Name",disabled:a,InputProps:{classes:{input:r.inputBase}}})},kr=k(e=>({inputBase:{fontSize:e.typography.fontSize,fontWeight:"normal"}})),xr=({levelDescription:e,levelNameLabel:n,handleLevelDescriptionChange:a,disabled:r})=>{const l=kr();return t.createElement(z,{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}}})},wr=k(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}})),Nr=({inputChipsList:e,handleDelete:n,handleDrop:a,addInput:r,removeInput:l,levelsErrors:o,levelNames:s,levelDescriptions:c,handleLevelNameChange:d,handleLevelDescriptionChange:m,disabled:p})=>{const i=wr();return t.createElement(u,{container:!0},t.createElement(u,{item:!0,xs:12,className:i.columnHeader},t.createElement(C,{className:i.subtitle},"Levels"),!p&&t.createElement(wt,{label:"Add Level",startIcon:t.createElement(Va,null),onClick:r,disabled:p})),t.createElement(u,{container:!0,item:!0,spacing:5},e.map((h,g)=>t.createElement(u,{container:!0,item:!0,xs:12,key:g,spacing:2},t.createElement(u,{item:!0,xs:12,className:i.levelHeader},t.createElement(u,{container:!0,spacing:1},t.createElement(u,{item:!0,xs:!0},t.createElement(Cr,{levelName:s[g],handleLevelNameChange:E=>d(E.target.value,g),disabled:p!=null?p:!1})),e.length>1&&!p&&t.createElement(u,{item:!0,className:i.removeButton},t.createElement(wt,{label:"Remove Level",startIcon:t.createElement(Ba,null),onClick:()=>l(g),disabled:p})))),t.createElement(u,{item:!0,xs:12},t.createElement(yr,{chips:h,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:p})),t.createElement(u,{item:!0,xs:12},t.createElement(xr,{levelDescription:c[g],levelNameLabel:s[g],handleLevelDescriptionChange:E=>m(E.target.value,g),disabled:p!=null?p:!1}))))))},Lr=k(e=>({titleInput:{marginBottom:e.spacing(1)},regularFontSize:{fontSize:e.typography.fontSize},title:{fontWeight:700,fontSize:e.typography.fontSize}})),Nt=({programDescription:e,programDescriptionError:n,handleProgramDescriptionChange:a,disabled:r})=>{const l=Lr();return t.createElement(u,{item:!0,xs:12},t.createElement(z,{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 Sr=(e=>(e.SetProgramNameError="VALIDATE_NAME",e.SetName="SET_NAME",e))(Sr||{});const Pr={programName:"",programNameError:!1},Tr=(e,n)=>{switch(n.type){case"SET_NAME":return{...e,programName:n.value};case"VALIDATE_NAME":return{...e,programNameError:n.value};default:return e}},Dr=(e="")=>{const[n,a]=we(Tr,{...Pr,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 Ir=(e=>(e.SetProgramDescriptionError="VALIDATE_DESCRIPTION",e.SetDescription="SET_DESCRIPTION",e))(Ir||{});const Ar={programDescription:"",programDescriptionError:!1},Rr=(e,n)=>{switch(n.type){case"SET_DESCRIPTION":return{...e,programDescription:n.value};case"VALIDATE_DESCRIPTION":return{...e,programDescriptionError:n.value};default:return e}},Or=(e="")=>{const[n,a]=we(Rr,{...Ar,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}},Fr=({programName:e,programDescription:n,areInputsValid:a,isProgramNameValid:r,isProgramDescriptionValid:l,inputChipsList:o,checkers:s,onSave:c,programId:d,levelNames:m,levelDescriptions:p,filters:i})=>{const{showModal:h}=Ce(),{userEntityRef:g}=Ue();return async()=>{if(!(r()&&l()&&a())||!await h({title:"Save Track",message:`Are you sure you want to save track: ${e}?`})||!g)return;const E=d!=null?d:Ze(),f=cn(o,m,p,s),x={description:n,id:E,levels:f,name:e,ownerEntityRef:g,filter:it(i)};c(x)}},$r=e=>{const n=j(()=>e?mn(e):null,[e]),[a,r]=v([]),[l,o]=v(!1),{data:s,isLoading:c}=tt(),d=s==null?void 0:s.edges.map(w=>w.checker),m=j(()=>(d!=null?d:[]).filter(w=>!!w).map(w=>{var N,P,T;return{id:(N=w.id)!=null?N:"",label:(P=w.name)!=null?P:w.id,description:(T=w.description)!=null?T:""}}),[d]),{chips:p,inputChipsList:i,handleDrop:h,handleDelete:g,addInput:E,removeInput:f,inputErrors:x,areInputsValid:L,setInputChipsList:S}=Ka(a);return D(()=>{if(!a.length&&m.length&&!l){const{inputChips:w,used:N}=pn(n,m);S(w),r(N),o(!0)}},[m,S,a.length,n,l]),{checkers:d,checkersLoading:c,chips:p,inputChipsList:i,handleDrop:h,handleDelete:g,addInput:E,removeInput:f,inputErrors:x,areInputsValid:L}},Mr=e=>{const[n,a]=v(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))}}},Vr=e=>{const[n,a]=v(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))}}},Br=k(e=>({title:{fontWeight:700},filterContainer:{display:"flex",flexWrap:"wrap",padding:e.spacing(2)},description:{fontSize:e.typography.fontSize}})),Lt=({filters:e,setFilters:n,disabled:a})=>{const r=Br(),l=o=>s=>{n(o,s!=null?s:[])};return t.createElement(ke,{title:a?"Filters":"Filters (optional)"},t.createElement(u,{container:!0,item:!0,xs:12,spacing:2},!a&&t.createElement(u,{item:!0},t.createElement(C,{className:r.description},"Apply filters so it's only applicable to relevant entities.")),t.createElement(u,{item:!0,xs:12},t.createElement(Ne,null,t.createElement(u,{container:!0,className:r.filterContainer,spacing:2},gt.map(o=>t.createElement(u,{item:!0,xs:12,sm:6,md:4,key:o.stateKey},t.createElement(ht,{facet:o.facet,label:o.label,values:e[o.stateKey],onChange:l(o.stateKey),disabled:a}))))))))};var Gr=(e=>(e.SetFilter="SET_FILTER",e))(Gr||{});const zr={selectedKinds:[],selectedTypes:[],selectedLifecycles:[],selectedOwners:[],selectedSystems:[],selectedTags:[]},Wr=(e,n)=>{switch(n.type){case"SET_FILTER":return{...e,[n.key]:n.values};default:return e}},St=e=>{let n=zr;e&&(n=ct(e));const[a,r]=we(Wr,n);return{filters:a,setFilters:(l,o)=>{r({type:"SET_FILTER",key:l,values:o})}}},qr=k(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"}})),Pt=({onSave:e,title:n,open:a,handleClose:r})=>{var l,o,s,c;const{selectedProgram:d,isLoading:m,setSelectedProgram:p}=oe(),{checkers:i,checkersLoading:h,chips:g,inputChipsList:E,handleDrop:f,handleDelete:x,addInput:L,removeInput:S,inputErrors:w,areInputsValid:N}=$r(d),{programName:P,programNameError:T,handleProgramNameChange:q,isProgramNameValid:ie}=Dr(d==null?void 0:d.name),{programDescription:B,programDescriptionError:ce,handleProgramDescriptionChange:de,isProgramDescriptionValid:me}=Or(d==null?void 0:d.description),pe=(o=d?(l=d.levels)==null?void 0:l.map(V=>{var U;return(U=V.name)!=null?U:`Level ${V.ordinal}`}):E.map((V,U)=>`Level ${U+1}`))!=null?o:[],{levelNames:J,handleLevelNameChange:ue,addLevelName:y,removeLevelName:O}=Mr(pe),b=(c=d?(s=d.levels)==null?void 0:s.map(V=>{var U;return(U=V.description)!=null?U:""}):E.map((V,U)=>""))!=null?c:[],{levelDescriptions:$,handleLevelDescriptionChange:ge,addLevelDescription:Tt,removeLevelDescription:Dt}=Vr(b),It=()=>{L(),y(`Level ${E.length+1}`),Tt("")},At=V=>{S(V),O(V),Dt(V)},{filters:Oe,setFilters:Rt}=St(d==null?void 0:d.filter),Ot=Fr({programName:P,programDescription:B,areInputsValid:N,isProgramNameValid:ie,isProgramDescriptionValid:me,inputChipsList:E,checkers:i,onSave:e,programId:d==null?void 0:d.id,levelNames:J,levelDescriptions:$,filters:Oe}),xe=qr(),Fe=Et(),K=d?!(d!=null&&d.isEditable):!1;return t.createElement(lt,{handleClose:r,title:n,open:a},t.createElement(u,{container:!0,spacing:4,className:xe.root},t.createElement(u,{item:!0,xs:12},t.createElement(u,{item:!0,xs:12},t.createElement(C,{className:Fe.sectionLabel,style:{margin:0}},"Track Details"),t.createElement(Ct,{disabled:m||K,programName:P,programNameError:T,handleProgramNameChange:q})),t.createElement(u,{item:!0,xs:12},t.createElement(Nt,{disabled:m||K,programDescription:B,programDescriptionError:ce,handleProgramDescriptionChange:de}))),t.createElement(u,{item:!0,xs:12},t.createElement(Lt,{disabled:K,filters:Oe,setFilters:Rt})),t.createElement(u,{item:!0,xs:12},t.createElement(u,{container:!0,spacing:4},t.createElement(u,{item:!0,xs:12},t.createElement(C,{className:Fe.sectionLabel,style:{margin:0}},"Track Levels"),!K&&t.createElement(C,{className:xe.description},"Add the checks that apply to each level. You can preview the checks to see the rules that apply to each check.")),!K&&t.createElement(u,{item:!0,xs:5},t.createElement(Er,{chips:g,isLoading:h||m,disabled:K})),t.createElement(u,{item:!0,xs:7},t.createElement(Nr,{inputChipsList:E,handleDelete:x,handleDrop:f,addInput:It,removeInput:At,levelsErrors:w,levelNames:J,handleLevelNameChange:ue,levelDescriptions:$,handleLevelDescriptionChange:ge,disabled:K}))))),t.createElement(u,{container:!0,spacing:4,className:xe.root},t.createElement(at,{onCancel:()=>{p(null),r()},saveButtonText:"Save Track",isLoading:m||h,onSave:Ot,disableSave:K})))},Kr=()=>{const{setIsLoading:e,setShowAddModal:n,showAddModal:a}=oe(),{mutateAsync:r,isLoading:l}=qa();return D(()=>{e(l)},[e,l]),t.createElement(Pt,{handleClose:()=>n(!1),title:"Create Track",open:a,onSave:async o=>{await r(o)&&n(!1)}})},Ur="Error Updating Track";function Hr(){const e=R(M),n=ae(),{showAlert:a}=Q(),r=async l=>{const o=await e.updateProgram(l);if(!o)throw new Error("Failed to update track.");return o};return ne([re.UpdateProgram],r,{onSuccess:async()=>{await n.invalidateQueries({queryKey:[F.GetAllPrograms]})},onError:l=>{let o="Failed to update track.";l instanceof Error&&(o=l.message),a({severity:"error",title:Ur,message:o})}})}const jr=()=>{const{setSelectedProgram:e,setIsLoading:n,selectedProgram:a}=oe(),{mutateAsync:r,isLoading:l}=Hr();D(()=>n(l),[n,l]);const o=async s=>{await r(s)&&e(null)};return t.createElement(Pt,{handleClose:()=>e(null),title:a!=null&&a.isEditable?"Edit Track":"View Track",open:!!a,onSave:o})},_r=k(e=>({programsPageContainer:{padding:e.spacing(3)},headerButtons:{display:"flex",gap:e.spacing(1),flexWrap:"nowrap"}})),Qr=()=>{const{selectedProgram:e,showAddModal:n}=oe(),[a]=Ve(),r=a.get("tracksPerPage"),l=r?parseInt(r,10):10,o=_r(),s="Programs will now be referred to as Tracks throughout the Soundcheck UI.";return t.createElement("div",{className:o.programsPageContainer},t.createElement(Gt,{variant:"info",message:s,id:"programTrackBanner"}),t.createElement(Aa,{backend:Ra},t.createElement(dr,{programsPerPage:l}),n&&t.createElement(Kr,null),e&&t.createElement(jr,null)))},Jr=k(e=>({programsPageContainer:{padding:e.spacing(3)},lists:{padding:e.spacing(2)},checksDescription:{padding:"0 0 10px 5px"},levelHeader:{marginBottom:"10px"},chip:{marginTop:"10px"}})),Yr=({})=>{var e,n;const a=Jr(),r=window.location.pathname.split("tracks/")[1],{data:l,isLoading:o}=za(r||""),s=(e=l==null?void 0:l.edges[0])==null?void 0:e.program,{filters:c,setFilters:d}=St(s==null?void 0:s.filter),m=()=>{window.open("/soundcheck/tracks","_self")};return t.createElement(t.Fragment,null,t.createElement("div",{className:a.programsPageContainer},o?"loading":t.createElement(u,{container:!0,spacing:3},t.createElement(u,{item:!0,xs:12},t.createElement(C,{variant:"h4"},"Owner: ",s==null?void 0:s.ownerEntityRef)),t.createElement(u,{item:!0,xs:12},t.createElement(Ct,{disabled:!0,programName:s?s.name:"",programNameError:!1,handleProgramNameChange:()=>null})),t.createElement(u,{item:!0,xs:12},t.createElement(Nt,{disabled:!0,programDescription:s!=null&&s.description?s.description:"",programDescriptionError:!1,handleProgramDescriptionChange:()=>null})),t.createElement(u,{item:!0,xs:12},t.createElement(Lt,{disabled:!0,filters:c,setFilters:d})),t.createElement(u,{item:!0,xs:12},t.createElement(Le,null,t.createElement(We,null,t.createElement(u,{container:!0,spacing:4},t.createElement(u,{item:!0,xs:12},t.createElement(be,{dense:!0,className:a.lists},(n=s==null?void 0:s.levels)==null?void 0:n.map((p,i)=>t.createElement("div",{key:`levels-${i}`},t.createElement(C,{className:a.levelHeader,variant:"h6"},p.name),t.createElement(_,null,"Description: ",p.description),t.createElement(be,{key:`levels-${i}`,dense:!0,className:a.lists},t.createElement(C,{variant:"h6"},"Checks"),p.checks.map((h,g)=>t.createElement("div",{key:`checks-${g}`},t.createElement(Pe,{key:h.name+g,label:h.name,className:a.chip}),t.createElement(Z,{divider:!0,className:a.checksDescription},h.description)))))))))))))),t.createElement(A,{variant:"contained",color:"primary",onClick:m},"Track List"))},Zr=()=>{const e=window.location.pathname.split("tracks/");return t.createElement(Ha,null,e[1]?t.createElement(Yr,null):t.createElement(Qr,null))},Xr=k(()=>({tabContent:{margin:0,padding:0}})),el=({title:e="Soundcheck"})=>{const n=Xr(),[a,r]=la(),{group:l}=a,[o,s]=v(void 0),c=m=>{m&&r({...a,group:m})},d=Ft();return t.createElement(ua,null,t.createElement(oa,null,t.createElement(ga,null,t.createElement(ha,null,t.createElement(zt,{themeId:"website"},t.createElement(qt,{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(Wt,{title:e},d.pathname.split("/").length-1===1&&t.createElement(sa,{onChange:c,initialValue:l,setError:s})),t.createElement($t,null,t.createElement(Mt,{path:"/*",element:t.createElement(fe,null,t.createElement(fe.Route,{title:"Overview",path:"/"},t.createElement("div",{className:n.tabContent},t.createElement(ia,{groupSelectorError:o,searchParams:a,setSearchParams:r}))),t.createElement(fe.Route,{title:"Checks",path:"/checks"},t.createElement(ar,null)),t.createElement(fe.Route,{title:"Tracks",path:"/tracks"},t.createElement(Zr,null)))})))))))};export{el as RoutingPage};
|
|
2
|
+
//# sourceMappingURL=index-ee6cc5f1.esm.js.map
|
package/dist/index.esm.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{o as f,E as l,G as q,p as w,q as x,n as O}from"./esm/index-
|
|
1
|
+
import{o as f,E as l,G as q,p as w,q as x,n as O}from"./esm/index-094c5781.esm.js";import"react";import"@backstage/core-plugin-api";import"graphql-request";import"graphql-tag";import"@tanstack/react-query";import"lodash";import"@material-ui/core/styles/makeStyles";import"@material-ui/core";import"@backstage/core-components";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-core";import"@backstage/catalog-model";import"@material-ui/lab";import"react-router-dom";import"classnames";import"@material-ui/icons/Schedule";import"luxon";import"@material-ui/icons/Check";import"@material-ui/icons/Close";import"@material-ui/icons/RemoveCircleOutline";import"@material-ui/icons/HelpOutline";export{f as EntitySoundcheckCard,l as EntitySoundcheckContent,q as GroupSoundcheckContent,w as SoundcheckOverviewPage,x as SoundcheckRoutingPage,O as soundcheckPlugin};
|
|
2
2
|
//# sourceMappingURL=index.esm.js.map
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@spotify/backstage-plugin-soundcheck",
|
|
3
3
|
"description": "Ensure quality, reliability and alignment of software development with codified checks and guidance.",
|
|
4
|
-
"version": "0.6.
|
|
4
|
+
"version": "0.6.2",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
6
6
|
"homepage": "https://backstage.spotify.com",
|
|
7
7
|
"main": "dist/index.esm.js",
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import e,{useState as n}from"react";import{Page as E,Header as d}from"@backstage/core-components";import{SpotifyLicenseBanner as a}from"@spotify/backstage-plugin-core";import{u as g,U as v,G as f,O as h}from"./OverviewPageContent-b39812fb.esm.js";import{S as l,w as P,e as p,i as s}from"./index-5913b2d3.esm.js";import{stringifyEntityRef as S}from"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import{useEntity as k}from"@backstage/plugin-catalog-react";import{Routes as y,Route as w}from"react-router-dom";import"@material-ui/core";import"@material-ui/lab/Autocomplete";import"react-use/lib/useAsync";import"./RefetchingIndicator-026bd666.esm.js";import"react-use/lib/useDebounce";import"lodash";import"@material-ui/lab";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/Close";import"@material-ui/icons/RemoveCircleOutline";import"@material-ui/icons/HelpOutline";const L=r=>{const{title:i="Soundcheck"}=r,[t,o]=g(),{group:c}=t,u=n(void 0)[1];return e.createElement(l,null,e.createElement(v,null,e.createElement(P,null,e.createElement(E,{themeId:"website"},e.createElement(a,{backend:p,invalidLicenseMessage:s}),e.createElement(d,{title:i},e.createElement(f,{onChange:m=>{m&&o({...t,group:m})},initialValue:c,setError:u}))))))},O=()=>{const{entity:r}=k(),i={group:S(r)},[t,o]=n(i);return e.createElement(l,null,e.createElement(y,null,e.createElement(w,{path:"/*",element:e.createElement(e.Fragment,null,e.createElement(a,{backend:p,invalidLicenseMessage:s,inline:!0}),e.createElement(h,{searchParams:t,setSearchParams:o}))})))};export{O as FixedGroupOverviewPage,L as OverviewPage};
|
|
2
|
-
//# sourceMappingURL=index-5ffaa13b.esm.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import t,{useState as f,useEffect as P,useCallback as G,createContext as Fe,useContext as Oe,useMemo as H,useReducer as we}from"react";import{useSearchParams as Me,useLocation as $t,Routes as Ft,Route as Ot}from"react-router-dom";import{MarkdownContent as Mt,Link as Vt,DismissableBanner as Bt,Page as Gt,Header as zt,TabbedLayout as ge}from"@backstage/core-components";import{SpotifyLicenseBanner as Wt}from"@spotify/backstage-plugin-core";import{Box as D,Paper as Se,Grid as u,Button as R,Slide as qt,Dialog as Kt,AppBar as Ut,Toolbar as _t,Typography as b,IconButton as de,TextField as z,Collapse as Ht,makeStyles as C,ButtonGroup as Ve,Menu as Be,MenuItem as he,FormControl as jt,InputLabel as Qt,Select as Jt,FormControlLabel as Yt,Checkbox as Xt,Card as Le,ListItemIcon as Y,ListItemText as j,withStyles as Ge,CardContent as ze,CardHeader as Zt,Divider as ea,CardActions as ta,List as Ee,ListItem as X,Tooltip as Z,InputAdornment as We,NativeSelect as qe,Chip as Ne,CircularProgress as aa}from"@material-ui/core";import{makeStyles as ee,createStyles as Ke}from"@material-ui/core/styles";import{a as na,b as Ue,u as ra,U as la,G as oa,O as sa}from"./OverviewPageContent-b39812fb.esm.js";import _e from"@material-ui/icons/Close";import{Controller as me,useWatch as He,useForm as ia}from"react-hook-form";import ca from"@material-ui/icons/AddCircleOutline";import da from"@material-ui/icons/ArrowDropDown";import je from"@material-ui/icons/Delete";import{useApi as I,alertApiRef as ma}from"@backstage/core-plugin-api";import{useQuery as te,useQueryClient as ae,useMutation as ne}from"@tanstack/react-query";import{s as O,Q as $,k as Q,M as re,l as ve,m as pa,S as ua,w as ga}from"./index-5913b2d3.esm.js";import{asArray as ha,parseFactRef as Te,stringifyFactRef as Ea,soundcheckCheckUpdatePermission as va,soundcheckCheckDeletePermission as fa,soundcheckCheckCreatePermission as ya,soundcheckTrackUpdatePermission as ba,soundcheckTrackDeletePermission as Ca,soundcheckTrackCreatePermission as ka}from"@spotify/backstage-plugin-soundcheck-common";import{Autocomplete as Qe,Skeleton as Je}from"@material-ui/lab";import xa from"@material-ui/icons/CheckBox";import wa from"@material-ui/icons/CheckBoxOutlineBlank";import Sa from"@material-ui/icons/ExpandMore";import{catalogApiRef as La,EntityRefLink as Ye}from"@backstage/plugin-catalog-react";import"@backstage/catalog-model";import{v4 as Xe}from"uuid";import Na from"@material-ui/icons/MoreVert";import Ze from"@material-ui/icons/Group";import{usePermission as le}from"@backstage/plugin-permission-react";import Ta from"@material-ui/icons/Search";import{useDrag as Pa,useDrop as Da,DndProvider as Ia}from"react-dnd";import{HTML5Backend as Aa}from"react-dnd-html5-backend";import Ra from"@material-ui/icons/OpenInNew";import $a from"@material-ui/icons/DoneAllRounded";import Fa from"@material-ui/icons/Menu";import et from"@material-ui/icons/DragIndicator";import Oa from"@material-ui/icons/Visibility";import Ma from"@material-ui/icons/Add";import Va from"@material-ui/icons/Remove";import"@material-ui/lab/Autocomplete";import"react-use/lib/useAsync";import"./RefetchingIndicator-026bd666.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 Ba(e,a,n){const r=I(O);return te([$.GetAllPrograms,e,a,n],async()=>r.getAllPrograms(e,a,n))}function Ga(e){const a=I(O);return te([$.GetAllPrograms,e],async()=>a.getAllPrograms([e]))}const za="Error Creating Track";function Wa(){const e=I(O),a=ae(),{showAlert:n}=Q(),r=async l=>{const o=await e.createProgram(l);if(!o)throw new Error("Failed to create track.");return o};return ne([re.CreateProgram],r,{onSuccess:async()=>{await a.invalidateQueries({queryKey:[$.GetAllPrograms]})},onError:l=>{let o="Failed to create track.";l instanceof Error&&(o=l.message),n({severity:"error",title:za,message:o})}})}function tt(e,a,n){const r=I(O);return te([$.GetChecks,e,a,n],async()=>r.getChecks(e,a,n))}const qa=e=>{const[a,n]=f(void 0),[r,l]=f([[]]),[o,s]=f([!1]);P(()=>{a===void 0&&e!=null&&e.length&&n(e)},[e,a]);const i=G((h,g)=>{l(E=>{const v=[...E];return v[g]=[...v[g],h],v}),n(E=>E==null?void 0:E.filter(v=>v.id!==h.id)),s(E=>{if(E[g]){const v=[...E];return v[g]=!1,v}return E})},[]),c=G((h,g)=>{l(E=>{const v=[...E];return v[g]=v[g].filter(k=>k.id!==h.id),v}),n(E=>[...E!=null?E:[],h])},[]),m=G(()=>{l(h=>[...h,[]]),s(h=>[...h,!1])},[]),p=G(h=>{r.length>1&&l(g=>{const E=[...g],v=E.splice(h,1)[0];return n(k=>[...k!=null?k:[],...v]),E})},[r]),d=G(()=>{const h=r.map(g=>g.length===0);return s(h),!h.some(g=>g)},[r]);return{chips:a,inputChipsList:r,handleDrop:i,handleDelete:c,addInput:m,removeInput:p,inputErrors:o,setInputErrors:s,areInputsValid:d,setInputChipsList:l}},Ka=ee(e=>({box:{zIndex:9,position:"fixed",bottom:"0",width:"100%"},footer:{padding:e.spacing(2)}})),at=({onCancel:e,saveButtonText:a,isLoading:n,onSave:r,disableSave:l})=>{const o=Ka();return t.createElement(D,{className:o.box},t.createElement(Se,{elevation:3,className:o.footer},t.createElement(u,{container:!0,item:!0,spacing:2,justifyContent:"space-between"},t.createElement(u,{item:!0},t.createElement(R,{variant:"contained",color:"primary",onClick:e},"Cancel")),t.createElement(u,{item:!0},r&&t.createElement(R,{variant:"contained",color:"primary",disabled:n||l,onClick:r?()=>r():void 0},a)))))},nt=Fe({selectedProgram:null,setSelectedProgram:()=>{},isLoading:!1,setIsLoading:()=>{},showAddModal:!1,setShowAddModal:()=>{}}),Ua=({children:e})=>{const[a,n]=f(null),[r,l]=f(!1),[o,s]=f(!1);return t.createElement(nt.Provider,{value:{selectedProgram:a,setSelectedProgram:n,isLoading:r,setIsLoading:l,showAddModal:o,setShowAddModal:s}},e)},oe=()=>Oe(nt),rt=Fe({selectedCheck:null,setSelectedCheck:()=>{},isLoading:!1,setIsLoading:()=>{},showAddModal:!1,setShowAddModal:()=>{},isReadOnly:!1,showReadOnlyModal:()=>{},hideModal:()=>{}}),_a=({children:e})=>{const[a,n]=f(null),[r,l]=f(!1),[o,s]=f(!1),[i,c]=f(!1),m=d=>{l(!0),n(d)},p=()=>{n(null),l(!1),c(!1)};return t.createElement(rt.Provider,{value:{selectedCheck:a,setSelectedCheck:n,isLoading:o,setIsLoading:s,showAddModal:i,setShowAddModal:c,isReadOnly:r,showReadOnlyModal:m,hideModal:p}},e)},W=()=>Oe(rt),Ha=ee(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}})),ja=t.forwardRef(function(e,a){return t.createElement(qt,{direction:"up",ref:a,...e})}),lt=({open:e,handleClose:a,title:n,children:r})=>{const l=Ha();return t.createElement(Kt,{fullScreen:!0,open:e,onClose:a,TransitionComponent:ja},t.createElement(Ut,{className:l.appBar},t.createElement(_t,null,t.createElement(b,{className:l.title},n),t.createElement(de,{edge:"end",color:"inherit",onClick:a,"aria-label":"close",className:l.closeIcon},t.createElement(_e,null)))),t.createElement(D,{className:l.content},r))},pe=({name:e,control:a,error:n,label:r,placeholder:l,disabled:o,rules:s,messages:i,helperText:c,multiline:m,minRows:p})=>t.createElement(me,{name:e,control:a,defaultValue:"",rules:s,render:({field:d})=>t.createElement(z,{...d,fullWidth:!0,multiline:m,minRows:p,placeholder:l,label:r,disabled:o,variant:"outlined",margin:"normal",error:!!n,helperText:n&&i?i[n.type]:c})}),Qa=ee(()=>({section:{gap:0}})),Ja=({control:e,error:a,isLoading:n,disabled:r})=>{const l=Qa();return t.createElement("div",{className:l.section},t.createElement(pe,{name:"checkName",control:e,error:a,label:"Check Name",placeholder:"Choose a name",disabled:n||r,rules:{required:!0,maxLength:100},messages:{required:"This field is required",maxLength:"Input must be less than 100 characters"}}))},Ya=ee(e=>({root:{display:"flex",flexDirection:"column",gap:0},button:{marginLeft:-e.spacing(1)},title:{fontWeight:700,color:e.palette.primary.main}})),fe=({title:e,children:a})=>{const[n,r]=f(!1),l=Ya(),o=()=>{r(!n)};return t.createElement("div",{className:l.root},t.createElement(u,{container:!0,alignItems:"center",spacing:0},t.createElement(u,{item:!0},t.createElement(de,{onClick:o,className:l.button},t.createElement(ca,null))),t.createElement(u,{item:!0},t.createElement(b,{className:l.title},e))),t.createElement(Ht,{in:n},a))},Xa=({control:e,passError:a,failError:n,isLoading:r,disabled:l})=>t.createElement(fe,{title:l?"Pass and fail messages":"Pass and fail messages (optional)"},t.createElement(pe,{name:"passMessage",control:e,error:a,label:"Pass Message",placeholder:"Enter pass message...",disabled:r||l}),t.createElement(pe,{name:"failMessage",control:e,error:n,label:"Fail Message",placeholder:"Enter fail message...",disabled:r||l})),Za=({control:e,error:a,isLoading:n,disabled:r})=>t.createElement(pe,{name:"description",control:e,error:a,label:"Check Description",disabled:n||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"}}),en=C(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"}})),tn=({onAddCondition:e,onAddExpression:a})=>{const n=en(),[r,l]=f(null),o=!!r,s=c=>{l(c.currentTarget)},i=()=>{l(null)};return t.createElement(D,null,t.createElement(Ve,{color:"primary"},t.createElement(R,{id:"add-button",className:n.button,"aria-controls":o?"add-menu":void 0,"aria-haspopup":"true","aria-expanded":o?"true":void 0,onClick:s},t.createElement(D,{className:n.label},"Add"),t.createElement(D,{className:n.icon},t.createElement(da,null)))),t.createElement(Be,{id:"add-menu",anchorEl:r,open:o,onClose:i,classes:{paper:n.menu},MenuListProps:{"aria-labelledby":"add-button"}},t.createElement(he,{onClick:()=>{e(),i()}},"Add Condition"),t.createElement(he,{onClick:()=>{a(),i()}},"Add Expression")))},ot=({name:e,control:a,selectLabel:n,options:r,disabled:l})=>t.createElement(me,{name:e,control:a,render:({field:o})=>t.createElement(jt,{variant:"outlined",style:{minWidth:200}},t.createElement(Qt,{id:`${e}-select-label`},n),t.createElement(Jt,{...o,disabled:l,"data-testid":`${e}-select`,labelId:`${e}-select-label`,label:n},r.map(({value:s,label:i})=>t.createElement(he,{key:s,value:s},i))))});var U=(e=>(e.AllOf="all",e.AnyOf="any",e))(U||{});const an={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 nn={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"},rn=C(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 ln(e){const a=I(O);return te([$.GetCollectors,e],async()=>a.getCollectors(e))}function on(e,a){const n=I(O);return te([$.GetFactSchema,e,a],()=>n.getFactSchema(e,a),{enabled:!!e&&!!a})}const sn=(e,a,n,r)=>{const l={};return r&&r.forEach(o=>{var s,i;o&&(l[o.id]={id:o.id,name:(s=o.name)!=null?s:o.id,description:(i=o.description)!=null?i:""})}),e.map((o,s)=>{const i=o.map(c=>l[c.id]);return{name:a[s],description:n[s],ordinal:s+1,checks:i}})},cn=e=>e.map(a=>a.checks.map(n=>{var r;return{id:n.id,label:(r=n.name)!=null?r:n.id}})),dn=e=>{var a;return{id:e.id,name:e.name,description:e.description||"",ownerEntityRef:e.ownerEntityRef,documentationURL:e.documentationURL||"",levels:((a=e.levels)==null?void 0:a.map(n=>({ordinal:n.ordinal,name:n.name||"",description:n.description||"",checks:n.checks.map(r=>({id:r.id,name:r.name,description:r.description}))})))||[],filter:e.filter}},Pe={selectedKinds:"kind",selectedTypes:"spec.type",selectedLifecycles:"spec.lifecycle",selectedOwners:"spec.owner",selectedSystems:"spec.system",selectedTags:"metadata.tags"},it=e=>!e||Object.values(e).every(a=>a.length===0)?void 0:{catalog:Object.entries(e).reduce((a,[n,r])=>{const l=Pe[n];return r.length>0&&(a[l]=r),a},{})},ct=e=>{const a=e?JSON.parse(e):void 0;return Object.keys(Pe).reduce((n,r)=>{var l,o;return n[r]=ha((o=(l=a==null?void 0:a.catalog)==null?void 0:l[Pe[r]])!=null?o:[]),n},{})},mn=(e,a)=>{const n=e?cn(e.levels):[[]],r=n.flat().map(o=>o.id),l=a.filter(o=>!r.includes(o.id));return{inputChips:n,used:l}},De=e=>{var a,n;if(!e)return{};if(e.expressionType){const r={[e.expressionType]:(a=e.conditions)==null?void 0:a.map(l=>({factRef:l.factRef,path:l.path,operator:l.operator,value:l.value}))};return e.expression&&((n=r[e.expressionType])==null||n.push(De(e.expression))),r}if(e.expression)return De(e.expression);if(e.conditions&&e.conditions.length===1){const r=e.conditions[0];return{factRef:r.factRef,path:r.path,operator:r.operator,value:r.value}}return{}},dt=(e,a=!0)=>{var n;if(!e)return{factRef:"",path:"",operator:"",value:"",conditions:[]};const r=e.all||a&&!e.any?U.AllOf:U.AnyOf;return e[r]||a?{factRef:"",path:"",operator:"",value:"",conditions:((n=e[r])!=null?n:[e]).map(l=>l.all||l.any?dt(l,!1):{factRef:l.factRef,path:l.path,operator:l.operator,value:l.value,conditions:[]}),expressionType:r}:{factRef:e.factRef,path:e.path,operator:e.operator,value:e.value,expressionType:U.AllOf,conditions:[]}},pn=e=>({checkName:e.name||"",description:e.description||"",teamOwner:e.ownerEntityRef||"",supportChannel:e.supportChannel||"",expression:dt(e.rule),passMessage:e.passedMessage||void 0,failMessage:e.failedMessage||void 0,filters:ct(e.filter)}),Ie=(e,a="$")=>{const n=[];if(e.type==="object"&&e.properties){const r=e.properties;for(const l in r)if(r.hasOwnProperty(l)){const o=`${a}.${l}`;n.push(o);const s=r[l];n.push(...Ie(s,o))}}if(e.type==="array"&&e.items){const r=`${a}[*]`;n.push(r);const l=Array.isArray(e.items)?e.items:[e.items];for(const o of l)n.push(...Ie(o,r))}return n},un={checkName:"",description:"",teamOwner:"",supportChannel:"",expression:{factRef:"",path:"",operator:"",value:"",expressionType:U.AllOf,conditions:[{factRef:"",path:"",operator:"",value:"",conditions:[]}]},filters:{selectedKinds:[],selectedTypes:[],selectedLifecycles:[],selectedOwners:[],selectedSystems:[],selectedTags:[]}},gn=(e,a)=>{const{data:n}=ln(),r=He({control:a,name:`${e}.factRef`}),[l,o]=f(()=>r?Te(r,{defaultSource:"unknown",defaultScope:"default"}):null);P(()=>{o(r&&r!==""?Te(r,{defaultSource:"unknown",defaultScope:"default"}):null)},[r]);const{data:s}=on(l==null?void 0:l.source,l==null?void 0:l.name),i=H(()=>s?Ie(s.schema):[],[s]),c=l&&!i.length,m=H(()=>n==null?void 0:n.flatMap(p=>p.factNames.map(d=>{const h=Te(d,{defaultSource:p.id,defaultScope:"default"});return{label:h.name,value:Ea(h)}})),[n]);return{pathOptions:i,isSchemaLoading:c,factRefOptions:m}},mt=({name:e,label:a,control:n,options:r,getOptionLabel:l,disabled:o})=>t.createElement(me,{name:e,control:n,render:({field:s,fieldState:i})=>t.createElement(Qe,{...s,freeSolo:!0,"data-testid":`${e}-autocomplete`,style:{minWidth:250},disabled:o,options:r,getOptionLabel:l,renderInput:c=>t.createElement(z,{...c,variant:"outlined",label:a,error:i.invalid,helperText:i.error?i.error.message:null}),onChange:(c,m)=>s.onChange(m),onInputChange:(c,m)=>s.onChange(m)})}),hn=({control:e,name:a,handleDelete:n,disabled:r})=>{var l;const o=rn(),s=H(()=>Object.values(st).map(p=>({value:p,label:nn[p]})),[]),{pathOptions:i,isSchemaLoading:c,factRefOptions:m}=gn(a,e);return t.createElement(D,{className:o.container},t.createElement(D,{className:o.connector}),t.createElement(D,{className:o.innerContainer},t.createElement(D,{className:o.header}),t.createElement(D,{className:o.inputsContainer},t.createElement(mt,{name:`${a}.factRef`,control:e,label:"Fact",options:(l=m==null?void 0:m.map(p=>p.value))!=null?l:[],getOptionLabel:p=>{var d,h;return(h=(d=m==null?void 0:m.find(g=>p===g.value))==null?void 0:d.label)!=null?h:p},disabled:r}),t.createElement(mt,{name:`${a}.path`,label:"Path",control:e,disabled:r||!!c,options:i}),t.createElement(ot,{name:`${a}.operator`,control:e,selectLabel:"Operator",options:s,disabled:r}),t.createElement(me,{name:`${a}.value`,control:e,defaultValue:"",render:({field:p})=>t.createElement(z,{...p,label:"Value",variant:"outlined",placeholder:"Enter a value",disabled:r})}))),!r&&t.createElement(de,{onClick:n,className:o.deleteButton,"data-test-id":`${a}-delete-button`},t.createElement(je,{className:o.deleteIcon})))},En=({conditions:e,control:a,name:n,handleDelete:r,disabled:l,setValue:o})=>t.createElement(t.Fragment,null,e.filter(s=>!s.expressionType).map((s,i)=>t.createElement(u,{item:!0,key:i},t.createElement(hn,{control:a,name:`${n}.conditions[${i}]`,"data-testid":`${n}-condition-input`,handleDelete:()=>r(i),disabled:l,setValue:o})))),vn=({expression:e,control:a,name:n,depth:r,getValues:l,setValue:o,trigger:s,disabled:i})=>e?t.createElement(u,{item:!0},t.createElement(pt,{control:a,name:`${n}.expression`,depth:r+1,getValues:l,setValue:o,trigger:s,disabled:i})):null,fn=C(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)"}})),yn=({control:e,name:a,disabled:n})=>{const[r,l]=f(U.AllOf),o=fn(),s=i=>{l(i)};return t.createElement(me,{control:e,name:a,render:({field:{onChange:i}})=>t.createElement(Ve,{color:"primary"},Object.values(U).map(c=>t.createElement(R,{key:c,className:r===c?`${o.selectedButton} ${o.button}`:`${o.button}`,onClick:()=>{s(c),i(c)},disabled:n},an[c])))})},bn=(e,a,n,r)=>({handleAddCondition:async()=>{const l=`${e}`,o=a(l),s=[...(o==null?void 0:o.conditions)||[],{factRef:"",path:"",operator:"",value:""}],i=`${e}.conditions`;n(i,s),await r(i)},handleAddExpression:async()=>{n(`${e}.expression`,{factRef:"",path:"",operator:"",value:"",expressionType:U.AllOf,conditions:[{factRef:"",path:"",operator:"",value:""}]}),await r(`${e}.expression`)},handleDeleteCondition:async l=>{const o=`${e}`,s=[...a(o).conditions||[]];if(s.splice(l,1),s.length===0)n(o,void 0);else{const i=`${e}.conditions`;n(i,s)}await r(o)}}),Cn=ee(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"}})),pt=({control:e,name:a,depth:n,getValues:r,setValue:l,trigger:o,disabled:s})=>{const i=Cn(),{handleAddCondition:c,handleAddExpression:m,handleDeleteCondition:p}=bn(a,r,l,o),d=`${a}`,h=r(d),g=(h==null?void 0:h.conditions)||[],E=h==null?void 0:h.expression;return t.createElement(D,{className:n>0?i.inner:i.root},n>0&&t.createElement(D,{className:i.connector}),t.createElement(u,{container:!0,spacing:0,direction:"column"},t.createElement(u,{item:!0},t.createElement(yn,{control:e,disabled:s,name:`${a}.expressionType`})),t.createElement(u,{item:!0,container:!0,spacing:0,direction:"column"},t.createElement(En,{handleDelete:p,disabled:s,conditions:g,control:e,name:a,setValue:l}),t.createElement(vn,{expression:E,control:e,name:a,depth:n,getValues:r,setValue:l,trigger:o,disabled:s})),!s&&t.createElement(u,{item:!0},t.createElement(tn,{onAddCondition:c,onAddExpression:m}))))},kn=({control:e,supportContactError:a,disabled:n,isLoading:r,options:l})=>{var o;return t.createElement(fe,{title:n?"Team details":"Team details (optional)"},t.createElement(ot,{name:"teamOwner",control:e,selectLabel:"Check owner",options:(o=l==null?void 0:l.map(s=>({value:s.ref,label:s.name})))!=null?o:[],disabled:n||r}),t.createElement(pe,{name:"supportChannel",control:e,error:a,label:"Support channel",placeholder:"Enter a channel or email to get check support",disabled:n||r,rules:{},messages:{}}))},ut=[{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"}],xn=e=>{const a=I(ma),n=I(La);return te([$.GetEntityFacets,e],async()=>{var r;return((r=(await n.getEntityFacets({facets:[e]})).facets[e])==null?void 0:r.map(l=>l.value).sort())||[]},{onError:()=>{a.post({message:`Failed to load facet: ${e}`,severity:"error"})}})},wn=C({formControl:{flexGrow:1}}),gt=({facet:e,label:a,values:n,onChange:r,disabled:l})=>{const o=wn(),{data:s,error:i}=xn(e),c=H(()=>s==null?void 0:s.map(d=>d.toLocaleLowerCase("en-US")),[s]),m=G((d,h)=>{r(c&&c.every(g=>h.includes(g))?void 0:h)},[c,r]),p=G(()=>{r(n!=null&&n.length?n:void 0)},[n,r]);return!(s!=null&&s.length)||!(c!=null&&c.length)||i?t.createElement(b,{color:"error"},"Failed to load facet: ",e):t.createElement(D,{pb:1,pt:1},t.createElement(b,{variant:"subtitle2"},a),t.createElement(Qe,{className:o.formControl,multiple:!0,limitTags:4,disableCloseOnSelect:!0,"aria-label":a,options:c,value:n!=null?n:[],getOptionLabel:d=>{var h;return(h=s[c.indexOf(d)])!=null?h:d},onChange:m,onBlur:p,disabled:l,renderOption:(d,{selected:h})=>{var g;return t.createElement(Yt,{control:t.createElement(Xt,{icon:t.createElement(wa,{fontSize:"small"}),checkedIcon:t.createElement(xa,{fontSize:"small"}),checked:h}),label:(g=s[c.indexOf(d)])!=null?g:d})},size:"small",popupIcon:t.createElement(Sa,{"data-testid":"selected-facets-expand"}),renderInput:d=>t.createElement(z,{...d,variant:"outlined"})}))},Sn=C(e=>({title:{fontWeight:700},container:{padding:e.spacing(0,1.5)},filterContainer:{display:"flex",flexWrap:"wrap",padding:e.spacing(2)}})),Ln=({control:e,setFilters:a,disabled:n})=>{const r=Sn(),l=He({control:e,name:"filters",defaultValue:{selectedKinds:[],selectedTypes:[],selectedLifecycles:[],selectedOwners:[],selectedSystems:[],selectedTags:[]}}),o=s=>i=>{a(s,i)};return t.createElement(fe,{title:n?"Filters":"Filters (optional)"},t.createElement(u,{className:r.container,item:!0,xs:12},t.createElement(b,{variant:"body2"},"Apply filters so it's only applicable to relevant entities."),t.createElement(u,{item:!0,xs:12},t.createElement(Se,null,t.createElement(u,{container:!0,className:r.filterContainer,spacing:2},ut.map(s=>t.createElement(u,{item:!0,xs:12,sm:6,md:4,key:s.stateKey},t.createElement(gt,{facet:s.facet,label:s.label,values:l==null?void 0:l[s.stateKey],onChange:o(s.stateKey),disabled:n}))))))))},Nn=({control:e,setValue:a,trigger:n,disabled:r})=>t.createElement(Ln,{control:e,setFilters:async(l,o)=>{a(`filters.${l}`,o!=null?o:[]),await n(`filters.${l}`)},disabled:r}),Tn=e=>{const{selectedCheck:a}=W();let n=un;a&&(n=pn(a));const{control:r,handleSubmit:l,getValues:o,setValue:s,trigger:i,formState:{errors:c}}=ia({defaultValues:n}),{showModal:m}=ve();function p(d){var h,g,E,v,k;if(d===void 0)return!1;let T=!0;if((h=d.conditions)!=null&&h.length&&((g=d.conditions)==null?void 0:g.length)>0)for(const L in d.conditions)d.conditions.hasOwnProperty(L)&&(T=T&&p((E=d.conditions)==null?void 0:E[L]));return d.expression&&(T=T&&p(d.expression)),T?!!(d.value!==""&&d.path!==""&&d.factRef!==""&&d.operator!==""||(v=d.conditions)!=null&&v.length&&((k=d.conditions)==null?void 0:k.length)>0||d.expression!==void 0):!1}return{control:r,handleSubmit:l,getValues:o,setValue:s,trigger:i,errors:c,onSubmit:async d=>{var h,g,E,v,k,T,L,w;const S=o();let N=p(S.expression);if((g=(h=S.expression)==null?void 0:h.conditions)!=null&&g.length&&(N=N&&((v=(E=S.expression)==null?void 0:E.conditions)==null?void 0:v.length)>0),!N){await m({title:"Invalid Rule(s)",message:"The check is invalid as it is either missing a rule or a rule is missing a value.",error:!0});return}if(!await m({title:"Save Check",message:`Are you sure you want to save check: ${d.checkName}?`,error:!1}))return;const M={id:a?a.id:Xe(),ownerEntityRef:(k=d.teamOwner)!=null?k:void 0,name:d.checkName,description:d.description,passedMessage:(T=d.passMessage)!=null?T:void 0,failedMessage:(L=d.failMessage)!=null?L:void 0,rule:De(d.expression),filter:d.filters?it(d.filters):void 0,supportChannel:(w=d.supportChannel)!=null?w:void 0};e(M)}}},Pn=()=>t.createElement("div",{style:{display:"flex",gap:"10px",flexDirection:"column"}},t.createElement(b,{variant:"h6"},"Creating and managing checks"),t.createElement(b,{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(b,{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(b,{variant:"body1"},"Once created, you will be able to manage and edit your track on its detail page.")),ht=ee(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}})),Ae=({title:e,open:a,onSave:n})=>{const r=ht(),{hideModal:l,isLoading:o,isReadOnly:s}=W(),{control:i,handleSubmit:c,getValues:m,setValue:p,trigger:d,errors:h,onSubmit:g}=Tn(n),{options:E}=na();return t.createElement(lt,{handleClose:l,title:e,open:a},t.createElement("form",{onSubmit:c(g)},t.createElement(u,{container:!0,spacing:2,className:r.root},t.createElement(u,{item:!0,xs:9},t.createElement(Le,{className:r.card},t.createElement(b,{className:r.sectionLabel,style:{margin:0}},"Check Details"),t.createElement(Ja,{control:i,error:h.checkName,isLoading:o,disabled:s}),t.createElement(Za,{control:i,error:h.description,isLoading:o,disabled:s}),t.createElement(kn,{control:i,disabled:s,isLoading:o,options:E}),t.createElement(b,{className:r.sectionLabel},"Rules"),t.createElement(pt,{control:i,getValues:m,setValue:p,trigger:d,disabled:s,name:"expression",depth:0}),t.createElement(Nn,{control:i,setValue:p,trigger:d,disabled:s}),t.createElement(Xa,{control:i,passError:h.passMessage,failError:h.failMessage,isLoading:o,disabled:s}))),t.createElement(u,{item:!0,xs:3},t.createElement(Pn,null))),t.createElement(u,{container:!0,spacing:4,className:r.root},t.createElement(at,{onCancel:l,saveButtonText:"Save Check",isLoading:o,onSave:s?void 0:c(g)}))))},Dn="Error Creating Check";function In(){const e=I(O),a=ae(),{showAlert:n}=Q(),r=async l=>{const o=await e.updateCheck(l);if(!o)throw new Error("Failed to update check.");return o};return ne([re.UpdateCheck],r,{onSuccess:()=>{a.invalidateQueries({queryKey:[$.GetChecks]})},onError:l=>{let o="Failed to update check.";l instanceof Error&&(o=l.message),n({severity:"error",title:Dn,message:o})}})}const An=()=>{const{selectedCheck:e,hideModal:a}=W(),{setIsLoading:n}=W(),{mutateAsync:r,isLoading:l}=In();return P(()=>{n(l)},[n,l]),t.createElement(Ae,{title:"Edit a Check",open:!!e,onSave:async o=>{const s=await r(o);s&&(a(),window.open(`/soundcheck/checks/${s.id}`,"_self"))}})},Rn="Error Creating Check";function $n(){const e=I(O),a=ae(),{showAlert:n}=Q(),r=async l=>{const o=await e.createCheck(l);if(!o)throw new Error("Failed to create check.");return o};return ne([re.CreateCheck],r,{onSuccess:()=>{a.invalidateQueries({queryKey:[$.GetChecks]})},onError:l=>{let o="Failed to create check.";l instanceof Error&&(o=l.message),n({severity:"error",title:Rn,message:o})}})}const Fn=()=>{const{hideModal:e,showAddModal:a,setIsLoading:n}=W(),{mutateAsync:r,isLoading:l}=$n();return P(()=>{n(l)},[n,l]),t.createElement(Ae,{title:"Create a Check",open:a,onSave:async o=>{const s=await r(o);s&&(e(),window.open(`/soundcheck/checks/${s.id}`,"_self"))}})},On=({handleDelete:e})=>{const[a,n]=f(null),r=!!a,l=s=>{s.stopPropagation(),n(s.currentTarget)},o=s=>{s.stopPropagation(),n(null)};return t.createElement(t.Fragment,null,t.createElement(de,{"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(Na,null)),t.createElement(Be,{id:"summary-card-action-menu",anchorEl:a,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(he,{"data-testid":"summary-card-action-delete",onClick:s=>{e(s),o(s)}},t.createElement(Y,null,t.createElement(je,{fontSize:"small"})),t.createElement(j,null,"Delete"))))},Mn=Ge(e=>Ke({root:{width:"100%",height:"100%",minHeight:"385px",display:"flex",flexDirection:"column",padding:e.spacing(2),position:"relative"}}))(Le),Vn=Ge(()=>Ke({root:{display:"flex",flexDirection:"column",flex:1,gap:"3px"}}))(ze),Bn=C(e=>({root:{position:"relative",height:"100%"},cardSection:{marginBottom:e.spacing(2)},summaryDescription:{maxHeight:"150px",overflow:"hidden",textOverflow:"ellipsis",display:"-webkit-box",WebkitLineClamp:6,WebkitBoxOrient:"vertical",wordBreak:"break-word"}})),Et=({title:e,description:a,children:n,handleDelete:r,handleEdit:l,handleView:o})=>{const s=Bn();return t.createElement(Mn,null,t.createElement(Zt,{title:e,action:r&&t.createElement(On,{handleDelete:r})}),t.createElement(Vn,null,t.createElement("div",{className:s.cardSection},t.createElement("div",{className:s.summaryDescription},t.createElement(Mt,{content:a!=null?a:""}))),n&&t.createElement("div",{className:s.cardSection},n)),t.createElement(ea,null),t.createElement(ta,null,t.createElement(R,{size:"small",color:"primary",role:"link",onClick:l||o},l?"Edit":"View")))},Gn="Error Deleting Check";function zn(){const e=I(O),a=ae(),{showAlert:n}=Q(),r=async l=>{const o=await e.deleteCheck(l);if(!o)throw new Error(`Failed to delete check ${l}`);return o};return ne([re.DeleteCheck],r,{onSuccess:()=>{a.invalidateQueries({queryKey:[$.GetChecks]})},onError:(l,o)=>{let s=`Failed to delete check ${o}`;l instanceof Error&&(s=l.message),n({severity:"error",title:Gn,message:s})}})}const Wn=C(e=>({root:{position:"relative",height:"100%"},cardSection:{marginBottom:e.spacing(2)},listItem:{padding:0},listItemText:{margin:0}})),qn=({check:e})=>{var a;const n=Wn();return t.createElement(Ee,{dense:!0,disablePadding:!0,className:n.cardSection},t.createElement(b,{variant:"overline",color:"textSecondary"},"Check Details"),t.createElement(X,{disableGutters:!0,className:n.listItem},t.createElement(Z,{title:"Owner"},t.createElement(Y,null,t.createElement(Ze,{color:"action",fontSize:"small"}))),t.createElement(j,{className:n.listItemText,primary:t.createElement(Ye,{entityRef:(a=e.ownerEntityRef)!=null?a:"No Owner"})})))},Kn=({check:e})=>{const{id:a,name:n,description:r,isEditable:l,ownerEntityRef:o}=e,{loading:s,allowed:i}=le({permission:va,resourceRef:a}),{loading:c,allowed:m}=le({permission:fa,resourceRef:a}),{showModal:p}=ve(),{mutate:d}=zn(),{showReadOnlyModal:h,setSelectedCheck:g}=W(),E=G(async()=>{await p({title:"Delete Check",message:`Are you sure you want to delete the check '${n!=null?n:a}'?`})&&d(a)},[p,n,d,a]);return t.createElement(Et,{title:n!=null?n:a,description:r,children:o&&t.createElement(qn,{check:e}),handleView:()=>h(e),handleEdit:l&&!s&&i?()=>g(e):void 0,handleDelete:l&&!c&&m?E:void 0})},Un=()=>t.createElement(t.Fragment,null,Array.from({length:10},(e,a)=>t.createElement(u,{key:`loading-${a}`,xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem"},t.createElement(Je,{variant:"rect",height:385})))),_n=C(()=>({searchIcon:{opacity:".5"},clearButton:{height:"36px",width:"36px"}})),vt=({searchTerm:e,setSearchTerm:a,showClear:n=!0,placeholder:r="Search...",...l})=>{const o=_n(),s=c=>{a(c.target.value)},i=()=>{a("")};return t.createElement(z,{...l,fullWidth:!0,placeholder:r,value:e,onChange:s,InputProps:{startAdornment:t.createElement(We,{position:"start"},t.createElement(Ta,{className:o.searchIcon,"data-testid":"search-icon"})),endAdornment:n&&e?t.createElement(We,{position:"end"},t.createElement(de,{edge:"end",onClick:i,className:o.clearButton},t.createElement(_e,null))):null}})},Hn=C(()=>({searchbar:{maxWidth:"350px"},filters:{display:"flex",alignItems:"center"},dropdownFilters:{margin:"0 15px",display:"flex",alignItems:"center"},selectHolder:{marginLeft:"10px"}})),ft=({searchPlaceholder:e,isLoading:a,searchTerm:n,setSearchTerm:r,filterAlpha:l,handleAlphabeticalFilterChange:o,filterOwner:s,handleOwnerFilterChange:i,owners:c})=>{const m=Hn();return t.createElement(u,{item:!0,xs:9,className:m.filters},t.createElement(vt,{searchTerm:n,disabled:a,setSearchTerm:r,placeholder:e||"Search",variant:"outlined",size:"small",className:m.searchbar}),t.createElement("div",{className:m.dropdownFilters},t.createElement(b,null,"Sort by: "),t.createElement(qe,{className:m.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:m.dropdownFilters},t.createElement(b,null,"Filter by owner: "),t.createElement(qe,{className:m.selectHolder,value:s,onChange:i},t.createElement("option",{key:"all",value:"all"},"All"),c==null?void 0:c.map((p,d)=>t.createElement("option",{key:p+d,value:p},p)))))},jn=(e,a)=>e==null?void 0:e.sort((n,r)=>{var l,o,s,i;const c=(o=(l=n==null?void 0:n.name)==null?void 0:l.toLocaleLowerCase())!=null?o:n==null?void 0:n.id.toLocaleLowerCase(),m=(i=(s=r==null?void 0:r.name)==null?void 0:s.toLocaleLowerCase())!=null?i:r==null?void 0:r.id.toLocaleLowerCase();return!c||!m?0:c<m?a==="ascending"?-1:1:c>m?a==="ascending"?1:-1:0}),yt=e=>{const a=e==null?void 0:e.map(n=>n==null?void 0:n.ownerEntityRef);return[...new Set(a)]},se=({searchTermProp:e,filterAlphaProp:a,filterOwnerProp:n,checks:r,tracks:l})=>{var o,s;const i=r||l||[],c=(o=i==null?void 0:i.filter)==null?void 0:o.call(i,p=>{var d;return((d=p==null?void 0:p.name)!=null?d:p==null?void 0:p.id).toLocaleLowerCase().includes(e.toLocaleLowerCase())}),m=n&&n!=="all"?(s=c==null?void 0:c.filter)==null?void 0:s.call(c,p=>{var d;return((d=p==null?void 0:p.ownerEntityRef)==null?void 0:d.toLowerCase())===n.toLowerCase()}):c;return a==="default"?m:jn(m!=null?m:[],a)},Qn=C(e=>({headerButtons:{display:"flex",gap:e.spacing(1),flexWrap:"nowrap",justifyContent:"end"},header:{padding:e.spacing(0,0,1)}})),Jn=({checksPerPage:e,currentCursor:a})=>{const n=Qn(),[r,l]=f(a),{data:o,isLoading:s}=tt(void 0,e,r),{loading:i,allowed:c}=le({permission:ya}),[m,p]=f(o);P(()=>{o&&p(()=>{var x;return{endCursor:o.endCursor,totalCount:o.totalCount,hasNextPage:(x=o==null?void 0:o.hasNextPage)!=null?x:!1,edges:o.edges}})},[o]);const d=m==null?void 0:m.edges[(m==null?void 0:m.edges.length)-1],h=m==null?void 0:m.edges.map(x=>x.checker),{setShowAddModal:g}=W(),[E,v]=f(),[k,T]=f(""),[L,w]=f("default"),[S,N]=f("all"),[M,q]=f([]),ie=x=>{const A=se({searchTermProp:k,filterAlphaProp:x.target.value,filterOwnerProp:S,checks:h!=null?h:[]});w(x.target.value),v(A)},B=x=>{const A=se({searchTermProp:k,filterAlphaProp:L,filterOwnerProp:x.target.value,checks:h!=null?h:[]});N(x.target.value),v(A)};return P(()=>{const x=m==null?void 0:m.edges.map(_=>_.checker),A=yt(x!=null?x:[]);v(x),q(A!=null?A:[])},[s,m]),P(()=>{const x=m==null?void 0:m.edges.map(_=>_.checker),A=se({searchTermProp:k,filterAlphaProp:L,filterOwnerProp:S,checks:x!=null?x:[]});v(A)},[k,L,S,m]),t.createElement(u,{container:!0,direction:"row"},t.createElement(u,{container:!0,spacing:4,className:n.header},t.createElement(ft,{searchPlaceholder:"Search available checks",isLoading:s,searchTerm:k,setSearchTerm:T,filterAlpha:L,handleAlphabeticalFilterChange:ie,filterOwner:S,handleOwnerFilterChange:B,owners:M}),t.createElement(u,{item:!0,xs:3},t.createElement("div",{className:n.headerButtons},!i&&t.createElement(R,{disabled:!c,variant:"contained",color:"primary",onClick:()=>g(!0)},"Create Check")))),t.createElement(u,{container:!0,spacing:4,role:"list","aria-label":"checks"},s?t.createElement(Un,null):E==null?void 0:E.map(x=>t.createElement(u,{key:x.id,xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem","aria-label":"result"},t.createElement(Kn,{check:x})))),(m==null?void 0:m.hasNextPage)&&t.createElement(R,{onClick:()=>l(d==null?void 0:d.cursor)},"Load More Checks"))},Yn=()=>{const{selectedCheck:e}=W();return t.createElement(Ae,{title:"Check Details",open:!!e,onSave:()=>{}})},Xn=C(e=>({checksPageContainer:{padding:e.spacing(3)}})),Zn=()=>{const e=Xn(),[a]=Me(),n=a.get("checksPerPage"),r=n?parseInt(n,10):10,{selectedCheck:l,showAddModal:o,isReadOnly:s}=W();return t.createElement("div",{className:e.checksPageContainer},t.createElement(Jn,{checksPerPage:r}),o&&t.createElement(Fn,null),l&&!s&&t.createElement(An,null),l&&s&&t.createElement(Yn,null))},er=()=>t.createElement(_a,null,t.createElement(Zn,null)),tr=C(e=>({root:{position:"relative",height:"100%"},cardSection:{marginBottom:e.spacing(2)},listItem:{padding:0},listItemText:{margin:0}})),ar=({program:e})=>{var a,n,r;const l=tr(),o=(n=(a=e.levels)==null?void 0:a.length)!=null?n:0,s=(r=e.levels)==null?void 0:r.reduce((i,c)=>i+c.checks.length,0);return t.createElement(Ee,{dense:!0,disablePadding:!0,className:l.cardSection},t.createElement(b,{variant:"overline",color:"textSecondary"},"Track Details"),t.createElement(X,{disableGutters:!0,className:l.listItem},t.createElement(Z,{title:"Levels"},t.createElement(Y,null,t.createElement(Fa,{color:"action",fontSize:"small"}))),t.createElement(j,{className:l.listItemText,primary:t.createElement(b,{variant:"body2",color:"textSecondary"},`${o} ${o===1?"Level":"Levels"}`)})),t.createElement(X,{disableGutters:!0,className:l.listItem},t.createElement(Z,{title:"Checks"},t.createElement(Y,null,t.createElement($a,{color:"action",fontSize:"small"}))),t.createElement(j,{className:l.listItemText,primary:t.createElement(b,{variant:"body2",color:"textSecondary"},`${s} ${s===1?"Check":"Checks"}`)})),e.documentationURL&&t.createElement(X,{disableGutters:!0,className:l.listItem},t.createElement(Z,{title:"Documentation"},t.createElement(Y,null,t.createElement(Ra,{color:"action",fontSize:"small"}))),t.createElement(j,{className:l.listItemText,primary:t.createElement(Vt,{to:e.documentationURL,target:"_blank",rel:"noopener noreferrer"},"Learn more")})),t.createElement(X,{disableGutters:!0,className:l.listItem},t.createElement(Z,{title:"Owner"},t.createElement(Y,null,t.createElement(Ze,{color:"action",fontSize:"small"}))),t.createElement(j,{className:l.listItemText,primary:t.createElement(Ye,{entityRef:e.ownerEntityRef})})))},nr="Error Deleting Track";function rr(){const e=I(O),a=ae(),{showAlert:n}=Q(),r=async l=>{const o=await e.deleteProgram(l);if(!o)throw new Error(`Failed to delete track ${l}`);return o};return ne([re.DeleteProgram],r,{onSuccess:()=>{a.invalidateQueries({queryKey:[$.GetAllPrograms]})},onError:(l,o)=>{let s=`Failed to delete track ${o}`;l instanceof Error&&(s=l.message),n({severity:"error",title:nr,message:s})}})}const lr=({summary:e})=>{const{loading:a,allowed:n}=le({permission:ba,resourceRef:e.id}),{loading:r,allowed:l}=le({permission:Ca,resourceRef:e.id}),{showModal:o}=ve(),{mutate:s}=rr(),{setSelectedProgram:i}=oe(),c=G(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(Et,{title:e.name,description:e.description,children:t.createElement(ar,{program:e}),handleView:()=>{i(e)},handleEdit:e.isEditable&&!a&&n?()=>{i(e)}:void 0,handleDelete:e.isEditable&&!r&&l?c:void 0})},or=()=>t.createElement(t.Fragment,null,Array.from({length:6},(e,a)=>t.createElement(u,{key:`loading-${a}`,xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem"},t.createElement(Je,{variant:"rect",height:385})))),sr=C(e=>({headerButtons:{display:"flex",gap:e.spacing(1),flexWrap:"nowrap",justifyContent:"end"},header:{padding:e.spacing(0,0,1)},pagination:{display:"flex",width:"100%",justifyContent:"space-between"}})),ir=({programsPerPage:e,currentCursor:a})=>{var n;const r=sr(),{loading:l,allowed:o}=le({permission:ka}),{setShowAddModal:s}=oe(),[i,c]=f(a),[m,p]=f([]),{data:d,isLoading:h}=Ba(void 0,e,i),[g,E]=f(d);P(()=>{d&&E(()=>{var y;return{endCursor:d.endCursor,totalCount:d.totalCount,hasNextPage:(y=d==null?void 0:d.hasNextPage)!=null?y:!1,edges:d.edges}})},[d]);const v=(n=g==null?void 0:g.edges)==null?void 0:n.map(y=>y==null?void 0:y.program),k=g==null?void 0:g.edges[(g==null?void 0:g.edges.length)-1],{userEntityRef:T}=Ue(),{showAlert:L}=Q(),[w,S]=f(),[N,M]=f(""),[q,ie]=f("default"),[B,x]=f("all"),[A,_]=f([]),ye=y=>{const F=se({searchTermProp:N,filterAlphaProp:y.target.value,filterOwnerProp:B,tracks:v!=null?v:[]});ie(y.target.value),S(F)},ue=y=>{const F=se({searchTermProp:N,filterAlphaProp:q,filterOwnerProp:y.target.value,tracks:v!=null?v:[]});x(y.target.value),S(F)};P(()=>{const y=g==null?void 0:g.edges.map(ce=>ce.program),F=yt(y!=null?y:[]);S(y),_(F!=null?F:[])},[h,g]),P(()=>{const y=g==null?void 0:g.edges.map(ce=>ce.program),F=se({searchTermProp:N,filterAlphaProp:q,filterOwnerProp:B,tracks:y!=null?y:[]});S(F)},[N,q,B,g]);const be=()=>{p(y=>[...y,i]),c(k==null?void 0:k.cursor)},Ce=()=>{c(m[m.length-1]),p(y=>y.slice(0,-1))},ke=()=>{T?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(u,{container:!0,direction:"row"},t.createElement(u,{container:!0,spacing:4,className:r.header},t.createElement(ft,{searchPlaceholder:"Search available tracks",isLoading:h,searchTerm:N,setSearchTerm:M,filterAlpha:q,handleAlphabeticalFilterChange:ye,filterOwner:B,handleOwnerFilterChange:ue,owners:A}),t.createElement(u,{item:!0,xs:3},t.createElement("div",{className:r.headerButtons},!l&&t.createElement(R,{disabled:!o,variant:"contained",color:"primary",onClick:()=>ke()},"Create Track")))),t.createElement(u,{container:!0,spacing:4,role:"list","aria-label":"tracks"},h?t.createElement(or,null):w==null?void 0:w.map(y=>t.createElement(u,{key:y.id,xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem","aria-label":"result"},t.createElement(lr,{summary:y})))),((g==null?void 0:g.hasNextPage)||(m==null?void 0:m.length)>0)&&t.createElement("div",{className:r.pagination},t.createElement(R,{disabled:(m==null?void 0:m.length)<=0,onClick:Ce},"Load Previous Tracks"),t.createElement(R,{disabled:!(g!=null&&g.hasNextPage),onClick:be},"Load Next Tracks")))},cr=C(e=>({titleInput:{marginBottom:e.spacing(1)},title:{fontWeight:700}})),bt=({programName:e,programNameError:a,handleProgramNameChange:n,disabled:r})=>{const l=cr();return t.createElement(u,{item:!0,xs:12},t.createElement(z,{fullWidth:!0,placeholder:"Untitled track",value:e,onChange:n,disabled:r,className:l.titleInput,variant:"outlined",size:"small",margin:"normal",error:a,helperText:a?"Track name must be at least 1 character and less than 100 characters":""}))},Ct=C(e=>{const a=e.palette.type==="dark",n=a?e.palette.common.white:e.palette.common.black,r=a?e.palette.grey[700]:e.palette.common.white,l=a?e.palette.grey[500]:e.palette.grey[300],o=a?e.palette.common.white:e.palette.common.black;return{chip:{width:"100%",height:"36px",color:n,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"}}}),dr=({chip:e,disabled:a})=>{var n;const[r,l]=Pa(()=>({type:"chip",item:{id:e.id,label:e.label},collect:s=>({isDragging:s.isDragging()})})),o=Ct();return t.createElement(Ne,{ref:l,label:e.label,className:o.chip,icon:t.createElement(et,{"data-testid":"drag-indicator-icon"}),disabled:a,onDelete:()=>{},deleteIcon:t.createElement(Z,{title:(n=e.description)!=null?n:""},t.createElement(Oa,{className:o.icon,"data-testid":"visibility-icon"}))})},kt=C(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%"}})),mr=()=>{const e=kt();return t.createElement(u,{container:!0,className:e.loadingContainer},t.createElement(aa,null))},pr=({chips:e,disabled:a})=>t.createElement(t.Fragment,null,e.map(n=>t.createElement(dr,{disabled:a,key:n.id,chip:n}))),ur=()=>t.createElement(b,{variant:"body1",color:"textSecondary"},"There are no matches."),gr=({isLoading:e,chips:a=[],disabled:n})=>{const r=kt(),[l,o]=f(""),s=H(()=>a.filter(m=>m.label.toLowerCase().includes(l.toLowerCase())),[a,l]),i=a.length>0||l,c=()=>{if(e)return t.createElement(mr,null);if(s.length>0)return t.createElement(pr,{disabled:n!=null?n:!1,chips:s});if(i)return t.createElement(ur,null)};return t.createElement(u,{container:!0},t.createElement(u,{item:!0,xs:12,className:r.columnHeader},t.createElement(b,{className:r.subtitle},"Checks")),t.createElement(u,{item:!0,xs:12},t.createElement(vt,{searchTerm:l,disabled:e||n,setSearchTerm:o,placeholder:"Search available checks",variant:"outlined",size:"small"})),t.createElement(u,{item:!0,className:r.chipContainer,xs:12},c()))},hr=C(e=>({button:{border:"none",fontWeight:700,fontSize:e.typography.subtitle2.fontSize,lineHeight:"19px",color:e.palette.primary.main,textTransform:"none"}})),xt=({label:e,...a})=>{const n=hr();return t.createElement(R,{className:n.button,...a},e)},Er=C(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]}})),vr=({chips:e,onDelete:a,onDrop:n,error:r=!1,placeholder:l="",disabled:o})=>{const s=Er(),i=Ct(),[{isOver:c},m]=Da(()=>({accept:"chip",drop:p=>{n(p)},collect:p=>({isOver:p.isOver()})}));return t.createElement("div",{ref:m,className:`${s.input} ${r?s.error:""} ${c?s.hoverBackground:s.normalBackground}`,"data-testid":"droppable-input"},t.createElement("div",{className:s.chipContainer},e!=null&&e.length?e.map(p=>t.createElement(Ne,{key:p.id,label:p.label,className:i.chip,icon:t.createElement(et,null),style:{cursor:"pointer"},onDelete:()=>a(p),disabled:o})):l))},fr=C(e=>({inputBase:{fontSize:e.typography.subtitle1.fontSize,fontWeight:700}})),yr=({levelName:e,handleLevelNameChange:a,disabled:n})=>{const r=fr();return t.createElement(z,{fullWidth:!0,placeholder:"Untitled level",value:e,size:"small",variant:"outlined",onChange:a,label:"Level Name",disabled:n,InputProps:{classes:{input:r.inputBase}}})},br=C(e=>({inputBase:{fontSize:e.typography.fontSize,fontWeight:"normal"}})),Cr=({levelDescription:e,levelNameLabel:a,handleLevelDescriptionChange:n,disabled:r})=>{const l=br();return t.createElement(z,{fullWidth:!0,placeholder:"Enter description here",multiline:!0,value:e,size:"small",variant:"outlined",label:`${a} Description`,onChange:n,disabled:r,InputProps:{classes:{input:l.inputBase}}})},kr=C(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}})),xr=({inputChipsList:e,handleDelete:a,handleDrop:n,addInput:r,removeInput:l,levelsErrors:o,levelNames:s,levelDescriptions:i,handleLevelNameChange:c,handleLevelDescriptionChange:m,disabled:p})=>{const d=kr();return t.createElement(u,{container:!0},t.createElement(u,{item:!0,xs:12,className:d.columnHeader},t.createElement(b,{className:d.subtitle},"Levels"),t.createElement(xt,{label:"Add Level",startIcon:t.createElement(Ma,null),onClick:r,disabled:p})),t.createElement(u,{container:!0,item:!0,spacing:5},e.map((h,g)=>t.createElement(u,{container:!0,item:!0,xs:12,key:g,spacing:2},t.createElement(u,{item:!0,xs:12,className:d.levelHeader},t.createElement(u,{container:!0,spacing:1},t.createElement(u,{item:!0,xs:!0},t.createElement(yr,{levelName:s[g],handleLevelNameChange:E=>c(E.target.value,g),disabled:p!=null?p:!1})),e.length>1&&t.createElement(u,{item:!0,className:d.removeButton},t.createElement(xt,{label:"Remove Level",startIcon:t.createElement(Va,null),onClick:()=>l(g),disabled:p})))),t.createElement(u,{item:!0,xs:12},t.createElement(vr,{chips:h,onDelete:E=>a(E,g),onDrop:E=>n(E,g),error:o[g],placeholder:"Drag and drop checks here to include them in this level",disabled:p})),t.createElement(u,{item:!0,xs:12},t.createElement(Cr,{levelDescription:i[g],levelNameLabel:s[g],handleLevelDescriptionChange:E=>m(E.target.value,g),disabled:p!=null?p:!1}))))))},wr=C(e=>({titleInput:{marginBottom:e.spacing(1)},regularFontSize:{fontSize:e.typography.fontSize},title:{fontWeight:700,fontSize:e.typography.fontSize}})),wt=({programDescription:e,programDescriptionError:a,handleProgramDescriptionChange:n,disabled:r})=>{const l=wr();return t.createElement(u,{item:!0,xs:12},t.createElement(z,{fullWidth:!0,placeholder:"Example: Make sure the project has a ReadMe file and is using the latest version of JavaScript",value:e,onChange:n,disabled:r,className:l.titleInput,minRows:4,variant:"outlined",size:"small",margin:"normal",multiline:!0,InputProps:{classes:{input:l.regularFontSize}},error:a,helperText:a?"Track description must be at least 1 character and less than 250 characters":""}))};var Sr=(e=>(e.SetProgramNameError="VALIDATE_NAME",e.SetName="SET_NAME",e))(Sr||{});const Lr={programName:"",programNameError:!1},Nr=(e,a)=>{switch(a.type){case"SET_NAME":return{...e,programName:a.value};case"VALIDATE_NAME":return{...e,programNameError:a.value};default:return e}},Tr=(e="")=>{const[a,n]=we(Nr,{...Lr,programName:e}),r=()=>{const s=a.programName.trim().length,i=s>0&&s<=100;return n({type:"VALIDATE_NAME",value:!i}),i},l=s=>{n({type:"SET_NAME",value:s})},o=s=>{l(s.target.value),a.programNameError&&r()};return{programName:a.programName,programNameError:a.programNameError,handleProgramNameChange:o,setProgramName:l,isProgramNameValid:r}};var Pr=(e=>(e.SetProgramDescriptionError="VALIDATE_DESCRIPTION",e.SetDescription="SET_DESCRIPTION",e))(Pr||{});const Dr={programDescription:"",programDescriptionError:!1},Ir=(e,a)=>{switch(a.type){case"SET_DESCRIPTION":return{...e,programDescription:a.value};case"VALIDATE_DESCRIPTION":return{...e,programDescriptionError:a.value};default:return e}},Ar=(e="")=>{const[a,n]=we(Ir,{...Dr,programDescription:e}),r=()=>{const s=a.programDescription.trim().length,i=s>0&&s<=250;return n({type:"VALIDATE_DESCRIPTION",value:!i}),i},l=s=>{n({type:"SET_DESCRIPTION",value:s})},o=s=>{l(s.target.value),a.programDescriptionError&&r()};return{programDescription:a.programDescription,programDescriptionError:a.programDescriptionError,handleProgramDescriptionChange:o,setProgramDescription:l,isProgramDescriptionValid:r}},Rr=({programName:e,programDescription:a,areInputsValid:n,isProgramNameValid:r,isProgramDescriptionValid:l,inputChipsList:o,checkers:s,onSave:i,programId:c,levelNames:m,levelDescriptions:p,filters:d})=>{const{showModal:h}=ve(),{userEntityRef:g}=Ue();return async()=>{if(!(r()&&l()&&n())||!await h({title:"Save Track",message:`Are you sure you want to save track: ${e}?`})||!g)return;const E=c!=null?c:Xe(),v=sn(o,m,p,s),k={description:a,id:E,levels:v,name:e,ownerEntityRef:g,filter:it(d)};i(k)}},$r=e=>{const a=H(()=>e?dn(e):null,[e]),[n,r]=f([]),[l,o]=f(!1),{data:s,isLoading:i}=tt(),c=s==null?void 0:s.edges.map(w=>w.checker),m=H(()=>(c!=null?c:[]).filter(w=>!!w).map(w=>{var S,N,M;return{id:(S=w.id)!=null?S:"",label:(N=w.name)!=null?N:w.id,description:(M=w.description)!=null?M:""}}),[c]),{chips:p,inputChipsList:d,handleDrop:h,handleDelete:g,addInput:E,removeInput:v,inputErrors:k,areInputsValid:T,setInputChipsList:L}=qa(n);return P(()=>{if(!n.length&&m.length&&!l){const{inputChips:w,used:S}=mn(a,m);L(w),r(S),o(!0)}},[m,L,n.length,a,l]),{checkers:c,checkersLoading:i,chips:p,inputChipsList:d,handleDrop:h,handleDelete:g,addInput:E,removeInput:v,inputErrors:k,areInputsValid:T}},Fr=e=>{const[a,n]=f(e);return{levelNames:a,handleLevelNameChange:(r,l)=>{n(a.map((o,s)=>s===l?r:o))},addLevelName:r=>{n([...a,r])},removeLevelName:r=>{n(a.filter((l,o)=>o!==r))}}},Or=e=>{const[a,n]=f(e);return{levelDescriptions:a,handleLevelDescriptionChange:(r,l)=>{n(a.map((o,s)=>s===l?r:o))},addLevelDescription:r=>{n([...a,r])},removeLevelDescription:r=>{n(a.filter((l,o)=>o!==r))}}},Mr=C(e=>({title:{fontWeight:700},filterContainer:{display:"flex",flexWrap:"wrap",padding:e.spacing(2)},description:{fontSize:e.typography.fontSize}})),St=({filters:e,setFilters:a,disabled:n})=>{const r=Mr(),l=o=>s=>{a(o,s)};return t.createElement(fe,{title:n?"Filters":"Filters (optional)"},t.createElement(u,{container:!0,item:!0,xs:12,spacing:2},t.createElement(u,{item:!0},t.createElement(b,{className:r.description},"Apply filters so it's only applicable to relevant entities.")),t.createElement(u,{item:!0,xs:12},t.createElement(Se,null,t.createElement(u,{container:!0,className:r.filterContainer,spacing:2},ut.map(o=>t.createElement(u,{item:!0,xs:12,sm:6,md:4,key:o.stateKey},t.createElement(gt,{facet:o.facet,label:o.label,values:e[o.stateKey],onChange:l(o.stateKey),disabled:n}))))))))};var Vr=(e=>(e.SetFilter="SET_FILTER",e))(Vr||{});const Br={selectedKinds:[],selectedTypes:[],selectedLifecycles:[],selectedOwners:[],selectedSystems:[],selectedTags:[]},Gr=(e,a)=>{switch(a.type){case"SET_FILTER":return{...e,[a.key]:a.values};default:return e}},Lt=e=>{let a=Br;e&&(a=ct(e));const[n,r]=we(Gr,a);return{filters:n,setFilters:(l,o)=>{r({type:"SET_FILTER",key:l,values:o})}}},zr=C(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"}})),Nt=({onSave:e,title:a,open:n,handleClose:r})=>{var l,o,s,i;const{selectedProgram:c,isLoading:m,setSelectedProgram:p}=oe(),{checkers:d,checkersLoading:h,chips:g,inputChipsList:E,handleDrop:v,handleDelete:k,addInput:T,removeInput:L,inputErrors:w,areInputsValid:S}=$r(c),{programName:N,programNameError:M,handleProgramNameChange:q,isProgramNameValid:ie}=Tr(c==null?void 0:c.name),{programDescription:B,programDescriptionError:x,handleProgramDescriptionChange:A,isProgramDescriptionValid:_}=Ar(c==null?void 0:c.description),ye=(o=c?(l=c.levels)==null?void 0:l.map(V=>{var K;return(K=V.name)!=null?K:`Level ${V.ordinal}`}):E.map((V,K)=>`Level ${K+1}`))!=null?o:[],{levelNames:ue,handleLevelNameChange:be,addLevelName:Ce,removeLevelName:ke}=Fr(ye),y=(i=c?(s=c.levels)==null?void 0:s.map(V=>{var K;return(K=V.description)!=null?K:""}):E.map((V,K)=>""))!=null?i:[],{levelDescriptions:F,handleLevelDescriptionChange:ce,addLevelDescription:Tt,removeLevelDescription:Pt}=Or(y),Dt=()=>{T(),Ce(`Level ${E.length+1}`),Tt("")},It=V=>{L(V),ke(V),Pt(V)},{filters:Re,setFilters:At}=Lt(JSON.stringify(c==null?void 0:c.filter)),Rt=Rr({programName:N,programDescription:B,areInputsValid:S,isProgramNameValid:ie,isProgramDescriptionValid:_,inputChipsList:E,checkers:d,onSave:e,programId:c==null?void 0:c.id,levelNames:ue,levelDescriptions:F,filters:Re}),xe=zr(),$e=ht(),J=c?!(c!=null&&c.isEditable):!1;return t.createElement(lt,{handleClose:r,title:a,open:n},t.createElement(u,{container:!0,spacing:4,className:xe.root},t.createElement(u,{item:!0,xs:12},t.createElement(u,{item:!0,xs:12},t.createElement(b,{className:$e.sectionLabel,style:{margin:0}},"Track Details"),t.createElement(bt,{disabled:m||J,programName:N,programNameError:M,handleProgramNameChange:q})),t.createElement(u,{item:!0,xs:12},t.createElement(wt,{disabled:m||J,programDescription:B,programDescriptionError:x,handleProgramDescriptionChange:A}))),t.createElement(u,{item:!0,xs:12},t.createElement(St,{disabled:J,filters:Re,setFilters:At})),t.createElement(u,{item:!0,xs:12},t.createElement(u,{container:!0,spacing:4},t.createElement(u,{item:!0,xs:12},t.createElement(b,{className:$e.sectionLabel,style:{margin:0}},"Track Levels"),t.createElement(b,{className:xe.description},"Add the checks that apply to each level. You can preview the checks to see the rules that apply to each check.")),t.createElement(u,{item:!0,xs:5},t.createElement(gr,{chips:g,isLoading:h||m,disabled:J})),t.createElement(u,{item:!0,xs:7},t.createElement(xr,{inputChipsList:E,handleDelete:k,handleDrop:v,addInput:Dt,removeInput:It,levelsErrors:w,levelNames:ue,handleLevelNameChange:be,levelDescriptions:F,handleLevelDescriptionChange:ce,disabled:J}))))),t.createElement(u,{container:!0,spacing:4,className:xe.root},t.createElement(at,{onCancel:()=>{p(null),r()},saveButtonText:"Save Track",isLoading:m||h,onSave:Rt,disableSave:J})))},Wr=()=>{const{setIsLoading:e,setShowAddModal:a,showAddModal:n}=oe(),{mutateAsync:r,isLoading:l}=Wa();return P(()=>{e(l)},[e,l]),t.createElement(Nt,{handleClose:()=>a(!1),title:"Create Track",open:n,onSave:async o=>{await r(o)&&window.open("/soundcheck/tracks","_self")}})},qr="Error Updating Track";function Kr(){const e=I(O),a=ae(),{showAlert:n}=Q(),r=async l=>{const o=await e.updateProgram(l);if(!o)throw new Error("Failed to update track.");return o};return ne([re.UpdateProgram],r,{onSuccess:async()=>{await a.invalidateQueries({queryKey:[$.GetAllPrograms]})},onError:l=>{let o="Failed to update track.";l instanceof Error&&(o=l.message),n({severity:"error",title:qr,message:o})}})}const Ur=()=>{const{setSelectedProgram:e,setIsLoading:a,selectedProgram:n}=oe(),{mutateAsync:r,isLoading:l}=Kr();P(()=>a(l),[a,l]);const o=async s=>{await r(s)&&e(null)};return t.createElement(Nt,{handleClose:()=>e(null),title:n!=null&&n.isEditable?"Edit Track":"View Track",open:!!n,onSave:o})},_r=C(e=>({programsPageContainer:{padding:e.spacing(3)},headerButtons:{display:"flex",gap:e.spacing(1),flexWrap:"nowrap"}})),Hr=()=>{const{selectedProgram:e,showAddModal:a}=oe(),[n]=Me(),r=n.get("tracksPerPage"),l=r?parseInt(r,10):10,o=_r(),s="Programs will now be referred to as Tracks throughout the Soundcheck UI.";return t.createElement("div",{className:o.programsPageContainer},t.createElement(Bt,{variant:"info",message:s,id:"programTrackBanner"}),t.createElement(Ia,{backend:Aa},t.createElement(ir,{programsPerPage:l}),a&&t.createElement(Wr,null),e&&t.createElement(Ur,null)))},jr=C(e=>({programsPageContainer:{padding:e.spacing(3)},lists:{padding:e.spacing(2)},checksDescription:{padding:"0 0 10px 5px"},levelHeader:{marginBottom:"10px"},chip:{marginTop:"10px"}})),Qr=({})=>{var e,a;const n=jr(),r=window.location.pathname.split("tracks/")[1],{data:l,isLoading:o}=Ga(r||""),s=(e=l==null?void 0:l.edges[0])==null?void 0:e.program,{filters:i,setFilters:c}=Lt(s==null?void 0:s.filter),m=()=>{window.open("/soundcheck/tracks","_self")};return t.createElement(t.Fragment,null,t.createElement("div",{className:n.programsPageContainer},o?"loading":t.createElement(u,{container:!0,spacing:3},t.createElement(u,{item:!0,xs:12},t.createElement(b,{variant:"h4"},"Owner: ",s==null?void 0:s.ownerEntityRef)),t.createElement(u,{item:!0,xs:12},t.createElement(bt,{disabled:!0,programName:s?s.name:"",programNameError:!1,handleProgramNameChange:()=>null})),t.createElement(u,{item:!0,xs:12},t.createElement(wt,{disabled:!0,programDescription:s!=null&&s.description?s.description:"",programDescriptionError:!1,handleProgramDescriptionChange:()=>null})),t.createElement(u,{item:!0,xs:12},t.createElement(St,{disabled:!0,filters:i,setFilters:c})),t.createElement(u,{item:!0,xs:12},t.createElement(Le,null,t.createElement(ze,null,t.createElement(u,{container:!0,spacing:4},t.createElement(u,{item:!0,xs:12},t.createElement(Ee,{dense:!0,className:n.lists},(a=s==null?void 0:s.levels)==null?void 0:a.map((p,d)=>t.createElement("div",{key:`levels-${d}`},t.createElement(b,{className:n.levelHeader,variant:"h6"},p.name),t.createElement(j,null,"Description: ",p.description),t.createElement(Ee,{key:`levels-${d}`,dense:!0,className:n.lists},t.createElement(b,{variant:"h6"},"Checks"),p.checks.map((h,g)=>t.createElement("div",{key:`checks-${g}`},t.createElement(Ne,{key:h.name+g,label:h.name,className:n.chip}),t.createElement(X,{divider:!0,className:n.checksDescription},h.description)))))))))))))),t.createElement(R,{variant:"contained",color:"primary",onClick:m},"Track List"))},Jr=()=>{const e=window.location.pathname.split("tracks/");return t.createElement(Ua,null,e[1]?t.createElement(Qr,null):t.createElement(Hr,null))},Yr=C(()=>({tabContent:{margin:0,padding:0}})),Xr=({title:e="Soundcheck"})=>{const a=Yr(),[n,r]=ra(),{group:l}=n,[o,s]=f(void 0),i=m=>{m&&r({...n,group:m})},c=$t();return t.createElement(pa,null,t.createElement(la,null,t.createElement(ua,null,t.createElement(ga,null,t.createElement(Gt,{themeId:"website"},t.createElement(Wt,{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(zt,{title:e},c.pathname.split("/").length-1===1&&t.createElement(oa,{onChange:i,initialValue:l,setError:s})),t.createElement(Ft,null,t.createElement(Ot,{path:"/*",element:t.createElement(ge,null,t.createElement(ge.Route,{title:"Overview",path:"/"},t.createElement("div",{className:a.tabContent},t.createElement(sa,{groupSelectorError:o,searchParams:n,setSearchParams:r}))),t.createElement(ge.Route,{title:"Checks",path:"/checks"},t.createElement(er,null)),t.createElement(ge.Route,{title:"Tracks",path:"/tracks"},t.createElement(Jr,null)))})))))))};export{Xr as RoutingPage};
|
|
2
|
-
//# sourceMappingURL=index-e398f5c6.esm.js.map
|