@spotify/backstage-plugin-soundcheck 0.8.2 → 0.9.1

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 CHANGED
@@ -1,5 +1,43 @@
1
1
  # @spotify/backstage-plugin-soundcheck
2
2
 
3
+ ## 0.9.1
4
+
5
+ ### Patch Changes
6
+
7
+ - Upgraded Backstage to `v1.20.3`.
8
+ - Updated dependency `cross-fetch` to `^4.0.0`.
9
+ - Added Track owner select to Track form.
10
+ - Checks are now linkable by id via the following url format `soundcheck/checks/:checkId`. Pages will now properly link to the check instead of the checks list page.
11
+ - Renamed Soundcheck menu options for Checks, Tracks, and Collectors to include "Library".
12
+ - Tracks are now linkable by id via the following url format `soundcheck/tracks/:trackId`. Pages will now properly link to the track instead of the tracks list page.
13
+ - Check descriptions, check passed messages, check failed messages, and track descriptions now support markdown in the UI.
14
+ - Updated dependencies
15
+ - @spotify/backstage-plugin-soundcheck-common@0.9.1
16
+ - @spotify/backstage-plugin-core@0.5.8
17
+
18
+ ## 0.9.0
19
+
20
+ ### Minor Changes
21
+
22
+ - Added entity type/lifecycle/kind filters to Soundcheck's Tech Health page.
23
+
24
+ ### Patch Changes
25
+
26
+ - Resolved an issue with Check filters generated via UI not applying to parent Tracks.
27
+
28
+ Resolved an edge case where the displayed entity counts on the Overview page tabs could be mismatched.
29
+
30
+ - Added grid view for Checks, Tracks, Entities and Teams tabs on Tech Health page.
31
+ - Souncheck's overview table will now show entities by title rather than name if title is present.
32
+ - Added .csv export functionality to the Soundcheck Tech Health pages.
33
+ - Added "Export to CSV" buttons for graphs on Tech Health Summary Page.
34
+ - Updated default page pagination to 10 and enabled pagination options on the Soundcheck Checks and Tracks pages.
35
+ - Resolved an issue that could prevent newly created tracks from displaying on the Tech Health page and recently deleted tracks are now immediately removed.
36
+ - Upgraded Backstage to v1.19.0
37
+ - Updated dependencies
38
+ - @spotify/backstage-plugin-soundcheck-common@0.9.0
39
+ - @spotify/backstage-plugin-core@0.5.7
40
+
3
41
  ## 0.8.2
4
42
 
5
43
  ### Patch Changes
@@ -61,10 +99,6 @@
61
99
  - Resolved an issue where newly added Checks would not immediately show up in the Track UI.
62
100
  - Resolved an issue where the text for warning messages on the Soundcheck Group page was not accurate.
63
101
  - Tooltips in the overview table now support Markdown in check descriptions.
64
- - Updated dependencies
65
- - Updated dependencies
66
- - Updated dependencies
67
- - Updated dependencies
68
102
  - Updated dependencies
69
103
  - @spotify/backstage-plugin-soundcheck-common@0.8.0
70
104
  - @spotify/backstage-plugin-core@0.5.6
package/README.md CHANGED
@@ -45,6 +45,7 @@ Together, they show you how any given software component is performing against y
45
45
  - [Aggregations](#aggregations)
46
46
  - [Filters](#filters-1)
47
47
  - [Trends](#trends)
48
+ - [Data Export](#data-export)
48
49
  <!-- TOC -->
49
50
 
50
51
  ## Prerequisites
@@ -331,15 +332,21 @@ The check result and certification data can be aggregated by:
331
332
  The data can be filtered by the following categories:
332
333
 
333
334
  - `Entities`: check and certification pass rates will be calculated only for selected entities.
334
- - `Entity Owners`: check and certification pass rates will be calculated only for the entities
335
+ - `Entity Kind`: check and certification pass rates will be calculated only for the entities
336
+ with selected kinds.
337
+ - `Entity Type`: check and certification pass rates will be calculated only for the entities
338
+ with selected types.
339
+ - `Entity Owner`: check and certification pass rates will be calculated only for the entities
335
340
  owned by selected teams and their child teams recursively.
341
+ - `Entity Lifecycle`: check and certification pass rates will be calculated only for the entities
342
+ with selected lifecycles.
336
343
  - `Tracks`: check and certification pass rates will be calculated only for selected tracks and
337
344
  checks included in these tracks.
338
- - `Track Levels`: check and certification pass rates will be calculated only for selected track
345
+ - `Track Level`: check and certification pass rates will be calculated only for selected track
339
346
  levels and checks included in these track levels.
340
347
  - `Checks`: check pass rates will be calculated only for selected checks. Certification pass rates
341
348
  will be calculated only for track levels that include these checks.
342
- - `Check Owners`: check pass rates will be calculated only for the checks owned by selected teams.
349
+ - `Check Owner`: check pass rates will be calculated only for the checks owned by selected teams.
343
350
  Certification pass rates will be calculated only for track levels that include checks owned by
344
351
  selected teams.
345
352
 
@@ -356,3 +363,9 @@ Check result history and certification history must be enabled in order to be ab
356
363
 
357
364
  - [Enabling check result history](https://www.npmjs.com/package/@spotify/backstage-plugin-soundcheck-backend#enabling-check-result-history)
358
365
  - [Enabling certification history](https://www.npmjs.com/package/@spotify/backstage-plugin-soundcheck-backend#enabling-certification-history)
366
+
367
+ ### Data Export
368
+
369
+ The aggregated data from each Tech Health Page tab can be exported into a Comma-Separated Values (CSV)
370
+ file format. The CSV format is widely supported and can be easily imported into various data analysis
371
+ tools, spreadsheets, and databases.
package/config.d.ts CHANGED
@@ -11,5 +11,14 @@ export interface Config {
11
11
  * @visibility frontend
12
12
  */
13
13
  reporting?: boolean;
14
+ /**
15
+ * @visibility frontend
16
+ */
17
+ campaigns?: {
18
+ /**
19
+ * @visibility frontend
20
+ */
21
+ enable?: boolean;
22
+ };
14
23
  };
15
24
  }
@@ -0,0 +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-a31faa1d.esm.js";import{s as H,R as c,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-c3aebdd7.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 oe from"react-use/lib/useMeasure";import A from"react-use/lib/usePrevious";import ce 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";import"../images/empty-state.svg";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={[c.Passed]:"success",[c.Failed]:"error",[c.NotReported]:"info",[c.NotApplicable]:"info"}[t],i={[c.Passed]:"Check passed",[c.Failed]:"Check did not pass",[c.NotReported]:"Check not reported",[c.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:o}=se(r,t,n);if(o)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:o}=x(i,t),[h,{width:d,height:v}]=oe(),m=o?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(ce,{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:o,name:h},highestLevel:d})=>e.createElement(fe,{key:o,id:o,name:h,badge:d==null?void 0:d.badge,selected:o===t,href:i({trackId:o})})))},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:o}=C(r);return i?e.createElement(y,{severity:"error",title:"Error loading certifications"}):l&&!(o!=null&&o.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),o=(n=(t=l==null?void 0:l.levels[0])==null?void 0:t.checks[0])==null?void 0:n.id;return o?e.createElement(I,{to:i({trackId:r,checkId:o}),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-d8bf249e.esm.js.map
@@ -0,0 +1,2 @@
1
+ import t,{useState as L,useEffect as E,useMemo as P,useCallback as M,createContext as ge,useContext as he,memo as b,Fragment as fe}from"react";import{useSearchParams as ye}from"react-router-dom";import{makeStyles as f,alpha as j,TextField as ve,CircularProgress as Ee,Tooltip as K,LinearProgress as ke,withStyles as be,Grid as C,Typography as k}from"@material-ui/core";import Ce from"@material-ui/lab/Autocomplete";import{stringifyEntityRef as A,parseEntityRef as x}from"@backstage/catalog-model";import{useApi as v,identityApiRef as U,useRouteRef as F,configApiRef as Re}from"@backstage/core-plugin-api";import{useQuery as T}from"@tanstack/react-query";import{s as D,R,h as we,B as Ne,L as Q,N as _,Q as q,A as $e,d as xe,j as Te}from"./index-c3aebdd7.esm.js";import{catalogApiRef as B,humanizeEntityRef as O,entityRouteRef as S}from"@backstage/plugin-catalog-react";import Ie from"react-use/lib/useAsync";import{HeaderTabs as J,MarkdownContent as Le,Link as z,EmptyState as Be}from"@backstage/core-components";import{R as Oe}from"./RefetchingIndicator-a31faa1d.esm.js";import Pe,{countBy as X}from"lodash";import{Skeleton as H}from"@material-ui/lab";import{VariableSizeGrid as Ae}from"react-window";function Y(e,r){const a=v(D);return T(["soundcheck/track-overview-for-owner",e,r],async()=>a.getProgramOverviewForOwner(e,r),{enabled:!!e&&!!(r!=null&&r.kind)})}function Z(){const e=v(B);return T(["soundcheck/all-groups"],async()=>{const{items:r}=await e.getEntities({filter:{kind:"Group"},fields:["spec.profile.displayName","metadata.title","metadata.name","metadata.namespace","kind"]});return r.filter(a=>(a==null?void 0:a.kind)==="Group").map(a=>{var n,l,s,i;return{name:(i=(s=(l=(n=a.spec)==null?void 0:n.profile)==null?void 0:l.displayName)!=null?s:a.metadata.title)!=null?i:a.metadata.name,ref:A(a)}})},{staleTime:5*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})}function Fe(){const e=v(U),r=v(B);return T(["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,s,i,c;return{name:(c=(i=(s=(l=n.spec)==null?void 0:l.profile)==null?void 0:s.displayName)!=null?i:n.metadata.title)!=null?c:n.metadata.name,ref:A(n)}})})}function Se(e){const r=v(D);return T(["soundcheck/facets-for-owner",e],async()=>r.getFacetsForOwner(e),{enabled:!!e})}const ze=()=>{const[e,r]=ye(),a=Object.fromEntries(e.entries()),[n,l]=L(a);return E(()=>{r(n,{replace:!0})},[n]),[n,l]},ee=()=>{const{data:e,isLoading:r,isError:a}=Fe(),{data:n,isLoading:l,isError:s}=Z();return{options:P(()=>{const i=new Map;return e&&e.forEach(({name:c,ref:o})=>{i.set(`${o}`,{name:c,ref:o,key:"My Groups"})}),n&&n.forEach(({name:c,ref:o})=>{i.has(`${o}`)||i.set(`${o}`,{name:c,ref:o,key:"All Groups"})}),[...i.values()]},[e,n]),isLoading:r||l,isError:a||s}},He=f(e=>({root:{width:"100%",minWidth:250},textField:{"& $notchedOutline":{borderColor:j(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:{}})),We=e=>{const{onChange:r,initialValue:a,setError:n}=e,{options:l,isLoading:s,isError:i}=ee(),c=He(),[o,d]=L(null);E(()=>{if(!s&&l!=null&&l.length&&!o){const m=a?l.find(p=>p.ref===a):l[0];m&&(d(m),r==null||r(m.ref))}},[s,l,o,r,a]);const u=M((m,p)=>{d(p),r==null||r(p==null?void 0:p.ref)},[r,d]);return E(()=>{n==null||n(i?new Error("Error loading groups"):void 0)},[i,n]),i?null:t.createElement(Ce,{"aria-label":"Current group",className:c.root,classes:{clearIndicator:c.clearIndicator,popupIndicator:c.popupIndicator},disableClearable:!0,options:l!=null?l:[],loading:s,groupBy:m=>m.key,value:o,freeSolo:!1,onChange:u,getOptionLabel:m=>m.name,renderInput:m=>t.createElement(ve,{...m,variant:"outlined",placeholder:s?"Loading":"Select a group",className:c.textField,InputProps:{...m.InputProps,className:c.input,classes:{notchedOutline:c.notchedOutline},endAdornment:t.createElement(t.Fragment,null,s?t.createElement(Ee,{color:"inherit",size:20}):null,m.InputProps.endAdornment)}})})},te={loading:!1},re=ge(te),Ge=()=>he(re),Ve=({children:e})=>{const[r,a]=L(te),n=v(B),l=v(U),{value:s,loading:i,error:c}=Ie(async()=>{const[{token:o},d]=await Promise.all([l.getCredentials(),l.getBackstageIdentity()]);return o?await n.getEntityByRef(d.userEntityRef):null},[n,l]);return E(()=>{if(s){const o=A(s);a({user:s,userEntityRef:o,loading:i,error:c})}else a({loading:i,error:c})},[s,i,c]),t.createElement(re.Provider,{value:r},e)},Me=e=>({key:`skeleton${e}`,label:"",id:`skeleton${e}`}),je=()=>{const e=Array.from({length:4},(r,a)=>Me(a));return t.createElement(J,{tabs:e})},Ke=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)}})),Ue=({unfilteredFacets:e,onChange:r,kind:a,type:n})=>{var l,s,i;const c=Ke(),o={types:(l=e==null?void 0:e.types.filter(({count:p})=>p>0))!=null?l:[]},d=M(p=>{var g;r((g=o==null?void 0:o.types[p].kind)!=null?g:"",o==null?void 0:o.types[p].type)},[o==null?void 0:o.types,r]);E(()=>{var p,g,y;const h=(o==null?void 0:o.types)&&o.types.length>=0,I=!a&&h,G=a&&h&&!(o!=null&&o.types.find(({kind:N,type:$})=>a===N&&(!n&&!$||n===$)));(I||G)&&r((g=(p=o==null?void 0:o.types[0])==null?void 0:p.kind)!=null?g:"",(y=o==null?void 0:o.types[0])==null?void 0:y.type)},[a,n,o==null?void 0:o.types,r]);const u=(s=o==null?void 0:o.types.map(({kind:p,type:g,count:y})=>{const h=`${p}|${g!=null?g:""}`;return{key:h,label:`${g!=null?g:p} (${y>50?"50+":y})`,id:h,tabProps:{className:c.tab}}}))!=null?s:[];if(!u.length)return null;const m=(i=o==null?void 0:o.types.findIndex(p=>p.kind===a&&(!p.type&&!n||p.type===n)))!=null?i:-1;return t.createElement(t.Fragment,null,t.createElement(Oe,null),t.createElement(J,{onChange:d,tabs:u,selectedIndex:m>-1?m:void 0}))},De=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"}})),ae=e=>{var r,a;const n=De(e),l=P(()=>Object.entries(e.progress).reduce((i,[,c])=>i+c,0),[e.progress]);if(l===0)return null;const s=(r=e.progress[R.Passed])!=null?r:0;return t.createElement(K,{arrow:!0,title:`Check passing for ${s} of ${l} ${l===1?"entity":"entities"}`,enterDelay:0,placement:"top"},t.createElement(ke,{variant:"determinate",value:((a=e.progress[R.Passed])!=null?a:0)/l*100,classes:{root:n.root,bar:n.bar}}))},Qe=f(e=>({headerWrapper:{marginTop:e.spacing(.5)},entityRefName:{fontWeight:"bold"},iconWrapper:{padding:e.spacing(1.5,.5),display:"flex",alignItems:"center",justifyContent:"center"}})),_e=({check:{name:e,description:r},icon:a,entityRef:n})=>{const l=Qe(),s=x(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(k,{variant:"h6",className:l.headerWrapper,noWrap:!0},e)),t.createElement(C,{item:!0,wrap:"nowrap"},t.createElement(k,{variant:"subtitle2",className:l.entityRefName},O(s,{defaultKind:s.kind}))),t.createElement(Le,{content:r}))},qe=be(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),Je=({children:e,check:r,icon:a,entityRef:n})=>t.createElement(qe,{arrow:!0,title:t.createElement(_e,{check:r,icon:a,entityRef:n}),enterDelay:150,placement:"top"},e),Xe=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}`}})),ne=b(({programId:e,check:r,entityRef:a,result:n,entityRoute:l,isVirtualized:s})=>{const i=Xe();if(typeof a!="string"){const u=t.createElement("div",{className:i.iconWrapper},t.createElement("div",{className:i.icon}));return s?t.createElement("div",{className:`${i.root} ${i.virtualized}`,"aria-hidden":!0},u):t.createElement("td",{className:i.root,"aria-hidden":!0},u)}const c=t.createElement(we,{className:i.icon,result:n!=null?n:R.NotReported}),o=t.createElement("div",{className:i.iconWrapper},c),d=n&&n===R.NotApplicable?o:t.createElement(z,{className:i.link,to:`${l(x(a))}/soundcheck/${e}/${r.id}`},o);return s?t.createElement("div",{className:`${i.root} ${i.virtualized}`},t.createElement(Je,{check:r,icon:c,entityRef:a},d)):t.createElement("td",{className:`${i.root}`},d)}),le=8,Ye=16,w={programTitle:70,levelTitle:30,check:42,entityRefFooter:100},W={programTitle:350+Ye*2,checkResult:42},Ze=e=>e.reduce((r,a)=>r+a.height,0),et=e=>e*W.checkResult+W.programTitle,tt=e=>e.filter(r=>r!==void 0).map(r=>{const a=x(r);return O(a,{defaultKind:a.kind})}).reduce((r,a)=>r.length>a.length?r:a,""),rt=e=>le*e+le,oe="NoLevel",at=e=>({name:oe,badge:{options:{level:0,color:""},variant:Ne.Medal},entityRef:e,ordinal:0}),ie=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:`${w.check}px`,lineHeight:`${w.check}px`,borderBottom:`1px solid ${e.palette.divider}`,borderRight:`1px solid ${e.palette.divider}`}})),nt=b(({programId:e,programName:r,check:a,entityRefs:n,results:l,entityRoute:s})=>{const i=ie(),c=P(()=>X(l.filter(({result:d})=>d!==R.NotApplicable),"result"),[l]),o=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(k,{className:i.checkNameTypography,variant:"subtitle2",component:"p"},a.name),t.createElement(ae,{className:i.checkIndicator,progress:c}))),n.map((d,u)=>t.createElement(ne,{key:u,programId:e,check:a,entityRef:d,result:typeof d=="string"?o.get(d):void 0,entityRoute:s})))}),lt=({name:e,progress:r})=>{const a=ie();return t.createElement("div",{className:a.checkNameCell,"aria-label":`${e} check`},t.createElement("div",{className:`${a.checkNameContent} ${a.checkNameCellVirtualized}`},t.createElement(k,{variant:"subtitle2",component:"p",className:a.checkNameTypography},e),t.createElement(ae,{className:a.checkIndicator,progress:r})))},ot=f(e=>({virtualized:{borderRight:`1px solid ${e.palette.divider}`,height:`${w.programTitle}px`,display:"flex",justifyContent:"center",alignItems:"center"}})),it=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(Q,{badge:a.badge}):t.createElement(_,null))}),st=({highestLevel:e})=>{const r=ot();if(!(e!=null&&e.badge))return t.createElement("div",{className:r.virtualized},"\xA0");const a=e.name!==oe;return t.createElement("div",{className:r.virtualized},a?t.createElement(Q,{badge:e.badge}):t.createElement(_,null))},se=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}`}})),ct=b(({program:e,entityRefs:r,highestLevels:a})=>{const n=se();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(k,{className:n.programNameTypography,variant:"h5",component:"p"},e.name))),r.map((l,s)=>typeof l!="string"?t.createElement("td",{key:s,"aria-hidden":!0}):t.createElement("td",{key:s,"data-testid":"track-certification-cell"},t.createElement("div",{className:n.badgeCellContent},t.createElement(it,{entityRef:l,highestLevels:a})))))}),dt=b(({name:e})=>{const r=se();return t.createElement("div",{className:`${r.programNameCell} ${r.programNameCellVirtualized}`},t.createElement("div",{className:r.programNameContent},t.createElement(k,{className:r.programNameTypography,variant:"h5",component:"p"},e)))}),V=f(e=>{const r=e.palette.type==="dark"?e.palette.grey[700]:e.palette.grey[100];return{root:{color:j(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:`${w.levelTitle}px`}}}),pt=b(({level:e,entityRefs:r,programName:a})=>{const n=V();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(k,{className:n.levelTypography,variant:"subtitle2",component:"p","aria-label":`${e.name} for ${a} track`},e.name))),r.map((l,s)=>t.createElement("td",{key:s,className:n.root,"aria-hidden":!0})))}),mt=({name:e})=>{const r=V();return t.createElement("div",{className:`${r.levelHeaderCell} ${r.root}`,"aria-label":`${e}`},t.createElement(k,{variant:"subtitle2",component:"p",className:r.levelTypography},e))},ut=()=>{const e=V();return t.createElement("div",{className:`${e.levelHeaderCell} ${e.root}`},"\xA0")},gt=({program:e,highestLevels:r,levels:a,entityRefs:n,entityRoute:l})=>t.createElement("tbody",null,t.createElement(ct,{program:e,entityRefs:n,highestLevels:r}),a.map((s,i)=>t.createElement(fe,{key:i},t.createElement(pt,{entityRefs:n,level:s,programName:e.name}),s.checks.map(({check:c,results:o},d)=>t.createElement(nt,{key:d,check:c,programId:e.id,programName:e.name,entityRefs:n,results:o,entityRoute:l}))))),ce=e=>{const r=v(B);return T([q.EntityByRef,e],async()=>r.getEntityByRef(e),{onError:()=>{},enabled:!!e})},ht=e=>{const r=v(B);return T([q.EntitiesByRefs,e],async()=>r.getEntitiesByRefs({entityRefs:e.entityRefs,fields:e.fields}),{onError:()=>{},enabled:!!e.entityRefs})},de=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)"}})),ft=({entityRefs:e})=>{const r=F(S),a=de(),{data:n}=ht({entityRefs:Pe.compact(e),fields:["kind","metadata.name","metadata.namespace","metadata.title"]});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((l,s)=>{if(typeof l!="string")return t.createElement("th",{key:s,className:a.cell,"aria-hidden":!0});const i=x(l),c=n==null?void 0:n.items.find(o=>o&&A(o)===l);return t.createElement("th",{scope:"col",key:s,className:a.cell},t.createElement("div",{className:a.cellInner},t.createElement(z,{to:r(i)},c!=null&&c.metadata.title?c.metadata.title:O(i,{defaultKind:i.kind}))))})))},yt=({entityRef:e})=>{const{data:r}=ce(e),a=F(S),n=de(),l=e?x(e):void 0,s=l?t.createElement(z,{to:a(l)},r!=null&&r.metadata.title?r.metadata.title:O(l,{defaultKind:l.kind})):t.createElement(t.Fragment,null);return t.createElement("div",{className:n.cell},t.createElement("div",{className:n.cellInner},s))},vt=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]}})),pe=()=>{const e=vt(),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(H,{width:180,height:40})),r.map((l,s)=>t.createElement("td",{key:s}))),n.map((l,s)=>t.createElement(t.Fragment,{key:s},t.createElement("tr",{className:e.header},t.createElement("td",{className:e.title},t.createElement(H,{width:180})),r.map((i,c)=>t.createElement("td",{key:c}))),a.map((i,c)=>t.createElement("tr",{key:c},t.createElement("td",{className:e.title},t.createElement(H,{width:240})),r.map((o,d)=>t.createElement("td",{key:d,className:e.checkResult},t.createElement(H,{width:18,height:18,variant:"rect"})))))))))},Et=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}`}}})),kt=b(e=>{const{setError:r,kind:a,type:n,ownerEntityRef:l}=e,s=Et(),i=F(S),{data:c,isLoading:o,isError:d}=Y(l,{kind:a,type:n});if(E(()=>{r==null||r(d?new Error("Error loading track overview"):void 0)},[d,r]),o)return t.createElement(pe,null);if(!c||!l)return null;const{programs:u,entityRefs:m}=c;if(!o&&!u.length)return t.createElement(Be,{missing:"data",title:"Missing tracks",description:t.createElement(t.Fragment,null,"Looks like the group"," ",O(x(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(z,{to:"https://www.npmjs.com/package/@spotify/backstage-plugin-soundcheck-backend#entity-filter"},"docs"),".")});if(d)return null;const p=m.length>=25?m:[...m,...Array.from({length:25-m.length},()=>{})];return t.createElement("div",{className:s.root},t.createElement("table",{className:s.table,"aria-label":"Check results"},u.map(({program:g,levels:y,highestLevels:h},I)=>t.createElement(gt,{key:I,program:g,entityRefs:p,levels:y,highestLevels:h,entityRoute:i})),t.createElement(ft,{entityRefs:p})))}),bt=e=>t.createElement(dt,{name:e}),Ct=e=>({type:"ProgramHeader",render:()=>bt(e)}),Rt=e=>e?t.createElement(mt,{name:e}):t.createElement(ut,null),me=e=>({type:"LevelHeader",render:()=>Rt(e)}),wt=(e,r)=>t.createElement(lt,{name:e,progress:r}),Nt=(e,r)=>({type:"CheckTitle",render:()=>wt(e,r)}),$t=(e,r,a,n,l)=>t.createElement(ne,{check:r,entityRef:a,entityRoute:l,programId:e,result:n,isVirtualized:!0}),xt=(e,r,a,n,l)=>({type:"CheckResult",render:()=>$t(e,r,a,n,l)}),Tt=e=>t.createElement(yt,{entityRef:e}),ue=e=>({type:"EntityHeader",render:()=>Tt(e)}),It=e=>t.createElement(st,{highestLevel:e}),Lt=e=>({type:"LevelBadge",render:()=>It(e)}),Bt=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})},Ot=(e,r,a)=>{var n;const l=[];for(const{program:i,levels:c,highestLevels:o}of e){l.push({height:w.programTitle,cells:[Ct(i.name),...r.map(d=>{const u=d?o.find(m=>m.entityRef===d)||at(d):void 0;return Lt(u)})]});for(const d of c){l.push({height:w.levelTitle,cells:[me(d.name),...r.map(u=>me(""))]});for(const{check:u,results:m}of d.checks)l.push({height:w.check,cells:[Nt(u.name,X(m.filter(({result:p})=>p!==R.NotApplicable),"result")),...r.map(p=>{var g,y;return xt(i.id,u,p,(y=(g=m.find(h=>h.entityRef===p))==null?void 0:g.result)!=null?y:R.NotApplicable,a)})]})}}const s=tt(r!=null?r:[]);return l.push({height:rt((n=s.length)!=null?n:1),cells:[ue(""),...r.map(i=>ue(i||""))]}),l},Pt=f(e=>({table:{backgroundColor:e.palette.background.paper,borderCollapse:"collapse",whiteSpace:"nowrap",textAlign:"left",overflow:"auto"}})),At=e=>{const{setError:r,kind:a,type:n,ownerEntityRef:l}=e,s=Pt(),i=F(S),{data:c,isLoading:o,isError:d}=Y(l,{kind:a,type:n});if(E(()=>{r==null||r(d?new Error("Error loading program overview"):void 0)},[d,r]),o)return t.createElement(pe,null);if(!c||!l)return null;const{programs:u,entityRefs:m}=c,p=m.length>=25?m:[...m,...Array.from({length:25-m.length},()=>{})],g=Ot(u,p,i),y=Bt(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(Ae,{className:s.table,columnCount:p.length+1,columnWidth:h=>h===0?W.programTitle:W.checkResult,rowCount:g.length,rowHeight:h=>g[h].height,height:Ze(g),width:et(p.length)},y))},Ft=({facets:e,ownerEntityRef:r,kind:a,type:n,setError:l})=>{const s=P(()=>{const i=new Map;return e.types.forEach(({kind:c,type:o})=>{const d=`${c}|${o!=null?o:""}`;i.set(d,t.createElement(At,{key:d,ownerEntityRef:r,kind:c,type:o,setError:l}))}),i},[e,r,l]);return t.createElement("div",null,s.get(`${a}|${n!=null?n:""}`))},St=f(()=>({scrollContainer:{overflow:"auto"}})),zt=({facets:e,ownerEntityRef:r,hasError:a,kind:n,type:l,setError:s,useVirtualizedResultsTable:i,isFixedGroup:c})=>{var o,d,u;const m=St();if(a)return t.createElement($e,{severity:"error",title:a.message});const p="Use the groups drop-down list at the top-right of the page to select another group.";return e&&((d=(o=e.types)==null?void 0:o.length)!=null?d:0)>0?(u=e.types)!=null&&u.find(g=>g.count>0)?t.createElement("div",{className:m.scrollContainer},i?t.createElement(Ft,{facets:e,kind:n,type:l,setError:s,ownerEntityRef:r,hasError:a}):t.createElement(kt,{ownerEntityRef:r,kind:n,type:l,setError:s})):t.createElement(xe,{ownerEntityRef:r,selectGroupHint:p}):t.createElement(Te,{ownerEntityRef:r,selectGroupHint:c?void 0:p})},Ht=f(()=>({tableContainer:{padding:0,backgroundColor:"transparent"}})),Wt=({groupSelectorError:e,searchParams:r,setSearchParams:a,isFixedGroup:n=!1})=>{var l;const{group:s,kind:i,type:c}=r,[o,d]=L(void 0),[u,m]=L(void 0);E(()=>{((o==null?void 0:o.kind)!==i||(o==null?void 0:o.type)!==c)&&d({kind:i,type:c})},[i,c,o]);const{data:p,isLoading:g}=Se(s),y=(l=v(Re).getOptionalBoolean("soundcheck.virtualizeOverviewPage"))!=null?l:!0,h=u||e,I=(N,$)=>{N&&(d({kind:N,type:$}),$?a({...r,kind:N,type:$}):(r!=null&&r.hasOwnProperty("type")&&delete r.type,a({...r,kind:N})))},G=Ht();return t.createElement(C,{container:!0,spacing:0},t.createElement(C,{item:!0,xs:12},g?t.createElement(je,null):t.createElement(Ue,{unfilteredFacets:p,kind:o==null?void 0:o.kind,type:o==null?void 0:o.type,onChange:I})),t.createElement(C,{item:!0,xs:12,className:G.tableContainer},!g&&t.createElement(zt,{facets:p,kind:o==null?void 0:o.kind,type:o==null?void 0:o.type,setError:m,hasError:h,ownerEntityRef:s,useVirtualizedResultsTable:y,isFixedGroup:n})))};export{We as G,Wt as O,Ve as U,ee as a,Ge as b,Z as c,ce as d,ze as u};
2
+ //# sourceMappingURL=OverviewPageContent-5557813a.esm.js.map
@@ -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-7b347cd4.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-e114bc04.esm.js.map
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-c3aebdd7.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-a31faa1d.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-5557813a.esm.js";import{S as l,w as y,e as p,i as u}from"./index-c3aebdd7.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{Routes as C,Route as G}from"react-router-dom";import{makeStyles as L}from"@material-ui/core";import"@material-ui/lab/Autocomplete";import"react-use/lib/useAsync";import"./RefetchingIndicator-a31faa1d.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";import"../images/empty-state.svg";const O=L(t=>({overviewContainer:{padding:t.spacing(1,3)}})),b=t=>{const{title:i="Soundcheck"}=t,o=O(),[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}))))))},x=()=>{const{entity:t}=w(),i={group:k(t)},[o,r]=n(i);return e.createElement(l,null,e.createElement(C,null,e.createElement(G,{path:"/*",element:e.createElement(e.Fragment,null,e.createElement(s,{backend:p,invalidLicenseMessage:u,inline:!0}),e.createElement(c,{searchParams:o,setSearchParams:r,isFixedGroup:!0}))})))};export{x as FixedGroupOverviewPage,b as OverviewPage};
2
+ //# sourceMappingURL=index-293deb4d.esm.js.map
@@ -1,2 +1,2 @@
1
- import t from"react";import{S as o,g as i}from"./index-7b347cd4.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-e3458e3b.esm.js.map
1
+ import t from"react";import{S as o,g as i}from"./index-c3aebdd7.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";import"../images/empty-state.svg";const m=({title:r})=>t.createElement(o,null,t.createElement(i,{title:r}));export{m as EntitySoundcheckCard};
2
+ //# sourceMappingURL=index-920b177e.esm.js.map