@spotify/backstage-plugin-soundcheck 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +30 -1
- package/README.md +97 -7
- package/config.d.ts +0 -4
- package/dist/esm/EntitySoundcheckContent-b20f0ec8.esm.js +2 -0
- package/dist/esm/OverviewPageContent-b39812fb.esm.js +2 -0
- package/dist/esm/RefetchingIndicator-026bd666.esm.js +2 -0
- package/dist/esm/index-5913b2d3.esm.js +306 -0
- package/dist/esm/index-5ffaa13b.esm.js +2 -0
- package/dist/esm/{index-b3600988.esm.js → index-95047e64.esm.js} +2 -2
- package/dist/esm/index-e398f5c6.esm.js +2 -0
- package/dist/index.d.ts +8 -1
- package/dist/index.esm.js +1 -1
- package/package.json +15 -14
- package/dist/esm/CheckFormContext-6f85a3bf.esm.js +0 -2
- package/dist/esm/EntitySoundcheckContent-8fdad07c.esm.js +0 -2
- package/dist/esm/RefetchingIndicator-0caa936c.esm.js +0 -2
- package/dist/esm/index-0a05659f.esm.js +0 -2
- package/dist/esm/index-40aa00c1.esm.js +0 -284
- package/dist/esm/index-92271e48.esm.js +0 -2
|
@@ -0,0 +1,2 @@
|
|
|
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
|
package/dist/index.d.ts
CHANGED
|
@@ -46,6 +46,13 @@ declare const EntitySoundcheckContent: () => React.JSX.Element;
|
|
|
46
46
|
* Must be used within {@link @backstage/plugin-catalog#EntityLayout}.
|
|
47
47
|
*/
|
|
48
48
|
declare const EntitySoundcheckCard: ({ title }: EntitySoundcheckCardProps) => React.JSX.Element;
|
|
49
|
+
/**
|
|
50
|
+
* @public
|
|
51
|
+
*
|
|
52
|
+
* Provides an GroupPage tab containing Soundcheck content relevant for the
|
|
53
|
+
* current group. Expected to be used within {@link @backstage/plugin-catalog#GroupLayout}.
|
|
54
|
+
*/
|
|
55
|
+
declare const GroupSoundcheckContent: () => React.JSX.Element;
|
|
49
56
|
/**
|
|
50
57
|
* @public
|
|
51
58
|
*
|
|
@@ -60,4 +67,4 @@ declare const SoundcheckOverviewPage: (props: OverviewPageProps) => JSX.Element;
|
|
|
60
67
|
*/
|
|
61
68
|
declare const SoundcheckRoutingPage: (props: OverviewPageProps) => JSX.Element;
|
|
62
69
|
|
|
63
|
-
export { EntitySoundcheckCard, EntitySoundcheckCardProps, EntitySoundcheckContent, OverviewPageProps, SoundcheckOverviewPage, SoundcheckRoutingPage, soundcheckPlugin };
|
|
70
|
+
export { EntitySoundcheckCard, EntitySoundcheckCardProps, EntitySoundcheckContent, GroupSoundcheckContent, OverviewPageProps, SoundcheckOverviewPage, SoundcheckRoutingPage, soundcheckPlugin };
|
package/dist/index.esm.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{o as f,E as l,G as q,p as w,q as x,n as O}from"./esm/index-5913b2d3.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,9 +1,9 @@
|
|
|
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.
|
|
4
|
+
"version": "0.6.0",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
6
|
-
"homepage": "https://backstage.spotify.com
|
|
6
|
+
"homepage": "https://backstage.spotify.com",
|
|
7
7
|
"main": "dist/index.esm.js",
|
|
8
8
|
"types": "dist/index.d.ts",
|
|
9
9
|
"publishConfig": {
|
|
@@ -26,16 +26,18 @@
|
|
|
26
26
|
"prepare": "yarn generate"
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@backstage/catalog-model": "^1.4.
|
|
30
|
-
"@backstage/core-components": "^0.13.
|
|
31
|
-
"@backstage/core-plugin-api": "^1.5.
|
|
32
|
-
"@backstage/plugin-catalog-react": "^1.
|
|
33
|
-
"@backstage/
|
|
29
|
+
"@backstage/catalog-model": "^1.4.1",
|
|
30
|
+
"@backstage/core-components": "^0.13.3",
|
|
31
|
+
"@backstage/core-plugin-api": "^1.5.3",
|
|
32
|
+
"@backstage/plugin-catalog-react": "^1.8.0",
|
|
33
|
+
"@backstage/plugin-permission-react": "^0.4.14",
|
|
34
|
+
"@backstage/theme": "^0.4.1",
|
|
34
35
|
"@backstage/types": "^1.1.0",
|
|
35
36
|
"@material-ui/core": "^4.12.2",
|
|
36
37
|
"@material-ui/icons": "^4.9.1",
|
|
37
38
|
"@material-ui/lab": "4.0.0-alpha.61",
|
|
38
|
-
"@spotify/backstage-plugin-core": "^0.5.
|
|
39
|
+
"@spotify/backstage-plugin-core": "^0.5.4",
|
|
40
|
+
"@spotify/backstage-plugin-soundcheck-common": "^0.7.0",
|
|
39
41
|
"@tanstack/react-query": "^4.6.1",
|
|
40
42
|
"classnames": "^2.3.2",
|
|
41
43
|
"graphql-request": "6.1.0",
|
|
@@ -54,16 +56,15 @@
|
|
|
54
56
|
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
|
|
55
57
|
},
|
|
56
58
|
"devDependencies": {
|
|
57
|
-
"@backstage/cli": "^0.22.
|
|
58
|
-
"@backstage/core-app-api": "^1.
|
|
59
|
-
"@backstage/dev-utils": "^1.0.
|
|
60
|
-
"@backstage/test-utils": "^1.4.
|
|
59
|
+
"@backstage/cli": "^0.22.9",
|
|
60
|
+
"@backstage/core-app-api": "^1.9.0",
|
|
61
|
+
"@backstage/dev-utils": "^1.0.17",
|
|
62
|
+
"@backstage/test-utils": "^1.4.1",
|
|
61
63
|
"@graphql-codegen/cli": "^4.0.0",
|
|
62
64
|
"@graphql-codegen/typescript": "^4.0.0",
|
|
63
65
|
"@graphql-codegen/typescript-graphql-request": "^5.0.0",
|
|
64
66
|
"@graphql-codegen/typescript-operations": "^4.0.0",
|
|
65
|
-
"@spotify/backstage-plugin-core-common": "^0.5.
|
|
66
|
-
"@spotify/backstage-plugin-soundcheck-common": "^0.6.0",
|
|
67
|
+
"@spotify/backstage-plugin-core-common": "^0.5.4",
|
|
67
68
|
"@testing-library/jest-dom": "^5.10.1",
|
|
68
69
|
"@testing-library/react": "^12.1.5",
|
|
69
70
|
"@testing-library/react-hooks": "^8.0.1",
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import n,{createContext as c,useState as e,useContext as i}from"react";const h=c({selectedProgram:null,setSelectedProgram:()=>{},isLoading:!1,setIsLoading:()=>{},showAddModal:!1,setShowAddModal:()=>{}}),m=({children:o})=>{const[d,t]=e(null),[s,r]=e(!1),[a,l]=e(!1);return n.createElement(h.Provider,{value:{selectedProgram:d,setSelectedProgram:t,isLoading:s,setIsLoading:r,showAddModal:a,setShowAddModal:l}},o)},u=()=>i(h),g=c({selectedCheck:null,setSelectedCheck:()=>{},isLoading:!1,setIsLoading:()=>{},showAddModal:!1,setShowAddModal:()=>{}}),C=({children:o})=>{const[d,t]=e(null),[s,r]=e(!1),[a,l]=e(!1);return n.createElement(g.Provider,{value:{selectedCheck:d,setSelectedCheck:t,isLoading:s,setIsLoading:r,showAddModal:a,setShowAddModal:l}},o)},P=()=>i(g);export{C,m as P,u as a,P as u};
|
|
2
|
-
//# sourceMappingURL=CheckFormContext-6f85a3bf.esm.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import e,{useState as W,useEffect as M}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-0caa936c.esm.js";import{s as H,R as c,A as y,F as x,a as J,u as B,L as K,N as X,b,c as g,d as Z,C as _,e as F,S as ee}from"./index-40aa00c1.esm.js";import{Skeleton as s}from"@material-ui/lab";import{MarkdownContent as P}from"@backstage/core-components";import{stringifyEntityRef as te}from"@backstage/catalog-model";import{useApi as ae,useRouteRef as C,useRouteRefParams as ne}from"@backstage/core-plugin-api";import{useQuery as re}from"@tanstack/react-query";import ie from"react-use/lib/useMeasure";import $ from"react-use/lib/usePrevious";import le 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 oe(t,n,a){const r=ae(H),i=te(t);return re(["soundcheck/check-details",i,n,a],async()=>r.getCheckResultDetails(i,n,a),{enabled:!!n&&!!a})}const ce=p({markdownContent:{"& :last-child":{marginBottom:0}}}),se=({state:t,notes:n})=>{const a=ce(),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)},me=()=>{const t=A();return e.createElement(x,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))))},A=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)}})),de=({programId:t,checkId:n})=>{const a=A(),{entity:r}=u(),{data:i,isLoading:l,isError:o}=oe(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(me,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(se,{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})))},pe=p(()=>({root:{position:"absolute",width:"100%",height:"100%"}})),ue=({programId:t})=>{var n,a;const r=pe(),{entity:i}=u(),{data:l,isLoading:o}=B(i,t),[h,{width:d,height:v}]=ie(),m=o?void 0:(a=(n=l==null?void 0:l.highestLevel)==null?void 0:n.ordinal)!=null?a:-1,E=$(m),R=$(t),[z,S]=W(!1);return M(()=>{typeof E!="undefined"&&typeof m!="undefined"&&t===R&&m>E&&S(!0)},[m,E,t,R]),z?e.createElement("div",{ref:h,className:r.root},e.createElement(le,{width:d,height:v,numberOfPieces:1e3,gravity:1,initialVelocityY:20,recycle:!1,onConfettiComplete:()=>S(!1)})):null},D=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)}})),he=({id:t,name:n,badge:a,href:r,selected:i=!1})=>{const l=D();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=D();return e.createElement(L,{className:t.root,classes:{wrapper:t.wrapper},label:e.createElement(s,{width:180})})},Ee=()=>e.createElement(x,null,e.createElement(T,{value:!1,indicatorColor:"primary"},e.createElement(w,null),e.createElement(w,null),e.createElement(w,null)));function fe(t=[],n){const a=t.findIndex(r=>r.program.id===n);return a<0?!1:a}const ge=({trackId:t})=>{const{entity:n}=u(),{isLoading:a,data:r}=b(n),i=C(g);if(a||!t)return e.createElement(Ee,null);const l=fe(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(he,{key:o,id:o,name:h,badge:d==null?void 0:d.badge,selected:o===t,href:i({trackId:o})})))},ve=p({paper:{overflow:"hidden",position:"relative"},view:{display:"grid",gridTemplateColumns:"1fr 2fr"}}),ke=()=>{const{trackId:t,checkId:n}=Q(),a=ve(),{entity:r}=u(),{isError:i,isFetched:l,data:o}=b(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(ge,{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(de,{programId:t,checkId:n}),e.createElement(ue,{programId:t})))},ye=p(t=>({root:{"&:not(:first-child)":{marginTop:t.spacing(2)}}})),N=()=>{const t=ye();return e.createElement(e.Fragment,null,e.createElement(q,{backend:"soundcheck",invalidLicenseMessage:"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.",inline:!0}),e.createElement("div",{className:t.root},e.createElement(ke,null)))},be=()=>{var t;const{entity:n}=u(),a=C(g),{data:r}=b(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},Ce=()=>{var t,n;const{entity:a}=u(),{trackId:r}=ne(g),i=C(F),{data:l}=B(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},we=()=>e.createElement(j,null,e.createElement(k,{path:"/",element:e.createElement(e.Fragment,null,e.createElement(N,null),e.createElement(be,null))}),e.createElement(k,{path:g.path,element:e.createElement(e.Fragment,null,e.createElement(N,null),e.createElement(Ce,null))}),e.createElement(k,{path:F.path,element:e.createElement(N,null)})),Ne=()=>e.createElement(ee,null,e.createElement(we,null));export{Ne as EntitySoundcheckContent};
|
|
2
|
-
//# sourceMappingURL=EntitySoundcheckContent-8fdad07c.esm.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import e,{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-40aa00c1.esm.js";import"@backstage/plugin-catalog-react";import"react-router-dom";const p=a(t=>({indicator:{position:"absolute",width:"100%",zIndex:t.zIndex.speedDial}})),l=()=>{const t=c(),i=p(),[r,o]=n(!!t);return s(()=>{o(!!t)},250,[t]),r?e.createElement(d,null,e.createElement("div",{className:i.indicator},e.createElement(m,{variant:"indeterminate","data-testid":"refetching-indicator"}))):null};export{l as R};
|
|
2
|
-
//# sourceMappingURL=RefetchingIndicator-0caa936c.esm.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import t,{useState as k,useEffect as A,useCallback as B,useMemo as me,useReducer as Ce}from"react";import{Link as Ze,useSearchParams as ye,Routes as Je,Route as et}from"react-router-dom";import{MarkdownContent as tt,Link as at,ContentHeader as rt,Page as nt,Header as lt,TabbedLayout as J}from"@backstage/core-components";import{SpotifyLicenseBanner as ot}from"@spotify/backstage-plugin-core";import{Box as L,Paper as it,Grid as m,Button as w,Slide as st,Dialog as ct,AppBar as mt,Toolbar as dt,Typography as C,IconButton as j,TextField as R,Collapse as pt,makeStyles as y,ButtonGroup as ke,Menu as be,MenuItem as M,FormControl as ut,InputLabel as gt,Select as ht,Card as de,ListItemIcon as P,ListItemText as I,withStyles as pe,CardContent as Ne,CardHeader as Et,Divider as vt,CardActions as ft,List as xe,ListItem as Q,Tooltip as U,InputAdornment as Se,NativeSelect as Le,Chip as we,CircularProgress as Ct}from"@material-ui/core";import{makeStyles as F,createStyles as ue}from"@material-ui/core/styles";import{u as O,C as yt,a as G,P as kt}from"./CheckFormContext-6f85a3bf.esm.js";import De from"@material-ui/icons/Close";import{Controller as ge,useForm as bt}from"react-hook-form";import Nt from"@material-ui/icons/AddCircleOutline";import xt from"@material-ui/icons/ArrowDropDown";import Pe from"@material-ui/icons/Delete";import"@backstage/catalog-model";import{useApi as z}from"@backstage/core-plugin-api";import{useQuery as Ie,useQueryClient as ee,useMutation as te}from"@tanstack/react-query";import{s as q,Q as W,j as ae,M as re,w as ne,S as St,P as Lt,i as wt}from"./index-40aa00c1.esm.js";import{EntityRefLink as Te}from"@backstage/plugin-catalog-react";import Dt from"@material-ui/icons/MoreVert";import Pt from"@material-ui/icons/ControlPointDuplicate";import It from"@material-ui/icons/Edit";import Ae from"@material-ui/icons/Visibility";import $e from"@material-ui/icons/Group";import{Skeleton as Ve}from"@material-ui/lab";import Tt from"@material-ui/icons/Search";import{useDrag as At,useDrop as $t,DndProvider as Vt}from"react-dnd";import{HTML5Backend as Bt}from"react-dnd-html5-backend";import Rt from"@material-ui/icons/OpenInNew";import Mt from"@material-ui/icons/DoneAllRounded";import Ft from"@material-ui/icons/Menu";import Be from"@material-ui/icons/Add";import Re from"@material-ui/icons/DragIndicator";import Ot from"@material-ui/icons/Remove";import{v4 as Gt}from"uuid";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/RemoveCircleOutline";import"@material-ui/icons/HelpOutline";function zt(e,a,r){const l=z(q);return Ie([W.GetAllPrograms,e,a,r],async()=>l.getAllPrograms(e,a,r))}const qt="Error Creating Track";function Wt(){const e=z(q),a=ee(),{showAlert:r}=ae(),l=async n=>{const o=await e.createProgram(n);if(!o)throw new Error("Failed to create track.");return o};return te([re.CreateProgram],l,{onSuccess:async()=>{await a.invalidateQueries({queryKey:[W.GetAllPrograms]})},onError:n=>{let o="Failed to create track.";n instanceof Error&&(o=n.message),r({severity:"error",title:qt,message:o})}})}function Me(e,a,r){const l=z(q);return Ie([W.GetCheckers,e,a,r],async()=>l.getCheckers(e,a,r))}const Ht=e=>{const[a,r]=k(void 0),[l,n]=k([[]]),[o,i]=k([!1]);A(()=>{a===void 0&&e!=null&&e.length&&r(e)},[e,a]);const s=B((p,u)=>{n(h=>{const v=[...h];return v[u]=[...v[u],p],v}),r(h=>h==null?void 0:h.filter(v=>v.id!==p.id)),i(h=>{if(h[u]){const v=[...h];return v[u]=!1,v}return h})},[]),d=B((p,u)=>{n(h=>{const v=[...h];return v[u]=v[u].filter(b=>b.id!==p.id),v}),r(h=>[...h!=null?h:[],p])},[]),c=B(()=>{n(p=>[...p,[]]),i(p=>[...p,!1])},[]),g=B(p=>{l.length>1&&n(u=>{const h=[...u],v=h.splice(p,1)[0];return r(b=>[...b!=null?b:[],...v]),h})},[l]),E=B(()=>{const p=l.map(u=>u.length===0);return i(p),!p.some(u=>u)},[l]);return{chips:a,inputChipsList:l,handleDrop:s,handleDelete:d,addInput:c,removeInput:g,inputErrors:o,setInputErrors:i,areInputsValid:E,setInputChipsList:n}},_t=F(e=>({footer:{padding:e.spacing(2)}})),Fe=({onCancel:e,saveButtonText:a,onSave:r,isLoading:l})=>{const n=_t();return t.createElement(L,{position:"fixed",bottom:"0",width:"100%"},t.createElement(it,{elevation:3,className:n.footer},t.createElement(m,{container:!0,item:!0,spacing:2,justifyContent:"space-between"},t.createElement(m,{item:!0},t.createElement(w,{variant:"contained",color:"primary",onClick:e},"Cancel")),t.createElement(m,{item:!0},t.createElement(w,{variant:"contained",color:"primary",disabled:l,onClick:()=>r()},a)))))},jt=F(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}})),Qt=t.forwardRef(function(e,a){return t.createElement(st,{direction:"up",ref:a,...e})}),Oe=({open:e,handleClose:a,title:r,children:l})=>{const n=jt();return t.createElement(ct,{fullScreen:!0,open:e,onClose:a,TransitionComponent:Qt},t.createElement(mt,{className:n.appBar},t.createElement(dt,null,t.createElement(C,{className:n.title},r),t.createElement(j,{edge:"end",color:"inherit",onClick:a,"aria-label":"close",className:n.closeIcon},t.createElement(De,null)))),t.createElement(L,{className:n.content},l))},le=({name:e,control:a,error:r,label:l,placeholder:n,disabled:o,rules:i,messages:s,helperText:d,multiline:c,minRows:g})=>t.createElement(ge,{name:e,control:a,defaultValue:"",rules:i,render:({field:E})=>t.createElement(R,{...E,fullWidth:!0,multiline:c,minRows:g,placeholder:n,label:l,disabled:o,variant:"outlined",margin:"normal",error:!!r,helperText:r?s[r.type]:d})}),Ut=F(e=>({section:{gap:0},sectionLabel:{fontWeight:700,color:e.palette.primary.main}})),Kt=({control:e,error:a,isLoading:r})=>{const l=Ut();return t.createElement("div",{className:l.section},t.createElement(C,{className:l.sectionLabel},"Check Details"),t.createElement(le,{name:"checkName",control:e,error:a,label:"Check Name",placeholder:"Choose a name",disabled:r,rules:{required:!0,maxLength:100},messages:{required:"This field is required",maxLength:"Input must be less than 100 characters"}}))},Xt=F(e=>({root:{display:"flex",flexDirection:"column",gap:0},button:{marginLeft:-e.spacing(1)},title:{fontWeight:700,color:e.palette.primary.main}})),Yt=({title:e,children:a})=>{const[r,l]=k(!1),n=Xt(),o=()=>{l(!r)};return t.createElement("div",{className:n.root},t.createElement(m,{container:!0,alignItems:"center",spacing:0},t.createElement(m,{item:!0},t.createElement(j,{onClick:o,className:n.button},t.createElement(Nt,null))),t.createElement(m,{item:!0},t.createElement(C,{className:n.title},e))),t.createElement(pt,{in:r},a))},Zt=({control:e,passError:a,failError:r,isLoading:l})=>t.createElement(Yt,{title:"Pass and fail messages (optional)"},t.createElement(le,{name:"passMessage",control:e,error:a,label:"Pass Message",placeholder:"Enter pass message...",disabled:l,rules:{},messages:{}}),t.createElement(le,{name:"failMessage",control:e,error:r,label:"Fail Message",placeholder:"Enter fail message...",disabled:l,rules:{},messages:{}})),Jt=({control:e,error:a,isLoading:r})=>t.createElement(le,{name:"description",control:e,error:a,label:"Check Description",disabled:r,multiline:!0,minRows:4,placeholder:"Enter a brief description about the check",helperText:"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"}}),ea=y(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"}})),ta=({onAddCondition:e,onAddExpression:a})=>{const r=ea(),[l,n]=k(null),o=!!l,i=d=>{n(d.currentTarget)},s=()=>{n(null)};return t.createElement(L,null,t.createElement(ke,{color:"primary"},t.createElement(w,{id:"add-button",className:r.button,"aria-controls":o?"add-menu":void 0,"aria-haspopup":"true","aria-expanded":o?"true":void 0,onClick:i},t.createElement(L,{className:r.label},"Add"),t.createElement(L,{className:r.icon},t.createElement(xt,null)))),t.createElement(be,{id:"add-menu",anchorEl:l,open:o,onClose:s,classes:{paper:r.menu},MenuListProps:{"aria-labelledby":"add-button"}},t.createElement(M,{onClick:()=>{e(),s()}},"Add Condition"),t.createElement(M,{onClick:()=>{a(),s()}},"Add Expression")))},he=({name:e,control:a,selectLabel:r,options:l})=>t.createElement(ge,{name:e,control:a,render:({field:n})=>t.createElement(ut,{variant:"outlined",style:{minWidth:200}},t.createElement(gt,{id:`${e}-select-label`},r),t.createElement(ht,{...n,"data-testid":`${e}-select`,labelId:`${e}-select-label`,label:r},l.map(({value:o,label:i})=>t.createElement(M,{key:o,value:o},i))))});var Ge=(e=>(e.AllOf="ALL OF",e.AnyOf="ANY OF",e))(Ge||{}),ze=(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))(ze||{});const aa={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"},ra=y(e=>({container:{borderLeft:`1px solid ${e.palette.grey[500]}`,marginLeft:e.spacing(2),padding:e.spacing(2,0,2,0),display:"flex",flexDirection:"row",gap: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"},deleteIcon:{color:e.palette.type==="dark"?e.palette.background.default:e.palette.common.black}})),na=({control:e,name:a,handleDelete:r})=>{const l=ra(),n=Object.values(ze).map(o=>({value:o,label:aa[o]}));return t.createElement(L,{className:l.container},t.createElement(L,{className:l.connector}),t.createElement(L,{className:l.innerContainer},t.createElement(L,{className:l.header}),t.createElement(L,{className:l.inputsContainer},t.createElement(he,{name:`${a}.factRef`,control:e,selectLabel:"Fact",options:n}),t.createElement(he,{name:`${a}.path`,control:e,selectLabel:"Path",options:n}),t.createElement(he,{name:`${a}.operator`,control:e,selectLabel:"Operator",options:n}),t.createElement(ge,{name:`${a}.value`,control:e,defaultValue:"",render:({field:o})=>t.createElement(R,{...o,label:"Value",variant:"outlined"})}))),t.createElement(j,{onClick:r,"data-test-id":`${a}-delete-button`},t.createElement(Pe,{className:l.deleteIcon})))},la=({conditions:e,control:a,name:r,handleDelete:l})=>t.createElement(t.Fragment,null,e.map((n,o)=>t.createElement(m,{item:!0,key:o},t.createElement(na,{control:a,name:`${r}.conditions[${o}]`,"data-testid":`${r}-condition-input`,handleDelete:l})))),oa=({expression:e,control:a,name:r,depth:l,getValues:n,setValue:o,trigger:i})=>e?t.createElement(m,{item:!0},t.createElement(qe,{control:a,name:`${r}.expression`,depth:l+1,getValues:n,setValue:o,trigger:i})):null,ia=y(e=>({selectedButton:{backgroundColor:"rgba(46, 119, 208, 0.08)"},button:{fontWeight:700,backgroundColor:e.palette.background.default,color:e.palette.primary.main,"&:hover":{backgroundColor:"rgba(46, 119, 208, 0.2)"}}})),sa=({onSelect:e})=>{const[a,r]=k(null),l=ia(),n=o=>{r(o),e(o)};return t.createElement(ke,{color:"primary"},Object.values(Ge).map(o=>t.createElement(w,{key:o,className:a===o?`${l.selectedButton} ${l.button}`:`${l.button}`,onClick:()=>n(o)},o)))},ca=(e,a,r,l)=>({handleAddCondition:async()=>{const n=`${e}`,o=a(n),i=[...(o==null?void 0:o.conditions)||[],{factRef:"",path:"",operator:"",value:""}],s=`${e}.conditions`;r(s,i),await l(s)},handleAddExpression:async()=>{r(`${e}.expression`,{factRef:"",path:"",operator:"",value:"",conditions:[{factRef:"",path:"",operator:"",value:""}]}),await l(`${e}.expression`)}}),ma=F(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),borderLeft:`1px solid ${e.palette.grey[500]}`},connector:{borderBottom:`1px solid ${e.palette.grey[500]}`,padding:e.spacing(0),width:"15px",height:"20px"}})),qe=({control:e,name:a,depth:r,getValues:l,setValue:n,trigger:o})=>{const i=ma(),{handleAddCondition:s,handleAddExpression:d}=ca(a,l,n,o),c=`${a}`,g=l(c),E=(g==null?void 0:g.conditions)||[],p=g==null?void 0:g.expression;return t.createElement(L,{className:r>0?i.inner:i.root},r>0&&t.createElement(L,{className:i.connector}),t.createElement(m,{container:!0,spacing:0,direction:"column"},t.createElement(m,{item:!0},t.createElement(sa,{onSelect:()=>{}})),t.createElement(m,{item:!0,container:!0,spacing:0,direction:"column"},t.createElement(la,{handleDelete:()=>{},conditions:E,control:e,name:a}),t.createElement(oa,{expression:p,control:e,name:a,depth:r,getValues:l,setValue:n,trigger:o})),t.createElement(m,{item:!0},t.createElement(ta,{onAddCondition:s,onAddExpression:d}))))},da=()=>{const{control:e,handleSubmit:a,getValues:r,setValue:l,trigger:n,formState:{errors:o}}=bt({defaultValues:{checkName:"",description:"",expression:{factRef:"",path:"",operator:"",value:"",conditions:[{factRef:"",path:"",operator:"",value:"",conditions:[]}]}}}),{showModal:i}=ne();return{control:e,handleSubmit:a,getValues:r,setValue:l,trigger:n,errors:o,onSubmit:async s=>{await i({title:"Save Check",message:`Are you sure you want to save check: ${s.checkName}?`})}}},pa=F(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}})),We=({title:e,open:a,handleClose:r})=>{const l=pa(),{setSelectedCheck:n,isLoading:o}=O(),{control:i,handleSubmit:s,getValues:d,setValue:c,trigger:g,errors:E,onSubmit:p}=da();return t.createElement(Oe,{handleClose:r,title:e,open:a},t.createElement("form",{onSubmit:s(p)},t.createElement(m,{container:!0,spacing:2,className:l.root},t.createElement(m,{item:!0,xs:9},t.createElement(de,{className:l.card},t.createElement(C,{className:l.sectionLabel,style:{margin:0}},"Check Details"),t.createElement(Kt,{control:i,error:E.checkName,isLoading:o}),t.createElement(Jt,{control:i,error:E.description,isLoading:o}),t.createElement(C,{className:l.sectionLabel},"Rules"),t.createElement(qe,{control:i,getValues:d,setValue:c,trigger:g,name:"expression",depth:0}),t.createElement(Zt,{control:i,passError:E.passMessage,failError:E.failMessage,isLoading:o}))),t.createElement(m,{item:!0,xs:3},t.createElement(C,{variant:"body1"},"..."))),t.createElement(m,{container:!0,spacing:4,className:l.root},t.createElement(Fe,{onCancel:()=>{n(null),r()},saveButtonText:"Save new check",isLoading:o,onSave:s(p)}))))},ua=()=>{const{selectedCheck:e,setSelectedCheck:a}=O();return t.createElement(We,{handleClose:()=>a(null),title:"Edit a Check",open:!!e,onSave:async()=>{a(null)}})},ga=()=>{const{setShowAddModal:e,showAddModal:a}=O();return t.createElement(We,{handleClose:()=>e(!1),title:"Create a Check",open:a,onSave:async()=>{e(!1)}})},ha=({handleEdit:e,handleView:a,handleDuplicate:r,handleDelete:l})=>{const[n,o]=k(null),i=!!n,s=c=>{c.stopPropagation(),o(c.currentTarget)},d=c=>{c.stopPropagation(),o(null)};return t.createElement(t.Fragment,null,t.createElement(j,{"aria-label":"summary-card-actions",id:"summary-card-action-menu-button","aria-controls":i?"summary-card-action-menu":void 0,"aria-expanded":i?"true":void 0,"aria-haspopup":"true",onClick:s},t.createElement(Dt,null)),t.createElement(be,{id:"summary-card-action-menu",anchorEl:n,open:i,onClose:d,getContentAnchorEl:null,anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},MenuListProps:{"aria-labelledby":"summary-card-action-menu-button"}},e?t.createElement(M,{"data-testid":"summary-card-action-edit",onClick:c=>{e(c),d(c)}},t.createElement(P,null,t.createElement(It,{fontSize:"small"})),t.createElement(I,null,"Edit")):t.createElement(M,{"data-testid":"summary-card-action-view",onClick:c=>{a(c),d(c)}},t.createElement(P,null,t.createElement(Ae,{fontSize:"small"})),t.createElement(I,null,"View")),t.createElement(M,{"data-testid":"summary-card-action-duplicate",onClick:c=>{r(c),d(c)}},t.createElement(P,null,t.createElement(Pt,{fontSize:"small"})),t.createElement(I,null,"Duplicate")),l&&t.createElement(M,{"data-testid":"summary-card-action-delete",onClick:c=>{l(c),d(c)}},t.createElement(P,null,t.createElement(Pe,{fontSize:"small"})),t.createElement(I,null,"Delete"))))},Ea=pe(e=>ue({root:{width:"100%",height:"100%",minHeight:"385px",display:"flex",flexDirection:"column",padding:e.spacing(2),position:"relative"}}))(de),va=pe(()=>ue({root:{display:"flex",flexDirection:"column",flex:1,gap:"3px"}}))(Ne);pe(()=>ue({root:{position:"absolute",display:"block",zIndex:10,top:2.5,left:2.5,right:2.5,bottom:2.5,"&:hover ~ div > .burst":{backgroundSize:"200%"}}}))(({classes:e,to:a,message:r,children:l,onClick:n})=>t.createElement(Ze,{className:e==null?void 0:e.root,to:a,onClick:n},t.createElement(C,{variant:"srOnly"},r),l));const fa=y(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"}})),He=({title:e,description:a,children:r,handleDuplicate:l,handleDelete:n,handleEdit:o,handleView:i})=>{const s=fa();return t.createElement(Ea,null,t.createElement(Et,{title:e,action:t.createElement(t.Fragment,null,t.createElement(ha,{handleDelete:n,handleEdit:o,handleDuplicate:l,handleView:i}))}),t.createElement(va,null,t.createElement("div",{className:s.cardSection},t.createElement("div",{className:s.summaryDescription},t.createElement(tt,{content:a!=null?a:""}))),r&&t.createElement("div",{className:s.cardSection},r)),t.createElement(vt,null),t.createElement(ft,null,t.createElement(w,{size:"small",color:"primary",role:"link",onClick:o||i},o?"Edit":"View")))},Ca="Error Deleting Check";function ya(){const e=z(q),a=ee(),{showAlert:r}=ae(),l=async n=>{const o=await e.deleteChecker(n);if(!o)throw new Error(`Failed to delete check ${n}`);return o};return te([re.DeleteChecker],l,{onSuccess:()=>{a.invalidateQueries({queryKey:[W.GetCheckers]})},onError:(n,o)=>{let i=`Failed to delete check ${o}`;n instanceof Error&&(i=n.message),r({severity:"error",title:Ca,message:i})}})}const ka=y(e=>({root:{position:"relative",height:"100%"},cardSection:{marginBottom:e.spacing(2)},listItem:{padding:0},listItemText:{margin:0}})),ba=({check:e})=>{var a;const r=ka();return t.createElement(xe,{dense:!0,disablePadding:!0,className:r.cardSection},t.createElement(C,{variant:"overline",color:"textSecondary"},"Check Details"),t.createElement(Q,{disableGutters:!0,className:r.listItem},t.createElement(U,{title:"Owner"},t.createElement(P,null,t.createElement($e,{color:"action",fontSize:"small"}))),t.createElement(I,{className:r.listItemText,primary:t.createElement(Te,{entityRef:(a=e.ownerEntityRef)!=null?a:"No Owner"})})))},Na=({checker:e})=>{const{showModal:a}=ne(),{mutate:r}=ya(),{setSelectedCheck:l}=O(),{id:n,name:o,description:i,isEditable:s}=e,d=B(async()=>{await a({title:"Delete Check",message:`Are you sure you want to delete the check '${o}'?`})&&r(n)},[a,o,r,n]);return t.createElement(He,{title:o!=null?o:n,description:i,children:e.ownerEntityRef&&t.createElement(ba,{check:e}),handleView:()=>{},handleEdit:s?()=>l(e):void 0,handleDuplicate:()=>{},handleDelete:s?d:void 0})},xa=()=>t.createElement(t.Fragment,null,Array.from({length:10},(e,a)=>t.createElement(m,{key:`loading-${a}`,xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem"},t.createElement(Ve,{variant:"rect",height:385})))),Sa=y(()=>({searchIcon:{opacity:".5"},clearButton:{height:"36px",width:"36px"}})),_e=({searchTerm:e,setSearchTerm:a,showClear:r=!0,placeholder:l="Search...",...n})=>{const o=Sa(),i=d=>{a(d.target.value)},s=()=>{a("")};return t.createElement(R,{...n,fullWidth:!0,placeholder:l,value:e,onChange:i,InputProps:{startAdornment:t.createElement(Se,{position:"start"},t.createElement(Tt,{className:o.searchIcon,"data-testid":"search-icon"})),endAdornment:r&&e?t.createElement(Se,{position:"end"},t.createElement(j,{edge:"end",onClick:s,className:o.clearButton},t.createElement(De,null))):null}})},La=y(()=>({searchbar:{maxWidth:"350px"},filters:{display:"flex",alignItems:"center"},dropdownFilters:{margin:"0 15px",display:"flex",alignItems:"center"},selectHolder:{marginLeft:"10px"}})),wa=({isLoading:e,searchTerm:a,setSearchTerm:r,filterAlpha:l,handleAlphabeticalFilterChange:n,filterOwner:o,handleOwnerFilterChange:i,owners:s})=>{const d=La();return t.createElement(m,{item:!0,xs:9,className:d.filters},t.createElement(_e,{searchTerm:a,disabled:e,setSearchTerm:r,placeholder:"Search available checks",variant:"outlined",size:"small",className:d.searchbar}),t.createElement("div",{className:d.dropdownFilters},t.createElement(C,null,"Sort by: "),t.createElement(Le,{className:d.selectHolder,value:l,onChange:n},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:d.dropdownFilters},t.createElement(C,null,"Filter by owner: "),t.createElement(Le,{className:d.selectHolder,value:o,onChange:i},t.createElement("option",{key:"all",value:"all"},"All"),s==null?void 0:s.map((c,g)=>t.createElement("option",{key:c+g,value:c},c)))))},Da=y(e=>({headerButtons:{display:"flex",gap:e.spacing(1),flexWrap:"nowrap",justifyContent:"end"},header:{padding:"16px 0"}})),Pa=(e,a)=>e==null?void 0:e.sort((r,l)=>{var n,o;const i=(n=r==null?void 0:r.name)==null?void 0:n.toLowerCase(),s=(o=l==null?void 0:l.name)==null?void 0:o.toLowerCase();return!i||!s?0:i<s?a==="ascending"?-1:1:i>s?a==="ascending"?1:-1:0}),Ia=e=>{const a=e==null?void 0:e.map(r=>r==null?void 0:r.ownerEntityRef);return[...new Set(a)]},Ee=({searchTermProp:e,filterAlphaProp:a,filterOwnerProp:r,checks:l})=>{const n=l==null?void 0:l.filter(i=>{var s;return(s=i==null?void 0:i.name)==null?void 0:s.toLowerCase().includes(e.toLowerCase())}),o=r&&r!=="all"?n==null?void 0:n.filter(i=>{var s;return((s=i==null?void 0:i.ownerEntityRef)==null?void 0:s.toLowerCase())===r.toLowerCase()}):n;return a==="default"?o:Pa(o!=null?o:[],a)},Ta=({checksPerPage:e,currentCursor:a})=>{const r=Da(),[l,n]=k(a),{data:o,isLoading:i}=Me(void 0,e,l),[s,d]=k(o);A(()=>{o&&d(f=>{var x,T;const ie=(x=f==null?void 0:f.edges)!=null?x:[],se=o.edges,K=[...ie,...se],X=[],ce=K.reduce((Y,_)=>X.includes(_.checker.id)?Y:(X.push(_.checker.id),[...Y,_]),[]);return{endCursor:o.endCursor,totalCount:o.totalCount,hasNextPage:(T=o==null?void 0:o.hasNextPage)!=null?T:!1,edges:ce}})},[o]);const c=s==null?void 0:s.edges[(s==null?void 0:s.edges.length)-1],g=s==null?void 0:s.edges.map(f=>f.checker),{setShowAddModal:E}=O(),[p,u]=k(),[h,v]=k(""),[b,N]=k("default"),[S,D]=k("all"),[H,$]=k([]),V=f=>{const x=Ee({searchTermProp:h,filterAlphaProp:f.target.value,filterOwnerProp:S,checks:g!=null?g:[]});N(f.target.value),u(x)},oe=f=>{const x=Ee({searchTermProp:h,filterAlphaProp:b,filterOwnerProp:f.target.value,checks:g!=null?g:[]});D(f.target.value),u(x)};return A(()=>{const f=s==null?void 0:s.edges.map(T=>T.checker),x=Ia(f!=null?f:[]);u(f),$(x!=null?x:[])},[i,s]),A(()=>{const f=s==null?void 0:s.edges.map(T=>T.checker),x=Ee({searchTermProp:h,filterAlphaProp:b,filterOwnerProp:S,checks:f!=null?f:[]});u(x)},[h,b,S,s]),t.createElement(m,{container:!0,direction:"row"},t.createElement(m,{container:!0,spacing:4,className:r.header},t.createElement(wa,{isLoading:i,searchTerm:h,setSearchTerm:v,filterAlpha:b,handleAlphabeticalFilterChange:V,filterOwner:S,handleOwnerFilterChange:oe,owners:H}),t.createElement(m,{item:!0,xs:3},t.createElement("div",{className:r.headerButtons},t.createElement(w,{variant:"contained",color:"primary",onClick:()=>E(!0)},"Add New Check")))),t.createElement(m,{container:!0,spacing:4,role:"list","aria-label":"checks"},i?t.createElement(xa,null):p==null?void 0:p.map(f=>t.createElement(m,{key:f.id,xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem","aria-label":"result"},t.createElement(Na,{checker:f})))),(s==null?void 0:s.hasNextPage)&&t.createElement(w,{onClick:()=>n(c==null?void 0:c.cursor)},"Load More Checkers"))},Aa=y(e=>({checksPageContainer:{padding:e.spacing(3)}})),$a=()=>{const e=Aa(),[a]=ye(),r=a.get("checksPerPage"),l=r?parseInt(r,10):10,{selectedCheck:n,showAddModal:o}=O();return t.createElement("div",{className:e.checksPageContainer},t.createElement(Ta,{checksPerPage:l}),o&&t.createElement(ga,null),n&&t.createElement(ua,null))},Va=()=>t.createElement(yt,null,t.createElement($a,null)),Ba=y(e=>({root:{position:"relative",height:"100%"},cardSection:{marginBottom:e.spacing(2)},listItem:{padding:0},listItemText:{margin:0}})),Ra=({program:e})=>{var a,r,l;const n=Ba(),o=(r=(a=e.levels)==null?void 0:a.length)!=null?r:0,i=(l=e.levels)==null?void 0:l.reduce((s,d)=>s+d.checks.length,0);return t.createElement(xe,{dense:!0,disablePadding:!0,className:n.cardSection},t.createElement(C,{variant:"overline",color:"textSecondary"},"Track Details"),t.createElement(Q,{disableGutters:!0,className:n.listItem},t.createElement(U,{title:"Levels"},t.createElement(P,null,t.createElement(Ft,{color:"action",fontSize:"small"}))),t.createElement(I,{className:n.listItemText,primary:t.createElement(C,{variant:"body2",color:"textSecondary"},`${o} ${o===1?"Level":"Levels"}`)})),t.createElement(Q,{disableGutters:!0,className:n.listItem},t.createElement(U,{title:"Checks"},t.createElement(P,null,t.createElement(Mt,{color:"action",fontSize:"small"}))),t.createElement(I,{className:n.listItemText,primary:t.createElement(C,{variant:"body2",color:"textSecondary"},`${i} ${i===1?"Check":"Checks"}`)})),e.documentationURL&&t.createElement(Q,{disableGutters:!0,className:n.listItem},t.createElement(U,{title:"Documentation"},t.createElement(P,null,t.createElement(Rt,{color:"action",fontSize:"small"}))),t.createElement(I,{className:n.listItemText,primary:t.createElement(at,{to:e.documentationURL,target:"_blank",rel:"noopener noreferrer"},"Learn more")})),t.createElement(Q,{disableGutters:!0,className:n.listItem},t.createElement(U,{title:"Owner"},t.createElement(P,null,t.createElement($e,{color:"action",fontSize:"small"}))),t.createElement(I,{className:n.listItemText,primary:t.createElement(Te,{entityRef:e.ownerEntityRef})})))},Ma="Error Deleting Track";function Fa(){const e=z(q),a=ee(),{showAlert:r}=ae(),l=async n=>{const o=await e.deleteProgram(n);if(!o)throw new Error(`Failed to delete track ${n}`);return o};return te([re.DeleteProgram],l,{onSuccess:()=>{a.invalidateQueries({queryKey:[W.GetAllPrograms]})},onError:(n,o)=>{let i=`Failed to delete track ${o}`;n instanceof Error&&(i=n.message),r({severity:"error",title:Ma,message:i})}})}const Oa=({summary:e})=>{const{showModal:a}=ne(),{mutate:r}=Fa(),{setSelectedProgram:l}=G(),n=B(async()=>{await a({title:"Delete Track",message:`Are you sure you want to delete track ${e.name}?`})&&r(e.id)},[a,e.id,e.name,r]);return t.createElement(He,{title:e.name,description:e.description,children:t.createElement(Ra,{program:e}),handleView:()=>{},handleEdit:e.isEditable?()=>{l(e)}:void 0,handleDuplicate:()=>{},handleDelete:e.isEditable?n:void 0})},Ga=()=>t.createElement(t.Fragment,null,Array.from({length:6},(e,a)=>t.createElement(m,{key:`loading-${a}`,xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem"},t.createElement(Ve,{variant:"rect",height:385})))),za=y(e=>({headerButtons:{display:"flex",gap:e.spacing(1),flexWrap:"nowrap"}})),qa=({programsPerPage:e,currentCursor:a})=>{var r;const l=za(),{setShowAddModal:n}=G(),[o,i]=k(a),{data:s,isLoading:d}=zt(void 0,e,o),[c,g]=k(s);A(()=>{s&&g(u=>{var h,v;const b=(h=u==null?void 0:u.edges)!=null?h:[],N=s.edges,S=[...b,...N],D=[],H=S.reduce(($,V)=>D.includes(V.program.id)?$:(D.push(V.program.id),[...$,V]),[]);return{endCursor:s.endCursor,totalCount:s.totalCount,hasNextPage:(v=s==null?void 0:s.hasNextPage)!=null?v:!1,edges:H}})},[s]);const E=(r=c==null?void 0:c.edges)==null?void 0:r.map(u=>u==null?void 0:u.program),p=c==null?void 0:c.edges[(c==null?void 0:c.edges.length)-1];return t.createElement(m,{container:!0,direction:"row"},t.createElement(rt,{title:"Tracks"},t.createElement("div",{className:l.headerButtons},t.createElement(w,{variant:"contained",color:"primary",onClick:()=>n(!0)},"Create Track"))),t.createElement(m,{container:!0,spacing:4,role:"list","aria-label":"tracks"},d?t.createElement(Ga,null):E==null?void 0:E.map(u=>t.createElement(m,{key:u.id,xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem","aria-label":"result"},t.createElement(Oa,{summary:u})))),(c==null?void 0:c.hasNextPage)&&t.createElement(w,{onClick:()=>i(p==null?void 0:p.cursor)},"Load More Programs"))},Wa=y(e=>({titleInput:{marginBottom:e.spacing(1)},title:{fontWeight:700},container:{padding:"0 12px"}})),Ha=({programName:e,programNameError:a,handleProgramNameChange:r,disabled:l})=>{const n=Wa();return t.createElement(m,{className:n.container,item:!0,xs:12},t.createElement(C,{className:n.title,variant:"subtitle2"},"Track name"),t.createElement(C,{variant:"body2"},"Give your track a meaningful name so it\u2019s easy to remember it"),t.createElement(R,{fullWidth:!0,placeholder:"Untitled track",value:e,onChange:r,disabled:l,className:n.titleInput,variant:"outlined",size:"small",margin:"normal",error:a,helperText:a?"Track name must be at least 1 character and less than 100 characters":""}))},_a=y(e=>({button:{border:"none",fontWeight:700,fontSize:e.typography.subtitle2.fontSize,lineHeight:"19px",color:e.palette.primary.main,textTransform:"none"}})),ve=({label:e,...a})=>{const r=_a();return t.createElement(w,{className:r.button,...a},e)},je=y(e=>{const a=e.palette.type==="dark",r=a?e.palette.common.white:e.palette.common.black,l=a?e.palette.grey[700]:e.palette.common.white,n=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:r,justifyContent:"space-between",background:l,border:`1px solid ${n}`,borderRadius:4,boxShadow:"0px 2px 5px rgba(0, 0, 0, 0.1)",cursor:"move","&:focus":{background:l,borderColor:o,"& $icon":{color:e.palette.primary.main}}},icon:{}}}),ja=({chip:e})=>{const[a,r]=At(()=>({type:"chip",item:{id:e.id,label:e.label},collect:n=>({isDragging:n.isDragging()})})),l=je();return t.createElement(we,{ref:r,label:e.label,className:l.chip,icon:t.createElement(Re,{"data-testid":"drag-indicator-icon"}),onDelete:()=>{},deleteIcon:t.createElement(Ae,{className:l.icon,"data-testid":"visibility-icon"})})},Qe=y(e=>({columnHeader:{display:"flex",justifyContent:"space-between",alignItems:"center"},subtitle:{fontSize:e.typography.h6.fontSize},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%"}})),Qa=()=>{const e=Qe();return t.createElement(m,{container:!0,className:e.loadingContainer},t.createElement(Ct,null))},Ua=({chips:e})=>t.createElement(t.Fragment,null,e.map(a=>t.createElement(ja,{key:a.id,chip:a}))),Ka=()=>t.createElement(C,{variant:"body1",color:"textSecondary"},"There are no matches."),Xa=({isLoading:e,chips:a=[]})=>{const r=Qe(),[l,n]=k(""),o=me(()=>a.filter(d=>d.label.toLowerCase().includes(l.toLowerCase())),[a,l]),i=a.length>0||l,s=()=>{if(e)return t.createElement(Qa,null);if(o.length>0)return t.createElement(Ua,{chips:o});if(i)return t.createElement(Ka,null)};return t.createElement(m,{container:!0},t.createElement(m,{item:!0,xs:12,className:r.columnHeader},t.createElement(C,{className:r.subtitle},"Checks"),t.createElement(ve,{label:"Add Check",startIcon:t.createElement(Be,null)})),t.createElement(m,{item:!0,xs:12},t.createElement(_e,{searchTerm:l,disabled:e,setSearchTerm:n,placeholder:"Search available checks",variant:"outlined",size:"small"})),t.createElement(m,{item:!0,className:r.chipContainer,xs:12},s()))},Ya=y(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"}})),Za=({chips:e,onDelete:a,onDrop:r,error:l=!1,placeholder:n=""})=>{const o=Ya(),i=je(),[{isOver:s},d]=$t(()=>({accept:"chip",drop:c=>{r(c)},collect:c=>({isOver:c.isOver()})}));return t.createElement("div",{ref:d,className:`${o.input} ${l?o.error:""} ${s?o.hoverBackground:o.normalBackground}`,"data-testid":"droppable-input"},t.createElement("div",{className:o.chipContainer},e!=null&&e.length?e.map(c=>t.createElement(we,{key:c.id,label:c.label,className:i.chip,icon:t.createElement(Re,null),onDelete:()=>a(c)})):n))},Ja=y(e=>({inputBase:{fontSize:e.typography.subtitle1.fontSize,fontWeight:700}})),er=({levelName:e,handleLevelNameChange:a,disabled:r})=>{const l=Ja();return t.createElement(R,{fullWidth:!0,placeholder:"Untitled level",value:e,onChange:a,disabled:r,InputProps:{classes:{input:l.inputBase}}})},tr=y(e=>({inputBase:{fontSize:e.typography.subtitle1.fontSize},inputContainer:{margin:"16px 0 0"}})),ar=({levelDescription:e,levelNameLabel:a,handleLevelDescriptionChange:r,disabled:l})=>{const n=tr();return t.createElement(R,{fullWidth:!0,placeholder:"Enter description here",className:n.inputContainer,multiline:!0,value:e,variant:"outlined",label:`${a} Description`,onChange:r,disabled:l,InputProps:{classes:{input:n.inputBase}}})},rr=y(e=>({columnHeader:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:e.spacing(2)},subtitle:{fontSize:e.typography.h6.fontSize},levelHeader:{display:"flex",alignItems:"center"},removeButton:{minWidth:150}})),nr=({inputChipsList:e,handleDelete:a,handleDrop:r,addInput:l,removeInput:n,levelsErrors:o,levelNames:i,levelDescriptions:s,handleLevelNameChange:d,handleLevelDescriptionChange:c})=>{const g=rr();return t.createElement(m,{container:!0},t.createElement(m,{item:!0,xs:12,className:g.columnHeader},t.createElement(C,{className:g.subtitle},"Levels"),t.createElement(ve,{label:"Add Level",startIcon:t.createElement(Be,null),onClick:l})),e.map((E,p)=>t.createElement(m,{container:!0,item:!0,xs:12,key:p,spacing:1},t.createElement(m,{item:!0,xs:12,className:g.levelHeader},t.createElement(m,{container:!0,spacing:1},t.createElement(m,{item:!0,xs:!0},t.createElement(er,{levelName:i[p],handleLevelNameChange:u=>d(u.target.value,p),disabled:!1})),e.length>1&&t.createElement(m,{item:!0,className:g.removeButton},t.createElement(ve,{label:"Remove Level",startIcon:t.createElement(Ot,null),onClick:()=>n(p)})))),t.createElement(m,{item:!0,xs:12},t.createElement(Za,{chips:E,onDelete:u=>a(u,p),onDrop:u=>r(u,p),error:o[p],placeholder:"Drag and drop checks here to include them in this level"})),t.createElement(m,{item:!0,xs:12},t.createElement(ar,{levelDescription:s[p],levelNameLabel:i[p],handleLevelDescriptionChange:u=>c(u.target.value,p),disabled:!1})))))},lr=y(e=>({titleInput:{marginBottom:e.spacing(1)},inputBase:{fontSize:e.typography.fontSize},title:{fontWeight:700},container:{padding:"0 12px"}})),or=({programDescription:e,programDescriptionError:a,handleProgramDescriptionChange:r,disabled:l})=>{const n=lr();return t.createElement(m,{className:n.container,item:!0,xs:12},t.createElement(C,{className:n.title,variant:"subtitle2"},"Track description"),t.createElement(C,{variant:"body2"},"Give your track a meaningful description so others can understand how to use it"),t.createElement(R,{fullWidth:!0,placeholder:"Example: Make sure the project has a ReadMe file and is using the latest version of JavaScript",value:e,onChange:r,disabled:l,className:n.titleInput,variant:"outlined",size:"small",margin:"normal",multiline:!0,InputProps:{classes:{input:n.inputBase}},error:a,helperText:a?"Track description must be at least 1 character and less than 250 characters":""}))};var ir=(e=>(e.SetProgramNameError="VALIDATE_NAME",e.SetName="SET_NAME",e))(ir||{});const sr={programName:"",programNameError:!1},cr=(e,a)=>{switch(a.type){case"SET_NAME":return{...e,programName:a.value};case"VALIDATE_NAME":return{...e,programNameError:a.value};default:return e}},mr=(e="")=>{const[a,r]=Ce(cr,{...sr,programName:e}),l=()=>{const i=a.programName.trim().length,s=i>0&&i<=100;return r({type:"VALIDATE_NAME",value:!s}),s},n=i=>{r({type:"SET_NAME",value:i})},o=i=>{n(i.target.value),a.programNameError&&l()};return{programName:a.programName,programNameError:a.programNameError,handleProgramNameChange:o,setProgramName:n,isProgramNameValid:l}};var dr=(e=>(e.SetProgramDescriptionError="VALIDATE_DESCRIPTION",e.SetDescription="SET_DESCRIPTION",e))(dr||{});const pr={programDescription:"",programDescriptionError:!1},ur=(e,a)=>{switch(a.type){case"SET_DESCRIPTION":return{...e,programDescription:a.value};case"VALIDATE_DESCRIPTION":return{...e,programDescriptionError:a.value};default:return e}},gr=(e="")=>{const[a,r]=Ce(ur,{...pr,programDescription:e}),l=()=>{const i=a.programDescription.trim().length,s=i>0&&i<=250;return r({type:"VALIDATE_DESCRIPTION",value:!s}),s},n=i=>{r({type:"SET_DESCRIPTION",value:i})},o=i=>{n(i.target.value),a.programDescriptionError&&l()};return{programDescription:a.programDescription,programDescriptionError:a.programDescriptionError,handleProgramDescriptionChange:o,setProgramDescription:n,isProgramDescriptionValid:l}},hr=(e,a,r,l)=>{const n={};return l&&l.forEach(o=>{var i,s;o&&(n[o.id]={id:o.id,name:(i=o.name)!=null?i:"",description:(s=o.description)!=null?s:""})}),e.map((o,i)=>{const s=o.map(d=>n[d.id]);return{name:a[i],description:r[i],ordinal:i,checks:s}})},Er=e=>e.map(a=>a.checks.map(r=>({id:r.id,label:r.name}))),vr=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(r=>({ordinal:r.ordinal,name:r.name||"",description:r.description||"",checks:r.checks.map(l=>({id:l.id,name:l.name,description:l.description}))})))||[]}},fr=(e,a)=>{const r=e?Er(e.levels):[[]],l=r.flat().map(o=>o.id),n=a.filter(o=>!l.includes(o.id));return{inputChips:r,used:n}},Cr=({programName:e,programDescription:a,areInputsValid:r,isProgramNameValid:l,isProgramDescriptionValid:n,inputChipsList:o,checkers:i,onSave:s,programId:d,levelNames:c,levelDescriptions:g})=>{const{showModal:E}=ne();return async()=>{if(!(l()&&n()&&r())||!await E({title:"Save Program",message:`Are you sure you want to save program: ${e}?`}))return;const p=d!=null?d:Gt(),u=hr(o,c,g,i);await s({description:a,id:p,levels:u,name:e,ownerEntityRef:"group:default/toast-infra"})}},yr=e=>{const a=me(()=>e?vr(e):null,[e]),[r,l]=k([]),{data:n,isLoading:o}=Me(),i=n==null?void 0:n.edges.map(N=>N.checker),s=me(()=>(i!=null?i:[]).filter(N=>!!N).map(N=>{var S,D;return{id:(S=N.id)!=null?S:"",label:(D=N.name)!=null?D:""}}),[i]),{chips:d,inputChipsList:c,handleDrop:g,handleDelete:E,addInput:p,removeInput:u,inputErrors:h,areInputsValid:v,setInputChipsList:b}=Ht(r);return A(()=>{if(!r.length&&s.length){const{inputChips:N,used:S}=fr(a,s);b(N),l(S)}},[s,b,r.length,a]),{checkers:i,checkersLoading:o,chips:d,inputChipsList:c,handleDrop:g,handleDelete:E,addInput:p,removeInput:u,inputErrors:h,areInputsValid:v}},kr=e=>{const[a,r]=k(e);return{levelNames:a,handleLevelNameChange:(l,n)=>{r(a.map((o,i)=>i===n?l:o))},addLevelName:l=>{r([...a,l])},removeLevelName:l=>{r(a.filter((n,o)=>o!==l))}}},br=e=>{const[a,r]=k(e);return{levelDescriptions:a,handleLevelDescriptionChange:(l,n)=>{r(a.map((o,i)=>i===n?l:o))},addLevelDescription:l=>{r([...a,l])},removeLevelDescription:l=>{r(a.filter((n,o)=>o!==l))}}},Nr=y(e=>({description:{fontSize:e.typography.subtitle1.fontSize},cardContent:{"& *":{fontWeight:700}}})),Ue=({onSave:e,title:a,open:r,handleClose:l})=>{const{selectedProgram:n,isLoading:o,setSelectedProgram:i}=G(),{checkers:s,checkersLoading:d,chips:c,inputChipsList:g,handleDrop:E,handleDelete:p,addInput:u,removeInput:h,inputErrors:v,areInputsValid:b}=yr(n),{programName:N,programNameError:S,handleProgramNameChange:D,isProgramNameValid:H}=mr(n==null?void 0:n.name),{programDescription:$,programDescriptionError:V,handleProgramDescriptionChange:oe,isProgramDescriptionValid:f}=gr(n==null?void 0:n.description),{levelNames:x,handleLevelNameChange:T,addLevelName:ie,removeLevelName:se}=kr(g.map((Z,Ye)=>`Level ${Ye+1}`)),{levelDescriptions:K,handleLevelDescriptionChange:X,addLevelDescription:ce,removeLevelDescription:Y}=br(g.map(()=>"")),_=()=>{u(),ie(`Level ${g.length+1}`),ce("")},Ke=Z=>{h(Z),se(Z),Y(Z)},Xe=Cr({programName:N,programDescription:$,areInputsValid:b,isProgramNameValid:H,isProgramDescriptionValid:f,inputChipsList:g,checkers:s,onSave:e,programId:n==null?void 0:n.id,levelNames:x,levelDescriptions:K}),fe=Nr();return t.createElement(Oe,{handleClose:l,title:a,open:r},t.createElement(m,{container:!0,spacing:3,style:{overflow:"hidden"}},t.createElement(m,{item:!0,xs:12},t.createElement(Ha,{disabled:o,programName:N,programNameError:S,handleProgramNameChange:D})),t.createElement(m,{item:!0,xs:12},t.createElement(or,{disabled:o,programDescription:$,programDescriptionError:V,handleProgramDescriptionChange:oe})),t.createElement(m,{item:!0,xs:12},t.createElement(de,null,t.createElement(Ne,{className:fe.cardContent},t.createElement(m,{container:!0,spacing:4},t.createElement(m,{item:!0,xs:12},t.createElement(C,{className:fe.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(m,{item:!0,xs:5},t.createElement(Xa,{chips:c,isLoading:d||o})),t.createElement(m,{item:!0,xs:7},t.createElement(nr,{inputChipsList:g,handleDelete:p,handleDrop:E,addInput:_,removeInput:Ke,levelsErrors:v,levelNames:x,handleLevelNameChange:T,levelDescriptions:K,handleLevelDescriptionChange:X})))))),t.createElement(Fe,{onCancel:()=>{i(null),l()},saveButtonText:"Save Track",isLoading:o||d,onSave:Xe})))},xr=()=>{const{setIsLoading:e,setShowAddModal:a,showAddModal:r}=G(),{mutateAsync:l,isLoading:n}=Wt();return A(()=>{e(n)},[e,n]),t.createElement(Ue,{handleClose:()=>a(!1),title:"Create Track",open:r,onSave:async o=>{const i=await l(o);i&&window.open(`/soundcheck/tracks/${i.id}`,"_self")}})},Sr="Error Updating Track";function Lr(){const e=z(q),a=ee(),{showAlert:r}=ae(),l=async n=>{const o=await e.updateProgram(n);if(!o)throw new Error("Failed to update track.");return o};return te([re.UpdateProgram],l,{onSuccess:()=>{a.invalidateQueries({queryKey:[W.GetAllPrograms]})},onError:n=>{let o="Failed to update track.";n instanceof Error&&(o=n.message),r({severity:"error",title:Sr,message:o})}})}const wr=()=>{const{setSelectedProgram:e,setIsLoading:a,selectedProgram:r}=G(),{mutateAsync:l,isLoading:n}=Lr();return A(()=>a(n),[a,n]),t.createElement(Ue,{handleClose:()=>e(null),title:"Edit Track",open:!!r,onSave:async o=>{await l(o)&&e(null)}})},Dr=y(e=>({programsPageContainer:{padding:e.spacing(3)},headerButtons:{display:"flex",gap:e.spacing(1),flexWrap:"nowrap"}})),Pr=()=>{const{selectedProgram:e,showAddModal:a}=G(),[r]=ye(),l=r.get("tracksPerPage"),n=l?parseInt(l,10):10,o=Dr();return t.createElement("div",{className:o.programsPageContainer},t.createElement(Vt,{backend:Bt},t.createElement(qa,{programsPerPage:n}),a&&t.createElement(xr,null),e&&t.createElement(wr,null)))},Ir=()=>t.createElement(kt,null,t.createElement(Pr,null)),Tr=()=>t.createElement(C,null,"Coming Soon..."),Ar=({title:e="Soundcheck"})=>t.createElement(St,null,t.createElement(Lt,null,t.createElement(nt,{themeId:"website"},t.createElement(ot,{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(lt,{title:e}),t.createElement(wt,null,t.createElement(Je,null,t.createElement(et,{path:"/*",element:t.createElement(J,null,t.createElement(J.Route,{title:"Overview",path:"/"},t.createElement(Tr,null)),t.createElement(J.Route,{title:"Checks",path:"/checks"},t.createElement(Va,null)),t.createElement(J.Route,{title:"Tracks",path:"/tracks"},t.createElement(Ir,null)))}))))));export{Ar as RoutingPage};
|
|
2
|
-
//# sourceMappingURL=index-0a05659f.esm.js.map
|