@spotify/backstage-plugin-soundcheck 0.11.1 → 0.11.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/dist/esm/{EntitySoundcheckContent-ab5117ac.esm.js → EntitySoundcheckContent-01a8936d.esm.js} +2 -2
- package/dist/esm/{OverviewPageContent-c16e52bf.esm.js → OverviewPageContent-5829eeed.esm.js} +2 -2
- package/dist/esm/{RefetchingIndicator-eac5bef8.esm.js → RefetchingIndicator-cfc61b83.esm.js} +2 -2
- package/dist/esm/{index-09954133.esm.js → index-07f23db3.esm.js} +2 -2
- package/dist/esm/{index-680620cf.esm.js → index-4dba74f4.esm.js} +2 -2
- package/dist/esm/{index-463527d5.esm.js → index-9833aac9.esm.js} +2 -2
- package/dist/esm/index-983aff99.esm.js +2 -0
- package/dist/index.esm.js +1 -1
- package/package.json +1 -1
- package/dist/esm/index-434815b8.esm.js +0 -2
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import t,{useCallback as j,createContext as gt,useState as C,useContext as ht,useEffect as A,useMemo as z,useRef as sn,memo as rl}from"react";import{useNavigate as pe,useLocation as Xt,useSearchParams as Zt,Routes as cn,Route as Re,useParams as Qe}from"react-router-dom";import{MarkdownContent as mn,Link as ll,DismissableBanner as il,TabbedLayout as X,WarningPanel as Jt,Progress as ol,LinearGauge as sl,Page as cl,Header as ml}from"@backstage/core-components";import{SpotifyLicenseBanner as dl}from"@spotify/backstage-plugin-core";import{a as ea,L as vt,b as Ye,c as ul,d as ge,e as pl,f as dn,g as un,u as gl,U as hl,G as vl,O as El}from"./OverviewPageContent-5829eeed.esm.js";import{Controller as G,useWatch as ta,useFormContext as he,useForm as Et,FormProvider as pn,useFieldArray as ft}from"react-hook-form";import{makeStyles as F,createStyles as fl}from"@material-ui/core/styles";import{makeStyles as R,Grid as h,RadioGroup as yl,Radio as gn,Typography as E,TextField as Y,FormControl as yt,InputLabel as aa,Select as na,MenuItem as ve,Divider as Ae,Box as T,FormControlLabel as Xe,Checkbox as Fe,useTheme as Ze,Tabs as hn,Tab as Je,FormHelperText as vn,ButtonGroup as En,Button as H,Menu as ra,IconButton as et,Slide as bl,Dialog as Cl,AppBar as kl,Toolbar as xl,Paper as la,Card as ia,Stepper as wl,Step as Tl,StepLabel as Sl,StepContent as Rl,ListItemIcon as ee,ListItemText as te,withStyles as Pl,CardHeader as Nl,CardContent as Ll,CardActions as Dl,List as bt,ListItem as Ee,Tooltip as ae,InputAdornment as fn,NativeSelect as oa,TablePagination as sa,Chip as Ct,Table as yn,TableHead as bn,TableRow as kt,TableCell as ke,TableBody as Cn,TableContainer as Il,Badge as Ol,Modal as Al,Switch as Fl}from"@material-ui/core";import tt,{isObject as $l,uniqBy as ca,findIndex as kn,capitalize as Ml}from"lodash";import Gl from"cron-validate";import Bl from"cronstrue";import{v4 as xt}from"uuid";import{asArray as ma,parseFactRef as da,FrequencySchema as Vl,stringifyFactRef as _l,soundcheckCheckUpdatePermission as xn,soundcheckCheckDeletePermission as Hl,soundcheckCheckCreatePermission as Wl,soundcheckTrackUpdatePermission as wn,soundcheckTrackDeletePermission as zl,soundcheckTrackCreatePermission as ql,soundcheckTrackReadPermission as Ul,soundcheckCheckReadPermission as Kl,soundcheckCampaignCreatePermission as Tn,soundcheckCampaignUpdatePermission as jl,soundcheckCampaignDeletePermission as Ql,soundcheckCollectorUpdatePermission as Sn,soundcheckCollectorReadPermission as Yl}from"@spotify/backstage-plugin-soundcheck-common";import Rn from"@material-ui/icons/CheckBox";import Pn from"@material-ui/icons/CheckBoxOutlineBlank";import Xl from"@material-ui/icons/ExpandMore";import{Autocomplete as ua,Skeleton as wt,ToggleButtonGroup as Zl,ToggleButton as Nn}from"@material-ui/lab";import{useApi as O,useRouteRef as J,alertApiRef as Jl,configApiRef as ei}from"@backstage/core-plugin-api";import{useQuery as Z,useQueryClient as ne,useMutation as re}from"@tanstack/react-query";import{s as M,Q as L,t as le,M as ie,v as $e,x as Ln,E as Me,y as Dn,p as In,z as ti,D as On,r as An,q as ai,G as ni,H as Fn,I as ri,J as li,S as ii,w as oi}from"./index-9833aac9.esm.js";import{catalogApiRef as si,EntityRefLink as Pe,humanizeEntityRef as ci,entityRouteRef as $n}from"@backstage/plugin-catalog-react";import{z as k}from"zod";import mi from"rehype-sanitize";import Mn from"@uiw/react-md-editor";import Gn from"@material-ui/icons/ArrowDropDown";import Bn from"@material-ui/icons/Delete";import{parseEntityRef as q,stringifyEntityRef as di}from"@backstage/catalog-model";import{zodResolver as Vn}from"@hookform/resolvers/zod";import _n from"@material-ui/icons/Close";import ui from"@material-ui/icons/MoreVert";import pi from"@material-ui/icons/Archive";import gi from"@material-ui/icons/OpenInBrowser";import Tt from"@material-ui/icons/Group";import{usePermission as Q}from"@backstage/plugin-permission-react";import hi from"@material-ui/icons/Search";import pa from"../images/no-results.svg";import{useDrag as vi,useDrop as Ei,DndProvider as ga}from"react-dnd";import Hn from"@material-ui/icons/DragIndicator";import fi from"@material-ui/icons/Visibility";import Wn from"@material-ui/icons/Add";import zn from"@material-ui/icons/Remove";import{HTML5Backend as ha}from"react-dnd-html5-backend";import yi from"@material-ui/icons/OpenInNew";import bi from"@material-ui/icons/DoneAllRounded";import Ci from"@material-ui/icons/Menu";import{ResponsiveContainer as qn,LineChart as va,CartesianGrid as St,XAxis as at,YAxis as nt,Line as Ea,Tooltip as Un,Legend as Kn,BarChart as jn,Bar as Qn,Cell as ki}from"recharts";import{DateTime as Rt}from"luxon";import{f as fa,g as fe,a as Pt}from"./chartUtils-080232d7.esm.js";import ya from"react-use/lib/useLocalStorage";import xi from"@material-ui/icons/ArrowDropUp";import{motion as wi}from"framer-motion";import Ti from"@material-ui/icons/GetApp";import{CSVLink as Yn}from"react-csv";import{CircularProgressbar as Si,buildStyles as Ri}from"react-circular-progressbar";import"react-circular-progressbar/dist/styles.css";import Pi from"@material-ui/icons/TrendingUp";import Ni from"@material-ui/icons/TrendingDown";import Li from"@material-ui/icons/TrendingFlat";import Di from"@material-ui/icons/Reorder";import Ii from"@material-ui/icons/Apps";import Oi from"@material-ui/icons/GridOn";import Ai from"@material-ui/icons/KeyboardArrowDown";import Fi from"react-use/lib/useDebounce";import{MuiPickersUtilsProvider as Xn}from"@material-ui/pickers/MuiPickersUtilsProvider";import Zn from"@date-io/luxon";import{KeyboardDatePicker as Jn}from"@material-ui/pickers/DatePicker";import{DatePickerToolbar as $i}from"@material-ui/pickers/DatePicker/DatePickerToolbar";import Mi from"../images/catalog.svg";import Gi from"../images/git.svg";import Bi from"../images/octocat.svg";import Vi from"../images/pagerduty.svg";import _i from"../images/settings.svg";import Hi from"../images/soundcheck.png";import Wi from"../images/tech_insights.png";import"@material-ui/lab/Autocomplete";import"react-use/lib/useAsync";import"./RefetchingIndicator-cfc61b83.esm.js";import"react-window";import"graphql-request";import"graphql-tag";import"@material-ui/core/styles/makeStyles";import"classnames";import"@material-ui/icons/Schedule";import"@material-ui/icons/Check";import"@material-ui/icons/RemoveCircleOutline";import"@material-ui/icons/HelpOutline";import"../images/empty-state.svg";function Nt(e,a,n){const r=O(M);return Z([L.GetChecks,e,a,n],async()=>r.getChecks(e,a,n),{staleTime:5*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})}const zi="Error Creating Campaign",er="Failed to create campaign.";function qi(){const e=O(M),a=ne(),{showAlert:n}=le(),r=async l=>{const i=await e.createCampaign(l);if(!i)throw new Error(er);return i};return re([ie.CreateCampaign],r,{onSuccess:()=>{a.invalidateQueries({queryKey:[L.GetCampaigns]})},onError:l=>{let i=er;l instanceof Error&&(i=l.message),n({severity:"error",title:zi,message:i})}})}const Ui="Error Updating Campaign",tr="Failed to update campaign.";function Ki(){const e=O(M),a=ne(),{showAlert:n}=le(),r=async l=>{const i=await e.updateCampaign(l);if(!i)throw new Error(tr);return i};return re([ie.UpdateCampaign],r,{onSuccess:()=>{a.invalidateQueries({queryKey:[L.GetCampaigns]})},onError:l=>{let i=tr;l instanceof Error&&(i=l.message),n({severity:"error",title:Ui,message:i})}})}const ji="Error Archiving Campaign";function Qi(){const e=O(M),a=ne(),{showAlert:n}=le(),r=async l=>{const i=await e.archiveCampaign(l);if(!i)throw new Error(`Failed to archive campaign ${l}`);return i};return re([ie.ArchiveCampaign],r,{onSuccess:()=>a.invalidateQueries({queryKey:[L.GetCampaigns]}),onError:(l,i)=>{let o=`Failed to archive campaign ${i}`;l instanceof Error&&(o=l.message),n({severity:"error",title:ji,message:o})}})}const Yi="Error Deleting Campaign";function Xi(){const e=O(M),a=ne(),{showAlert:n}=le(),r=async l=>{const i=await e.deleteCampaign(l);if(!i)throw new Error(`Failed to delete campaign ${l}`);return i};return re([ie.DeleteCampaign],r,{onSuccess:()=>a.invalidateQueries({queryKey:[L.GetCampaigns]}),onError:(l,i)=>{let o=`Failed to delete campaign ${i}`;l instanceof Error&&(o=l.message),n({severity:"error",title:Yi,message:o})}})}function ba(e,a,n,r){const l=O(M);return Z([L.GetAllPrograms,e,a,n],async()=>l.getTracks(e,a,n,r),{staleTime:5*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})}const Zi="Error Creating Track";function ar(){const e=O(M),a=ne(),{showAlert:n}=le(),r=async l=>{const i=await e.createProgram(l);if(!i)throw new Error("Failed to create track.");return i};return re([ie.CreateProgram],r,{onSuccess:async()=>{const l=[L.GetAllPrograms,L.GetOverallTrackPassRate,L.GetIndividualTrackPassRate];for(const i of l)a.invalidateQueries({queryKey:[i]})},onError:l=>{let i="Failed to create track.";l instanceof Error&&(i=l.message),n({severity:"error",title:Zi,message:i})}})}const Ji=e=>{const a=O(M);return Z([L.GetOverallCheckPassRates,e],async()=>a.getOverallCheckPassRates(e),{staleTime:5*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})},eo=e=>{const a=O(M);return Z([L.GetIndividualCheckPassRate,e],async()=>a.getIndividualCheckPassRates(e),{staleTime:5*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})},to=e=>{const a=O(M);return Z([L.GetOverallTrackPassRate,e],async()=>a.getOverallTrackPassRate(e),{staleTime:5*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})},nr=e=>{const a=O(M);return Z([L.GetIndividualTrackPassRate,e],async()=>a.getIndividualTrackPassRate(e),{staleTime:5*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})},ao=e=>{const a=O(M);return Z([L.GetOverallEntityPassRates,e],async()=>a.getOverallEntityPassRates(e),{staleTime:5*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})},no=e=>{const a=O(M);return Z([L.GetOverallGroupPassRates,e],async()=>a.getOverallGroupPassRates(e),{staleTime:5*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})},ro=e=>{const a=O(M);return Z([L.GetIndividualGroupPassRates,e],async()=>a.getIndividualGroupPassRates(e),{staleTime:5*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})},Ge=e=>{const a=J(e),n=pe(),{key:r}=Xt();return[j(()=>{n(r?-1:a())},[n,a,r]),j(()=>n(a()),[n,a])]},Ca=()=>gt({selectedItem:null,setSelectedItem:()=>{},isLoading:!1,setIsLoading:()=>{},showAddModal:!1,setShowAddModal:()=>{},isReadOnly:!1,showReadOnlyModal:()=>{},hideModal:()=>{}}),ka=e=>({children:a})=>{const[n,r]=C(null),[l,i]=C(!1),[o,s]=C(!1),[c,m]=C(!1),d=p=>{i(!0),r(p)},u=()=>{r(null),i(!1),m(!1)};return t.createElement(e.Provider,{value:{selectedItem:n,setSelectedItem:r,isLoading:o,setIsLoading:s,showAddModal:c,setShowAddModal:m,isReadOnly:l,showReadOnlyModal:d,hideModal:u}},a)},xa=e=>ht(e),rr=Ca(),lr=ka(rr),Be=()=>xa(rr),ir=Ca(),or=ka(ir),se=()=>xa(ir),sr=Ca(),lo=ka(sr),rt=()=>xa(sr);var ce=(e=>(e.AllOf="all",e.AnyOf="any",e))(ce||{});const io={all:"ALL OF",any:"ANY OF"};var cr=(e=>(e.Equal="equal",e.NotEqual="notEqual",e.Matches="matches",e.StartsWith="startsWith",e.EndsWith="endsWith",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.After="after",e.Before="before",e))(cr||{});const oo={equal:"Equals",notEqual:"Does Not Equal",matches:"Matches",startsWith:"Starts With",endsWith:"Ends With",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",after:"DateTime is After",before:"DateTime is Before"},so={0:"detailsStep",1:"rulesStep",2:"filtersStep",3:"scheduleStep"};var Lt=(e=>(e.title="Create a check",e.description="A check is a comparison between a defined acceptable outcome and the actual outcome of a given process.",e.callToAction="Get started",e))(Lt||{}),wa=(e=>(e.title="No checks found",e.description="No checks matched your search. Consider changing search term and filters.",e))(wa||{}),B=(e=>(e.Months="months",e.Weeks="weeks",e.Days="days",e.Hours="hours",e.Minutes="minutes",e.Seconds="seconds",e))(B||{});const Ta=()=>({type:"HumanDuration",unit:B.Hours,value:1,cron:""}),Sa=[B.Months,B.Weeks,B.Days,B.Hours,B.Minutes,B.Seconds];function co(e){return Sa.includes(e)}function Dt(e){switch(e){case"months":return B.Months;case"weeks":return B.Weeks;case"days":return B.Days;case"hours":return B.Hours;case"minutes":return B.Minutes;case"seconds":return B.Seconds;default:return null}}function Ra(e){if(e){const{cron:a,type:n,unit:r,value:l}=e;return n==="HumanDuration"?{[r]:l}:{cron:a}}}function Pa(e){var a;const n=Ta();if(e&&tt.isObject(e)){if("cron"in e)return{...n,type:"cron",cron:e.cron};const r=Object.entries(e);if(r.length){const[l,i]=r[0];return{...n,unit:(a=Dt(l))!=null?a:B.Hours,value:i}}}return n}const mr=e=>Gl(e).isValid(),dr=e=>{try{return Bl.toString(e)}catch(a){return typeof a=="string"?a.replace(/^Error:\s*/,""):"Invalid cron expression"}},ur=1,pr=31536e3,Na=e=>{if(e){if(isNaN(e))return"Invalid value";if(e<1)return"Minimum of 1";if(e>31536e3)return"Maximum exceeded"}else return"Enter a value";return!0},mo=R(e=>({divider:{marginTop:e.spacing(3),marginBottom:e.spacing(3)},title:{cursor:"pointer"},humanDurationContainer:{alignItems:"flex-start",marginTop:3},cronInput:{minWidth:250,marginTop:3},noPaddingLeft:{paddingLeft:0}})),gr=({value:e,onChange:a,disabled:n,errors:r})=>{var l;const i=mo(),[o,s]=C(e),[c,m]=C(`${e.value}`);A(()=>{a&&a(o)},[o,a]);const d=v=>{s({...e,type:v.target.value})},u=v=>{m(v.target.value);const b=parseInt(v.target.value,10);s({...e,value:isNaN(b)?0:b})},p=v=>{var b;s({...o,unit:(b=Dt(v.target.value))!=null?b:B.Hours})},g=v=>{const b=v.target.value;s({...o,cron:b})},f=()=>{s({...o,type:"cron"})},y=()=>{s({...o,type:"HumanDuration"})};return t.createElement(h,{container:!0,direction:"row"},t.createElement(h,{item:!0},t.createElement(yl,{name:"frequencyType",value:o.type,onChange:d},t.createElement(h,{container:!0,alignItems:"flex-start"},t.createElement(h,{item:!0,className:i.noPaddingLeft},t.createElement(gn,{disabled:n,value:"HumanDuration"})),t.createElement(h,{item:!0},t.createElement(E,{variant:"body1",className:i.title,onClick:y},"Run on a regular interval"),t.createElement(E,{variant:"caption"},"Run on a regular interval that you define"),o.type==="HumanDuration"&&t.createElement(h,{container:!0,className:i.humanDurationContainer},t.createElement(h,{item:!0},t.createElement(Y,{id:"every",type:"number",inputProps:{min:ur,max:pr},label:"Every",name:"every",disabled:n,value:c,error:!!(r!=null&&r.message),helperText:r==null?void 0:r.message,onChange:u})),t.createElement(h,{item:!0},t.createElement(yt,null,t.createElement(aa,{id:"frequency-unit"},"Unit"),t.createElement(na,{labelId:"frequency-unit",disabled:n,value:o.unit,onChange:p,"data-testid":"frequency-unit"},Sa.map(v=>t.createElement(ve,{key:v,value:v},v)))))))),t.createElement(Ae,{className:i.divider}),t.createElement(h,{container:!0,alignItems:"flex-start"},t.createElement(h,{item:!0,className:i.noPaddingLeft},t.createElement(gn,{disabled:n,value:"cron"})),t.createElement(h,{item:!0},t.createElement(E,{variant:"body1",className:i.title,onClick:f},"Run on a schedule"),t.createElement(E,{variant:"caption"},"Run on a schedule defined via cron expression"),o.type==="cron"&&t.createElement(h,{item:!0},t.createElement(Y,{id:"cron-expression","data-testid":"cron-expression",className:i.cronInput,label:(l=r==null?void 0:r.message)!=null?l:dr(o.cron),disabled:n,placeholder:"* * * * *",error:!!(r!=null&&r.message),value:o.cron,onChange:g})))))))},uo=()=>({enabled:!1,frequency:Ta()}),po={COMMON_RELATIONS:{relations:"Relations"},COMMON_STATUS:{status:"Status"},METADATA:{metadata:"Metadata","metadata.name":"Metadata: Name","metadata.namespace":"Metadata: Namespace","metadata.uid":"Metadata: UID","metadata.title":"Metadata: Title","metadata.description":"Metadata: Description","metadata.labels":"Metadata: Labels","metadata.annotations":"Metadata: Annotations","metadata.tags":"Metadata: Tags","metadata.links":"Metadata: Links"},COMPONENT:{component:"Component","component.apiVersion":"Component: API Version","component.kind":"Component: Kind","component.spec.type":"Component: Type","component.spec.lifecycle":"Component: Lifecycle","component.spec.owner":"Component: Owner","component.spec.system":"Component: System","component.spec.subcomponentOf":"Component: Subcomponent Of","component.spec.providesApis":"Component: Provides APIs","component.spec.consumesApis":"Component: Consumes APIs","component.spec.dependsOn":"Component: Depends On"},TEMPLATE:{template:"Template","template.apiVersion":"Template: API Version","template.kind":"Template: Kind","template.metadata.tags":"Template: Metadata Tags","template.spec.type":"Template: Type","template.spec.parameters":"Template: Parameters","template.spec.steps":"Template: Steps","template.spec.owner":"Template: Owner"},API:{api:"API","api.apiVersion":"API: API Version","api.kind":"API: Kind","api.spec.type":"API: Type","api.spec.lifecycle":"API: Lifecycle","api.spec.owner":"API: Owner","api.spec.system":"API: System","api.spec.definition":"API: Definition"},GROUP:{group:"Group","group.apiVersion":"Group: API Version","group.kind":"Group: Kind","group.spec.type":"Group: Type","group.spec.profile":"Group: Profile","group.spec.parent":"Group: Parent","group.spec.children":"Group: Children","group.spec.members":"Group: Members"},USER:{user:"User","user.apiVersion":"User: API Version","user.kind":"User: Kind","user.spec.profile":"User: Profile","user.spec.memberOf":"User: Member Of"},RESOURCE:{resource:"Resource","resource.apiVersion":"Resource: API Version","resource.kind":"Resource: Kind","resource.spec.owner":"Resource: Owner","resource.spec.type":"Resource: Type","resource.spec.system":"Resource: System","resource.spec.dependsOn":"Resource: Depends On","resource.spec.dependencyOf":"Resource: Dependency Of"},SYSTEM:{system:"System","system.apiVersion":"System: API Version","system.kind":"System: Kind","system.spec.owner":"System: Owner","system.spec.domain":"System: Domain"},DOMAIN:{domain:"Domain","domain.apiVersion":"Domain: API Version","domain.kind":"Domain: Kind","domain.spec.owner":"Domain: Owner"},LOCATION:{location:"Location","location.apiVersion":"Location: API Version","location.kind":"Location: Kind","location.spec":"Location: Spec","location.spec.type":"Location: Type","location.spec.target":"Location: Target","location.spec.targets":"Location: Targets","location.spec.presence":"Location: Presence"}},go=e=>Object.keys(e).map(a=>({value:a,label:e[a]}));Object.values(po).flatMap(go);const lt=()=>({selectedKinds:[],selectedLifecycles:[],selectedOwners:[],selectedSystems:[],selectedTags:[],selectedTypes:[]}),ho=[{facet:"kind",label:"Kind",key:"selectedKinds"},{facet:"spec.type",label:"Type",key:"selectedTypes"},{facet:"spec.lifecycle",label:"Lifecycle",key:"selectedLifecycles"},{facet:"metadata.name",label:"Owner",key:"selectedOwners",filter:[{kind:"Group"}]},{facet:"spec.system",label:"System",key:"selectedSystems"},{facet:"metadata.tags",label:"Tags",key:"selectedTags"}],Ve={selectedKinds:"kind",selectedTypes:"spec.type",selectedLifecycles:"spec.lifecycle",selectedOwners:"spec.owner",selectedSystems:"spec.system",selectedTags:"metadata.tags"},hr=e=>!e||Object.values(e).every(a=>a.length===0)?void 0:{catalog:Object.entries(e).reduce((a,[n,r])=>{const l=Ve[n];return r.length>0&&(a[l]=r),a},{})},La=e=>Object.keys(Ve).reduce((a,n)=>{var r,l;return a[n]=ma((l=(r=e==null?void 0:e.catalog)==null?void 0:r[Ve[n]])!=null?l:[]),a},{}),It=e=>{if(!e||Object.values(e).every(n=>n.length===0))return;const a={};for(const[n,r]of Object.entries(e))(r==null?void 0:r.length)>0&&(a[Ve[n]]=r);return[a]},Da=e=>{if(e&&Array.isArray(e)&&e.length){const a=e[0];return Object.keys(Ve).reduce((n,r)=>{var l;return n[r]=ma((l=a==null?void 0:a[Ve[r]])!=null?l:[]),n},{})}return lt()},it=(e,a)=>{const n=O(Jl),r=O(si);return Z([L.GetEntityFacets,e,a],async()=>{var l;return((l=(await r.getEntityFacets({facets:[e],filter:a})).facets[e])==null?void 0:l.map(i=>i.value).sort())||[]},{onError:()=>{n.post({message:`Failed to load facet: ${e}`,severity:"error"})}})},vo=R({container:{padding:0},formControl:{flexGrow:1}}),Eo=({facet:e,label:a,values:n,onChange:r,disabled:l,filter:i})=>{var o;const s=vo(),[c,m]=C(!1),{data:d,isLoading:u,error:p}=it(e,i),g=z(()=>d==null?void 0:d.map(x=>x.toLocaleLowerCase("en-US")),[d]),f=(o=n==null?void 0:n.map(x=>x.toLocaleLowerCase("en-US")))!=null?o:[],y=j((x,S)=>{r(S),g&&g.every(V=>S.includes(V))&&m(!1)},[g,r,m]),v=j(()=>{r(n!=null&&n.length?n:void 0)},[n,r]);if(!d||!g||p)return t.createElement(E,{color:"error"},"Failed to load facet: ",e);const b=l||u||!(n!=null&&n.length)&&(!(d!=null&&d.length)||!(g!=null&&g.length)),w=Array.from(new Set([...g,...f]));return t.createElement(T,{pb:1,pt:1,className:s.container},t.createElement(E,{variant:"subtitle2"},a),t.createElement(ua,{open:c,onOpen:()=>m(!0),onClose:()=>m(!1),className:s.formControl,multiple:!0,limitTags:4,disableCloseOnSelect:!0,"aria-label":a,options:w,value:f,getOptionLabel:x=>{var S;return(S=d[g.indexOf(x)])!=null?S:x},onChange:y,onBlur:v,disabled:b,renderOption:(x,{selected:S})=>{var V;return t.createElement(Xe,{onClick:$=>$.preventDefault(),control:t.createElement(Fe,{icon:t.createElement(Pn,{fontSize:"small"}),checkedIcon:t.createElement(Rn,{fontSize:"small"}),checked:S}),label:(V=d[g.indexOf(x)])!=null?V:x})},size:"small",popupIcon:t.createElement(Xl,{"data-testid":"selected-facets-expand"}),renderInput:x=>t.createElement(Y,{...x,variant:"outlined"})}))},fo=R(()=>({title:{fontWeight:700},filterContainer:{display:"flex",flexWrap:"wrap"}})),Ia=({value:e,onChange:a,disabled:n})=>{const r=fo(),l=i=>o=>{a({...e,[i]:o!=null?o:[]})};return t.createElement(h,{container:!0,className:r.filterContainer,spacing:2},ho.map(i=>t.createElement(h,{item:!0,xs:12,sm:6,md:4,key:i.key},t.createElement(Eo,{facet:i.facet,label:i.label,values:e==null?void 0:e[i.key],onChange:l(i.key),disabled:n,filter:i.filter}))))},me="This field is required",yo=e=>{try{return da(e),!0}catch{return"Invalid fact reference. [source]:[scope]/[name]."}},Oa=100,Ne=250,bo=k.strictObject({checkName:k.string().min(1,me).max(Oa,`Input must be less than ${Oa} characters`),description:k.string().min(1,me).max(Ne,`Description must be no more than ${Ne} characters`),teamOwner:k.string().min(1,me)}),Co=async e=>{if(!await yo(e))throw new Error("Fact reference validation failed");return e},vr=k.lazy(()=>k.strictObject({factRef:k.string().refine(Co,{message:"Valid format: [source]:[scope]/[name]"}),path:k.string().min(1,"Required"),operator:k.string().min(1,"Required"),value:k.union([k.string().min(1,"Required"),k.number()]),conditions:k.array(vr).optional()})),Er=k.lazy(()=>k.strictObject({expressionType:k.enum([ce.AllOf,ce.AnyOf]).optional(),expressions:k.array(Er).optional(),conditions:k.array(vr).optional()})),ko=k.strictObject({expressions:Er,passMessage:k.string().max(Ne,`Pass message must be no more than ${Ne} characters`).optional(),failMessage:k.string().max(Ne,`Fail message must be no more than ${Ne} characters`).optional()}),xo=k.strictObject({filters:k.strictObject({selectedKinds:k.string().array(),selectedTypes:k.string().array(),selectedLifecycles:k.string().array(),selectedOwners:k.string().array(),selectedSystems:k.string().array(),selectedTags:k.string().array()}).optional()}),wo=k.nativeEnum(B),To=({type:e,cron:a,value:n})=>e==="cron"?mr(a):e==="HumanDuration"?Na(n)===!0:!0,So=k.strictObject({type:k.enum(["HumanDuration","cron"]),unit:wo.optional(),value:k.number().min(1,"Value must be greater than 0.").optional(),cron:k.string().optional()}).refine(To,{message:"Invalid frequency configuration"}),Ro=k.strictObject({enabled:k.boolean(),frequency:So}),Po=k.strictObject({schedule:Ro.optional()}),No=k.strictObject({detailsStep:bo,rulesStep:ko,filtersStep:xo,scheduleStep:Po}),Lo=e=>{var a;if($l(e)&&"frequency"in e){const n=Vl.safeParse(e.frequency);if(n.success){const r=n.data;if("cron"in r)return{enabled:!0,frequency:{type:"cron",unit:B.Hours,value:1,cron:r.cron}};const l=Object.keys(r);if(l.length){const i=l[0];if(co(i))return{enabled:!0,frequency:{type:"HumanDuration",unit:i,value:(a=r[i])!=null?a:1,cron:""}}}}}return{enabled:!1,frequency:{type:"HumanDuration",unit:B.Hours,value:1,cron:""}}},Do=(e,a)=>{const{enabled:n,frequency:r}=e;if(n){const{cron:l,type:i,unit:o,value:s}=r;return i==="HumanDuration"?{frequency:{[o]:s},filter:It(a)}:{frequency:{cron:l}}}},Aa=e=>{var a;if(!e)return{};if(e.expressionType){const n={[e.expressionType]:(a=e.conditions)==null?void 0:a.map(r=>({factRef:r.factRef,path:r.path,operator:r.operator,value:r.value}))};return e.expressions&&e.expressions.forEach(r=>{var l;(l=n[e.expressionType])==null||l.push(Aa(r))}),n}if(e.expressions)return e.expressions.map(Aa);if(e.conditions&&e.conditions.length===1){const n=e.conditions[0];return{factRef:n.factRef,path:n.path,operator:n.operator,value:n.value}}return{}},fr=(e,a=!0)=>{if(!e)return{conditions:[]};const n=Object.keys(e),r=n.includes("all")||a&&!n.includes("any")?ce.AllOf:ce.AnyOf;if(n.includes(r)||a){const l=e[r]||[e],i=[],o=[];return l.forEach(s=>{const c=Object.keys(s);c.includes("all")||c.includes("any")?o.push(fr(s,!1)):i.push({factRef:s.factRef,path:s.path,operator:s.operator,value:s.value})}),{expressions:o.length>0?o:void 0,conditions:i,expressionType:r}}return{expressionType:ce.AllOf,conditions:[{factRef:e.factRef,path:e.path,operator:e.operator,value:e.value}]}},Io=e=>({detailsStep:{checkName:e.name||"",description:e.description||"",teamOwner:e.ownerEntityRef||""},rulesStep:{expressions:fr(e.rule),passMessage:e.passedMessage||void 0,failMessage:e.failedMessage||void 0},filtersStep:{filters:La(e.filter)},scheduleStep:{schedule:Lo(e.schedule)}}),Oo=(e,a)=>{var n,r,l;const{detailsStep:i,rulesStep:o,filtersStep:s,scheduleStep:c}=e;return{id:a?a.id:xt(),ownerEntityRef:(n=i.teamOwner)!=null?n:void 0,name:i.checkName,description:i.description,passedMessage:(r=o.passMessage)!=null?r:void 0,failedMessage:(l=o.failMessage)!=null?l:void 0,rule:Aa(o.expressions),filter:s.filters?hr(s.filters):void 0,schedule:Do(c.schedule,s.filters)}},Fa=(e,a="$")=>{const n=[];if(e.type==="object"&&e.properties){const r=e.properties;for(const l in r)if(r.hasOwnProperty(l)){const i=`${a}.${l}`;n.push(i);const o=r[l];n.push(...Fa(o,i))}}if(e.type==="array"&&e.items){const r=`${a}[*]`;n.push(r);const l=Array.isArray(e.items)?e.items:[e.items];for(const i of l)n.push(...Fa(i,r))}return n},Ao={detailsStep:{checkName:"",description:"",teamOwner:""},rulesStep:{expressions:{expressionType:ce.AllOf,expressions:void 0,conditions:[{factRef:"",path:"",operator:"",value:"",conditions:[]}]}},filtersStep:{filters:lt()},scheduleStep:{schedule:uo()}},Le={details:{name:{name:"Check name",description:"Give your check a meaningful name so it's easy to remember",helperText:`Max ${Oa} characters`,placeholder:"Example: Code Coverage Check"},description:{name:"Check description",description:"Give your check a meaningful description so others know what it's for",helperText:`Max ${Ne} characters`,placeholder:"Example: Ensure code coverage meets the minimum threshold"},owner:{name:"Check owner",description:"Add yourself, or a team, as the owner of this check",selectLabel:"Owner"}},rulesStep:{rules:{name:"Check rules",description:"Add the rules you want your check to enforce"},messages:{name:"Pass/Fail messages",description:"Add the messages that will appear to you when checks either pass or fail",passMessagePlaceholder:"Enter pass message...",failMessagePlaceholder:"Enter fail message...",passedTabName:"Passed Message",failedTabName:"Failed Message"}},filter:{description:'Setting the filters below will limit the scope of the Check so that only those Entities that match the filter will be monitored by the Check. As an example, choosing a "Kind" of "Component" will make this Check only apply to Entities whose Kind is indeed set to "Component". This would exclude Entities like Groups, Users, APIs, etc. from being impacted by the Check.'},schedule:{description:"By default, checks are executed when any fact they depend on is updated. However, you may also schedule a check to run on a schedule.",checkboxLabel:"Schedule check"}},Fo=F(e=>({container:{display:"flex",flexDirection:"column",gap:e.spacing(2)},helperText:{marginLeft:0}})),$o=({control:e,error:a,isLoading:n,disabled:r})=>{const l=Fo(),{name:i}=Le.details;return t.createElement("div",{className:l.container},t.createElement("div",null,t.createElement(E,{variant:"subtitle2"},i.name),t.createElement(E,{variant:"caption"},i.description)),t.createElement(G,{name:"detailsStep.checkName",control:e,defaultValue:"",render:({field:o})=>{var s;return t.createElement(Y,{...o,FormHelperTextProps:{className:l.helperText},variant:"outlined",fullWidth:!0,placeholder:i.placeholder,disabled:n||r,type:"text",error:!!a,helperText:(s=a==null?void 0:a.message)!=null?s:i.helperText})}}))},Mo=F(e=>({markdown:{whiteSpace:"pre-wrap",marginBottom:e.spacing(1)},container:{display:"flex",flexDirection:"column",gap:e.spacing(1)},helperText:{color:e.palette.grey[500]},errorText:{color:e.palette.error.main},errorBorder:{border:`1px solid ${e.palette.error.main}`}})),Ot=({name:e,control:a,label:n,description:r,disabled:l,rules:i,error:o,helperText:s,placeholder:c})=>{const m=Ze(),d=Mo();return t.createElement(G,{name:e,control:a,defaultValue:l?"No description provided.":"",rules:i,render:({field:u})=>t.createElement("div",{"data-color-mode":m.palette.type,className:d.container},t.createElement("div",null,n&&t.createElement(E,{variant:"subtitle2"},n),r&&!l&&t.createElement(E,{variant:"caption"},r)),t.createElement("div",null,l?t.createElement(Mn.Markdown,{className:d.markdown,source:u.value}):t.createElement(Mn,{placeholder:c,value:u.value,className:o&&d.errorBorder,onChange:u.onChange,previewOptions:{rehypePlugins:[[mi]]},"data-testid":`markdown-editor-${e}`}),(s||o)&&!l&&t.createElement(E,{variant:"caption",className:o?d.errorText:d.helperText},o?o.message:s)))})},Go=F(e=>({container:{display:"flex",flexDirection:"column",gap:e.spacing(1)},tabContent:{padding:e.spacing(1)}})),Bo=({control:e,isLoading:a,disabled:n})=>{const r=Go(),[l,i]=C(0),{name:o,description:s,passMessagePlaceholder:c,failMessagePlaceholder:m,passedTabName:d,failedTabName:u}=Le.rulesStep.messages,p=(g,f)=>{i(f)};return t.createElement("div",{className:r.container},t.createElement("div",null,t.createElement(E,{variant:"subtitle2"},o),t.createElement(E,{variant:"caption"},s)),t.createElement(hn,{orientation:"horizontal",variant:"scrollable",value:l,onChange:p},t.createElement(Je,{label:d}),t.createElement(Je,{label:u})),t.createElement("div",{className:r.tabContent},l===0&&t.createElement(Ot,{name:"rulesStep.passMessage",control:e,placeholder:c,disabled:a||n}),l===1&&t.createElement(Ot,{name:"rulesStep.failMessage",control:e,placeholder:m,disabled:a||n})))},Vo=({control:e,isLoading:a,disabled:n,error:r})=>{const{description:l}=Le.details;return t.createElement(Ot,{name:"detailsStep.description",control:e,error:r,label:l.name,description:l.description,helperText:l.helperText,placeholder:n?void 0:l.placeholder,disabled:n||a})},_o=R(()=>({helperText:{marginLeft:0}})),At=({name:e,control:a,selectLabel:n,options:r,disabled:l,rules:i,style:o,helperText:s})=>{const c=_o();return t.createElement(G,{name:e,control:a,rules:i,render:({field:m,fieldState:d})=>t.createElement(yt,{variant:"outlined",style:o!=null?o:{minWidth:200},error:d.invalid},t.createElement(aa,{id:`${e}-select-label`},n),t.createElement(na,{...m,disabled:l,error:d.invalid,"data-testid":`${e}-select`,labelId:`${e}-select-label`,label:n,value:r?m.value:"",defaultValue:""},r==null?void 0:r.map(({value:u,label:p})=>t.createElement(ve,{key:u,value:u},p))),t.createElement(vn,{className:c.helperText},d.error?d.error.message:s))})},Ho=F(e=>({container:{display:"flex",flexDirection:"column",gap:e.spacing(1)}})),Wo=({control:e,disabled:a,error:n})=>{var r;const l=Ho(),{options:i,isLoading:o}=ea(),s=ca(i.map(u=>({value:u.ref,label:u.name})),"value"),{owner:{name:c,description:m,selectLabel:d}}=Le.details;return t.createElement("div",{className:l.container},t.createElement("div",null,t.createElement(E,{variant:"subtitle2"},c),t.createElement(E,{variant:"caption"},m)),t.createElement("div",null,t.createElement(At,{name:"detailsStep.teamOwner",control:e,options:s,selectLabel:d,disabled:a||o,helperText:(r=n==null?void 0:n.message)!=null?r:void 0})))},zo=R(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"}})),qo=({onAddCondition:e,onAddExpression:a})=>{const n=zo(),[r,l]=C(null),i=!!r,o=c=>{l(c.currentTarget)},s=()=>{l(null)};return t.createElement(T,null,t.createElement(En,{color:"primary"},t.createElement(H,{"data-testid":"add-button",id:"add-button",className:n.button,"aria-controls":i?"add-menu":void 0,"aria-haspopup":"true","aria-expanded":i?"true":void 0,onClick:o},t.createElement(T,{className:n.label},"Add"),t.createElement(T,{className:n.icon},t.createElement(Gn,null)))),t.createElement(ra,{id:"add-menu",anchorEl:r,open:i,onClose:s,classes:{paper:n.menu},MenuListProps:{"aria-labelledby":"add-button"}},t.createElement(ve,{"data-testid":"add-condition",onClick:()=>{e(),s()}},"Add Condition"),t.createElement(ve,{"data-testid":"add-expression",onClick:()=>{a(),s()}},"Add Expression")))},Uo=R(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:{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 $a(e){const a=O(M);return Z([L.GetCollectors,e],async()=>a.getCollectors(e),{staleTime:5*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})}function Ko(e,a){const n=O(M);return Z([L.GetFactSchema,e,a],()=>n.getFactSchema(e,a),{enabled:!!e&&!!a,staleTime:5*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})}const jo=(e,a)=>{const{data:n,isLoading:r}=$a(),l=ta({control:a,name:`${e}.factRef`}),[i,o]=C(()=>yr(l));A(()=>{o(yr(l))},[l]);const{data:s}=Ko(i==null?void 0:i.source,i==null?void 0:i.name),c=z(()=>s?Fa(s.schema):[],[s]),m=z(()=>n==null?void 0:n.flatMap(d=>d.factNames.map(u=>{const p=da(u,{defaultSource:d.id,defaultScope:"default"});return{label:p.name,value:_l(p)}})),[n]);return{isLoading:r,pathOptions:c,factRefOptions:m}};function yr(e){if(e)try{return da(e,{defaultSource:"unknown",defaultScope:"default"})}catch{return null}return null}const br=({name:e,rules:a,label:n,control:r,options:l,getOptionLabel:i,getOptionValue:o,onChange:s,disabled:c})=>t.createElement(G,{name:e,control:r,rules:a,render:({field:m,fieldState:d})=>t.createElement(ua,{...m,freeSolo:!0,autoSelect:!0,"data-testid":`${e}-autocomplete`,style:{minWidth:250},disabled:c,options:l,getOptionLabel:i,renderInput:u=>t.createElement(Y,{...u,variant:"outlined",label:n,error:d.invalid,helperText:d.error?d.error.message:null}),onChange:(u,p)=>{const g=o?o(p):p;s==null||s(g),m.onChange(g)},onInputChange:(u,p)=>{const g=o?o(p):p;s==null||s(g)}})}),Qo=({name:e,handleDelete:a,disabled:n,disableDelete:r})=>{var l;const i=Uo(),{control:o,getValues:s,setValue:c}=he(),m=z(()=>Object.values(cr).map(v=>({value:v,label:oo[v]})),[]),{pathOptions:d,factRefOptions:u,isLoading:p}=jo(e,o),g=z(()=>{var v;return(v=u==null?void 0:u.map(b=>b.value))!=null?v:[]},[u]),f=(l=s("rulesStep.expressions.conditions"))==null?void 0:l.map(({factRef:v})=>v),y=v=>{v&&!(f!=null&&f.includes(v))&&(c(`${e}.path`,""),c(`${e}.operator`,""),c(`${e}.value`,""))};return t.createElement(T,{className:i.container},t.createElement(T,{className:i.connector}),t.createElement(T,{className:i.innerContainer},t.createElement(T,{className:i.header}),t.createElement(T,{className:i.inputsContainer},u&&t.createElement(br,{name:`${e}.factRef`,control:o,label:"Fact",options:g,getOptionLabel:v=>{var b,w;return(w=(b=u==null?void 0:u.find(x=>v===x.value))==null?void 0:b.label)!=null?w:v},getOptionValue:v=>{var b,w,x;return(x=(w=(b=u==null?void 0:u.find(S=>v===S.label))==null?void 0:b.value)!=null?w:v)!=null?x:""},disabled:n||p,onChange:y}),t.createElement(br,{name:`${e}.path`,label:"Path",control:o,disabled:n||p,options:d}),t.createElement(At,{name:`${e}.operator`,control:o,selectLabel:"Operator",options:m,disabled:n}),t.createElement(G,{name:`${e}.value`,control:o,defaultValue:"",render:({field:v,fieldState:b})=>t.createElement(Y,{...v,label:"Value",variant:"outlined",placeholder:"Enter a value",error:b.invalid,helperText:b.error?b.error.message:null,disabled:n})}))),!n&&!r&&t.createElement(et,{onClick:a,className:i.deleteButton,"data-test-id":`${e}-delete-button`},t.createElement(Bn,{className:i.deleteIcon})))},Yo=({conditions:e,name:a,handleDelete:n,disabled:r,disableDelete:l,depth:i})=>t.createElement(t.Fragment,null,e.map((o,s)=>t.createElement(h,{item:!0,key:s},t.createElement(Qo,{name:`${a}.conditions[${s}]`,"data-testid":`${a}-condition-input`,handleDelete:()=>n(s),disabled:r,disableDelete:i===0&&s===0?!0:l})))),Xo=({expression:e,name:a,depth:n,disabled:r})=>e?t.createElement(h,{item:!0},t.createElement(Cr,{name:`${a}`,depth:n+1,disabled:r})):null,Zo=R(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)"}})),Jo=({name:e,disabled:a})=>{const n=Zo(),{control:r,getValues:l}=he(),i=`${e}`,o=l(i),[s,c]=C(o||ce.AllOf),m=d=>{c(d)};return t.createElement(G,{control:r,name:e,render:({field:{onChange:d}})=>t.createElement(En,{color:"primary"},Object.values(ce).map(u=>t.createElement(H,{key:u,className:s===u?`${n.selectedButton} ${n.button}`:`${n.button}`,onClick:()=>{m(u),d(u)},disabled:a},io[u])))})},es=(e,a,n,r)=>({handleAddCondition:async()=>{const l=`${e}`,i=a(l),o=[...(i==null?void 0:i.conditions)||[],{factRef:"",path:"",operator:"",value:""}],s=`${e}.conditions`;n(s,o),await r(s)},handleAddExpression:async()=>{const l=`${e}.expressions`,i=a(l)||[];i.push({expressionType:ce.AllOf,expressions:void 0,conditions:[{factRef:"",path:"",operator:"",value:""}]}),n(l,i),await r(l)},handleDeleteCondition:async(l,i)=>{const o=i.split("[")[0],s=`${i}.conditions`,c=a(s);if(c.splice(l,1),c.length===0){n(s,void 0);const m=parseInt(i.slice(i.lastIndexOf("[")+1,i.lastIndexOf("]")),10),d=a(o);d.splice(m,1),n(o,d.length>0?d:void 0),await r(o)}else n(s,c),await r(s)}}),ts=F(e=>({root:{},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"}})),Cr=({name:e,depth:a,disabled:n})=>{const r=ts(),{getValues:l,setValue:i,trigger:o}=he(),{handleAddCondition:s,handleAddExpression:c,handleDeleteCondition:m}=es(e,l,i,o),d=`${e}`,u=l(d),p=(u==null?void 0:u.conditions)||[],g=u==null?void 0:u.expressions;return t.createElement(T,{className:a>0?r.inner:r.root},a>0&&t.createElement(T,{className:r.connector}),t.createElement(h,{container:!0,spacing:0,direction:"column"},t.createElement(h,{item:!0},t.createElement(Jo,{disabled:n,name:`${e}.expressionType`})),t.createElement(h,{item:!0,container:!0,spacing:0,direction:"column"},t.createElement(Yo,{depth:a,handleDelete:f=>m(f,e),disabled:n,conditions:p,name:e}),g==null?void 0:g.map((f,y)=>t.createElement(Xo,{key:y,expression:f,name:`${e}.expressions[${y}]`,depth:a,disabled:n}))),!n&&t.createElement(h,{item:!0},t.createElement(qo,{onAddCondition:s,onAddExpression:c}))))},as=R(e=>({container:{display:"flex",flexDirection:"column",gap:e.spacing(1)}})),ns=({control:e,disabled:a})=>{const n=as(),r=ta({control:e,name:"scheduleStep.schedule"}),{description:l,checkboxLabel:i}=Le.schedule;return t.createElement("div",{className:n.container},t.createElement(E,{variant:"body2"},l),t.createElement(h,{item:!0,xs:12},t.createElement(h,{item:!0},t.createElement(G,{name:"scheduleStep.schedule.enabled",control:e,render:({field:o})=>t.createElement(Xe,{disabled:a,control:t.createElement(Fe,{checked:o.value,onChange:o.onChange}),label:i})})),t.createElement(h,{item:!0},t.createElement(G,{name:"scheduleStep.schedule.frequency",control:e,render:({field:o,fieldState:s})=>t.createElement(gr,{disabled:a||!r.enabled,value:o.value,onChange:o.onChange,errors:s.error})}))))},rs=e=>{const{selectedItem:a}=se();let n=Ao;a&&(n=Io(a));const r=Et({defaultValues:n,mode:"onChange",resolver:Vn(No)}),{showModal:l}=$e();return{formMethods:r,onSubmit:async i=>{if(!await l({title:"Save Check",message:`Are you sure you want to save check: ${i.detailsStep.checkName}?`,error:!1}))return;const o=Oo(i,a);e(o)}}},Ma=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},buttonChoices:{margin:"20px 0","& button":{marginRight:"10px"}},filters:{display:"flex",gap:e.spacing(1),flexDirection:"column"},stepLabel:{cursor:"pointer !important"}})),kr=({control:e,description:a,disabled:n,formFieldName:r})=>{const l=Ma();return t.createElement("div",{className:l.filters},t.createElement(E,{variant:"body2"},a),t.createElement(G,{name:r!=null?r:"filtersStep.filters",control:e,render:({field:i})=>{var o;return t.createElement(Ia,{value:(o=i.value)!=null?o:lt(),onChange:i.onChange,disabled:n})}}))},ls=F(e=>({container:{display:"flex",flexDirection:"column",gap:e.spacing(1)}})),is=()=>{var e,a,n;const r=ls(),{isLoading:l,isReadOnly:i}=se(),{control:o,formState:{errors:s}}=he();return t.createElement("div",{className:r.container},t.createElement($o,{control:o,error:(e=s==null?void 0:s.detailsStep)==null?void 0:e.checkName,isLoading:l,disabled:i}),t.createElement(Vo,{control:o,error:(a=s==null?void 0:s.detailsStep)==null?void 0:a.description,isLoading:l,disabled:i}),t.createElement(Wo,{control:o,disabled:i,error:(n=s==null?void 0:s.detailsStep)==null?void 0:n.teamOwner}))},os=F(e=>({container:{display:"flex",flexDirection:"column",gap:e.spacing(2)},innerContainer:{display:"flex",flexDirection:"column"}})),ss=()=>{const e=os(),{isLoading:a,isReadOnly:n}=se(),{control:r}=he(),{rules:l}=Le.rulesStep;return t.createElement("div",{className:e.container},t.createElement("div",{className:e.innerContainer},t.createElement("div",null,t.createElement(E,{variant:"subtitle2"},l.name),t.createElement(E,{variant:"caption"},l.description)),t.createElement(Cr,{disabled:n,name:"rulesStep.expressions",depth:0})),t.createElement(Bo,{control:r,isLoading:a,disabled:n}))},cs=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),margin:"0 0 5rem",overflowX:"hidden",overflowY:"hidden","& .wmde-markdown-var":{"--color-canvas-default":e.palette.background.paper,"--color-border-default":e.palette.border},"& .wmde-markdown":{"--color-canvas-default":e.palette.background.paper}}})),ms=t.forwardRef(function(e,a){return t.createElement(bl,{direction:"up",ref:a,...e})}),_e=({open:e,handleClose:a,title:n,children:r})=>{const l=cs();return t.createElement(Cl,{fullScreen:!0,open:e,onClose:a,TransitionComponent:ms},t.createElement(kl,{className:l.appBar},t.createElement(xl,null,t.createElement(E,{className:l.title,"data-testid":`dialog-${n}`},n),t.createElement(et,{"data-testid":"close-dialog",edge:"end",color:"inherit",onClick:a,"aria-label":"close",className:l.closeIcon},t.createElement(_n,null)))),t.createElement(T,{className:l.content},r))},ds=F(e=>({box:{zIndex:9,position:"fixed",bottom:"0",width:"100%"},footer:{padding:e.spacing(2)}})),Ga=({onCancel:e,saveButtonText:a,isLoading:n,onSave:r,disableSave:l})=>{const i=ds();return t.createElement(T,{className:i.box},t.createElement(la,{elevation:3,className:i.footer},t.createElement(h,{container:!0,item:!0,spacing:2,justifyContent:"space-between"},t.createElement(h,{item:!0},t.createElement(H,{variant:"contained",color:"primary",onClick:e},"Cancel")),t.createElement(h,{item:!0},r&&t.createElement(H,{variant:"contained",color:"primary",disabled:n||l,onClick:r?()=>r():void 0},a)))))},us=(e,a)=>{const[n,r]=C(0),[l,i]=C(e),o=async d=>{const u=a[n];if(await d(u)){const p=n+1;r(p),l.indexOf(p)===-1&&i(g=>[...g,p])}},s=()=>{r(d=>d-1)},c=d=>d<n,m=d=>d!==n&&l.includes(d);return{activeStep:n,handleNext:o,handleBack:s,isPreviousStep:c,isVisitedStep:m,onStepClick:d=>{(c(d)||m(d))&&r(d)}}},xr=({onClose:e,handleSubmit:a,trigger:n,onSubmit:r,initialVisited:l,stepNameMap:i,steps:o,isLoading:s,isReadOnly:c,saveButtonText:m,detailsComponent:d})=>{const u=Ma(),{activeStep:p,handleNext:g,handleBack:f,isPreviousStep:y,isVisitedStep:v,onStepClick:b}=us(l,i);return t.createElement(t.Fragment,null,t.createElement(h,{container:!0,spacing:2,className:u.root},t.createElement(h,{item:!0,style:{width:"80%"}},t.createElement(ia,{className:u.card},t.createElement(wl,{activeStep:p,orientation:"vertical"},o.map((w,x)=>t.createElement(Tl,{key:w.label},t.createElement(Sl,{className:y(x)||v(x)?u.stepLabel:void 0,onClick:()=>b(x)},w.label),t.createElement(Rl,null,w.content(),t.createElement(T,{className:u.buttonChoices,sx:{mb:2}},t.createElement("div",null,x!==0&&t.createElement(H,{onClick:f},"Back"),x!==o.length-1&&t.createElement(H,{variant:"contained",color:"primary",onClick:async()=>{await g(n)}},"Next"))))))))),t.createElement(h,{item:!0,style:{width:"20%"}},d)),t.createElement(h,{container:!0,spacing:4,className:u.root},t.createElement(Ga,{onCancel:e,saveButtonText:m,isLoading:s,onSave:c?void 0:a(r)})))},ps=()=>t.createElement("div",{style:{display:"flex",gap:"10px",flexDirection:"column"}},t.createElement(E,{variant:"h6"},"Creating and managing checks"),t.createElement(E,{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(E,{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(E,{variant:"body1"},"Once created, you will be able to manage and edit your track on its detail page.")),Ba=({title:e,open:a,onSave:n,onClose:r})=>{const{hideModal:l,isLoading:i,isReadOnly:o,selectedItem:s}=se(),{formMethods:c,onSubmit:m}=rs(n),d=[{label:"Enter check details",content:()=>t.createElement(is,null)},{label:"Add rules",content:()=>t.createElement(ss,null)},{label:"Choose the affected entities",content:()=>t.createElement(kr,{control:c.control,disabled:o,description:Le.filter.description})},{label:"Set the check schedule",content:()=>t.createElement(ns,{control:c.control,disabled:o})}],u=s?[...Array(d.length).keys()]:[0];return t.createElement(_e,{handleClose:r?()=>r():l,title:e,open:a},t.createElement(pn,{...c},t.createElement("form",{onSubmit:c.handleSubmit(m)},t.createElement(xr,{onClose:r?()=>r():l,handleSubmit:c.handleSubmit,trigger:c.trigger,onSubmit:m,initialVisited:u,stepNameMap:so,steps:d,isLoading:i,isReadOnly:o,saveButtonText:"Save Check",detailsComponent:t.createElement(ps,null)}))))},gs="Error Creating Check";function hs(){const e=O(M),a=ne(),{showAlert:n}=le(),r=async l=>{const i=await e.createCheck(l);if(!i)throw new Error("Failed to create check.");return i};return re([ie.CreateCheck],r,{onSuccess:()=>{a.invalidateQueries({queryKey:[L.GetChecks]})},onError:l=>{let i="Failed to create check.";l instanceof Error&&(i=l.message),n({severity:"error",title:gs,message:i})}})}const vs=()=>{const{hideModal:e,showAddModal:a,setIsLoading:n}=se(),{mutateAsync:r,isLoading:l}=hs();return A(()=>{n(l)},[n,l]),t.createElement(Ba,{title:"Create a Check",open:a,onSave:async i=>{await r(i,{onSuccess:()=>e()})},onClose:()=>e()})},Es=({handleDelete:e,handleArchive:a,handleView:n})=>{const[r,l]=C(null),i=!!r,o=c=>{c.stopPropagation(),l(c.currentTarget)},s=c=>{c.stopPropagation(),l(null)};return t.createElement(t.Fragment,null,t.createElement(et,{"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:o},t.createElement(ui,null)),t.createElement(ra,{id:"summary-card-action-menu",anchorEl:r,open:i,onClose:s,getContentAnchorEl:null,anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},MenuListProps:{"aria-labelledby":"summary-card-action-menu-button"}},n&&t.createElement(ve,{"data-testid":"summary-card-action-view",onClick:c=>{n(c),s(c)}},t.createElement(ee,null,t.createElement(gi,{fontSize:"small"})),t.createElement(te,null,"View")),a&&t.createElement(ve,{"data-testid":"summary-card-action-archive",onClick:c=>{a(c),s(c)}},t.createElement(ee,null,t.createElement(pi,{fontSize:"small"})),t.createElement(te,null,"Archive")),e&&t.createElement(ve,{"data-testid":"summary-card-action-delete",onClick:c=>{e(c),s(c)}},t.createElement(ee,null,t.createElement(Bn,{fontSize:"small"})),t.createElement(te,null,"Delete"))))},fs=Pl(e=>fl({root:{width:"100%",height:"100%",minHeight:"385px",display:"flex",flexDirection:"column",padding:e.spacing(2),position:"relative"}}))(ia),ys=R(e=>({root:{position:"relative",height:"100%"},summaryName:{fontSize:e.typography.pxToRem(24),color:e.palette.primary.main,maxHeight:"250px",overflow:"hidden",textOverflow:"ellipsis",display:"-webkit-box",WebkitLineClamp:6,WebkitBoxOrient:"vertical","-webkit-line-clamp":4,"-webkit-box-orient":"vertical",wordBreak:"break-word"},summaryDescription:{padding:0,maxHeight:"175px",overflow:"hidden",textOverflow:"ellipsis",display:"-webkit-box",WebkitLineClamp:6,WebkitBoxOrient:"vertical",wordBreak:"break-word"},card:{paddingTop:e.spacing(1),paddingBottom:0,paddingLeft:e.spacing(1),paddingRight:e.spacing(1)}})),ot=({title:e,description:a,viewLabel:n="View",editLabel:r="Edit",children:l,handleDelete:i,handleArchive:o,handleEdit:s,handleView:c})=>{const m=ys();return t.createElement(fs,{className:m.card,"data-testid":e},t.createElement(Nl,{title:e,titleTypographyProps:{className:m.summaryName},subheader:t.createElement(mn,{className:m.summaryDescription,content:a!=null?a:""}),action:(i||o)&&t.createElement(Es,{handleView:c,handleDelete:i,handleArchive:o})}),t.createElement(Ll,null,l),t.createElement(Ae,null),t.createElement(Dl,null,t.createElement(H,{"aria-label":s?r:n,"data-testid":`${e}-button`,size:"medium",color:"primary",role:"link",onClick:s||c,disabled:!c&&!s},s?r:n)))},bs="Error Deleting Check";function Cs(){const e=O(M),a=ne(),{showAlert:n}=le(),r=async l=>{const i=await e.deleteCheck(l);if(!i)throw new Error(`Failed to delete check ${l}`);return i};return re([ie.DeleteCheck],r,{onSuccess:()=>Promise.all([a.invalidateQueries({queryKey:[L.GetChecks]}),a.invalidateQueries({queryKey:[L.GetAllPrograms]})]),onError:(l,i)=>{let o=`Failed to delete check ${i}`;l instanceof Error&&(o=l.message),n({severity:"error",title:bs,message:o})}})}const ks=R(e=>({root:{position:"relative",height:"100%"},cardSection:{marginBottom:e.spacing(2)},listItem:{padding:0},listItemText:{margin:0}})),xs=({check:e})=>{var a;const n=ks();return t.createElement(bt,{dense:!0,disablePadding:!0,className:n.cardSection},t.createElement(E,{variant:"overline",color:"textSecondary"},"Check Details"),t.createElement(Ee,{disableGutters:!0,className:n.listItem},t.createElement(ae,{title:"Owner"},t.createElement(ee,null,t.createElement(Tt,{color:"action",fontSize:"small"}))),t.createElement(te,{className:n.listItemText,primary:t.createElement(Pe,{entityRef:(a=e.ownerEntityRef)!=null?a:"No Owner",hideIcon:!0})})))},ws=({check:e})=>{const{id:a,name:n,description:r,isEditable:l,ownerEntityRef:i}=e,o=pe(),s=J(Ln),{loading:c,allowed:m}=Q({permission:xn,resourceRef:a}),{loading:d,allowed:u}=Q({permission:Hl,resourceRef:a}),{showModal:p}=$e(),{mutate:g}=Cs(),f=j(async()=>{await p({title:"Delete Check",message:`Are you sure you want to delete the check '${n!=null?n:a}'?`})&&g(a)},[p,n,g,a]),y=j(()=>{o(s({checkId:a}))},[s,a,o]);return t.createElement(ot,{title:n!=null?n:a,description:r,children:i&&t.createElement(xs,{check:e}),handleView:y,handleEdit:l&&!c&&m?y:void 0,handleDelete:l&&!d&&u?f:void 0})},Ts=()=>t.createElement(h,{item:!0,container:!0,"data-testid":"checks-skeleton"},Array.from({length:10},(e,a)=>t.createElement(h,{key:`loading-${a}`,xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem"},t.createElement(wt,{variant:"rect",height:385})))),Ss=R(()=>({searchIcon:{opacity:".5"},clearButton:{height:"36px",width:"36px"}})),Va=({searchTerm:e,setSearchTerm:a,showClear:n=!0,placeholder:r="Search...",disabled:l,...i})=>{const o=Ss(),s=sn(null);A(()=>{!l&&s.current&&s.current.focus()},[l]);const c=d=>{a(d.target.value)},m=()=>{a("")};return t.createElement(Y,{...i,disabled:l,inputRef:s,fullWidth:!0,placeholder:r,value:e,onChange:c,InputProps:{startAdornment:t.createElement(fn,{position:"start"},t.createElement(hi,{className:o.searchIcon,"data-testid":"search-icon"})),endAdornment:n&&e?t.createElement(fn,{position:"end"},t.createElement(et,{edge:"end",onClick:m,className:o.clearButton},t.createElement(_n,null))):null}})};var Ft=(e=>(e.all="All",e.active="Active",e.archived="Archived",e))(Ft||{});const Rs=R(()=>({searchbar:{maxWidth:"350px"},filters:{display:"flex",alignItems:"center"},dropdownFilters:{margin:"0 15px",display:"flex",alignItems:"center"},selectHolder:{marginLeft:"10px"}})),_a=({searchPlaceholder:e,isLoading:a,searchTerm:n,setSearchTerm:r,filterAlpha:l,handleAlphabeticalFilterChange:i,filterOwner:o,handleOwnerFilterChange:s,filterStatus:c,handleStatusFilterChange:m,owners:d})=>{const u=Rs();return t.createElement(h,{item:!0,xs:9,className:u.filters},t.createElement(Va,{searchTerm:n,disabled:a,setSearchTerm:r,placeholder:e||"Search",variant:"outlined",size:"small",className:u.searchbar}),t.createElement("div",{className:u.dropdownFilters},t.createElement(E,null,"Sort by: "),t.createElement(oa,{className:u.selectHolder,value:l,onChange:i},t.createElement("option",{value:"default"},"Default"),t.createElement("option",{value:"ascending"},"Name A-Z"),t.createElement("option",{value:"descending"},"Name Z-A"))),t.createElement("div",{className:u.dropdownFilters},t.createElement(E,null,"Filter by owner: "),t.createElement(oa,{className:u.selectHolder,value:o,onChange:s},t.createElement("option",{key:"all",value:"all"},"All"),d==null?void 0:d.map((p,g)=>t.createElement("option",{key:p+g,value:p},p)))),c&&m&&t.createElement("div",{className:u.dropdownFilters},t.createElement(E,null,"Filter by status: "),t.createElement(oa,{className:u.selectHolder,value:c,onChange:m},Object.keys(Ft).map(p=>t.createElement(t.Fragment,{key:p},t.createElement("option",{value:p},Ft[p]))))))},Ps=(e,a)=>e==null?void 0:e.sort((n,r)=>{var l,i,o,s;const c=(i=(l=n==null?void 0:n.name)==null?void 0:l.toLocaleLowerCase())!=null?i:n==null?void 0:n.id.toLocaleLowerCase(),m=(s=(o=r==null?void 0:r.name)==null?void 0:o.toLocaleLowerCase())!=null?s:r==null?void 0:r.id.toLocaleLowerCase();return!c||!m?0:c<m?a==="ascending"?-1:1:c>m?a==="ascending"?1:-1:0}),Ha=e=>{const a=e==null?void 0:e.map(n=>n==null?void 0:n.ownerEntityRef).filter(n=>n!=="");return[...new Set(a)]},He=({searchTermProp:e,filterAlphaProp:a,filterOwnerProp:n,filterStatusProp:r,checks:l,tracks:i,campaigns:o})=>{var s,c,m,d;const u=((s=l!=null?l:i)!=null?s:o)||[],p=(c=u==null?void 0:u.filter)==null?void 0:c.call(u,v=>{var b;return((b=v==null?void 0:v.name)!=null?b:v==null?void 0:v.id).toLocaleLowerCase().includes(e.toLocaleLowerCase())}),g=n&&n!=="all"?(m=p==null?void 0:p.filter)==null?void 0:m.call(p,v=>{var b;return((b=v==null?void 0:v.ownerEntityRef)==null?void 0:b.toLowerCase())===n.toLowerCase()}):p,f=(r==null?void 0:r.toLowerCase())===Ft.archived.toLowerCase(),y=r?(d=g==null?void 0:g.filter)==null?void 0:d.call(g,v=>f?v.archived:!v.archived):g;return a==="default"?y:Ps(y,a)};var xe=(e=>(e.Alpha="default",e.Owner="all",e.Status="all",e))(xe||{});const We=12,Ns=R(e=>({pagination:{width:"-webkit-fill-available",display:"flex",justifyContent:"center",position:"fixed",bottom:"0",backgroundColor:e.palette.type==="dark"?"#333333":"#F8F8F8",marginRight:"40px"}})),Wa=({response:e,listingsPerPage:a,cursor:n,setCursor:r,prevCursors:l,setPrevCursors:i,labelPerPageDropdown:o,urlRoute:s})=>{var c;const m=Ns(),d=e!=null&&e.edges?e==null?void 0:e.edges[(e==null?void 0:e.edges.length)-1]:{cursor:""},[u,p]=C(0),g=()=>{i(b=>[...b,n]),r(d==null?void 0:d.cursor)},f=()=>{r(l[l.length-1]),i(b=>b.slice(0,-1))},y=(b,w)=>{p(x=>(w>x?g():f(),w))},v=b=>{window.open(`/soundcheck/${s!=null?s:"tracks?tracksPerPage="}${b.target.value}`,"_self")};return t.createElement(sa,{className:m.pagination,component:"div",count:(c=e==null?void 0:e.totalCount)!=null?c:-1,rowsPerPage:a!=null?a:10,onPageChange:y,page:u,onRowsPerPageChange:v,labelRowsPerPage:o!=null?o:"Listings per page:",rowsPerPageOptions:[We,We*2,We*4]})},Ls=R(e=>({headerButtons:{display:"flex",gap:e.spacing(1),flexWrap:"nowrap",justifyContent:"end",alignItems:"center"},header:{padding:e.spacing(0,0,1)},container:{padding:e.spacing(3),gap:e.spacing(3)},pagination:{marginTop:e.spacing(1)}})),Ds=({checksPerPage:e,currentCursor:a})=>{const n=Ls(),[r,l]=C(a),[i,o]=C([]),{data:s,isLoading:c}=Nt(void 0,e,r),{loading:m,allowed:d}=Q({permission:Wl}),[u,p]=C(s);A(()=>{s&&p(()=>{var I;return{endCursor:s.endCursor,totalCount:s.totalCount,hasNextPage:(I=s==null?void 0:s.hasNextPage)!=null?I:!1,edges:s.edges}})},[s]);const g=u==null?void 0:u.edges.map(I=>I.checker),{setShowAddModal:f}=se(),[y,v]=C(),[b,w]=C(""),[x,S]=C(xe.Alpha),[V,$]=C(xe.Owner),[_,D]=C([]),ue=I=>{const P=He({searchTermProp:b,filterAlphaProp:I.target.value,filterOwnerProp:V,checks:g!=null?g:[]});S(I.target.value),v(P)},je=I=>{const P=He({searchTermProp:b,filterAlphaProp:x,filterOwnerProp:I.target.value,checks:g!=null?g:[]});$(I.target.value),v(P)};if(A(()=>{const I=u==null?void 0:u.edges.map(K=>K.checker),P=Ha(I!=null?I:[]);v(I),D(P!=null?P:[])},[c,u]),A(()=>{const I=u==null?void 0:u.edges.map(K=>K.checker),P=He({searchTermProp:b,filterAlphaProp:x,filterOwnerProp:V,checks:I!=null?I:[]});v(P)},[b,x,V,u]),!c&&!g)return t.createElement(Me,{title:Lt.title,description:Lt.description,imgSrc:pa,action:!m&&t.createElement(H,{disabled:!d,variant:"contained",color:"primary",onClick:()=>f(!0)},Lt.callToAction)});let Ce;return c?Ce=t.createElement(Ts,null):y!=null&&y.length?Ce=y==null?void 0:y.map(I=>t.createElement(h,{key:I.id,xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem","aria-label":"result"},t.createElement(ws,{check:I}))):Ce=t.createElement(h,{xs:12,item:!0,role:"listitem","aria-label":"result"},t.createElement(Me,{title:wa.title,description:wa.description})),t.createElement(h,{container:!0,direction:"row",className:n.container},t.createElement(h,{container:!0,spacing:4,className:n.header},t.createElement(_a,{searchPlaceholder:"Search available checks",isLoading:c,searchTerm:b,setSearchTerm:w,filterAlpha:x,handleAlphabeticalFilterChange:ue,filterOwner:V,handleOwnerFilterChange:je,owners:_}),t.createElement(h,{item:!0,xs:3},t.createElement("div",{className:n.headerButtons},!m&&t.createElement(H,{disabled:!d,variant:"contained",color:"primary",onClick:()=>f(!0)},"Create Check")))),t.createElement(h,{container:!0,spacing:4,role:"list","aria-label":"checks"},Ce),t.createElement("div",{className:n.pagination},t.createElement(Wa,{response:u,listingsPerPage:e,cursor:r,setCursor:l,prevCursors:i,setPrevCursors:o,labelPerPageDropdown:"Checks Per Page:",urlRoute:"checks?checksPerPage="})))},Is=()=>{const[e]=Zt(),a=e.get("checksPerPage"),n=a?parseInt(a,10):We,{showAddModal:r}=se();return t.createElement("div",null,t.createElement(Ds,{checksPerPage:n}),r&&t.createElement(vs,null))},Os=()=>t.createElement(or,null,t.createElement(Is,null)),wr=R(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],i=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:i,"& $icon":{color:e.palette.primary.main}}},icon:{},deleteButton:{marginRight:"auto"}}}),Tr=({chip:e,disabled:a})=>{var n;const[r,l]=vi(()=>({type:"chip",item:{id:e.id,label:e.label},collect:o=>({isDragging:o.isDragging()})})),i=wr();return t.createElement(Ct,{ref:l,label:e.label,className:i.chip,icon:t.createElement(Hn,{"data-testid":"drag-indicator-icon"}),disabled:a,onDelete:()=>{},deleteIcon:t.createElement(ae,{title:(n=e.description)!=null?n:""},t.createElement(fi,{className:i.icon,"data-testid":"visibility-icon"}))})},As=R(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)}})),Fs=({chips:e,disabled:a})=>t.createElement(t.Fragment,null,e.map(n=>t.createElement(Tr,{disabled:a,key:n.id,chip:n}))),$s=()=>t.createElement(E,{variant:"body1",color:"textSecondary"},"There are no matches."),Sr=({isLoading:e,chips:a=[],disabled:n,label:r})=>{const l=As(),[i,o]=C(""),s=a.filter(d=>d.label.toLowerCase().includes(i.toLowerCase())),c=a.length>0||i;let m=null;return e?m=t.createElement(vt,null):s.length>0?m=t.createElement(Fs,{disabled:n!=null?n:!1,chips:s}):c&&(m=t.createElement($s,null)),t.createElement(h,{container:!0},t.createElement(h,{item:!0,xs:12,className:l.columnHeader},t.createElement(E,{className:l.subtitle},r!=null?r:"Checks")),t.createElement(h,{item:!0,xs:12},t.createElement(Va,{searchTerm:i,disabled:e||n,setSearchTerm:o,placeholder:"Search available checks",variant:"outlined",size:"small"})),t.createElement(h,{item:!0,className:l.chipContainer,xs:12},m))},Ms=R(e=>({button:{border:"none",fontWeight:700,fontSize:e.typography.subtitle2.fontSize,lineHeight:"19px",color:e.palette.primary.main,textTransform:"none"}})),$t=({label:e,...a})=>{const n=Ms();return t.createElement(H,{className:n.button,...a,"aria-label":e},e)},Gs=R(()=>({helperText:{marginLeft:0}})),st=({name:e,control:a,error:n,label:r,placeholder:l,disabled:i,numbersOnly:o,inputProps:s,rules:c,messages:m,helperText:d,multiline:u,minRows:p,variant:g="standard",size:f,margin:y="normal"})=>{const v=Gs();return t.createElement(G,{name:e,control:a,defaultValue:"",rules:c,render:({field:b})=>t.createElement(Y,{...b,FormHelperTextProps:{className:v.helperText},fullWidth:!0,multiline:u,minRows:p,placeholder:l,label:r,disabled:i,type:o?"number":"text",InputProps:s,margin:y,error:!!n,helperText:n&&m?m[n.type]:d,variant:g,size:f})})},Bs=R(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]}})),Rr=({chips:e,onDelete:a,onDrop:n,error:r=!1,placeholder:l="",disabled:i})=>{const o=Bs(),s=wr(),[{isOver:c},m]=Ei(()=>({accept:"chip",drop:d=>{n(d)},collect:d=>({isOver:d.isOver()})}));return t.createElement("div",{ref:m,className:`${o.input} ${r?o.error:""} ${c?o.hoverBackground:o.normalBackground}`,"data-testid":"droppable-input"},t.createElement("div",{className:o.chipContainer},e!=null&&e.length?e.map(d=>t.createElement(Ct,{key:d.id,label:d.label,className:s.chip,icon:t.createElement(Hn,null),style:{cursor:"pointer"},onDelete:()=>a(d),disabled:i})):l))},Vs=({index:e,disabled:a})=>{var n,r;const{control:l,formState:{errors:i}}=he(),{fields:o,remove:s,append:c}=ft({control:l,name:`levels.${e}.levelChips`,rules:{required:!0}}),m=j(u=>{c(u)},[c]),d=j(u=>{const p=kn(o,g=>g.id===u.id);s(p)},[s,o]);return t.createElement(Rr,{chips:o,onDelete:d,onDrop:m,error:!!((r=(n=i==null?void 0:i.levels)==null?void 0:n[e])!=null&&r.levelChips),placeholder:"Drag and drop checks here to include them in this level",disabled:a})},_s=R(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},inputNameBase:{fontSize:e.typography.subtitle1.fontSize,fontWeight:700},inputDescriptionBase:{fontSize:e.typography.fontSize,fontWeight:"normal"}})),Hs=({disabled:e})=>{const a=_s(),{control:n,formState:{errors:r},getValues:l}=he(),{fields:i,remove:o,append:s}=ft({control:n,name:"levels"});return t.createElement(h,{container:!0},t.createElement(h,{item:!0,xs:12,className:a.columnHeader},t.createElement(E,{className:a.subtitle},"Levels"),!e&&t.createElement($t,{label:"Add Level",startIcon:t.createElement(Wn,null),onClick:()=>s({levelName:`Level ${i.length+1}`,levelDescription:"",levelChips:[]}),disabled:e})),t.createElement(h,{container:!0,item:!0,spacing:5},i.map((c,m)=>{var d,u;return t.createElement(h,{container:!0,item:!0,xs:12,spacing:2,key:c.id},t.createElement(h,{item:!0,xs:12,className:a.levelHeader},t.createElement(h,{container:!0,spacing:1},t.createElement(h,{item:!0,xs:!0},t.createElement(st,{name:`levels.${m}.levelName`,placeholder:"Untitled level",control:n,disabled:e,label:"Level Name",variant:"outlined",size:"small",inputProps:{classes:{input:a.inputNameBase}},margin:"none",rules:{required:!0},error:(u=(d=r==null?void 0:r.levels)==null?void 0:d[m])==null?void 0:u.levelName})),!e&&i.length>1&&t.createElement(h,{item:!0,className:a.removeButton},t.createElement($t,{label:"Remove Level",startIcon:t.createElement(zn,null),onClick:()=>o(m),disabled:e})))),t.createElement(h,{item:!0,xs:12},t.createElement(Vs,{index:m,disabled:e})),t.createElement(h,{item:!0,xs:12},t.createElement(st,{name:`levels.${m}.levelDescription`,placeholder:"Enter description here",control:n,disabled:e,label:`${l(`levels.${m}.levelName`)} description`,variant:"outlined",size:"small",inputProps:{classes:{input:a.inputDescriptionBase},"aria-label":`${l(`levels.${m}.levelName`)} description`},margin:"none"})))})))},Pr=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},selectMargin:{marginBottom:e.spacing(1)}})),za={name:{name:"Campaign name",placeholder:"Enter a name for the track",messages:{required:"Track name is required",maxLength:"Track name must be at least 1 character and less than 100 characters"},rules:{required:!0,maxLength:100}},description:{label:"Description",description:"Give your campaign a meaningful description so others can understand how to use it",placeholder:"Enter a brief description about the track"},documentationURL:{label:"Documentation URL (Optional)",placeholder:"Enter a documentation URL for your track"},owner:{label:"Track Owner",description:"Select an owner for the track. Defaults to the current user."},levels:{label:"Track Levels",description:"Add the checks that apply to each level. You can preview the checks to see the rules that apply to each check."}},Ws=({disabled:e})=>{const a=Pr(),{control:n,formState:{errors:r}}=he(),{placeholder:l,messages:i,rules:o}=za.name;return t.createElement(h,{className:a.selectMargin,item:!0,xs:12},t.createElement(st,{name:"trackName",placeholder:l,control:n,disabled:e,label:"Name",error:r.trackName,messages:i,rules:o}))},zs=({disabled:e,selectedTrack:a})=>{const{options:n,isLoading:r}=ea(),{user:l,userEntityRef:i}=Ye(),{control:o}=he();let s=n==null?void 0:n.map(m=>({value:m.ref,label:m.name}));i&&(s=[{value:i,label:l==null?void 0:l.metadata.name},...s]);const c=a==null?void 0:a.ownerEntityRef;return c&&i!==c&&!s.some(m=>m.value===c)&&(s=[{value:a.ownerEntityRef,label:q(a.ownerEntityRef).name},...s]),t.createElement(At,{name:"ownerEntityRef",selectLabel:za.owner.label,control:o,disabled:e,options:r?void 0:ca(s,"value"),rules:{required:!0}})},qa=()=>{const{data:e,isLoading:a}=Nt(),n=z(()=>e==null?void 0:e.edges.map(i=>i.checker),[e==null?void 0:e.edges]),r=z(()=>{var i;return(i=n==null?void 0:n.filter(o=>!!o).map(o=>{var s,c,m;return{id:(s=o.id)!=null?s:"",label:(c=o.name)!=null?c:o.id,description:(m=o.description)!=null?m:""}}))!=null?i:[]},[n]),l=z(()=>n==null?void 0:n.reduce((i,o)=>{var s,c,m;return i[o.id]={id:o.id,name:(s=o.name)!=null?s:o.id,description:(c=o.description)!=null?c:"",filter:(m=o.filter)!=null?m:void 0},i},{}),[n]);return{checkChips:r,checksMap:l,checksLoading:a}},qs={trackName:"",trackDescription:"",ownerEntityRef:"",levels:[{levelName:"Level 1",levelDescription:"",levelChips:[]}]},Us=({name:e,description:a,ownerEntityRef:n,filter:r,levels:l,documentationURL:i})=>({trackName:e,trackDescription:a!=null?a:"",documentationURL:i!=null?i:void 0,ownerEntityRef:n,filters:La(r),levels:(l==null?void 0:l.map(o=>{var s,c,m;return{levelName:(c=(s=o.name)!=null?s:`Level ${o.ordinal}`)!=null?c:"Level 1",levelDescription:(m=o.description)!=null?m:"",levelChips:o.checks.map(d=>{var u;return{id:d.id,label:(u=d.name)!=null?u:d.id}})}}))||[]}),Nr=(e,a,n)=>{var r,l,i,o;return{id:(r=n==null?void 0:n.id)!=null?r:xt(),ownerEntityRef:e.ownerEntityRef,description:e.trackDescription,name:e.trackName,documentationURL:(l=e.documentationURL)!=null?l:"",type:(i=n==null?void 0:n.type)!=null?i:"standard",levels:(o=e.levels)==null?void 0:o.map((s,c)=>{var m,d;return{ordinal:c+1,name:(m=s.levelName)!=null?m:"",description:(d=s.levelDescription)!=null?d:"",checks:s.levelChips.map(u=>a[u.id])}}),filter:hr(e.filters)}},Ks=e=>{const{selectedItem:a}=Be(),n=z(()=>a?Us(a):qs,[a]),r=Et({defaultValues:n}),{userEntityRef:l}=Ye();A(()=>{!a&&l&&!r.getValues("ownerEntityRef")&&r.setValue("ownerEntityRef",l)},[a,l,r]);const{checkChips:i,checksLoading:o,checksMap:s}=qa(),c=new Set(r.getValues("levels").flatMap(u=>u.levelChips.map(p=>p.id))),m=i.filter(u=>!c.has(u.id)),{showModal:d}=$e();return{formMethods:r,onSubmit:async u=>{if(!await d({title:"Save Track",message:`Are you sure you want to save track: ${u.trackName}?`,error:!1}))return;const p=Nr(u,s!=null?s:{},a);e(p)},selectableChips:m,checksLoading:o}},js=R(e=>({regularFontSize:{fontSize:e.typography.fontSize,fontWeight:"bold"},description:{fontWeight:"normal",fontSize:e.typography.fontSize},ownerDescription:{margin:e.spacing(-2,0,2,0)},root:{overflow:"hidden",display:"flex",padding:e.spacing(1),marginBottom:"53px"}})),Lr=({onSave:e,title:a,open:n,handleClose:r})=>{const{selectedItem:l,isLoading:i,setSelectedItem:o,isReadOnly:s}=Be(),{formMethods:c,onSubmit:m,selectableChips:d,checksLoading:u}=Ks(e),{control:p,handleSubmit:g}=c,f=js(),y=Pr(),v=s||!!l&&!l.isEditable,{description:b,owner:w,documentationURL:x,levels:S}=za;return t.createElement(ga,{backend:ha},t.createElement(_e,{handleClose:r,title:a,open:n},t.createElement(pn,{...c},t.createElement("form",{onSubmit:g(m)},t.createElement(h,{container:!0,spacing:4,className:f.root},t.createElement(h,{item:!0,xs:12},t.createElement(h,{item:!0,xs:12},t.createElement(E,{className:y.sectionLabel,style:{margin:0}},"Track Details"),t.createElement(Ws,{disabled:i||v})),t.createElement(h,{item:!0,xs:12},t.createElement(h,{item:!0,xs:12},t.createElement(Ot,{name:"trackDescription",control:p,label:b.label,placeholder:b.placeholder,disabled:i||v}))),t.createElement(h,{item:!0,xs:12},t.createElement(st,{name:"documentationURL",control:p,label:x.label,placeholder:x.placeholder,disabled:i||v}))),t.createElement(h,{item:!0,xs:12},t.createElement(h,{item:!0,xs:12},t.createElement(E,{className:y.sectionLabel},w.label),!v&&t.createElement(E,{className:`${f.ownerDescription} ${f.description}`},w.description)),t.createElement(h,{item:!0,xs:12},t.createElement(zs,{disabled:i||v,selectedTrack:l!=null?l:void 0}))),t.createElement(h,{item:!0,xs:12},t.createElement(kr,{control:p,disabled:i||v,description:"Apply filters so it's only applicable to relevant entities.",formFieldName:"filters"})),t.createElement(h,{item:!0,xs:12},t.createElement(h,{container:!0,spacing:4},t.createElement(h,{item:!0,xs:12},t.createElement(E,{className:y.sectionLabel,style:{margin:0}},S.label),!v&&t.createElement(E,{className:f.description},S.description)),!v&&t.createElement(h,{item:!0,xs:5},t.createElement(Sr,{chips:d,isLoading:u||i,disabled:v})),t.createElement(h,{item:!0,xs:7},t.createElement(Hs,{disabled:v}))))),t.createElement(h,{container:!0,spacing:4,className:f.root},t.createElement(Ga,{onCancel:()=>{o(null),r()},saveButtonText:"Save Track",isLoading:i||u,onSave:v?void 0:g(m),disableSave:v}))))))},Qs=()=>{const{setIsLoading:e,setShowAddModal:a,showAddModal:n}=Be(),{mutateAsync:r,isLoading:l}=ar();return A(()=>{e(l)},[e,l]),t.createElement(Lr,{handleClose:()=>a(!1),title:"Create Track",open:n,onSave:async i=>{await r(i,{onSuccess:()=>a(!1)})}})},Ys=R(e=>({root:{position:"relative",height:"100%"},cardSection:{marginBottom:e.spacing(2)},listItem:{padding:0},listItemText:{margin:0}})),Xs=({track:e})=>{var a,n,r;const l=Ys(),i=(n=(a=e.levels)==null?void 0:a.length)!=null?n:0,o=(r=e.levels)==null?void 0:r.reduce((s,c)=>s+c.checks.length,0);return t.createElement(bt,{dense:!0,disablePadding:!0,className:l.cardSection},t.createElement(E,{variant:"overline",color:"textSecondary"},"Track Details"),t.createElement(Ee,{disableGutters:!0,className:l.listItem},t.createElement(ae,{title:"Levels"},t.createElement(ee,null,t.createElement(Ci,{color:"action",fontSize:"small"}))),t.createElement(te,{className:l.listItemText,primary:t.createElement(E,{variant:"body2",color:"textSecondary"},`${i} ${i===1?"Level":"Levels"}`)})),t.createElement(Ee,{disableGutters:!0,className:l.listItem},t.createElement(ae,{title:"Checks"},t.createElement(ee,null,t.createElement(bi,{color:"action",fontSize:"small"}))),t.createElement(te,{className:l.listItemText,primary:t.createElement(E,{variant:"body2",color:"textSecondary"},`${o} ${o===1?"Check":"Checks"}`)})),e.documentationURL&&t.createElement(Ee,{disableGutters:!0,className:l.listItem},t.createElement(ae,{title:"Documentation"},t.createElement(ee,null,t.createElement(yi,{color:"action",fontSize:"small"}))),t.createElement(te,{className:l.listItemText,primary:t.createElement(ll,{to:e.documentationURL,target:"_blank",rel:"noopener noreferrer"},"Learn more")})),t.createElement(Ee,{disableGutters:!0,className:l.listItem},t.createElement(ae,{title:"Owner"},t.createElement(ee,null,t.createElement(Tt,{color:"action",fontSize:"small"}))),t.createElement(te,{className:l.listItemText,primary:t.createElement(Pe,{entityRef:e.ownerEntityRef,hideIcon:!0})})))},Zs="Error Deleting Track";function Js(){const e=O(M),a=ne(),{showAlert:n}=le(),r=async l=>{const i=await e.deleteProgram(l);if(!i)throw new Error(`Failed to delete track ${l}`);return i};return re([ie.DeleteProgram],r,{onSuccess:()=>{const l=[L.GetAllPrograms,L.GetOverallTrackPassRate,L.GetIndividualTrackPassRate];for(const i of l)a.invalidateQueries({queryKey:[i]})},onError:(l,i)=>{let o=`Failed to delete track ${i}`;l instanceof Error&&(o=l.message),n({severity:"error",title:Zs,message:o})}})}const ec=({summary:e})=>{const{loading:a,allowed:n}=Q({permission:wn,resourceRef:e.id}),{loading:r,allowed:l}=Q({permission:zl,resourceRef:e.id}),{showModal:i}=$e(),{mutate:o}=Js(),s=pe(),c=J(Dn),m=j(async()=>{await i({title:"Delete Track",message:`Are you sure you want to delete track ${e.name}?`})&&o(e.id)},[i,e.id,e.name,o]),d=j(()=>{s(c({trackId:e.id}))},[s,e.id,c]);return t.createElement(ot,{title:e.name,description:e.description,children:t.createElement(Xs,{track:e}),handleView:d,handleEdit:e.isEditable&&!a&&n?d:void 0,handleDelete:e.isEditable&&!r&&l?m:void 0})},tc=()=>t.createElement(h,{item:!0,container:!0,"data-testid":"tracks-skeleton"},Array.from({length:6},(e,a)=>t.createElement(h,{key:`loading-${a}`,xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem"},t.createElement(wt,{variant:"rect",height:385}))));var Mt=(e=>(e.title="Create a track",e.description="A track is composed of levels and checks, and encourages alignment to architectural best practices and standards.",e.callToAction="Get started",e))(Mt||{}),Ua=(e=>(e.title="No tracks found",e.description="No tracks matched your search. Consider changing search term and filters.",e))(Ua||{});const ac=R(e=>({headerButtons:{display:"flex",gap:e.spacing(1),flexWrap:"nowrap",justifyContent:"end"},header:{padding:e.spacing(0,0,1)},container:{padding:e.spacing(3),gap:e.spacing(3)},pagination:{marginTop:e.spacing(1)}})),nc=({tracksPerPage:e,currentCursor:a})=>{var n;const r=ac(),[l,i]=C(a),[o,s]=C([]),{data:c,isLoading:m}=ba(void 0,e,l),{loading:d,allowed:u}=Q({permission:ql}),[p,g]=C(c);A(()=>{c&&g(()=>{var P;return{endCursor:c.endCursor,totalCount:c.totalCount,hasNextPage:(P=c==null?void 0:c.hasNextPage)!=null?P:!1,edges:c.edges}})},[c]);const f=(n=p==null?void 0:p.edges)==null?void 0:n.map(P=>P==null?void 0:P.program),{setShowAddModal:y}=Be(),[v,b]=C(),[w,x]=C(""),[S,V]=C(xe.Alpha),[$,_]=C(xe.Owner),[D,ue]=C([]),je=P=>{const K=He({searchTermProp:w,filterAlphaProp:P.target.value,filterOwnerProp:$,tracks:f!=null?f:[]});V(P.target.value),b(K)},Ce=P=>{const K=He({searchTermProp:w,filterAlphaProp:S,filterOwnerProp:P.target.value,tracks:f!=null?f:[]});_(P.target.value),b(K)};if(A(()=>{const P=p==null?void 0:p.edges.map(W=>W.program),K=Ha(P!=null?P:[]);b(P),ue(K!=null?K:[])},[m,p]),A(()=>{const P=p==null?void 0:p.edges.map(W=>W.program),K=He({searchTermProp:w,filterAlphaProp:S,filterOwnerProp:$,tracks:P!=null?P:[]});b(K)},[w,S,$,p]),!m&&!f)return t.createElement(Me,{title:Mt.title,description:Mt.description,imgSrc:pa,action:!d&&t.createElement(H,{disabled:!u,variant:"contained",color:"primary",onClick:()=>y(!0)},Mt.callToAction)});let I;return m?I=t.createElement(tc,null):v!=null&&v.length?I=v==null?void 0:v.map(P=>t.createElement(h,{key:P.id,xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem","aria-label":"result"},t.createElement(ec,{summary:P}))):I=t.createElement(h,{xs:12,item:!0,role:"listitem","aria-label":"result"},t.createElement(Me,{title:Ua.title,description:Ua.description})),t.createElement(h,{container:!0,direction:"row",className:r.container},t.createElement(h,{container:!0,spacing:4,className:r.header},t.createElement(_a,{searchPlaceholder:"Search available tracks",isLoading:m,searchTerm:w,setSearchTerm:x,filterAlpha:S,handleAlphabeticalFilterChange:je,filterOwner:$,handleOwnerFilterChange:Ce,owners:D}),t.createElement(h,{item:!0,xs:3},t.createElement("div",{className:r.headerButtons},!d&&t.createElement(H,{disabled:!u,variant:"contained",color:"primary",onClick:()=>y(!0)},"Create Track")))),t.createElement(h,{container:!0,spacing:4,role:"list","aria-label":"tracks"},I),t.createElement("div",{className:r.pagination},t.createElement(Wa,{response:p,listingsPerPage:e,cursor:l,setCursor:i,prevCursors:o,setPrevCursors:s,labelPerPageDropdown:"Tracks Per Page:",urlRoute:"tracks?tracksPerPage="})))},rc=()=>{const{showAddModal:e}=Be(),[a]=Zt(),n=a.get("tracksPerPage"),r=n?parseInt(n,10):We;return t.createElement("div",null,t.createElement(il,{variant:"info",message:"Programs will now be referred to as Tracks throughout the Soundcheck UI.",id:"programTrackBanner"}),t.createElement(nc,{tracksPerPage:r}),e&&t.createElement(Qs,null))},lc=()=>t.createElement(lr,null,t.createElement(rc,null));function we(e){const a=Rt.utc();return e.map((n,r)=>({name:fa(a,e.length-r-1),passRate:n}))}var ic=(e=>(e.Bar="bar",e.Line="line",e))(ic||{});const oc=-25,De=[0,100],Dr=85,Ka=25,Gt="name",sc=250,Bt=.5,Ir="circle",Or=8,Ar="monotone",Vt=({children:e})=>t.createElement(qn,{minHeight:sc,debounce:1},e),cc=F(e=>({container:{position:"relative"},chartMessage:{position:"absolute",top:"50%",left:"50%",fontWeight:"bold",transform:"translate(-50%, -50%)",backgroundColor:e.palette.background.default,padding:e.spacing(1),borderRadius:"5px",textAlign:"center",width:"50%",zIndex:2}})),mc=()=>{const e=[{x:"A",y:25},{x:"B",y:50},{x:"C",y:75}],a=cc();return t.createElement("div",{className:a.container},t.createElement(Vt,null,t.createElement(va,{data:e},t.createElement(St,{strokeDasharray:"3 3",vertical:!1,opacity:Bt}),t.createElement(at,{dataKey:"x",stroke:"#ccc",hide:!0}),t.createElement(nt,{domain:De,stroke:"#ccc",hide:!0}),t.createElement(Ea,{type:"monotone",dataKey:"y",stroke:"#ccc",dot:!1}))),t.createElement(E,{className:a.chartMessage},"No Data"))},dc=R(e=>({legend:{color:fe(e)}})),_t=({data:e,lines:a})=>{const n=Ze(),r=Pt(n),l=fe(n),i=dc();return e.length?t.createElement(Vt,null,t.createElement(va,{data:e},t.createElement(St,{vertical:!1,opacity:Bt}),t.createElement(at,{dataKey:Gt,stroke:l}),t.createElement(nt,{width:Ka,domain:De,stroke:l}),t.createElement(Un,{position:{y:oc},contentStyle:{backgroundColor:n.palette.background.paper}}),a.length>1&&t.createElement(Kn,{iconType:Ir,iconSize:Or,formatter:o=>t.createElement("span",{className:i.legend},o)}),a.map((o,s)=>t.createElement(Ea,{key:o.dataKey,dataKey:o.dataKey,stroke:r[s%r.length],strokeWidth:2,dot:!1,name:o.name,type:Ar})))):t.createElement(mc,null)},uc=({data:e,lines:a})=>{const n=Ze(),r=Pt(n);return t.createElement(qn,{height:50,width:100},t.createElement(va,{data:e},t.createElement(at,{hide:!0,dataKey:Gt}),t.createElement(nt,{width:0,domain:De}),a.map((l,i)=>t.createElement(Ea,{key:l.dataKey,dataKey:l.dataKey,stroke:r[i%r.length],strokeWidth:2,dot:!1,name:l.name,type:Ar}))))},ct=({chartData:e,tableChart:a})=>{const n=[{dataKey:"passRate",name:"Pass rate"}];return a?t.createElement(uc,{data:e,lines:n}):t.createElement(_t,{data:e,lines:n})};var N=(e=>(e.Entity="Entity",e.Kind="Entity Kind",e.Type="Entity Type",e.EntityOwner="Entity Owner",e.Lifecycle="Entity Lifecycle",e.System="System",e.Track="Track",e.Level="Track Level",e.Check="Check",e.CheckOwner="Check Owner",e))(N||{});function pc(e){var a;const n=O(M),[r,l]=C(null),i=async()=>(await n.getEntityRefsForTechHealthFilter(e)).entityRefsForTechHealthFilter,o=Z([L.GetSoftwareEntityRefsForUser,e],i,{retry:!1,onError:l,enabled:e!==null,staleTime:5*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1});return{data:(a=o.data)!=null?a:[],isLoading:o.isLoading,error:r}}const gc=(e,a)=>{var n,r,l,i;const o=[];for(const c of e)o.push({label:(n=c.name)!=null?n:c.id,value:c.id});const s=e.map(c=>c.id);for(const c of a)for(const m of(r=c.levels)!=null?r:[])for(const d of(l=m.checks)!=null?l:[])s.includes(d.id)||(s.push(d.id),o.push({label:(i=d.name)!=null?i:d.id,value:d.id}));return o},hc=e=>{var a;const n=[];for(const r of e!=null?e:[])for(const l of(a=r.levels)!=null?a:[])n.includes(l.ordinal)||n.push(l.ordinal);return n.sort().map(r=>({label:`Level ${r}`,value:`${r}`}))},vc=(e,a)=>{const n=new Set(e.filter(r=>r.ownerEntityRef).map(r=>r.ownerEntityRef));return Array.from(n).map(r=>{var l;return{label:(l=a[r])!=null?l:r,value:r}})},Ht=e=>(e!=null?e:[]).map(a=>({label:a,value:a})),Ec=()=>{const[e,a]=C(!1),{userEntityRef:n}=Ye(),{data:r,isLoading:l}=pc(n),{data:i,isLoading:o}=ul(),s=z(()=>tt.mapValues(tt.keyBy(i!=null?i:[],"ref"),_=>_.name),[i]),{data:c,isLoading:m}=ba(void 0,100),d=z(()=>{var _;return(_=c==null?void 0:c.edges.map(D=>D.program))!=null?_:[]},[c]),{data:u,isLoading:p}=Nt(void 0,100),g=z(()=>{var _;return(_=u==null?void 0:u.edges.map(D=>D.checker))!=null?_:[]},[u]),{data:f,isLoading:y}=it("kind"),{data:v,isLoading:b}=it("spec.lifecycle"),{data:w,isLoading:x}=it("spec.type"),{data:S,isLoading:V}=it("spec.system"),$=z(()=>{var _;return{[N.Kind]:Ht(f),[N.Lifecycle]:Ht(v),[N.Type]:Ht(w),[N.System]:Ht(S),[N.Entity]:r.map(D=>({label:q(D).name,value:D})),[N.EntityOwner]:(_=i==null?void 0:i.map(D=>({label:D.name,value:D.ref})))!=null?_:[],[N.Track]:d.map(D=>({label:D.name,value:D.id})),[N.Level]:hc(d),[N.Check]:gc(g,d),[N.CheckOwner]:vc(g,s)}},[f,v,w,r,i,s,d,g,S]);return A(()=>{a(y||b||x||l||o||m||p||V)},[y,b,x,l,o,m,p,V]),{facetOptions:$,isLoading:e}},ze=30,Ie=2,qe=90,Ue=()=>Object.fromEntries(Object.values(N).map(e=>[e,[]])),fc=(e,a,n)=>{if(a.length)return a.map(r=>({trackId:r,levels:n.length?n.map(l=>parseInt(l,10)):void 0}));if(n.length)return e.map(r=>({trackId:r.value,levels:n.map(l=>parseInt(l,10))}))},yc=(e,a,n,r)=>{const l=i=>a[i].length?{included:a[i]}:void 0;return{checkIds:l(N.Check),checkOwners:l(N.CheckOwner),entityOwners:l(N.EntityOwner),entityRefs:l(N.Entity),tracks:fc(e[N.Track],a[N.Track],a[N.Level]),numberOfDays:n!=null?n:ze,context:r?{loggedInUser:r}:void 0,entityTypes:l(N.Type),entityKinds:l(N.Kind),entityLifecycles:l(N.Lifecycle),systems:l(N.System)}},bc=R(e=>({container:{display:"flex",margin:"-24px",backgroundColor:e.palette.background.paper,borderTop:`1px solid ${e.palette.border}`,flex:1},fixedColumn:{width:"300px",flex:"none",borderRight:`1px solid ${e.palette.border}`},flexibleColumn:{display:"flex",flexDirection:"column",flex:1,backgroundColor:e.palette.background.default,height:"100%",maxWidth:"100%"},tabsPlaceholder:{height:"36.5px",backgroundColor:e.palette.background.paper}})),Cc=()=>{const e=bc();return t.createElement("div",{className:e.container},t.createElement("div",{className:e.fixedColumn}),t.createElement("div",{className:e.flexibleColumn},t.createElement("div",{className:e.tabsPlaceholder}),t.createElement(ge,null)))},Fr=gt({facetOptionsLoading:!1,getFacetOptions:()=>[],getFacetOptionLabel:()=>"",facetFilters:Ue(),clearAllFilters:()=>{},getSelectedFacetValues:()=>[],setSelectedFacetValues:()=>{},numberOfDays:ze,setNumberOfDays:()=>{},filter:{},loggedInUser:"Unknown"}),ye=()=>ht(Fr),kc=e=>{const{userEntityRef:a}=Ye(),{isLoading:n,facetOptions:r}=Ec(),[l,i]=ya("soundcheck.techHealth.facetFilters",Ue());l&&Object.values(N).forEach(y=>{l[y]||(l[y]=[])});const[o,s]=ya("soundcheck.techHealth.numberOfDays",ze),c=z(()=>yc(r,l!=null?l:Ue(),o,a),[l,r,o,a]),m=()=>{s(ze),i(Ue())},d=y=>r[y].map(v=>v.value),u=(y,v)=>{var b;let w=(b=r[y].find(x=>x.value===v))==null?void 0:b.label;if(!w)try{const x=q(v);w=ci(x)}catch{}return w!=null?w:v},p=y=>l?l[y]:[],g=(y,v)=>{const b={...l!=null?l:Ue()};b[y]=v,i(b)},f={facetOptionsLoading:n,getFacetOptions:d,getFacetOptionLabel:u,facetFilters:l!=null?l:Ue(),clearAllFilters:m,getSelectedFacetValues:p,setSelectedFacetValues:g,numberOfDays:o!=null?o:ze,setNumberOfDays:s,filter:c!=null?c:{},loggedInUser:"Unknown"};return n?t.createElement(Cc,null):t.createElement(Fr.Provider,{...e,value:f})},xc={hidden:{height:0,opacity:0,overflow:"hidden"},visible:{height:"auto",opacity:1,overflow:"visible"}};function wc({visible:e,...a}){return t.createElement(wi.div,{...a,animate:e?"visible":"hidden",initial:"hidden",variants:xc})}const Tc=R(({palette:e,spacing:a})=>({header:{display:"flex",alignItems:"center",flexDirection:"row",cursor:"pointer"},headerTitle:{flex:"1 1 0%"},chip:{backgroundColor:e.info.dark,textOverflow:"ellipsis",overflow:"hidden"},autoCompleteInput:{"&& input":{margin:a(1,0,0,0),width:"100%"}}})),Sc=({facet:e})=>{var a;const n=Tc(),{getFacetOptions:r,getFacetOptionLabel:l,getSelectedFacetValues:i,setSelectedFacetValues:o}=ye(),[s,c]=C(!!((a=i(e))!=null&&a.length)),[m,d]=C(!1),[u,p]=C(""),g=()=>{c(v=>!v)},f=v=>{(v.key==="Enter"||v.key===" ")&&g()},y=v=>{if(e===N.Entity&&v[v.length-1]){const b=v[v.length-1];if(!b.includes(":")||!b.includes("/")){d(!0),p("Custom entities require a valid kind and namespace such as: component:default/entity");return}}d(!1),p(""),o(e,v)};return t.createElement(T,null,t.createElement("div",{className:n.header,onClick:g,onKeyDown:f,role:"button",tabIndex:0},t.createElement(T,{className:n.headerTitle},t.createElement(E,{variant:"subtitle2"},e)),t.createElement(T,null,t.createElement(et,{size:"small",onKeyDown:f},s?t.createElement(xi,{fontSize:"small"}):t.createElement(Gn,{fontSize:"small"})))),t.createElement(wc,{visible:s},t.createElement(ua,{disableCloseOnSelect:!0,className:n.autoComplete,fullWidth:!0,multiple:!0,freeSolo:e===N.Entity,popupIcon:null,ChipProps:{color:"primary",className:n.chip,size:"small"},options:r(e),getOptionLabel:v=>l(e,v),value:i(e),onChange:(v,b)=>y(b),renderInput:v=>t.createElement(Y,{...v,className:n.autoCompleteInput,margin:"normal",placeholder:`Search for ${e}`,error:m,helperText:u}),renderOption:(v,{selected:b})=>t.createElement(Xe,{onClick:w=>w.preventDefault(),control:t.createElement(Fe,{icon:t.createElement(Pn,{fontSize:"small"}),checkedIcon:t.createElement(Rn,{fontSize:"small"}),checked:b}),label:l(e,v)})})))},Rc=R(({palette:e,spacing:a})=>({root:{padding:({size:n})=>n==="small"?a(1,2):a(2),borderBottom:`1px solid ${e.border}`}}));function ja(e){const a=Rc(e);return t.createElement(T,{...e,className:a.root})}const Pc=R(e=>({root:{display:"flex",flexDirection:"row",alignItems:"center",justifyContent:"space-between",paddingBottom:e.spacing(.25)}}));function Nc(){const e=Pc(),{numberOfDays:a,facetFilters:n,clearAllFilters:r}=ye(),l=Object.keys(N).some(i=>n[N[i]].length)||a!==ze;return t.createElement(T,{className:e.root},t.createElement(T,null,t.createElement(E,{variant:"h6"},"Filters")),l&&t.createElement(T,null,t.createElement(H,{onClick:r,size:"small"},"Clear all")))}const Lc=R(({palette:e,spacing:a})=>({select:{width:"100%",margin:a(1,0)},chip:{backgroundColor:e.info.dark}})),Wt=[7,30,90].map(e=>({value:e,label:`Last ${e} days`}));function Dc(){const e=Lc(),{numberOfDays:a,setNumberOfDays:n}=ye(),r=[...Wt];Wt.map(u=>u.value).includes(a)||r.push({value:a,label:`Last ${a} days`});const[l,i]=C(r),[o,s]=C(""),c=()=>{if(o.length){const u=parseInt(o,10);return!isNaN(u)&&(u<Ie||u>qe)}return!1},m=()=>{const u=parseInt(o,10);if(u<Ie)return`Minimum of ${Ie} days`;if(u>qe)return`Maximum of ${qe} days`},d=u=>{if(u.key==="Enter"){const p=parseInt(o,10);p>=Ie&&p<=qe?(Wt.map(g=>g.value).includes(p)||i([...Wt,{value:p,label:`Last ${p} days`}]),n(p),s("")):p<Ie?s(`${Ie}`):s(`${qe}`)}};return t.createElement(T,null,t.createElement(T,{marginBottom:2},t.createElement(T,null,l.sort((u,p)=>u.value-p.value).map(({label:u,value:p})=>t.createElement(Ct,{key:p,label:u,className:a===p?e.chip:void 0,color:a===p?"primary":void 0,size:"small",onClick:()=>n(p)})))),t.createElement(T,null,t.createElement(Y,{fullWidth:!0,placeholder:"Number of days",inputProps:{min:Ie,max:qe},onKeyDown:d,helperText:m(),value:o,type:"number",error:c(),onChange:u=>s(u.target.value)})))}const Ic=R(e=>({filters:{maxWidth:"300px",width:"100%",backgroundColor:e.palette.background.paper}})),Oc=()=>{const e=Ic(),a=Xt().pathname.includes("campaigns");let n=Object.values(N);if(a){const r=[N.Track,N.Level];n=n.filter(l=>!r.includes(l))}return t.createElement(T,{className:e.filters},t.createElement(ja,null,t.createElement(Nc,null)),t.createElement(ja,null,t.createElement(Dc,null)),n.map(r=>t.createElement(ja,{key:r,size:"small"},t.createElement(Sc,{facet:r}))))},$r=gt({checkPassRateOverview:{data:void 0,isLoading:!0,isError:!1},trackPassRateOverview:{data:void 0,isLoading:!0,isError:!1},entityPassRatesOverview:{data:void 0,isLoading:!0,isError:!1},groupPassRatesOverview:{data:void 0,isLoading:!0,isError:!1}}),Te=()=>ht($r),Ac=e=>{const{filter:a}=ye(),n=Ji(a),r=to(a),l=ao(a),i=no(a),o=z(()=>({checkPassRateOverview:n,trackPassRateOverview:r,entityPassRatesOverview:l,groupPassRatesOverview:i}),[n,r,l,i]);return n.isLoading||r.isLoading||l.isLoading||i.isLoading?t.createElement(ge,null):t.createElement($r.Provider,{...e,value:o})},Mr=e=>{const a=(e==null?void 0:e.overallTrackPassRate)||[];if(!a.length)return[];const n=Rt.utc();return a.reduce((r,{trendPassRates:l,levelOrdinal:i},o)=>{var s;const c=(s=l==null?void 0:l.map((m,d)=>({name:fa(n,l.length-d-1),[`Level${i}`]:m})))!=null?s:[];return o===0?c:r.map((m,d)=>({...m,...c[d]}))},[])},Fc=()=>{var e,a;const{trackPassRateOverview:{data:n,isError:r}}=Te();if(r)return t.createElement(E,{color:"error"},"Failed to load track data.");const l=Mr(n),i=(a=(e=n==null?void 0:n.overallTrackPassRate)==null?void 0:e.map(({levelOrdinal:o})=>({dataKey:`Level${o}`,name:`Level ${o}`})))!=null?a:[];return t.createElement(_t,{data:l,lines:i})},$c=e=>{const a=(e==null?void 0:e.overallEntityPassRates)||[];if(!a.length)return[];const n=Rt.utc();return a.reduce((r,{trendPassRates:l,id:i},o)=>{var s;const c=(s=l==null?void 0:l.map((m,d)=>({name:fa(n,l.length-d-1),[i]:m})))!=null?s:[];return o===0?c:r.map((m,d)=>({...m,...c[d]}))},[])},Mc=()=>{var e,a;const{entityPassRatesOverview:{data:n}}=Te(),r=(a=(e=n==null?void 0:n.overallEntityPassRates)==null?void 0:e.map(({id:i})=>({dataKey:i,name:q(i).name})))!=null?a:[],l=$c(n);return t.createElement(_t,{data:l,lines:r})},Gc=F(e=>({container:{position:"relative"},chartMessage:{position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",fontWeight:"bold",backgroundColor:e.palette.background.default,padding:e.spacing(1),borderRadius:"5px",textAlign:"center",width:"50%",zIndex:2}})),Bc=({layout:e,theme:a})=>{const n=e===zt.Vertical,r=[{x:"A",y:25},{x:"B",y:50},{x:"C",y:75}],l=[{x:"A",y:100},{x:"B",y:90},{x:"C",y:80},{x:"C",y:70},{x:"C",y:60}],i=Gc();return t.createElement("div",{className:i.container},t.createElement(Vt,null,t.createElement(jn,{data:n?l:r,margin:{left:0},layout:e},t.createElement(St,{strokeDasharray:"3 3",vertical:n,horizontal:!n,opacity:Bt}),t.createElement(at,{dataKey:n?void 0:"x",type:n?mt.Number:mt.Category,domain:n?De:void 0,hide:!0}),t.createElement(nt,{width:n?Dr:Ka,dataKey:n?"x":void 0,type:n?mt.Category:mt.Number,domain:n?void 0:De,hide:!0}),t.createElement(Qn,{dataKey:"y",fill:a.palette.divider,barSize:n?Gr:Br}))),t.createElement(E,{className:i.chartMessage},"No Data"))},Vc=R(e=>({legend:{color:fe(e)}}));var zt=(e=>(e.Horizontal="horizontal",e.Vertical="vertical",e))(zt||{});const Gr=20,Br=50;var mt=(e=>(e.Category="category",e.Number="number",e))(mt||{});const Vr={dataKey:"passRate",name:"Pass rate"},_r=rl(({data:e,layout:a})=>{const n=a==="vertical",r=Ze(),l=Pt(r),i=fe(r),o=Vc();return e.length?t.createElement(Vt,{"aria-label":"Bar chart representing data points."},t.createElement(jn,{data:e,layout:a},t.createElement(St,{vertical:n,horizontal:!n,opacity:Bt}),t.createElement(at,{dataKey:n?void 0:Gt,type:n?"number":"category",domain:n?De:void 0,stroke:i}),t.createElement(nt,{width:n?Dr:Ka,dataKey:n?Gt:void 0,type:n?"category":"number",domain:n?void 0:De,stroke:i}),t.createElement(Un,{contentStyle:{backgroundColor:r.palette.background.default},itemStyle:{color:fe(r)},cursor:{fill:"transparent"}}),t.createElement(Kn,{iconType:Ir,iconSize:Or,formatter:s=>t.createElement("span",{className:o.legend},s),payload:e.map(({name:s},c)=>({id:s,value:s,color:l[c%l.length]}))}),t.createElement(Qn,{barSize:n?Gr:Br,dataKey:Vr.dataKey,name:Vr.name},e.map(({name:s},c)=>t.createElement(ki,{key:s,fill:l[c%l.length]}))))):t.createElement(Bc,{layout:a,theme:r})}),_c=e=>{var a,n;return(n=(a=e==null?void 0:e.overallTrackPassRate)==null?void 0:a.map(({levelOrdinal:r,snapshotPassRate:l})=>({name:`Level ${r}`,passRate:l})))!=null?n:[]},Hc=()=>{const{trackPassRateOverview:{data:e,isError:a}}=Te();if(a)return t.createElement(E,{color:"error"},"Failed to load track data.");const n=_c(e);return t.createElement(_r,{data:n,layout:zt.Horizontal})},Wc=e=>{var a;return(a=e==null?void 0:e.map(({id:n,groupTitle:r,snapshotPassRate:l})=>({name:r!=null?r:q(n).name,passRate:l})))!=null?a:[]},zc=()=>{var e;const{groupPassRatesOverview:{data:a}}=Te(),n=(e=a==null?void 0:a.groupPassRates)==null?void 0:e.sort((l,i)=>i.snapshotPassRate-l.snapshotPassRate),r=Wc(n);return t.createElement(_r,{data:r,layout:zt.Vertical})},qc=F(e=>({card:{display:"flex",flexDirection:"column",gap:e.spacing(1),border:`1px solid ${e.palette.divider}`,boxShadow:"none",width:"99%"},title:{fontWeight:"bold",fontSize:e.typography.h5.fontSize,lineHeight:`${e.typography.h3.fontSize}px`},subtitle:{fontSize:e.typography.pxToRem(14),lineHeight:`${e.typography.h6.fontSize}px`,color:e.palette.grey[800]},headerRow:{display:"flex",padding:e.spacing(1,2),borderBottom:`1px solid ${e.palette.divider}`,gap:e.spacing(2)},headerSection:{display:"flex",flexDirection:"column",gap:e.spacing(.5)},headerExportSection:{display:"flex",alignItems:"center",marginLeft:"auto",marginRight:0},contentRow:{padding:e.spacing(2.5,2),display:"flex",gap:e.spacing(2)},leftSection:{width:"200px"},summaryCard:{height:"100%",display:"flex",flexDirection:"column",justifyContent:"space-between"},chartSection:{flex:1,width:"100%",minWidth:"200px"},chartDisplaySummary:{flex:1,display:"flex",flexDirection:"row",gap:e.spacing(1),alignItems:"center",justifyContent:"end"}})),qt=({title:e,subtitle:a,summaryCardContent:n,chartSectionContent:r,disableDataExport:l,csvData:i,csvFilename:o})=>{const s=qc();return t.createElement(ia,{className:s.card},t.createElement(T,{className:s.headerRow},t.createElement(T,{className:s.headerSection},t.createElement(E,{className:s.title},e),t.createElement(E,{variant:"caption"},a)),t.createElement(T,{className:s.headerExportSection},t.createElement(Yn,{data:i,filename:o,onClick:()=>!l},t.createElement(ae,{title:"Export to CSV"},t.createElement("span",null,t.createElement(H,{disabled:l},t.createElement(Ti,null))))))),t.createElement(T,{className:s.contentRow},n&&t.createElement(T,{className:s.leftSection},t.createElement(T,{className:s.summaryCard},n)),t.createElement(T,{className:s.chartSection},r)))};function Se(e,a){const n=e;if(a){const r=Rt.utc();for(let l=a-1;l>=0;l--)n.push(r.minus({day:l}).toISODate())}return n}function Ke(e){if(!e)return 0;const a=e.map(n=>{var r,l;return(l=(r=n.trendPassRates)==null?void 0:r.length)!=null?l:1});return Math.max(1,...a)}function Uc(e){const a=[];return a.push(Se(["check_id","check_name","check_owner_ref"],Ke(e))),e!=null&&e.length&&e.map(n=>{var r;a.push([n.id,n.checkName,n.checkOwnerRef,...(r=n.trendPassRates)!=null?r:[n.snapshotPassRate]])}),a}function Kc(e){var a,n;const r=[];if(r.push(Se(["entity_ref","entity_name","entity_owner_ref"],Ke(e))),e!=null&&e.length)for(const l of e){const i=(a=l.trendPassRates)!=null&&a.length?l.trendPassRates:[l.snapshotPassRate];r.push([l.id,q(l.id).name,(n=l.entityOwnerRef)!=null?n:"",...i])}return r}function jc(e){const a=[];return a.push(Se(["team_ref","team_name"],Ke(e))),e!=null&&e.length&&e.map(n=>{var r,l;a.push([n.id,(r=n.groupTitle)!=null?r:q(n.id).name,...(l=n.trendPassRates)!=null?l:[n.snapshotPassRate]])}),a}function Qc(e,a,n){var r,l,i,o;return n?[(l=(r=n.find(({trackId:s})=>s===e.id))==null?void 0:r.campaignId)!=null?l:"",e.trackName,e.trackOwnerRef]:[e.id,e.trackName,e.trackOwnerRef,a.levelOrdinal,(i=a.levelName)!=null?i:`Level ${a.levelOrdinal}`,...(o=a.trendPassRates)!=null?o:[a.snapshotPassRate]]}function Hr(e,a){const n=[],r=e!=null&&e.length?Math.max(...e.map(i=>Ke(i.levels))):0,l=a?["campaign_id","campaign_name","campaign_owner"]:["track_id","track_name","track_owner_ref","level_ordinal","level_name"];return n.push(Se(l,r)),e!=null&&e.length&&e.map(i=>{var o;(o=i.levels)==null||o.map(s=>{n.push(Qc(i,s,a))})}),n}function Yc(e){var a,n,r;const l=[];return l.push(Se(["name"],(n=(a=e==null?void 0:e.overallCheckPassRates)==null?void 0:a.length)!=null?n:0)),(r=e==null?void 0:e.overallCheckPassRates)!=null&&r.length&&l.push(["Check Pass Rate",...e.overallCheckPassRates]),l}function Xc(e){var a;const n=[];return n.push(Se(["level_ordinal","level_name"],Ke(e==null?void 0:e.overallTrackPassRate))),(a=e==null?void 0:e.overallTrackPassRate)!=null&&a.length&&e.overallTrackPassRate.map(r=>{var l;n.push([r.levelOrdinal,`Level ${r.levelOrdinal}`,...(l=r.trendPassRates)!=null?l:[r.snapshotPassRate]])}),n}function Zc(e){var a;const n=[];return n.push(Se(["entity_ref","entity_name"],Ke(e==null?void 0:e.overallEntityPassRates))),(a=e==null?void 0:e.overallEntityPassRates)!=null&&a.length&&e.overallEntityPassRates.map(r=>{var l;n.push([r.id,q(r.id).name,...(l=r.trendPassRates)!=null?l:[0]])}),n}function Jc(e){var a,n;const r=[];return r.push(Se(["team_ref","team_name"],1)),(a=e==null?void 0:e.groupPassRates)!=null&&a.length&&((n=e==null?void 0:e.groupPassRates)==null||n.map(l=>{var i;r.push([l.id,(i=l.groupTitle)!=null?i:q(l.id).name,l.snapshotPassRate])})),r}const em="check-pass-rates-summary.csv",tm="track-pass-rates-summary.csv",am="entity-pass-rates-summary.csv",nm="team-pass-rates-summary.csv",rm="check-pass-rates.csv",lm="track-pass-rates.csv",im="entity-pass-rates.csv",om="team-pass-rates.csv",sm="campaign-track-pass-rates.csv",cm=R(e=>({chartHeader:{marginBottom:e.spacing(2)},overallSummaryBox:{display:"flex",flexDirection:"column",height:"100%",color:fe(e),textAlign:"center",gap:e.spacing(2)},percentage:{fontSize:e.typography.pxToRem(65),lineHeight:`${e.typography.pxToRem(88)}px`,fontWeight:"bold"},summaryText:{fontSize:e.typography.pxToRem(14),lineHeight:`${e.typography.pxToRem(14)}px`}})),mm=()=>{var e,a,n;const r=Ze(),l=cm(),{checkPassRateOverview:{data:i,isLoading:o,isError:s}}=Te(),c=(a=(e=i==null?void 0:i.overallCheckPassRates)==null?void 0:e.length)!=null?a:0,m=we((n=i==null?void 0:i.overallCheckPassRates)!=null?n:[]),d=i!=null&&i.overallCheckPassRates&&c?Math.round(i.overallCheckPassRates[c-1]):0;let u;!(i!=null&&i.overallCheckPassRates)||!c?u="No Data":u=`${d}%`;const p=t.createElement(T,{className:l.overallSummaryBox},t.createElement(Si,{value:d,text:u,styles:Ri({textColor:fe(r),pathColor:Pt(r)[0],trailColor:r.palette.divider,textSize:c?void 0:8})}),t.createElement(E,{className:l.summaryText},"Current check pass rate")),g=!(i!=null&&i.overallCheckPassRates)||!c||o||s;return t.createElement(qt,{title:"Check pass rate",subtitle:"Aggregate pass rate for checks",summaryCardContent:p,chartSectionContent:t.createElement(ct,{chartData:m}),disableDataExport:g,csvFilename:em,csvData:Yc(i)})},dm=()=>{var e;const a=t.createElement(Hc,null),n=t.createElement(Fc,null),{trackPassRateOverview:{data:r,isLoading:l,isError:i}}=Te(),o=(e=r==null?void 0:r.overallTrackPassRate)==null?void 0:e.length,s=!(r!=null&&r.overallTrackPassRate)||!o||l||i;return t.createElement(qt,{title:"Track pass rate",subtitle:"Aggregate pass rate for tracks",summaryCardContent:a,chartSectionContent:n,disableDataExport:s,csvFilename:tm,csvData:Xc(r)})},um=()=>{var e;const{entityPassRatesOverview:{data:a,isLoading:n,isError:r}}=Te(),l=(e=a==null?void 0:a.overallEntityPassRates)==null?void 0:e.length,i=!(a!=null&&a.overallEntityPassRates)||!l||n||r;return t.createElement(qt,{title:"Entity pass rate",subtitle:"Compare the aggregate pass rate for entities",chartSectionContent:t.createElement(Mc,null),disableDataExport:i,csvFilename:am,csvData:Zc(a)})},pm=()=>{var e;const{groupPassRatesOverview:{data:a,isLoading:n,isError:r}}=Te(),l=(e=a==null?void 0:a.groupPassRates)==null?void 0:e.length,i=!(a!=null&&a.groupPassRates)||!l||n||r;return t.createElement(qt,{title:"Team pass rate",subtitle:"Compare the aggregate pass rate for teams",chartSectionContent:t.createElement(zc,null),disableDataExport:i,csvFilename:nm,csvData:Jc(a)})},gm=F(e=>({root:{display:"flex",flexDirection:"column",gap:e.spacing(2),flex:1,background:e.palette.background.default}})),hm=()=>{const e=gm();return t.createElement(T,{className:e.root},t.createElement(Ac,null,t.createElement(mm,null),t.createElement(dm,null),t.createElement(um,null),t.createElement(pm,null)))},vm=F(e=>({paper:{width:"100%",boxShadow:"none",border:`1px solid ${e.palette.divider}`,borderRadius:e.shape.borderRadius},tableHeaderCell:{fontWeight:"bold"}})),dt=({data:e,columns:a})=>{const n=vm(),[r,l]=C(0),[i,o]=C(10);A(()=>{l(0)},[e.length]);const s=(u,p)=>{l(p)},c=u=>{o(+u.target.value),l(0)},m=r*i,d=m+i;return t.createElement(la,{className:n.paper},t.createElement(yn,{size:"small"},t.createElement(bn,null,t.createElement(kt,null,a.map(u=>t.createElement(ke,{key:`header-${u.id}`,className:n.tableHeaderCell},u.label)))),t.createElement(Cn,null,e.slice(m,d).map(u=>t.createElement(kt,{key:u.id},a.map(p=>t.createElement(ke,{key:`cell-${p.id}`},p.renderCell?p.renderCell(u):u[p.id])))))),t.createElement(sa,{rowsPerPageOptions:[10,25,50],component:"div",count:e.length,rowsPerPage:i,page:r,onPageChange:s,onRowsPerPageChange:c}))};var Em=(e=>(e.Check="check",e.Track="track",e.Entity="entity",e.Group="group",e))(Em||{});const oe=F(e=>({root:{display:"flex",flexDirection:"column",flex:1,background:e.palette.background.default},ownerText:{fontWeight:500,color:fe(e)},flexColumn:{display:"flex",flexDirection:"column",gap:e.spacing(.5)},boldText:{fontWeight:"bold"},descriptionText:{maxWidth:400,color:fe(e),fontSize:e.typography.subtitle2.fontSize,lineHeight:e.typography.subtitle1.fontSize},detailButton:{textTransform:"none",backgroundColor:"transparent","&:hover":{backgroundColor:e.palette.action.hover}}})),Ut=({name:e="",description:a=""})=>{const n=oe();return t.createElement(T,{className:n.flexColumn},t.createElement(E,{className:n.boldText},e),t.createElement(mn,{className:n.descriptionText,content:a!=null?a:""}))},Kt=({navigateTo:e})=>{const a=oe(),n=pe();return t.createElement(H,{variant:"text",className:a.detailButton,onClick:()=>n(e)},t.createElement(E,{className:a.ownerText},"View detail"))},fm=e=>(e==null?void 0:e.kind)==="Group",ym=e=>(e==null?void 0:e.kind)==="User",Qa=({ownerEntityRef:e})=>{var a,n;const{data:r,error:l}=pl(e!=null?e:void 0);if(r){let i;return fm(r)||ym(r)?i=(n=r.metadata.title)!=null?n:(a=r.spec.profile)==null?void 0:a.displayName:i=r.metadata.name,t.createElement(Pe,{entityRef:di(r),title:i})}else if(l&&e)return t.createElement(ae,{title:"Unable to pull owner reference from Catalog API"},t.createElement(E,{style:{color:"red"},variant:"body2"},(()=>{try{return q(e).name}catch{return e}})()));return null},bm=({row:{trendPassRates:e,snapshotPassRate:a}})=>{const n=oe(),r=we(e!=null?e:[]);return t.createElement(T,{className:n.flexColumn},t.createElement(E,{className:n.boldText},Math.round(a),"%"),t.createElement(ct,{chartData:r,tableChart:!0}))};var de=(e=>(e[e.UP=0]="UP",e[e.DOWN=1]="DOWN",e[e.FLAT=2]="FLAT",e))(de||{});const Cm=R(e=>({cardSection:{marginBottom:e.spacing(2)},listItem:{padding:0},listItemText:{margin:0}})),km=({ownerEntityRef:e,passRates:a})=>{const n=Cm();return t.createElement(bt,{dense:!0,disablePadding:!0,className:n.cardSection},t.createElement(E,{variant:"overline",color:"textSecondary"},"Details"),e&&t.createElement(Ee,{disableGutters:!0,className:n.listItem},t.createElement(ae,{title:"Owner"},t.createElement(ee,null,t.createElement(Tt,{color:"action",fontSize:"small"}))),t.createElement(te,{className:n.listItemText,primary:t.createElement(Pe,{entityRef:e!=null?e:"No Owner",hideIcon:!0})})),a.map(({name:r,value:l,trend:i},o)=>t.createElement(Ee,{disableGutters:!0,className:n.listItem,key:o},t.createElement(ae,{title:"The most recent pass rate."},t.createElement(ee,null,i===de.UP&&t.createElement(Pi,{color:"primary",fontSize:"small"}),i===de.DOWN&&t.createElement(Ni,{color:"error",fontSize:"small"}),i===de.FLAT&&t.createElement(Li,{color:"action",fontSize:"small"}))),t.createElement(te,{className:n.listItemText,primary:t.createElement(E,{variant:"body2",color:"textSecondary"},r!=null?r:"Latest Pass Rate",": ",t.createElement("b",null,Math.round(l),"%"))}))))},xm=F(e=>({root:{display:"flex",flexDirection:"column",width:"100%"},gridContainer:{flexGrow:1},cardContent:{display:"flex",flexDirection:"column",gap:e.spacing(1),height:"100%"},footer:{display:"flex",flexDirection:"column",gap:e.spacing(1),justifyContent:"end",marginTop:"auto"}})),ut=({data:e})=>{const a=xm(),n=pe(),[r,l]=C(0),[i,o]=C(10);A(()=>{l(0)},[e.length]);const s=(p,g)=>{l(g)},c=p=>{try{const g=Number.parseInt(p.target.value,10);o(g),l(0)}catch{}},m=r*i,d=m+i,u=[{dataKey:"passRate",name:"Pass rate"}];return t.createElement(T,{className:a.root},t.createElement(h,{container:!0,spacing:2,className:a.gridContainer},e.slice(m,d).map((p,g)=>{var f,y;return t.createElement(h,{item:!0,key:g,xs:12,sm:12,md:6,lg:4,xl:3},t.createElement(ot,{title:(f=p.name)!=null?f:p.id,description:p.description,children:t.createElement(T,{className:a.cardContent},t.createElement(T,{className:a.footer},t.createElement(km,{ownerEntityRef:p.owner,passRates:p.lineChart.snapshotPassRates}),t.createElement(_t,{data:p.lineChart.trendPassRates,lines:(y=p.lineChart.lineConfigs)!=null?y:u}))),handleView:()=>n(p.navigateTo)}))})),t.createElement(sa,{rowsPerPageOptions:[10,25,50],component:"div",count:e.length,rowsPerPage:i,page:r,onPageChange:s,onRowsPerPageChange:c,labelRowsPerPage:"Items per page:"}))};var U=(e=>(e[e.TABLE=0]="TABLE",e[e.GRID=1]="GRID",e))(U||{});function jt(e){if(!e||!e.length)return de.FLAT;if(e.length===1)return e[0]>0?de.UP:de.FLAT;const a=e[e.length-1]-e[0];return a<0?de.DOWN:a>0?de.UP:de.FLAT}function wm(e,a){return e.map(n=>{var r,l,i,o,s;return{id:n.id,name:(r=n.checkName)!=null?r:n.id,description:(l=n.checkDescription)!=null?l:void 0,lineChart:{snapshotPassRates:[{value:n.snapshotPassRate,trend:jt((i=n.trendPassRates)!=null?i:[])}],trendPassRates:we((o=n.trendPassRates)!=null?o:[])},owner:(s=n.checkOwnerRef)!=null?s:void 0,navigateTo:a({checkId:n.id})}})}function Tm(e,a){return e.map(n=>{var r,l,i,o;return{id:n.id,name:q(n.id).name,description:(r=n.entityDescription)!=null?r:void 0,lineChart:{snapshotPassRates:[{value:n.snapshotPassRate,trend:jt((l=n.trendPassRates)!=null?l:[])}],trendPassRates:we((i=n.trendPassRates)!=null?i:[])},owner:(o=n.entityOwnerRef)!=null?o:void 0,navigateTo:`${a(q(n.id))}/soundcheck`}})}function Sm(e,a){return e.map(n=>{var r,l,i;return{id:n.id,name:(r=n.groupTitle)!=null?r:q(n.id).name,lineChart:{snapshotPassRates:[{value:n.snapshotPassRate,trend:jt((l=n.trendPassRates)!=null?l:[])}],trendPassRates:we((i=n.trendPassRates)!=null?i:[])},navigateTo:a(q(n.id))}})}const Wr=(e,a,n)=>{let r="";return a?r=a({trackId:e}):n&&(r=n({campaignId:e})),r};function zr(e,a,n){return e.map(r=>{var l,i,o,s,c,m,d;return{id:r.id,name:(l=r.trackName)!=null?l:r.id,description:(i=r.trackDescription)!=null?i:void 0,lineChart:{snapshotPassRates:(s=(o=r.levels)==null?void 0:o.map(({levelOrdinal:u,levelName:p,snapshotPassRate:g,trendPassRates:f})=>({name:p?`Level ${u} (${p})`:`Level ${u}`,value:g,trend:jt(f!=null?f:[])})))!=null?s:[],trendPassRates:Mr({overallTrackPassRate:r.levels}),lineConfigs:(m=(c=r.levels)==null?void 0:c.map(({levelOrdinal:u,levelName:p})=>({dataKey:`Level${u}`,name:p!=null?p:`Level ${u}`})))!=null?m:[]},owner:(d=r.trackOwnerRef)!=null?d:void 0,navigateTo:Wr(r.id,a,n)}})}const Rm=F(e=>({header:{padding:e.spacing(0,0,1),display:"flex"},headerButtons:{display:"flex",gap:e.spacing(1),flexWrap:"nowrap",justifyContent:"end",alignItems:"end"},exportButton:{height:"40px",width:"112px"},listItemIcon:{minWidth:"30px"},menuItem:{width:"112px"}})),pt=({viewMode:e,setViewMode:a,isLoading:n,searchTerm:r,setSearchTerm:l,searchPlaceholder:i,csvData:o,csvFilename:s})=>{const c=Rm(),m=(y,v)=>{v!==null&&a(v)},[d,u]=t.useState(null),p=!!d,g=y=>{u(y.currentTarget)},f=()=>{u(null)};return t.createElement(h,{container:!0,spacing:2,className:c.header},t.createElement(h,{item:!0,xs:6},t.createElement(Va,{searchTerm:r,setSearchTerm:l,disabled:n,placeholder:i||"Search",variant:"outlined",size:"small"})),t.createElement(h,{item:!0,xs:6,className:c.headerButtons},t.createElement(H,{id:"export-button",className:c.exportButton,disabled:n,variant:"contained",color:"primary","aria-controls":p?"export-menu":void 0,"aria-haspopup":"true","aria-expanded":p?"true":void 0,onClick:g,endIcon:t.createElement(Ai,null)},"Export"),t.createElement(ra,{id:"export-menu",anchorEl:d,getContentAnchorEl:null,open:p,onClose:f,MenuListProps:{"aria-labelledby":"export-button",disablePadding:!0},anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"}},t.createElement(Yn,{data:o,filename:s},t.createElement(ve,{onClick:f,className:c.menuItem},t.createElement(ee,{className:c.listItemIcon},t.createElement(Oi,null)),t.createElement(te,null,"CSV")))),t.createElement(Zl,{size:"small",value:e,exclusive:!0,onChange:m},t.createElement(Nn,{value:U.TABLE,title:"Table view"},t.createElement(Di,{color:"primary"})),t.createElement(Nn,{value:U.GRID,title:"Grid view"},t.createElement(Ii,{color:"primary"})))))},Pm=(e,a,n)=>{const r=Math.min(5,a-e+1);return Array.from({length:r}).map((l,i)=>{const o=e+i;return{label:n?"PROGRESS":`LEVEL ${o}`,id:`levels-${i}`,renderCell:s=>{var c;const m=(c=s.levels)==null?void 0:c.find(({levelOrdinal:d})=>d===o);return m?t.createElement(bm,{row:m}):t.createElement(t.Fragment,null)}}})},qr=(e,a,n,r)=>{const l=e.flatMap(s=>{var c;return((c=s.levels)==null?void 0:c.map(m=>m.levelOrdinal))||[]}),i=Math.min(...l),o=Math.max(...l);return[{label:"NAME",id:"trackName",renderCell:s=>{var c;return t.createElement(Ut,{name:(c=s.trackName)!=null?c:s.id,description:s.trackDescription})}},...Pm(i,o,!!n),{label:"OWNER",id:"trackOwnerRef",renderCell:s=>{var c;return t.createElement(Qa,{ownerEntityRef:(c=s.trackOwnerRef)!=null?c:void 0})}},{label:"ACTION",id:"action",renderCell:({id:s})=>{var c;let m=s;return n&&r&&(m=(c=r.find(({trackId:d})=>d===s))==null?void 0:c.campaignId),m?t.createElement(Kt,{navigateTo:Wr(m,a,n)}):t.createElement(t.Fragment,null)}}]},Nm=()=>{const e=oe(),{filter:a}=ye(),n=J(Dn),{data:r,isLoading:l,isError:i}=nr(a),[o,s]=C(U.TABLE),[c,m]=C(""),d=z(()=>{var f;return qr((f=r==null?void 0:r.individualTrackPassRate)!=null?f:[],n)},[r==null?void 0:r.individualTrackPassRate,n]);if(l)return t.createElement(ge,null);if(i)return t.createElement(E,{color:"error"},"Failed to load tracks");const{individualTrackPassRate:u}=r;if(!u)return t.createElement(E,{color:"error"},"No available tracks");const p=c.length?u.filter(({id:f,trackName:y})=>{var v;return((v=y==null?void 0:y.toLowerCase())==null?void 0:v.includes(c.toLowerCase()))||f.toLowerCase().includes(c.toLowerCase())}):u,g=Hr(p);return t.createElement(T,{className:e.root},t.createElement(h,{container:!0,direction:"row"},t.createElement(pt,{viewMode:o,setViewMode:s,isLoading:l,searchTerm:c,setSearchTerm:m,searchPlaceholder:"Search available tracks",csvData:g,csvFilename:lm}),o===U.TABLE&&t.createElement(dt,{data:p,columns:d}),o===U.GRID&&t.createElement(ut,{data:zr(p,n)})))},Lm=({row:{trendPassRates:e,snapshotPassRate:a}})=>{const n=oe(),r=we(e!=null?e:[]);return t.createElement(T,{className:n.flexColumn},t.createElement(E,{className:n.boldText},Math.round(a),"%"),t.createElement(ct,{chartData:r,tableChart:!0}))};function Dm(e){return[{label:"NAME",id:"entityName",renderCell:({id:a,entityDescription:n})=>t.createElement(Ut,{name:q(a).name,description:n})},{label:"TREND",id:"trend",renderCell:a=>t.createElement(Lm,{row:a})},{label:"OWNER",id:"entityOwnerRef",renderCell:({entityOwnerRef:a})=>t.createElement(Qa,{ownerEntityRef:a!=null?a:void 0})},{label:"ACTION",id:"action",renderCell:({id:a})=>t.createElement(Kt,{navigateTo:`${e(q(a))}/soundcheck`})}]}const Im=()=>{const e=oe(),{filter:a}=ye(),n=J($n),{data:r,isLoading:l,isError:i}=dn(a),[o,s]=C(U.TABLE),[c,m]=C("");if(l)return t.createElement(ge,null);if(i)return t.createElement(E,{color:"error"},"Failed to load entities");const{individualEntityPassRates:d}=r;if(!d)return t.createElement(E,{color:"error"},"No available entities");const u=c.length?d.filter(({id:g})=>{var f;return(f=g.toLowerCase())==null?void 0:f.includes(c.toLowerCase())}):d,p=Kc(u);return t.createElement(T,{className:e.root},t.createElement(h,{container:!0,direction:"row"},t.createElement(pt,{viewMode:o,setViewMode:s,isLoading:l,searchTerm:c,setSearchTerm:m,searchPlaceholder:"Search available entities",csvData:p,csvFilename:im}),o===U.TABLE&&t.createElement(dt,{data:u,columns:Dm(n)}),o===U.GRID&&t.createElement(ut,{data:Tm(u,n)})))},Om=({row:{trendPassRates:e,snapshotPassRate:a}})=>{const n=oe(),r=we(e!=null?e:[]);return r.length?t.createElement(T,{className:n.flexColumn},t.createElement(E,{className:n.boldText},Math.round(a),"%"),t.createElement(ct,{chartData:r,tableChart:!0})):t.createElement(T,{className:n.flexColumn},t.createElement(E,null,"No data"))};function Am(e){return[{label:"NAME",id:"groupName",renderCell:({groupTitle:a,id:n})=>t.createElement(Ut,{name:a!=null?a:q(n).name})},{label:"TREND",id:"trend",renderCell:a=>t.createElement(Om,{row:a})},{label:"ACTION",id:"action",renderCell:({id:a})=>t.createElement(Kt,{navigateTo:e(q(a))})}]}const Fm=()=>{const e=oe(),{filter:a}=ye();a.context=void 0;const n=J($n),{data:r,isLoading:l,isError:i}=ro(a),[o,s]=C(U.TABLE),[c,m]=C("");if(l)return t.createElement(ge,null);if(i)return t.createElement(E,{color:"error"},"Failed to load groups");const{groupPassRates:d}=r;if(!d)return t.createElement(E,{color:"error"},"No available groups");const u=c.length?d.filter(({id:g,groupTitle:f})=>{var y;return((y=f==null?void 0:f.toLowerCase())==null?void 0:y.includes(c.toLowerCase()))||g.toLowerCase().includes(c.toLowerCase())}):d,p=jc(u);return t.createElement(T,{className:e.root},t.createElement(h,{container:!0,direction:"row"},t.createElement(pt,{viewMode:o,setViewMode:s,isLoading:l,searchTerm:c,setSearchTerm:m,searchPlaceholder:"Search available teams",csvFilename:om,csvData:p}),o===U.TABLE&&t.createElement(dt,{data:u,columns:Am(n)}),o===U.GRID&&t.createElement(ut,{data:Sm(u,n)})))},$m=({row:e})=>{var a;const n=oe(),r=we((a=e.trendPassRates)!=null?a:[]);return t.createElement(T,{className:n.flexColumn},t.createElement(E,{className:n.boldText},Math.round(e.snapshotPassRate),"%"),t.createElement(ct,{chartData:r,tableChart:!0}))};function Mm(e){return[{label:"NAME",id:"checkName",renderCell:a=>{var n;return t.createElement(Ut,{name:(n=a.checkName)!=null?n:a.id,description:a.checkDescription})}},{label:"TREND",id:"snapshotPassRate",renderCell:a=>t.createElement($m,{row:a})},{label:"OWNER",id:"checkOwner",renderCell:a=>{var n;return t.createElement(Qa,{ownerEntityRef:(n=a.checkOwnerRef)!=null?n:void 0})}},{label:"ACTION",id:"action",renderCell:a=>t.createElement(Kt,{navigateTo:e({checkId:a.id})})}]}const Gm=()=>{const e=oe(),{filter:a}=ye(),n=J(Ln),{data:r,isLoading:l,isError:i}=eo(a),[o,s]=C(U.TABLE),[c,m]=C("");if(l)return t.createElement(ge,null);if(i)return t.createElement(E,{color:"error"},"Failed to load checks");const{individualCheckPassRates:d}=r;if(!d)return t.createElement(E,{color:"error"},"No available checks");const u=c.length?d.filter(({id:g,checkName:f})=>{var y;return((y=f==null?void 0:f.toLowerCase())==null?void 0:y.includes(c.toLowerCase()))||g.toLowerCase().includes(c.toLowerCase())}):d,p=Uc(u);return t.createElement(T,{className:e.root},t.createElement(h,{container:!0,direction:"row"},t.createElement(pt,{viewMode:o,setViewMode:s,isLoading:l,searchTerm:c,setSearchTerm:m,searchPlaceholder:"Search available checks",csvData:p,csvFilename:rm}),o===U.TABLE&&t.createElement(dt,{data:u,columns:Mm(n)}),o===U.GRID&&t.createElement(ut,{data:wm(u,n)})))},Bm=()=>{const e=oe(),{filter:a}=ye(),n=J(In),{data:r}=un({orderAlphabetical:"default",searchByStatus:"active"}),l=r==null?void 0:r.edges.map(w=>w.campaign),i=l==null?void 0:l.map(({id:w,track:x})=>({campaignId:w,trackId:x.id})),o=i==null?void 0:i.map(({trackId:w})=>({trackId:w})),{data:s,isLoading:c,isError:m}=nr({...a,tracks:o,trackTypes:{included:["campaign"]}}),[d,u]=C(U.TABLE),[p,g]=C(""),f=z(()=>{var w;return qr((w=s==null?void 0:s.individualTrackPassRate)!=null?w:[],void 0,n,i)},[s==null?void 0:s.individualTrackPassRate,n,i]);if(c)return t.createElement(ge,null);if(m)return t.createElement(E,{color:"error"},"Failed to load campaign tracks");const{individualTrackPassRate:y}=s;if(!y)return t.createElement(E,{color:"error"},"No available campaign tracks");const v=p.length?y.filter(({id:w,trackName:x})=>{var S;return((S=x==null?void 0:x.toLowerCase())==null?void 0:S.includes(p.toLowerCase()))||w.toLowerCase().includes(p.toLowerCase())}):y,b=Hr(v,i);return t.createElement(T,{className:e.root},t.createElement(h,{container:!0,direction:"row"},t.createElement(pt,{viewMode:d,setViewMode:u,isLoading:c,searchTerm:p,setSearchTerm:g,searchPlaceholder:"Search available campaign tracks",csvData:b,csvFilename:sm}),d===U.TABLE&&t.createElement(dt,{data:v,columns:f}),d===U.GRID&&t.createElement(ut,{data:zr(v,void 0,n)})))},Vm=R(e=>({container:{display:"flex",margin:"-24px",backgroundColor:e.palette.background.paper,borderTop:`1px solid ${e.palette.border}`,flex:1},fixedColumn:{width:"300px",flex:"none",borderRight:`1px solid ${e.palette.border}`},flexibleColumn:{display:"flex",flexDirection:"column",flex:1,backgroundColor:e.palette.background.paper,height:"100%",maxWidth:"100%"},pageLayout:{display:"flex",flexDirection:"column",flex:"1 1 0%",backgroundColor:e.palette.background.default,"& > article":{display:"flex",flexDirection:"column",flex:"1 1 auto",borderTop:`1px solid ${e.palette.border}`}}})),_m=()=>{const e=Vm();return t.createElement(kc,null,t.createElement("div",{className:e.container},t.createElement("div",{className:e.fixedColumn},t.createElement(Oc,null)),t.createElement("div",{className:e.flexibleColumn},t.createElement(T,{className:e.pageLayout},t.createElement(cn,null,t.createElement(Re,{path:"/*",element:t.createElement(X,null,t.createElement(X.Route,{title:"Summary",path:"/"},t.createElement(hm,null)),t.createElement(X.Route,{title:"Campaigns",path:"/campaigns"},t.createElement(Bm,null)),t.createElement(X.Route,{title:"Checks",path:"/checks"},t.createElement(Gm,null)),t.createElement(X.Route,{title:"Tracks",path:"/tracks"},t.createElement(Nm,null)),t.createElement(X.Route,{title:"Entities",path:"/entities"},t.createElement(Im,null)),t.createElement(X.Route,{title:"Teams",path:"/teams"},t.createElement(Fm,null)))}))))))},Hm="Error Updating Track";function Wm(){const e=O(M),a=ne(),{showAlert:n}=le(),r=async l=>{const i=await e.updateProgram(l);if(!i)throw new Error("Failed to update track.");return i};return re([ie.UpdateProgram],r,{onSuccess:async()=>{await a.invalidateQueries({queryKey:[L.GetAllPrograms]})},onError:l=>{let i="Failed to update track.";l instanceof Error&&(i=l.message),n({severity:"error",title:Hm,message:i})}})}const zm=({track:e,canEdit:a})=>{const{setSelectedItem:n,setIsLoading:r,selectedItem:l,showReadOnlyModal:i}=Be(),{mutateAsync:o,isLoading:s}=Wm();A(()=>r(s),[r,s]);const c=!a||!e.isEditable;A(()=>{c?i(e):n(e)},[e,n,c,i]);const[m,d]=Ge(ti),u=j(async p=>{await o(p,{onSuccess:d})},[d,o]);return A(()=>{},[e,i,c]),l?t.createElement(Lr,{handleClose:m,title:`${c?"View":"Edit"} Track`,open:!0,onSave:u}):null},qm=R({warningPanel:{padding:"24px 24px 0 24px"}}),Ya=({entityName:e,entityId:a,showNotFound:n=!1,showCannotView:r=!1,showCannotEdit:l=!1})=>{const{warningPanel:i}=qm();return t.createElement(t.Fragment,null,n&&t.createElement("div",{className:i},t.createElement(Jt,{title:`${Ml(e)} not found`,message:`There is no ${e} with the requested id: ${a}.`})),r&&t.createElement("div",{className:i},t.createElement(Jt,{title:`Cannot view ${e}`,message:`User does not have permission to view ${e} id: ${a}.`})),l&&t.createElement("div",{className:i},t.createElement(Jt,{title:`Cannot edit ${e}`,message:`Cannot edit ${e} id: ${a}.`})))},Um=()=>{var e,a;const{trackId:n}=Qe(),{data:r,isLoading:l}=ba([n!=null?n:""],1),i=(a=(e=r==null?void 0:r.edges)==null?void 0:e[0])==null?void 0:a.program,{loading:o,allowed:s}=Q({permission:wn,resourceRef:n}),{loading:c,allowed:m}=Q({permission:Ul,resourceRef:n});return t.createElement(t.Fragment,null,t.createElement(Ya,{entityName:"track",entityId:n,showNotFound:!l&&!i,showCannotView:!o&&!c&&!m}),l||o||c?t.createElement(vt,null):m&&i&&t.createElement(lr,null,t.createElement(zm,{track:i,canEdit:s})))},Km=({check:e})=>{const{selectedItem:a,showReadOnlyModal:n}=se();A(()=>{n(e)},[e,n]);const[r]=Ge(On);return a&&t.createElement(Ba,{title:"Check Details",open:!0,onClose:r,onSave:()=>{}})},jm="Error Creating Check";function Qm(){const e=O(M),a=ne(),{showAlert:n}=le(),r=async l=>{const i=await e.updateCheck(l);if(!i)throw new Error("Failed to update check.");return i};return re([ie.UpdateCheck],r,{onSuccess:()=>{a.invalidateQueries({queryKey:[L.GetChecks]})},onError:l=>{let i="Failed to update check.";l instanceof Error&&(i=l.message),n({severity:"error",title:jm,message:i})}})}const Ym=({check:e})=>{const{selectedItem:a,setSelectedItem:n}=se(),{setIsLoading:r}=se(),{mutateAsync:l,isLoading:i}=Qm();A(()=>{r(i)},[r,i]),A(()=>{n(e)},[e,n]);const[o,s]=Ge(On);return a&&t.createElement(Ba,{title:"Edit a Check",open:!0,onClose:o,onSave:async c=>{await l(c,{onSuccess:s})}})},Xm=()=>{var e,a;const{checkId:n}=Qe(),{data:r,isLoading:l}=Nt([n!=null?n:""],1),i=(a=(e=r==null?void 0:r.edges)==null?void 0:e[0])==null?void 0:a.checker,{loading:o,allowed:s}=Q({permission:xn,resourceRef:n}),{loading:c,allowed:m}=Q({permission:Kl,resourceRef:n}),d=o||c||l,u=s&&(i==null?void 0:i.isEditable);return t.createElement(t.Fragment,null,t.createElement(Ya,{entityName:"check",entityId:n,showCannotView:!d&&!m,showNotFound:!d&&!i}),d&&t.createElement(vt,null),t.createElement(or,null,!d&&!!i&&t.createElement(t.Fragment,null,u&&m&&t.createElement(Ym,{check:i}),!u&&m&&t.createElement(Km,{check:i}))))};function Ur(e){const a=O(M),n={ids:[e]};return Z([L.GetCampaigns,JSON.stringify(n)],async()=>a.getCampaigns(n),{staleTime:5*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})}const Zm=F(e=>({detailRow:{marginBottom:e.spacing(1)},label:{fontWeight:"bold",color:e.palette.text.primary},value:{marginLeft:e.spacing(1)}})),be=({label:e,value:a})=>{const n=Zm();return t.createElement(h,{item:!0,xs:12,container:!0,className:n.detailRow,alignItems:"center"},t.createElement(E,{variant:"subtitle1",className:n.label},e,":"),t.createElement(E,{variant:"body1",display:"inline",className:n.value},a))},Jm=F(e=>({innerContainer:{padding:e.spacing(0,1)},sectionLabel:{fontWeight:700,margin:e.spacing(2,0),color:e.palette.primary.main}})),Kr=e=>new Date(e).toLocaleDateString("en-US",{month:"long",day:"numeric",year:"numeric",hour:"numeric",minute:"numeric",second:"numeric",hour12:!0}),ed=({campaign:e})=>{const a=Jm(),{name:n,description:r,ownerEntityRef:l,startDate:i,targetCompletionDate:o,supportChannel:s}=e;return t.createElement(t.Fragment,null,t.createElement(E,{variant:"h6",className:a.sectionLabel},"Campaign details"),t.createElement(h,{container:!0,className:a.innerContainer,spacing:2},t.createElement(h,{item:!0,container:!0,xs:12,spacing:0},t.createElement(be,{label:"Name",value:n}),t.createElement(be,{label:"Description",value:r}),t.createElement(be,{label:"Owner",value:t.createElement(Pe,{entityRef:l})}),s&&t.createElement(be,{label:"Support channel",value:s}),t.createElement(be,{label:"Start date",value:Kr(i)}),t.createElement(be,{label:"Target completion date",value:Kr(o)}))))},td=F(e=>({sectionLabel:{fontWeight:700,margin:e.spacing(2,0),color:e.palette.primary.main},chipContainer:{display:"flex",flexDirection:"column",fontWeight:"bold",fontSize:e.typography.pxToRem(16),color:e.palette.grey[600]}})),ad=({campaign:e})=>{var a,n,r;const l=td(),i=(r=(n=(a=e.track)==null?void 0:a.levels)==null?void 0:n[0].checks.map(({id:o,name:s,description:c})=>({id:o,label:s,description:c})))!=null?r:[];return t.createElement(t.Fragment,null,t.createElement(E,{variant:"h6",className:l.sectionLabel},"Campaign checks"),t.createElement("div",{className:l.chipContainer},i.length?i.map(o=>t.createElement(Tr,{key:o.id,chip:o,disabled:!0})):t.createElement(E,{variant:"body1",color:"textSecondary",style:{alignSelf:"center"}},"There are no checks for this campaign.")))},jr=F(e=>({sectionLabel:{fontWeight:700,margin:e.spacing(2,0),color:e.palette.primary.main},table:{minWidth:650},progressCell:{"& > span":{display:"flex",height:e.spacing(2)}},progressHeader:{textAlign:"center"},progressLabel:{marginLeft:e.spacing(2)}})),Qt=()=>{const e=jr();return t.createElement(E,{variant:"h6",className:e.sectionLabel},"Campaign progress")},nd=({campaign:e})=>{var a;const n=jr(),{data:r,isLoading:l,isError:i}=dn({tracks:[{trackId:e.track.id}]});if(l)return t.createElement(t.Fragment,null,t.createElement(Qt,null),t.createElement("div",{"data-testid":"progress-indicator"},t.createElement(ol,null)));if(i)return t.createElement(t.Fragment,null,t.createElement(Qt,null),t.createElement(E,{color:"error"},"Failed to load campaign progress."));const o=(a=r==null?void 0:r.individualEntityPassRates)!=null?a:[];return o.length?t.createElement(t.Fragment,null,t.createElement(Qt,null),t.createElement(Il,{component:la},t.createElement(yn,{className:n.table,"aria-label":"campaign progress table"},t.createElement(bn,null,t.createElement(kt,null,t.createElement(ke,null,"Entity Name"),t.createElement(ke,{align:"center",className:n.progressHeader},"Progress"),t.createElement(ke,{align:"right"},"Percentage"))),t.createElement(Cn,null,o.map(({id:s,entityOwnerRef:c,snapshotPassRate:m})=>t.createElement(kt,{key:s},t.createElement(ke,{component:"th",scope:"row"},c&&t.createElement(Pe,{entityRef:c})),t.createElement(ke,{className:n.progressCell},t.createElement(sl,{value:m/100,getColor:({value:d,palette:u})=>d<0?"":u.primary.main})),t.createElement(ke,{align:"right"},m,"%"))))))):t.createElement(t.Fragment,null,t.createElement(Qt,null),t.createElement(E,null,"No campaign progress available."))},rd=F(e=>({milestones:{flexGrow:1,padding:e.spacing(0,1)},sectionLabel:{fontWeight:700,margin:e.spacing(2,0),color:e.palette.primary.main},divider:{margin:`${e.spacing(2)}px 0`}})),ld=({campaign:e})=>{const a=rd(),n=e.milestones;return t.createElement(t.Fragment,null,t.createElement(E,{variant:"h6",className:a.sectionLabel},"Campaign milestones"),t.createElement(h,{container:!0,className:a.milestones,spacing:2},n.length?n.map((r,l)=>t.createElement(h,{item:!0,container:!0,xs:12,key:l,spacing:2},t.createElement(h,{item:!0,xs:12},t.createElement(be,{label:"Name",value:r.name}),t.createElement(be,{label:"Description",value:r.description}),t.createElement(be,{label:"Goal pass rate",value:`${r.targetPercent}%`}),l<n.length-1&&t.createElement(Ae,{className:a.divider})))):t.createElement(E,{variant:"body1",color:"textSecondary"},"There are no milestones for this campaign.")))},id={0:"detailsStep",1:"tracksStep",2:"filtersStep",3:"milestonesStep"};var Yt=(e=>(e.title="Create a campaign",e.description="A soundcheck campaign allows you to define a tech health goal, assign it to a team and monitor progress.",e.callToAction="Get started",e))(Yt||{}),Xa=(e=>(e.title="No campaigns found",e.description="No campaigns matched your search. Consider changing search term and filters.",e))(Xa||{});const Za=()=>{const{setShowAddModal:e}=rt(),{loading:a,allowed:n}=Q({permission:Tn});return t.createElement(Me,{title:Yt.title,description:Yt.description,imgSrc:pa,action:!a&&t.createElement(H,{disabled:!n,variant:"contained",color:"primary",onClick:()=>e(!0)},Yt.callToAction)})},od=F(e=>({root:{flexGrow:1,padding:e.spacing(2)}})),sd=()=>{var e,a;const n=od(),{campaignId:r}=Qe(),{data:l,isLoading:i}=Ur(r!=null?r:""),o=(a=(e=l==null?void 0:l.edges)==null?void 0:e[0])==null?void 0:a.campaign,[s]=Ge(An);return i?t.createElement("div",{"data-testid":"loading-indicator"},t.createElement(ge,null)):o?t.createElement(_e,{title:"Campaign Details",open:!0,handleClose:s},t.createElement(ga,{backend:ha},t.createElement(h,{container:!0,className:n.root,spacing:3,direction:"column"},t.createElement(h,{item:!0,xs:12},t.createElement(ed,{campaign:o})),t.createElement(h,{item:!0,xs:6},t.createElement(ad,{campaign:o})),t.createElement(h,{item:!0,xs:6},t.createElement(nd,{campaign:o})),t.createElement(h,{item:!0,xs:12},t.createElement(ld,{campaign:o}))))):t.createElement(Za,null)},cd=R(e=>({root:{position:"relative",height:"100%"},cardSection:{marginBottom:e.spacing(2)},listItem:{padding:0},listItemText:{margin:0},campaignDetails:{display:"flex",flexDirection:"column",gap:e.spacing(1)},archivedBadge:{"& span":{position:"relative",transform:"none",transformOrigin:"unset"}}})),md=({campaign:e})=>{const a=cd();return t.createElement(bt,{dense:!0,disablePadding:!0,className:a.cardSection},t.createElement(E,{variant:"overline",color:"textSecondary"},"Campaign Details"),t.createElement("div",{className:a.campaignDetails},e.ownerEntityRef&&t.createElement(Ee,{disableGutters:!0,className:a.listItem},t.createElement(ae,{title:"Owner"},t.createElement(ee,null,t.createElement(Tt,{color:"action",fontSize:"small"}))),t.createElement(te,{className:a.listItemText,primary:t.createElement(Pe,{entityRef:e.ownerEntityRef,hideIcon:!0})})),e.archived&&t.createElement(Ee,{disableGutters:!0,className:a.listItem},t.createElement(Ol,{badgeContent:"Archived",color:"primary",className:a.archivedBadge}))))},dd=R(e=>({modalContent:{position:"absolute",display:"flex",flexDirection:"column",gap:e.spacing(1),top:"50%",left:"50%",transform:"translate(-50%, -50%)",padding:"25px",backgroundColor:e.palette.type==="dark"?e.palette.grey[800]:e.palette.grey[200]},modalButtons:{display:"flex",justifyContent:"space-evenly","& button":{width:"40%",maxWidth:"185px"}},checkbox:{marginBottom:e.spacing(1)}})),Qr=gt({showArchiveModal:()=>Promise.resolve({confirmed:!1,saveTrack:!1})}),ud=e=>{const a=dd(),[n,r]=C(!1),[l,i]=C(null),[o,s]=C(!1),c=sn(),m=j(({title:g,message:f,error:y})=>(i({title:g,message:f,error:y}),s(!1),r(!0),new Promise(v=>{c.current=v})),[]),d=j(()=>{var g;(g=c.current)==null||g.call(c,{confirmed:!0,saveTrack:o}),r(!1)},[o]),u=j(()=>{var g;(g=c.current)==null||g.call(c,{confirmed:!1,saveTrack:o}),r(!1)},[o]),p=g=>{s(g.target.checked)};return t.createElement(Qr.Provider,{value:{showArchiveModal:m}},e.children,l&&t.createElement(Al,{open:n,onClose:u,"aria-labelledby":"confirmation-modal-title","aria-describedby":"confirmation-modal-description"},t.createElement(T,{className:a.modalContent},t.createElement("div",null,t.createElement(E,{id:"confirmation-modal-title",variant:"h6"},l.title),t.createElement(E,{id:"confirmation-modal-description",variant:"body1"},l.message)),t.createElement(T,{className:a.checkbox},t.createElement(Xe,{control:t.createElement(Fe,{"data-testid":"save-track-checkbox",checked:o,onChange:p}),label:"Create Track"}),t.createElement(E,{id:"confirmation-modal-check-box-description",variant:"subtitle2"},"Create a track from this campaign if you wish to promote it to a long term health initiative.")),t.createElement("div",{className:a.modalButtons},!l.error&&t.createElement(H,{onClick:u,variant:"contained","aria-label":"cancel"},"Cancel"),t.createElement(H,{color:"primary",onClick:d,variant:"contained","aria-label":"confirm"},l.error?"Ok":"Confirm")))))},pd=()=>ht(Qr),gd=({campaign:e})=>{const{id:a,name:n,description:r,ownerEntityRef:l,archived:i}=e,o=J(In),s=J(ai),c=pe(),m=e.archived,{showModal:d}=$e(),{showArchiveModal:u}=pd(),{mutate:p}=ar(),{mutate:g}=Xi(),{mutate:f}=Qi(),{loading:y,allowed:v}=Q({permission:jl,resourceRef:e.id}),{loading:b,allowed:w}=Q({permission:Ql,resourceRef:e.id}),x=j(async()=>{await d({title:"Delete Campaign",message:`Are you sure you want to delete campaign ${e.name}?`})&&g(e.id)},[d,g,e.id,e.name]),S=()=>{var $,_;const{track:D}=e,ue={id:xt(),ownerEntityRef:D.ownerEntityRef,description:($=D.description)!=null?$:"",name:D.name,documentationURL:D.documentationURL,type:"standard",levels:(_=D.levels)!=null?_:[],filter:D.filter};p(ue)},V=async()=>{const{saveTrack:$,confirmed:_}=await u({title:"Archive Campaign",message:`Are you sure you want to archive campaign ${e.name}?`});_&&($&&S(),f(e.id))};return t.createElement(ot,{title:n!=null?n:a,description:r,children:(l||i)&&t.createElement(md,{campaign:e}),handleView:()=>c(o({campaignId:e.id})),handleEdit:!y&&v&&!m?()=>c(s({campaignId:e.id})):void 0,handleDelete:!b&&w?x:void 0,handleArchive:!b&&w&&!m?V:void 0})},hd=()=>t.createElement(h,{item:!0,container:!0,"data-testid":"campaigns-skeleton"},Array.from({length:6},(e,a)=>t.createElement(h,{key:`loading-${a}`,xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem"},t.createElement(wt,{variant:"rect",height:385})))),vd=R(e=>({headerButtons:{display:"flex",gap:e.spacing(1),flexWrap:"nowrap",justifyContent:"end",alignItems:"center"},header:{padding:e.spacing(0,0,1)},container:{padding:e.spacing(3),gap:e.spacing(3)},pagination:{marginTop:e.spacing(1)}})),Ed=({campaignsPerPage:e,currentCursor:a})=>{const n=vd(),[r,l]=C(a),[i,o]=C(""),[s,c]=C(""),[m,d]=C(xe.Alpha),[u,p]=C(xe.Owner),[g,f]=C(xe.Status),[y,v]=C([]);Fi(()=>{c(i)},500,[i]);const{setShowAddModal:b}=rt(),{loading:w,allowed:x}=Q({permission:Tn}),{data:S,isLoading:V}=un({ids:void 0,first:e,after:r,orderAlphabetical:m,searchByOwner:u,searchByName:s,searchByStatus:g}),[$,_]=C(S),D=$==null?void 0:$.edges.map(W=>W.campaign),[ue,je]=C([]),Ce=W=>{d(W.target.value)},I=W=>{p(W.target.value)},P=W=>{f(W.target.value)};if(A(()=>{S&&_(()=>{var W;return{endCursor:S.endCursor,totalCount:S.totalCount,hasNextPage:(W=S==null?void 0:S.hasNextPage)!=null?W:!1,edges:S.edges}})},[S]),A(()=>{const W=$==null?void 0:$.edges.map(nl=>nl.campaign),al=Ha(W!=null?W:[]);v(al)},[V,$]),!V&&!D)return t.createElement(Za,null);let K;return V?K=t.createElement(hd,null):D!=null&&D.length?K=D.map(W=>t.createElement(h,{key:W.id,xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem","aria-label":"result"},t.createElement(ud,null,t.createElement(gd,{campaign:W})))):K=t.createElement(h,{xs:12,item:!0,role:"listitem","aria-label":"result"},t.createElement(Me,{title:Xa.title,description:Xa.description})),t.createElement(h,{container:!0,direction:"row",className:n.container},t.createElement(h,{container:!0,className:n.header},t.createElement(_a,{searchPlaceholder:"Search available campaigns",isLoading:V,searchTerm:i,setSearchTerm:o,filterAlpha:m,handleAlphabeticalFilterChange:Ce,filterOwner:u,handleOwnerFilterChange:I,filterStatus:g,handleStatusFilterChange:P,owners:y}),t.createElement(h,{item:!0,xs:3},t.createElement("div",{className:n.headerButtons},!w&&t.createElement(H,{disabled:!x,variant:"contained",color:"primary",onClick:()=>b(!0)},"Create campaign")))),t.createElement(h,{container:!0,spacing:4,role:"list","aria-label":"campaigns"},K),(($==null?void 0:$.hasNextPage)||(ue==null?void 0:ue.length)>0)&&t.createElement("div",{className:n.pagination},t.createElement(Wa,{response:$,listingsPerPage:e,cursor:r,setCursor:l,prevCursors:ue,setPrevCursors:je,labelPerPageDropdown:"Campaigns Per Page:",urlRoute:"campaigns?campaignsPerPage="})))},Yr=0,Xr=100,Ja=25,en=250,tn=25,an=250,fd="At least one check is required",yd="Ending date must come after the Starting Date",Zr=(e,a)=>(e===null&&a.addIssue({code:k.ZodIssueCode.custom,message:me}),e),bd=({campaignStartDate:e,campaignEndDate:a})=>e&&a?new Date(e)<new Date(a):!0,Cd=k.strictObject({campaignName:k.string().min(1,me).max(Ja,`Input must be less than ${Ja} characters`),campaignDescription:k.string().min(1,me).max(en,`Description must be no more than ${en} characters`),campaignOwner:k.string().min(1,me),supportChannel:k.string().optional(),campaignStartDate:k.coerce.date().nullable().transform(Zr),campaignEndDate:k.coerce.date().nullable().transform(Zr)}).refine(bd,{message:yd,path:["campaignEndDate"]}),kd=k.strictObject({selectedKinds:k.string().array(),selectedTypes:k.string().array(),selectedLifecycles:k.string().array(),selectedOwners:k.string().array(),selectedSystems:k.string().array(),selectedTags:k.string().array()}),xd=k.strictObject({id:k.string(),label:k.string()}),wd=k.strictObject({checks:k.array(xd).min(1,fd)}),Td=k.strictObject({id:k.number().optional(),milestoneName:k.string().min(1,me).max(tn,`Input must be less than ${tn} characters`),milestoneDescription:k.string().min(1,me).max(an,`Description must be no more than ${an} characters`),milestonePassrate:k.coerce.number().min(Yr,`Minimum pass rate is ${Yr}%`).max(Xr,`Maximum pass rate is ${Xr}%`)}),Sd=k.strictObject({milestones:k.array(Td).min(1,me)}),Rd=k.strictObject({detailsStep:Cd,tracksStep:wd,filtersStep:kd,milestonesStep:Sd}),Pd={detailsStep:{campaignName:"",campaignDescription:"",campaignOwner:"",supportChannel:"",campaignStartDate:null,campaignEndDate:null},tracksStep:{checks:[]},filtersStep:{selectedKinds:[],selectedTypes:[],selectedLifecycles:[],selectedOwners:[],selectedSystems:[],selectedTags:[]},milestonesStep:{milestones:[{milestoneName:"",milestoneDescription:"",milestonePassrate:"0"}]}},Oe={details:{name:{name:"Campaign name",description:"Give your campaign a meaningful name so it's easy to remember it",helperText:`Max ${Ja} characters`,placeholder:"Example: Check for latest version of javascript and Readme files"},description:{name:"Campaign description",description:"Give your campaign a meaningful description so others can understand how to use it",helperText:`Max ${en} characters`,placeholder:"Example: Ask my teams to check for the latest version of javascript and Readme files so that we can meet our quality standards this quarter"},owner:{name:"Campaign owner",description:"Add yourself or a team as the owner of this campaign"},support:{name:"Support channel",description:"Add a Slack channel to receive updates about the campaign",placeholder:"Channel name"},startingDate:{name:"Starting date",placeholder:"Starting date"},endingDate:{name:"Ending date",placeholder:"Ending date"}},milestones:{name:{name:"Milestone name",description:"Give your milestone a meaningful name so it's easy to remember it",helperText:`Max ${tn} characters`,placeholder:"Example: 80% passrate"},description:{name:"Milestone description",description:"Give your milestone a meaningful description so others can understand how to use it",helperText:`Max ${an} characters`,placeholder:"Example: The track in my my campaign has a passrate of 80% or above"},passrate:{name:"Milestone passrate",description:"Enter the pass rate that your tracks have to meet",placeholder:"Example: 80%"}},filter:{description:'Setting the filters below will limit the scope of the Campaign so that only those Entities that match the filter will be monitored by the Campaign. As an example, choosing a "Kind" of "Component" will make this Campaign only apply to Entities whose Kind is indeed set to "Component". This would exclude Entities like Groups, Users, APIs, etc. from being impacted by the Campaign.'}},Nd=({name:e,ownerEntityRef:a,description:n,targetCompletionDate:r,supportChannel:l,milestones:i,startDate:o,track:s})=>{var c;return{detailsStep:{campaignName:e,campaignDescription:n,campaignOwner:a,supportChannel:l,campaignStartDate:o,campaignEndDate:r},tracksStep:{checks:(c=s==null?void 0:s.levels)==null?void 0:c[0].checks.map(m=>{var d;return{id:m.id,label:(d=m.name)!=null?d:m.id}})},filtersStep:La(s.filter),milestonesStep:{milestones:i.map(m=>({id:Number(m.id),milestoneName:m.name,milestoneDescription:m.description,milestonePassrate:m.targetPercent.toString()}))}}},Ld=(e,a,n)=>{var r;const{tracksStep:{checks:l},detailsStep:{campaignName:i,campaignDescription:o,campaignOwner:s,supportChannel:c,campaignStartDate:m,campaignEndDate:d},filtersStep:u,milestonesStep:{milestones:p}}=e,g=Nr({trackName:`${i}`,trackDescription:`The checks for the ${i} campaign.`,ownerEntityRef:s,filters:u,levels:[{levelName:"Level 1",levelChips:l,levelDescription:""}]},n!=null?n:{},a==null?void 0:a.track);return{id:(r=a==null?void 0:a.id)!=null?r:xt(),track:{...g,type:"campaign"},name:i,description:o,ownerEntityRef:s,supportChannel:c,startDate:m,targetCompletionDate:d,milestones:p.map(({id:f,milestonePassrate:y,milestoneDescription:v,milestoneName:b})=>({id:f,trackId:g.id,name:b,description:v,targetPercent:parseInt(y,10),targetCompletionDate:d}))}},Dd=(e,a)=>{const n=z(()=>a?Nd(a):Pd,[a]),{control:r,handleSubmit:l,getValues:i,setValue:o,trigger:s,formState:{errors:c}}=Et({defaultValues:n,mode:"onChange",resolver:Vn(Rd)}),{showModal:m}=$e(),{checksMap:d}=qa();return{control:r,handleSubmit:l,getValues:i,setValue:o,trigger:s,errors:c,onSubmit:async u=>{if(!await m({title:"Save Campaign",message:`Are you sure you want to save campaign: ${u.detailsStep.campaignName}?`,error:!1}))return;const p=Ld(u,a,d);e(p)}}},Id=R(e=>({container:{display:"flex",gap:e.spacing(1),flexDirection:"column"},link:{fontWeight:"bold",padding:0},list:{marginTop:0},listItem:{marginBottom:e.spacing(1)}})),Od=()=>{const e=Id(),a=J(ni),n=pe();return t.createElement("div",{className:e.container},t.createElement(E,{variant:"h6"},"Creating campaigns"),t.createElement(E,{variant:"body1"},"A Campaign is a focused short term initiative."),t.createElement(E,{variant:"body1"},"You can create campaigns, assign them to teams that own software components, and track them towards a completion milestone via the"," ",t.createElement(H,{variant:"text",onClick:()=>n(a()),className:e.link},"Tech Health")," ","page."),t.createElement(E,{variant:"body1"},"Some use cases for campaigns include:"),t.createElement("div",null,t.createElement("ul",{className:e.list},t.createElement("li",{className:e.listItem},t.createElement(E,{variant:"body1"},"When your organization wants to upgrade Spring libraries to use a specific version of Spring Boot.")),t.createElement("li",null,t.createElement(E,{variant:"body1"},"When your organization wants to remove unneeded data endpoints to save costs.")))))},Ad=R(e=>({helperText:{marginLeft:0}})),Fd=({control:e,errors:a,isLoading:n,disabled:r})=>{const l=Ad(),{name:i}=Oe.details;return t.createElement("div",null,t.createElement(E,{variant:"subtitle2"},i.name),t.createElement(E,{variant:"caption"},i.description),t.createElement(G,{name:"detailsStep.campaignName",control:e,defaultValue:"",render:({field:o})=>{var s,c;return t.createElement(Y,{...o,FormHelperTextProps:{className:l.helperText},variant:"outlined",fullWidth:!0,placeholder:i.placeholder,disabled:n||r,type:"text",margin:"normal",error:!!(a!=null&&a.campaignName),helperText:(c=(s=a==null?void 0:a.campaignName)==null?void 0:s.message)!=null?c:i.helperText})}}))},$d=R(e=>({helperText:{marginLeft:0}})),Md=({control:e,errors:a,isLoading:n,disabled:r})=>{const l=$d(),{description:i}=Oe.details;return t.createElement("div",null,t.createElement(E,{variant:"subtitle2"},i.name),t.createElement(E,{variant:"caption"},i.description),t.createElement(G,{name:"detailsStep.campaignDescription",control:e,defaultValue:"",render:({field:o})=>{var s,c;return t.createElement(Y,{...o,FormHelperTextProps:{className:l.helperText},variant:"outlined",multiline:!0,minRows:4,fullWidth:!0,placeholder:i.placeholder,disabled:n||r,type:"text",margin:"normal",error:!!(a!=null&&a.campaignDescription),helperText:(c=(s=a==null?void 0:a.campaignDescription)==null?void 0:s.message)!=null?c:i.helperText})}}))},Gd=R(e=>({helperText:{marginLeft:0},selectField:{display:"flex",flexDirection:"column",gap:e.spacing(1)},fieldContainer:{width:"250px"}})),Bd=({control:e,errors:a,isLoading:n,disabled:r})=>{var l,i;const o=Gd(),{owner:s}=Oe.details,{options:c}=ea(),{user:m,userEntityRef:d}=Ye();let u=ca(c==null?void 0:c.map(p=>({value:p.ref,label:p.name})),"value");return d&&(u=[{value:d,label:m==null?void 0:m.metadata.name},...u]),t.createElement("div",{className:o.selectField},t.createElement("header",null,t.createElement(E,{variant:"subtitle2"},s.name),t.createElement(E,{variant:"caption"},s.description)),t.createElement("div",{className:o.fieldContainer},t.createElement(At,{name:"detailsStep.campaignOwner",control:e,options:u,selectLabel:"Owner",disabled:r||n,style:{width:"100%"},helperText:(i=(l=a==null?void 0:a.campaignOwner)==null?void 0:l.message)!=null?i:void 0})))},Vd=R(e=>({fieldContainer:{width:"250px"}})),_d=({control:e,errors:a,isLoading:n,disabled:r})=>{var l,i;const o=Vd(),{support:s}=Oe.details;return t.createElement("div",{style:{marginTop:10}},t.createElement(E,{variant:"subtitle2"},s.name),t.createElement(E,{variant:"caption"},s.description),t.createElement("div",{className:o.fieldContainer},t.createElement(st,{name:"detailsStep.supportChannel",control:e,label:s.name,placeholder:s.placeholder,disabled:r||n,variant:"outlined",error:a==null?void 0:a.supportChannel,helperText:(i=(l=a==null?void 0:a.supportChannel)==null?void 0:l.message)!=null?i:void 0})))},Hd=R(e=>({chip:{backgroundColor:e.palette.primary.main,color:e.palette.primary.contrastText},chips:{width:"310px",marginLeft:e.spacing(1)}})),Wd=[{value:{days:7},label:"1 week"},{value:{days:14},label:"2 weeks"},{value:{month:1},label:"1 month"},{value:{months:3},label:"3 months"},{value:{months:6},label:"6 months"},{value:{year:1},label:"1 year"}],zd=({props:e,startDate:a,selectedDuration:n,setSelectedDuration:r,isLoading:l,disabled:i})=>{const o=Hd();return t.createElement(h,{container:!0,direction:"column"},t.createElement(h,{item:!0},t.createElement($i,{...e})),t.createElement(h,{item:!0,className:o.chips},Wd.map(({value:s,label:c})=>t.createElement(Ct,{key:c,label:c,className:n===s?o.chip:void 0,color:n===s?"primary":void 0,size:"small",onClick:()=>{a&&(r(s),e.onChange(a.plus(s),!1))},disabled:l||i}))))},qd=R(e=>({helperText:{marginLeft:0},selectFieldGroup:{display:"flex",flexDirection:"column",gap:e.spacing(1),marginTop:e.spacing(1)},selectField:{display:"flex",flexDirection:"column",gap:e.spacing(1)},scheduleTitle:{fontWeight:"bold"},fieldContainer:{width:"250px"},select:{width:"100%"}})),Ud=({control:e,errors:a,isLoading:n,disabled:r})=>{const l=qd(),[i,o]=C(!1),[s,c]=C(!1),[m,d]=C(null),[u,p]=C(void 0),{startingDate:g,endingDate:f}=Oe.details;return t.createElement("div",{className:l.selectFieldGroup},t.createElement(E,{variant:"subtitle2",className:l.scheduleTitle},"Campaign schedule"),t.createElement("div",{className:l.selectField},t.createElement(E,{variant:"subtitle2"},g.name),t.createElement("div",{className:l.fieldContainer},t.createElement(G,{control:e,name:"detailsStep.campaignStartDate",render:({field:y})=>{var v,b;const{ref:w,...x}=y;return t.createElement(Xn,{utils:Zn},t.createElement(Jn,{inputRef:y.ref,...x,format:"MMMM dd, yyyy",autoOk:!0,FormHelperTextProps:{className:l.helperText},inputVariant:"outlined",className:l.select,error:!!(a!=null&&a.campaignStartDate),helperText:(b=(v=a==null?void 0:a.campaignStartDate)==null?void 0:v.message)!=null?b:void 0,onChange:S=>{d(S),y.onChange(S)},open:i,disabled:n||r,InputProps:{readOnly:!0,placeholder:g.placeholder,onClick:()=>o(!0)},onOpen:()=>o(!0),onClose:()=>o(!1)}))}}))),t.createElement("div",{className:l.selectField},t.createElement(E,{variant:"subtitle2"},f.name),t.createElement("div",{className:l.fieldContainer},t.createElement(G,{name:"detailsStep.campaignEndDate",control:e,render:({field:y})=>{var v,b;const{ref:w,...x}=y;return t.createElement(h,{container:!0,direction:"column"},t.createElement(h,{item:!0},t.createElement(Xn,{utils:Zn},t.createElement(Jn,{inputRef:y.ref,...x,disablePast:!0,format:"MMMM dd, yyyy",autoOk:!0,FormHelperTextProps:{className:l.helperText},inputVariant:"outlined",className:l.select,error:!!(a!=null&&a.campaignEndDate),helperText:(b=(v=a==null?void 0:a.campaignEndDate)==null?void 0:v.message)!=null?b:void 0,onChange:S=>{y.onChange(S)},open:s,disabled:n||r,InputProps:{readOnly:!0,placeholder:f.placeholder,onClick:()=>c(!0)},onOpen:()=>{p(void 0),c(!0)},onClose:()=>c(!1),ToolbarComponent:S=>t.createElement(zd,{props:S,isLoading:n,disabled:!!r,startDate:m,selectedDuration:u,setSelectedDuration:p})}))))}}))))},Kd=({control:e,errors:a,isLoading:n,disabled:r})=>t.createElement(t.Fragment,null,t.createElement(Fd,{control:e,errors:a,isLoading:n,disabled:r}),t.createElement(Md,{control:e,errors:a,isLoading:n,disabled:r}),t.createElement(Bd,{control:e,errors:a,isLoading:n,disabled:r}),t.createElement(_d,{control:e,errors:a,isLoading:n,disabled:r}),t.createElement(Ud,{control:e,errors:a,isLoading:n,disabled:r})),jd=R(e=>({columnHeader:{display:"flex",justifyContent:"space-between",alignItems:"center"},subtitle:{fontWeight:"bold",color:e.palette.primary.main,marginLeft:"-16px"},levelsContainer:{marginTop:"0",flexDirection:"column"},errorText:{marginTop:e.spacing(3),marginLeft:e.spacing(-2)},formContainer:{width:"100%"}})),Qd=({control:e,disabled:a,isLoading:n,errors:r})=>{const l=jd(),{checkChips:i}=qa(),{fields:o,remove:s,append:c}=ft({control:e,name:"tracksStep.checks"}),m=new Set(o.flatMap(({label:g})=>g)),d=i.filter(g=>!m.has(g.label)),u=j(g=>{c(g)},[c]),p=j(g=>{const f=kn(o,y=>y.id===g.id);s(f)},[s,o]);return t.createElement(G,{control:e,name:"tracksStep.checks",render:()=>{var g;return t.createElement(yt,{error:!!(r!=null&&r.checks),disabled:a||n,variant:"outlined",className:l.formContainer},t.createElement(h,{item:!0,xs:12},t.createElement(h,{container:!0,spacing:4},t.createElement(ga,{backend:ha},t.createElement(h,{item:!0,xs:5},t.createElement(Sr,{chips:d,isLoading:n,disabled:a,label:"Campaign Checks"})),t.createElement(h,{item:!0,xs:7},t.createElement(h,{container:!0},t.createElement(h,{item:!0,xs:12,className:l.columnHeader},t.createElement(E,{className:l.subtitle},"Included Checks")),t.createElement(h,{container:!0,item:!0,spacing:5,className:l.levelsContainer},t.createElement(Rr,{chips:o,onDelete:p,onDrop:u,error:!!(r!=null&&r.checks),placeholder:"Drag and drop checks here to include them in this level",disabled:a}))),((g=r==null?void 0:r.checks)==null?void 0:g.message)&&t.createElement(vn,{className:l.errorText},r.checks.message))))))}})},Yd=R(()=>({milestoneHeader:{display:"flex",alignItems:"center"},divider:{margin:"20px 0"},helperText:{marginLeft:0},selectContainer:{width:"250px"}})),Xd=({control:e,errors:a,isLoading:n,disabled:r})=>{const l=Yd(),{name:i,description:o,passrate:s}=Oe.milestones,{fields:c,append:m,remove:d}=ft({control:e,name:"milestonesStep.milestones"}),u=()=>m({milestoneName:"",milestoneDescription:"",milestonePassrate:"0"});return t.createElement(t.Fragment,null,c.map((p,g)=>t.createElement("div",{key:p.id},g!==0&&t.createElement(Ae,{className:l.divider}),t.createElement(h,{container:!0,spacing:1,className:l.milestoneHeader},t.createElement(h,{item:!0,xs:!0},t.createElement(E,{variant:"subtitle2"},i.name),t.createElement(E,{variant:"caption"},i.description),t.createElement(G,{name:`milestonesStep.milestones.${g}.milestoneName`,control:e,defaultValue:"",render:({field:f})=>{var y,v,b,w,x,S;return t.createElement(Y,{...f,FormHelperTextProps:{className:l.helperText},variant:"outlined",fullWidth:!0,placeholder:i.placeholder,disabled:n||r,type:"text",margin:"normal",error:!!((v=(y=a==null?void 0:a.milestones)==null?void 0:y[g])!=null&&v.milestoneName),helperText:(S=(x=(w=(b=a==null?void 0:a.milestones)==null?void 0:b[g])==null?void 0:w.milestoneName)==null?void 0:x.message)!=null?S:i.helperText})}})),g!==0&&!r&&t.createElement(h,{item:!0},t.createElement($t,{label:"Remove Milestone",startIcon:t.createElement(zn,null),onClick:()=>d(g),disabled:r}))),t.createElement("div",null,t.createElement(E,{variant:"subtitle2"},o.name),t.createElement(E,{variant:"caption"},o.description),t.createElement(G,{name:`milestonesStep.milestones.${g}.milestoneDescription`,control:e,defaultValue:"",render:({field:f})=>{var y,v,b,w,x,S;return t.createElement(Y,{...f,FormHelperTextProps:{className:l.helperText},variant:"outlined",multiline:!0,minRows:4,fullWidth:!0,placeholder:o.placeholder,disabled:n||r,type:"text",margin:"normal",error:!!((v=(y=a==null?void 0:a.milestones)==null?void 0:y[g])!=null&&v.milestoneDescription),helperText:(S=(x=(w=(b=a==null?void 0:a.milestones)==null?void 0:b[g])==null?void 0:w.milestoneDescription)==null?void 0:x.message)!=null?S:o.helperText})}})),t.createElement("div",null,t.createElement(E,{variant:"subtitle2"},s.name),t.createElement(E,{variant:"caption"},s.description),t.createElement("div",{className:l.selectContainer},t.createElement(G,{name:`milestonesStep.milestones.${g}.milestonePassrate`,control:e,defaultValue:"",render:({field:f})=>{var y,v,b,w,x,S;return t.createElement(Y,{...f,FormHelperTextProps:{className:l.helperText},variant:"outlined",fullWidth:!0,placeholder:s.placeholder,disabled:n||r,type:"number",margin:"normal",error:!!((v=(y=a==null?void 0:a.milestones)==null?void 0:y[g])!=null&&v.milestonePassrate),helperText:(S=(x=(w=(b=a==null?void 0:a.milestones)==null?void 0:b[g])==null?void 0:w.milestonePassrate)==null?void 0:x.message)!=null?S:void 0})}}))))),t.createElement($t,{label:"Add Milestone",startIcon:t.createElement(Wn,null),onClick:()=>u(),disabled:r}))},Jr=({onSave:e,onCancel:a,selectedCampaign:n})=>{const r=Ma(),{isLoading:l,isReadOnly:i}=rt(),{control:o,handleSubmit:s,errors:c,trigger:m,onSubmit:d}=Dd(e,n),u=[{label:"Enter campaign details",content:()=>t.createElement(Kd,{control:o,isLoading:l,disabled:!1,errors:c.detailsStep})},{label:"Add checks",content:()=>t.createElement(Qd,{control:o,isLoading:l,disabled:!1,errors:c.tracksStep})},{label:"Choose affected entities",content:()=>t.createElement("div",{className:r.filters},t.createElement(E,{variant:"body2"},Oe.filter.description),t.createElement(G,{name:"filtersStep",control:o,render:({field:g})=>{var f;return t.createElement(Ia,{value:(f=g.value)!=null?f:lt(),onChange:g.onChange})}}))},{label:"Set campaign milestones",content:()=>t.createElement(Xd,{control:o,isLoading:l,disabled:!1,errors:c.milestonesStep})}],p=n?[...Array(u.length).keys()]:[0];return t.createElement("form",{onSubmit:s(d)},t.createElement(xr,{onClose:a,handleSubmit:s,trigger:m,onSubmit:d,initialVisited:p,stepNameMap:id,steps:u,isLoading:l,isReadOnly:i,saveButtonText:"Save Campaign",detailsComponent:t.createElement(Od,null)}))},Zd=()=>{const{hideModal:e,showAddModal:a,setIsLoading:n}=rt(),{mutateAsync:r,isLoading:l}=qi();return A(()=>{n(l)},[n,l]),t.createElement(_e,{title:"Create a Campaign",open:a,handleClose:e},t.createElement(Jr,{onSave:async i=>{await r(i,{onSuccess:()=>e()})},onCancel:e}))},Jd=()=>{const[e]=Zt(),a=e.get("campaignsPerPage"),n=a?parseInt(a,10):We;return t.createElement(lo,null,t.createElement("div",null,t.createElement(Ed,{campaignsPerPage:n}),t.createElement(Zd,null)))},eu=()=>{var e,a;const n=pe(),r=J(An),{campaignId:l}=Qe(),{setIsLoading:i}=rt(),{mutateAsync:o,isLoading:s}=Ki(),{data:c,isLoading:m}=Ur(l!=null?l:""),d=(a=(e=c==null?void 0:c.edges)==null?void 0:e[0])==null?void 0:a.campaign;if(A(()=>i(s),[i,s]),!m&&!d)return t.createElement(Za,null);const u=async g=>{await o(g,{onSuccess:()=>n(r())})},p=()=>n(r());return t.createElement(_e,{title:"Update Campaign",open:!0,handleClose:p},m?t.createElement(ge,null):t.createElement(Jr,{onSave:u,onCancel:p,selectedCampaign:d}))},el=()=>({enabled:!1,hasDuration:!1,unit:B.Days,value:1});function nn(e){if(e){const{enabled:a,hasDuration:n}=e;if(a&&n){const{unit:r,value:l}=e;return{duration:{[r]:l}}}return a}}function rn(e){var a;const n=el();if(!e)return n;if(typeof e=="boolean")return{...n,enabled:e};if(!tt.isObject(e)||!("duration"in e))return n;const r=e.duration;if(!tt.isObject(r))return n;const l=Object.entries(r);if(l.length===0)return n;const[i,o]=l[0];return{...n,enabled:!0,hasDuration:!0,unit:(a=Dt(i))!=null?a:B.Days,value:o}}const tu=R(e=>({duration:{display:"flex",padding:e.spacing(1),gap:e.spacing(2),alignItems:"flex-start"},checkbox:{margin:e.spacing(-1.5,0)},label:{cursor:"pointer"}})),au=({value:e,onChange:a,disabled:n,errors:r})=>{const l=tu(),[i,o]=C(e),[s,c]=C(`${e.value}`);A(()=>{a&&a(i)},[i,a]);const m=g=>{o({...i,enabled:g.target.checked,hasDuration:g.target.checked&&i.hasDuration})},d=g=>{o({...i,hasDuration:g.target.checked})},u=g=>{c(g.target.value);const f=parseInt(g.target.value,10);o({...i,value:isNaN(f)?0:f})},p=g=>{var f;o({...i,unit:(f=Dt(g.target.value))!=null?f:B.Hours})};return t.createElement(h,{container:!0,direction:"column"},t.createElement(h,{item:!0},t.createElement(h,{container:!0,alignItems:"center"},t.createElement(h,{item:!0},t.createElement(Fe,{id:"enableCaching",disabled:n,checked:i.enabled,onChange:m,"data-testid":"enableCaching"})),t.createElement(h,{item:!0},t.createElement("label",{htmlFor:"enableCaching",className:l.label},"Enable caching")))),t.createElement(h,{item:!0},t.createElement(h,{container:!0,alignItems:"flex-start"},t.createElement(h,{item:!0,className:l.checkbox},t.createElement(Fe,{id:"hasDuration",disabled:n||!i.enabled,checked:i.enabled&&i.hasDuration,onChange:d,"data-testid":"hasDuration"})),t.createElement(h,{item:!0},t.createElement("label",{htmlFor:"hasDuration",className:i.enabled?l.label:""},"Duration")),t.createElement(h,{className:l.duration},t.createElement(h,{item:!0},t.createElement(Y,{id:"every",type:"number",label:"For",name:"for",disabled:n||!i.hasDuration,value:s,onChange:u,error:!!(r!=null&&r.message),helperText:r==null?void 0:r.message,inputProps:{min:ur,max:pr},"data-testid":"forTextField"})),t.createElement(h,{item:!0},t.createElement(yt,null,t.createElement(aa,{id:"duration-unit"},"Unit"),t.createElement(na,{labelId:"duration-unit",disabled:n||!i.hasDuration,value:i.unit,onChange:p,"data-testid":"unitSelect"},Sa.map(g=>t.createElement(ve,{key:g,value:g},g)))))))))},nu=({type:e,cron:a,value:n})=>{if(e==="cron"){if(!mr(a))return dr(a)}else if(e==="HumanDuration")return Na(n);return!0},ru=({enabled:e,hasDuration:a,value:n})=>e&&a?Na(n):!0,lu=R(e=>({root:{padding:e.spacing(1)},tabsContainer:{marginRight:16},tab:{height:"64px",textAlign:"left"},contentContainer:{width:"100%",padding:e.spacing(1)},divider:{marginTop:e.spacing(8),marginBottom:e.spacing(8)}})),ln=({name:e,label:a,description:n,control:r,disabled:l,errors:i})=>{const[o,s]=C(0),c=ta({control:r,name:`${e}.enabled`}),m=(u,p)=>{s(p)},d=lu();return t.createElement("div",{className:d.root},t.createElement(G,{name:`${e}.enabled`,control:r,render:({field:u})=>t.createElement(Xe,{control:t.createElement(Fl,{...u,checked:u.value,"data-testid":`${e}-switch`}),label:t.createElement(T,{display:"flex",flexDirection:"column"},t.createElement(E,{variant:"body1",component:"span"},t.createElement("b",null,`${a}`)),t.createElement(E,{variant:"caption",color:"textSecondary",component:"p"},`${n}`))})}),c&&t.createElement("div",null,t.createElement(hn,{orientation:"horizontal",variant:"scrollable",value:o,onChange:m,className:d.tabsContainer},t.createElement(Je,{label:"Frequency",className:d.tab}),t.createElement(Je,{label:"Filters",className:d.tab}),t.createElement(Je,{label:"Caching",className:d.tab})),t.createElement("div",{className:d.contentContainer},o===0&&t.createElement("div",null,t.createElement(G,{name:`${e}.frequency`,control:r,rules:{validate:nu},render:({field:u})=>t.createElement(gr,{disabled:l,value:u.value,onChange:u.onChange,errors:i==null?void 0:i.frequency})})),o===1&&t.createElement("div",null,t.createElement(G,{name:`${e}.filters`,control:r,render:({field:u})=>t.createElement(Ia,{disabled:l,value:u.value,onChange:u.onChange})})),o===2&&t.createElement("div",null,t.createElement(G,{name:`${e}.cacheConfig`,control:r,rules:{validate:ru},render:({field:u})=>t.createElement(au,{disabled:l,value:u.value,onChange:u.onChange,errors:i==null?void 0:i.cacheConfig})})))))},on=()=>({enabled:!1,filters:{...lt(),selectedKinds:["Component"]},frequency:Ta(),cacheConfig:el()}),tl=()=>({branchProtections:on(),repositoryDetails:on(),repositoryLanguages:on()});function iu(e){const{branchProtections:a,repositoryDetails:n,repositoryLanguages:r}=e;if(a.enabled||n.enabled||r.enabled){const l={},i=[];if(l.collects=i,a.enabled){const{cacheConfig:o,frequency:s,filters:c}=a;i.push({factName:"branch_protections",type:"BranchProtections",frequency:Ra(s),filter:It(c),cache:nn(o)})}if(n.enabled){const{cacheConfig:o,frequency:s,filters:c}=n;i.push({factName:"repository_details",type:"RepositoryDetails",frequency:Ra(s),filter:It(c),cache:nn(o)})}if(r.enabled){const{cacheConfig:o,frequency:s,filters:c}=r;i.push({factName:"repository_languages",type:"RepositoryLanguages",frequency:Ra(s),filter:It(c),cache:nn(o)})}return l}return[]}function ou(e){var a,n,r,l,i,o;const s=tl();if(e){const c=e.collects;if(c)for(const m of ma(c)){const d=m.type;d==="BranchProtections"&&(s.branchProtections={enabled:!0,frequency:Pa((a=m.frequency)!=null?a:e.frequency),filters:Da((n=m.filter)!=null?n:e.filter),cacheConfig:rn(m.cache)}),d==="RepositoryDetails"&&(s.repositoryDetails={enabled:!0,frequency:Pa((r=m.frequency)!=null?r:e.frequency),filters:Da((l=m.filter)!=null?l:e.filter),cacheConfig:rn(m.cache)}),d==="RepositoryLanguages"&&(s.repositoryLanguages={enabled:!0,frequency:Pa((i=m.frequency)!=null?i:e.frequency),filters:Da((o=m.filter)!=null?o:e.filter),cacheConfig:rn(m.cache)})}}return s}const su="Error Configuring Collector";function cu(){const e=O(M),a=ne(),{showAlert:n}=le(),r=async l=>{const i=await e.updateCollectorConfig(l);if(!i)throw new Error("Failed to update collector configuration.");return i};return re([ie.UpdateCollectorConfig],r,{onSuccess:()=>{a.invalidateQueries({queryKey:[L.GetCollectors]})},onError:l=>{let i="Failed to update collector configuration.";l instanceof Error&&(i=l.message),n({severity:"error",title:su,message:i})}})}const mu=({disabled:e,selectedCollector:a})=>{const{control:n,formState:{errors:r},handleSubmit:l}=Et({defaultValues:a?ou(a.config):tl(),mode:"onChange"}),i=!!r.branchProtections||!!r.repositoryDetails||!!r.repositoryLanguages,{mutateAsync:o}=cu(),[s,c]=Ge(Fn),m=async d=>{const u=iu(d);await o({collectorId:"github",config:u})&&c()};return t.createElement("form",{onSubmit:l(m)},t.createElement(ln,{name:"branchProtections",label:"Branch Protections",description:"Collects branch protection information from an entity's repository.",control:n,disabled:e,errors:r.branchProtections}),t.createElement(Ae,null),t.createElement(ln,{name:"repositoryDetails",label:"Repository Details",description:"Collects details about the an entity's repository.",control:n,disabled:e,errors:r.repositoryDetails}),t.createElement(Ae,null),t.createElement(ln,{name:"repositoryLanguages",label:"Repository Languages",description:"Collects details about the languages used in an entity's repository.",control:n,disabled:e,errors:r.repositoryLanguages}),t.createElement(h,{container:!0,spacing:4},t.createElement(Ga,{onCancel:s,saveButtonText:"Save",isLoading:!1,onSave:l(m),disableSave:i})))},du=({title:e,open:a,handleClose:n,selectedCollector:r})=>t.createElement(_e,{handleClose:n,title:e,open:a},(r==null?void 0:r.id)==="github"&&t.createElement(mu,{selectedCollector:r})),uu=()=>{var e;const{collectorId:a}=Qe(),{data:n,isLoading:r}=$a([a!=null?a:""]),{loading:l,allowed:i}=Q({permission:Sn}),[o]=Ge(Fn),s=n==null?void 0:n[0],c=r||l,m=i&&(s==null?void 0:s.isEditable);return t.createElement("div",null,c&&t.createElement(vt,null),t.createElement(Ya,{entityName:"Collector",entityId:a,showNotFound:!c&&!s,showCannotEdit:!c&&!m}),s&&m&&t.createElement(du,{title:s?(e=s.name)!=null?e:s.id:"",open:!0,handleClose:o,selectedCollector:s}))},pu=["github"],gu=({collector:e,children:a})=>{const{description:n,id:r,isEditable:l,name:i}=e,{loading:o,allowed:s}=Q({permission:Sn}),c=pe(),m=J(ri),d=pu.includes(r)&&l&&!o&&s,u=()=>{c(m({collectorId:e.id}))};return t.createElement(ot,{title:i!=null?i:r,description:n,viewLabel:"Configure",editLabel:"Configure",children:a,handleView:void 0,handleEdit:d?u:void 0})},hu=()=>t.createElement(t.Fragment,null,Array.from({length:6},(e,a)=>t.createElement(h,{key:`loading-${a}`,xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem"},t.createElement(wt,{variant:"rect",height:385}))));function vu(e){switch(e){case"catalog":return Mi;case"github":return Bi;case"pagerduty":return Vi;case"scm":return Gi;case"soundcheck":return Hi;case"techinsights":return Wi;default:return _i}}const Eu=R(e=>({container:{display:"flex",justifyContent:"center",alignItems:"center"},imageContainer:{width:"150px",height:"150px"},image:{width:"100%",height:"100%",objectFit:"contain"}})),fu=({collector:e})=>{const{id:a}=e,n=Eu();return t.createElement(t.Fragment,null,t.createElement("div",{className:n.container},t.createElement("div",{className:n.imageContainer},t.createElement("img",{src:vu(a),alt:a,className:n.image}))))},yu=()=>{const{data:e,isLoading:a}=$a();return t.createElement(h,{container:!0,direction:"row"},t.createElement(h,{container:!0,spacing:4,role:"list","aria-label":"checks"},a?t.createElement(hu,null):e==null?void 0:e.sort((n,r)=>{var l,i;return((l=n.name)!=null?l:n.id).localeCompare((i=r.name)!=null?i:r.id)}).map(n=>t.createElement(h,{key:n.id,xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem","aria-label":"result"},t.createElement(gu,{collector:n},t.createElement(fu,{collector:n}))))))},bu=R(e=>({container:{padding:e.spacing(3)}})),Cu=()=>{const e=bu();return t.createElement("div",{className:e.container},t.createElement(yu,null))},ku=R(()=>({tabContent:{margin:0,padding:0},root:{"& > *":{display:"flex",flexDirection:"column",flexGrow:1}},pageContent:{display:"flex",flexDirection:"row",flexGrow:1},pageLayout:{display:"flex",flexDirection:"column",flex:"1 1 0%","& > article":{display:"flex",flexDirection:"column",flex:"1 1 auto"}}})),xu=({title:e="Soundcheck"})=>{var a;const n=ku(),[r,l]=gl(),{group:i}=r,[o,s]=C(void 0),[c,m]=ya("soundcheck.overview.groupRef",null),d=(a=O(ei).getOptionalBoolean("soundcheck.techHealth.enable"))!=null?a:!0,{loading:u,allowed:p}=Q({permission:Yl}),g=y=>{y&&(l({...r,group:y}),m(y))},f=Xt();return t.createElement(li,null,t.createElement(hl,null,t.createElement(ii,null,t.createElement(oi,null,t.createElement(T,{className:n.root},t.createElement(cl,{themeId:"tool"},t.createElement(dl,{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(ml,{title:e},f.pathname.split("/").length-1===1&&t.createElement(vl,{onChange:g,initialValue:c!=null?c:i,setError:s})),t.createElement(T,{className:n.pageContent},t.createElement(T,{className:n.pageLayout},t.createElement(cn,null,t.createElement(Re,{path:"/*",element:t.createElement(X,null,t.createElement(X.Route,{title:"Overview",path:"/"},t.createElement("div",{className:n.tabContent},t.createElement(El,{groupSelectorError:o,searchParams:r,setSearchParams:l}))),d&&t.createElement(X.Route,{title:"Tech Health",path:"/tech-health"},t.createElement(_m,null)),t.createElement(X.Route,{title:"Campaign Library",path:"/campaigns"},t.createElement(Jd,null)),t.createElement(X.Route,{title:"Check Library",path:"/checks"},t.createElement(Os,null)),t.createElement(X.Route,{title:"Track Library",path:"/tracks"},t.createElement(lc,null)),!u&&p&&t.createElement(X.Route,{title:"Collector Library",path:"/collectors"},t.createElement(Cu,null)))}),t.createElement(Re,{element:t.createElement(sd,null),path:"/campaigns/:campaignId"}),t.createElement(Re,{element:t.createElement(eu,null),path:"/campaigns/:campaignId/edit"}),t.createElement(Re,{element:t.createElement(Um,null),path:"/tracks/:trackId"}),t.createElement(Re,{element:t.createElement(Xm,null),path:"/checks/:checkId"}),t.createElement(Re,{element:t.createElement(uu,null),path:"/collectors/:collectorId"}))))))))))};export{xu as RoutingPage};
|
|
2
|
+
//# sourceMappingURL=index-983aff99.esm.js.map
|
package/dist/index.esm.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{P as l,O as w,T as x,U as G,V as K,K as R}from"./esm/index-
|
|
1
|
+
import{P as l,O as w,T as x,U as G,V as K,K as R}from"./esm/index-9833aac9.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";import"./images/empty-state.svg";export{l as EntitySoundcheckCard,w as EntitySoundcheckContent,x as GroupSoundcheckContent,G as SoundcheckOverviewPage,K as SoundcheckRoutingPage,R as soundcheckPlugin};
|
|
2
2
|
//# sourceMappingURL=index.esm.js.map
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@spotify/backstage-plugin-soundcheck",
|
|
3
3
|
"description": "Ensure quality, reliability and alignment of software development with codified checks and guidance.",
|
|
4
|
-
"version": "0.11.
|
|
4
|
+
"version": "0.11.2",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
6
6
|
"homepage": "https://backstage.spotify.com",
|
|
7
7
|
"main": "dist/index.esm.js",
|