@spotify/backstage-plugin-soundcheck 0.12.0 → 0.12.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 CHANGED
@@ -1,5 +1,17 @@
1
1
  # @spotify/backstage-plugin-soundcheck
2
2
 
3
+ ## 0.12.2
4
+
5
+ ### Patch Changes
6
+
7
+ - Fixes the drag-and-drop of checks on the Campaign form.
8
+
9
+ ## 0.12.1
10
+
11
+ ### Patch Changes
12
+
13
+ - Adds a right-click context menu as an alternative to the drag and drop of Campaign checks.
14
+
3
15
  ## 0.12.0
4
16
 
5
17
  ### Minor Changes
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spotify/backstage-plugin-soundcheck",
3
- "version": "0.12.0",
3
+ "version": "0.12.2",
4
4
  "main": "../dist/alpha.esm.js",
5
5
  "module": "../dist/alpha.esm.js",
6
6
  "types": "../dist/alpha.d.ts"
package/dist/alpha.esm.js CHANGED
@@ -1,2 +1,2 @@
1
- import{createApiExtension as r,createApiFactory as i,discoveryApiRef as u,fetchApiRef as d,createPageExtension as c,createPlugin as p}from"@backstage/frontend-plugin-api";import{s,S as l,e as h,g as m,r as f,o as R}from"./esm/routes-93cd1496.esm.js";import{convertLegacyRouteRef as n,compatWrapper as t}from"@backstage/core-compat-api";import{createEntityContentExtension as a,createEntityCardExtension as g}from"@backstage/plugin-catalog-react/alpha";import o from"react";import"@backstage/core-plugin-api";import"graphql-request";import"graphql-tag";const k=r({factory:i({api:s,deps:{discoveryApi:u,fetchApi:d},factory:e=>new l(e)})}),v=a({defaultPath:"soundcheck",defaultTitle:"Soundcheck",name:"entity",routeRef:n(h),loader:()=>import("./esm/EntitySoundcheckContent-bc7bdbe2.esm.js").then(e=>t(o.createElement(e.EntitySoundcheckContent,null)))}),y=g({name:"card",loader:()=>import("./esm/index-f4bdaf5c.esm.js").then(e=>t(o.createElement(e.EntitySoundcheckCard,null)))}),E=a({defaultPath:"soundcheck",defaultTitle:"Soundcheck",name:"group",routeRef:n(m),attachTo:{id:"page:catalog/group-details",input:"contents"},loader:()=>import("./esm/index-5610fc82.esm.js").then(e=>t(o.createElement(e.FixedGroupOverviewPage,null)))}),P=c({name:"SoundcheckRoutingPage",namespace:"soundcheck",routeRef:n(f),defaultPath:"/soundcheck",loader:()=>import("./esm/index-b2acbf0c.esm.js").then(e=>t(o.createElement(e.RoutingPage,null)))}),S=c({name:"overview",namespace:"soundcheck",routeRef:n(R),defaultPath:"/soundcheck",loader:()=>import("./esm/index-5610fc82.esm.js").then(e=>t(o.createElement(e.OverviewPage,null)))});var A=p({id:"soundcheck",extensions:[P,S,k,v,y,E]});export{A as default};
1
+ import{createApiExtension as r,createApiFactory as i,discoveryApiRef as u,fetchApiRef as d,createPageExtension as c,createPlugin as p}from"@backstage/frontend-plugin-api";import{s,S as l,e as h,g as m,r as f,o as R}from"./esm/routes-93cd1496.esm.js";import{convertLegacyRouteRef as n,compatWrapper as t}from"@backstage/core-compat-api";import{createEntityContentExtension as a,createEntityCardExtension as g}from"@backstage/plugin-catalog-react/alpha";import o from"react";import"@backstage/core-plugin-api";import"graphql-request";import"graphql-tag";const k=r({factory:i({api:s,deps:{discoveryApi:u,fetchApi:d},factory:e=>new l(e)})}),v=a({defaultPath:"soundcheck",defaultTitle:"Soundcheck",name:"entity",routeRef:n(h),loader:()=>import("./esm/EntitySoundcheckContent-bc7bdbe2.esm.js").then(e=>t(o.createElement(e.EntitySoundcheckContent,null)))}),y=g({name:"card",loader:()=>import("./esm/index-f4bdaf5c.esm.js").then(e=>t(o.createElement(e.EntitySoundcheckCard,null)))}),E=a({defaultPath:"soundcheck",defaultTitle:"Soundcheck",name:"group",routeRef:n(m),attachTo:{id:"page:catalog/group-details",input:"contents"},loader:()=>import("./esm/index-5610fc82.esm.js").then(e=>t(o.createElement(e.FixedGroupOverviewPage,null)))}),P=c({name:"SoundcheckRoutingPage",namespace:"soundcheck",routeRef:n(f),defaultPath:"/soundcheck",loader:()=>import("./esm/index-99d39b7d.esm.js").then(e=>t(o.createElement(e.RoutingPage,null)))}),S=c({name:"overview",namespace:"soundcheck",routeRef:n(R),defaultPath:"/soundcheck",loader:()=>import("./esm/index-5610fc82.esm.js").then(e=>t(o.createElement(e.OverviewPage,null)))});var A=p({id:"soundcheck",extensions:[P,S,k,v,y,E]});export{A as default};
2
2
  //# sourceMappingURL=alpha.esm.js.map
@@ -1,2 +1,2 @@
1
- import{MarkdownContent as Lt,WarningPanel as da,TabbedLayout as Z,LinearGauge as Al,OverflowTooltip as Fl,Table as Ml,Link as ma,DismissableBanner as Bl,Breadcrumbs as Gl,Page as Wl,Header as Vl}from"@backstage/core-components";import{useApi as D,useRouteRef as Q,featureFlagsApiRef as ct,alertApiRef as Hl}from"@backstage/core-plugin-api";import{usePermission as _}from"@backstage/plugin-permission-react";import{Button as H,makeStyles as R,TextField as Y,InputAdornment as Rn,IconButton as dt,Grid as g,Typography as v,NativeSelect as ua,Menu as pa,MenuItem as ye,ListItemIcon as te,ListItemText as ae,withStyles as zl,Card as ha,CardHeader as _l,CardContent as Ul,Divider as He,CardActions as Kl,List as Ot,ListItem as be,Tooltip as ne,Badge as jl,Modal as ql,Box as T,FormControlLabel as ze,Checkbox as Ie,Paper as Te,Stepper as Ql,Step as Yl,StepLabel as Xl,StepContent as Zl,FormControl as It,InputLabel as ga,Select as va,FormHelperText as Pn,Chip as _e,Slide as Jl,Dialog as ei,AppBar as ti,Toolbar as ai,RadioGroup as ni,Radio as Nn,useTheme as Ce,Tabs as fa,Tab as De,ButtonGroup as Ln,Switch as ri,alpha as li,Icon as ii,TablePagination as On,Table as oi,TableHead as si,TableRow as In,TableCell as Dn,TableBody as ci,Popper as di,Fade as mi,ClickAwayListener as ui,lighten as $n,darken as An}from"@material-ui/core";import{SpotifyLicenseBanner as pi}from"@spotify/backstage-plugin-core";import{soundcheckCampaignCreatePermission as Fn,soundcheckCampaignUpdatePermission as hi,soundcheckCampaignDeletePermission as gi,asArray as Ea,parseFactRef as ya,FrequencySchema as vi,stringifyFactRef as fi,soundcheckCheckUpdatePermission as Mn,soundcheckCheckReadPermission as Ei,soundcheckCheckDeletePermission as yi,soundcheckCheckCreatePermission as bi,soundcheckCollectorUpdatePermission as Bn,soundcheckTrackUpdatePermission as Gn,soundcheckTrackReadPermission as Wn,soundcheckTrackDeletePermission as Ci,soundcheckTrackCreatePermission as ki,soundcheckCollectorReadPermission as wi,soundcheckTechHealthReadPermission as xi}from"@spotify/backstage-plugin-soundcheck-common";import t,{useCallback as U,createContext as Dt,useState as S,useContext as $t,useRef as ba,useEffect as G,useMemo as K,memo as Ti}from"react";import{useNavigate as pe,useLocation as At,useSearchParams as Ca,useParams as Ue,Routes as Vn,Route as Se}from"react-router-dom";import Ft from"react-use/lib/useLocalStorage";import{F as $e,a as Hn,P as ka,b as mt,c as wa,L as ut,R as xa,C as Ta,d as zn,e as Si,f as Ri,g as Pi,h as Ni,i as Li,j as Oi,k as Ii,l as _n,m as Di,n as $i,o as Ai,p as Fi,q as ke,r as Mi,s as Bi,t as Gi,v as Wi,S as Vi,w as Hi,u as zi,U as _i,G as Ui,O as Ki}from"./OverviewPageContent-d5467d2c.esm.js";import{parseEntityRef as j,stringifyEntityRef as Sa,RELATION_PART_OF as ji,RELATION_OWNED_BY as qi}from"@backstage/catalog-model";import{useQuery as V,useQueryClient as oe,useMutation as se}from"@tanstack/react-query";import{s as A,h as Un,i as Qi,t as Yi,R as Kn,j as jn,k as qn,l as Qn,m as Yn,n as Xi,p as Zi,q as Xn,B as Zn,T as Ae,D as Jn,u as Ji,r as er}from"./routes-93cd1496.esm.js";import{EntityRefLink as Fe,catalogApiRef as eo,entityRouteRef as Ra,humanizeEntityRef as Mt,EntityRefLinks as tr,getEntityRelations as ar}from"@backstage/plugin-catalog-react";import{Q as O,u as ce,M as de,E as Ke,d as je,L as nr,a as to,e as ao,S as no,B as ro}from"./EmptyState-6a402254.esm.js";import Pa from"react-use/lib/useDebounce";import Na from"../images/no-results.svg";import rr from"@material-ui/icons/Close";import lo from"@material-ui/icons/Search";import{Skeleton as Bt,Autocomplete as La,ToggleButtonGroup as io,ToggleButton as lr}from"@material-ui/lab";import{v4 as Gt}from"uuid";import{createStyles as oo,makeStyles as B}from"@material-ui/core/styles";import so from"@material-ui/icons/Archive";import ir from"@material-ui/icons/Delete";import co from"@material-ui/icons/MoreVert";import mo from"@material-ui/icons/OpenInBrowser";import Wt from"@material-ui/icons/Group";import{useForm as Vt,Controller as W,useFieldArray as Ht,useWatch as Oa,useFormContext as me,FormProvider as or}from"react-hook-form";import sr from"@material-ui/icons/CheckBox";import cr from"@material-ui/icons/CheckBoxOutlineBlank";import uo from"@material-ui/icons/ExpandMore";import{zodResolver as Ia}from"@hookform/resolvers/zod";import{z as w}from"zod";import qe,{uniqBy as Da,findIndex as dr,countBy as po,capitalize as ho,isObject as go}from"lodash";import mr from"@date-io/luxon";import{KeyboardDatePicker as ur}from"@material-ui/pickers/DatePicker";import{MuiPickersUtilsProvider as pr}from"@material-ui/pickers/MuiPickersUtilsProvider";import{DatePickerToolbar as vo}from"@material-ui/pickers/DatePicker/DatePickerToolbar";import{DateTime as Qe}from"luxon";import{useDrop as fo,useDrag as Eo,DndProvider as $a}from"react-dnd";import{HTML5Backend as Aa}from"react-dnd-html5-backend";import hr from"@material-ui/icons/DragIndicator";import yo from"@material-ui/icons/Visibility";import gr from"@material-ui/icons/Add";import vr from"@material-ui/icons/Remove";import{VariableSizeGrid as bo}from"react-window";import Co from"cron-validate";import ko from"cronstrue";import fr from"@uiw/react-md-editor";import wo from"rehype-sanitize";import Er from"@material-ui/icons/ArrowDropDown";import xo from"../images/catalog.svg";import To from"../images/git.svg";import So from"../images/octocat.svg";import Ro from"../images/pagerduty.svg";import Po from"../images/settings.svg";import No from"../images/soundcheck.png";import Lo from"../images/tech_insights.png";import{CircularProgressbar as yr,buildStyles as br}from"react-circular-progressbar";import{ResponsiveContainer as Fa,LineChart as Ma,CartesianGrid as pt,XAxis as Ye,YAxis as Xe,Line as Ba,Tooltip as Cr,Legend as kr,BarChart as wr,Bar as xr,Cell as Oo,AreaChart as Io,Area as Do}from"recharts";import{f as zt,g as ee,a as Ze}from"./chartUtils-080232d7.esm.js";import $o from"@material-ui/icons/ArrowDropUp";import Ao from"@material-ui/icons/HelpOutline";import{createFilterOptions as Tr}from"@material-ui/lab/Autocomplete";import{motion as Fo}from"framer-motion";import Mo from"@material-ui/icons/GetApp";import{CSVLink as Sr}from"react-csv";import"react-circular-progressbar/dist/styles.css";import Bo from"@material-ui/icons/TrendingDown";import Go from"@material-ui/icons/TrendingFlat";import Wo from"@material-ui/icons/TrendingUp";import Vo from"@material-ui/icons/Apps";import Ho from"@material-ui/icons/GridOn";import zo from"@material-ui/icons/KeyboardArrowDown";import _o from"@material-ui/icons/Reorder";import Rr from"@material-ui/lab/Skeleton";import Uo from"@material-ui/icons/DoneAllRounded";import Ko from"@material-ui/icons/Menu";import jo from"@material-ui/icons/OpenInNew";import"react-use/lib/useAsync";import"./RefetchingIndicator-b4961e02.esm.js";import"react-use/lib/useUnmount";import"graphql-request";import"graphql-tag";import"@backstage/core-compat-api";import"@material-ui/icons/Check";import"@material-ui/icons/RemoveCircleOutline";import"@material-ui/icons/ReportProblemOutlined";import"classnames";import"../images/empty-state.svg";function _t(e){const a=D(A);return V([O.GetChecks,JSON.stringify(e)],async()=>a.getChecks(e),{staleTime:5*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})}const qo="Error Creating Campaign",Pr="Failed to create campaign.";function Qo(){const e=D(A),a=oe(),{showAlert:n}=ce(),r=async l=>{const i=await e.createCampaign(l);if(!i)throw new Error(Pr);return i};return se([de.CreateCampaign],r,{onSuccess:()=>{a.invalidateQueries({queryKey:[O.GetCampaigns]})},onError:l=>{let i=Pr;l instanceof Error&&(i=l.message),n({severity:"error",title:qo,message:i})}})}const Yo="Error Updating Campaign",Nr="Failed to update campaign.";function Xo(){const e=D(A),a=oe(),{showAlert:n}=ce(),r=async l=>{const i=await e.updateCampaign(l);if(!i)throw new Error(Nr);return i};return se([de.UpdateCampaign],r,{onSuccess:()=>Promise.all([a.invalidateQueries({queryKey:[O.GetCampaigns]}),a.invalidateQueries({queryKey:[O.GetIndividualEntityPassRateSnapshots]})]),onError:l=>{let i=Nr;l instanceof Error&&(i=l.message),n({severity:"error",title:Yo,message:i})}})}const Zo="Error Archiving Campaign";function Jo(){const e=D(A),a=oe(),{showAlert:n}=ce(),r=async l=>{const i=await e.archiveCampaign(l);if(!i)throw new Error(`Failed to archive campaign ${l}`);return i};return se([de.ArchiveCampaign],r,{onSuccess:()=>a.invalidateQueries({queryKey:[O.GetCampaigns]}),onError:(l,i)=>{let o=`Failed to archive campaign ${i}`;l instanceof Error&&(o=l.message),n({severity:"error",title:Zo,message:o})}})}const es="Error Deleting Campaign";function ts(){const e=D(A),a=oe(),{showAlert:n}=ce(),r=async l=>{const i=await e.deleteCampaign(l);if(!i)throw new Error(`Failed to delete campaign ${l}`);return i};return se([de.DeleteCampaign],r,{onSuccess:()=>a.invalidateQueries({queryKey:[O.GetCampaigns]}),onError:(l,i)=>{let o=`Failed to delete campaign ${i}`;l instanceof Error&&(o=l.message),n({severity:"error",title:es,message:o})}})}function ht(e){const a=D(A);return V([O.GetAllPrograms,JSON.stringify(e)],async()=>a.getTracks(e),{staleTime:5*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})}const as="Error Creating Track";function Lr(){const e=D(A),a=oe(),{showAlert:n}=ce(),r=async l=>{const i=await e.createProgram(l);if(!i)throw new Error("Failed to create track.");return i};return se([de.CreateProgram],r,{onSuccess:async()=>{const l=[O.GetAllPrograms,O.GetOverallTrackPassRateSnapshots,O.GetOverallTrackPassRateTrends,O.GetIndividualTrackPassRateSnapshots,O.GetIndividualTrackPassRateTrends];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:as,message:i})}})}const ns=e=>{const a=D(A);return V([O.GetOverallCheckPassRateSnapshots,{...e,numberOfDays:0}],async()=>a.getOverallCheckPassRates({...e,numberOfDays:0}),{staleTime:5*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})},Or=e=>{const a=D(A);return V([O.GetOverallCheckPassRateTrends,e],async()=>a.getOverallCheckPassRates(e),{staleTime:12*60*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})},Ir=e=>{const a=D(A);return V([O.GetIndividualCheckPassRateSnapshots,{...e,numberOfDays:0}],async()=>a.getIndividualCheckPassRates({...e,numberOfDays:0}),{staleTime:5*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})},rs=e=>{const a=D(A);return V([O.GetIndividualCheckPassRateTrends,e],async()=>a.getIndividualCheckPassRates(e),{staleTime:12*60*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})},ls=e=>{const a=D(A);return V([O.GetOverallTrackPassRateSnapshots,{...e,numberOfDays:0}],async()=>a.getOverallTrackPassRate({...e,numberOfDays:0}),{staleTime:5*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})},Ga=e=>{const a=D(A);return V([O.GetOverallTrackPassRateTrends,e],async()=>a.getOverallTrackPassRate(e),{staleTime:12*60*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})},Dr=e=>{const a=D(A);return V([O.GetIndividualTrackPassRateSnapshots,{...e,numberOfDays:0}],async()=>a.getIndividualTrackPassRate({...e,numberOfDays:0}),{staleTime:5*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})},Wa=e=>{const a=D(A);return V([O.GetIndividualTrackPassRateTrends,e],async()=>a.getIndividualTrackPassRate(e),{staleTime:12*60*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})},is=e=>{const a=D(A);return V([O.GetOverallEntityPassRateTrends,e],async()=>a.getOverallEntityPassRates(e),{staleTime:12*60*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})},os=e=>{const a=D(A);return V([O.GetIndividualEntityPassRateTrends,e],async()=>a.getIndividualEntityPassRates(e),{staleTime:12*60*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})},ss=e=>{const a=D(A);return V([O.GetOverallGroupPassRateTrends,e],async()=>a.getOverallGroupPassRates(e),{staleTime:12*60*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})},cs=e=>{const a=D(A);return V([O.GetIndividualGroupPassRateSnapshots,{...e,numberOfDays:0}],async()=>a.getIndividualGroupPassRates({...e,numberOfDays:0}),{staleTime:5*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})},ds=e=>{const a=D(A);return V([O.GetIndividualGroupPassRateTrends,e],async()=>a.getIndividualGroupPassRates(e),{staleTime:12*60*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})},Je=e=>{const a=Q(e),n=pe(),{key:r}=At();return[U(()=>{n(r?-1:a())},[n,a,r]),U(()=>n(a()),[n,a])]},Va=()=>Dt({selectedItem:null,setSelectedItem:()=>{},isLoading:!1,setIsLoading:()=>{},showAddModal:!1,setShowAddModal:()=>{},isReadOnly:!1,showReadOnlyModal:()=>{},hideModal:()=>{}}),Ha=e=>({children:a})=>{const[n,r]=S(null),[l,i]=S(!1),[o,s]=S(!1),[c,d]=S(!1),m=p=>{i(!0),r(p)},u=()=>{r(null),i(!1),d(!1)};return t.createElement(e.Provider,{value:{selectedItem:n,setSelectedItem:r,isLoading:o,setIsLoading:s,showAddModal:c,setShowAddModal:d,isReadOnly:l,showReadOnlyModal:m,hideModal:u}},a)},za=e=>$t(e),$r=Va(),Ar=Ha($r),Re=()=>za($r),Fr=Va(),Mr=Ha(Fr),he=()=>za(Fr),Br=Va(),ms=Ha(Br),gt=()=>za(Br),_a=e=>{const a=e==null?void 0:e.map(n=>n==null?void 0:n.ownerEntityRef).filter(n=>n!=="");return[...new Set(a)]},us={0:"detailsStep",1:"tracksStep",2:"filtersStep",3:"milestonesStep"};var Ut=(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))(Ut||{}),Ua=(e=>(e.title="No campaigns found",e.description="No campaigns matched your search. Consider changing search term and filters.",e))(Ua||{});const Ka=()=>{const{setShowAddModal:e}=gt(),{loading:a,allowed:n}=_({permission:Fn});return t.createElement(Ke,{title:Ut.title,description:Ut.description,imgSrc:Na,action:!a&&t.createElement(H,{disabled:!n,variant:"contained",color:"primary",onClick:()=>e(!0)},Ut.callToAction)})};var ja=(e=>(e.all="All",e.active="Active",e.archived="Archived",e))(ja||{});const ps=R(()=>({searchIcon:{opacity:".5"},clearButton:{height:"36px",width:"36px"}})),qa=({searchTerm:e,setSearchTerm:a,showClear:n=!0,placeholder:r="Search...",disabled:l,...i})=>{const o=ps(),s=ba(null);G(()=>{!l&&s.current&&s.current.focus()},[l]);const c=m=>{a(m.target.value)},d=()=>{a("")};return t.createElement(Y,{...i,disabled:l,inputRef:s,fullWidth:!0,placeholder:r,value:e,onChange:c,InputProps:{startAdornment:t.createElement(Rn,{position:"start"},t.createElement(lo,{className:o.searchIcon,"data-testid":"search-icon"})),endAdornment:n&&e?t.createElement(Rn,{position:"end"},t.createElement(dt,{edge:"end",onClick:d,className:o.clearButton},t.createElement(rr,null))):null}})},hs=R(()=>({searchbar:{maxWidth:"350px"},filters:{display:"flex",alignItems:"center"},dropdownFilters:{margin:"0 15px",display:"flex",alignItems:"center"},selectHolder:{marginLeft:"10px"}})),Qa=({searchPlaceholder:e,isLoading:a,searchTerm:n,setSearchTerm:r,filterAlpha:l,handleAlphabeticalFilterChange:i,filterOwner:o,handleOwnerFilterChange:s,filterStatus:c,handleStatusFilterChange:d,owners:m})=>{const u=hs();return t.createElement(g,{item:!0,xs:9,className:u.filters},t.createElement(qa,{searchTerm:n,disabled:a,setSearchTerm:r,placeholder:e||"Search",variant:"outlined",size:"small",className:u.searchbar}),t.createElement("div",{className:u.dropdownFilters},t.createElement(v,null,"Sort by: "),t.createElement(ua,{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(v,null,"Filter by owner: "),t.createElement(ua,{className:u.selectHolder,value:o,onChange:s},t.createElement("option",{key:"all",value:"all"},"All"),m==null?void 0:m.map((p,h)=>t.createElement("option",{key:p+h,value:p},p)))),c&&d&&t.createElement("div",{className:u.dropdownFilters},t.createElement(v,null,"Filter by status: "),t.createElement(ua,{className:u.selectHolder,value:c,onChange:d},Object.keys(ja).map(p=>t.createElement(t.Fragment,{key:p},t.createElement("option",{value:p},ja[p]))))))},gs=()=>t.createElement(g,{item:!0,container:!0,"data-testid":"campaigns-skeleton"},Array.from({length:6},(e,a)=>t.createElement(g,{key:`loading-${a}`,xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem"},t.createElement(Bt,{variant:"rect",height:385})))),vs=({handleDelete:e,handleArchive:a,handleView:n})=>{const[r,l]=S(null),i=!!r,o=c=>{c.stopPropagation(),l(c.currentTarget)},s=c=>{c.stopPropagation(),l(null)};return t.createElement(t.Fragment,null,t.createElement(dt,{"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(co,null)),t.createElement(pa,{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(ye,{"data-testid":"summary-card-action-view",onClick:c=>{n(c),s(c)}},t.createElement(te,null,t.createElement(mo,{fontSize:"small"})),t.createElement(ae,null,"View")),a&&t.createElement(ye,{"data-testid":"summary-card-action-archive",onClick:c=>{a(c),s(c)}},t.createElement(te,null,t.createElement(so,{fontSize:"small"})),t.createElement(ae,null,"Archive")),e&&t.createElement(ye,{"data-testid":"summary-card-action-delete",onClick:c=>{e(c),s(c)}},t.createElement(te,null,t.createElement(ir,{fontSize:"small"})),t.createElement(ae,null,"Delete"))))},fs=zl(e=>oo({root:{width:"100%",height:"100%",minHeight:"385px",display:"flex",flexDirection:"column",padding:e.spacing(2),position:"relative",justifyContent:"space-between"}}))(ha),Es=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)}})),vt=({title:e,description:a,viewLabel:n="View",editLabel:r="Edit",children:l,handleDelete:i,handleArchive:o,handleEdit:s,handleView:c})=>{const d=Es();return t.createElement(fs,{className:d.card,"data-testid":e},t.createElement(_l,{title:e,titleTypographyProps:{className:d.summaryName},subheader:t.createElement(Lt,{className:d.summaryDescription,content:a!=null?a:""}),action:(i||o)&&t.createElement(vs,{handleView:c,handleDelete:i,handleArchive:o})}),t.createElement(Ul,null,l),t.createElement("div",null,t.createElement(He,null),t.createElement(Kl,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))))},ys=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"}}})),bs=({campaign:e})=>{const a=ys();return t.createElement(Ot,{dense:!0,disablePadding:!0,className:a.cardSection},t.createElement(v,{variant:"overline",color:"textSecondary"},"Campaign Details"),t.createElement("div",{className:a.campaignDetails},e.ownerEntityRef&&t.createElement(be,{disableGutters:!0,className:a.listItem},t.createElement(ne,{title:"Owner"},t.createElement(te,null,t.createElement(Wt,{color:"action",fontSize:"small"}))),t.createElement(ae,{className:a.listItemText,primary:t.createElement(Fe,{entityRef:e.ownerEntityRef,hideIcon:!0})})),e.archived&&t.createElement(be,{disableGutters:!0,className:a.listItem},t.createElement(jl,{badgeContent:"Archived",color:"primary",className:a.archivedBadge}))))},Cs=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)}})),Gr=Dt({showArchiveModal:()=>Promise.resolve({confirmed:!1,saveTrack:!1})}),ks=e=>{const a=Cs(),[n,r]=S(!1),[l,i]=S(null),[o,s]=S(!1),c=ba(),d=U(({title:h,message:y,error:k})=>(i({title:h,message:y,error:k}),s(!1),r(!0),new Promise(f=>{c.current=f})),[]),m=U(()=>{var h;(h=c.current)==null||h.call(c,{confirmed:!0,saveTrack:o}),r(!1)},[o]),u=U(()=>{var h;(h=c.current)==null||h.call(c,{confirmed:!1,saveTrack:o}),r(!1)},[o]),p=h=>{s(h.target.checked)};return t.createElement(Gr.Provider,{value:{showArchiveModal:d}},e.children,l&&t.createElement(ql,{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(v,{id:"confirmation-modal-title",variant:"h6"},l.title),t.createElement(v,{id:"confirmation-modal-description",variant:"body1"},l.message)),t.createElement(T,{className:a.checkbox},t.createElement(ze,{control:t.createElement(Ie,{"data-testid":"save-track-checkbox",checked:o,onChange:p}),label:"Create Track"}),t.createElement(v,{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:m,variant:"contained","aria-label":"confirm"},l.error?"Ok":"Confirm")))))},ws=()=>$t(Gr),xs=({campaign:e})=>{const{id:a,name:n,description:r,ownerEntityRef:l,archived:i}=e,o=Q(Un),s=Q(Qi),c=pe(),d=e.archived,{showModal:m}=je(),{showArchiveModal:u}=ws(),{mutate:p}=Lr(),{mutate:h}=ts(),{mutate:y}=Jo(),{loading:k,allowed:f}=_({permission:hi,resourceRef:e.id}),{loading:b,allowed:E}=_({permission:gi,resourceRef:e.id}),C=U(async()=>{await m({title:"Delete Campaign",message:`Are you sure you want to delete campaign ${e.name}?`})&&h(e.id)},[m,h,e.id,e.name]),x=()=>{var L,I;const{track:P}=e,X={id:Gt(),ownerEntityRef:P.ownerEntityRef,description:(L=P.description)!=null?L:"",name:P.name,documentationURL:P.documentationURL,type:"standard",levels:(I=P.levels)!=null?I:[],filter:P.filter};p(X)},N=async()=>{const{saveTrack:L,confirmed:I}=await u({title:"Archive Campaign",message:`Are you sure you want to archive campaign ${e.name}?`});I&&(L&&x(),y(e.id))};return t.createElement(vt,{title:n!=null?n:a,description:r,children:(l||i)&&t.createElement(bs,{campaign:e}),handleView:()=>c(o({campaignId:e.id})),handleEdit:!k&&f&&!d?()=>c(s({campaignId:e.id})):void 0,handleDelete:!b&&E?C:void 0,handleArchive:!b&&E&&!d?N:void 0})},Ts=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)}})),Ss=({campaignsPerPage:e,currentCursor:a})=>{const n=Ts(),[r,l]=S(a),[i,o]=S(""),[s,c]=S(""),[d,m]=S($e.Alpha),[u,p]=S($e.Owner),[h,y]=S($e.Status),[k,f]=S([]);Pa(()=>{c(i)},500,[i]);const{setShowAddModal:b}=gt(),{loading:E,allowed:C}=_({permission:Fn}),{data:x,isLoading:N}=Hn({ids:void 0,first:e,after:r,orderAlphabetical:d,searchByOwner:u,searchByName:s,searchByStatus:h}),[L,I]=S(x),P=L==null?void 0:L.edges.map(M=>M.node),[X,le]=S([]),ue=D(ct),Ee=!ue.getRegisteredFlags().find(M=>M.name==="soundcheck-enable-campaigns")||ue.isActive("soundcheck-enable-campaigns"),Oe=!C||!Ee,Ve=M=>{m(M.target.value)},ie=M=>{p(M.target.value)},st=M=>{y(M.target.value)};if(G(()=>{x&&I(()=>{var M,xe;return{totalCount:x.totalCount,edges:x.edges,pageInfo:{startCursor:x.pageInfo.startCursor,endCursor:x.pageInfo.endCursor,hasNextPage:(M=x==null?void 0:x.pageInfo.hasNextPage)!=null?M:!1,hasPreviousPage:(xe=x==null?void 0:x.pageInfo.hasPreviousPage)!=null?xe:!1}}})},[x]),G(()=>{const M=L==null?void 0:L.edges.map($l=>$l.node),xe=_a(M!=null?M:[]);f(xe)},[N,L]),!N&&!P)return t.createElement(Ka,null);let $;return N?$=t.createElement(gs,null):P!=null&&P.length?$=P.map(M=>t.createElement(g,{key:M.id,xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem","aria-label":"result"},t.createElement(ks,null,t.createElement(xs,{campaign:M})))):$=t.createElement(g,{xs:12,item:!0,role:"listitem","aria-label":"result"},t.createElement(Ke,{title:Ua.title,description:Ua.description})),t.createElement(g,{container:!0,direction:"row",className:n.container},t.createElement(g,{container:!0,className:n.header},t.createElement(Qa,{searchPlaceholder:"Search available campaigns",isLoading:N,searchTerm:i,setSearchTerm:o,filterAlpha:d,handleAlphabeticalFilterChange:Ve,filterOwner:u,handleOwnerFilterChange:ie,filterStatus:h,handleStatusFilterChange:st,owners:k}),t.createElement(g,{item:!0,xs:3},t.createElement("div",{className:n.headerButtons},!E&&t.createElement(H,{disabled:Oe,variant:"contained",color:"primary",onClick:()=>b(!0)},"Create campaign")))),t.createElement(g,{container:!0,spacing:4,role:"list","aria-label":"campaigns"},$),((L==null?void 0:L.pageInfo.hasNextPage)||(X==null?void 0:X.length)>0)&&t.createElement("div",{className:n.pagination},t.createElement(ka,{response:L,listingsPerPage:e,cursor:r,setCursor:l,prevCursors:X,setPrevCursors:le,labelPerPageDropdown:"Campaigns Per Page:",urlRoute:"campaigns?campaignsPerPage="})))},Ya=B(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"}})),ft=()=>({selectedKinds:[],selectedLifecycles:[],selectedOwners:[],selectedSystems:[],selectedTags:[],selectedTypes:[]}),Rs=[{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"}],et={selectedKinds:"kind",selectedTypes:"spec.type",selectedLifecycles:"spec.lifecycle",selectedOwners:"spec.owner",selectedSystems:"spec.system",selectedTags:"metadata.tags"},Wr=e=>!e||Object.values(e).every(a=>a.length===0)?void 0:{catalog:Object.entries(e).reduce((a,[n,r])=>{const l=et[n];return r.length>0&&(a[l]=r),a},{})},Xa=e=>Object.keys(et).reduce((a,n)=>{var r,l;return a[n]=Ea((l=(r=e==null?void 0:e.catalog)==null?void 0:r[et[n]])!=null?l:[]),a},{}),Kt=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[et[n]]=r);return[a]},Za=e=>{if(e&&Array.isArray(e)&&e.length){const a=e[0];return Object.keys(et).reduce((n,r)=>{var l;return n[r]=Ea((l=a==null?void 0:a[et[r]])!=null?l:[]),n},{})}return ft()},Et=(e,a)=>{const n=D(Hl),r=D(eo);return V([O.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"})}})},Ps=R({container:{padding:0},formControl:{flexGrow:1}}),Ns=({facet:e,label:a,values:n,onChange:r,disabled:l,filter:i})=>{var o;const s=Ps(),[c,d]=S(!1),{data:m,isLoading:u,error:p}=Et(e,i),h=K(()=>m==null?void 0:m.map(C=>C.toLocaleLowerCase("en-US")),[m]),y=(o=n==null?void 0:n.map(C=>C.toLocaleLowerCase("en-US")))!=null?o:[],k=U((C,x)=>{r(x),h&&h.every(N=>x.includes(N))&&d(!1)},[h,r,d]),f=U(()=>{r(n!=null&&n.length?n:void 0)},[n,r]);if(!m||!h||p)return t.createElement(v,{color:"error"},"Failed to load facet: ",e);const b=l||u||!(n!=null&&n.length)&&(!(m!=null&&m.length)||!(h!=null&&h.length)),E=Array.from(new Set([...h,...y]));return t.createElement(T,{pb:1,pt:1,className:s.container},t.createElement(v,{variant:"subtitle2"},a),t.createElement(La,{open:c,onOpen:()=>d(!0),onClose:()=>d(!1),className:s.formControl,multiple:!0,limitTags:4,disableCloseOnSelect:!0,"aria-label":a,options:E,value:y,getOptionLabel:C=>{var x;return(x=m[h.indexOf(C)])!=null?x:C},onChange:k,onBlur:f,disabled:b,renderOption:(C,{selected:x})=>{var N;return t.createElement(ze,{onClick:L=>L.preventDefault(),control:t.createElement(Ie,{icon:t.createElement(cr,{fontSize:"small"}),checkedIcon:t.createElement(sr,{fontSize:"small"}),checked:x}),label:(N=m[h.indexOf(C)])!=null?N:C})},size:"small",popupIcon:t.createElement(uo,{"data-testid":"selected-facets-expand"}),renderInput:C=>t.createElement(Y,{...C,variant:"outlined"})}))},Ls=R(()=>({title:{fontWeight:700},filterContainer:{display:"flex",flexWrap:"wrap"}})),Ja=({value:e,onChange:a,disabled:n})=>{const r=Ls(),l=i=>o=>{a({...e,[i]:o!=null?o:[]})};return t.createElement(g,{container:!0,className:r.filterContainer,spacing:2},Rs.map(i=>t.createElement(g,{item:!0,xs:12,sm:6,md:4,key:i.key},t.createElement(Ns,{facet:i.facet,label:i.label,values:e==null?void 0:e[i.key],onChange:l(i.key),disabled:n,filter:i.filter}))))},Os=(e,a)=>{const[n,r]=S(0),[l,i]=S(e),o=async m=>{const u=a[n];if(await m(u)){const p=n+1;r(p),l.indexOf(p)===-1&&i(h=>[...h,p])}},s=()=>{r(m=>m-1)},c=m=>m<n,d=m=>m!==n&&l.includes(m);return{activeStep:n,handleNext:o,handleBack:s,isPreviousStep:c,isVisitedStep:d,onStepClick:m=>{(c(m)||d(m))&&r(m)}}},Is=B(e=>({box:{zIndex:9,position:"fixed",bottom:"0",width:"100%"},footer:{padding:e.spacing(2)}})),Vr=({onCancel:e,saveButtonText:a,isLoading:n,onSave:r,disableSave:l})=>{const i=Is();return t.createElement(T,{className:i.box},t.createElement(Te,{elevation:3,className:i.footer},t.createElement(g,{container:!0,item:!0,spacing:2,justifyContent:"space-between"},t.createElement(g,{item:!0},t.createElement(H,{variant:"contained",color:"primary",onClick:e},"Cancel")),t.createElement(g,{item:!0},r&&t.createElement(H,{variant:"contained",color:"primary",disabled:n||l,onClick:r?()=>r():void 0},a)))))},en=({onClose:e,handleSubmit:a,trigger:n,onSubmit:r,initialVisited:l,stepNameMap:i,steps:o,isLoading:s,isReadOnly:c,saveButtonText:d,detailsComponent:m})=>{const u=Ya(),{activeStep:p,handleNext:h,handleBack:y,isPreviousStep:k,isVisitedStep:f,onStepClick:b}=Os(l,i);return t.createElement(t.Fragment,null,t.createElement(g,{container:!0,spacing:2,className:u.root},t.createElement(g,{item:!0,style:{width:m?"80%":"100%"}},t.createElement(ha,{className:u.card},t.createElement(Ql,{activeStep:p,orientation:"vertical"},o.map((E,C)=>t.createElement(Yl,{key:E.label},t.createElement(Xl,{className:k(C)||f(C)?u.stepLabel:void 0,onClick:()=>b(C)},E.label),t.createElement(Zl,null,E.content(),t.createElement(T,{className:u.buttonChoices,sx:{mb:2}},t.createElement("div",null,C!==0&&t.createElement(H,{onClick:y},"Back"),C!==o.length-1&&t.createElement(H,{variant:"contained",color:"primary",onClick:async()=>{await h(n)}},"Next"))))))))),m&&t.createElement(g,{item:!0,style:{width:"20%"}},m)),t.createElement(g,{container:!0,spacing:4,className:u.root},t.createElement(Vr,{onCancel:e,saveButtonText:d,isLoading:s,onSave:c?void 0:a(r)})))},Ds=R(e=>({container:{display:"flex",gap:e.spacing(1),flexDirection:"column"},link:{fontWeight:"bold",padding:0},list:{marginTop:0},listItem:{marginBottom:e.spacing(1)}})),$s=()=>{const e=Ds(),a=Q(Yi),n=pe();return t.createElement("div",{className:e.container},t.createElement(v,{variant:"h6"},"Creating campaigns"),t.createElement(v,{variant:"body1"},"A Campaign is a focused short term initiative."),t.createElement(v,{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(v,{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(v,{variant:"body1"},"When your organization wants to upgrade Spring libraries to use a specific version of Spring Boot.")),t.createElement("li",null,t.createElement(v,{variant:"body1"},"When your organization wants to remove unneeded data endpoints to save costs.")))))},tn=()=>{const{data:e,isLoading:a}=_t({}),n=K(()=>e==null?void 0:e.edges.map(i=>i.node),[e==null?void 0:e.edges]),r=K(()=>{var i;return(i=n==null?void 0:n.filter(o=>!!o).map(o=>{var s,c,d;return{id:(s=o.id)!=null?s:"",label:(c=o.name)!=null?c:o.id,description:(d=o.description)!=null?d:""}}))!=null?i:[]},[n]),l=K(()=>n==null?void 0:n.reduce((i,o)=>{var s,c,d;return i[o.id]={id:o.id,name:(s=o.name)!=null?s:o.id,description:(c=o.description)!=null?c:"",filter:(d=o.filter)!=null?d:void 0},i},{}),[n]);return{checkChips:r,checksMap:l,checksLoading:a}},Hr="At least one check is required",J="This field is required",zr=0,_r=100,an=100,nn=100,As="Ending date must come after the Starting Date",Ur=(e,a)=>(e===null&&a.addIssue({code:w.ZodIssueCode.custom,message:J}),e),Fs=({campaignStartDate:e,campaignEndDate:a})=>e&&a?new Date(e)<new Date(a):!0,Ms=w.strictObject({campaignName:w.string().min(1,J).max(an,`Input must be less than ${an} characters`),campaignDescription:w.string().min(1,J),campaignOwner:w.string().min(1,J),supportChannel:w.string().optional(),campaignStartDate:w.coerce.date().nullable().transform(Ur),campaignEndDate:w.coerce.date().nullable().transform(Ur)}).refine(Fs,{message:As,path:["campaignEndDate"]}),Bs=w.strictObject({selectedKinds:w.string().array(),selectedTypes:w.string().array(),selectedLifecycles:w.string().array(),selectedOwners:w.string().array(),selectedSystems:w.string().array(),selectedTags:w.string().array()}),Gs=w.strictObject({id:w.string(),label:w.string()}),Ws=w.strictObject({checks:w.array(Gs).min(1,Hr)}),Vs=w.strictObject({id:w.number().optional(),milestoneName:w.string().min(1,J).max(nn,`Input must be less than ${nn} characters`),milestoneDescription:w.string().min(1,J),milestonePassrate:w.coerce.number().min(zr,`Minimum pass rate is ${zr}%`).max(_r,`Maximum pass rate is ${_r}%`)}),Hs=w.strictObject({milestones:w.array(Vs).min(1,J)}),zs=w.strictObject({detailsStep:Ms,tracksStep:Ws,filtersStep:Bs,milestonesStep:Hs}),_s={detailsStep:{campaignName:"",campaignDescription:"",campaignOwner:"",supportChannel:"",campaignStartDate:null,campaignEndDate:null},tracksStep:{checks:[]},filtersStep:{selectedKinds:[],selectedTypes:[],selectedLifecycles:[],selectedOwners:[],selectedSystems:[],selectedTags:[]},milestonesStep:{milestones:[{milestoneName:"",milestoneDescription:"",milestonePassrate:"0"}]}},Me={details:{name:{name:"Campaign name",description:"Give your campaign a meaningful name so it's easy to remember it",helperText:`Max ${an} 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",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 (Optional)",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 ${nn} characters`,placeholder:"Example: 80% passrate"},description:{name:"Milestone description",description:"Give your milestone a meaningful description so others can understand how to use it",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.'}},yt=100,Us=w.strictObject({trackName:w.string().min(1,J).max(yt,`Input must be less than ${yt} characters`),trackDescription:w.string().min(1,J),ownerEntityRef:w.string().min(1,J),documentationURL:w.string().optional()}),Ks=w.strictObject({levelName:w.string().min(1,J).max(yt,`Input must be less than ${yt} characters`),levelDescription:w.string().optional(),levelChips:w.array(w.any()).min(1)}),js=w.strictObject({filters:w.strictObject({selectedKinds:w.string().array(),selectedTypes:w.string().array(),selectedLifecycles:w.string().array(),selectedOwners:w.string().array(),selectedSystems:w.string().array(),selectedTags:w.string().array()}).optional()}),qs=w.strictObject({levels:w.array(Ks).min(1,Hr)}),Qs=w.strictObject({detailsStep:Us,levelsStep:qs,filtersStep:js}),Ys={detailsStep:{trackName:"",trackDescription:"",ownerEntityRef:""},levelsStep:{levels:[{levelName:"Level 1",levelDescription:"",levelChips:[]}]},filtersStep:{}},Xs=({name:e,description:a,ownerEntityRef:n,filter:r,levels:l,documentationURL:i})=>({detailsStep:{trackName:e,trackDescription:a!=null?a:"",documentationURL:i!=null?i:void 0,ownerEntityRef:n},levelsStep:{levels:(l==null?void 0:l.map(o=>{var s,c,d;return{levelName:(c=(s=o.name)!=null?s:`Level ${o.ordinal}`)!=null?c:"Level 1",levelDescription:(d=o.description)!=null?d:"",levelChips:o.checks.map(m=>{var u;return{id:m.id,label:(u=m.name)!=null?u:m.id}})}}))||[]},filtersStep:{filters:Xa(r)}}),Kr=(e,a,n)=>{var r,l,i,o;return{id:(r=n==null?void 0:n.id)!=null?r:Gt(),ownerEntityRef:e.detailsStep.ownerEntityRef,description:e.detailsStep.trackDescription,name:e.detailsStep.trackName,documentationURL:(l=e.detailsStep.documentationURL)!=null?l:"",type:(i=n==null?void 0:n.type)!=null?i:"standard",levels:(o=e.levelsStep.levels)==null?void 0:o.map((s,c)=>{var d,m;return{ordinal:c+1,name:(d=s.levelName)!=null?d:"",description:(m=s.levelDescription)!=null?m:"",checks:s.levelChips.map(u=>a[u.id])}}),filter:Wr(e.filtersStep.filters)}},Zs=e=>{const{selectedItem:a}=Re(),n=K(()=>a?Xs(a):Ys,[a]),r=Vt({defaultValues:n,mode:"onChange",resolver:Ia(Qs)}),{userEntityRef:l}=mt();G(()=>{!a&&l&&!r.getValues("detailsStep.ownerEntityRef")&&r.setValue("detailsStep.ownerEntityRef",l)},[a,l,r]);const{checkChips:i,checksLoading:o,checksMap:s}=tn(),c=new Set(r.getValues("levelsStep.levels").flatMap(u=>u.levelChips.map(p=>p.id))),d=i.filter(u=>!c.has(u.id)),{showModal:m}=je();return{formMethods:r,onSubmit:async u=>{if(!await m({title:"Save Track",message:`Are you sure you want to save track: ${u.detailsStep.trackName}?`,error:!1}))return;const p=Kr(u,s!=null?s:{},a);e(p)},selectableChips:d,checksLoading:o}},Js=({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(d=>{var m;return{id:d.id,label:(m=d.name)!=null?m:d.id}})},filtersStep:Xa(s.filter),milestonesStep:{milestones:i.map(d=>({id:Number(d.id),milestoneName:d.name,milestoneDescription:d.description,milestonePassrate:d.targetPercent.toString()}))}}},ec=(e,a,n)=>{var r;const{tracksStep:{checks:l},detailsStep:{campaignName:i,campaignDescription:o,campaignOwner:s,supportChannel:c,campaignStartDate:d,campaignEndDate:m},filtersStep:u,milestonesStep:{milestones:p}}=e,h=Kr({detailsStep:{trackName:`${i}`,trackDescription:`The checks for the ${i} campaign.`,ownerEntityRef:s},levelsStep:{levels:[{levelName:"Level 1",levelChips:l,levelDescription:""}]},filtersStep:{filters:u}},n!=null?n:{},a==null?void 0:a.track);return{id:(r=a==null?void 0:a.id)!=null?r:Gt(),track:{...h,type:"campaign"},name:i,description:o,ownerEntityRef:s,supportChannel:c,startDate:d,targetCompletionDate:m,milestones:p.map(({id:y,milestonePassrate:k,milestoneDescription:f,milestoneName:b})=>({id:y,trackId:h.id,name:b,description:f,targetPercent:parseInt(k,10),targetCompletionDate:m}))}},tc=(e,a)=>{const n=K(()=>a?Js(a):_s,[a]),{control:r,handleSubmit:l,getValues:i,setValue:o,trigger:s,formState:{errors:c}}=Vt({defaultValues:n,mode:"onChange",resolver:Ia(zs)}),{showModal:d}=je(),{checksMap:m}=tn();return{control:r,handleSubmit:l,getValues:i,setValue:o,trigger:s,errors:c,onSubmit:async u=>{if(!await d({title:"Save Campaign",message:`Are you sure you want to save campaign: ${u.detailsStep.campaignName}?`,error:!1}))return;const p=ec(u,a,m);e(p)}}},ac=R(e=>({helperText:{marginLeft:0}})),nc=({control:e,errors:a,isLoading:n,disabled:r})=>{const l=ac(),{description:i}=Me.details;return t.createElement("div",null,t.createElement(v,{variant:"subtitle2"},i.name),t.createElement(v,{variant:"caption"},i.description),t.createElement(W,{name:"detailsStep.campaignDescription",control:e,defaultValue:"",render:({field:o})=>{var s;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:(s=a==null?void 0:a.campaignDescription)==null?void 0:s.message})}}))},rc=R(e=>({helperText:{marginLeft:0}})),lc=({control:e,errors:a,isLoading:n,disabled:r})=>{const l=rc(),{name:i}=Me.details;return t.createElement("div",null,t.createElement(v,{variant:"subtitle2"},i.name),t.createElement(v,{variant:"caption"},i.description),t.createElement(W,{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})}}))},ic=R(()=>({helperText:{marginLeft:0}})),jt=({name:e,control:a,selectLabel:n,options:r,disabled:l,rules:i,style:o,helperText:s})=>{const c=ic();return t.createElement(W,{name:e,control:a,rules:i,render:({field:d,fieldState:m})=>t.createElement(It,{variant:"outlined",style:o!=null?o:{minWidth:200},error:m.invalid},t.createElement(ga,{id:`${e}-select-label`},n),t.createElement(va,{...d,disabled:l,error:m.invalid,"data-testid":`${e}-select`,labelId:`${e}-select-label`,label:n,value:r?d.value:"",defaultValue:""},r==null?void 0:r.map(({value:u,label:p})=>t.createElement(ye,{key:u,value:u},p))),t.createElement(Pn,{className:c.helperText},m.error?m.error.message:s))})},oc=R(e=>({helperText:{marginLeft:0},selectField:{display:"flex",flexDirection:"column",gap:e.spacing(1)},fieldContainer:{width:"250px"}})),sc=({control:e,errors:a,isLoading:n,disabled:r})=>{var l,i;const o=oc(),{owner:s}=Me.details,{options:c}=wa(),{user:d,userEntityRef:m}=mt();let u=Da(c==null?void 0:c.map(p=>({value:p.ref,label:p.name})),"value");return m&&(u=[{value:m,label:d==null?void 0:d.metadata.name},...u]),t.createElement("div",{className:o.selectField},t.createElement("header",null,t.createElement(v,{variant:"subtitle2"},s.name),t.createElement(v,{variant:"caption"},s.description)),t.createElement("div",{className:o.fieldContainer},t.createElement(jt,{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})))},cc=R(e=>({chip:{backgroundColor:e.palette.primary.main,color:e.palette.primary.contrastText},chips:{width:"310px",marginLeft:e.spacing(1)}})),dc=[{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"}],mc=({props:e,startDate:a,selectedDuration:n,setSelectedDuration:r,isLoading:l,disabled:i})=>{const o=cc();return t.createElement(g,{container:!0,direction:"column"},t.createElement(g,{item:!0},t.createElement(vo,{...e})),t.createElement(g,{item:!0,className:o.chips},dc.map(({value:s,label:c})=>t.createElement(_e,{key:c,label:c,className:n===s?o.chip:void 0,color:n===s?"primary":void 0,size:"small",onClick:()=>{if(a){r(s);const d=Qe.fromISO(a.toString()).plus(s);e.onChange(d,!1)}},disabled:l||i}))))},uc=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%"}})),pc=({control:e,errors:a,isLoading:n,disabled:r,startDate:l})=>{const i=uc(),[o,s]=S(!1),[c,d]=S(!1),[m,u]=S(l),[p,h]=S(void 0),{startingDate:y,endingDate:k}=Me.details;return t.createElement("div",{className:i.selectFieldGroup},t.createElement(v,{variant:"subtitle2",className:i.scheduleTitle},"Campaign schedule"),t.createElement("div",{className:i.selectField},t.createElement(v,{variant:"subtitle2"},y.name),t.createElement("div",{className:i.fieldContainer},t.createElement(W,{control:e,name:"detailsStep.campaignStartDate",render:({field:f})=>{var b,E;const{ref:C,...x}=f;return t.createElement(pr,{utils:mr},t.createElement(ur,{inputRef:f.ref,...x,format:"MMMM dd, yyyy",autoOk:!0,FormHelperTextProps:{className:i.helperText},inputVariant:"outlined",className:i.select,error:!!(a!=null&&a.campaignStartDate),helperText:(E=(b=a==null?void 0:a.campaignStartDate)==null?void 0:b.message)!=null?E:void 0,onChange:N=>{u(N),f.onChange(N)},open:o,disabled:n||r,InputProps:{readOnly:!0,placeholder:y.placeholder,onClick:()=>s(!0)},onOpen:()=>s(!0),onClose:()=>s(!1)}))}}))),t.createElement("div",{className:i.selectField},t.createElement(v,{variant:"subtitle2"},k.name),t.createElement("div",{className:i.fieldContainer},t.createElement(W,{name:"detailsStep.campaignEndDate",control:e,render:({field:f})=>{var b,E;const{ref:C,...x}=f;return t.createElement(g,{container:!0,direction:"column"},t.createElement(g,{item:!0},t.createElement(pr,{utils:mr},t.createElement(ur,{inputRef:f.ref,...x,disablePast:!0,format:"MMMM dd, yyyy",autoOk:!0,FormHelperTextProps:{className:i.helperText},inputVariant:"outlined",className:i.select,error:!!(a!=null&&a.campaignEndDate),helperText:(E=(b=a==null?void 0:a.campaignEndDate)==null?void 0:b.message)!=null?E:void 0,onChange:N=>{f.onChange(N)},open:c,disabled:n||r,InputProps:{readOnly:!0,placeholder:k.placeholder,onClick:()=>d(!0)},onOpen:()=>{h(void 0),d(!0)},onClose:()=>d(!1),ToolbarComponent:N=>t.createElement(mc,{props:N,isLoading:n,disabled:!!r,startDate:m,selectedDuration:p,setSelectedDuration:h})}))))}}))))},hc=R(()=>({helperText:{marginLeft:0}})),qt=({name:e,control:a,error:n,label:r,placeholder:l,disabled:i,numbersOnly:o,inputProps:s,rules:c,messages:d,helperText:m,multiline:u,minRows:p,variant:h="standard",size:y,margin:k="normal"})=>{const f=hc();return t.createElement(W,{name:e,control:a,defaultValue:"",rules:c,render:({field:b})=>t.createElement(Y,{...b,FormHelperTextProps:{className:f.helperText},fullWidth:!0,multiline:u,minRows:p,placeholder:l,label:r,disabled:i,type:o?"number":"text",InputProps:s,margin:k,error:!!n,helperText:n&&d?d[n.type]:m,variant:h,size:y})})},gc=R(e=>({fieldContainer:{width:"250px"}})),vc=({control:e,errors:a,isLoading:n,disabled:r})=>{var l,i;const o=gc(),{support:s}=Me.details;return t.createElement("div",{style:{marginTop:10}},t.createElement(v,{variant:"subtitle2"},s.name),t.createElement(v,{variant:"caption"},s.description),t.createElement("div",{className:o.fieldContainer},t.createElement(qt,{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})))},fc=({control:e,errors:a,isLoading:n,disabled:r,startDate:l})=>t.createElement(t.Fragment,null,t.createElement(lc,{control:e,errors:a,isLoading:n,disabled:r}),t.createElement(nc,{control:e,errors:a,isLoading:n,disabled:r}),t.createElement(sc,{control:e,errors:a,isLoading:n,disabled:r}),t.createElement(vc,{control:e,errors:a,isLoading:n,disabled:r}),t.createElement(pc,{control:e,errors:a,isLoading:n,disabled:r,startDate:l})),jr=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"}}}),Ec=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]}})),qr=({chips:e,onDelete:a,onDrop:n,error:r=!1,placeholder:l="",disabled:i})=>{const o=Ec(),s=jr(),[{isOver:c},d]=fo(()=>({accept:"chip",drop:m=>{n(m)},collect:m=>({isOver:m.isOver()})}));return t.createElement("div",{ref:d,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(m=>t.createElement(_e,{key:m.id,label:m.label,className:s.chip,icon:t.createElement(hr,null),style:{cursor:"pointer"},onDelete:()=>a(m),disabled:i})):l))},Qr=({chip:e,disabled:a})=>{var n;const[r,l]=Eo(()=>({type:"chip",item:{id:e.id,label:e.label},collect:o=>({isDragging:o.isDragging()})})),i=jr();return t.createElement(_e,{ref:l,label:e.label,className:i.chip,icon:t.createElement(hr,{"data-testid":"drag-indicator-icon"}),disabled:a,onDelete:()=>{},deleteIcon:t.createElement(ne,{title:(n=e.description)!=null?n:""},t.createElement(yo,{className:i.icon,"data-testid":"visibility-icon"}))})},yc=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)}})),bc=({chips:e,disabled:a})=>t.createElement(t.Fragment,null,e.map(n=>t.createElement(Qr,{disabled:a,key:n.id,chip:n}))),Cc=()=>t.createElement(v,{variant:"body1",color:"textSecondary"},"There are no matches."),Yr=({isLoading:e,chips:a=[],disabled:n,label:r})=>{const l=yc(),[i,o]=S(""),s=a.filter(m=>m.label.toLowerCase().includes(i.toLowerCase())),c=a.length>0||i;let d=null;return e?d=t.createElement(ut,null):s.length>0?d=t.createElement(bc,{disabled:n!=null?n:!1,chips:s}):c&&(d=t.createElement(Cc,null)),t.createElement(g,{container:!0},t.createElement(g,{item:!0,xs:12,className:l.columnHeader},t.createElement(v,{className:l.subtitle},r!=null?r:"Checks")),t.createElement(g,{item:!0,xs:12},t.createElement(qa,{searchTerm:i,disabled:e||n,setSearchTerm:o,placeholder:"Search available checks",variant:"outlined",size:"small"})),t.createElement(g,{item:!0,className:l.chipContainer,xs:12},d))},kc=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%"}})),wc=({control:e,disabled:a,isLoading:n,errors:r})=>{const l=kc(),{checkChips:i}=tn(),{fields:o,remove:s,append:c}=Ht({control:e,name:"tracksStep.checks"}),d=new Set(o.flatMap(({label:h})=>h)),m=i.filter(h=>!d.has(h.label)),u=U(h=>{c(h)},[c]),p=U(h=>{const y=dr(o,k=>k.id===h.id);s(y)},[s,o]);return t.createElement(W,{control:e,name:"tracksStep.checks",render:()=>{var h;return t.createElement(It,{error:!!(r!=null&&r.checks),disabled:a||n,variant:"outlined",className:l.formContainer},t.createElement(g,{item:!0,xs:12},t.createElement(g,{container:!0,spacing:4},t.createElement($a,{backend:Aa},t.createElement(g,{item:!0,xs:5},t.createElement(Yr,{chips:m,isLoading:n,disabled:a,label:"Campaign Checks"})),t.createElement(g,{item:!0,xs:7},t.createElement(g,{container:!0},t.createElement(g,{item:!0,xs:12,className:l.columnHeader},t.createElement(v,{className:l.subtitle},"Included Checks")),t.createElement(g,{container:!0,item:!0,spacing:5,className:l.levelsContainer},t.createElement(qr,{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}))),((h=r==null?void 0:r.checks)==null?void 0:h.message)&&t.createElement(Pn,{className:l.errorText},r.checks.message))))))}})},xc=R(e=>({button:{border:"none",fontWeight:700,fontSize:e.typography.subtitle2.fontSize,lineHeight:"19px",color:e.palette.primary.main,textTransform:"none"}})),Qt=({label:e,...a})=>{const n=xc();return t.createElement(H,{className:n.button,...a,"aria-label":e},e)},Tc=R(()=>({milestoneHeader:{display:"flex",alignItems:"center"},divider:{margin:"20px 0"},helperText:{marginLeft:0},selectContainer:{width:"250px"}})),Sc=({control:e,errors:a,isLoading:n,disabled:r})=>{const l=Tc(),{name:i,description:o,passrate:s}=Me.milestones,{fields:c,append:d,remove:m}=Ht({control:e,name:"milestonesStep.milestones"}),u=()=>d({milestoneName:"",milestoneDescription:"",milestonePassrate:"0"});return t.createElement(t.Fragment,null,c.map((p,h)=>t.createElement("div",{key:p.id},h!==0&&t.createElement(He,{className:l.divider}),t.createElement(g,{container:!0,spacing:1,className:l.milestoneHeader},t.createElement(g,{item:!0,xs:!0},t.createElement(v,{variant:"subtitle2"},i.name),t.createElement(v,{variant:"caption"},i.description),t.createElement(W,{name:`milestonesStep.milestones.${h}.milestoneName`,control:e,defaultValue:"",render:({field:y})=>{var k,f,b,E,C,x;return t.createElement(Y,{...y,FormHelperTextProps:{className:l.helperText},variant:"outlined",fullWidth:!0,placeholder:i.placeholder,disabled:n||r,type:"text",margin:"normal",error:!!((f=(k=a==null?void 0:a.milestones)==null?void 0:k[h])!=null&&f.milestoneName),helperText:(x=(C=(E=(b=a==null?void 0:a.milestones)==null?void 0:b[h])==null?void 0:E.milestoneName)==null?void 0:C.message)!=null?x:i.helperText})}})),h!==0&&!r&&t.createElement(g,{item:!0},t.createElement(Qt,{label:"Remove Milestone",startIcon:t.createElement(vr,null),onClick:()=>m(h),disabled:r}))),t.createElement("div",null,t.createElement(v,{variant:"subtitle2"},o.name),t.createElement(v,{variant:"caption"},o.description),t.createElement(W,{name:`milestonesStep.milestones.${h}.milestoneDescription`,control:e,defaultValue:"",render:({field:y})=>{var k,f,b,E,C;return t.createElement(Y,{...y,FormHelperTextProps:{className:l.helperText},variant:"outlined",multiline:!0,minRows:4,fullWidth:!0,placeholder:o.placeholder,disabled:n||r,type:"text",margin:"normal",error:!!((f=(k=a==null?void 0:a.milestones)==null?void 0:k[h])!=null&&f.milestoneDescription),helperText:(C=(E=(b=a==null?void 0:a.milestones)==null?void 0:b[h])==null?void 0:E.milestoneDescription)==null?void 0:C.message})}})),t.createElement("div",null,t.createElement(v,{variant:"subtitle2"},s.name),t.createElement(v,{variant:"caption"},s.description),t.createElement("div",{className:l.selectContainer},t.createElement(W,{name:`milestonesStep.milestones.${h}.milestonePassrate`,control:e,defaultValue:"",render:({field:y})=>{var k,f,b,E,C,x;return t.createElement(Y,{...y,FormHelperTextProps:{className:l.helperText},variant:"outlined",fullWidth:!0,placeholder:s.placeholder,disabled:n||r,type:"number",margin:"normal",error:!!((f=(k=a==null?void 0:a.milestones)==null?void 0:k[h])!=null&&f.milestonePassrate),helperText:(x=(C=(E=(b=a==null?void 0:a.milestones)==null?void 0:b[h])==null?void 0:E.milestonePassrate)==null?void 0:C.message)!=null?x:void 0})}}))))),t.createElement(Qt,{label:"Add Milestone",startIcon:t.createElement(gr,null),onClick:()=>u(),disabled:r}))};var Rc=(e=>(e.Details="Enter campaign details",e.Checks="Add checks",e.Entities="Choose the affected entities (Optional)",e.Milestones="Set campaign milestones",e))(Rc||{});const Xr=({onSave:e,onCancel:a,selectedCampaign:n})=>{const r=Ya(),{isLoading:l,isReadOnly:i}=gt(),{control:o,handleSubmit:s,errors:c,trigger:d,getValues:m,onSubmit:u}=tc(e,n),p=m().detailsStep.campaignStartDate,h=[{label:"Enter campaign details",content:()=>t.createElement(fc,{control:o,isLoading:l,disabled:!1,errors:c.detailsStep,startDate:p})},{label:"Add checks",content:()=>t.createElement(wc,{control:o,isLoading:l,disabled:!1,errors:c.tracksStep})},{label:"Choose the affected entities (Optional)",content:()=>t.createElement("div",{className:r.filters},t.createElement(v,{variant:"body2"},Me.filter.description),t.createElement(W,{name:"filtersStep",control:o,render:({field:k})=>{var f;return t.createElement(Ja,{value:(f=k.value)!=null?f:ft(),onChange:k.onChange})}}))},{label:"Set campaign milestones",content:()=>t.createElement(Sc,{control:o,isLoading:l,disabled:!1,errors:c.milestonesStep})}],y=n?[...Array(h.length).keys()]:[0];return t.createElement("form",{onSubmit:s(u)},t.createElement(en,{onClose:a,handleSubmit:s,trigger:d,onSubmit:u,initialVisited:y,stepNameMap:us,steps:h,isLoading:l,isReadOnly:i,saveButtonText:"Save Campaign",detailsComponent:t.createElement($s,null)}))},Pc=B(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}}})),Nc=t.forwardRef(function(e,a){return t.createElement(Jl,{direction:"up",ref:a,...e})}),tt=({open:e,handleClose:a,title:n,children:r})=>{const l=Pc();return t.createElement(ei,{fullScreen:!0,open:e,onClose:a,TransitionComponent:Nc},t.createElement(ti,{className:l.appBar},t.createElement(ai,null,t.createElement(v,{className:l.title,"data-testid":`dialog-${n}`},n),t.createElement(dt,{"data-testid":"close-dialog",edge:"end",color:"inherit",onClick:a,"aria-label":"close",className:l.closeIcon},t.createElement(rr,null)))),t.createElement(T,{className:l.content},r))},Lc=()=>{const{hideModal:e,showAddModal:a,setIsLoading:n}=gt(),{mutateAsync:r,isLoading:l}=Qo();return G(()=>{n(l)},[n,l]),t.createElement(tt,{title:"Create a Campaign",open:a,handleClose:e},t.createElement(Xr,{onSave:async i=>{await r(i,{onSuccess:()=>e()})},onCancel:e}))},Oc=()=>{const[e]=Ca(),a=e.get("campaignsPerPage"),n=a?parseInt(a,10):xa;return t.createElement(ms,null,t.createElement("div",null,t.createElement(Ss,{campaignsPerPage:n}),t.createElement(Lc,null)))};function Zr(e){const a=D(A),n={ids:[e]};return V([O.GetCampaigns,JSON.stringify(n)],async()=>a.getCampaigns(n),{staleTime:5*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})}const Ic=B(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`}})),Dc=({campaign:e})=>{const a=Ic(),n=e.milestones;return t.createElement(t.Fragment,null,t.createElement(v,{variant:"h6",className:a.sectionLabel},"Campaign milestones"),t.createElement(g,{container:!0,className:a.milestones,spacing:2},n.length?n.map((r,l)=>t.createElement(g,{item:!0,container:!0,xs:12,key:l,spacing:2},t.createElement(g,{item:!0,xs:12},t.createElement(Ta,{label:"Name",value:r.name}),t.createElement(Ta,{label:"Description",value:r.description}),t.createElement(Ta,{label:"Goal pass rate",value:`${r.targetPercent}%`}),l<n.length-1&&t.createElement(He,{className:a.divider})))):t.createElement(v,{variant:"body1",color:"textSecondary"},"There are no milestones for this campaign.")))};function $c(e,a,n){const r=D(A);return V([O.GetCampaignProgress,e,a,n],async()=>r.getCampaignProgress(e,a,n),{staleTime:5*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})}const Jr=25,Ac=(e,a,n,r)=>{var l;const i=[];for(const{check:s,results:c}of e)i.push({height:Pi.check,cells:[Ni(s.name,po(c.filter(({result:d})=>d!==Kn.NotApplicable),"result")),...a.flatMap(d=>{var m,u;if(d===void 0)return[];const p=(u=(m=c.find(({entityRef:h})=>h===d))==null?void 0:m.result)!=null?u:Kn.NotApplicable;return[Li(r,s,d,p,n)]})]});const o=Oi(a!=null?a:[]);return i.push({height:Math.min(Ii((l=o.length)!=null?l:1),220),cells:[_n(""),...a.map(s=>_n(s||""))]}),i},Fc=R(e=>({table:{backgroundColor:e.palette.background.paper,borderCollapse:"collapse",whiteSpace:"nowrap",textAlign:"left"}})),Mc=({results:e,campaignTrackId:a})=>{const n=Fc(),r=Q(Ra),{checks:l,entityRefs:i}=e,o=i.length>=Jr?i:[...i,...Array.from({length:Jr-i.length},()=>{})],s=Ac(l,o,r,a),c=Di(s);return t.createElement(g,{item:!0,xs:12},t.createElement(bo,{style:{overflow:"auto hidden"},className:n.table,columnCount:o.length+1,columnWidth:d=>d===0?zn.programTitle:zn.checkResult,rowCount:s.length,rowHeight:d=>s[d].height,height:Si(s),width:Ri(o.length+1)},c))},Bc=B(e=>({sectionLabel:{fontWeight:700,margin:e.spacing(2,0),color:e.palette.primary.main}})),rn=25,Yt=()=>{const e=Bc();return t.createElement(v,{variant:"h6",className:e.sectionLabel},"Campaign progress")},Gc=({campaign:e})=>{const{cursor:a,pageSize:n,...r}=$i({defaultPageSize:rn,label:"entitiesPerPage"}),{data:l,isLoading:i,isError:o}=$c(e.id,n,a);if(i)return t.createElement(t.Fragment,null,t.createElement(Yt,null),t.createElement("div",{"data-testid":"progress-indicator"},t.createElement(Ai,{checkCount:1,levelCount:1})));if(o)return t.createElement(t.Fragment,null,t.createElement(Yt,null),t.createElement(v,{color:"error"},"Failed to load campaign progress."));if(!l)return t.createElement(t.Fragment,null,t.createElement(Yt,null),t.createElement(v,null,"No campaign progress available."));const{totalCount:s,endCursor:c,prevCursor:d}=l;return t.createElement(t.Fragment,null,t.createElement(Yt,null),t.createElement(Mc,{results:l,campaignTrackId:e.track.id}),t.createElement(Fi,{...r,totalCount:s,defaultPageSize:rn,endCursor:c,prevCursor:d,pageSize:n,rowsPerPageOptions:[rn],labelRowsPerPage:"Entities per page:"}))},Wc=B(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]}})),Vc=({campaign:e})=>{var a,n,r;const l=Wc(),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(v,{variant:"h6",className:l.sectionLabel},"Campaign checks"),t.createElement("div",{className:l.chipContainer},i.length?i.map(o=>t.createElement(Qr,{key:o.id,chip:o,disabled:!0})):t.createElement(v,{variant:"body1",color:"textSecondary",style:{alignSelf:"center"}},"There are no checks for this campaign.")))},Hc=B(e=>({root:{flexGrow:1,padding:e.spacing(2)},progressSection:{minHeight:350}})),zc=()=>{var e,a;const n=Hc(),{campaignId:r}=Ue(),{data:l,isLoading:i}=Zr(r!=null?r:""),o=(a=(e=l==null?void 0:l.edges)==null?void 0:e[0])==null?void 0:a.node,[s]=Je(jn);return i?t.createElement("div",{"data-testid":"loading-indicator"},t.createElement(ke,null)):o?t.createElement(tt,{title:"Campaign Details",open:!0,handleClose:s},t.createElement($a,{backend:Aa},t.createElement(g,{container:!0,className:n.root,spacing:3,direction:"column"},t.createElement(g,{item:!0,xs:12},t.createElement(Mi,{campaign:o})),t.createElement(g,{item:!0,xs:6},t.createElement(Vc,{campaign:o})),t.createElement(g,{item:!0,xs:12,className:n.progressSection},t.createElement(Gc,{campaign:o})),t.createElement(g,{item:!0,xs:12},t.createElement(Dc,{campaign:o}))))):t.createElement(Ka,null)},_c=()=>{var e,a;const n=pe(),r=Q(jn),{campaignId:l}=Ue(),{setIsLoading:i}=gt(),{mutateAsync:o,isLoading:s}=Xo(),{data:c,isLoading:d}=Zr(l!=null?l:""),m=(a=(e=c==null?void 0:c.edges)==null?void 0:e[0])==null?void 0:a.node;if(G(()=>i(s),[i,s]),!d&&!m)return t.createElement(Ka,null);const u=async h=>{await o(h,{onSuccess:()=>n(r())})},p=()=>n(r());return t.createElement(tt,{title:"Update Campaign",open:!0,handleClose:p},d?t.createElement(ke,null):t.createElement(Xr,{onSave:u,onCancel:p,selectedCampaign:m}))},Uc=R({warningPanel:{padding:"24px 24px 0 24px"}}),Xt=({entityName:e,entityId:a,showNotFound:n=!1,showCannotView:r=!1,showCannotEdit:l=!1})=>{const{warningPanel:i}=Uc();return t.createElement(t.Fragment,null,n&&t.createElement("div",{className:i},t.createElement(da,{title:`${ho(e)} not found`,message:`There is no ${e} with the requested id: ${a}.`})),r&&t.createElement("div",{className:i},t.createElement(da,{title:`Cannot view ${e}`,message:`User does not have permission to view ${e} id: ${a}.`})),l&&t.createElement("div",{className:i},t.createElement(da,{title:`Cannot edit ${e}`,message:`Cannot edit ${e} id: ${a}.`})))},el=({control:e,description:a,name:n,disabled:r})=>{const l=Ya();return t.createElement("div",{className:l.filters},t.createElement(v,{variant:"body2"},a),t.createElement(W,{name:n,control:e,render:({field:i})=>{var o;return t.createElement(Ja,{value:(o=i.value)!=null?o:ft(),onChange:i.onChange,disabled:r})}}))};var z=(e=>(e.Months="months",e.Weeks="weeks",e.Days="days",e.Hours="hours",e.Minutes="minutes",e.Seconds="seconds",e))(z||{});const ln=()=>({type:"HumanDuration",unit:z.Hours,value:1,cron:""}),on=[z.Months,z.Weeks,z.Days,z.Hours,z.Minutes,z.Seconds];function Kc(e){return on.includes(e)}function Zt(e){switch(e){case"months":return z.Months;case"weeks":return z.Weeks;case"days":return z.Days;case"hours":return z.Hours;case"minutes":return z.Minutes;case"seconds":return z.Seconds;default:return null}}function sn(e){if(e){const{cron:a,type:n,unit:r,value:l}=e;return n==="HumanDuration"?{[r]:l}:{cron:a}}}function cn(e){var a;const n=ln();if(e&&qe.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=Zt(l))!=null?a:z.Hours,value:i}}}return n}const tl=e=>Co(e).isValid(),al=e=>{try{return ko.toString(e)}catch(a){return typeof a=="string"?a.replace(/^Error:\s*/,""):"Invalid cron expression"}},nl=1,rl=31536e3,dn=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},jc=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}})),ll=({value:e,onChange:a,disabled:n,errors:r})=>{var l;const i=jc(),[o,s]=S(e),[c,d]=S(`${e.value}`);G(()=>{a&&a(o)},[o,a]);const m=f=>{s({...e,type:f.target.value})},u=f=>{d(f.target.value);const b=parseInt(f.target.value,10);s({...e,value:isNaN(b)?0:b})},p=f=>{var b;s({...o,unit:(b=Zt(f.target.value))!=null?b:z.Hours})},h=f=>{const b=f.target.value;s({...o,cron:b})},y=()=>{s({...o,type:"cron"})},k=()=>{s({...o,type:"HumanDuration"})};return t.createElement(g,{container:!0,direction:"row"},t.createElement(g,{item:!0},t.createElement(ni,{name:"frequencyType",value:o.type,onChange:m},t.createElement(g,{container:!0,alignItems:"flex-start"},t.createElement(g,{item:!0,className:i.noPaddingLeft},t.createElement(Nn,{disabled:n,value:"HumanDuration"})),t.createElement(g,{item:!0},t.createElement(v,{variant:"body1",className:i.title,onClick:k},"Run on a regular interval"),t.createElement(v,{variant:"caption"},"Run on a regular interval that you define"),o.type==="HumanDuration"&&t.createElement(g,{container:!0,className:i.humanDurationContainer},t.createElement(g,{item:!0},t.createElement(Y,{id:"every",type:"number",inputProps:{min:nl,max:rl},label:"Every",name:"every",disabled:n,value:c,error:!!(r!=null&&r.message),helperText:r==null?void 0:r.message,onChange:u})),t.createElement(g,{item:!0},t.createElement(It,null,t.createElement(ga,{id:"frequency-unit"},"Unit"),t.createElement(va,{labelId:"frequency-unit",disabled:n,value:o.unit,onChange:p,"data-testid":"frequency-unit"},on.map(f=>t.createElement(ye,{key:f,value:f},f)))))))),t.createElement(He,{className:i.divider}),t.createElement(g,{container:!0,alignItems:"flex-start"},t.createElement(g,{item:!0,className:i.noPaddingLeft},t.createElement(Nn,{disabled:n,value:"cron"})),t.createElement(g,{item:!0},t.createElement(v,{variant:"body1",className:i.title,onClick:y},"Run on a schedule"),t.createElement(v,{variant:"caption"},"Run on a schedule defined via cron expression"),o.type==="cron"&&t.createElement(g,{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:al(o.cron),disabled:n,placeholder:"* * * * *",error:!!(r!=null&&r.message),value:o.cron,onChange:h})))))))};var ge=(e=>(e.AllOf="all",e.AnyOf="any",e))(ge||{});const qc={all:"ALL OF",any:"ANY OF"},Qc={0:"detailsStep",1:"rulesStep",2:"filtersStep",3:"scheduleStep"};var Jt=(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))(Jt||{}),mn=(e=>(e.title="No checks found",e.description="No checks matched your search. Consider changing search term and filters.",e))(mn||{});const Yc=()=>({enabled:!1,frequency:ln()}),Xc={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"}},Zc=e=>Object.keys(e).map(a=>({value:a,label:e[a]}));Object.values(Xc).flatMap(Zc);const Jc=e=>{try{return ya(e),!0}catch{return"Invalid fact reference. [source]:[scope]/[name]."}},un=100,ed=w.strictObject({checkName:w.string().min(1,J).max(un,`Input must be less than ${un} characters`),description:w.string().min(1,J),teamOwner:w.string().min(1,J)}),td=async e=>{if(!await Jc(e))throw new Error("Fact reference validation failed");return e},il=w.lazy(()=>w.strictObject({factRef:w.string().refine(td,{message:"Valid format: [source]:[scope]/[name]"}),path:w.string().min(1,"Required"),operator:w.string().min(1,"Required"),value:w.union([w.string().min(1,"Required"),w.number()]),conditions:w.array(il).optional()})),ol=w.lazy(()=>w.strictObject({expressionType:w.enum([ge.AllOf,ge.AnyOf]).optional(),expressions:w.array(ol).optional(),conditions:w.array(il).optional()})),ad=w.strictObject({expressions:ol,passMessage:w.string().optional(),failMessage:w.string().optional(),warning:w.boolean().optional()}),nd=w.strictObject({filters:w.strictObject({selectedKinds:w.string().array(),selectedTypes:w.string().array(),selectedLifecycles:w.string().array(),selectedOwners:w.string().array(),selectedSystems:w.string().array(),selectedTags:w.string().array()}).optional()}),rd=w.nativeEnum(z),ld=({type:e,cron:a,value:n})=>e==="cron"?tl(a):e==="HumanDuration"?dn(n)===!0:!0,id=w.strictObject({type:w.enum(["HumanDuration","cron"]),unit:rd.optional(),value:w.number().min(1,"Value must be greater than 0.").optional(),cron:w.string().optional()}).refine(ld,{message:"Invalid frequency configuration"}),od=w.strictObject({enabled:w.boolean(),frequency:id}),sd=w.strictObject({schedule:od.optional()}),cd=w.strictObject({detailsStep:ed,rulesStep:ad,filtersStep:nd,scheduleStep:sd}),dd=e=>{var a;if(go(e)&&"frequency"in e){const n=vi.safeParse(e.frequency);if(n.success){const r=n.data;if("cron"in r)return{enabled:!0,frequency:{type:"cron",unit:z.Hours,value:1,cron:r.cron}};const l=Object.keys(r);if(l.length){const i=l[0];if(Kc(i))return{enabled:!0,frequency:{type:"HumanDuration",unit:i,value:(a=r[i])!=null?a:1,cron:""}}}}}return{enabled:!1,frequency:{type:"HumanDuration",unit:z.Hours,value:1,cron:""}}},md=(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:Kt(a)}:{frequency:{cron:l}}}},pn=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(pn(r))}),n}if(e.expressions)return e.expressions.map(pn);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{}},sl=(e,a=!0)=>{if(!e)return{conditions:[]};const n=Object.keys(e),r=n.includes("all")||a&&!n.includes("any")?ge.AllOf:ge.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(sl(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:ge.AllOf,conditions:[{factRef:e.factRef,path:e.path,operator:e.operator,value:e.value}]}},ud=e=>({detailsStep:{checkName:e.name||"",description:e.description||"",teamOwner:e.ownerEntityRef||""},rulesStep:{expressions:sl(e.rule),passMessage:e.passedMessage||void 0,failMessage:e.failedMessage||void 0,warning:e.warning||void 0},filtersStep:{filters:Xa(e.filter)},scheduleStep:{schedule:dd(e.schedule)}}),pd=(e,a)=>{var n,r,l,i;const{detailsStep:o,rulesStep:s,filtersStep:c,scheduleStep:d}=e;return{id:a?a.id:Gt(),ownerEntityRef:(n=o.teamOwner)!=null?n:void 0,name:o.checkName,description:o.description,passedMessage:(r=s.passMessage)!=null?r:void 0,failedMessage:(l=s.failMessage)!=null?l:void 0,rule:pn(s.expressions),warning:(i=s.warning)!=null?i:void 0,filter:c.filters?Wr(c.filters):void 0,schedule:md(d.schedule,c.filters)}},hn=(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(...hn(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(...hn(i,r))}return n},hd={detailsStep:{checkName:"",description:"",teamOwner:""},rulesStep:{expressions:{expressionType:ge.AllOf,expressions:void 0,conditions:[{factRef:"",path:"",operator:"",value:"",conditions:[]}]},warning:void 0},filtersStep:{filters:ft()},scheduleStep:{schedule:Yc()}},Be={details:{name:{name:"Check name",description:"Give your check a meaningful name so it's easy to remember",helperText:`Max ${un} characters`,placeholder:"Example: Code Coverage Check"},description:{name:"Check description",description:"Give your check a meaningful description so others know what it's for",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 (Optional)",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"},warnings:{name:"Enable warnings",description:"Enable if the check should emit warning check results if it fails",label:"Warning"}},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"}},gd=B(e=>({container:{display:"flex",flexDirection:"column",gap:e.spacing(2)},helperText:{marginLeft:0}})),vd=({control:e,error:a,isLoading:n,disabled:r})=>{const l=gd(),{name:i}=Be.details;return t.createElement("div",{className:l.container},t.createElement("div",null,t.createElement(v,{variant:"subtitle2"},i.name),t.createElement(v,{variant:"caption"},i.description)),t.createElement(W,{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})}}))},fd=B(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}`}})),ea=({name:e,control:a,label:n,description:r,disabled:l,rules:i,error:o,helperText:s,placeholder:c})=>{const d=Ce(),m=fd();return t.createElement(W,{name:e,control:a,defaultValue:l?"No description provided.":"",rules:i,render:({field:u})=>t.createElement("div",{"data-color-mode":d.palette.type,className:m.container},t.createElement("div",null,n&&t.createElement(v,{variant:"subtitle2"},n),r&&!l&&t.createElement(v,{variant:"caption"},r)),t.createElement("div",null,l?t.createElement(fr.Markdown,{className:m.markdown,source:u.value}):t.createElement(fr,{textareaProps:{placeholder:c},value:u.value,className:o&&m.errorBorder,onChange:u.onChange,previewOptions:{rehypePlugins:[[wo]]},"data-testid":`markdown-editor-${e}`}),(s||o)&&!l&&t.createElement(v,{variant:"caption",className:o?m.errorText:m.helperText},o?o.message:s)))})},Ed=B(e=>({container:{display:"flex",flexDirection:"column",gap:e.spacing(1)},tabContent:{padding:e.spacing(1)}})),yd=({control:e,isLoading:a,disabled:n})=>{const r=Ed(),[l,i]=S(0),{name:o,description:s,passMessagePlaceholder:c,failMessagePlaceholder:d,passedTabName:m,failedTabName:u}=Be.rulesStep.messages,p=(h,y)=>{i(y)};return t.createElement("div",{className:r.container},t.createElement("div",null,t.createElement(v,{variant:"subtitle2"},o),t.createElement(v,{variant:"caption"},s)),t.createElement(fa,{orientation:"horizontal",variant:"scrollable",value:l,onChange:p},t.createElement(De,{label:m}),t.createElement(De,{label:u})),t.createElement("div",{className:r.tabContent},l===0&&t.createElement(ea,{name:"rulesStep.passMessage",control:e,placeholder:c,disabled:a||n}),l===1&&t.createElement(ea,{name:"rulesStep.failMessage",control:e,placeholder:d,disabled:a||n})))},bd=({control:e,isLoading:a,disabled:n,error:r})=>{const{description:l}=Be.details;return t.createElement(ea,{name:"detailsStep.description",control:e,error:r,label:l.name,description:l.description,placeholder:n?void 0:l.placeholder,disabled:n||a})},Cd=B(e=>({container:{display:"flex",flexDirection:"column",gap:e.spacing(1)}})),kd=({control:e,disabled:a,error:n})=>{var r;const l=Cd(),{options:i,isLoading:o}=wa(),s=Da(i.map(u=>({value:u.ref,label:u.name})),"value"),{owner:{name:c,description:d,selectLabel:m}}=Be.details;return t.createElement("div",{className:l.container},t.createElement("div",null,t.createElement(v,{variant:"subtitle2"},c),t.createElement(v,{variant:"caption"},d)),t.createElement("div",null,t.createElement(jt,{name:"detailsStep.teamOwner",control:e,options:s,selectLabel:m,disabled:a||o,helperText:(r=n==null?void 0:n.message)!=null?r:void 0})))},wd=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"}})),xd=({onAddCondition:e,onAddExpression:a})=>{const n=wd(),[r,l]=S(null),i=!!r,o=c=>{l(c.currentTarget)},s=()=>{l(null)};return t.createElement(T,null,t.createElement(Ln,{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(Er,null)))),t.createElement(pa,{id:"add-menu",anchorEl:r,open:i,onClose:s,classes:{paper:n.menu},MenuListProps:{"aria-labelledby":"add-button"}},t.createElement(ye,{"data-testid":"add-condition",onClick:()=>{e(),s()}},"Add Condition"),t.createElement(ye,{"data-testid":"add-expression",onClick:()=>{a(),s()}},"Add Expression")))};function Td(){const e=D(A);return V(["soundcheck/operators"],async()=>e.getOperators(),{cacheTime:1/0,staleTime:1/0,refetchOnMount:!1,refetchOnReconnect:!1,refetchOnWindowFocus:!1})}const cl=({name:e,rules:a,label:n,control:r,options:l,getOptionLabel:i,getOptionValue:o,onChange:s,disabled:c})=>t.createElement(W,{name:e,control:r,rules:a,render:({field:d,fieldState:m})=>t.createElement(La,{...d,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:m.invalid,helperText:m.error?m.error.message:null}),onChange:(u,p)=>{const h=o?o(p):p;s==null||s(h),d.onChange(h)},onInputChange:(u,p)=>{const h=o?o(p):p;s==null||s(h)}})}),Sd=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 gn(e){const a=D(A);return V([O.GetCollectors,e],async()=>a.getCollectors(e),{staleTime:5*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})}function Rd(e,a){const n=D(A);return V([O.GetFactSchema,e,a],()=>n.getFactSchema(e,a),{enabled:!!e&&!!a,staleTime:5*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})}const Pd=(e,a)=>{const{data:n,isLoading:r}=gn(),l=Oa({control:a,name:`${e}.factRef`}),[i,o]=S(()=>dl(l));G(()=>{o(dl(l))},[l]);const{data:s}=Rd(i==null?void 0:i.source,i==null?void 0:i.name),c=K(()=>s?hn(s.schema):[],[s]),d=K(()=>n==null?void 0:n.flatMap(m=>m.factNames.map(u=>{const p=ya(u,{defaultSource:m.id,defaultScope:"default"});return{label:p.name,value:fi(p)}})),[n]);return{isLoading:r,pathOptions:c,factRefOptions:d}};function dl(e){if(e)try{return ya(e,{defaultSource:"unknown",defaultScope:"default"})}catch{return null}return null}const Nd=({name:e,handleDelete:a,disabled:n,disableDelete:r})=>{var l;const i=Sd(),{control:o,getValues:s,setValue:c}=me(),{data:d,isLoading:m}=Td(),u=K(()=>{var E;return(E=d==null?void 0:d.map(C=>({value:C.name,label:C.title})))!=null?E:[]},[d]),{pathOptions:p,factRefOptions:h,isLoading:y}=Pd(e,o),k=K(()=>{var E;return(E=h==null?void 0:h.map(C=>C.value))!=null?E:[]},[h]),f=(l=s("rulesStep.expressions.conditions"))==null?void 0:l.map(({factRef:E})=>E),b=E=>{E&&!(f!=null&&f.includes(E))&&(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},h&&t.createElement(cl,{name:`${e}.factRef`,control:o,label:"Fact",options:k,getOptionLabel:E=>{var C,x;return(x=(C=h==null?void 0:h.find(N=>E===N.value))==null?void 0:C.label)!=null?x:E},getOptionValue:E=>{var C,x,N;return(N=(x=(C=h==null?void 0:h.find(L=>E===L.label))==null?void 0:C.value)!=null?x:E)!=null?N:""},disabled:n||y,onChange:b}),t.createElement(cl,{name:`${e}.path`,label:"Path",control:o,disabled:n||y,options:p}),u&&t.createElement(jt,{name:`${e}.operator`,control:o,selectLabel:"Operator",options:u,disabled:m||n}),t.createElement(W,{name:`${e}.value`,control:o,defaultValue:"",render:({field:E,fieldState:C})=>t.createElement(Y,{...E,label:"Value",variant:"outlined",placeholder:"Enter a value",error:C.invalid,helperText:C.error?C.error.message:null,disabled:n})}))),!n&&!r&&t.createElement(dt,{onClick:a,className:i.deleteButton,"data-test-id":`${e}-delete-button`},t.createElement(ir,{className:i.deleteIcon})))},Ld=({conditions:e,name:a,handleDelete:n,disabled:r,disableDelete:l,depth:i})=>t.createElement(t.Fragment,null,e.map((o,s)=>t.createElement(g,{item:!0,key:s},t.createElement(Nd,{name:`${a}.conditions[${s}]`,"data-testid":`${a}-condition-input`,handleDelete:()=>n(s),disabled:r,disableDelete:i===0&&s===0?!0:l})))),Od=({expression:e,name:a,depth:n,disabled:r})=>e?t.createElement(g,{item:!0},t.createElement(ml,{name:`${a}`,depth:n+1,disabled:r})):null,Id=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)"}})),Dd=({name:e,disabled:a})=>{const n=Id(),{control:r,getValues:l}=me(),i=`${e}`,o=l(i),[s,c]=S(o||ge.AllOf),d=m=>{c(m)};return t.createElement(W,{control:r,name:e,render:({field:{onChange:m}})=>t.createElement(Ln,{color:"primary"},Object.values(ge).map(u=>t.createElement(H,{key:u,className:s===u?`${n.selectedButton} ${n.button}`:`${n.button}`,onClick:()=>{d(u),m(u)},disabled:a},qc[u])))})},$d=(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:ge.AllOf,expressions:void 0,conditions:[{factRef:"",path:"",operator:"",value:""}]}),n(l,i),await r(l)},handleDeleteCondition:async(l,i)=>{var o,s,c,d;const m=((o=i.match(/(.*\.expressions)(?=\[\d+])/))==null?void 0:o[0])||i,u=`${i}.conditions`,p=a(u);if(p.splice(l,1),p.length===0){n(u,void 0);const h=parseInt(i.slice(i.lastIndexOf("[")+1,i.lastIndexOf("]")),10),y=a(m);(c=(s=y[h])==null?void 0:s.expressions)==null||c.splice(h,1),n(m,(d=y[h])!=null&&d.expressions?y:void 0),await r(m)}else n(u,p),await r(u)}}),Ad=B(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"}})),ml=({name:e,depth:a,disabled:n})=>{const r=Ad(),{getValues:l,setValue:i,trigger:o}=me(),{handleAddCondition:s,handleAddExpression:c,handleDeleteCondition:d}=$d(e,l,i,o),m=`${e}`,u=l(m),p=(u==null?void 0:u.conditions)||[],h=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(g,{container:!0,spacing:0,direction:"column"},t.createElement(g,{item:!0},t.createElement(Dd,{disabled:n,name:`${e}.expressionType`})),t.createElement(g,{item:!0,container:!0,spacing:0,direction:"column"},t.createElement(Ld,{depth:a,handleDelete:y=>d(y,e),disabled:n,conditions:p,name:e}),h==null?void 0:h.map((y,k)=>t.createElement(Od,{key:k,expression:y,name:`${e}.expressions[${k}]`,depth:a,disabled:n}))),!n&&t.createElement(g,{item:!0},t.createElement(xd,{onAddCondition:s,onAddExpression:c}))))},Fd=R(e=>({container:{display:"flex",flexDirection:"column",gap:e.spacing(1)}})),Md=({control:e,disabled:a})=>{const n=Fd(),r=Oa({control:e,name:"scheduleStep.schedule"}),{description:l,checkboxLabel:i}=Be.schedule;return t.createElement("div",{className:n.container},t.createElement(v,{variant:"body2"},l),t.createElement(g,{item:!0,xs:12},t.createElement(g,{item:!0},t.createElement(W,{name:"scheduleStep.schedule.enabled",control:e,render:({field:o})=>t.createElement(ze,{disabled:a,control:t.createElement(Ie,{checked:o.value,onChange:o.onChange}),label:i})})),t.createElement(g,{item:!0},t.createElement(W,{name:"scheduleStep.schedule.frequency",control:e,render:({field:o,fieldState:s})=>t.createElement(ll,{disabled:a||!r.enabled,value:o.value,onChange:o.onChange,errors:s.error})}))))},Bd=e=>{const{selectedItem:a}=he();let n=hd;a&&(n=ud(a));const r=Vt({defaultValues:n,mode:"onChange",resolver:Ia(cd)}),{showModal:l}=je();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=pd(i,a);e(o)}}},Gd=()=>t.createElement("div",{style:{display:"flex",gap:"10px",flexDirection:"column"}},t.createElement(v,{variant:"h6"},"Creating and managing checks"),t.createElement(v,{variant:"body1"},"Checks are entities created from four components: facts, paths, operators and values. These components are then organized via a boolean calculator in the UI."),t.createElement(v,{variant:"body1"},"To create a check, select the components that you want to use, organize them into rules and give your check a meaningful name and a description."),t.createElement(v,{variant:"body1"},"Once created, you will be able to manage and edit your track on its detail page.")),Wd=B(e=>({container:{display:"flex",flexDirection:"column",gap:e.spacing(1)}})),Vd=()=>{var e,a,n;const r=Wd(),{isLoading:l,isReadOnly:i}=he(),{control:o,formState:{errors:s}}=me();return t.createElement("div",{className:r.container},t.createElement(vd,{control:o,error:(e=s==null?void 0:s.detailsStep)==null?void 0:e.checkName,isLoading:l,disabled:i}),t.createElement(bd,{control:o,error:(a=s==null?void 0:s.detailsStep)==null?void 0:a.description,isLoading:l,disabled:i}),t.createElement(kd,{control:o,disabled:i,error:(n=s==null?void 0:s.detailsStep)==null?void 0:n.teamOwner}))},Hd=B(e=>({container:{display:"flex",flexDirection:"column",gap:e.spacing(2)},innerContainer:{display:"flex",flexDirection:"column"}})),zd=()=>{const e=Hd(),{isLoading:a,isReadOnly:n}=he(),{control:r}=me(),{rules:l,warnings:i}=Be.rulesStep;return t.createElement("div",{className:e.container},t.createElement("div",{className:e.innerContainer},t.createElement("div",null,t.createElement(v,{variant:"subtitle2"},l.name),t.createElement(v,{variant:"caption"},l.description)),t.createElement(ml,{disabled:n,name:"rulesStep.expressions",depth:0})),t.createElement(yd,{control:r,isLoading:a,disabled:n}),t.createElement("div",{className:e.container},t.createElement("div",{className:e.innerContainer},t.createElement("div",null,t.createElement(v,{variant:"subtitle2"},i.name),t.createElement(v,{variant:"caption"},i.description)),t.createElement(W,{name:"rulesStep.warning",control:r,render:({field:o})=>t.createElement(ze,{disabled:n,control:t.createElement(Ie,{checked:o.value,onChange:o.onChange}),label:i.label})}))))},vn=({title:e,open:a,onSave:n,onClose:r})=>{const{hideModal:l,isLoading:i,isReadOnly:o,selectedItem:s}=he(),{formMethods:c,onSubmit:d}=Bd(n),m=[{label:"Enter check details",content:()=>t.createElement(Vd,null)},{label:"Add rules",content:()=>t.createElement(zd,null)},{label:"Choose the affected entities (Optional)",content:()=>t.createElement(el,{name:"filtersStep.filters",control:c.control,disabled:o,description:Be.filter.description})},{label:"Set the check schedule (Optional)",content:()=>t.createElement(Md,{control:c.control,disabled:o})}],u=s?[...Array(m.length).keys()]:[0];return t.createElement(tt,{handleClose:r?()=>r():l,title:e,open:a},t.createElement(or,{...c},t.createElement("form",{onSubmit:c.handleSubmit(d)},t.createElement(en,{onClose:r?()=>r():l,handleSubmit:c.handleSubmit,trigger:c.trigger,onSubmit:d,initialVisited:u,stepNameMap:Qc,steps:m,isLoading:i,isReadOnly:o,saveButtonText:"Save Check",detailsComponent:t.createElement(Gd,null)}))))},_d="Error Creating Check";function Ud(){const e=D(A),a=oe(),{showAlert:n}=ce(),r=async l=>{const i=await e.createCheck(l);if(!i)throw new Error("Failed to create check.");return i};return se([de.CreateCheck],r,{onSuccess:()=>{a.invalidateQueries({queryKey:[O.GetChecks]})},onError:l=>{let i="Failed to create check.";l instanceof Error&&(i=l.message),n({severity:"error",title:_d,message:i})}})}const Kd=()=>{const{hideModal:e,showAddModal:a,setIsLoading:n}=he(),{mutateAsync:r,isLoading:l}=Ud();return G(()=>{n(l)},[n,l]),t.createElement(vn,{title:"Create a Check",open:a,onSave:async i=>{await r(i,{onSuccess:()=>e()})},onClose:()=>e()})},jd=({check:e})=>{const{selectedItem:a,showReadOnlyModal:n}=he();G(()=>{n(e)},[e,n]);const[r]=Je(qn);return a&&t.createElement(vn,{title:"Check Details",open:!0,onClose:r,onSave:()=>{}})},qd="Error Creating Check";function Qd(){const e=D(A),a=oe(),{showAlert:n}=ce(),r=async l=>{const i=await e.updateCheck(l);if(!i)throw new Error("Failed to update check.");return i};return se([de.UpdateCheck],r,{onSuccess:()=>{a.invalidateQueries({queryKey:[O.GetChecks]})},onError:l=>{let i="Failed to update check.";l instanceof Error&&(i=l.message),n({severity:"error",title:qd,message:i})}})}const Yd=({check:e})=>{const{selectedItem:a,setSelectedItem:n}=he(),{setIsLoading:r}=he(),{mutateAsync:l,isLoading:i}=Qd();G(()=>{r(i)},[r,i]),G(()=>{n(e)},[e,n]);const[o,s]=Je(qn);return a&&t.createElement(vn,{title:"Edit a Check",open:!0,onClose:o,onSave:async c=>{await l(c,{onSuccess:s})}})},Xd=()=>{var e,a;const{checkId:n}=Ue(),{data:r,isLoading:l}=_t({ids:[n!=null?n:""],first:1}),i=(a=(e=r==null?void 0:r.edges)==null?void 0:e[0])==null?void 0:a.node,{loading:o,allowed:s}=_({permission:Mn,resourceRef:n}),{loading:c,allowed:d}=_({permission:Ei,resourceRef:n}),m=o||c||l,u=s&&(i==null?void 0:i.isEditable);return t.createElement(t.Fragment,null,t.createElement(Xt,{entityName:"check",entityId:n,showCannotView:!m&&!d,showNotFound:!m&&!i}),m&&t.createElement(ut,null),t.createElement(Mr,null,!m&&!!i&&t.createElement(t.Fragment,null,u&&d&&t.createElement(Yd,{check:i}),!u&&d&&t.createElement(jd,{check:i}))))},Zd=()=>t.createElement(g,{item:!0,container:!0,"data-testid":"checks-skeleton"},Array.from({length:10},(e,a)=>t.createElement(g,{key:`loading-${a}`,xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem"},t.createElement(Bt,{variant:"rect",height:385})))),Jd="Error Deleting Check";function em(){const e=D(A),a=oe(),{showAlert:n}=ce(),r=async l=>{const i=await e.deleteCheck(l);if(!i)throw new Error(`Failed to delete check ${l}`);return i};return se([de.DeleteCheck],r,{onSuccess:()=>Promise.all([a.invalidateQueries({queryKey:[O.GetChecks]}),a.invalidateQueries({queryKey:[O.GetAllPrograms]})]),onError:(l,i)=>{let o=`Failed to delete check ${i}`;l instanceof Error&&(o=l.message),n({severity:"error",title:Jd,message:o})}})}const tm=R(e=>({root:{position:"relative",height:"100%"},cardSection:{marginBottom:e.spacing(2)},listItem:{padding:0},listItemText:{margin:0}})),am=({check:e})=>{var a;const n=tm();return t.createElement(Ot,{dense:!0,disablePadding:!0,className:n.cardSection},t.createElement(v,{variant:"overline",color:"textSecondary"},"Check Details"),t.createElement(be,{disableGutters:!0,className:n.listItem},t.createElement(ne,{title:"Owner"},t.createElement(te,null,t.createElement(Wt,{color:"action",fontSize:"small"}))),t.createElement(ae,{className:n.listItemText,primary:t.createElement(Fe,{entityRef:(a=e.ownerEntityRef)!=null?a:"No Owner",hideIcon:!0})})))},nm=({check:e})=>{const{id:a,name:n,description:r,isEditable:l,ownerEntityRef:i}=e,o=pe(),s=Q(Qn),{loading:c,allowed:d}=_({permission:Mn,resourceRef:a}),{loading:m,allowed:u}=_({permission:yi,resourceRef:a}),{showModal:p}=je(),{mutate:h}=em(),y=U(async()=>{await p({title:"Delete Check",message:`Are you sure you want to delete the check '${n!=null?n:a}'?`})&&h(a)},[p,n,h,a]),k=U(()=>{o(s({checkId:a}))},[s,a,o]);return t.createElement(vt,{title:n!=null?n:a,description:r,children:i&&t.createElement(am,{check:e}),handleView:k,handleEdit:l&&!c&&d?k:void 0,handleDelete:l&&!m&&u?y:void 0})},rm=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)}})),lm=({checksPerPage:e,currentCursor:a})=>{var n;const r=rm(),[l,i]=S(a),[o,s]=S(""),[c,d]=S($e.Alpha),[m,u]=S($e.Owner),[p,h]=S([]),[y,k]=S("");Pa(()=>{k(o)},500,[o]);const{loading:f,allowed:b}=_({permission:bi}),{data:E,isLoading:C}=_t({ids:void 0,first:e,after:l,orderAlphabetical:c,searchByOwner:m,searchByName:y}),[x,N]=S(E),L=(n=x==null?void 0:x.edges)==null?void 0:n.map($=>$.node),[I,P]=S([]),X=D(ct),le=!X.getRegisteredFlags().find($=>$.name==="soundcheck-enable-check-creation")||X.isActive("soundcheck-enable-check-creation"),ue=!b||!le,Ee=$=>{d($.target.value)},Oe=$=>{u($.target.value)};G(()=>{E&&N(()=>{var $,M;return{totalCount:E.totalCount,edges:E.edges,pageInfo:{startCursor:E.pageInfo.startCursor,endCursor:E.pageInfo.endCursor,hasNextPage:($=E==null?void 0:E.pageInfo.hasNextPage)!=null?$:!1,hasPreviousPage:(M=E==null?void 0:E.pageInfo.hasPreviousPage)!=null?M:!1}}})},[E]);const{setShowAddModal:Ve}=he();if(G(()=>{const $=x==null?void 0:x.edges.map(xe=>xe.node),M=_a($!=null?$:[]);h(M!=null?M:[])},[C,x]),!C&&!L)return t.createElement(Ke,{title:Jt.title,description:Jt.description,imgSrc:Na,action:!f&&t.createElement(H,{disabled:ue,variant:"contained",color:"primary",onClick:()=>Ve(!0)},Jt.callToAction)});let ie;C?ie=t.createElement(Zd,null):L!=null&&L.length?ie=L==null?void 0:L.map($=>t.createElement(g,{key:$.id,xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem","aria-label":"result"},t.createElement(nm,{check:$}))):ie=t.createElement(g,{xs:12,item:!0,role:"listitem","aria-label":"result"},t.createElement(Ke,{title:mn.title,description:mn.description}));const st=(x==null?void 0:x.pageInfo.hasNextPage)||(I==null?void 0:I.length)>0;return t.createElement(g,{container:!0,direction:"row",className:r.container},t.createElement(g,{container:!0,spacing:4,className:r.header},t.createElement(Qa,{searchPlaceholder:"Search available checks",isLoading:C,searchTerm:o,setSearchTerm:s,filterAlpha:c,handleAlphabeticalFilterChange:Ee,filterOwner:m,handleOwnerFilterChange:Oe,owners:p}),t.createElement(g,{item:!0,xs:3},t.createElement("div",{className:r.headerButtons},!f&&t.createElement(H,{disabled:ue,variant:"contained",color:"primary",onClick:()=>Ve(!0)},"Create Check")))),t.createElement(g,{container:!0,spacing:4,role:"list","aria-label":"checks"},ie),st&&t.createElement("div",{className:r.pagination},t.createElement(ka,{response:x,listingsPerPage:e,cursor:l,setCursor:i,prevCursors:I,setPrevCursors:P,labelPerPageDropdown:"Checks Per Page:",urlRoute:"checks?checksPerPage="})))},im=()=>{const[e]=Ca(),a=e.get("checksPerPage"),n=a?parseInt(a,10):xa,{showAddModal:r}=he();return t.createElement("div",null,t.createElement(lm,{checksPerPage:n}),r&&t.createElement(Kd,null))},om=()=>t.createElement(Mr,null,t.createElement(im,null)),sm="Error Configuring Collector";function cm(){const e=D(A),a=oe(),{showAlert:n}=ce(),r=async l=>{const i=await e.updateCollectorConfig(l);if(!i)throw new Error("Failed to update collector configuration.");return i};return se([de.UpdateCollectorConfig],r,{onSuccess:()=>{a.invalidateQueries({queryKey:[O.GetCollectors]})},onError:l=>{let i="Failed to update collector configuration.";l instanceof Error&&(i=l.message),n({severity:"error",title:sm,message:i})}})}const dm=({enabled:e,hasDuration:a,value:n})=>e&&a?dn(n):!0,mm=({type:e,cron:a,value:n})=>{if(e==="cron"){if(!tl(a))return al(a)}else if(e==="HumanDuration")return dn(n);return!0},ul=()=>({enabled:!1,hasDuration:!1,unit:z.Days,value:1});function fn(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 En(e){var a;const n=ul();if(!e)return n;if(typeof e=="boolean")return{...n,enabled:e};if(!qe.isObject(e)||!("duration"in e))return n;const r=e.duration;if(!qe.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=Zt(i))!=null?a:z.Days,value:o}}const um=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"}})),pm=({value:e,onChange:a,disabled:n,errors:r})=>{const l=um(),[i,o]=S(e),[s,c]=S(`${e.value}`);G(()=>{a&&a(i)},[i,a]);const d=h=>{o({...i,enabled:h.target.checked,hasDuration:h.target.checked&&i.hasDuration})},m=h=>{o({...i,hasDuration:h.target.checked})},u=h=>{c(h.target.value);const y=parseInt(h.target.value,10);o({...i,value:isNaN(y)?0:y})},p=h=>{var y;o({...i,unit:(y=Zt(h.target.value))!=null?y:z.Hours})};return t.createElement(g,{container:!0,direction:"column"},t.createElement(g,{item:!0},t.createElement(g,{container:!0,alignItems:"center"},t.createElement(g,{item:!0},t.createElement(Ie,{id:"enableCaching",disabled:n,checked:i.enabled,onChange:d,"data-testid":"enableCaching"})),t.createElement(g,{item:!0},t.createElement("label",{htmlFor:"enableCaching",className:l.label},"Enable caching")))),t.createElement(g,{item:!0},t.createElement(g,{container:!0,alignItems:"flex-start"},t.createElement(g,{item:!0,className:l.checkbox},t.createElement(Ie,{id:"hasDuration",disabled:n||!i.enabled,checked:i.enabled&&i.hasDuration,onChange:m,"data-testid":"hasDuration"})),t.createElement(g,{item:!0},t.createElement("label",{htmlFor:"hasDuration",className:i.enabled?l.label:""},"Duration")),t.createElement(g,{className:l.duration},t.createElement(g,{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:nl,max:rl},"data-testid":"forTextField"})),t.createElement(g,{item:!0},t.createElement(It,null,t.createElement(ga,{id:"duration-unit"},"Unit"),t.createElement(va,{labelId:"duration-unit",disabled:n||!i.hasDuration,value:i.unit,onChange:p,"data-testid":"unitSelect"},on.map(h=>t.createElement(ye,{key:h,value:h},h)))))))))},hm=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)}})),yn=({name:e,label:a,description:n,control:r,disabled:l,errors:i})=>{const[o,s]=S(0),c=Oa({control:r,name:`${e}.enabled`}),d=(u,p)=>{s(p)},m=hm();return t.createElement("div",{className:m.root},t.createElement(W,{name:`${e}.enabled`,control:r,render:({field:u})=>t.createElement(ze,{control:t.createElement(ri,{...u,checked:u.value,"data-testid":`${e}-switch`}),label:t.createElement(T,{display:"flex",flexDirection:"column"},t.createElement(v,{variant:"body1",component:"span"},t.createElement("b",null,`${a}`)),t.createElement(v,{variant:"caption",color:"textSecondary",component:"p"},`${n}`))})}),c&&t.createElement("div",null,t.createElement(fa,{orientation:"horizontal",variant:"scrollable",value:o,onChange:d,className:m.tabsContainer},t.createElement(De,{label:"Frequency",className:m.tab}),t.createElement(De,{label:"Filters",className:m.tab}),t.createElement(De,{label:"Caching",className:m.tab})),t.createElement("div",{className:m.contentContainer},o===0&&t.createElement("div",null,t.createElement(W,{name:`${e}.frequency`,control:r,rules:{validate:mm},render:({field:u})=>t.createElement(ll,{disabled:l,value:u.value,onChange:u.onChange,errors:i==null?void 0:i.frequency})})),o===1&&t.createElement("div",null,t.createElement(W,{name:`${e}.filters`,control:r,render:({field:u})=>t.createElement(Ja,{disabled:l,value:u.value,onChange:u.onChange})})),o===2&&t.createElement("div",null,t.createElement(W,{name:`${e}.cacheConfig`,control:r,rules:{validate:dm},render:({field:u})=>t.createElement(pm,{disabled:l,value:u.value,onChange:u.onChange,errors:i==null?void 0:i.cacheConfig})})))))},bn=()=>({enabled:!1,filters:{...ft(),selectedKinds:["Component"]},frequency:ln(),cacheConfig:ul()}),pl=()=>({branchProtections:bn(),repositoryDetails:bn(),repositoryLanguages:bn()});function gm(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:sn(s),filter:Kt(c),cache:fn(o)})}if(n.enabled){const{cacheConfig:o,frequency:s,filters:c}=n;i.push({factName:"repository_details",type:"RepositoryDetails",frequency:sn(s),filter:Kt(c),cache:fn(o)})}if(r.enabled){const{cacheConfig:o,frequency:s,filters:c}=r;i.push({factName:"repository_languages",type:"RepositoryLanguages",frequency:sn(s),filter:Kt(c),cache:fn(o)})}return l}return[]}function vm(e){var a,n,r,l,i,o;const s=pl();if(e){const c=e.collects;if(c)for(const d of Ea(c)){const m=d.type;m==="BranchProtections"&&(s.branchProtections={enabled:!0,frequency:cn((a=d.frequency)!=null?a:e.frequency),filters:Za((n=d.filter)!=null?n:e.filter),cacheConfig:En(d.cache)}),m==="RepositoryDetails"&&(s.repositoryDetails={enabled:!0,frequency:cn((r=d.frequency)!=null?r:e.frequency),filters:Za((l=d.filter)!=null?l:e.filter),cacheConfig:En(d.cache)}),m==="RepositoryLanguages"&&(s.repositoryLanguages={enabled:!0,frequency:cn((i=d.frequency)!=null?i:e.frequency),filters:Za((o=d.filter)!=null?o:e.filter),cacheConfig:En(d.cache)})}}return s}const fm=({disabled:e,selectedCollector:a})=>{const{control:n,formState:{errors:r},handleSubmit:l}=Vt({defaultValues:a?vm(a.config):pl(),mode:"onChange"}),i=!!r.branchProtections||!!r.repositoryDetails||!!r.repositoryLanguages,{mutateAsync:o}=cm(),[s,c]=Je(Yn),d=async m=>{const u=gm(m);await o({collectorId:"github",config:u})&&c()};return t.createElement("form",{onSubmit:l(d)},t.createElement(yn,{name:"branchProtections",label:"Branch Protections",description:"Collects branch protection information from an entity's repository.",control:n,disabled:e,errors:r.branchProtections}),t.createElement(He,null),t.createElement(yn,{name:"repositoryDetails",label:"Repository Details",description:"Collects details about the an entity's repository.",control:n,disabled:e,errors:r.repositoryDetails}),t.createElement(He,null),t.createElement(yn,{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(g,{container:!0,spacing:4},t.createElement(Vr,{onCancel:s,saveButtonText:"Save",isLoading:!1,onSave:l(d),disableSave:i})))},Em=({title:e,open:a,handleClose:n,selectedCollector:r})=>t.createElement(tt,{handleClose:n,title:e,open:a},(r==null?void 0:r.id)==="github"&&t.createElement(fm,{selectedCollector:r})),ym=()=>{var e;const{collectorId:a}=Ue(),{data:n,isLoading:r}=gn([a!=null?a:""]),{loading:l,allowed:i}=_({permission:Bn}),[o]=Je(Yn),s=n==null?void 0:n[0],c=r||l,d=i&&(s==null?void 0:s.isEditable);return t.createElement("div",null,c&&t.createElement(ut,null),t.createElement(Xt,{entityName:"Collector",entityId:a,showNotFound:!c&&!s,showCannotEdit:!c&&!d}),s&&d&&t.createElement(Em,{title:s?(e=s.name)!=null?e:s.id:"",open:!0,handleClose:o,selectedCollector:s}))},bm=()=>t.createElement(t.Fragment,null,Array.from({length:6},(e,a)=>t.createElement(g,{key:`loading-${a}`,xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem"},t.createElement(Bt,{variant:"rect",height:385}))));function Cm(e){switch(e){case"catalog":return xo;case"github":return So;case"pagerduty":return Ro;case"scm":return To;case"soundcheck":return No;case"techinsights":return Lo;default:return Po}}const km=R(e=>({container:{display:"flex",justifyContent:"center",alignItems:"center"},imageContainer:{width:"150px",height:"150px"},image:{width:"100%",height:"100%",objectFit:"contain"}})),wm=({collector:e})=>{const{id:a}=e,n=km();return t.createElement(t.Fragment,null,t.createElement("div",{className:n.container},t.createElement("div",{className:n.imageContainer},t.createElement("img",{src:Cm(a),alt:a,className:n.image}))))},xm=["github"],Tm=({collector:e,children:a})=>{const{description:n,id:r,isEditable:l,name:i}=e,{loading:o,allowed:s}=_({permission:Bn}),c=pe(),d=Q(Xi),m=xm.includes(r)&&l&&!o&&s,u=()=>{c(d({collectorId:e.id}))};return t.createElement(vt,{title:i!=null?i:r,description:n,viewLabel:"Configure",editLabel:"Configure",children:a,handleView:void 0,handleEdit:m?u:void 0})},Sm=()=>{const{data:e,isLoading:a}=gn();return t.createElement(g,{container:!0,direction:"row"},t.createElement(g,{container:!0,spacing:4,role:"list","aria-label":"checks"},a?t.createElement(bm,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(g,{key:n.id,xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem","aria-label":"result"},t.createElement(Tm,{collector:n},t.createElement(wm,{collector:n}))))))},Rm=R(e=>({container:{padding:e.spacing(3)}})),Pm=()=>{const e=Rm();return t.createElement("div",{className:e.container},t.createElement(Sm,null))},Nm="Error Updating Track";function Lm(){const e=D(A),a=oe(),{showAlert:n}=ce(),r=async l=>{const i=await e.updateProgram(l);if(!i)throw new Error("Failed to update track.");return i};return se([de.UpdateProgram],r,{onSuccess:async()=>{await a.invalidateQueries({queryKey:[O.GetAllPrograms]})},onError:l=>{let i="Failed to update track.";l instanceof Error&&(i=l.message),n({severity:"error",title:Nm,message:i})}})}const Om={0:"detailsStep",1:"levelsStep",2:"filtersStep"},at={name:{name:"Track name",description:"Give your track a meaningful name so it's easy to remember",helperText:`Max ${yt} characters`,placeholder:"Example: Golden State for Web"},description:{name:"Track description",description:"Give your track a meaningful description so others know what it's for",placeholder:"Example: Improve quality and reliability of your software component by measuring the use of testing best practices."},documentationURL:{name:"Documentation URL (Optional)",description:"Enter a documentation URL for your track",placeholder:"URL for documentation"},owner:{name:"Track owner",description:"Add yourself, or a team, as the owner of this track. Defaults to 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."},filter:{description:'Setting the filters below will limit the scope of the Track so that only those Entities that match the filter will be monitored by the Track. 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 Track.'}},Im=({index:e,disabled:a})=>{var n,r,l;const{control:i,formState:{errors:o}}=me(),{fields:s,remove:c,append:d}=Ht({control:i,name:`levelsStep.levels.${e}.levelChips`,rules:{required:!0}}),m=U(p=>{d(p)},[d]),u=U(p=>{const h=dr(s,y=>y.id===p.id);c(h)},[c,s]);return t.createElement(qr,{chips:s,onDelete:u,onDrop:m,error:!!((l=(r=(n=o==null?void 0:o.levelsStep)==null?void 0:n.levels)==null?void 0:r[e])!=null&&l.levelChips),placeholder:"Drag and drop checks here to include them in this level",disabled:a})},Dm=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"}})),$m=({disabled:e})=>{const a=Dm(),{control:n,formState:{errors:r},getValues:l}=me(),{fields:i,remove:o,append:s}=Ht({control:n,name:"levelsStep.levels"});return t.createElement(g,{container:!0},t.createElement(g,{item:!0,xs:12,className:a.columnHeader},t.createElement(v,{className:a.subtitle},"Levels"),!e&&t.createElement(Qt,{label:"Add Level",startIcon:t.createElement(gr,null),onClick:()=>s({levelName:`Level ${i.length+1}`,levelDescription:"",levelChips:[]}),disabled:e})),t.createElement(g,{container:!0,item:!0,spacing:5},i.map((c,d)=>{var m,u,p;return t.createElement(g,{container:!0,item:!0,xs:12,spacing:2,key:c.id},t.createElement(g,{item:!0,xs:12,className:a.levelHeader},t.createElement(g,{container:!0,spacing:1},t.createElement(g,{item:!0,xs:!0},t.createElement(qt,{name:`levelsStep.levels.${d}.levelName`,placeholder:"Untitled level",control:n,disabled:e,label:"Level Name",variant:"outlined",size:"small",inputProps:{classes:{input:a.inputNameBase}},margin:"none",error:(p=(u=(m=r==null?void 0:r.levelsStep)==null?void 0:m.levels)==null?void 0:u[d])==null?void 0:p.levelName})),!e&&i.length>1&&t.createElement(g,{item:!0,className:a.removeButton},t.createElement(Qt,{label:"Remove Level",startIcon:t.createElement(vr,null),onClick:()=>o(d),disabled:e})))),t.createElement(g,{item:!0,xs:12},t.createElement(Im,{index:d,disabled:e})),t.createElement(g,{item:!0,xs:12},t.createElement(qt,{name:`levelsStep.levels.${d}.levelDescription`,placeholder:"Enter description here",control:n,disabled:e,label:`${l(`levelsStep.levels.${d}.levelName`)}'s description`,variant:"outlined",size:"small",inputProps:{classes:{input:a.inputDescriptionBase},"aria-label":`${l(`levelsStep.levels.${d}.levelName`)} description`},margin:"none"})))})))},Am=B(e=>({container:{display:"flex",flexDirection:"column",gap:e.spacing(2)},inner:{display:"flex",flexDirection:"row",gap:e.spacing(2)},checksSection:{width:"40%"},levelsSection:{width:"60%"},description:{fontWeight:"normal",fontSize:e.typography.fontSize}})),Fm=({selectableChips:e,checksLoading:a})=>{const{selectedItem:n,isLoading:r,isReadOnly:l}=Re(),i=Am(),{levels:o}=at,s=l||!!n&&!n.isEditable;return t.createElement("div",{className:i.container},t.createElement("div",null,!s&&t.createElement(v,{className:i.description},o.description)),t.createElement("div",{className:i.inner},!s&&t.createElement("div",{className:i.checksSection},t.createElement(Yr,{chips:e,isLoading:a||r,disabled:s})),t.createElement("div",{className:i.levelsSection},t.createElement($m,{disabled:s}))))},Mm=({isLoading:e,disabled:a})=>{var n;const{control:r,formState:{errors:l}}=me(),{name:i,description:o,placeholder:s}=at.description;return t.createElement(ea,{name:"detailsStep.trackDescription",control:r,error:(n=l.detailsStep)==null?void 0:n.trackDescription,label:i,description:o,placeholder:a?void 0:s,disabled:a||e})},Bm=R(e=>({container:{display:"flex",flexDirection:"column"},fieldContainer:{width:"300px",marginTop:"-10px"}})),Gm=({isLoading:e,disabled:a})=>{var n,r,l,i;const o=Bm(),{control:s,formState:{errors:c}}=me(),{name:d,description:m,placeholder:u}=at.documentationURL;return t.createElement("div",{className:o.container},t.createElement("div",null,t.createElement(v,{variant:"subtitle2"},d),t.createElement(v,{variant:"caption"},m)),t.createElement("div",{className:o.fieldContainer},t.createElement(qt,{name:"detailsStep.documentationURL",control:s,placeholder:u,disabled:a||e,variant:"outlined",error:(n=c==null?void 0:c.detailsStep)==null?void 0:n.documentationURL,helperText:(i=(l=(r=c==null?void 0:c.detailsStep)==null?void 0:r.documentationURL)==null?void 0:l.message)!=null?i:void 0})))},Wm=B(e=>({container:{display:"flex",flexDirection:"column",gap:e.spacing(2)},helperText:{marginLeft:0},field:{marginTop:"-10px"}})),Vm=({disabled:e,isLoading:a})=>{const n=Wm(),{control:r,formState:{errors:l}}=me(),{placeholder:i,name:o,description:s,helperText:c}=at.name;return t.createElement("div",{className:n.container},t.createElement("div",null,t.createElement(v,{variant:"subtitle2"},o),t.createElement(v,{variant:"caption"},s)),t.createElement(W,{name:"detailsStep.trackName",control:r,defaultValue:"",render:({field:d})=>{var m,u,p,h;return t.createElement(Y,{...d,FormHelperTextProps:{className:n.helperText},className:n.field,variant:"outlined",fullWidth:!0,placeholder:i,disabled:a||e,type:"text",error:!!((m=l.detailsStep)!=null&&m.trackName),helperText:(h=(p=(u=l.detailsStep)==null?void 0:u.trackName)==null?void 0:p.message)!=null?h:c})}}))},Hm=B(e=>({container:{display:"flex",flexDirection:"column",gap:e.spacing(1)}})),zm=({disabled:e,ownerEntityRef:a})=>{var n,r,l;const i=Hm(),{options:o,isLoading:s}=wa(),{user:c,userEntityRef:d}=mt(),{control:m,formState:{errors:u}}=me();let p=Da(o.map(k=>({value:k.ref,label:k.name})),"value");d&&(p=[{value:d,label:c==null?void 0:c.metadata.name},...p]),a&&d!==a&&!p.some(k=>k.value===a)&&(p=[{value:a,label:j(a).name},...p]);const{name:h,description:y}=at.owner;return t.createElement("div",{className:i.container},t.createElement("div",null,t.createElement(v,{variant:"subtitle2"},h),t.createElement(v,{variant:"caption"},y)),t.createElement("div",null,t.createElement(jt,{name:"detailsStep.ownerEntityRef",control:m,options:s?void 0:p,disabled:e||s,helperText:(l=(r=(n=u==null?void 0:u.detailsStep)==null?void 0:n.ownerEntityRef)==null?void 0:r.message)!=null?l:void 0})))},_m=B(e=>({container:{display:"flex",flexDirection:"column",gap:e.spacing(2)}})),Um=()=>{var e;const a=_m(),{isLoading:n,isReadOnly:r,selectedItem:l}=Re();return t.createElement("div",{className:a.container},t.createElement(Vm,{disabled:r,isLoading:n}),t.createElement(Mm,{isLoading:n,disabled:r}),t.createElement(zm,{disabled:n||r,ownerEntityRef:(e=l==null?void 0:l.ownerEntityRef)!=null?e:void 0}),t.createElement(Gm,{isLoading:n,disabled:r}))},hl=({onSave:e,title:a,open:n,handleClose:r})=>{const{selectedItem:l,isLoading:i,isReadOnly:o}=Re(),{formMethods:s,onSubmit:c,selectableChips:d,checksLoading:m}=Zs(e),u=[{label:"Enter track details",content:()=>t.createElement(Um,null)},{label:"Add levels",content:()=>t.createElement(Fm,{selectableChips:d,checksLoading:m})},{label:"Choose the affected entities (Optional)",content:()=>t.createElement(el,{name:"filtersStep.filters",control:s.control,disabled:o,description:at.filter.description})}],p=l?[...Array(u.length).keys()]:[0];return t.createElement($a,{backend:Aa},t.createElement(tt,{handleClose:r,title:a,open:n},t.createElement(or,{...s},t.createElement("form",{onSubmit:s.handleSubmit(c)},t.createElement(en,{onClose:r,handleSubmit:s.handleSubmit,trigger:s.trigger,onSubmit:c,initialVisited:p,stepNameMap:Om,steps:u,isLoading:i,isReadOnly:o,saveButtonText:"Save Track"})))))},Km=({track:e,canEdit:a})=>{const{setSelectedItem:n,setIsLoading:r,selectedItem:l,showReadOnlyModal:i}=Re(),{mutateAsync:o,isLoading:s}=Lm();G(()=>r(s),[r,s]);const c=!a||!e.isEditable;G(()=>{c?i(e):n(e)},[e,n,c,i]);const[d,m]=Je(Zi),u=U(async p=>{await o(p,{onSuccess:m})},[m,o]);return G(()=>{},[e,i,c]),l?t.createElement(hl,{handleClose:m,title:`${c?"View":"Edit"} Track`,open:!0,onSave:u}):null},jm=()=>{var e,a;const{trackId:n}=Ue(),{data:r,isLoading:l}=ht({ids:[n!=null?n:""],first:1}),i=(a=(e=r==null?void 0:r.edges)==null?void 0:e[0])==null?void 0:a.node,{loading:o,allowed:s}=_({permission:Gn,resourceRef:n}),{loading:c,allowed:d}=_({permission:Wn,resourceRef:n});return t.createElement(t.Fragment,null,t.createElement(Xt,{entityName:"track",entityId:n,showNotFound:!l&&!i,showCannotView:!o&&!c&&!d}),l||o||c?t.createElement(ut,null):d&&i&&t.createElement(Ar,null,t.createElement(Km,{track:i,canEdit:s})))},qm="check-pass-rates-summary.csv",Qm="track-pass-rates-summary.csv",Ym="entity-pass-rates-summary.csv",Xm="team-pass-rates-summary.csv",Zm="check-pass-rates.csv",Jm="track-pass-rates.csv",eu="entity-pass-rates.csv",tu="team-pass-rates.csv",au="campaign-track-pass-rates.csv";function we(e){const a=Qe.utc();return e.map((n,r)=>({name:zt(a,e.length-r-1),passRate:n}))}var nu=(e=>(e.Bar="bar",e.Line="line",e))(nu||{});const ru=-25,Pe=[0,100],gl=85,ta=25,bt="name",lu=250,Ct=.5,vl="circle",fl=8,El="monotone",kt=({children:e})=>t.createElement(Fa,{minHeight:lu,debounce:1},e),iu=B(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}})),yl=()=>{const e=[{x:"A",y:25},{x:"B",y:50},{x:"C",y:75}],a=iu();return t.createElement("div",{className:a.container},t.createElement(kt,null,t.createElement(Ma,{data:e},t.createElement(pt,{strokeDasharray:"3 3",vertical:!1,opacity:Ct}),t.createElement(Ye,{dataKey:"x",stroke:"#ccc",hide:!0}),t.createElement(Xe,{domain:Pe,stroke:"#ccc",hide:!0}),t.createElement(Ba,{type:"monotone",dataKey:"y",stroke:"#ccc",dot:!1}))),t.createElement(v,{className:a.chartMessage},"No Data"))},ou=R(e=>({legend:{color:ee(e)}})),wt=({data:e,lines:a})=>{const n=Ce(),r=Ze(n),l=ee(n),i=ou();return e.length?t.createElement(kt,null,t.createElement(Ma,{data:e},t.createElement(pt,{vertical:!1,opacity:Ct}),t.createElement(Ye,{dataKey:bt,stroke:l}),t.createElement(Xe,{width:ta,domain:Pe,stroke:l}),t.createElement(Cr,{position:{y:ru},contentStyle:{backgroundColor:n.palette.background.paper}}),a.length>1&&t.createElement(kr,{iconType:vl,iconSize:fl,formatter:o=>t.createElement("span",{className:i.legend},o)}),a.map((o,s)=>t.createElement(Ba,{key:o.dataKey,dataKey:o.dataKey,stroke:r[s%r.length],strokeWidth:2,dot:!1,name:o.name,type:El})))):t.createElement(yl,null)},su=({data:e,lines:a})=>{const n=Ce(),r=Ze(n);return t.createElement(Fa,{height:50,width:100},t.createElement(Ma,{data:e},t.createElement(Ye,{hide:!0,dataKey:bt}),t.createElement(Xe,{width:0,domain:Pe}),a.map((l,i)=>t.createElement(Ba,{key:l.dataKey,dataKey:l.dataKey,stroke:r[i%r.length],strokeWidth:2,dot:!1,name:l.name,type:El}))))},xt=({chartData:e,tableChart:a})=>{const n=[{dataKey:"passRate",name:"Pass rate"}];return a?t.createElement(su,{data:e,lines:n}):t.createElement(wt,{data:e,lines:n})};var F=(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))(F||{});const bl={Entity:"Entities are software components, like a system, service, or library. They are the entities/components that Soundcheck runs checks against. Choosing entities will filter the results to only show those that are associated with the selected entity/entities.","Entity Kind":"The 'kind' of the Entity as defined by Catalog, e.g. Component, System, User, Group, etc. This will filter results to only show those for Entities with the selected kind(s).","Entity Type":"The type of Entity as defined by Catalog, e.g. Database, Team, Service, Website, etc. This will filter results to only show those related to Entities with the selected type(s).","Entity Owner":"The owner of the Entity, typically a team or and individual. This will filter results to only those Entities that are owned by the selected owner(s).","Entity Lifecycle":"The lifecycle of the entity: e.g. experimental, production, etc. This will filter results to only show those related to Entities with the selected lifecycle(s).",System:"This System filter will filter results to only show those for Entities that are part of the selected System(s).",Track:"This Track filter will filter results to only show those related to the selected Track(s).","Track Level":"This Track level filter will filter results to only show those related to the selected Track level(s).",Check:"This Check filter will filter results to only show those related to the selected Check(s).","Check Owner":"The owner of the Check, typically a team or an individual. This will limit results to only be results from Checks that are owned by the selected owner(s)."},cu={hidden:{height:0,opacity:0,overflow:"hidden"},visible:{height:"auto",opacity:1,overflow:"visible"}};function du({visible:e,...a}){return t.createElement(Fo.div,{...a,animate:e?"visible":"hidden",initial:"hidden",variants:cu})}const mu=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}})),uu=()=>{const e=mu();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(ke,null)))};function pu(e){var a;const n=D(A),[r,l]=S(null),i=async()=>(await n.getEntityRefsForTechHealthFilter(e)).entityRefsForTechHealthFilter,o=V([O.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 hu=(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 d of(r=c.levels)!=null?r:[])for(const m of(l=d.checks)!=null?l:[])s.includes(m.id)||(s.push(m.id),o.push({label:(i=m.name)!=null?i:m.id,value:m.id}));return o},gu=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}`}))},vu=(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}})},aa=e=>(e!=null?e:[]).map(a=>({label:a,value:a})),fu=()=>{const[e,a]=S(!1),{userEntityRef:n}=mt(),{data:r,isLoading:l}=pu(n),{data:i,isLoading:o}=Bi(),s=K(()=>qe.mapValues(qe.keyBy(i!=null?i:[],"ref"),I=>I.name),[i]),{data:c,isLoading:d}=ht({first:100}),m=K(()=>{var I;return(I=c==null?void 0:c.edges.map(P=>P.node))!=null?I:[]},[c]),{data:u,isLoading:p}=_t({first:100}),h=K(()=>{var I;return(I=u==null?void 0:u.edges.map(P=>P.node))!=null?I:[]},[u]),{data:y,isLoading:k}=Et("kind"),{data:f,isLoading:b}=Et("spec.lifecycle"),{data:E,isLoading:C}=Et("spec.type"),{data:x,isLoading:N}=Et("spec.system"),L=K(()=>{var I;return{[F.Kind]:aa(y),[F.Lifecycle]:aa(f),[F.Type]:aa(E),[F.System]:aa(x),[F.Entity]:r.map(P=>({label:j(P).name,value:P})),[F.EntityOwner]:(I=i==null?void 0:i.map(P=>({label:P.name,value:P.ref})))!=null?I:[],[F.Track]:m.map(P=>({label:P.name,value:P.id})),[F.Level]:gu(m),[F.Check]:hu(h,m),[F.CheckOwner]:vu(h,s)}},[y,f,E,r,i,s,m,h,x]);return G(()=>{a(k||b||C||l||o||d||p||N)},[k,b,C,l,o,d,p,N]),{facetOptions:L,isLoading:e}},nt=30,Ge=2,rt=90,lt=()=>Object.fromEntries(Object.values(F).map(e=>[e,[]])),Eu=(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))}))},yu=(e,a,n,r)=>{const l=i=>a[i].length?{included:a[i]}:void 0;return{checkIds:l(F.Check),checkOwners:l(F.CheckOwner),entityOwners:l(F.EntityOwner),entityRefs:l(F.Entity),tracks:Eu(e[F.Track],a[F.Track],a[F.Level]),numberOfDays:n!=null?n:nt,context:r?{loggedInUser:r}:void 0,entityTypes:l(F.Type),entityKinds:l(F.Kind),entityLifecycles:l(F.Lifecycle),systems:l(F.System)}},Cl=Dt({facetOptionsLoading:!1,getFacetOptions:()=>[],getFacetOptionLabel:()=>"",facetFilters:lt(),clearAllFilters:()=>{},getSelectedFacetValues:()=>[],setSelectedFacetValues:()=>{},numberOfDays:nt,setNumberOfDays:()=>{},filter:{},loggedInUser:"Unknown"}),ve=()=>$t(Cl),bu=e=>{const{userEntityRef:a,loading:n}=mt(),{isLoading:r,facetOptions:l}=fu(),[i,o]=Ft("soundcheck.techHealth.facetFilters",lt());i&&Object.values(F).forEach(f=>{i[f]||(i[f]=[])});const[s,c]=Ft("soundcheck.techHealth.numberOfDays",nt),d=K(()=>yu(l,i!=null?i:lt(),s,a),[i,l,s,a]),m=()=>{c(nt),o(lt())},u=f=>l[f].map(b=>b.value),p=(f,b)=>{var E;let C=(E=l[f].find(x=>x.value===b))==null?void 0:E.label;if(!C)try{const x=j(b);C=Mt(x)}catch{}return Tr(),C!=null?C:b},h=f=>i?i[f]:[],y=(f,b)=>{const E={...i!=null?i:lt()};E[f]=b,o(E)},k={facetOptionsLoading:r,getFacetOptions:u,getFacetOptionLabel:p,facetFilters:i!=null?i:lt(),clearAllFilters:m,getSelectedFacetValues:h,setSelectedFacetValues:y,numberOfDays:s!=null?s:nt,setNumberOfDays:c,filter:d!=null?d:{},loggedInUser:"Unknown"};return r||n?t.createElement(uu,null):t.createElement(Cl.Provider,{...e,value:k})},Cu=50,ku=R(({palette:e,spacing:a})=>({header:{display:"flex",alignItems:"left",flexDirection:"row",cursor:"pointer",justifyContent:"space-between"},label:{display:"flex",alignItems:"center"},tooltipIcon:{display:"flex",alignItems:"center",justifyContent:"center",color:e.info.light},chip:{backgroundColor:e.info.dark,color:e.common.white,textOverflow:"ellipsis",overflow:"hidden","& svg":{color:li(e.common.white,.7),"&:hover":{color:e.common.white}}},autoCompleteInput:{"&& input":{margin:a(1,0,0,0),width:"100%"}}})),wu=({facet:e})=>{var a;const n=ku(),{getFacetOptions:r,getFacetOptionLabel:l,getSelectedFacetValues:i,setSelectedFacetValues:o}=ve(),[s,c]=S(!!((a=i(e))!=null&&a.length)),[d,m]=S(!1),[u,p]=S(""),h=()=>{c(b=>!b)},y=b=>{(b.key==="Enter"||b.key===" ")&&h()},k=b=>{if(e===F.Entity&&b[b.length-1]){const E=b[b.length-1];if(!E.includes(":")||!E.includes("/")){m(!0),p("Custom entities require a valid kind and namespace such as: component:default/entity");return}}m(!1),p(""),o(e,b)},f=Tr({matchFrom:"any",limit:Cu});return t.createElement(T,null,t.createElement("div",{className:n.header,onClick:h,onKeyDown:y,role:"button",tabIndex:0},t.createElement("div",{className:n.label},t.createElement(T,null,t.createElement(v,{variant:"subtitle2"},e)),bl[e]&&t.createElement(ne,{title:bl[e],className:n.tooltipIcon},t.createElement(ii,null,t.createElement(Ao,{style:{fontSize:16,verticalAlign:"text-top"}})))),t.createElement(T,null,t.createElement(dt,{size:"small",onKeyDown:y},s?t.createElement($o,{fontSize:"small"}):t.createElement(Er,{fontSize:"small"})))),t.createElement(du,{visible:s},t.createElement(La,{disableCloseOnSelect:!0,fullWidth:!0,multiple:!0,freeSolo:e===F.Entity,popupIcon:null,ChipProps:{color:"primary",className:n.chip,size:"small"},filterOptions:f,options:r(e),getOptionLabel:b=>l(e,b),value:i(e),onChange:(b,E)=>k(E),renderInput:b=>t.createElement(Y,{...b,className:n.autoCompleteInput,margin:"normal",placeholder:`Search for ${e}`,error:d,helperText:u}),renderOption:(b,{selected:E})=>t.createElement(ze,{onClick:C=>C.preventDefault(),control:t.createElement(Ie,{icon:t.createElement(cr,{fontSize:"small"}),checkedIcon:t.createElement(sr,{fontSize:"small"}),checked:E}),label:l(e,b)})})))},xu=R(e=>({root:{display:"flex",flexDirection:"row",alignItems:"center",justifyContent:"space-between",paddingBottom:e.spacing(.25)}}));function Tu(){const e=xu(),{numberOfDays:a,facetFilters:n,clearAllFilters:r}=ve(),l=Object.keys(F).some(i=>n[F[i]].length)||a!==nt;return t.createElement(T,{className:e.root},t.createElement(T,null,t.createElement(v,{variant:"h6"},"Filters")),l&&t.createElement(T,null,t.createElement(H,{onClick:r,size:"small"},"Clear all")))}const Su=R(({palette:e,spacing:a})=>({root:{padding:({size:n})=>n==="small"?a(1,2):a(2),borderBottom:`1px solid ${e.border}`}}));function Cn(e){const a=Su(e);return t.createElement(T,{...e,className:a.root})}const Ru=R(({palette:e,spacing:a})=>({select:{width:"100%",margin:a(1,0)},selectedChip:{backgroundColor:`${e.info.dark} !important`,color:"#fff","&:hover":{backgroundColor:e.info.dark}}})),na=[7,30,90].map(e=>({value:e,label:`Last ${e} days`}));function Pu(){const e=Ru(),{numberOfDays:a,setNumberOfDays:n}=ve(),r=[...na];na.map(u=>u.value).includes(a)||r.push({value:a,label:`Last ${a} days`});const[l,i]=S(r),[o,s]=S(""),c=()=>{if(o.length){const u=parseInt(o,10);return!isNaN(u)&&(u<Ge||u>rt)}return!1},d=()=>{const u=parseInt(o,10);if(u<Ge)return`Minimum of ${Ge} days`;if(u>rt)return`Maximum of ${rt} days`},m=u=>{if(u.key==="Enter"){const p=parseInt(o,10);p>=Ge&&p<=rt?(na.map(h=>h.value).includes(p)||i([...na,{value:p,label:`Last ${p} days`}]),n(p),s("")):p<Ge?s(`${Ge}`):s(`${rt}`)}};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(_e,{key:p,label:u,className:a===p?e.selectedChip: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:Ge,max:rt},onKeyDown:m,helperText:d(),value:o,type:"number",error:c(),onChange:u=>s(u.target.value)})))}const Nu=R(e=>({filters:{maxWidth:"300px",width:"100%",backgroundColor:e.palette.background.paper}})),Lu=()=>{const e=Nu(),a=At().pathname.includes("campaigns"),[n]=Ft("soundcheck.overview.groupRef",null),[r,l]=S(!0),{getFacetOptions:i,setSelectedFacetValues:o}=ve(),s=i(F.EntityOwner)[0];G(()=>{r&&(o(F.EntityOwner,[n!=null?n:s]),l(!1))},[o,n,s,r,l]);let c=Object.values(F);if(a){const d=[F.Track,F.Level];c=c.filter(m=>!d.includes(m))}return t.createElement(T,{className:e.filters},t.createElement(Cn,null,t.createElement(Tu,null)),t.createElement(Cn,null,t.createElement(Pu,null)),c.map(d=>t.createElement(Cn,{key:d,size:"small"},t.createElement(wu,{facet:d}))))},kl=Dt({checkPassRateSnapshot:{data:void 0,isLoading:!0,isError:!1},checkPassRateTrend:{data:void 0,isLoading:!0,isError:!1},trackPassRateOverviewSnapshot:{data:void 0,isLoading:!0,isError:!1},trackPassRateOverviewTrend:{data:void 0,isLoading:!0,isError:!1},entityPassRatesOverviewTrends:{data:void 0,isLoading:!0,isError:!1},groupPassRatesOverviewTrends:{data:void 0,isLoading:!0,isError:!1}}),Ne=()=>$t(kl),Ou=e=>{const{filter:a}=ve(),n=ns(a),r=Or(a),l=ls(a),i=Ga(a),o=is(a),s=ss(a),c=K(()=>({checkPassRateSnapshot:n,checkPassRateTrend:r,trackPassRateOverviewSnapshot:l,trackPassRateOverviewTrend:i,entityPassRatesOverviewTrends:o,groupPassRatesOverviewTrends:s}),[n,r,l,i,o,s]);return n.isLoading||r.isLoading||l.isLoading||i.isLoading||o.isLoading||s.isLoading?t.createElement(ke,null):t.createElement(kl.Provider,{...e,value:c})},wl=e=>{const a=(e==null?void 0:e.overallTrackPassRate)||[];if(!a.length)return[];const n=Qe.utc();return a.reduce((r,{trendPassRates:l,levelOrdinal:i},o)=>{var s;const c=(s=l==null?void 0:l.map((d,m)=>({name:zt(n,l.length-m-1),[`Level${i}`]:d})))!=null?s:[];return o===0?c:r.map((d,m)=>({...d,...c[m]}))},[])},Iu=()=>{var e,a;const{trackPassRateOverviewTrend:{data:n,isError:r}}=Ne();if(r)return t.createElement(v,{color:"error"},"Failed to load track data.");const l=wl(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(wt,{data:l,lines:i})},Du=e=>{const a=(e==null?void 0:e.overallEntityPassRates)||[];if(!a.length)return[];const n=Qe.utc();return a.reduce((r,{trendPassRates:l,id:i},o)=>{var s;const c=(s=l==null?void 0:l.map((d,m)=>({name:zt(n,l.length-m-1),[i]:d})))!=null?s:[];return o===0?c:r.map((d,m)=>({...d,...c[m]}))},[])},$u=()=>{var e,a;const{entityPassRatesOverviewTrends:{data:n}}=Ne(),r=(a=(e=n==null?void 0:n.overallEntityPassRates)==null?void 0:e.map(({id:i})=>({dataKey:i,name:j(i).name})))!=null?a:[],l=Du(n);return t.createElement(wt,{data:l,lines:r})},Au=B(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}})),Fu=({layout:e,theme:a})=>{const n=e===Tt.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=Au();return t.createElement("div",{className:i.container},t.createElement(kt,null,t.createElement(wr,{data:n?l:r,margin:{left:0},layout:e},t.createElement(pt,{strokeDasharray:"3 3",vertical:n,horizontal:!n,opacity:Ct}),t.createElement(Ye,{dataKey:n?void 0:"x",type:n?St.Number:St.Category,domain:n?Pe:void 0,hide:!0}),t.createElement(Xe,{width:n?gl:ta,dataKey:n?"x":void 0,type:n?St.Category:St.Number,domain:n?void 0:Pe,hide:!0}),t.createElement(xr,{dataKey:"y",fill:a.palette.divider,barSize:n?xl:Tl}))),t.createElement(v,{className:i.chartMessage},"No Data"))},Mu=R(e=>({legend:{color:ee(e)}}));var Tt=(e=>(e.Horizontal="horizontal",e.Vertical="vertical",e))(Tt||{});const xl=20,Tl=50;var St=(e=>(e.Category="category",e.Number="number",e))(St||{});const Sl={dataKey:"passRate",name:"Pass rate"},kn=Ti(({data:e,layout:a})=>{const n=a==="vertical",r=Ce(),l=Ze(r),i=ee(r),o=Mu();return e.length?t.createElement(kt,{"aria-label":"Bar chart representing data points."},t.createElement(wr,{data:e,layout:a},t.createElement(pt,{vertical:n,horizontal:!n,opacity:Ct}),t.createElement(Ye,{dataKey:n?void 0:bt,type:n?"number":"category",domain:n?Pe:void 0,stroke:i}),t.createElement(Xe,{width:n?gl:ta,dataKey:n?bt:void 0,type:n?"category":"number",domain:n?void 0:Pe,stroke:i}),t.createElement(Cr,{contentStyle:{backgroundColor:r.palette.background.paper},itemStyle:{color:ee(r)},cursor:{fill:"transparent"}}),t.createElement(kr,{iconType:vl,iconSize:fl,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(xr,{barSize:n?xl:Tl,dataKey:Sl.dataKey,name:Sl.name},e.map(({name:s},c)=>t.createElement(Oo,{key:s,fill:l[c%l.length]}))))):t.createElement(Fu,{layout:a,theme:r})}),Bu=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:[]},Gu=()=>{const{trackPassRateOverviewSnapshot:{data:e,isError:a}}=Ne();if(a)return t.createElement(v,{color:"error"},"Failed to load track data.");const n=Bu(e);return t.createElement(kn,{data:n,layout:Tt.Horizontal})},Wu=e=>{var a;return(a=e==null?void 0:e.map(({id:n,groupTitle:r,snapshotPassRate:l})=>({name:r!=null?r:j(n).name,passRate:l})))!=null?a:[]},Vu=()=>{var e;const{groupPassRatesOverviewTrends:{data:a}}=Ne(),n=(e=a==null?void 0:a.groupPassRates)==null?void 0:e.sort((l,i)=>i.snapshotPassRate-l.snapshotPassRate),r=Wu(n);return t.createElement(kn,{data:r,layout:Tt.Vertical})},Hu=B(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"}})),ra=({title:e,subtitle:a,summaryCardContent:n,chartSectionContent:r,disableDataExport:l,csvData:i,csvFilename:o})=>{const s=Hu();return t.createElement(ha,{className:s.card},t.createElement(T,{className:s.headerRow},t.createElement(T,{className:s.headerSection},t.createElement(v,{className:s.title},e),t.createElement(v,{variant:"caption"},a)),t.createElement(T,{className:s.headerExportSection},t.createElement(Sr,{data:i,filename:o,onClick:()=>!l},t.createElement(ne,{title:"Export to CSV"},t.createElement("span",null,t.createElement(H,{disabled:l},t.createElement(Mo,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 Le(e,a){const n=e;if(a){const r=Qe.utc();for(let l=a-1;l>=0;l--)n.push(r.minus({day:l}).toISODate())}return n}function it(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 zu(e){const a=[];return a.push(Le(["check_id","check_name","check_owner_ref"],it(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 _u(e){var a,n;const r=[];if(r.push(Le(["entity_ref","entity_name","entity_owner_ref"],it(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,j(l.id).name,(n=l.entityOwnerRef)!=null?n:"",...i])}return r}function Uu(e){const a=[];return a.push(Le(["team_ref","team_name"],it(e))),e!=null&&e.length&&e.map(n=>{var r,l;a.push([n.id,(r=n.groupTitle)!=null?r:j(n.id).name,...(l=n.trendPassRates)!=null?l:[n.snapshotPassRate]])}),a}function Ku(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 Rl(e,a){const n=[],r=e!=null&&e.length?Math.max(...e.map(i=>it(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(Le(l,r)),e!=null&&e.length&&e.map(i=>{var o;(o=i.levels)==null||o.map(s=>{n.push(Ku(i,s,a))})}),n}function ju(e){var a,n,r;const l=[];return l.push(Le(["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 qu(e){var a;const n=[];return n.push(Le(["level_ordinal","level_name"],it(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 Qu(e){var a;const n=[];return n.push(Le(["entity_ref","entity_name"],it(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,j(r.id).name,...(l=r.trendPassRates)!=null?l:[0]])}),n}function Yu(e){var a,n;const r=[];return r.push(Le(["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:j(l.id).name,l.snapshotPassRate])})),r}const Xu=R(e=>({chartHeader:{marginBottom:e.spacing(2)},overallSummaryBox:{display:"flex",flexDirection:"column",height:"100%",color:ee(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`}})),Zu=()=>{var e,a,n,r;const l=Ce(),i=Xu(),{checkPassRateTrend:{data:o,isLoading:s,isError:c},checkPassRateSnapshot:{data:d}}=Ne(),m=(a=(e=o==null?void 0:o.overallCheckPassRates)==null?void 0:e.length)!=null?a:0,u=we((n=o==null?void 0:o.overallCheckPassRates)!=null?n:[]),p=(r=d==null?void 0:d.overallCheckPassRates)==null?void 0:r[0];let h;p?h=`${p}%`:h="No Data";const y=t.createElement(T,{className:i.overallSummaryBox},t.createElement(yr,{value:p!=null?p:0,text:h,styles:br({textColor:ee(l),pathColor:Ze(l)[0],trailColor:l.palette.divider,textSize:m?void 0:8})}),t.createElement(v,{className:i.summaryText},"Current check pass rate")),k=!(o!=null&&o.overallCheckPassRates)||!m||s||c;return t.createElement(ra,{title:"Check pass rate",subtitle:"Aggregate pass rate for checks",summaryCardContent:y,chartSectionContent:t.createElement(xt,{chartData:u}),disableDataExport:k,csvFilename:qm,csvData:ju(o)})},Ju=()=>{var e;const{entityPassRatesOverviewTrends:{data:a,isLoading:n,isError:r}}=Ne(),l=(e=a==null?void 0:a.overallEntityPassRates)==null?void 0:e.length,i=!(a!=null&&a.overallEntityPassRates)||!l||n||r;return t.createElement(ra,{title:"Entity pass rate",subtitle:"By default, this chart shows the top 5 entities by pass rate for all teams with which you are associated. To see a different set of entities, use the filters.",chartSectionContent:t.createElement($u,null),disableDataExport:i,csvFilename:Ym,csvData:Qu(a)})},ep=()=>{var e;const{groupPassRatesOverviewTrends:{data:a,isLoading:n,isError:r}}=Ne(),l=(e=a==null?void 0:a.groupPassRates)==null?void 0:e.length,i=!(a!=null&&a.groupPassRates)||!l||n||r;return t.createElement(ra,{title:"Team pass rate",subtitle:"Compare the aggregate pass rate for teams",chartSectionContent:t.createElement(Vu,null),disableDataExport:i,csvFilename:Xm,csvData:Yu(a)})},tp=()=>{var e;const{trackPassRateOverviewTrend:{data:a,isLoading:n,isError:r}}=Ne(),l=(e=a==null?void 0:a.overallTrackPassRate)==null?void 0:e.length,i=!(a!=null&&a.overallTrackPassRate)||!l||n||r;return t.createElement(ra,{title:"Track pass rate",subtitle:"Aggregate pass rate for tracks",summaryCardContent:t.createElement(Gu,null),chartSectionContent:t.createElement(Iu,null),disableDataExport:i,csvFilename:Qm,csvData:qu(a)})},ap=B(e=>({root:{display:"flex",flexDirection:"column",gap:e.spacing(2),flex:1,background:e.palette.background.default}})),np=()=>{const e=ap();return t.createElement(T,{className:e.root},t.createElement(Ou,null,t.createElement(Zu,null),t.createElement(tp,null),t.createElement(Ju,null),t.createElement(ep,null)))},re=B(e=>({root:{display:"flex",flexDirection:"column",flex:1,background:e.palette.background.default},ownerText:{fontWeight:500,color:ee(e)},flexColumn:{display:"flex",flexDirection:"column",gap:e.spacing(.5)},boldText:{fontWeight:"bold"},descriptionText:{maxWidth:400,color:ee(e),fontSize:e.typography.subtitle2.fontSize,lineHeight:e.typography.subtitle1.fontSize},detailButton:{textTransform:"none",backgroundColor:"transparent","&:hover":{backgroundColor:e.palette.action.hover}}})),la=({name:e="",description:a=""})=>{const n=re();return t.createElement(T,{className:n.flexColumn},t.createElement(v,{className:n.boldText},e),t.createElement(Lt,{className:n.descriptionText,content:a!=null?a:""}))},ia=({navigateTo:e})=>{const a=re(),n=pe();return t.createElement(H,{variant:"text",className:a.detailButton,onClick:()=>n(e)},t.createElement(v,{className:a.ownerText},"View detail"))},rp=e=>(e==null?void 0:e.kind)==="Group",lp=e=>(e==null?void 0:e.kind)==="User",wn=({ownerEntityRef:e})=>{var a,n;const{data:r,error:l}=Gi(e!=null?e:void 0);if(r){let i;return rp(r)||lp(r)?i=(n=r.metadata.title)!=null?n:(a=r.spec.profile)==null?void 0:a.displayName:i=r.metadata.name,t.createElement(Fe,{entityRef:Sa(r),title:i})}else if(l&&e)return t.createElement(ne,{title:"Unable to pull owner reference from Catalog API"},t.createElement(v,{style:{color:"red"},variant:"body2"},(()=>{try{return j(e).name}catch{return e}})()));return null};var fe=(e=>(e[e.UP=0]="UP",e[e.DOWN=1]="DOWN",e[e.FLAT=2]="FLAT",e))(fe||{});const ip=R(e=>({cardSection:{marginBottom:e.spacing(2)},listItem:{padding:0},listItemText:{margin:0}})),op=({ownerEntityRef:e,passRates:a})=>{const n=ip();return t.createElement(Ot,{dense:!0,disablePadding:!0,className:n.cardSection},t.createElement(v,{variant:"overline",color:"textSecondary"},"Details"),e&&t.createElement(be,{disableGutters:!0,className:n.listItem},t.createElement(ne,{title:"Owner"},t.createElement(te,null,t.createElement(Wt,{color:"action",fontSize:"small"}))),t.createElement(ae,{className:n.listItemText,primary:t.createElement(Fe,{entityRef:e!=null?e:"No Owner",hideIcon:!0})})),a.map(({name:r,value:l,trend:i},o)=>t.createElement(be,{disableGutters:!0,className:n.listItem,key:o},t.createElement(ne,{title:"The most recent pass rate."},t.createElement(te,null,i===fe.UP&&t.createElement(Wo,{color:"primary",fontSize:"small"}),i===fe.DOWN&&t.createElement(Bo,{color:"error",fontSize:"small"}),i===fe.FLAT&&t.createElement(Go,{color:"action",fontSize:"small"}))),t.createElement(ae,{className:n.listItemText,primary:t.createElement(v,{variant:"body2",color:"textSecondary"},r!=null?r:"Latest Pass Rate",": ",t.createElement("b",null,Math.round(l),"%"))}))))},sp=B(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"}})),Rt=({data:e})=>{const a=sp(),n=pe(),[r,l]=S(0),[i,o]=S(10);G(()=>{l(0)},[e.length]);const s=(p,h)=>{l(h)},c=p=>{try{const h=Number.parseInt(p.target.value,10);o(h),l(0)}catch{}},d=r*i,m=d+i,u=[{dataKey:"passRate",name:"Pass rate"}];return t.createElement(T,{className:a.root},t.createElement(g,{container:!0,spacing:2,className:a.gridContainer},e.slice(d,m).map((p,h)=>{var y,k;return t.createElement(g,{item:!0,key:h,xs:12,sm:12,md:6,lg:4,xl:3},t.createElement(vt,{title:(y=p.name)!=null?y:p.id,description:p.description,children:t.createElement(T,{className:a.cardContent},t.createElement(T,{className:a.footer},t.createElement(op,{ownerEntityRef:p.owner,passRates:p.lineChart.snapshotPassRates}),t.createElement(wt,{data:p.lineChart.trendPassRates,lines:(k=p.lineChart.lineConfigs)!=null?k:u}))),handleView:()=>n(p.navigateTo)}))})),t.createElement(On,{rowsPerPageOptions:[10,25,50],component:"div",count:e.length,rowsPerPage:i,page:r,onPageChange:s,onRowsPerPageChange:c,labelRowsPerPage:"Items per page:"}))},cp=B(e=>({paper:{width:"100%",boxShadow:"none",border:`1px solid ${e.palette.divider}`,borderRadius:e.shape.borderRadius},tableHeaderCell:{fontWeight:"bold"}})),Pt=({data:e,columns:a})=>{const n=cp(),[r,l]=S(0),[i,o]=S(10);G(()=>{l(0)},[e.length]);const s=(u,p)=>{l(p)},c=u=>{o(+u.target.value),l(0)},d=r*i,m=d+i;return t.createElement(Te,{className:n.paper},t.createElement(oi,{size:"small"},t.createElement(si,null,t.createElement(In,null,a.map(u=>t.createElement(Dn,{key:`header-${u.id}`,className:n.tableHeaderCell},u.label)))),t.createElement(ci,null,e.slice(d,m).map(u=>t.createElement(In,{key:u.id},a.map(p=>t.createElement(Dn,{key:`cell-${p.id}`},p.renderCell?p.renderCell(u):u[p.id])))))),t.createElement(On,{rowsPerPageOptions:[10,25,50],component:"div",count:e.length,rowsPerPage:i,page:r,onPageChange:s,onRowsPerPageChange:c}))};var dp=(e=>(e.Check="check",e.Track="track",e.Entity="entity",e.Group="group",e))(dp||{}),q=(e=>(e[e.TABLE=0]="TABLE",e[e.GRID=1]="GRID",e))(q||{});function oa(e){if(!e||!e.length)return fe.FLAT;if(e.length===1)return e[0]>0?fe.UP:fe.FLAT;const a=e[e.length-1]-e[0];return a<0?fe.DOWN:a>0?fe.UP:fe.FLAT}function mp(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:oa((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 up(e,a){return e.map(n=>{var r,l,i,o;return{id:n.id,name:j(n.id).name,description:(r=n.entityDescription)!=null?r:void 0,lineChart:{snapshotPassRates:[{value:n.snapshotPassRate,trend:oa((l=n.trendPassRates)!=null?l:[])}],trendPassRates:we((i=n.trendPassRates)!=null?i:[])},owner:(o=n.entityOwnerRef)!=null?o:void 0,navigateTo:`${a(j(n.id))}/soundcheck`}})}function pp(e,a){return e.map(n=>{var r,l,i;return{id:n.id,name:(r=n.groupTitle)!=null?r:j(n.id).name,lineChart:{snapshotPassRates:[{value:n.snapshotPassRate,trend:oa((l=n.trendPassRates)!=null?l:[])}],trendPassRates:we((i=n.trendPassRates)!=null?i:[])},navigateTo:a(j(n.id))}})}const Pl=(e,a,n)=>{let r="";return a?r=a({trackId:e}):n&&(r=n({campaignId:e})),r};function Nl(e,a,n){return e.map(r=>{var l,i,o,s,c,d,m;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:h,trendPassRates:y})=>({name:p?`Level ${u} (${p})`:`Level ${u}`,value:h,trend:oa(y!=null?y:[])})))!=null?s:[],trendPassRates:wl({overallTrackPassRate:r.levels}),lineConfigs:(d=(c=r.levels)==null?void 0:c.map(({levelOrdinal:u,levelName:p})=>({dataKey:`Level${u}`,name:p!=null?p:`Level ${u}`})))!=null?d:[]},owner:(m=r.trackOwnerRef)!=null?m:void 0,navigateTo:Pl(r.id,a,n)}})}const hp=B(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"}})),Nt=({viewMode:e,setViewMode:a,isLoading:n,searchTerm:r,setSearchTerm:l,searchPlaceholder:i,csvData:o,csvFilename:s})=>{const c=hp(),d=(k,f)=>{f!==null&&a(f)},[m,u]=t.useState(null),p=!!m,h=k=>{u(k.currentTarget)},y=()=>{u(null)};return t.createElement(g,{container:!0,spacing:2,className:c.header},t.createElement(g,{item:!0,xs:6},t.createElement(qa,{searchTerm:r,setSearchTerm:l,disabled:n,placeholder:i||"Search",variant:"outlined",size:"small"})),t.createElement(g,{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:h,endIcon:t.createElement(zo,null)},"Export"),t.createElement(pa,{id:"export-menu",anchorEl:m,getContentAnchorEl:null,open:p,onClose:y,MenuListProps:{"aria-labelledby":"export-button",disablePadding:!0},anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"}},t.createElement(Sr,{data:o,filename:s},t.createElement(ye,{onClick:y,className:c.menuItem},t.createElement(te,{className:c.listItemIcon},t.createElement(Ho,null)),t.createElement(ae,null,"CSV")))),t.createElement(io,{size:"small",value:e,exclusive:!0,onChange:d},t.createElement(lr,{value:q.TABLE,title:"Table view"},t.createElement(_o,{color:"primary"})),t.createElement(lr,{value:q.GRID,title:"Grid view"},t.createElement(Vo,{color:"primary"})))))},gp=({row:{trendPassRates:e,snapshotPassRate:a}})=>{const n=re(),r=we(e!=null?e:[]);return t.createElement(T,{className:n.flexColumn},t.createElement(v,{className:n.boldText},Math.round(a),"%"),t.createElement(xt,{chartData:r,tableChart:!0}))},vp=(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 d=(c=s.levels)==null?void 0:c.find(({levelOrdinal:m})=>m===o);return d?t.createElement(gp,{row:d}):t.createElement(t.Fragment,null)}}})},Ll=(e,a,n,r)=>{const l=e.flatMap(s=>{var c;return((c=s.levels)==null?void 0:c.map(d=>d.levelOrdinal))||[]}),i=Math.min(...l),o=Math.max(...l);return[{label:"NAME",id:"trackName",renderCell:s=>{var c;return t.createElement(la,{name:(c=s.trackName)!=null?c:s.id,description:s.trackDescription})}},...vp(i,o,!!n),{label:"OWNER",id:"trackOwnerRef",renderCell:s=>{var c;return t.createElement(wn,{ownerEntityRef:(c=s.trackOwnerRef)!=null?c:void 0})}},{label:"ACTION",id:"action",renderCell:({id:s})=>{var c;let d=s;return n&&r&&(d=(c=r.find(({trackId:m})=>m===s))==null?void 0:c.campaignId),d?t.createElement(ia,{navigateTo:Pl(d,a,n)}):t.createElement(t.Fragment,null)}}]},fp=()=>{const e=re(),{filter:a}=ve(),n=Q(Xn),{data:r,isLoading:l,isError:i}=Dr(a),{data:o,isLoading:s,isError:c}=Wa(a),[d,m]=S(q.TABLE),[u,p]=S(""),h=K(()=>{var E;return Ll((E=r==null?void 0:r.individualTrackPassRate)!=null?E:[],n)},[r==null?void 0:r.individualTrackPassRate,n]),y=l||s;if(y)return t.createElement(ke,null);if(i||c)return t.createElement(v,{color:"error"},"Failed to load tracks");const{individualTrackPassRate:k}=r;if(!k)return t.createElement(v,{color:"error"},"No available tracks");const f=u.length?k.filter(({id:E,trackName:C})=>{var x;return((x=C==null?void 0:C.toLowerCase())==null?void 0:x.includes(u.toLowerCase()))||E.toLowerCase().includes(u.toLowerCase())}):k;f.forEach(E=>{var C;const x=(C=o==null?void 0:o.individualTrackPassRate)==null?void 0:C.find(({id:N})=>N===E.id);x&&E.levels.forEach(N=>{var L,I;N.trendPassRates=(I=(L=x==null?void 0:x.levels)==null?void 0:L.find(({levelOrdinal:P})=>P===N.levelOrdinal))==null?void 0:I.trendPassRates})});const b=Rl(f);return t.createElement(T,{className:e.root},t.createElement(g,{container:!0,direction:"row"},t.createElement(Nt,{viewMode:d,setViewMode:m,isLoading:y,searchTerm:u,setSearchTerm:p,searchPlaceholder:"Search available tracks",csvData:b,csvFilename:Jm}),d===q.TABLE&&t.createElement(Pt,{data:f,columns:h}),d===q.GRID&&t.createElement(Rt,{data:Nl(f,n)})))},xn=({snapshot:e})=>{const a=re();return t.createElement(T,{className:a.flexColumn},t.createElement(v,{className:a.boldText},Math.round(e),"%"))},Ep=({row:{trendPassRates:e}})=>{const a=re(),n=we(e!=null?e:[]);return t.createElement(T,{className:a.flexColumn},t.createElement(xt,{chartData:n,tableChart:!0}))};function yp(e){return[{label:"NAME",id:"entityName",renderCell:({id:a,entityDescription:n})=>t.createElement(la,{name:j(a).name,description:n})},{label:"LATEST",id:"latest",renderCell:a=>t.createElement(xn,{snapshot:a.snapshotPassRate})},{label:"TREND",id:"trend",renderCell:a=>t.createElement(Ep,{row:a})},{label:"OWNER",id:"entityOwnerRef",renderCell:({entityOwnerRef:a})=>t.createElement(wn,{ownerEntityRef:a!=null?a:void 0})},{label:"ACTION",id:"action",renderCell:({id:a})=>t.createElement(ia,{navigateTo:`${e(j(a))}/soundcheck`})}]}const bp=()=>{const e=re(),{filter:a}=ve(),n=Q(Ra),{data:r,isLoading:l,isError:i}=Wi(a),{data:o,isLoading:s,isError:c}=os(a),[d,m]=S(q.TABLE),[u,p]=S("");if(l||s)return t.createElement(ke,null);if(i||c)return t.createElement(v,{color:"error"},"Failed to load entities");const{individualEntityPassRates:h}=r;if(!h)return t.createElement(v,{color:"error"},"No available entities");const y=u.length?h.filter(({id:f})=>{var b;return(b=f.toLowerCase())==null?void 0:b.includes(u.toLowerCase())}):h;y.forEach(f=>{var b;const E=(b=o==null?void 0:o.individualEntityPassRates)==null?void 0:b.find(({id:C})=>C===f.id);E!=null&&E.trendPassRates&&(f.trendPassRates=E.trendPassRates)});const k=_u(y);return t.createElement(T,{className:e.root},t.createElement(g,{container:!0,direction:"row"},t.createElement(Nt,{viewMode:d,setViewMode:m,isLoading:l||s,searchTerm:u,setSearchTerm:p,searchPlaceholder:"Search available entities",csvData:k,csvFilename:eu}),d===q.TABLE&&t.createElement(Pt,{data:y,columns:yp(n)}),d===q.GRID&&t.createElement(Rt,{data:up(y,n)})))},Cp=({row:{trendPassRates:e}})=>{const a=re(),n=we(e!=null?e:[]);return n.length?t.createElement(T,{className:a.flexColumn},t.createElement(xt,{chartData:n,tableChart:!0})):t.createElement(T,{className:a.flexColumn},t.createElement(v,null,"No data"))};function kp(e){return[{label:"NAME",id:"groupName",renderCell:({groupTitle:a,id:n})=>t.createElement(la,{name:a!=null?a:j(n).name})},{label:"LATEST",id:"latest",renderCell:a=>t.createElement(xn,{snapshot:a.snapshotPassRate})},{label:"TREND",id:"trend",renderCell:a=>t.createElement(Cp,{row:a})},{label:"ACTION",id:"action",renderCell:({id:a})=>t.createElement(ia,{navigateTo:e(j(a))})}]}const wp=()=>{var e;const a=re(),{filter:n}=ve();n.context=void 0;const r=Q(Ra),{data:l,isLoading:i,isError:o}=cs(n),{data:s,isLoading:c,isError:d}=ds(n),[m,u]=S(q.TABLE),[p,h]=S("");if(i||c)return t.createElement(ke,null);if(o||d)return t.createElement(v,{color:"error"},"Failed to load groups");if(!((e=l==null?void 0:l.groupPassRates)!=null&&e.length))return t.createElement(v,{color:"error"},"No available groups");const{groupPassRates:y}=l,k=p.length?y.filter(({id:b,groupTitle:E})=>{var C;return((C=E==null?void 0:E.toLowerCase())==null?void 0:C.includes(p.toLowerCase()))||b.toLowerCase().includes(p.toLowerCase())}):y;k.forEach(b=>{var E;const C=(E=s==null?void 0:s.groupPassRates)==null?void 0:E.find(x=>x.id===b.id);C!=null&&C.trendPassRates&&(b.trendPassRates=C.trendPassRates)});const f=Uu(k);return t.createElement(T,{className:a.root},t.createElement(g,{container:!0,direction:"row"},t.createElement(Nt,{viewMode:m,setViewMode:u,isLoading:i||c,searchTerm:p,setSearchTerm:h,searchPlaceholder:"Search available teams",csvFilename:tu,csvData:f}),m===q.TABLE&&t.createElement(Pt,{data:k,columns:kp(r)}),m===q.GRID&&t.createElement(Rt,{data:pp(k,r)})))},xp=()=>{const e=re(),{filter:a}=ve(),n=Q(Un),{data:r}=Hn({orderAlphabetical:"default",searchByStatus:"active"}),l=r==null?void 0:r.edges.map(L=>L.node),i=l==null?void 0:l.map(({id:L,track:I})=>({campaignId:L,trackId:I.id})),o=i==null?void 0:i.map(({trackId:L})=>({trackId:L})),{data:s,isLoading:c,isError:d}=Dr({...a,tracks:o,trackTypes:{included:["campaign"]}}),{data:m,isLoading:u,isError:p}=Wa({...a,tracks:o,trackTypes:{included:["campaign"]}}),[h,y]=S(q.TABLE),[k,f]=S(""),b=K(()=>{var L;return Ll((L=s==null?void 0:s.individualTrackPassRate)!=null?L:[],void 0,n,i)},[s==null?void 0:s.individualTrackPassRate,n,i]),E=u||c;if(E)return t.createElement(ke,null);if(p||d)return t.createElement(v,{color:"error"},"Failed to load campaign tracks");const{individualTrackPassRate:C}=s;if(!C)return t.createElement(v,{color:"error"},"No available campaign tracks");const x=k.length?C.filter(({id:L,trackName:I})=>{var P;return((P=I==null?void 0:I.toLowerCase())==null?void 0:P.includes(k.toLowerCase()))||L.toLowerCase().includes(k.toLowerCase())}):C;x.forEach(L=>{var I,P;const X=(I=m==null?void 0:m.individualTrackPassRate)==null?void 0:I.find(({id:le})=>le===L.id);X&&((P=L==null?void 0:L.levels)==null||P.forEach(le=>{var ue,Ee;le.trendPassRates=(Ee=(ue=X==null?void 0:X.levels)==null?void 0:ue.find(({levelOrdinal:Oe})=>Oe===le.levelOrdinal))==null?void 0:Ee.trendPassRates}))});const N=Rl(x,i);return t.createElement(T,{className:e.root},t.createElement(g,{container:!0,direction:"row"},t.createElement(Nt,{viewMode:h,setViewMode:y,isLoading:E,searchTerm:k,setSearchTerm:f,searchPlaceholder:"Search available campaigns",csvData:N,csvFilename:au}),h===q.TABLE&&t.createElement(Pt,{data:x,columns:b}),h===q.GRID&&t.createElement(Rt,{data:Nl(x,void 0,n)})))},Tp=({row:e})=>{var a;const n=re(),r=we((a=e.trendPassRates)!=null?a:[]);return t.createElement(T,{className:n.flexColumn},t.createElement(xt,{chartData:r,tableChart:!0}))};function Sp(e){return[{label:"NAME",id:"checkName",renderCell:a=>{var n;return t.createElement(la,{name:(n=a.checkName)!=null?n:a.id,description:a.checkDescription})}},{label:"LATEST",id:"snapshotPassRate",renderCell:a=>t.createElement(xn,{snapshot:a.snapshotPassRate})},{label:"TREND",id:"trendPassRate",renderCell:a=>t.createElement(Tp,{row:a})},{label:"OWNER",id:"checkOwner",renderCell:a=>{var n;return t.createElement(wn,{ownerEntityRef:(n=a.checkOwnerRef)!=null?n:void 0})}},{label:"ACTION",id:"action",renderCell:a=>t.createElement(ia,{navigateTo:e({checkId:a.id})})}]}const Rp=()=>{const e=re(),{filter:a}=ve(),n=Q(Qn),{data:r,isLoading:l,isError:i}=Ir(a),{data:o,isLoading:s,isError:c}=rs(a),[d,m]=S(q.TABLE),[u,p]=S("");if(l||s)return t.createElement(ke,null);if(i||c)return t.createElement(v,{color:"error"},"Failed to load checks");const{individualCheckPassRates:h}=r;if(!h)return t.createElement(v,{color:"error"},"No available checks");h.forEach(f=>{var b,E;f.trendPassRates=(E=(b=o==null?void 0:o.individualCheckPassRates)==null?void 0:b.find(C=>C.id===f.id))==null?void 0:E.trendPassRates});const y=u.length?h.filter(({id:f,checkName:b})=>{var E;return((E=b==null?void 0:b.toLowerCase())==null?void 0:E.includes(u.toLowerCase()))||f.toLowerCase().includes(u.toLowerCase())}):h,k=zu(y);return t.createElement(T,{className:e.root},t.createElement(g,{container:!0,direction:"row"},t.createElement(Nt,{viewMode:d,setViewMode:m,isLoading:l,searchTerm:u,setSearchTerm:p,searchPlaceholder:"Search available checks",csvData:k,csvFilename:Zm}),d===q.TABLE&&t.createElement(Pt,{data:y,columns:Sp(n)}),d===q.GRID&&t.createElement(Rt,{data:mp(y,n)})))},Pp=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}`}}})),Np=()=>{const e=Pp(),a=D(ct),n=!a.getRegisteredFlags().find(r=>r.name==="soundcheck-enable-campaigns")||a.isActive("soundcheck-enable-campaigns");return t.createElement(bu,null,t.createElement("div",{className:e.container},t.createElement("div",{className:e.fixedColumn},t.createElement(Lu,null)),t.createElement("div",{className:e.flexibleColumn},t.createElement(T,{className:e.pageLayout},t.createElement(Vn,null,t.createElement(Se,{path:"/*",element:t.createElement(Z,null,t.createElement(Z.Route,{title:"Summary",path:"/"},t.createElement(np,null)),n&&t.createElement(Z.Route,{title:"Campaigns",path:"/campaigns"},t.createElement(xp,null)),t.createElement(Z.Route,{title:"Checks",path:"/checks"},t.createElement(Rp,null)),t.createElement(Z.Route,{title:"Tracks",path:"/tracks"},t.createElement(fp,null)),t.createElement(Z.Route,{title:"Entities",path:"/entities"},t.createElement(bp,null)),t.createElement(Z.Route,{title:"Teams",path:"/teams"},t.createElement(wp,null)))}))))))},sa={WHITE:"#ffffff",BRONZE:"#e07000",SILVER:"#cccccc",GOLD:"#ffc121"},Tn=[sa.BRONZE,sa.SILVER,sa.GOLD],Lp={variant:Zn.Medal,options:{level:0,color:""}},Op=(e,a)=>{const n=Tn.slice(Tn.length-Math.min(a,Tn.length));return n.length<a&&n.unshift(...Array(a-n.length).fill(sa.WHITE)),n[e-1]},Ip=(e,a)=>{if(e===0)return Lp;const n=a.levels.filter(r=>r.ordinal!==0).length;return{variant:Zn.Medal,options:{level:e,color:Op(e,n)}}},ot=(e,a)=>{if(isNaN(a))return"#ddd";const n=100;return a<n/3?e.palette.status.error:a<n*(2/3)?e.palette.status.warning:e.palette.status.ok},Dp=({data:e,lineConfig:a,color:n})=>{const r=Ce(),l=ee(r);return e.length?t.createElement(Fa,{minHeight:100,debounce:1},t.createElement(Io,{data:e},t.createElement(pt,{vertical:!1,opacity:Ct}),t.createElement(Ye,{dataKey:bt,stroke:l,style:{fontSize:"0.7rem"}}),t.createElement(Xe,{width:ta,domain:Pe,stroke:l,style:{fontSize:"0.7rem"}}),t.createElement(Do,{key:a.dataKey,dataKey:a.dataKey,name:a.name,stackId:"1",type:"monotone",stroke:n,strokeWidth:1.2,fill:n}))):t.createElement(yl,null)},$p=(e,a)=>{for(const n of e.levels)for(const r of n.checks)if(r.id===a.id)return r.name;return a.name?a.name:a.id},Ol=R(e=>({card:{display:"flex",flexDirection:"column",border:`1px solid ${e.palette.divider}`,width:"99%"},title:{fontWeight:"bold",fontSize:"0.9rem",cursor:"default",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},headerRow:{display:"flex",padding:e.spacing(1,1),borderBottom:`1px solid ${e.palette.divider}`,width:"100%"},headerSection:{display:"flex",flexDirection:"column",gap:e.spacing(.5),flexGrow:1,width:"100%"},contentRow:{padding:e.spacing(1,1,0),display:"flex"},leftSection:{width:"75px",minWidth:"75px"},summaryCard:{height:"100%",display:"flex",flexDirection:"column",justifyContent:"space-between"},chartSection:{flex:1,width:"100%",minWidth:"150px"},chartSkeletonSection:{flex:1,width:"100%",minWidth:"150px",padding:e.spacing(0,0,1,1)},overallSummaryBox:{display:"flex",flexDirection:"column",height:"100%",color:ee(e),textAlign:"center",gap:e.spacing(2)}})),Ap=()=>{const e=Ol();return t.createElement(T,{className:e.contentRow},t.createElement(T,{className:e.leftSection},t.createElement(T,{className:e.summaryCard},t.createElement(Rr,{variant:"circle",height:75}))),t.createElement(T,{className:e.chartSkeletonSection},t.createElement(Rr,{variant:"rect",height:92})))},Fp=({check:e,track:a})=>{var n,r,l;const i=Ol(),o=Ce(),{data:s,isLoading:c}=Or({tracks:[{trackId:a.id}],checkIds:{included:[e.id]},numberOfDays:30}),{data:d,isLoading:m}=Ir({tracks:[{trackId:a.id}],checkIds:{included:[e.id]}}),u={dataKey:"passRate",name:"Pass rate"},p=(r=(n=s==null?void 0:s.overallCheckPassRates)==null?void 0:n.length)!=null?r:0,h=we((l=s==null?void 0:s.overallCheckPassRates)!=null?l:[]),y=d!=null&&d.individualCheckPassRates&&d.individualCheckPassRates.length?Math.round(d.individualCheckPassRates[0].snapshotPassRate):0;let k;!(d!=null&&d.individualCheckPassRates)||!d.individualCheckPassRates.length?k="No Data":k=`${y}%`;const f=t.createElement(T,{className:i.overallSummaryBox},t.createElement(yr,{value:y,text:k,styles:br({textColor:ee(o),pathColor:ot(o,y),trailColor:o.palette.divider,textSize:p?void 0:10})}));return t.createElement(Te,{className:i.card,elevation:0},t.createElement(T,{className:i.headerRow},t.createElement(T,{className:i.headerSection},t.createElement(v,{className:i.title},$p(a,e)))),c||m?t.createElement(Ap,null):t.createElement(T,{className:i.contentRow},f&&t.createElement(T,{className:i.leftSection},t.createElement(T,{className:i.summaryCard},f)),t.createElement(T,{className:i.chartSection},t.createElement(Dp,{data:h,lineConfig:u,color:ot(o,y)}))))},Mp=R(()=>({root:{display:"flex"},boldCaption:{fontWeight:"bold"}})),Bp=({ordinal:e,name:a,description:n})=>{const r=Mp();return t.createElement("div",{className:r.root},t.createElement("div",null,a?t.createElement(t.Fragment,null,t.createElement("div",null,t.createElement(v,{variant:"caption",className:r.boldCaption},a)),t.createElement("div",null,t.createElement(v,{variant:"caption"},`Level ${e}`))):t.createElement(v,{variant:"caption",className:r.boldCaption},`Level ${e}`),n&&t.createElement(Lt,{content:n})))},Gp=({children:e,level:a})=>{const{ordinal:n,name:r,description:l}=a;return t.createElement(Vi,{arrow:!0,title:t.createElement(Bp,{ordinal:n,name:r!=null?r:void 0,description:l!=null?l:void 0}),enterDelay:500,placement:"bottom"},e)},Wp=(e,a)=>{if(!(e!=null&&e.overallTrackPassRate)||a===void 0)return;const n=e.overallTrackPassRate.filter(r=>r.levelOrdinal>=a).reduce((r,l)=>r+(l.snapshotPassRate||0),0);return Math.round(Math.min(100,n))},Vp=B(e=>({card:{border:`1px solid ${e.palette.divider}`,width:"99%"},title:{fontWeight:"bold",fontSize:"1.1rem",cursor:"default"},header:{padding:e.spacing(1.5,2),borderBottom:`1px solid ${e.palette.divider}`},levelNameContainer:{gridGap:e.spacing(1)},passRate:{fontWeight:"bold",fontSize:e.typography.overline.fontSize,cursor:"default"},gaugeContainer:{width:200,paddingLeft:e.spacing(.75),paddingRight:e.spacing(.75),paddingTop:2},content:{padding:e.spacing(2.5,2),display:"flex",gap:e.spacing(2)},description:{padding:0},gridItem:{padding:0}})),Hp=({track:e,level:a,index:n})=>{var r,l;const i=Vp(),{data:o}=Ga({tracks:[{trackId:e.id}],numberOfDays:30}),s=Ze(Ce()),c=Wp(o,a.ordinal),d=c!==void 0?`${c}%`:"";return t.createElement(Te,{elevation:1,className:i.card},t.createElement(T,{className:i.header},t.createElement(g,{container:!0,alignItems:"center",justifyContent:"space-between"},t.createElement(g,{item:!0},t.createElement(g,{container:!0,item:!0,alignItems:"center",justifyContent:"space-between",className:i.levelNameContainer},t.createElement(nr,{badge:(r=a.badge)!=null?r:Ip(a.ordinal,e)}),t.createElement(Gp,{level:a},t.createElement(v,{className:i.title},(l=a.name)!=null?l:`Level ${a.ordinal}`)))),t.createElement(g,{item:!0},t.createElement(g,{container:!0},t.createElement(v,{variant:"overline",className:i.passRate},d),t.createElement("div",{className:i.gaugeContainer},t.createElement(Al,{value:c!=null?c:0,getColor:m=>s[n]})))))),t.createElement(T,{className:i.content},t.createElement(g,{container:!0,spacing:1},a.checks.map(m=>t.createElement(g,{item:!0,xs:12,sm:6,md:4,className:i.gridItem,key:m.id},t.createElement(Fp,{track:e,check:m}))))))};function zp(e){const a=D(A);return V([O.TrackEntities,e],async()=>a.getTrackEntities(e),{refetchOnWindowFocus:!1})}const _p=R(e=>{const a=e.palette.background.paper;return{popoverRoot:{backgroundColor:a,maxWidth:1e3},content:{padding:e.spacing(2)},popper:{zIndex:2e3,'&[x-placement*="bottom"] $arrow':{top:0,left:0,marginTop:"-0.71em",marginLeft:4,marginRight:4,"&::before":{transformOrigin:"0 100%"}},'&[x-placement*="top"] $arrow':{bottom:0,left:0,marginBottom:"-0.71em",marginLeft:4,marginRight:4,"&::before":{transformOrigin:"100% 0"}},'&[x-placement*="right"] $arrow':{left:0,marginLeft:"-0.71em",height:"1em",width:"0.71em",marginTop:4,marginBottom:4,"&::before":{transformOrigin:"100% 100%"}},'&[x-placement*="left"] $arrow':{right:0,marginRight:"-0.71em",height:"1em",width:"0.71em",marginTop:4,marginBottom:4,"&::before":{transformOrigin:"0 0"}}},arrow:{overflow:"hidden",position:"absolute",width:"1em",height:"0.71em",boxSizing:"border-box",color:a,"&::before":{content:'""',margin:"auto",display:"block",width:"100%",height:"100%",boxShadow:e.shadows[1],backgroundColor:"currentColor",transform:"rotate(45deg)"}}}}),Up=({placement:e="top",arrow:a=!0,open:n,onClose:r=()=>{},content:l,children:i})=>{const o=_p(),[s,c]=t.useState(null),[d,m]=t.useState(null);return t.createElement("div",{"data-testid":"rich-tooltip"},t.cloneElement(i,{...i.props,ref:m}),t.createElement(di,{open:n,anchorEl:d,placement:e,transition:!0,className:o.popper,modifiers:{preventOverflow:{enabled:!0,boundariesElement:"window"},arrow:{enabled:a,element:s}}},({TransitionProps:u})=>t.createElement(mi,{...u,timeout:350},t.createElement(Te,{elevation:3},t.createElement(ui,{onClickAway:r},t.createElement(Te,{className:o.popoverRoot},a?t.createElement("span",{className:o.arrow,ref:c}):null,t.createElement(T,{className:o.content},l)))))))},Il=e=>{const a=e.total-e.notApplicable;return a===0?100:Math.round(e.passed/a*100)},Kp=(e,a)=>e.levels.find(n=>n.ordinal===a),jp=R(e=>({cell:{backgroundColor:({passRate:a})=>$n(ot(e,a),.75),color:({passRate:a})=>An(ot(e,a),.7),cursor:"default",borderRadius:"4px",textAlign:"center",fontSize:".9rem",width:"50px"},tooltip:{width:"225px"},topLevelStatus:{borderBottom:`1px solid ${e.palette.divider}`,paddingBottom:e.spacing(1)},levelStatus:{borderBottom:`1px solid ${e.palette.divider}`,paddingTop:e.spacing(1),paddingBottom:e.spacing(1)},bottomLevelStatus:{paddingTop:e.spacing(1)},levelPassRate:{backgroundColor:({passRate:a})=>$n(ot(e,a),.75),color:({passRate:a})=>An(ot(e,a),.7),borderRadius:"4px",textAlign:"center",fontSize:".7rem",width:"32px",height:"15px"}})),qp=({track:e,status:a})=>{const n=Il(a),r=jp({passRate:n}),[l,i]=S(!1),o=ba(null),s=()=>{o.current=setTimeout(()=>i(!0),500)},c=()=>{clearTimeout(o.current),i(!1)};return t.createElement(Up,{content:t.createElement("div",{className:r.tooltip},a.statusByLevel.map((d,m)=>{var u;let p;m===0?p=r.topLevelStatus:m===a.statusByLevel.length-1?p=r.bottomLevelStatus:p=r.levelStatus;const h=Kp(e,d.ordinal);return t.createElement("div",{key:m,className:p,style:{display:"flex",flexDirection:"column",justifyContent:"space-between"}},t.createElement("div",null,t.createElement(v,{variant:"caption",style:{fontWeight:"bold"}},(u=h==null?void 0:h.name)!=null?u:`Level ${d.ordinal}`)),t.createElement("div",{style:{display:"flex",justifyContent:"space-between"}},t.createElement(v,{variant:"caption"},`Passing ${d.passed} of ${d.total-d.notApplicable} checks`),t.createElement(v,{className:r.levelPassRate},`${Il(d)}%`)))})),open:l,placement:"bottom",onClose:()=>i(!1)},t.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center"},onMouseEnter:s,onMouseLeave:c},t.createElement(v,{className:r.cell},`${n}%`)))},We=Object.freeze({createBadgeColumn(){return{title:"",field:"badge",render:e=>e.badge?t.createElement(nr,{badge:e.badge}):t.createElement(to,null),width:"auto",align:"center",sorting:!1}},createStatusColumn(){return{title:"Checks",field:"status",render:e=>e.status&&t.createElement(qp,{track:e.track,status:e.status}),width:"auto",align:"center",sorting:!1}},createNameColumn(e){return{title:"Name",field:"resolved.entityRef",highlight:!0,customSort(a,n){return 0},render:({entity:a})=>t.createElement(Fe,{entityRef:a,defaultKind:(e==null?void 0:e.defaultKind)||"Component"})}},createSystemColumn(){return{title:"System",field:"resolved.partOfSystemRelationTitle",customSort(e,a){return 0},render:({resolved:e})=>t.createElement(tr,{entityRefs:e.partOfSystemRelations,defaultKind:"system"})}},createOwnerColumn(){return{title:"Owner",field:"resolved.ownedByRelationsTitle",customSort(e,a){return 0},render:({resolved:e})=>t.createElement(tr,{entityRefs:e.ownedByRelations,defaultKind:"group"})}},createSpecTypeColumn(){return{title:"Type",field:"entity.spec.type",customSort(e,a){return 0}}},createSpecLifecycleColumn(){return{title:"Lifecycle",field:"entity.spec.lifecycle",customSort(e,a){return 0},width:"auto"}},createMetadataDescriptionColumn(){return{title:"Description",field:"entity.metadata.description",customSort(e,a){return 0},render:({entity:e})=>t.createElement(Fl,{text:e.metadata.description,placement:"bottom-start"}),width:"auto"}},createTagsColumn(){return{title:"Tags",field:"entity.metadata.tags",cellStyle:{padding:"0px 16px 0px 20px"},render:({entity:e})=>t.createElement(t.Fragment,null,e.metadata.tags&&e.metadata.tags.map(a=>t.createElement(_e,{key:a,label:a,size:"small",variant:"outlined",style:{marginBottom:"0px"}}))),width:"auto",sorting:!1}},createTitleColumn(e){return{title:"Title",field:"entity.metadata.title",customSort(a,n){return 0},hidden:e==null?void 0:e.hidden,searchable:!0}},createLabelColumn(e,a){return{title:(a==null?void 0:a.title)||"Label",field:"entity.metadata.labels",customSort(n,r){return 0},cellStyle:{padding:"0px 16px 0px 20px"},render:({entity:n})=>{var r;const l=(r=n.metadata)==null?void 0:r.labels,i=l&&l[e]||(a==null?void 0:a.defaultValue);return t.createElement(t.Fragment,null,i&&t.createElement(_e,{key:i,label:i,size:"small",variant:"outlined"}))},width:"auto",sorting:!1}},createNamespaceColumn(){return{title:"Namespace",field:"entity.metadata.namespace",customSort(e,a){return 0},width:"auto"}}});function Qp(e){var a;const{trackDetails:n,track:r,entity:l}=e,i=ar(l,ji,{kind:"system"}),o=ar(l,qi),s=Sa(l);return{id:s,entity:l,badge:(a=n.badge)!=null?a:void 0,track:r,status:n.status,resolved:{name:Mt(l,{defaultKind:"Component"}),entityRef:s,ownedByRelationsTitle:o.map(c=>Mt(c,{defaultKind:"group"})).join(", "),ownedByRelations:o,partOfSystemRelationTitle:i.map(c=>Mt(c,{defaultKind:"system"})).join(", "),partOfSystemRelations:i}}}const Yp=[We.createBadgeColumn(),We.createNameColumn(),We.createStatusColumn(),We.createSystemColumn(),We.createOwnerColumn(),We.createSpecTypeColumn(),We.createSpecLifecycleColumn()],Xp=[Ae.CertificationLevel,Ae.Name,Ae.CheckPassRate,Ae.System,Ae.Owner,Ae.Type,Ae.Lifecycle],Zp=R({tableContainer:{display:"flex",flexDirection:"column",height:"100%",width:"99%"}}),Jp=({track:e})=>{var a,n,r;const l=Zp(),[i,o]=S({orderBy:void 0,pageInfo:{page:0,pageSize:25,direction:"forward",cursor:null}}),{data:s,isLoading:c}=zp({trackId:e.id,orderBy:i.orderBy,[i.pageInfo.direction==="forward"?"first":"last"]:i.pageInfo.pageSize,[i.pageInfo.direction==="forward"?"after":"before"]:i.pageInfo.cursor}),d=U((k,f)=>{let b;k===-1?b=void 0:b={field:Xp[k],direction:f==="asc"?Jn.Asc:Jn.Desc},o({orderBy:b,pageInfo:{...i.pageInfo,page:0,cursor:null}})},[i]),m=U((k,f)=>{var b,E;const C=k>i.pageInfo.page?"forward":"backward",x=C==="forward"?(b=s==null?void 0:s.trackEntities.pageInfo.endCursor)!=null?b:null:(E=s==null?void 0:s.trackEntities.pageInfo.startCursor)!=null?E:null;o({...i,pageInfo:{page:k,pageSize:f,direction:C,cursor:x}})},[s,i]),u=(a=s==null?void 0:s.trackEntities.edges.map(k=>k.node.entityRef))!=null?a:[],{data:p,isLoading:h}=Hi({entityRefs:u}),y=(n=qe.compact(s==null?void 0:s.trackEntities.edges.map(k=>{const f=p==null?void 0:p.items.find(b=>!!b&&Sa(b)===k.node.entityRef);return f?Qp({trackDetails:k.node,track:e,entity:f}):void 0})))!=null?n:[];return t.createElement("div",{className:l.tableContainer},t.createElement(Ml,{columns:Yp,data:y,options:{paging:!0,showFirstLastPageButtons:!1,paginationPosition:"both",emptyRowsWhenPaging:!1,pageSizeOptions:[10,25,50],pageSize:25,search:!1,showTitle:!1},onOrderChange:d,onPageChange:m,page:i.pageInfo.page,totalCount:(r=s==null?void 0:s.trackEntities.totalCount)!=null?r:0,isLoading:c||h,components:{Toolbar:()=>null}}))},eh=e=>{var a,n;const r=(e==null?void 0:e.individualTrackPassRate)||[];if(!r.length)return[];const l=Qe.utc();return(n=(a=r==null?void 0:r[0])==null?void 0:a.levels)==null?void 0:n.reduce((i,{trendPassRates:o,levelOrdinal:s},c,d)=>{var m;const u=(m=o==null?void 0:o.map((p,h)=>{const y=Math.min(d.slice(c).reduce((k,{trendPassRates:f})=>k+(f?f[h]:0),0),100);return{name:zt(l,o.length-h-1),[`Level ${s}`]:y}}))!=null?m:[];return c===0?u:i.map((p,h)=>({...p,...u[h]}))},[])},th=({trackId:e})=>{var a,n,r,l;const{data:i,isError:o}=Wa({tracks:[{trackId:e}],numberOfDays:30});if(o)return t.createElement(v,{color:"error"},"Failed to load track data.");const s=eh(i),c=(l=(r=(n=(a=i==null?void 0:i.individualTrackPassRate)==null?void 0:a[0])==null?void 0:n.levels)==null?void 0:r.map(({levelOrdinal:d,levelName:m})=>({dataKey:`Level ${d}`,name:m!=null?m:`Level ${d}`})))!=null?l:[];return t.createElement(wt,{data:s,lines:c})},ah=(e,a)=>{var n;const r=Ze(e);return(n=a==null?void 0:a.map(({levelOrdinal:l},i,o)=>{const s=Math.min(o.slice(i).reduce((c,{snapshotPassRate:d})=>c+d,0),100);return{name:`Level ${l}`,passRate:s,fill:r[i%r.length]}}))!=null?n:[]},nh=({trackId:e})=>{const a=Ce(),{data:n,isLoading:r}=Ga({tracks:[{trackId:e}],numberOfDays:30});return t.createElement(t.Fragment,null,!r&&n&&t.createElement("div",null,t.createElement(kt,null,t.createElement(kn,{data:ah(a,n.overallTrackPassRate),layout:Tt.Horizontal}))))},rh=R(e=>({card:{display:"flex",flexDirection:"column",border:`1px solid ${e.palette.divider}`,width:"99%"},title:{fontWeight:"bold",fontSize:"1.1rem",lineHeight:`${e.typography.h5.fontSize}px`,cursor:"default"},header:{display:"flex",padding:e.spacing(1,1),borderBottom:`1px solid ${e.palette.divider}`,flexDirection:"column",gap:e.spacing(.5)},content:{padding:e.spacing(1,1,0),display:"flex",margin:e.spacing(1),gap:e.spacing(1)},leftSection:{width:"225px",minWidth:"225px"},summaryCard:{height:"100%",display:"flex",flexDirection:"column",justifyContent:"space-between"},chartSection:{flex:1,width:"100%",minWidth:"150px"},overallSummaryBox:{display:"flex",flexDirection:"column",height:"100%",color:ee(e),textAlign:"center",gap:e.spacing(2)}})),lh=({trackId:e})=>{var a,n;const r=rh(),{data:l,isLoading:i}=ht({ids:[e!=null?e:""],first:1}),o=(n=(a=l==null?void 0:l.edges)==null?void 0:a[0])==null?void 0:n.node;return t.createElement(Te,{className:r.card},t.createElement(T,{className:r.header},!i&&o&&t.createElement(v,{className:r.title},"Track Progress")),t.createElement(T,{className:r.content},t.createElement(T,{className:r.leftSection},t.createElement(T,{className:r.summaryCard},t.createElement(nh,{trackId:e}))),t.createElement(T,{className:r.chartSection},t.createElement(th,{trackId:e}))))},ih=R(e=>({root:{height:"100%",background:e.palette.background.default},header:{backgroundColor:e.palette.background.paper,borderRadius:0},trackProgressContainer:{margin:e.spacing(2,0,2,2)},trackContainerContent:{padding:e.spacing(2,2,1),backgroundColor:e.palette.background.paper},levelCard:{margin:e.spacing(1,0,2)},editButton:{marginLeft:"auto"},tabsContainer:{margin:e.spacing(1,0,1,2)},trackEntitesContainer:{marginTop:e.spacing(1)}}));function Dl({children:e,value:a,index:n}){return t.createElement("div",{hidden:a!==n},a===n&&e)}const oh=()=>{var e,a,n,r;const l=ih(),[i,o]=S(0),s=(E,C)=>{o(C)},{trackId:c}=Ue(),{data:d,isLoading:m}=ht({ids:[c!=null?c:""],first:1}),u=(a=(e=d==null?void 0:d.edges)==null?void 0:e[0])==null?void 0:a.node,{loading:p,allowed:h}=_({permission:Wn,resourceRef:c}),{loading:y,allowed:k}=_({permission:Gn,resourceRef:c}),f=pe(),b=Q(Ji);return t.createElement("div",null,t.createElement(Xt,{entityName:"track",entityId:c,showNotFound:!m&&!u,showCannotView:!p&&!h}),m&&t.createElement(ut,null),u&&t.createElement("div",{className:l.root},t.createElement(Te,{elevation:3,className:l.header},t.createElement("div",{className:l.trackContainerContent},t.createElement("div",{style:{display:"flex",alignItems:"center"}},t.createElement("div",null,t.createElement(v,{variant:"h5"},u.name),t.createElement(Fe,{entityRef:u.ownerEntityRef})),!y&&k&&u.isEditable&&t.createElement(H,{className:l.editButton,variant:"contained",color:"primary",onClick:()=>{f(b({trackId:u.id}))}},"Edit Track")),t.createElement(Lt,{content:(n=u.description)!=null?n:""}))),t.createElement("div",{className:l.trackProgressContainer},t.createElement(lh,{trackId:c})),t.createElement("div",{className:l.tabsContainer},t.createElement(fa,{value:i,onChange:s},t.createElement(De,{label:"Levels"}),t.createElement(De,{label:"Entities"})),t.createElement(Dl,{value:i,index:0},u&&((r=u.levels)==null?void 0:r.map((E,C)=>t.createElement("div",{className:l.levelCard,key:E.ordinal},t.createElement(Hp,{track:u,level:E,index:C}))))),t.createElement(Dl,{value:i,index:1},u&&t.createElement("div",{className:l.trackEntitesContainer},t.createElement(Jp,{track:u}))))))},sh=()=>{const{setIsLoading:e,setShowAddModal:a,showAddModal:n}=Re(),{mutateAsync:r,isLoading:l}=Lr();return G(()=>{e(l)},[e,l]),t.createElement(hl,{handleClose:()=>a(!1),title:"Create Track",open:n,onSave:async i=>{await r(i,{onSuccess:()=>a(!1)})}})};var ca=(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))(ca||{}),Sn=(e=>(e.title="No tracks found",e.description="No tracks matched your search. Consider changing search term and filters.",e))(Sn||{});const ch=()=>t.createElement(g,{item:!0,container:!0,"data-testid":"tracks-skeleton"},Array.from({length:6},(e,a)=>t.createElement(g,{key:`loading-${a}`,xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem"},t.createElement(Bt,{variant:"rect",height:385})))),dh="Error Deleting Track";function mh(){const e=D(A),a=oe(),{showAlert:n}=ce(),r=async l=>{const i=await e.deleteProgram(l);if(!i)throw new Error(`Failed to delete track ${l}`);return i};return se([de.DeleteProgram],r,{onSuccess:()=>{const l=[O.GetAllPrograms,O.GetOverallTrackPassRateSnapshots,O.GetOverallTrackPassRateTrends,O.GetIndividualTrackPassRateSnapshots,O.GetIndividualTrackPassRateTrends];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:dh,message:o})}})}const uh=R(e=>({root:{position:"relative",height:"100%"},cardSection:{marginBottom:e.spacing(2)},listItem:{padding:0},listItemText:{margin:0}})),ph=({track:e})=>{var a,n,r;const l=uh(),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(Ot,{dense:!0,disablePadding:!0,className:l.cardSection},t.createElement(v,{variant:"overline",color:"textSecondary"},"Track Details"),t.createElement(be,{disableGutters:!0,className:l.listItem},t.createElement(ne,{title:"Levels"},t.createElement(te,null,t.createElement(Ko,{color:"action",fontSize:"small"}))),t.createElement(ae,{className:l.listItemText,primary:t.createElement(v,{variant:"body2",color:"textSecondary"},`${i} ${i===1?"Level":"Levels"}`)})),t.createElement(be,{disableGutters:!0,className:l.listItem},t.createElement(ne,{title:"Checks"},t.createElement(te,null,t.createElement(Uo,{color:"action",fontSize:"small"}))),t.createElement(ae,{className:l.listItemText,primary:t.createElement(v,{variant:"body2",color:"textSecondary"},`${o} ${o===1?"Check":"Checks"}`)})),e.documentationURL&&t.createElement(be,{disableGutters:!0,className:l.listItem},t.createElement(ne,{title:"Documentation"},t.createElement(te,null,t.createElement(jo,{color:"action",fontSize:"small"}))),t.createElement(ae,{className:l.listItemText,primary:t.createElement(ma,{to:e.documentationURL,target:"_blank",rel:"noopener noreferrer"},"Learn more")})),t.createElement(be,{disableGutters:!0,className:l.listItem},t.createElement(ne,{title:"Owner"},t.createElement(te,null,t.createElement(Wt,{color:"action",fontSize:"small"}))),t.createElement(ae,{className:l.listItemText,primary:t.createElement(Fe,{entityRef:e.ownerEntityRef,hideIcon:!0})})))},hh=({summary:e})=>{const{loading:a,allowed:n}=_({permission:Ci,resourceRef:e.id}),{showModal:r}=je(),{mutate:l}=mh(),i=pe(),o=Q(Xn),s=U(async()=>{await r({title:"Delete Track",message:`Are you sure you want to delete track ${e.name}?`})&&l(e.id)},[r,e.id,e.name,l]),c=U(()=>{i(o({trackId:e.id}))},[i,e.id,o]);return t.createElement(vt,{title:e.name,description:e.description,children:t.createElement(ph,{track:e}),handleView:c,handleDelete:e.isEditable&&!a&&n?s:void 0})},gh=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)}})),vh=({tracksPerPage:e,currentCursor:a})=>{var n;const r=gh(),[l,i]=S(a),[o,s]=S(""),[c,d]=S($e.Alpha),[m,u]=S($e.Owner),[p,h]=S([]),[y,k]=S("");Pa(()=>{k(o)},500,[o]);const{setShowAddModal:f}=Re(),{loading:b,allowed:E}=_({permission:ki}),{data:C,isLoading:x}=ht({ids:void 0,first:e,after:l,orderAlphabetical:c,searchByOwner:m,searchByName:y}),[N,L]=S(C),I=(n=N==null?void 0:N.edges)==null?void 0:n.map($=>$.node),[P,X]=S([]),le=D(ct),ue=!le.getRegisteredFlags().find($=>$.name==="soundcheck-enable-track-creation")||le.isActive("soundcheck-enable-track-creation"),Ee=!E||!ue,Oe=$=>{d($.target.value)},Ve=$=>{u($.target.value)};if(G(()=>{C&&L(()=>{var $,M;return{totalCount:C.totalCount,edges:C.edges,pageInfo:{startCursor:C.pageInfo.startCursor,endCursor:C.pageInfo.endCursor,hasNextPage:($=C==null?void 0:C.pageInfo.hasNextPage)!=null?$:!1,hasPreviousPage:(M=C==null?void 0:C.pageInfo.hasPreviousPage)!=null?M:!1}}})},[C]),G(()=>{const $=N==null?void 0:N.edges.map(xe=>xe.node),M=_a($!=null?$:[]);h(M!=null?M:[])},[x,N]),!x&&!I)return t.createElement(Ke,{title:ca.title,description:ca.description,imgSrc:Na,action:!b&&t.createElement(H,{disabled:Ee,variant:"contained",color:"primary",onClick:()=>f(!0)},ca.callToAction)});let ie;x?ie=t.createElement(ch,null):I!=null&&I.length?ie=I==null?void 0:I.map($=>t.createElement(g,{key:$.id,xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem","aria-label":"result"},t.createElement(hh,{summary:$}))):ie=t.createElement(g,{xs:12,item:!0,role:"listitem","aria-label":"result"},t.createElement(Ke,{title:Sn.title,description:Sn.description}));const st=(N==null?void 0:N.pageInfo.hasNextPage)||(P==null?void 0:P.length)>0;return t.createElement(g,{container:!0,direction:"row",className:r.container},t.createElement(g,{container:!0,spacing:4,className:r.header},t.createElement(Qa,{searchPlaceholder:"Search available tracks",isLoading:x,searchTerm:o,setSearchTerm:s,filterAlpha:c,handleAlphabeticalFilterChange:Oe,filterOwner:m,handleOwnerFilterChange:Ve,owners:p}),t.createElement(g,{item:!0,xs:3},t.createElement("div",{className:r.headerButtons},!b&&t.createElement(H,{disabled:Ee,variant:"contained",color:"primary",onClick:()=>f(!0)},"Create Track")))),t.createElement(g,{container:!0,spacing:4,role:"list","aria-label":"tracks"},ie),st&&t.createElement("div",{className:r.pagination},t.createElement(ka,{response:N,listingsPerPage:e,cursor:l,setCursor:i,prevCursors:P,setPrevCursors:X,labelPerPageDropdown:"Tracks Per Page:",urlRoute:"tracks?tracksPerPage="})))},fh=()=>{const{showAddModal:e}=Re(),[a]=Ca(),n=a.get("tracksPerPage"),r=n?parseInt(n,10):xa;return t.createElement("div",null,t.createElement(Bl,{variant:"info",message:"Programs will now be referred to as Tracks throughout the Soundcheck UI.",id:"programTrackBanner"}),t.createElement(vh,{tracksPerPage:r}),e&&t.createElement(sh,null))},Eh=()=>t.createElement(Ar,null,t.createElement(fh,null)),yh=R(e=>({breadcrumbs:{color:e.palette.common.white,marginTop:e.spacing(2)},link:{color:e.palette.common.white,textDecoration:"none",fontStyle:"normal",fontWeight:"bold"},text:{fontStyle:"normal",fontWeight:"normal"}})),bh=({pages:e})=>{const a=Q(er),n=yh(),r=At().pathname===a();return t.createElement(Gl,{className:n.breadcrumbs},!r&&t.createElement(ma,{className:n.link,to:a()},"Home"),e.map(({title:l,path:i},o)=>i?t.createElement(ma,{className:n.link,to:i,key:i,relative:"path"},l):t.createElement(v,{className:n.text,key:`${o}`},l)))},Ch=e=>{const a={"^/soundcheck/campaigns$":"Campaigns","^/soundcheck/tracks$":"Tracks","^/soundcheck/tracks/[^/]+$":"Track Details","^/soundcheck/checks$":"Checks","^/soundcheck/collectors$":"Collectors","^/soundcheck/tech-health$":"Tech Health","^/soundcheck/tech-health/campaigns":"Campaigns","^/soundcheck/tech-health/checks":"Checks","^/soundcheck/tech-health/tracks":"Tracks","^/soundcheck/tech-health/entities":"Entities","^/soundcheck/tech-health/teams":"Teams"};for(const[n,r]of Object.entries(a))if(new RegExp(n).test(e))return r;return null},kh=e=>e.split("/").filter(a=>a).map((a,n,r)=>{const l=`/${r.slice(0,n+1).join("/")}`,i=Ch(l);if(i)return l===e?{title:i}:{path:l,title:i}}).filter(a=>!!a),wh=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"}}})),xh=({title:e="Soundcheck"})=>{const a=wh(),n=Q(er),[r,l]=zi(),{group:i}=r,[o,s]=S(void 0),[c,d]=Ft("soundcheck.overview.groupRef",null),m=D(ct),u=!m.getRegisteredFlags().find(P=>P.name==="soundcheck-enable-tech-health")||m.isActive("soundcheck-enable-tech-health"),p=!m.getRegisteredFlags().find(P=>P.name==="soundcheck-enable-collectors")||m.isActive("soundcheck-enable-collectors"),h=!m.getRegisteredFlags().find(P=>P.name==="soundcheck-enable-campaigns")||m.isActive("soundcheck-enable-campaigns"),{loading:y,allowed:k}=_({permission:wi}),{loading:f,allowed:b}=_({permission:xi}),E=P=>{P&&(l({...r,group:P}),d(P))},C=p&&!y&&k,x=u&&!f&&b,N=At().pathname.replace(/\/+$/,""),L=N===n(),I=kh(N);return t.createElement(ao,null,t.createElement(_i,null,t.createElement(no,null,t.createElement(ro,null,t.createElement(T,{className:a.root},t.createElement(Wl,{themeId:"tool"},t.createElement(pi,{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(Vl,{title:e,subtitle:t.createElement(bh,{pages:I})},L&&t.createElement(Ui,{onChange:E,initialValue:c!=null?c:i,setError:s})),t.createElement(T,{className:a.pageContent},t.createElement(T,{className:a.pageLayout},t.createElement(Vn,null,t.createElement(Se,{path:"/campaigns/:campaignId/edit",element:t.createElement(_c,null)}),t.createElement(Se,{path:"/campaigns/:campaignId",element:t.createElement(zc,null)}),t.createElement(Se,{path:"/tracks/:trackId/edit",element:t.createElement(jm,null)}),t.createElement(Se,{path:"/tracks/:trackId",element:t.createElement(oh,null)}),t.createElement(Se,{path:"/checks/:checkId",element:t.createElement(Xd,null)}),t.createElement(Se,{path:"/collectors/:collectorId",element:t.createElement(ym,null)}),t.createElement(Se,{path:"/*",element:t.createElement(Z,null,t.createElement(Z.Route,{title:"Overview",path:"/"},t.createElement("div",{className:a.tabContent},t.createElement(Ki,{groupSelectorError:o,searchParams:r,setSearchParams:l}))),x&&t.createElement(Z.Route,{title:"Tech Health",path:"/tech-health"},t.createElement(Np,null)),t.createElement(Z.Route,{title:"Checks",path:"/checks"},t.createElement(om,null)),t.createElement(Z.Route,{title:"Tracks",path:"/tracks"},t.createElement(Eh,null)),h&&t.createElement(Z.Route,{title:"Campaigns",path:"/campaigns"},t.createElement(Oc,null)),C&&t.createElement(Z.Route,{title:"Collectors",path:"/collectors"},t.createElement(Pm,null)))}))))))))))};export{xh as RoutingPage};
2
- //# sourceMappingURL=index-b2acbf0c.esm.js.map
1
+ import{MarkdownContent as Lt,WarningPanel as ma,TabbedLayout as Z,LinearGauge as Bl,OverflowTooltip as Gl,Table as Wl,Link as ua,DismissableBanner as Vl,Breadcrumbs as Hl,Page as zl,Header as _l}from"@backstage/core-components";import{useApi as D,useRouteRef as Q,featureFlagsApiRef as ct,alertApiRef as Ul}from"@backstage/core-plugin-api";import{usePermission as _}from"@backstage/plugin-permission-react";import{Button as H,makeStyles as R,TextField as Y,InputAdornment as Rn,IconButton as dt,Grid as g,Typography as v,NativeSelect as pa,Menu as Ot,MenuItem as pe,ListItemIcon as te,ListItemText as ae,withStyles as Kl,Card as ha,CardHeader as jl,CardContent as ql,Divider as He,CardActions as Ql,List as It,ListItem as be,Tooltip as ne,Badge as Yl,Modal as Xl,Box as S,FormControlLabel as ze,Checkbox as Ie,Paper as Te,Stepper as Zl,Step as Jl,StepLabel as ei,StepContent as ti,FormControl as Dt,InputLabel as ga,Select as va,FormHelperText as Pn,Chip as _e,Slide as ai,Dialog as ni,AppBar as ri,Toolbar as li,RadioGroup as ii,Radio as Nn,useTheme as Ce,Tabs as fa,Tab as De,ButtonGroup as Ln,Switch as oi,alpha as si,Icon as ci,TablePagination as On,Table as di,TableHead as mi,TableRow as In,TableCell as Dn,TableBody as ui,Popper as pi,Fade as hi,ClickAwayListener as gi,lighten as $n,darken as An}from"@material-ui/core";import{SpotifyLicenseBanner as vi}from"@spotify/backstage-plugin-core";import{soundcheckCampaignCreatePermission as Fn,soundcheckCampaignUpdatePermission as fi,soundcheckCampaignDeletePermission as Ei,asArray as Ea,parseFactRef as ya,FrequencySchema as yi,stringifyFactRef as bi,soundcheckCheckUpdatePermission as Mn,soundcheckCheckReadPermission as Ci,soundcheckCheckDeletePermission as ki,soundcheckCheckCreatePermission as xi,soundcheckCollectorUpdatePermission as Bn,soundcheckTrackUpdatePermission as Gn,soundcheckTrackReadPermission as Wn,soundcheckTrackDeletePermission as wi,soundcheckTrackCreatePermission as Ti,soundcheckCollectorReadPermission as Si,soundcheckTechHealthReadPermission as Ri}from"@spotify/backstage-plugin-soundcheck-common";import t,{useCallback as U,createContext as $t,useState as T,useContext as At,useRef as ba,useEffect as G,useMemo as K,memo as Pi}from"react";import{useNavigate as he,useLocation as Ft,useSearchParams as Ca,useParams as Ue,Routes as Vn,Route as Se}from"react-router-dom";import Mt from"react-use/lib/useLocalStorage";import{F as $e,a as Hn,P as ka,b as mt,c as xa,L as ut,R as wa,C as Ta,d as zn,e as Ni,f as Li,g as Oi,h as Ii,i as Di,j as $i,k as Ai,l as _n,m as Fi,n as Mi,o as Bi,p as Gi,q as ke,r as Wi,s as Vi,t as Hi,v as zi,S as _i,w as Ui,u as Ki,U as ji,G as qi,O as Qi}from"./OverviewPageContent-d5467d2c.esm.js";import{parseEntityRef as j,stringifyEntityRef as Sa,RELATION_PART_OF as Yi,RELATION_OWNED_BY as Xi}from"@backstage/catalog-model";import{useQuery as V,useQueryClient as oe,useMutation as se}from"@tanstack/react-query";import{s as A,h as Un,i as Zi,t as Ji,R as Kn,j as jn,k as qn,l as Qn,m as Yn,n as eo,p as to,q as Xn,B as Zn,T as Ae,D as Jn,u as ao,r as er}from"./routes-93cd1496.esm.js";import{EntityRefLink as Fe,catalogApiRef as no,entityRouteRef as Ra,humanizeEntityRef as Bt,EntityRefLinks as tr,getEntityRelations as ar}from"@backstage/plugin-catalog-react";import{Q as O,u as ce,M as de,E as Ke,d as je,L as nr,a as ro,e as lo,S as io,B as oo}from"./EmptyState-6a402254.esm.js";import Pa from"react-use/lib/useDebounce";import Na from"../images/no-results.svg";import rr from"@material-ui/icons/Close";import so from"@material-ui/icons/Search";import{Skeleton as Gt,Autocomplete as La,ToggleButtonGroup as co,ToggleButton as lr}from"@material-ui/lab";import{v4 as Wt}from"uuid";import{createStyles as mo,makeStyles as B}from"@material-ui/core/styles";import uo from"@material-ui/icons/Archive";import ir from"@material-ui/icons/Delete";import po from"@material-ui/icons/MoreVert";import ho from"@material-ui/icons/OpenInBrowser";import Vt from"@material-ui/icons/Group";import{useForm as Ht,Controller as W,useFieldArray as zt,useWatch as Oa,useFormContext as me,FormProvider as or}from"react-hook-form";import sr from"@material-ui/icons/CheckBox";import cr from"@material-ui/icons/CheckBoxOutlineBlank";import go from"@material-ui/icons/ExpandMore";import{zodResolver as Ia}from"@hookform/resolvers/zod";import{z as x}from"zod";import qe,{uniqBy as Da,findIndex as dr,countBy as vo,capitalize as fo,isObject as Eo}from"lodash";import mr from"@date-io/luxon";import{KeyboardDatePicker as ur}from"@material-ui/pickers/DatePicker";import{MuiPickersUtilsProvider as pr}from"@material-ui/pickers/MuiPickersUtilsProvider";import{DatePickerToolbar as yo}from"@material-ui/pickers/DatePicker/DatePickerToolbar";import{DateTime as Qe}from"luxon";import{useDrop as bo,useDrag as Co,DndProvider as $a}from"react-dnd";import{HTML5Backend as Aa}from"react-dnd-html5-backend";import hr from"@material-ui/icons/DragIndicator";import ko from"@material-ui/icons/Visibility";import gr from"@material-ui/icons/Add";import vr from"@material-ui/icons/Remove";import{VariableSizeGrid as xo}from"react-window";import wo from"cron-validate";import To from"cronstrue";import fr from"@uiw/react-md-editor";import So from"rehype-sanitize";import Er from"@material-ui/icons/ArrowDropDown";import Ro from"../images/catalog.svg";import Po from"../images/git.svg";import No from"../images/octocat.svg";import Lo from"../images/pagerduty.svg";import Oo from"../images/settings.svg";import Io from"../images/soundcheck.png";import Do from"../images/tech_insights.png";import{CircularProgressbar as yr,buildStyles as br}from"react-circular-progressbar";import{ResponsiveContainer as Fa,LineChart as Ma,CartesianGrid as pt,XAxis as Ye,YAxis as Xe,Line as Ba,Tooltip as Cr,Legend as kr,BarChart as xr,Bar as wr,Cell as $o,AreaChart as Ao,Area as Fo}from"recharts";import{f as _t,g as ee,a as Ze}from"./chartUtils-080232d7.esm.js";import Mo from"@material-ui/icons/ArrowDropUp";import Bo from"@material-ui/icons/HelpOutline";import{createFilterOptions as Tr}from"@material-ui/lab/Autocomplete";import{motion as Go}from"framer-motion";import Wo from"@material-ui/icons/GetApp";import{CSVLink as Sr}from"react-csv";import"react-circular-progressbar/dist/styles.css";import Vo from"@material-ui/icons/TrendingDown";import Ho from"@material-ui/icons/TrendingFlat";import zo from"@material-ui/icons/TrendingUp";import _o from"@material-ui/icons/Apps";import Uo from"@material-ui/icons/GridOn";import Ko from"@material-ui/icons/KeyboardArrowDown";import jo from"@material-ui/icons/Reorder";import Rr from"@material-ui/lab/Skeleton";import qo from"@material-ui/icons/DoneAllRounded";import Qo from"@material-ui/icons/Menu";import Yo from"@material-ui/icons/OpenInNew";import"react-use/lib/useAsync";import"./RefetchingIndicator-b4961e02.esm.js";import"react-use/lib/useUnmount";import"graphql-request";import"graphql-tag";import"@backstage/core-compat-api";import"@material-ui/icons/Check";import"@material-ui/icons/RemoveCircleOutline";import"@material-ui/icons/ReportProblemOutlined";import"classnames";import"../images/empty-state.svg";function Ut(e){const a=D(A);return V([O.GetChecks,JSON.stringify(e)],async()=>a.getChecks(e),{staleTime:5*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})}const Xo="Error Creating Campaign",Pr="Failed to create campaign.";function Zo(){const e=D(A),a=oe(),{showAlert:n}=ce(),r=async l=>{const i=await e.createCampaign(l);if(!i)throw new Error(Pr);return i};return se([de.CreateCampaign],r,{onSuccess:()=>{a.invalidateQueries({queryKey:[O.GetCampaigns]})},onError:l=>{let i=Pr;l instanceof Error&&(i=l.message),n({severity:"error",title:Xo,message:i})}})}const Jo="Error Updating Campaign",Nr="Failed to update campaign.";function es(){const e=D(A),a=oe(),{showAlert:n}=ce(),r=async l=>{const i=await e.updateCampaign(l);if(!i)throw new Error(Nr);return i};return se([de.UpdateCampaign],r,{onSuccess:()=>Promise.all([a.invalidateQueries({queryKey:[O.GetCampaigns]}),a.invalidateQueries({queryKey:[O.GetIndividualEntityPassRateSnapshots]})]),onError:l=>{let i=Nr;l instanceof Error&&(i=l.message),n({severity:"error",title:Jo,message:i})}})}const ts="Error Archiving Campaign";function as(){const e=D(A),a=oe(),{showAlert:n}=ce(),r=async l=>{const i=await e.archiveCampaign(l);if(!i)throw new Error(`Failed to archive campaign ${l}`);return i};return se([de.ArchiveCampaign],r,{onSuccess:()=>a.invalidateQueries({queryKey:[O.GetCampaigns]}),onError:(l,i)=>{let o=`Failed to archive campaign ${i}`;l instanceof Error&&(o=l.message),n({severity:"error",title:ts,message:o})}})}const ns="Error Deleting Campaign";function rs(){const e=D(A),a=oe(),{showAlert:n}=ce(),r=async l=>{const i=await e.deleteCampaign(l);if(!i)throw new Error(`Failed to delete campaign ${l}`);return i};return se([de.DeleteCampaign],r,{onSuccess:()=>a.invalidateQueries({queryKey:[O.GetCampaigns]}),onError:(l,i)=>{let o=`Failed to delete campaign ${i}`;l instanceof Error&&(o=l.message),n({severity:"error",title:ns,message:o})}})}function ht(e){const a=D(A);return V([O.GetAllPrograms,JSON.stringify(e)],async()=>a.getTracks(e),{staleTime:5*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})}const ls="Error Creating Track";function Lr(){const e=D(A),a=oe(),{showAlert:n}=ce(),r=async l=>{const i=await e.createProgram(l);if(!i)throw new Error("Failed to create track.");return i};return se([de.CreateProgram],r,{onSuccess:async()=>{const l=[O.GetAllPrograms,O.GetOverallTrackPassRateSnapshots,O.GetOverallTrackPassRateTrends,O.GetIndividualTrackPassRateSnapshots,O.GetIndividualTrackPassRateTrends];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:ls,message:i})}})}const is=e=>{const a=D(A);return V([O.GetOverallCheckPassRateSnapshots,{...e,numberOfDays:0}],async()=>a.getOverallCheckPassRates({...e,numberOfDays:0}),{staleTime:5*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})},Or=e=>{const a=D(A);return V([O.GetOverallCheckPassRateTrends,e],async()=>a.getOverallCheckPassRates(e),{staleTime:12*60*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})},Ir=e=>{const a=D(A);return V([O.GetIndividualCheckPassRateSnapshots,{...e,numberOfDays:0}],async()=>a.getIndividualCheckPassRates({...e,numberOfDays:0}),{staleTime:5*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})},os=e=>{const a=D(A);return V([O.GetIndividualCheckPassRateTrends,e],async()=>a.getIndividualCheckPassRates(e),{staleTime:12*60*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})},ss=e=>{const a=D(A);return V([O.GetOverallTrackPassRateSnapshots,{...e,numberOfDays:0}],async()=>a.getOverallTrackPassRate({...e,numberOfDays:0}),{staleTime:5*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})},Ga=e=>{const a=D(A);return V([O.GetOverallTrackPassRateTrends,e],async()=>a.getOverallTrackPassRate(e),{staleTime:12*60*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})},Dr=e=>{const a=D(A);return V([O.GetIndividualTrackPassRateSnapshots,{...e,numberOfDays:0}],async()=>a.getIndividualTrackPassRate({...e,numberOfDays:0}),{staleTime:5*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})},Wa=e=>{const a=D(A);return V([O.GetIndividualTrackPassRateTrends,e],async()=>a.getIndividualTrackPassRate(e),{staleTime:12*60*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})},cs=e=>{const a=D(A);return V([O.GetOverallEntityPassRateTrends,e],async()=>a.getOverallEntityPassRates(e),{staleTime:12*60*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})},ds=e=>{const a=D(A);return V([O.GetIndividualEntityPassRateTrends,e],async()=>a.getIndividualEntityPassRates(e),{staleTime:12*60*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})},ms=e=>{const a=D(A);return V([O.GetOverallGroupPassRateTrends,e],async()=>a.getOverallGroupPassRates(e),{staleTime:12*60*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})},us=e=>{const a=D(A);return V([O.GetIndividualGroupPassRateSnapshots,{...e,numberOfDays:0}],async()=>a.getIndividualGroupPassRates({...e,numberOfDays:0}),{staleTime:5*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})},ps=e=>{const a=D(A);return V([O.GetIndividualGroupPassRateTrends,e],async()=>a.getIndividualGroupPassRates(e),{staleTime:12*60*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})},Je=e=>{const a=Q(e),n=he(),{key:r}=Ft();return[U(()=>{n(r?-1:a())},[n,a,r]),U(()=>n(a()),[n,a])]},Va=()=>$t({selectedItem:null,setSelectedItem:()=>{},isLoading:!1,setIsLoading:()=>{},showAddModal:!1,setShowAddModal:()=>{},isReadOnly:!1,showReadOnlyModal:()=>{},hideModal:()=>{}}),Ha=e=>({children:a})=>{const[n,r]=T(null),[l,i]=T(!1),[o,s]=T(!1),[c,d]=T(!1),m=p=>{i(!0),r(p)},u=()=>{r(null),i(!1),d(!1)};return t.createElement(e.Provider,{value:{selectedItem:n,setSelectedItem:r,isLoading:o,setIsLoading:s,showAddModal:c,setShowAddModal:d,isReadOnly:l,showReadOnlyModal:m,hideModal:u}},a)},za=e=>At(e),$r=Va(),Ar=Ha($r),Re=()=>za($r),Fr=Va(),Mr=Ha(Fr),ge=()=>za(Fr),Br=Va(),hs=Ha(Br),gt=()=>za(Br),_a=e=>{const a=e==null?void 0:e.map(n=>n==null?void 0:n.ownerEntityRef).filter(n=>n!=="");return[...new Set(a)]},gs={0:"detailsStep",1:"tracksStep",2:"filtersStep",3:"milestonesStep"};var Kt=(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))(Kt||{}),Ua=(e=>(e.title="No campaigns found",e.description="No campaigns matched your search. Consider changing search term and filters.",e))(Ua||{});const Ka=()=>{const{setShowAddModal:e}=gt(),{loading:a,allowed:n}=_({permission:Fn});return t.createElement(Ke,{title:Kt.title,description:Kt.description,imgSrc:Na,action:!a&&t.createElement(H,{disabled:!n,variant:"contained",color:"primary",onClick:()=>e(!0)},Kt.callToAction)})};var ja=(e=>(e.all="All",e.active="Active",e.archived="Archived",e))(ja||{});const vs=R(()=>({searchIcon:{opacity:".5"},clearButton:{height:"36px",width:"36px"}})),qa=({searchTerm:e,setSearchTerm:a,showClear:n=!0,placeholder:r="Search...",disabled:l,...i})=>{const o=vs(),s=ba(null);G(()=>{!l&&s.current&&s.current.focus()},[l]);const c=m=>{a(m.target.value)},d=()=>{a("")};return t.createElement(Y,{...i,disabled:l,inputRef:s,fullWidth:!0,placeholder:r,value:e,onChange:c,InputProps:{startAdornment:t.createElement(Rn,{position:"start"},t.createElement(so,{className:o.searchIcon,"data-testid":"search-icon"})),endAdornment:n&&e?t.createElement(Rn,{position:"end"},t.createElement(dt,{edge:"end",onClick:d,className:o.clearButton},t.createElement(rr,null))):null}})},fs=R(()=>({searchbar:{maxWidth:"350px"},filters:{display:"flex",alignItems:"center"},dropdownFilters:{margin:"0 15px",display:"flex",alignItems:"center"},selectHolder:{marginLeft:"10px"}})),Qa=({searchPlaceholder:e,isLoading:a,searchTerm:n,setSearchTerm:r,filterAlpha:l,handleAlphabeticalFilterChange:i,filterOwner:o,handleOwnerFilterChange:s,filterStatus:c,handleStatusFilterChange:d,owners:m})=>{const u=fs();return t.createElement(g,{item:!0,xs:9,className:u.filters},t.createElement(qa,{searchTerm:n,disabled:a,setSearchTerm:r,placeholder:e||"Search",variant:"outlined",size:"small",className:u.searchbar}),t.createElement("div",{className:u.dropdownFilters},t.createElement(v,null,"Sort by: "),t.createElement(pa,{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(v,null,"Filter by owner: "),t.createElement(pa,{className:u.selectHolder,value:o,onChange:s},t.createElement("option",{key:"all",value:"all"},"All"),m==null?void 0:m.map((p,h)=>t.createElement("option",{key:p+h,value:p},p)))),c&&d&&t.createElement("div",{className:u.dropdownFilters},t.createElement(v,null,"Filter by status: "),t.createElement(pa,{className:u.selectHolder,value:c,onChange:d},Object.keys(ja).map(p=>t.createElement(t.Fragment,{key:p},t.createElement("option",{value:p},ja[p]))))))},Es=()=>t.createElement(g,{item:!0,container:!0,"data-testid":"campaigns-skeleton"},Array.from({length:6},(e,a)=>t.createElement(g,{key:`loading-${a}`,xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem"},t.createElement(Gt,{variant:"rect",height:385})))),ys=({handleDelete:e,handleArchive:a,handleView:n})=>{const[r,l]=T(null),i=!!r,o=c=>{c.stopPropagation(),l(c.currentTarget)},s=c=>{c.stopPropagation(),l(null)};return t.createElement(t.Fragment,null,t.createElement(dt,{"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(po,null)),t.createElement(Ot,{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(pe,{"data-testid":"summary-card-action-view",onClick:c=>{n(c),s(c)}},t.createElement(te,null,t.createElement(ho,{fontSize:"small"})),t.createElement(ae,null,"View")),a&&t.createElement(pe,{"data-testid":"summary-card-action-archive",onClick:c=>{a(c),s(c)}},t.createElement(te,null,t.createElement(uo,{fontSize:"small"})),t.createElement(ae,null,"Archive")),e&&t.createElement(pe,{"data-testid":"summary-card-action-delete",onClick:c=>{e(c),s(c)}},t.createElement(te,null,t.createElement(ir,{fontSize:"small"})),t.createElement(ae,null,"Delete"))))},bs=Kl(e=>mo({root:{width:"100%",height:"100%",minHeight:"385px",display:"flex",flexDirection:"column",padding:e.spacing(2),position:"relative",justifyContent:"space-between"}}))(ha),Cs=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)}})),vt=({title:e,description:a,viewLabel:n="View",editLabel:r="Edit",children:l,handleDelete:i,handleArchive:o,handleEdit:s,handleView:c})=>{const d=Cs();return t.createElement(bs,{className:d.card,"data-testid":e},t.createElement(jl,{title:e,titleTypographyProps:{className:d.summaryName},subheader:t.createElement(Lt,{className:d.summaryDescription,content:a!=null?a:""}),action:(i||o)&&t.createElement(ys,{handleView:c,handleDelete:i,handleArchive:o})}),t.createElement(ql,null,l),t.createElement("div",null,t.createElement(He,null),t.createElement(Ql,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))))},ks=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"}}})),xs=({campaign:e})=>{const a=ks();return t.createElement(It,{dense:!0,disablePadding:!0,className:a.cardSection},t.createElement(v,{variant:"overline",color:"textSecondary"},"Campaign Details"),t.createElement("div",{className:a.campaignDetails},e.ownerEntityRef&&t.createElement(be,{disableGutters:!0,className:a.listItem},t.createElement(ne,{title:"Owner"},t.createElement(te,null,t.createElement(Vt,{color:"action",fontSize:"small"}))),t.createElement(ae,{className:a.listItemText,primary:t.createElement(Fe,{entityRef:e.ownerEntityRef,hideIcon:!0})})),e.archived&&t.createElement(be,{disableGutters:!0,className:a.listItem},t.createElement(Yl,{badgeContent:"Archived",color:"primary",className:a.archivedBadge}))))},ws=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)}})),Gr=$t({showArchiveModal:()=>Promise.resolve({confirmed:!1,saveTrack:!1})}),Ts=e=>{const a=ws(),[n,r]=T(!1),[l,i]=T(null),[o,s]=T(!1),c=ba(),d=U(({title:h,message:b,error:k})=>(i({title:h,message:b,error:k}),s(!1),r(!0),new Promise(E=>{c.current=E})),[]),m=U(()=>{var h;(h=c.current)==null||h.call(c,{confirmed:!0,saveTrack:o}),r(!1)},[o]),u=U(()=>{var h;(h=c.current)==null||h.call(c,{confirmed:!1,saveTrack:o}),r(!1)},[o]),p=h=>{s(h.target.checked)};return t.createElement(Gr.Provider,{value:{showArchiveModal:d}},e.children,l&&t.createElement(Xl,{open:n,onClose:u,"aria-labelledby":"confirmation-modal-title","aria-describedby":"confirmation-modal-description"},t.createElement(S,{className:a.modalContent},t.createElement("div",null,t.createElement(v,{id:"confirmation-modal-title",variant:"h6"},l.title),t.createElement(v,{id:"confirmation-modal-description",variant:"body1"},l.message)),t.createElement(S,{className:a.checkbox},t.createElement(ze,{control:t.createElement(Ie,{"data-testid":"save-track-checkbox",checked:o,onChange:p}),label:"Create Track"}),t.createElement(v,{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:m,variant:"contained","aria-label":"confirm"},l.error?"Ok":"Confirm")))))},Ss=()=>At(Gr),Rs=({campaign:e})=>{const{id:a,name:n,description:r,ownerEntityRef:l,archived:i}=e,o=Q(Un),s=Q(Zi),c=he(),d=e.archived,{showModal:m}=je(),{showArchiveModal:u}=Ss(),{mutate:p}=Lr(),{mutate:h}=rs(),{mutate:b}=as(),{loading:k,allowed:E}=_({permission:fi,resourceRef:e.id}),{loading:C,allowed:y}=_({permission:Ei,resourceRef:e.id}),f=U(async()=>{await m({title:"Delete Campaign",message:`Are you sure you want to delete campaign ${e.name}?`})&&h(e.id)},[m,h,e.id,e.name]),w=()=>{var L,I;const{track:P}=e,X={id:Wt(),ownerEntityRef:P.ownerEntityRef,description:(L=P.description)!=null?L:"",name:P.name,documentationURL:P.documentationURL,type:"standard",levels:(I=P.levels)!=null?I:[],filter:P.filter};p(X)},N=async()=>{const{saveTrack:L,confirmed:I}=await u({title:"Archive Campaign",message:`Are you sure you want to archive campaign ${e.name}?`});I&&(L&&w(),b(e.id))};return t.createElement(vt,{title:n!=null?n:a,description:r,children:(l||i)&&t.createElement(xs,{campaign:e}),handleView:()=>c(o({campaignId:e.id})),handleEdit:!k&&E&&!d?()=>c(s({campaignId:e.id})):void 0,handleDelete:!C&&y?f:void 0,handleArchive:!C&&y&&!d?N:void 0})},Ps=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)}})),Ns=({campaignsPerPage:e,currentCursor:a})=>{const n=Ps(),[r,l]=T(a),[i,o]=T(""),[s,c]=T(""),[d,m]=T($e.Alpha),[u,p]=T($e.Owner),[h,b]=T($e.Status),[k,E]=T([]);Pa(()=>{c(i)},500,[i]);const{setShowAddModal:C}=gt(),{loading:y,allowed:f}=_({permission:Fn}),{data:w,isLoading:N}=Hn({ids:void 0,first:e,after:r,orderAlphabetical:d,searchByOwner:u,searchByName:s,searchByStatus:h}),[L,I]=T(w),P=L==null?void 0:L.edges.map(M=>M.node),[X,le]=T([]),ue=D(ct),ye=!ue.getRegisteredFlags().find(M=>M.name==="soundcheck-enable-campaigns")||ue.isActive("soundcheck-enable-campaigns"),Oe=!f||!ye,Ve=M=>{m(M.target.value)},ie=M=>{p(M.target.value)},st=M=>{b(M.target.value)};if(G(()=>{w&&I(()=>{var M,we;return{totalCount:w.totalCount,edges:w.edges,pageInfo:{startCursor:w.pageInfo.startCursor,endCursor:w.pageInfo.endCursor,hasNextPage:(M=w==null?void 0:w.pageInfo.hasNextPage)!=null?M:!1,hasPreviousPage:(we=w==null?void 0:w.pageInfo.hasPreviousPage)!=null?we:!1}}})},[w]),G(()=>{const M=L==null?void 0:L.edges.map(Ml=>Ml.node),we=_a(M!=null?M:[]);E(we)},[N,L]),!N&&!P)return t.createElement(Ka,null);let $;return N?$=t.createElement(Es,null):P!=null&&P.length?$=P.map(M=>t.createElement(g,{key:M.id,xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem","aria-label":"result"},t.createElement(Ts,null,t.createElement(Rs,{campaign:M})))):$=t.createElement(g,{xs:12,item:!0,role:"listitem","aria-label":"result"},t.createElement(Ke,{title:Ua.title,description:Ua.description})),t.createElement(g,{container:!0,direction:"row",className:n.container},t.createElement(g,{container:!0,className:n.header},t.createElement(Qa,{searchPlaceholder:"Search available campaigns",isLoading:N,searchTerm:i,setSearchTerm:o,filterAlpha:d,handleAlphabeticalFilterChange:Ve,filterOwner:u,handleOwnerFilterChange:ie,filterStatus:h,handleStatusFilterChange:st,owners:k}),t.createElement(g,{item:!0,xs:3},t.createElement("div",{className:n.headerButtons},!y&&t.createElement(H,{disabled:Oe,variant:"contained",color:"primary",onClick:()=>C(!0)},"Create campaign")))),t.createElement(g,{container:!0,spacing:4,role:"list","aria-label":"campaigns"},$),((L==null?void 0:L.pageInfo.hasNextPage)||(X==null?void 0:X.length)>0)&&t.createElement("div",{className:n.pagination},t.createElement(ka,{response:L,listingsPerPage:e,cursor:r,setCursor:l,prevCursors:X,setPrevCursors:le,labelPerPageDropdown:"Campaigns Per Page:",urlRoute:"campaigns?campaignsPerPage="})))},Ya=B(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"}})),ft=()=>({selectedKinds:[],selectedLifecycles:[],selectedOwners:[],selectedSystems:[],selectedTags:[],selectedTypes:[]}),Ls=[{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"}],et={selectedKinds:"kind",selectedTypes:"spec.type",selectedLifecycles:"spec.lifecycle",selectedOwners:"spec.owner",selectedSystems:"spec.system",selectedTags:"metadata.tags"},Wr=e=>!e||Object.values(e).every(a=>a.length===0)?void 0:{catalog:Object.entries(e).reduce((a,[n,r])=>{const l=et[n];return r.length>0&&(a[l]=r),a},{})},Xa=e=>Object.keys(et).reduce((a,n)=>{var r,l;return a[n]=Ea((l=(r=e==null?void 0:e.catalog)==null?void 0:r[et[n]])!=null?l:[]),a},{}),jt=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[et[n]]=r);return[a]},Za=e=>{if(e&&Array.isArray(e)&&e.length){const a=e[0];return Object.keys(et).reduce((n,r)=>{var l;return n[r]=Ea((l=a==null?void 0:a[et[r]])!=null?l:[]),n},{})}return ft()},Et=(e,a)=>{const n=D(Ul),r=D(no);return V([O.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"})}})},Os=R({container:{padding:0},formControl:{flexGrow:1}}),Is=({facet:e,label:a,values:n,onChange:r,disabled:l,filter:i})=>{var o;const s=Os(),[c,d]=T(!1),{data:m,isLoading:u,error:p}=Et(e,i),h=K(()=>m==null?void 0:m.map(f=>f.toLocaleLowerCase("en-US")),[m]),b=(o=n==null?void 0:n.map(f=>f.toLocaleLowerCase("en-US")))!=null?o:[],k=U((f,w)=>{r(w),h&&h.every(N=>w.includes(N))&&d(!1)},[h,r,d]),E=U(()=>{r(n!=null&&n.length?n:void 0)},[n,r]);if(!m||!h||p)return t.createElement(v,{color:"error"},"Failed to load facet: ",e);const C=l||u||!(n!=null&&n.length)&&(!(m!=null&&m.length)||!(h!=null&&h.length)),y=Array.from(new Set([...h,...b]));return t.createElement(S,{pb:1,pt:1,className:s.container},t.createElement(v,{variant:"subtitle2"},a),t.createElement(La,{open:c,onOpen:()=>d(!0),onClose:()=>d(!1),className:s.formControl,multiple:!0,limitTags:4,disableCloseOnSelect:!0,"aria-label":a,options:y,value:b,getOptionLabel:f=>{var w;return(w=m[h.indexOf(f)])!=null?w:f},onChange:k,onBlur:E,disabled:C,renderOption:(f,{selected:w})=>{var N;return t.createElement(ze,{onClick:L=>L.preventDefault(),control:t.createElement(Ie,{icon:t.createElement(cr,{fontSize:"small"}),checkedIcon:t.createElement(sr,{fontSize:"small"}),checked:w}),label:(N=m[h.indexOf(f)])!=null?N:f})},size:"small",popupIcon:t.createElement(go,{"data-testid":"selected-facets-expand"}),renderInput:f=>t.createElement(Y,{...f,variant:"outlined"})}))},Ds=R(()=>({title:{fontWeight:700},filterContainer:{display:"flex",flexWrap:"wrap"}})),Ja=({value:e,onChange:a,disabled:n})=>{const r=Ds(),l=i=>o=>{a({...e,[i]:o!=null?o:[]})};return t.createElement(g,{container:!0,className:r.filterContainer,spacing:2},Ls.map(i=>t.createElement(g,{item:!0,xs:12,sm:6,md:4,key:i.key},t.createElement(Is,{facet:i.facet,label:i.label,values:e==null?void 0:e[i.key],onChange:l(i.key),disabled:n,filter:i.filter}))))},$s=(e,a)=>{const[n,r]=T(0),[l,i]=T(e),o=async m=>{const u=a[n];if(await m(u)){const p=n+1;r(p),l.indexOf(p)===-1&&i(h=>[...h,p])}},s=()=>{r(m=>m-1)},c=m=>m<n,d=m=>m!==n&&l.includes(m);return{activeStep:n,handleNext:o,handleBack:s,isPreviousStep:c,isVisitedStep:d,onStepClick:m=>{(c(m)||d(m))&&r(m)}}},As=B(e=>({box:{zIndex:9,position:"fixed",bottom:"0",width:"100%"},footer:{padding:e.spacing(2)}})),Vr=({onCancel:e,saveButtonText:a,isLoading:n,onSave:r,disableSave:l})=>{const i=As();return t.createElement(S,{className:i.box},t.createElement(Te,{elevation:3,className:i.footer},t.createElement(g,{container:!0,item:!0,spacing:2,justifyContent:"space-between"},t.createElement(g,{item:!0},t.createElement(H,{variant:"contained",color:"primary",onClick:e},"Cancel")),t.createElement(g,{item:!0},r&&t.createElement(H,{variant:"contained",color:"primary",disabled:n||l,onClick:r?()=>r():void 0},a)))))},en=({onClose:e,handleSubmit:a,trigger:n,onSubmit:r,initialVisited:l,stepNameMap:i,steps:o,isLoading:s,isReadOnly:c,saveButtonText:d,detailsComponent:m})=>{const u=Ya(),{activeStep:p,handleNext:h,handleBack:b,isPreviousStep:k,isVisitedStep:E,onStepClick:C}=$s(l,i);return t.createElement(t.Fragment,null,t.createElement(g,{container:!0,spacing:2,className:u.root},t.createElement(g,{item:!0,style:{width:m?"80%":"100%"}},t.createElement(ha,{className:u.card},t.createElement(Zl,{activeStep:p,orientation:"vertical"},o.map((y,f)=>t.createElement(Jl,{key:y.label},t.createElement(ei,{className:k(f)||E(f)?u.stepLabel:void 0,onClick:()=>C(f)},y.label),t.createElement(ti,null,y.content(),t.createElement(S,{className:u.buttonChoices,sx:{mb:2}},t.createElement("div",null,f!==0&&t.createElement(H,{onClick:b},"Back"),f!==o.length-1&&t.createElement(H,{variant:"contained",color:"primary",onClick:async()=>{await h(n)}},"Next"))))))))),m&&t.createElement(g,{item:!0,style:{width:"20%"}},m)),t.createElement(g,{container:!0,spacing:4,className:u.root},t.createElement(Vr,{onCancel:e,saveButtonText:d,isLoading:s,onSave:c?void 0:a(r)})))},Fs=R(e=>({container:{display:"flex",gap:e.spacing(1),flexDirection:"column"},link:{fontWeight:"bold",padding:0},list:{marginTop:0},listItem:{marginBottom:e.spacing(1)}})),Ms=()=>{const e=Fs(),a=Q(Ji),n=he();return t.createElement("div",{className:e.container},t.createElement(v,{variant:"h6"},"Creating campaigns"),t.createElement(v,{variant:"body1"},"A Campaign is a focused short term initiative."),t.createElement(v,{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(v,{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(v,{variant:"body1"},"When your organization wants to upgrade Spring libraries to use a specific version of Spring Boot.")),t.createElement("li",null,t.createElement(v,{variant:"body1"},"When your organization wants to remove unneeded data endpoints to save costs.")))))},tn=()=>{const{data:e,isLoading:a}=Ut({}),n=K(()=>e==null?void 0:e.edges.map(i=>i.node),[e==null?void 0:e.edges]),r=K(()=>{var i;return(i=n==null?void 0:n.filter(o=>!!o).map(o=>{var s,c,d;return{id:(s=o.id)!=null?s:"",label:(c=o.name)!=null?c:o.id,description:(d=o.description)!=null?d:""}}))!=null?i:[]},[n]),l=K(()=>n==null?void 0:n.reduce((i,o)=>{var s,c,d;return i[o.id]={id:o.id,name:(s=o.name)!=null?s:o.id,description:(c=o.description)!=null?c:"",filter:(d=o.filter)!=null?d:void 0},i},{}),[n]);return{checkChips:r,checksMap:l,checksLoading:a}},Hr="At least one check is required",J="This field is required",zr=0,_r=100,an=100,nn=100,Bs="Ending date must come after the Starting Date",Ur=(e,a)=>(e===null&&a.addIssue({code:x.ZodIssueCode.custom,message:J}),e),Gs=({campaignStartDate:e,campaignEndDate:a})=>e&&a?new Date(e)<new Date(a):!0,Ws=x.strictObject({campaignName:x.string().min(1,J).max(an,`Input must be less than ${an} characters`),campaignDescription:x.string().min(1,J),campaignOwner:x.string().min(1,J),supportChannel:x.string().optional(),campaignStartDate:x.coerce.date().nullable().transform(Ur),campaignEndDate:x.coerce.date().nullable().transform(Ur)}).refine(Gs,{message:Bs,path:["campaignEndDate"]}),Vs=x.strictObject({selectedKinds:x.string().array(),selectedTypes:x.string().array(),selectedLifecycles:x.string().array(),selectedOwners:x.string().array(),selectedSystems:x.string().array(),selectedTags:x.string().array()}),Hs=x.strictObject({id:x.string(),label:x.string(),description:x.string()}),zs=x.strictObject({checks:x.array(Hs).min(1,Hr)}),_s=x.strictObject({id:x.number().optional(),milestoneName:x.string().min(1,J).max(nn,`Input must be less than ${nn} characters`),milestoneDescription:x.string().min(1,J),milestonePassrate:x.coerce.number().min(zr,`Minimum pass rate is ${zr}%`).max(_r,`Maximum pass rate is ${_r}%`)}),Us=x.strictObject({milestones:x.array(_s).min(1,J)}),Ks=x.strictObject({detailsStep:Ws,tracksStep:zs,filtersStep:Vs,milestonesStep:Us}),js={detailsStep:{campaignName:"",campaignDescription:"",campaignOwner:"",supportChannel:"",campaignStartDate:null,campaignEndDate:null},tracksStep:{checks:[]},filtersStep:{selectedKinds:[],selectedTypes:[],selectedLifecycles:[],selectedOwners:[],selectedSystems:[],selectedTags:[]},milestonesStep:{milestones:[{milestoneName:"",milestoneDescription:"",milestonePassrate:"0"}]}},Me={details:{name:{name:"Campaign name",description:"Give your campaign a meaningful name so it's easy to remember it",helperText:`Max ${an} 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",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 (Optional)",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 ${nn} characters`,placeholder:"Example: 80% passrate"},description:{name:"Milestone description",description:"Give your milestone a meaningful description so others can understand how to use it",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.'}},yt=100,qs=x.strictObject({trackName:x.string().min(1,J).max(yt,`Input must be less than ${yt} characters`),trackDescription:x.string().min(1,J),ownerEntityRef:x.string().min(1,J),documentationURL:x.string().optional()}),Qs=x.strictObject({levelName:x.string().min(1,J).max(yt,`Input must be less than ${yt} characters`),levelDescription:x.string().optional(),levelChips:x.array(x.any()).min(1)}),Ys=x.strictObject({filters:x.strictObject({selectedKinds:x.string().array(),selectedTypes:x.string().array(),selectedLifecycles:x.string().array(),selectedOwners:x.string().array(),selectedSystems:x.string().array(),selectedTags:x.string().array()}).optional()}),Xs=x.strictObject({levels:x.array(Qs).min(1,Hr)}),Zs=x.strictObject({detailsStep:qs,levelsStep:Xs,filtersStep:Ys}),Js={detailsStep:{trackName:"",trackDescription:"",ownerEntityRef:""},levelsStep:{levels:[{levelName:"Level 1",levelDescription:"",levelChips:[]}]},filtersStep:{}},ec=({name:e,description:a,ownerEntityRef:n,filter:r,levels:l,documentationURL:i})=>({detailsStep:{trackName:e,trackDescription:a!=null?a:"",documentationURL:i!=null?i:void 0,ownerEntityRef:n},levelsStep:{levels:(l==null?void 0:l.map(o=>{var s,c,d;return{levelName:(c=(s=o.name)!=null?s:`Level ${o.ordinal}`)!=null?c:"Level 1",levelDescription:(d=o.description)!=null?d:"",levelChips:o.checks.map(m=>{var u;return{id:m.id,label:(u=m.name)!=null?u:m.id}})}}))||[]},filtersStep:{filters:Xa(r)}}),Kr=(e,a,n)=>{var r,l,i,o;return{id:(r=n==null?void 0:n.id)!=null?r:Wt(),ownerEntityRef:e.detailsStep.ownerEntityRef,description:e.detailsStep.trackDescription,name:e.detailsStep.trackName,documentationURL:(l=e.detailsStep.documentationURL)!=null?l:"",type:(i=n==null?void 0:n.type)!=null?i:"standard",levels:(o=e.levelsStep.levels)==null?void 0:o.map((s,c)=>{var d,m;return{ordinal:c+1,name:(d=s.levelName)!=null?d:"",description:(m=s.levelDescription)!=null?m:"",checks:s.levelChips.map(u=>a[u.id])}}),filter:Wr(e.filtersStep.filters)}},tc=e=>{const{selectedItem:a}=Re(),n=K(()=>a?ec(a):Js,[a]),r=Ht({defaultValues:n,mode:"onChange",resolver:Ia(Zs)}),{userEntityRef:l}=mt();G(()=>{!a&&l&&!r.getValues("detailsStep.ownerEntityRef")&&r.setValue("detailsStep.ownerEntityRef",l)},[a,l,r]);const{checkChips:i,checksLoading:o,checksMap:s}=tn(),c=new Set(r.getValues("levelsStep.levels").flatMap(u=>u.levelChips.map(p=>p.id))),d=i.filter(u=>!c.has(u.id)),{showModal:m}=je();return{formMethods:r,onSubmit:async u=>{if(!await m({title:"Save Track",message:`Are you sure you want to save track: ${u.detailsStep.trackName}?`,error:!1}))return;const p=Kr(u,s!=null?s:{},a);e(p)},selectableChips:d,checksLoading:o}},ac=({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(d=>{var m;return{id:d.id,label:(m=d.name)!=null?m:d.id,description:d.description}})},filtersStep:Xa(s.filter),milestonesStep:{milestones:i.map(d=>({id:Number(d.id),milestoneName:d.name,milestoneDescription:d.description,milestonePassrate:d.targetPercent.toString()}))}}},nc=(e,a,n)=>{var r;const{tracksStep:{checks:l},detailsStep:{campaignName:i,campaignDescription:o,campaignOwner:s,supportChannel:c,campaignStartDate:d,campaignEndDate:m},filtersStep:u,milestonesStep:{milestones:p}}=e,h=Kr({detailsStep:{trackName:`${i}`,trackDescription:`The checks for the ${i} campaign.`,ownerEntityRef:s},levelsStep:{levels:[{levelName:"Level 1",levelChips:l,levelDescription:""}]},filtersStep:{filters:u}},n!=null?n:{},a==null?void 0:a.track);return{id:(r=a==null?void 0:a.id)!=null?r:Wt(),track:{...h,type:"campaign"},name:i,description:o,ownerEntityRef:s,supportChannel:c,startDate:d,targetCompletionDate:m,milestones:p.map(({id:b,milestonePassrate:k,milestoneDescription:E,milestoneName:C})=>({id:b,trackId:h.id,name:C,description:E,targetPercent:parseInt(k,10),targetCompletionDate:m}))}},rc=(e,a)=>{const n=K(()=>a?ac(a):js,[a]),{control:r,handleSubmit:l,getValues:i,setValue:o,trigger:s,formState:{errors:c}}=Ht({defaultValues:n,mode:"onChange",resolver:Ia(Ks)}),{showModal:d}=je(),{checksMap:m}=tn();return{control:r,handleSubmit:l,getValues:i,setValue:o,trigger:s,errors:c,onSubmit:async u=>{if(!await d({title:"Save Campaign",message:`Are you sure you want to save campaign: ${u.detailsStep.campaignName}?`,error:!1}))return;const p=nc(u,a,m);e(p)}}},lc=R(e=>({helperText:{marginLeft:0}})),ic=({control:e,errors:a,isLoading:n,disabled:r})=>{const l=lc(),{description:i}=Me.details;return t.createElement("div",null,t.createElement(v,{variant:"subtitle2"},i.name),t.createElement(v,{variant:"caption"},i.description),t.createElement(W,{name:"detailsStep.campaignDescription",control:e,defaultValue:"",render:({field:o})=>{var s;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:(s=a==null?void 0:a.campaignDescription)==null?void 0:s.message})}}))},oc=R(e=>({helperText:{marginLeft:0}})),sc=({control:e,errors:a,isLoading:n,disabled:r})=>{const l=oc(),{name:i}=Me.details;return t.createElement("div",null,t.createElement(v,{variant:"subtitle2"},i.name),t.createElement(v,{variant:"caption"},i.description),t.createElement(W,{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})}}))},cc=R(()=>({helperText:{marginLeft:0}})),qt=({name:e,control:a,selectLabel:n,options:r,disabled:l,rules:i,style:o,helperText:s})=>{const c=cc();return t.createElement(W,{name:e,control:a,rules:i,render:({field:d,fieldState:m})=>t.createElement(Dt,{variant:"outlined",style:o!=null?o:{minWidth:200},error:m.invalid},t.createElement(ga,{id:`${e}-select-label`},n),t.createElement(va,{...d,disabled:l,error:m.invalid,"data-testid":`${e}-select`,labelId:`${e}-select-label`,label:n,value:r?d.value:"",defaultValue:""},r==null?void 0:r.map(({value:u,label:p})=>t.createElement(pe,{key:u,value:u},p))),t.createElement(Pn,{className:c.helperText},m.error?m.error.message:s))})},dc=R(e=>({helperText:{marginLeft:0},selectField:{display:"flex",flexDirection:"column",gap:e.spacing(1)},fieldContainer:{width:"250px"}})),mc=({control:e,errors:a,isLoading:n,disabled:r})=>{var l,i;const o=dc(),{owner:s}=Me.details,{options:c}=xa(),{user:d,userEntityRef:m}=mt();let u=Da(c==null?void 0:c.map(p=>({value:p.ref,label:p.name})),"value");return m&&(u=[{value:m,label:d==null?void 0:d.metadata.name},...u]),t.createElement("div",{className:o.selectField},t.createElement("header",null,t.createElement(v,{variant:"subtitle2"},s.name),t.createElement(v,{variant:"caption"},s.description)),t.createElement("div",{className:o.fieldContainer},t.createElement(qt,{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})))},uc=R(e=>({chip:{backgroundColor:e.palette.primary.main,color:e.palette.primary.contrastText},chips:{width:"310px",marginLeft:e.spacing(1)}})),pc=[{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"}],hc=({props:e,startDate:a,selectedDuration:n,setSelectedDuration:r,isLoading:l,disabled:i})=>{const o=uc();return t.createElement(g,{container:!0,direction:"column"},t.createElement(g,{item:!0},t.createElement(yo,{...e})),t.createElement(g,{item:!0,className:o.chips},pc.map(({value:s,label:c})=>t.createElement(_e,{key:c,label:c,className:n===s?o.chip:void 0,color:n===s?"primary":void 0,size:"small",onClick:()=>{if(a){r(s);const d=Qe.fromISO(a.toString()).plus(s);e.onChange(d,!1)}},disabled:l||i}))))},gc=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%"}})),vc=({control:e,errors:a,isLoading:n,disabled:r,startDate:l})=>{const i=gc(),[o,s]=T(!1),[c,d]=T(!1),[m,u]=T(l),[p,h]=T(void 0),{startingDate:b,endingDate:k}=Me.details;return t.createElement("div",{className:i.selectFieldGroup},t.createElement(v,{variant:"subtitle2",className:i.scheduleTitle},"Campaign schedule"),t.createElement("div",{className:i.selectField},t.createElement(v,{variant:"subtitle2"},b.name),t.createElement("div",{className:i.fieldContainer},t.createElement(W,{control:e,name:"detailsStep.campaignStartDate",render:({field:E})=>{var C,y;const{ref:f,...w}=E;return t.createElement(pr,{utils:mr},t.createElement(ur,{inputRef:E.ref,...w,format:"MMMM dd, yyyy",autoOk:!0,FormHelperTextProps:{className:i.helperText},inputVariant:"outlined",className:i.select,error:!!(a!=null&&a.campaignStartDate),helperText:(y=(C=a==null?void 0:a.campaignStartDate)==null?void 0:C.message)!=null?y:void 0,onChange:N=>{u(N),E.onChange(N)},open:o,disabled:n||r,InputProps:{readOnly:!0,placeholder:b.placeholder,onClick:()=>s(!0)},onOpen:()=>s(!0),onClose:()=>s(!1)}))}}))),t.createElement("div",{className:i.selectField},t.createElement(v,{variant:"subtitle2"},k.name),t.createElement("div",{className:i.fieldContainer},t.createElement(W,{name:"detailsStep.campaignEndDate",control:e,render:({field:E})=>{var C,y;const{ref:f,...w}=E;return t.createElement(g,{container:!0,direction:"column"},t.createElement(g,{item:!0},t.createElement(pr,{utils:mr},t.createElement(ur,{inputRef:E.ref,...w,disablePast:!0,format:"MMMM dd, yyyy",autoOk:!0,FormHelperTextProps:{className:i.helperText},inputVariant:"outlined",className:i.select,error:!!(a!=null&&a.campaignEndDate),helperText:(y=(C=a==null?void 0:a.campaignEndDate)==null?void 0:C.message)!=null?y:void 0,onChange:N=>{E.onChange(N)},open:c,disabled:n||r,InputProps:{readOnly:!0,placeholder:k.placeholder,onClick:()=>d(!0)},onOpen:()=>{h(void 0),d(!0)},onClose:()=>d(!1),ToolbarComponent:N=>t.createElement(hc,{props:N,isLoading:n,disabled:!!r,startDate:m,selectedDuration:p,setSelectedDuration:h})}))))}}))))},fc=R(()=>({helperText:{marginLeft:0}})),Qt=({name:e,control:a,error:n,label:r,placeholder:l,disabled:i,numbersOnly:o,inputProps:s,rules:c,messages:d,helperText:m,multiline:u,minRows:p,variant:h="standard",size:b,margin:k="normal"})=>{const E=fc();return t.createElement(W,{name:e,control:a,defaultValue:"",rules:c,render:({field:C})=>t.createElement(Y,{...C,FormHelperTextProps:{className:E.helperText},fullWidth:!0,multiline:u,minRows:p,placeholder:l,label:r,disabled:i,type:o?"number":"text",InputProps:s,margin:k,error:!!n,helperText:n&&d?d[n.type]:m,variant:h,size:b})})},Ec=R(e=>({fieldContainer:{width:"250px"}})),yc=({control:e,errors:a,isLoading:n,disabled:r})=>{var l,i;const o=Ec(),{support:s}=Me.details;return t.createElement("div",{style:{marginTop:10}},t.createElement(v,{variant:"subtitle2"},s.name),t.createElement(v,{variant:"caption"},s.description),t.createElement("div",{className:o.fieldContainer},t.createElement(Qt,{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})))},bc=({control:e,errors:a,isLoading:n,disabled:r,startDate:l})=>t.createElement(t.Fragment,null,t.createElement(sc,{control:e,errors:a,isLoading:n,disabled:r}),t.createElement(ic,{control:e,errors:a,isLoading:n,disabled:r}),t.createElement(mc,{control:e,errors:a,isLoading:n,disabled:r}),t.createElement(yc,{control:e,errors:a,isLoading:n,disabled:r}),t.createElement(vc,{control:e,errors:a,isLoading:n,disabled:r,startDate:l})),jr={mouseX:null,mouseY:null},qr=()=>{const[e,a]=T(jr),n=l=>{l.preventDefault(),a({mouseX:l.clientX-2,mouseY:l.clientY-4})},r=()=>{a(jr)};return{contextMenu:e,onContextMenu:n,onContextMenuClick:()=>{r()},onContextMenuClose:r}},Qr=({x:e,y:a,menuItems:n,onClose:r,onClick:l})=>t.createElement(Ot,{keepMounted:!0,open:!!e,onClose:r,anchorReference:"anchorPosition",anchorPosition:a&&e?{top:a,left:e}:void 0},n.map(i=>t.createElement(pe,{key:i,onClick:()=>l(i)},i))),Yr=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"}}}),Cc=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]}})),Xr=({chips:e,onDelete:a,onDrop:n,error:r=!1,placeholder:l="",disabled:i})=>{const o=Cc(),s=Yr(),[{isOver:c},d]=bo(()=>({accept:"chip",drop:f=>{n(f)},collect:f=>({isOver:f.isOver()})})),m=["Remove check"],{contextMenu:u,onContextMenu:p,onContextMenuClose:h,onContextMenuClick:b}=qr(),[k,E]=T(null),C=(f,w)=>{p(f),E(w)},y=()=>{b(),k&&a(k)};return t.createElement("div",{ref:d,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(f=>t.createElement(_e,{key:f.id,label:f.label,className:s.chip,icon:t.createElement(hr,null),style:{cursor:"pointer"},onDelete:()=>a(f),disabled:i,onContextMenu:w=>C(w,f)})):l),t.createElement(Qr,{x:u.mouseX,y:u.mouseY,menuItems:m,onClose:h,onClick:y}))},Zr=({chip:e,disabled:a,onContextMenuAdd:n})=>{var r;const[l,i]=Co(()=>({type:"chip",item:e,collect:h=>({isDragging:h.isDragging()})})),o=Yr(),s=["Add check"],{contextMenu:c,onContextMenu:d,onContextMenuClose:m,onContextMenuClick:u}=qr(),p=()=>{u(),n==null||n(e)};return t.createElement(t.Fragment,null,t.createElement(_e,{ref:i,label:e.label,className:o.chip,icon:t.createElement(hr,{"data-testid":"drag-indicator-icon"}),disabled:a,onDelete:()=>{},onContextMenu:n?d:void 0,deleteIcon:t.createElement(ne,{title:(r=e.description)!=null?r:""},t.createElement(ko,{className:o.icon,"data-testid":"visibility-icon"}))}),t.createElement(Qr,{x:c.mouseX,y:c.mouseY,menuItems:s,onClose:m,onClick:p}))},kc=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)}})),xc=({chips:e,disabled:a,onContextMenuAdd:n})=>t.createElement(t.Fragment,null,e.map(r=>t.createElement(Zr,{disabled:a,key:r.id,chip:r,onContextMenuAdd:n?()=>n(r):void 0}))),wc=()=>t.createElement(v,{variant:"body1",color:"textSecondary"},"There are no matches."),Jr=({isLoading:e,chips:a=[],disabled:n,label:r,onContextMenuAdd:l})=>{const i=kc(),[o,s]=T(""),c=a.filter(u=>u.label.toLowerCase().includes(o.toLowerCase())),d=a.length>0||o;let m=null;return e?m=t.createElement(ut,null):c.length>0?m=t.createElement(xc,{disabled:n!=null?n:!1,chips:c,onContextMenuAdd:l}):d&&(m=t.createElement(wc,null)),t.createElement(g,{container:!0},t.createElement(g,{item:!0,xs:12,className:i.columnHeader},t.createElement(v,{className:i.subtitle},r!=null?r:"Checks")),t.createElement(g,{item:!0,xs:12},t.createElement(qa,{searchTerm:o,disabled:e||n,setSearchTerm:s,placeholder:"Search available checks",variant:"outlined",size:"small"})),t.createElement(g,{item:!0,className:i.chipContainer,xs:12},m))},Tc=R(e=>({columnHeader:{display:"flex",justifyContent:"space-between",alignItems:"center"},subtitle:{fontWeight:"bold",color:e.palette.primary.main,marginLeft:"-16px"},helperText:{fontSize:e.typography.subtitle2.fontSize,color:e.palette.textSubtle,marginBottom:e.spacing(1)},levelsContainer:{marginTop:"0",flexDirection:"column"},errorText:{marginTop:e.spacing(3),marginLeft:e.spacing(-2)},formContainer:{width:"100%"}})),Sc=({control:e,disabled:a,isLoading:n,errors:r})=>{const l=Tc(),{checkChips:i}=tn(),{fields:o,remove:s,append:c}=zt({control:e,name:"tracksStep.checks"}),d=new Set(o.flatMap(({label:h})=>h)),m=i.filter(h=>!d.has(h.label)),u=U(h=>{c(h)},[c]),p=U(h=>{const b=dr(o,k=>k.id===h.id);s(b)},[s,o]);return t.createElement(W,{control:e,name:"tracksStep.checks",render:()=>{var h;return t.createElement(Dt,{error:!!(r!=null&&r.checks),disabled:a||n,variant:"outlined",className:l.formContainer},t.createElement(v,{className:l.helperText},"Drag or right-click on a check to add it to the Campaign."),t.createElement(g,{item:!0,xs:12},t.createElement(g,{container:!0,spacing:4},t.createElement($a,{backend:Aa},t.createElement(g,{item:!0,xs:5},t.createElement(Jr,{chips:m,isLoading:n,disabled:a,label:"Campaign Checks",onContextMenuAdd:b=>c(b)})),t.createElement(g,{item:!0,xs:7},t.createElement(g,{container:!0},t.createElement(g,{item:!0,xs:12,className:l.columnHeader},t.createElement(v,{className:l.subtitle},"Included Checks")),t.createElement(g,{container:!0,item:!0,spacing:5,className:l.levelsContainer},t.createElement(Xr,{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}))),((h=r==null?void 0:r.checks)==null?void 0:h.message)&&t.createElement(Pn,{className:l.errorText},r.checks.message))))))}})},Rc=R(e=>({button:{border:"none",fontWeight:700,fontSize:e.typography.subtitle2.fontSize,lineHeight:"19px",color:e.palette.primary.main,textTransform:"none"}})),Yt=({label:e,...a})=>{const n=Rc();return t.createElement(H,{className:n.button,...a,"aria-label":e},e)},Pc=R(()=>({milestoneHeader:{display:"flex",alignItems:"center"},divider:{margin:"20px 0"},helperText:{marginLeft:0},selectContainer:{width:"250px"}})),Nc=({control:e,errors:a,isLoading:n,disabled:r})=>{const l=Pc(),{name:i,description:o,passrate:s}=Me.milestones,{fields:c,append:d,remove:m}=zt({control:e,name:"milestonesStep.milestones"}),u=()=>d({milestoneName:"",milestoneDescription:"",milestonePassrate:"0"});return t.createElement(t.Fragment,null,c.map((p,h)=>t.createElement("div",{key:p.id},h!==0&&t.createElement(He,{className:l.divider}),t.createElement(g,{container:!0,spacing:1,className:l.milestoneHeader},t.createElement(g,{item:!0,xs:!0},t.createElement(v,{variant:"subtitle2"},i.name),t.createElement(v,{variant:"caption"},i.description),t.createElement(W,{name:`milestonesStep.milestones.${h}.milestoneName`,control:e,defaultValue:"",render:({field:b})=>{var k,E,C,y,f,w;return t.createElement(Y,{...b,FormHelperTextProps:{className:l.helperText},variant:"outlined",fullWidth:!0,placeholder:i.placeholder,disabled:n||r,type:"text",margin:"normal",error:!!((E=(k=a==null?void 0:a.milestones)==null?void 0:k[h])!=null&&E.milestoneName),helperText:(w=(f=(y=(C=a==null?void 0:a.milestones)==null?void 0:C[h])==null?void 0:y.milestoneName)==null?void 0:f.message)!=null?w:i.helperText})}})),h!==0&&!r&&t.createElement(g,{item:!0},t.createElement(Yt,{label:"Remove Milestone",startIcon:t.createElement(vr,null),onClick:()=>m(h),disabled:r}))),t.createElement("div",null,t.createElement(v,{variant:"subtitle2"},o.name),t.createElement(v,{variant:"caption"},o.description),t.createElement(W,{name:`milestonesStep.milestones.${h}.milestoneDescription`,control:e,defaultValue:"",render:({field:b})=>{var k,E,C,y,f;return t.createElement(Y,{...b,FormHelperTextProps:{className:l.helperText},variant:"outlined",multiline:!0,minRows:4,fullWidth:!0,placeholder:o.placeholder,disabled:n||r,type:"text",margin:"normal",error:!!((E=(k=a==null?void 0:a.milestones)==null?void 0:k[h])!=null&&E.milestoneDescription),helperText:(f=(y=(C=a==null?void 0:a.milestones)==null?void 0:C[h])==null?void 0:y.milestoneDescription)==null?void 0:f.message})}})),t.createElement("div",null,t.createElement(v,{variant:"subtitle2"},s.name),t.createElement(v,{variant:"caption"},s.description),t.createElement("div",{className:l.selectContainer},t.createElement(W,{name:`milestonesStep.milestones.${h}.milestonePassrate`,control:e,defaultValue:"",render:({field:b})=>{var k,E,C,y,f,w;return t.createElement(Y,{...b,FormHelperTextProps:{className:l.helperText},variant:"outlined",fullWidth:!0,placeholder:s.placeholder,disabled:n||r,type:"number",margin:"normal",error:!!((E=(k=a==null?void 0:a.milestones)==null?void 0:k[h])!=null&&E.milestonePassrate),helperText:(w=(f=(y=(C=a==null?void 0:a.milestones)==null?void 0:C[h])==null?void 0:y.milestonePassrate)==null?void 0:f.message)!=null?w:void 0})}}))))),t.createElement(Yt,{label:"Add Milestone",startIcon:t.createElement(gr,null),onClick:()=>u(),disabled:r}))};var Lc=(e=>(e.Details="Enter campaign details",e.Checks="Add checks",e.Entities="Choose the affected entities (Optional)",e.Milestones="Set campaign milestones",e))(Lc||{});const el=({onSave:e,onCancel:a,selectedCampaign:n})=>{const r=Ya(),{isLoading:l,isReadOnly:i}=gt(),{control:o,handleSubmit:s,errors:c,trigger:d,getValues:m,onSubmit:u}=rc(e,n),p=m().detailsStep.campaignStartDate,h=[{label:"Enter campaign details",content:()=>t.createElement(bc,{control:o,isLoading:l,disabled:!1,errors:c.detailsStep,startDate:p})},{label:"Add checks",content:()=>t.createElement(Sc,{control:o,isLoading:l,disabled:!1,errors:c.tracksStep})},{label:"Choose the affected entities (Optional)",content:()=>t.createElement("div",{className:r.filters},t.createElement(v,{variant:"body2"},Me.filter.description),t.createElement(W,{name:"filtersStep",control:o,render:({field:k})=>{var E;return t.createElement(Ja,{value:(E=k.value)!=null?E:ft(),onChange:k.onChange})}}))},{label:"Set campaign milestones",content:()=>t.createElement(Nc,{control:o,isLoading:l,disabled:!1,errors:c.milestonesStep})}],b=n?[...Array(h.length).keys()]:[0];return t.createElement("form",{onSubmit:s(u)},t.createElement(en,{onClose:a,handleSubmit:s,trigger:d,onSubmit:u,initialVisited:b,stepNameMap:gs,steps:h,isLoading:l,isReadOnly:i,saveButtonText:"Save Campaign",detailsComponent:t.createElement(Ms,null)}))},Oc=B(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}}})),Ic=t.forwardRef(function(e,a){return t.createElement(ai,{direction:"up",ref:a,...e})}),tt=({open:e,handleClose:a,title:n,children:r})=>{const l=Oc();return t.createElement(ni,{fullScreen:!0,open:e,onClose:a,TransitionComponent:Ic},t.createElement(ri,{className:l.appBar},t.createElement(li,null,t.createElement(v,{className:l.title,"data-testid":`dialog-${n}`},n),t.createElement(dt,{"data-testid":"close-dialog",edge:"end",color:"inherit",onClick:a,"aria-label":"close",className:l.closeIcon},t.createElement(rr,null)))),t.createElement(S,{className:l.content},r))},Dc=()=>{const{hideModal:e,showAddModal:a,setIsLoading:n}=gt(),{mutateAsync:r,isLoading:l}=Zo();return G(()=>{n(l)},[n,l]),t.createElement(tt,{title:"Create a Campaign",open:a,handleClose:e},t.createElement(el,{onSave:async i=>{await r(i,{onSuccess:()=>e()})},onCancel:e}))},$c=()=>{const[e]=Ca(),a=e.get("campaignsPerPage"),n=a?parseInt(a,10):wa;return t.createElement(hs,null,t.createElement("div",null,t.createElement(Ns,{campaignsPerPage:n}),t.createElement(Dc,null)))};function tl(e){const a=D(A),n={ids:[e]};return V([O.GetCampaigns,JSON.stringify(n)],async()=>a.getCampaigns(n),{staleTime:5*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})}const Ac=B(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`}})),Fc=({campaign:e})=>{const a=Ac(),n=e.milestones;return t.createElement(t.Fragment,null,t.createElement(v,{variant:"h6",className:a.sectionLabel},"Campaign milestones"),t.createElement(g,{container:!0,className:a.milestones,spacing:2},n.length?n.map((r,l)=>t.createElement(g,{item:!0,container:!0,xs:12,key:l,spacing:2},t.createElement(g,{item:!0,xs:12},t.createElement(Ta,{label:"Name",value:r.name}),t.createElement(Ta,{label:"Description",value:r.description}),t.createElement(Ta,{label:"Goal pass rate",value:`${r.targetPercent}%`}),l<n.length-1&&t.createElement(He,{className:a.divider})))):t.createElement(v,{variant:"body1",color:"textSecondary"},"There are no milestones for this campaign.")))};function Mc(e,a,n){const r=D(A);return V([O.GetCampaignProgress,e,a,n],async()=>r.getCampaignProgress(e,a,n),{staleTime:5*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})}const al=25,Bc=(e,a,n,r)=>{var l;const i=[];for(const{check:s,results:c}of e)i.push({height:Oi.check,cells:[Ii(s.name,vo(c.filter(({result:d})=>d!==Kn.NotApplicable),"result")),...a.flatMap(d=>{var m,u;if(d===void 0)return[];const p=(u=(m=c.find(({entityRef:h})=>h===d))==null?void 0:m.result)!=null?u:Kn.NotApplicable;return[Di(r,s,d,p,n)]})]});const o=$i(a!=null?a:[]);return i.push({height:Math.min(Ai((l=o.length)!=null?l:1),220),cells:[_n(""),...a.map(s=>_n(s||""))]}),i},Gc=R(e=>({table:{backgroundColor:e.palette.background.paper,borderCollapse:"collapse",whiteSpace:"nowrap",textAlign:"left"}})),Wc=({results:e,campaignTrackId:a})=>{const n=Gc(),r=Q(Ra),{checks:l,entityRefs:i}=e,o=i.length>=al?i:[...i,...Array.from({length:al-i.length},()=>{})],s=Bc(l,o,r,a),c=Fi(s);return t.createElement(g,{item:!0,xs:12},t.createElement(xo,{style:{overflow:"auto hidden"},className:n.table,columnCount:o.length+1,columnWidth:d=>d===0?zn.programTitle:zn.checkResult,rowCount:s.length,rowHeight:d=>s[d].height,height:Ni(s),width:Li(o.length+1)},c))},Vc=B(e=>({sectionLabel:{fontWeight:700,margin:e.spacing(2,0),color:e.palette.primary.main}})),rn=25,Xt=()=>{const e=Vc();return t.createElement(v,{variant:"h6",className:e.sectionLabel},"Campaign progress")},Hc=({campaign:e})=>{const{cursor:a,pageSize:n,...r}=Mi({defaultPageSize:rn,label:"entitiesPerPage"}),{data:l,isLoading:i,isError:o}=Mc(e.id,n,a);if(i)return t.createElement(t.Fragment,null,t.createElement(Xt,null),t.createElement("div",{"data-testid":"progress-indicator"},t.createElement(Bi,{checkCount:1,levelCount:1})));if(o)return t.createElement(t.Fragment,null,t.createElement(Xt,null),t.createElement(v,{color:"error"},"Failed to load campaign progress."));if(!l)return t.createElement(t.Fragment,null,t.createElement(Xt,null),t.createElement(v,null,"No campaign progress available."));const{totalCount:s,endCursor:c,prevCursor:d}=l;return t.createElement(t.Fragment,null,t.createElement(Xt,null),t.createElement(Wc,{results:l,campaignTrackId:e.track.id}),t.createElement(Gi,{...r,totalCount:s,defaultPageSize:rn,endCursor:c,prevCursor:d,pageSize:n,rowsPerPageOptions:[rn],labelRowsPerPage:"Entities per page:"}))},zc=B(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]}})),_c=({campaign:e})=>{var a,n,r;const l=zc(),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(v,{variant:"h6",className:l.sectionLabel},"Campaign checks"),t.createElement("div",{className:l.chipContainer},i.length?i.map(o=>t.createElement(Zr,{key:o.id,chip:o,disabled:!0})):t.createElement(v,{variant:"body1",color:"textSecondary",style:{alignSelf:"center"}},"There are no checks for this campaign.")))},Uc=B(e=>({root:{flexGrow:1,padding:e.spacing(2)},progressSection:{minHeight:350}})),Kc=()=>{var e,a;const n=Uc(),{campaignId:r}=Ue(),{data:l,isLoading:i}=tl(r!=null?r:""),o=(a=(e=l==null?void 0:l.edges)==null?void 0:e[0])==null?void 0:a.node,[s]=Je(jn);return i?t.createElement("div",{"data-testid":"loading-indicator"},t.createElement(ke,null)):o?t.createElement(tt,{title:"Campaign Details",open:!0,handleClose:s},t.createElement($a,{backend:Aa},t.createElement(g,{container:!0,className:n.root,spacing:3,direction:"column"},t.createElement(g,{item:!0,xs:12},t.createElement(Wi,{campaign:o})),t.createElement(g,{item:!0,xs:6},t.createElement(_c,{campaign:o})),t.createElement(g,{item:!0,xs:12,className:n.progressSection},t.createElement(Hc,{campaign:o})),t.createElement(g,{item:!0,xs:12},t.createElement(Fc,{campaign:o}))))):t.createElement(Ka,null)},jc=()=>{var e,a;const n=he(),r=Q(jn),{campaignId:l}=Ue(),{setIsLoading:i}=gt(),{mutateAsync:o,isLoading:s}=es(),{data:c,isLoading:d}=tl(l!=null?l:""),m=(a=(e=c==null?void 0:c.edges)==null?void 0:e[0])==null?void 0:a.node;if(G(()=>i(s),[i,s]),!d&&!m)return t.createElement(Ka,null);const u=async h=>{await o(h,{onSuccess:()=>n(r())})},p=()=>n(r());return t.createElement(tt,{title:"Update Campaign",open:!0,handleClose:p},d?t.createElement(ke,null):t.createElement(el,{onSave:u,onCancel:p,selectedCampaign:m}))},qc=R({warningPanel:{padding:"24px 24px 0 24px"}}),Zt=({entityName:e,entityId:a,showNotFound:n=!1,showCannotView:r=!1,showCannotEdit:l=!1})=>{const{warningPanel:i}=qc();return t.createElement(t.Fragment,null,n&&t.createElement("div",{className:i},t.createElement(ma,{title:`${fo(e)} not found`,message:`There is no ${e} with the requested id: ${a}.`})),r&&t.createElement("div",{className:i},t.createElement(ma,{title:`Cannot view ${e}`,message:`User does not have permission to view ${e} id: ${a}.`})),l&&t.createElement("div",{className:i},t.createElement(ma,{title:`Cannot edit ${e}`,message:`Cannot edit ${e} id: ${a}.`})))},nl=({control:e,description:a,name:n,disabled:r})=>{const l=Ya();return t.createElement("div",{className:l.filters},t.createElement(v,{variant:"body2"},a),t.createElement(W,{name:n,control:e,render:({field:i})=>{var o;return t.createElement(Ja,{value:(o=i.value)!=null?o:ft(),onChange:i.onChange,disabled:r})}}))};var z=(e=>(e.Months="months",e.Weeks="weeks",e.Days="days",e.Hours="hours",e.Minutes="minutes",e.Seconds="seconds",e))(z||{});const ln=()=>({type:"HumanDuration",unit:z.Hours,value:1,cron:""}),on=[z.Months,z.Weeks,z.Days,z.Hours,z.Minutes,z.Seconds];function Qc(e){return on.includes(e)}function Jt(e){switch(e){case"months":return z.Months;case"weeks":return z.Weeks;case"days":return z.Days;case"hours":return z.Hours;case"minutes":return z.Minutes;case"seconds":return z.Seconds;default:return null}}function sn(e){if(e){const{cron:a,type:n,unit:r,value:l}=e;return n==="HumanDuration"?{[r]:l}:{cron:a}}}function cn(e){var a;const n=ln();if(e&&qe.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=Jt(l))!=null?a:z.Hours,value:i}}}return n}const rl=e=>wo(e).isValid(),ll=e=>{try{return To.toString(e)}catch(a){return typeof a=="string"?a.replace(/^Error:\s*/,""):"Invalid cron expression"}},il=1,ol=31536e3,dn=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},Yc=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}})),sl=({value:e,onChange:a,disabled:n,errors:r})=>{var l;const i=Yc(),[o,s]=T(e),[c,d]=T(`${e.value}`);G(()=>{a&&a(o)},[o,a]);const m=E=>{s({...e,type:E.target.value})},u=E=>{d(E.target.value);const C=parseInt(E.target.value,10);s({...e,value:isNaN(C)?0:C})},p=E=>{var C;s({...o,unit:(C=Jt(E.target.value))!=null?C:z.Hours})},h=E=>{const C=E.target.value;s({...o,cron:C})},b=()=>{s({...o,type:"cron"})},k=()=>{s({...o,type:"HumanDuration"})};return t.createElement(g,{container:!0,direction:"row"},t.createElement(g,{item:!0},t.createElement(ii,{name:"frequencyType",value:o.type,onChange:m},t.createElement(g,{container:!0,alignItems:"flex-start"},t.createElement(g,{item:!0,className:i.noPaddingLeft},t.createElement(Nn,{disabled:n,value:"HumanDuration"})),t.createElement(g,{item:!0},t.createElement(v,{variant:"body1",className:i.title,onClick:k},"Run on a regular interval"),t.createElement(v,{variant:"caption"},"Run on a regular interval that you define"),o.type==="HumanDuration"&&t.createElement(g,{container:!0,className:i.humanDurationContainer},t.createElement(g,{item:!0},t.createElement(Y,{id:"every",type:"number",inputProps:{min:il,max:ol},label:"Every",name:"every",disabled:n,value:c,error:!!(r!=null&&r.message),helperText:r==null?void 0:r.message,onChange:u})),t.createElement(g,{item:!0},t.createElement(Dt,null,t.createElement(ga,{id:"frequency-unit"},"Unit"),t.createElement(va,{labelId:"frequency-unit",disabled:n,value:o.unit,onChange:p,"data-testid":"frequency-unit"},on.map(E=>t.createElement(pe,{key:E,value:E},E)))))))),t.createElement(He,{className:i.divider}),t.createElement(g,{container:!0,alignItems:"flex-start"},t.createElement(g,{item:!0,className:i.noPaddingLeft},t.createElement(Nn,{disabled:n,value:"cron"})),t.createElement(g,{item:!0},t.createElement(v,{variant:"body1",className:i.title,onClick:b},"Run on a schedule"),t.createElement(v,{variant:"caption"},"Run on a schedule defined via cron expression"),o.type==="cron"&&t.createElement(g,{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:ll(o.cron),disabled:n,placeholder:"* * * * *",error:!!(r!=null&&r.message),value:o.cron,onChange:h})))))))};var ve=(e=>(e.AllOf="all",e.AnyOf="any",e))(ve||{});const Xc={all:"ALL OF",any:"ANY OF"},Zc={0:"detailsStep",1:"rulesStep",2:"filtersStep",3:"scheduleStep"};var ea=(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))(ea||{}),mn=(e=>(e.title="No checks found",e.description="No checks matched your search. Consider changing search term and filters.",e))(mn||{});const Jc=()=>({enabled:!1,frequency:ln()}),ed={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"}},td=e=>Object.keys(e).map(a=>({value:a,label:e[a]}));Object.values(ed).flatMap(td);const ad=e=>{try{return ya(e),!0}catch{return"Invalid fact reference. [source]:[scope]/[name]."}},un=100,nd=x.strictObject({checkName:x.string().min(1,J).max(un,`Input must be less than ${un} characters`),description:x.string().min(1,J),teamOwner:x.string().min(1,J)}),rd=async e=>{if(!await ad(e))throw new Error("Fact reference validation failed");return e},cl=x.lazy(()=>x.strictObject({factRef:x.string().refine(rd,{message:"Valid format: [source]:[scope]/[name]"}),path:x.string().min(1,"Required"),operator:x.string().min(1,"Required"),value:x.union([x.string().min(1,"Required"),x.number()]),conditions:x.array(cl).optional()})),dl=x.lazy(()=>x.strictObject({expressionType:x.enum([ve.AllOf,ve.AnyOf]).optional(),expressions:x.array(dl).optional(),conditions:x.array(cl).optional()})),ld=x.strictObject({expressions:dl,passMessage:x.string().optional(),failMessage:x.string().optional(),warning:x.boolean().optional()}),id=x.strictObject({filters:x.strictObject({selectedKinds:x.string().array(),selectedTypes:x.string().array(),selectedLifecycles:x.string().array(),selectedOwners:x.string().array(),selectedSystems:x.string().array(),selectedTags:x.string().array()}).optional()}),od=x.nativeEnum(z),sd=({type:e,cron:a,value:n})=>e==="cron"?rl(a):e==="HumanDuration"?dn(n)===!0:!0,cd=x.strictObject({type:x.enum(["HumanDuration","cron"]),unit:od.optional(),value:x.number().min(1,"Value must be greater than 0.").optional(),cron:x.string().optional()}).refine(sd,{message:"Invalid frequency configuration"}),dd=x.strictObject({enabled:x.boolean(),frequency:cd}),md=x.strictObject({schedule:dd.optional()}),ud=x.strictObject({detailsStep:nd,rulesStep:ld,filtersStep:id,scheduleStep:md}),pd=e=>{var a;if(Eo(e)&&"frequency"in e){const n=yi.safeParse(e.frequency);if(n.success){const r=n.data;if("cron"in r)return{enabled:!0,frequency:{type:"cron",unit:z.Hours,value:1,cron:r.cron}};const l=Object.keys(r);if(l.length){const i=l[0];if(Qc(i))return{enabled:!0,frequency:{type:"HumanDuration",unit:i,value:(a=r[i])!=null?a:1,cron:""}}}}}return{enabled:!1,frequency:{type:"HumanDuration",unit:z.Hours,value:1,cron:""}}},hd=(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:jt(a)}:{frequency:{cron:l}}}},pn=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(pn(r))}),n}if(e.expressions)return e.expressions.map(pn);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{}},ml=(e,a=!0)=>{if(!e)return{conditions:[]};const n=Object.keys(e),r=n.includes("all")||a&&!n.includes("any")?ve.AllOf:ve.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(ml(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:ve.AllOf,conditions:[{factRef:e.factRef,path:e.path,operator:e.operator,value:e.value}]}},gd=e=>({detailsStep:{checkName:e.name||"",description:e.description||"",teamOwner:e.ownerEntityRef||""},rulesStep:{expressions:ml(e.rule),passMessage:e.passedMessage||void 0,failMessage:e.failedMessage||void 0,warning:e.warning||void 0},filtersStep:{filters:Xa(e.filter)},scheduleStep:{schedule:pd(e.schedule)}}),vd=(e,a)=>{var n,r,l,i;const{detailsStep:o,rulesStep:s,filtersStep:c,scheduleStep:d}=e;return{id:a?a.id:Wt(),ownerEntityRef:(n=o.teamOwner)!=null?n:void 0,name:o.checkName,description:o.description,passedMessage:(r=s.passMessage)!=null?r:void 0,failedMessage:(l=s.failMessage)!=null?l:void 0,rule:pn(s.expressions),warning:(i=s.warning)!=null?i:void 0,filter:c.filters?Wr(c.filters):void 0,schedule:hd(d.schedule,c.filters)}},hn=(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(...hn(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(...hn(i,r))}return n},fd={detailsStep:{checkName:"",description:"",teamOwner:""},rulesStep:{expressions:{expressionType:ve.AllOf,expressions:void 0,conditions:[{factRef:"",path:"",operator:"",value:"",conditions:[]}]},warning:void 0},filtersStep:{filters:ft()},scheduleStep:{schedule:Jc()}},Be={details:{name:{name:"Check name",description:"Give your check a meaningful name so it's easy to remember",helperText:`Max ${un} characters`,placeholder:"Example: Code Coverage Check"},description:{name:"Check description",description:"Give your check a meaningful description so others know what it's for",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 (Optional)",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"},warnings:{name:"Enable warnings",description:"Enable if the check should emit warning check results if it fails",label:"Warning"}},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"}},Ed=B(e=>({container:{display:"flex",flexDirection:"column",gap:e.spacing(2)},helperText:{marginLeft:0}})),yd=({control:e,error:a,isLoading:n,disabled:r})=>{const l=Ed(),{name:i}=Be.details;return t.createElement("div",{className:l.container},t.createElement("div",null,t.createElement(v,{variant:"subtitle2"},i.name),t.createElement(v,{variant:"caption"},i.description)),t.createElement(W,{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})}}))},bd=B(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}`}})),ta=({name:e,control:a,label:n,description:r,disabled:l,rules:i,error:o,helperText:s,placeholder:c})=>{const d=Ce(),m=bd();return t.createElement(W,{name:e,control:a,defaultValue:l?"No description provided.":"",rules:i,render:({field:u})=>t.createElement("div",{"data-color-mode":d.palette.type,className:m.container},t.createElement("div",null,n&&t.createElement(v,{variant:"subtitle2"},n),r&&!l&&t.createElement(v,{variant:"caption"},r)),t.createElement("div",null,l?t.createElement(fr.Markdown,{className:m.markdown,source:u.value}):t.createElement(fr,{textareaProps:{placeholder:c},value:u.value,className:o&&m.errorBorder,onChange:u.onChange,previewOptions:{rehypePlugins:[[So]]},"data-testid":`markdown-editor-${e}`}),(s||o)&&!l&&t.createElement(v,{variant:"caption",className:o?m.errorText:m.helperText},o?o.message:s)))})},Cd=B(e=>({container:{display:"flex",flexDirection:"column",gap:e.spacing(1)},tabContent:{padding:e.spacing(1)}})),kd=({control:e,isLoading:a,disabled:n})=>{const r=Cd(),[l,i]=T(0),{name:o,description:s,passMessagePlaceholder:c,failMessagePlaceholder:d,passedTabName:m,failedTabName:u}=Be.rulesStep.messages,p=(h,b)=>{i(b)};return t.createElement("div",{className:r.container},t.createElement("div",null,t.createElement(v,{variant:"subtitle2"},o),t.createElement(v,{variant:"caption"},s)),t.createElement(fa,{orientation:"horizontal",variant:"scrollable",value:l,onChange:p},t.createElement(De,{label:m}),t.createElement(De,{label:u})),t.createElement("div",{className:r.tabContent},l===0&&t.createElement(ta,{name:"rulesStep.passMessage",control:e,placeholder:c,disabled:a||n}),l===1&&t.createElement(ta,{name:"rulesStep.failMessage",control:e,placeholder:d,disabled:a||n})))},xd=({control:e,isLoading:a,disabled:n,error:r})=>{const{description:l}=Be.details;return t.createElement(ta,{name:"detailsStep.description",control:e,error:r,label:l.name,description:l.description,placeholder:n?void 0:l.placeholder,disabled:n||a})},wd=B(e=>({container:{display:"flex",flexDirection:"column",gap:e.spacing(1)}})),Td=({control:e,disabled:a,error:n})=>{var r;const l=wd(),{options:i,isLoading:o}=xa(),s=Da(i.map(u=>({value:u.ref,label:u.name})),"value"),{owner:{name:c,description:d,selectLabel:m}}=Be.details;return t.createElement("div",{className:l.container},t.createElement("div",null,t.createElement(v,{variant:"subtitle2"},c),t.createElement(v,{variant:"caption"},d)),t.createElement("div",null,t.createElement(qt,{name:"detailsStep.teamOwner",control:e,options:s,selectLabel:m,disabled:a||o,helperText:(r=n==null?void 0:n.message)!=null?r:void 0})))},Sd=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"}})),Rd=({onAddCondition:e,onAddExpression:a})=>{const n=Sd(),[r,l]=T(null),i=!!r,o=c=>{l(c.currentTarget)},s=()=>{l(null)};return t.createElement(S,null,t.createElement(Ln,{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(S,{className:n.label},"Add"),t.createElement(S,{className:n.icon},t.createElement(Er,null)))),t.createElement(Ot,{id:"add-menu",anchorEl:r,open:i,onClose:s,classes:{paper:n.menu},MenuListProps:{"aria-labelledby":"add-button"}},t.createElement(pe,{"data-testid":"add-condition",onClick:()=>{e(),s()}},"Add Condition"),t.createElement(pe,{"data-testid":"add-expression",onClick:()=>{a(),s()}},"Add Expression")))};function Pd(){const e=D(A);return V(["soundcheck/operators"],async()=>e.getOperators(),{cacheTime:1/0,staleTime:1/0,refetchOnMount:!1,refetchOnReconnect:!1,refetchOnWindowFocus:!1})}const ul=({name:e,rules:a,label:n,control:r,options:l,getOptionLabel:i,getOptionValue:o,onChange:s,disabled:c})=>t.createElement(W,{name:e,control:r,rules:a,render:({field:d,fieldState:m})=>t.createElement(La,{...d,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:m.invalid,helperText:m.error?m.error.message:null}),onChange:(u,p)=>{const h=o?o(p):p;s==null||s(h),d.onChange(h)},onInputChange:(u,p)=>{const h=o?o(p):p;s==null||s(h)}})}),Nd=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 gn(e){const a=D(A);return V([O.GetCollectors,e],async()=>a.getCollectors(e),{staleTime:5*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})}function Ld(e,a){const n=D(A);return V([O.GetFactSchema,e,a],()=>n.getFactSchema(e,a),{enabled:!!e&&!!a,staleTime:5*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})}const Od=(e,a)=>{const{data:n,isLoading:r}=gn(),l=Oa({control:a,name:`${e}.factRef`}),[i,o]=T(()=>pl(l));G(()=>{o(pl(l))},[l]);const{data:s}=Ld(i==null?void 0:i.source,i==null?void 0:i.name),c=K(()=>s?hn(s.schema):[],[s]),d=K(()=>n==null?void 0:n.flatMap(m=>m.factNames.map(u=>{const p=ya(u,{defaultSource:m.id,defaultScope:"default"});return{label:p.name,value:bi(p)}})),[n]);return{isLoading:r,pathOptions:c,factRefOptions:d}};function pl(e){if(e)try{return ya(e,{defaultSource:"unknown",defaultScope:"default"})}catch{return null}return null}const Id=({name:e,handleDelete:a,disabled:n,disableDelete:r})=>{var l;const i=Nd(),{control:o,getValues:s,setValue:c}=me(),{data:d,isLoading:m}=Pd(),u=K(()=>{var y;return(y=d==null?void 0:d.map(f=>({value:f.name,label:f.title})))!=null?y:[]},[d]),{pathOptions:p,factRefOptions:h,isLoading:b}=Od(e,o),k=K(()=>{var y;return(y=h==null?void 0:h.map(f=>f.value))!=null?y:[]},[h]),E=(l=s("rulesStep.expressions.conditions"))==null?void 0:l.map(({factRef:y})=>y),C=y=>{y&&!(E!=null&&E.includes(y))&&(c(`${e}.path`,""),c(`${e}.operator`,""),c(`${e}.value`,""))};return t.createElement(S,{className:i.container},t.createElement(S,{className:i.connector}),t.createElement(S,{className:i.innerContainer},t.createElement(S,{className:i.header}),t.createElement(S,{className:i.inputsContainer},h&&t.createElement(ul,{name:`${e}.factRef`,control:o,label:"Fact",options:k,getOptionLabel:y=>{var f,w;return(w=(f=h==null?void 0:h.find(N=>y===N.value))==null?void 0:f.label)!=null?w:y},getOptionValue:y=>{var f,w,N;return(N=(w=(f=h==null?void 0:h.find(L=>y===L.label))==null?void 0:f.value)!=null?w:y)!=null?N:""},disabled:n||b,onChange:C}),t.createElement(ul,{name:`${e}.path`,label:"Path",control:o,disabled:n||b,options:p}),u&&t.createElement(qt,{name:`${e}.operator`,control:o,selectLabel:"Operator",options:u,disabled:m||n}),t.createElement(W,{name:`${e}.value`,control:o,defaultValue:"",render:({field:y,fieldState:f})=>t.createElement(Y,{...y,label:"Value",variant:"outlined",placeholder:"Enter a value",error:f.invalid,helperText:f.error?f.error.message:null,disabled:n})}))),!n&&!r&&t.createElement(dt,{onClick:a,className:i.deleteButton,"data-test-id":`${e}-delete-button`},t.createElement(ir,{className:i.deleteIcon})))},Dd=({conditions:e,name:a,handleDelete:n,disabled:r,disableDelete:l,depth:i})=>t.createElement(t.Fragment,null,e.map((o,s)=>t.createElement(g,{item:!0,key:s},t.createElement(Id,{name:`${a}.conditions[${s}]`,"data-testid":`${a}-condition-input`,handleDelete:()=>n(s),disabled:r,disableDelete:i===0&&s===0?!0:l})))),$d=({expression:e,name:a,depth:n,disabled:r})=>e?t.createElement(g,{item:!0},t.createElement(hl,{name:`${a}`,depth:n+1,disabled:r})):null,Ad=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)"}})),Fd=({name:e,disabled:a})=>{const n=Ad(),{control:r,getValues:l}=me(),i=`${e}`,o=l(i),[s,c]=T(o||ve.AllOf),d=m=>{c(m)};return t.createElement(W,{control:r,name:e,render:({field:{onChange:m}})=>t.createElement(Ln,{color:"primary"},Object.values(ve).map(u=>t.createElement(H,{key:u,className:s===u?`${n.selectedButton} ${n.button}`:`${n.button}`,onClick:()=>{d(u),m(u)},disabled:a},Xc[u])))})},Md=(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:ve.AllOf,expressions:void 0,conditions:[{factRef:"",path:"",operator:"",value:""}]}),n(l,i),await r(l)},handleDeleteCondition:async(l,i)=>{var o,s,c,d;const m=((o=i.match(/(.*\.expressions)(?=\[\d+])/))==null?void 0:o[0])||i,u=`${i}.conditions`,p=a(u);if(p.splice(l,1),p.length===0){n(u,void 0);const h=parseInt(i.slice(i.lastIndexOf("[")+1,i.lastIndexOf("]")),10),b=a(m);(c=(s=b[h])==null?void 0:s.expressions)==null||c.splice(h,1),n(m,(d=b[h])!=null&&d.expressions?b:void 0),await r(m)}else n(u,p),await r(u)}}),Bd=B(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"}})),hl=({name:e,depth:a,disabled:n})=>{const r=Bd(),{getValues:l,setValue:i,trigger:o}=me(),{handleAddCondition:s,handleAddExpression:c,handleDeleteCondition:d}=Md(e,l,i,o),m=`${e}`,u=l(m),p=(u==null?void 0:u.conditions)||[],h=u==null?void 0:u.expressions;return t.createElement(S,{className:a>0?r.inner:r.root},a>0&&t.createElement(S,{className:r.connector}),t.createElement(g,{container:!0,spacing:0,direction:"column"},t.createElement(g,{item:!0},t.createElement(Fd,{disabled:n,name:`${e}.expressionType`})),t.createElement(g,{item:!0,container:!0,spacing:0,direction:"column"},t.createElement(Dd,{depth:a,handleDelete:b=>d(b,e),disabled:n,conditions:p,name:e}),h==null?void 0:h.map((b,k)=>t.createElement($d,{key:k,expression:b,name:`${e}.expressions[${k}]`,depth:a,disabled:n}))),!n&&t.createElement(g,{item:!0},t.createElement(Rd,{onAddCondition:s,onAddExpression:c}))))},Gd=R(e=>({container:{display:"flex",flexDirection:"column",gap:e.spacing(1)}})),Wd=({control:e,disabled:a})=>{const n=Gd(),r=Oa({control:e,name:"scheduleStep.schedule"}),{description:l,checkboxLabel:i}=Be.schedule;return t.createElement("div",{className:n.container},t.createElement(v,{variant:"body2"},l),t.createElement(g,{item:!0,xs:12},t.createElement(g,{item:!0},t.createElement(W,{name:"scheduleStep.schedule.enabled",control:e,render:({field:o})=>t.createElement(ze,{disabled:a,control:t.createElement(Ie,{checked:o.value,onChange:o.onChange}),label:i})})),t.createElement(g,{item:!0},t.createElement(W,{name:"scheduleStep.schedule.frequency",control:e,render:({field:o,fieldState:s})=>t.createElement(sl,{disabled:a||!r.enabled,value:o.value,onChange:o.onChange,errors:s.error})}))))},Vd=e=>{const{selectedItem:a}=ge();let n=fd;a&&(n=gd(a));const r=Ht({defaultValues:n,mode:"onChange",resolver:Ia(ud)}),{showModal:l}=je();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=vd(i,a);e(o)}}},Hd=()=>t.createElement("div",{style:{display:"flex",gap:"10px",flexDirection:"column"}},t.createElement(v,{variant:"h6"},"Creating and managing checks"),t.createElement(v,{variant:"body1"},"Checks are entities created from four components: facts, paths, operators and values. These components are then organized via a boolean calculator in the UI."),t.createElement(v,{variant:"body1"},"To create a check, select the components that you want to use, organize them into rules and give your check a meaningful name and a description."),t.createElement(v,{variant:"body1"},"Once created, you will be able to manage and edit your track on its detail page.")),zd=B(e=>({container:{display:"flex",flexDirection:"column",gap:e.spacing(1)}})),_d=()=>{var e,a,n;const r=zd(),{isLoading:l,isReadOnly:i}=ge(),{control:o,formState:{errors:s}}=me();return t.createElement("div",{className:r.container},t.createElement(yd,{control:o,error:(e=s==null?void 0:s.detailsStep)==null?void 0:e.checkName,isLoading:l,disabled:i}),t.createElement(xd,{control:o,error:(a=s==null?void 0:s.detailsStep)==null?void 0:a.description,isLoading:l,disabled:i}),t.createElement(Td,{control:o,disabled:i,error:(n=s==null?void 0:s.detailsStep)==null?void 0:n.teamOwner}))},Ud=B(e=>({container:{display:"flex",flexDirection:"column",gap:e.spacing(2)},innerContainer:{display:"flex",flexDirection:"column"}})),Kd=()=>{const e=Ud(),{isLoading:a,isReadOnly:n}=ge(),{control:r}=me(),{rules:l,warnings:i}=Be.rulesStep;return t.createElement("div",{className:e.container},t.createElement("div",{className:e.innerContainer},t.createElement("div",null,t.createElement(v,{variant:"subtitle2"},l.name),t.createElement(v,{variant:"caption"},l.description)),t.createElement(hl,{disabled:n,name:"rulesStep.expressions",depth:0})),t.createElement(kd,{control:r,isLoading:a,disabled:n}),t.createElement("div",{className:e.container},t.createElement("div",{className:e.innerContainer},t.createElement("div",null,t.createElement(v,{variant:"subtitle2"},i.name),t.createElement(v,{variant:"caption"},i.description)),t.createElement(W,{name:"rulesStep.warning",control:r,render:({field:o})=>t.createElement(ze,{disabled:n,control:t.createElement(Ie,{checked:o.value,onChange:o.onChange}),label:i.label})}))))},vn=({title:e,open:a,onSave:n,onClose:r})=>{const{hideModal:l,isLoading:i,isReadOnly:o,selectedItem:s}=ge(),{formMethods:c,onSubmit:d}=Vd(n),m=[{label:"Enter check details",content:()=>t.createElement(_d,null)},{label:"Add rules",content:()=>t.createElement(Kd,null)},{label:"Choose the affected entities (Optional)",content:()=>t.createElement(nl,{name:"filtersStep.filters",control:c.control,disabled:o,description:Be.filter.description})},{label:"Set the check schedule (Optional)",content:()=>t.createElement(Wd,{control:c.control,disabled:o})}],u=s?[...Array(m.length).keys()]:[0];return t.createElement(tt,{handleClose:r?()=>r():l,title:e,open:a},t.createElement(or,{...c},t.createElement("form",{onSubmit:c.handleSubmit(d)},t.createElement(en,{onClose:r?()=>r():l,handleSubmit:c.handleSubmit,trigger:c.trigger,onSubmit:d,initialVisited:u,stepNameMap:Zc,steps:m,isLoading:i,isReadOnly:o,saveButtonText:"Save Check",detailsComponent:t.createElement(Hd,null)}))))},jd="Error Creating Check";function qd(){const e=D(A),a=oe(),{showAlert:n}=ce(),r=async l=>{const i=await e.createCheck(l);if(!i)throw new Error("Failed to create check.");return i};return se([de.CreateCheck],r,{onSuccess:()=>{a.invalidateQueries({queryKey:[O.GetChecks]})},onError:l=>{let i="Failed to create check.";l instanceof Error&&(i=l.message),n({severity:"error",title:jd,message:i})}})}const Qd=()=>{const{hideModal:e,showAddModal:a,setIsLoading:n}=ge(),{mutateAsync:r,isLoading:l}=qd();return G(()=>{n(l)},[n,l]),t.createElement(vn,{title:"Create a Check",open:a,onSave:async i=>{await r(i,{onSuccess:()=>e()})},onClose:()=>e()})},Yd=({check:e})=>{const{selectedItem:a,showReadOnlyModal:n}=ge();G(()=>{n(e)},[e,n]);const[r]=Je(qn);return a&&t.createElement(vn,{title:"Check Details",open:!0,onClose:r,onSave:()=>{}})},Xd="Error Creating Check";function Zd(){const e=D(A),a=oe(),{showAlert:n}=ce(),r=async l=>{const i=await e.updateCheck(l);if(!i)throw new Error("Failed to update check.");return i};return se([de.UpdateCheck],r,{onSuccess:()=>{a.invalidateQueries({queryKey:[O.GetChecks]})},onError:l=>{let i="Failed to update check.";l instanceof Error&&(i=l.message),n({severity:"error",title:Xd,message:i})}})}const Jd=({check:e})=>{const{selectedItem:a,setSelectedItem:n}=ge(),{setIsLoading:r}=ge(),{mutateAsync:l,isLoading:i}=Zd();G(()=>{r(i)},[r,i]),G(()=>{n(e)},[e,n]);const[o,s]=Je(qn);return a&&t.createElement(vn,{title:"Edit a Check",open:!0,onClose:o,onSave:async c=>{await l(c,{onSuccess:s})}})},em=()=>{var e,a;const{checkId:n}=Ue(),{data:r,isLoading:l}=Ut({ids:[n!=null?n:""],first:1}),i=(a=(e=r==null?void 0:r.edges)==null?void 0:e[0])==null?void 0:a.node,{loading:o,allowed:s}=_({permission:Mn,resourceRef:n}),{loading:c,allowed:d}=_({permission:Ci,resourceRef:n}),m=o||c||l,u=s&&(i==null?void 0:i.isEditable);return t.createElement(t.Fragment,null,t.createElement(Zt,{entityName:"check",entityId:n,showCannotView:!m&&!d,showNotFound:!m&&!i}),m&&t.createElement(ut,null),t.createElement(Mr,null,!m&&!!i&&t.createElement(t.Fragment,null,u&&d&&t.createElement(Jd,{check:i}),!u&&d&&t.createElement(Yd,{check:i}))))},tm=()=>t.createElement(g,{item:!0,container:!0,"data-testid":"checks-skeleton"},Array.from({length:10},(e,a)=>t.createElement(g,{key:`loading-${a}`,xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem"},t.createElement(Gt,{variant:"rect",height:385})))),am="Error Deleting Check";function nm(){const e=D(A),a=oe(),{showAlert:n}=ce(),r=async l=>{const i=await e.deleteCheck(l);if(!i)throw new Error(`Failed to delete check ${l}`);return i};return se([de.DeleteCheck],r,{onSuccess:()=>Promise.all([a.invalidateQueries({queryKey:[O.GetChecks]}),a.invalidateQueries({queryKey:[O.GetAllPrograms]})]),onError:(l,i)=>{let o=`Failed to delete check ${i}`;l instanceof Error&&(o=l.message),n({severity:"error",title:am,message:o})}})}const rm=R(e=>({root:{position:"relative",height:"100%"},cardSection:{marginBottom:e.spacing(2)},listItem:{padding:0},listItemText:{margin:0}})),lm=({check:e})=>{var a;const n=rm();return t.createElement(It,{dense:!0,disablePadding:!0,className:n.cardSection},t.createElement(v,{variant:"overline",color:"textSecondary"},"Check Details"),t.createElement(be,{disableGutters:!0,className:n.listItem},t.createElement(ne,{title:"Owner"},t.createElement(te,null,t.createElement(Vt,{color:"action",fontSize:"small"}))),t.createElement(ae,{className:n.listItemText,primary:t.createElement(Fe,{entityRef:(a=e.ownerEntityRef)!=null?a:"No Owner",hideIcon:!0})})))},im=({check:e})=>{const{id:a,name:n,description:r,isEditable:l,ownerEntityRef:i}=e,o=he(),s=Q(Qn),{loading:c,allowed:d}=_({permission:Mn,resourceRef:a}),{loading:m,allowed:u}=_({permission:ki,resourceRef:a}),{showModal:p}=je(),{mutate:h}=nm(),b=U(async()=>{await p({title:"Delete Check",message:`Are you sure you want to delete the check '${n!=null?n:a}'?`})&&h(a)},[p,n,h,a]),k=U(()=>{o(s({checkId:a}))},[s,a,o]);return t.createElement(vt,{title:n!=null?n:a,description:r,children:i&&t.createElement(lm,{check:e}),handleView:k,handleEdit:l&&!c&&d?k:void 0,handleDelete:l&&!m&&u?b:void 0})},om=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)}})),sm=({checksPerPage:e,currentCursor:a})=>{var n;const r=om(),[l,i]=T(a),[o,s]=T(""),[c,d]=T($e.Alpha),[m,u]=T($e.Owner),[p,h]=T([]),[b,k]=T("");Pa(()=>{k(o)},500,[o]);const{loading:E,allowed:C}=_({permission:xi}),{data:y,isLoading:f}=Ut({ids:void 0,first:e,after:l,orderAlphabetical:c,searchByOwner:m,searchByName:b}),[w,N]=T(y),L=(n=w==null?void 0:w.edges)==null?void 0:n.map($=>$.node),[I,P]=T([]),X=D(ct),le=!X.getRegisteredFlags().find($=>$.name==="soundcheck-enable-check-creation")||X.isActive("soundcheck-enable-check-creation"),ue=!C||!le,ye=$=>{d($.target.value)},Oe=$=>{u($.target.value)};G(()=>{y&&N(()=>{var $,M;return{totalCount:y.totalCount,edges:y.edges,pageInfo:{startCursor:y.pageInfo.startCursor,endCursor:y.pageInfo.endCursor,hasNextPage:($=y==null?void 0:y.pageInfo.hasNextPage)!=null?$:!1,hasPreviousPage:(M=y==null?void 0:y.pageInfo.hasPreviousPage)!=null?M:!1}}})},[y]);const{setShowAddModal:Ve}=ge();if(G(()=>{const $=w==null?void 0:w.edges.map(we=>we.node),M=_a($!=null?$:[]);h(M!=null?M:[])},[f,w]),!f&&!L)return t.createElement(Ke,{title:ea.title,description:ea.description,imgSrc:Na,action:!E&&t.createElement(H,{disabled:ue,variant:"contained",color:"primary",onClick:()=>Ve(!0)},ea.callToAction)});let ie;f?ie=t.createElement(tm,null):L!=null&&L.length?ie=L==null?void 0:L.map($=>t.createElement(g,{key:$.id,xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem","aria-label":"result"},t.createElement(im,{check:$}))):ie=t.createElement(g,{xs:12,item:!0,role:"listitem","aria-label":"result"},t.createElement(Ke,{title:mn.title,description:mn.description}));const st=(w==null?void 0:w.pageInfo.hasNextPage)||(I==null?void 0:I.length)>0;return t.createElement(g,{container:!0,direction:"row",className:r.container},t.createElement(g,{container:!0,spacing:4,className:r.header},t.createElement(Qa,{searchPlaceholder:"Search available checks",isLoading:f,searchTerm:o,setSearchTerm:s,filterAlpha:c,handleAlphabeticalFilterChange:ye,filterOwner:m,handleOwnerFilterChange:Oe,owners:p}),t.createElement(g,{item:!0,xs:3},t.createElement("div",{className:r.headerButtons},!E&&t.createElement(H,{disabled:ue,variant:"contained",color:"primary",onClick:()=>Ve(!0)},"Create Check")))),t.createElement(g,{container:!0,spacing:4,role:"list","aria-label":"checks"},ie),st&&t.createElement("div",{className:r.pagination},t.createElement(ka,{response:w,listingsPerPage:e,cursor:l,setCursor:i,prevCursors:I,setPrevCursors:P,labelPerPageDropdown:"Checks Per Page:",urlRoute:"checks?checksPerPage="})))},cm=()=>{const[e]=Ca(),a=e.get("checksPerPage"),n=a?parseInt(a,10):wa,{showAddModal:r}=ge();return t.createElement("div",null,t.createElement(sm,{checksPerPage:n}),r&&t.createElement(Qd,null))},dm=()=>t.createElement(Mr,null,t.createElement(cm,null)),mm="Error Configuring Collector";function um(){const e=D(A),a=oe(),{showAlert:n}=ce(),r=async l=>{const i=await e.updateCollectorConfig(l);if(!i)throw new Error("Failed to update collector configuration.");return i};return se([de.UpdateCollectorConfig],r,{onSuccess:()=>{a.invalidateQueries({queryKey:[O.GetCollectors]})},onError:l=>{let i="Failed to update collector configuration.";l instanceof Error&&(i=l.message),n({severity:"error",title:mm,message:i})}})}const pm=({enabled:e,hasDuration:a,value:n})=>e&&a?dn(n):!0,hm=({type:e,cron:a,value:n})=>{if(e==="cron"){if(!rl(a))return ll(a)}else if(e==="HumanDuration")return dn(n);return!0},gl=()=>({enabled:!1,hasDuration:!1,unit:z.Days,value:1});function fn(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 En(e){var a;const n=gl();if(!e)return n;if(typeof e=="boolean")return{...n,enabled:e};if(!qe.isObject(e)||!("duration"in e))return n;const r=e.duration;if(!qe.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=Jt(i))!=null?a:z.Days,value:o}}const gm=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"}})),vm=({value:e,onChange:a,disabled:n,errors:r})=>{const l=gm(),[i,o]=T(e),[s,c]=T(`${e.value}`);G(()=>{a&&a(i)},[i,a]);const d=h=>{o({...i,enabled:h.target.checked,hasDuration:h.target.checked&&i.hasDuration})},m=h=>{o({...i,hasDuration:h.target.checked})},u=h=>{c(h.target.value);const b=parseInt(h.target.value,10);o({...i,value:isNaN(b)?0:b})},p=h=>{var b;o({...i,unit:(b=Jt(h.target.value))!=null?b:z.Hours})};return t.createElement(g,{container:!0,direction:"column"},t.createElement(g,{item:!0},t.createElement(g,{container:!0,alignItems:"center"},t.createElement(g,{item:!0},t.createElement(Ie,{id:"enableCaching",disabled:n,checked:i.enabled,onChange:d,"data-testid":"enableCaching"})),t.createElement(g,{item:!0},t.createElement("label",{htmlFor:"enableCaching",className:l.label},"Enable caching")))),t.createElement(g,{item:!0},t.createElement(g,{container:!0,alignItems:"flex-start"},t.createElement(g,{item:!0,className:l.checkbox},t.createElement(Ie,{id:"hasDuration",disabled:n||!i.enabled,checked:i.enabled&&i.hasDuration,onChange:m,"data-testid":"hasDuration"})),t.createElement(g,{item:!0},t.createElement("label",{htmlFor:"hasDuration",className:i.enabled?l.label:""},"Duration")),t.createElement(g,{className:l.duration},t.createElement(g,{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:il,max:ol},"data-testid":"forTextField"})),t.createElement(g,{item:!0},t.createElement(Dt,null,t.createElement(ga,{id:"duration-unit"},"Unit"),t.createElement(va,{labelId:"duration-unit",disabled:n||!i.hasDuration,value:i.unit,onChange:p,"data-testid":"unitSelect"},on.map(h=>t.createElement(pe,{key:h,value:h},h)))))))))},fm=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)}})),yn=({name:e,label:a,description:n,control:r,disabled:l,errors:i})=>{const[o,s]=T(0),c=Oa({control:r,name:`${e}.enabled`}),d=(u,p)=>{s(p)},m=fm();return t.createElement("div",{className:m.root},t.createElement(W,{name:`${e}.enabled`,control:r,render:({field:u})=>t.createElement(ze,{control:t.createElement(oi,{...u,checked:u.value,"data-testid":`${e}-switch`}),label:t.createElement(S,{display:"flex",flexDirection:"column"},t.createElement(v,{variant:"body1",component:"span"},t.createElement("b",null,`${a}`)),t.createElement(v,{variant:"caption",color:"textSecondary",component:"p"},`${n}`))})}),c&&t.createElement("div",null,t.createElement(fa,{orientation:"horizontal",variant:"scrollable",value:o,onChange:d,className:m.tabsContainer},t.createElement(De,{label:"Frequency",className:m.tab}),t.createElement(De,{label:"Filters",className:m.tab}),t.createElement(De,{label:"Caching",className:m.tab})),t.createElement("div",{className:m.contentContainer},o===0&&t.createElement("div",null,t.createElement(W,{name:`${e}.frequency`,control:r,rules:{validate:hm},render:({field:u})=>t.createElement(sl,{disabled:l,value:u.value,onChange:u.onChange,errors:i==null?void 0:i.frequency})})),o===1&&t.createElement("div",null,t.createElement(W,{name:`${e}.filters`,control:r,render:({field:u})=>t.createElement(Ja,{disabled:l,value:u.value,onChange:u.onChange})})),o===2&&t.createElement("div",null,t.createElement(W,{name:`${e}.cacheConfig`,control:r,rules:{validate:pm},render:({field:u})=>t.createElement(vm,{disabled:l,value:u.value,onChange:u.onChange,errors:i==null?void 0:i.cacheConfig})})))))},bn=()=>({enabled:!1,filters:{...ft(),selectedKinds:["Component"]},frequency:ln(),cacheConfig:gl()}),vl=()=>({branchProtections:bn(),repositoryDetails:bn(),repositoryLanguages:bn()});function Em(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:sn(s),filter:jt(c),cache:fn(o)})}if(n.enabled){const{cacheConfig:o,frequency:s,filters:c}=n;i.push({factName:"repository_details",type:"RepositoryDetails",frequency:sn(s),filter:jt(c),cache:fn(o)})}if(r.enabled){const{cacheConfig:o,frequency:s,filters:c}=r;i.push({factName:"repository_languages",type:"RepositoryLanguages",frequency:sn(s),filter:jt(c),cache:fn(o)})}return l}return[]}function ym(e){var a,n,r,l,i,o;const s=vl();if(e){const c=e.collects;if(c)for(const d of Ea(c)){const m=d.type;m==="BranchProtections"&&(s.branchProtections={enabled:!0,frequency:cn((a=d.frequency)!=null?a:e.frequency),filters:Za((n=d.filter)!=null?n:e.filter),cacheConfig:En(d.cache)}),m==="RepositoryDetails"&&(s.repositoryDetails={enabled:!0,frequency:cn((r=d.frequency)!=null?r:e.frequency),filters:Za((l=d.filter)!=null?l:e.filter),cacheConfig:En(d.cache)}),m==="RepositoryLanguages"&&(s.repositoryLanguages={enabled:!0,frequency:cn((i=d.frequency)!=null?i:e.frequency),filters:Za((o=d.filter)!=null?o:e.filter),cacheConfig:En(d.cache)})}}return s}const bm=({disabled:e,selectedCollector:a})=>{const{control:n,formState:{errors:r},handleSubmit:l}=Ht({defaultValues:a?ym(a.config):vl(),mode:"onChange"}),i=!!r.branchProtections||!!r.repositoryDetails||!!r.repositoryLanguages,{mutateAsync:o}=um(),[s,c]=Je(Yn),d=async m=>{const u=Em(m);await o({collectorId:"github",config:u})&&c()};return t.createElement("form",{onSubmit:l(d)},t.createElement(yn,{name:"branchProtections",label:"Branch Protections",description:"Collects branch protection information from an entity's repository.",control:n,disabled:e,errors:r.branchProtections}),t.createElement(He,null),t.createElement(yn,{name:"repositoryDetails",label:"Repository Details",description:"Collects details about the an entity's repository.",control:n,disabled:e,errors:r.repositoryDetails}),t.createElement(He,null),t.createElement(yn,{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(g,{container:!0,spacing:4},t.createElement(Vr,{onCancel:s,saveButtonText:"Save",isLoading:!1,onSave:l(d),disableSave:i})))},Cm=({title:e,open:a,handleClose:n,selectedCollector:r})=>t.createElement(tt,{handleClose:n,title:e,open:a},(r==null?void 0:r.id)==="github"&&t.createElement(bm,{selectedCollector:r})),km=()=>{var e;const{collectorId:a}=Ue(),{data:n,isLoading:r}=gn([a!=null?a:""]),{loading:l,allowed:i}=_({permission:Bn}),[o]=Je(Yn),s=n==null?void 0:n[0],c=r||l,d=i&&(s==null?void 0:s.isEditable);return t.createElement("div",null,c&&t.createElement(ut,null),t.createElement(Zt,{entityName:"Collector",entityId:a,showNotFound:!c&&!s,showCannotEdit:!c&&!d}),s&&d&&t.createElement(Cm,{title:s?(e=s.name)!=null?e:s.id:"",open:!0,handleClose:o,selectedCollector:s}))},xm=()=>t.createElement(t.Fragment,null,Array.from({length:6},(e,a)=>t.createElement(g,{key:`loading-${a}`,xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem"},t.createElement(Gt,{variant:"rect",height:385}))));function wm(e){switch(e){case"catalog":return Ro;case"github":return No;case"pagerduty":return Lo;case"scm":return Po;case"soundcheck":return Io;case"techinsights":return Do;default:return Oo}}const Tm=R(e=>({container:{display:"flex",justifyContent:"center",alignItems:"center"},imageContainer:{width:"150px",height:"150px"},image:{width:"100%",height:"100%",objectFit:"contain"}})),Sm=({collector:e})=>{const{id:a}=e,n=Tm();return t.createElement(t.Fragment,null,t.createElement("div",{className:n.container},t.createElement("div",{className:n.imageContainer},t.createElement("img",{src:wm(a),alt:a,className:n.image}))))},Rm=["github"],Pm=({collector:e,children:a})=>{const{description:n,id:r,isEditable:l,name:i}=e,{loading:o,allowed:s}=_({permission:Bn}),c=he(),d=Q(eo),m=Rm.includes(r)&&l&&!o&&s,u=()=>{c(d({collectorId:e.id}))};return t.createElement(vt,{title:i!=null?i:r,description:n,viewLabel:"Configure",editLabel:"Configure",children:a,handleView:void 0,handleEdit:m?u:void 0})},Nm=()=>{const{data:e,isLoading:a}=gn();return t.createElement(g,{container:!0,direction:"row"},t.createElement(g,{container:!0,spacing:4,role:"list","aria-label":"checks"},a?t.createElement(xm,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(g,{key:n.id,xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem","aria-label":"result"},t.createElement(Pm,{collector:n},t.createElement(Sm,{collector:n}))))))},Lm=R(e=>({container:{padding:e.spacing(3)}})),Om=()=>{const e=Lm();return t.createElement("div",{className:e.container},t.createElement(Nm,null))},Im="Error Updating Track";function Dm(){const e=D(A),a=oe(),{showAlert:n}=ce(),r=async l=>{const i=await e.updateProgram(l);if(!i)throw new Error("Failed to update track.");return i};return se([de.UpdateProgram],r,{onSuccess:async()=>{await a.invalidateQueries({queryKey:[O.GetAllPrograms]})},onError:l=>{let i="Failed to update track.";l instanceof Error&&(i=l.message),n({severity:"error",title:Im,message:i})}})}const $m={0:"detailsStep",1:"levelsStep",2:"filtersStep"},at={name:{name:"Track name",description:"Give your track a meaningful name so it's easy to remember",helperText:`Max ${yt} characters`,placeholder:"Example: Golden State for Web"},description:{name:"Track description",description:"Give your track a meaningful description so others know what it's for",placeholder:"Example: Improve quality and reliability of your software component by measuring the use of testing best practices."},documentationURL:{name:"Documentation URL (Optional)",description:"Enter a documentation URL for your track",placeholder:"URL for documentation"},owner:{name:"Track owner",description:"Add yourself, or a team, as the owner of this track. Defaults to 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."},filter:{description:'Setting the filters below will limit the scope of the Track so that only those Entities that match the filter will be monitored by the Track. 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 Track.'}},Am=({index:e,disabled:a})=>{var n,r,l;const{control:i,formState:{errors:o}}=me(),{fields:s,remove:c,append:d}=zt({control:i,name:`levelsStep.levels.${e}.levelChips`,rules:{required:!0}}),m=U(p=>{d(p)},[d]),u=U(p=>{const h=dr(s,b=>b.id===p.id);c(h)},[c,s]);return t.createElement(Xr,{chips:s,onDelete:u,onDrop:m,error:!!((l=(r=(n=o==null?void 0:o.levelsStep)==null?void 0:n.levels)==null?void 0:r[e])!=null&&l.levelChips),placeholder:"Drag and drop checks here to include them in this level",disabled:a})},Fm=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"}})),Mm=({disabled:e})=>{const a=Fm(),{control:n,formState:{errors:r},getValues:l}=me(),{fields:i,remove:o,append:s}=zt({control:n,name:"levelsStep.levels"});return t.createElement(g,{container:!0},t.createElement(g,{item:!0,xs:12,className:a.columnHeader},t.createElement(v,{className:a.subtitle},"Levels"),!e&&t.createElement(Yt,{label:"Add Level",startIcon:t.createElement(gr,null),onClick:()=>s({levelName:`Level ${i.length+1}`,levelDescription:"",levelChips:[]}),disabled:e})),t.createElement(g,{container:!0,item:!0,spacing:5},i.map((c,d)=>{var m,u,p;return t.createElement(g,{container:!0,item:!0,xs:12,spacing:2,key:c.id},t.createElement(g,{item:!0,xs:12,className:a.levelHeader},t.createElement(g,{container:!0,spacing:1},t.createElement(g,{item:!0,xs:!0},t.createElement(Qt,{name:`levelsStep.levels.${d}.levelName`,placeholder:"Untitled level",control:n,disabled:e,label:"Level Name",variant:"outlined",size:"small",inputProps:{classes:{input:a.inputNameBase}},margin:"none",error:(p=(u=(m=r==null?void 0:r.levelsStep)==null?void 0:m.levels)==null?void 0:u[d])==null?void 0:p.levelName})),!e&&i.length>1&&t.createElement(g,{item:!0,className:a.removeButton},t.createElement(Yt,{label:"Remove Level",startIcon:t.createElement(vr,null),onClick:()=>o(d),disabled:e})))),t.createElement(g,{item:!0,xs:12},t.createElement(Am,{index:d,disabled:e})),t.createElement(g,{item:!0,xs:12},t.createElement(Qt,{name:`levelsStep.levels.${d}.levelDescription`,placeholder:"Enter description here",control:n,disabled:e,label:`${l(`levelsStep.levels.${d}.levelName`)}'s description`,variant:"outlined",size:"small",inputProps:{classes:{input:a.inputDescriptionBase},"aria-label":`${l(`levelsStep.levels.${d}.levelName`)} description`},margin:"none"})))})))},Bm=B(e=>({container:{display:"flex",flexDirection:"column",gap:e.spacing(2)},inner:{display:"flex",flexDirection:"row",gap:e.spacing(2)},checksSection:{width:"40%"},levelsSection:{width:"60%"},description:{fontWeight:"normal",fontSize:e.typography.fontSize}})),Gm=({selectableChips:e,checksLoading:a})=>{const{selectedItem:n,isLoading:r,isReadOnly:l}=Re(),i=Bm(),{levels:o}=at,s=l||!!n&&!n.isEditable;return t.createElement("div",{className:i.container},t.createElement("div",null,!s&&t.createElement(v,{className:i.description},o.description)),t.createElement("div",{className:i.inner},!s&&t.createElement("div",{className:i.checksSection},t.createElement(Jr,{chips:e,isLoading:a||r,disabled:s})),t.createElement("div",{className:i.levelsSection},t.createElement(Mm,{disabled:s}))))},Wm=({isLoading:e,disabled:a})=>{var n;const{control:r,formState:{errors:l}}=me(),{name:i,description:o,placeholder:s}=at.description;return t.createElement(ta,{name:"detailsStep.trackDescription",control:r,error:(n=l.detailsStep)==null?void 0:n.trackDescription,label:i,description:o,placeholder:a?void 0:s,disabled:a||e})},Vm=R(e=>({container:{display:"flex",flexDirection:"column"},fieldContainer:{width:"300px",marginTop:"-10px"}})),Hm=({isLoading:e,disabled:a})=>{var n,r,l,i;const o=Vm(),{control:s,formState:{errors:c}}=me(),{name:d,description:m,placeholder:u}=at.documentationURL;return t.createElement("div",{className:o.container},t.createElement("div",null,t.createElement(v,{variant:"subtitle2"},d),t.createElement(v,{variant:"caption"},m)),t.createElement("div",{className:o.fieldContainer},t.createElement(Qt,{name:"detailsStep.documentationURL",control:s,placeholder:u,disabled:a||e,variant:"outlined",error:(n=c==null?void 0:c.detailsStep)==null?void 0:n.documentationURL,helperText:(i=(l=(r=c==null?void 0:c.detailsStep)==null?void 0:r.documentationURL)==null?void 0:l.message)!=null?i:void 0})))},zm=B(e=>({container:{display:"flex",flexDirection:"column",gap:e.spacing(2)},helperText:{marginLeft:0},field:{marginTop:"-10px"}})),_m=({disabled:e,isLoading:a})=>{const n=zm(),{control:r,formState:{errors:l}}=me(),{placeholder:i,name:o,description:s,helperText:c}=at.name;return t.createElement("div",{className:n.container},t.createElement("div",null,t.createElement(v,{variant:"subtitle2"},o),t.createElement(v,{variant:"caption"},s)),t.createElement(W,{name:"detailsStep.trackName",control:r,defaultValue:"",render:({field:d})=>{var m,u,p,h;return t.createElement(Y,{...d,FormHelperTextProps:{className:n.helperText},className:n.field,variant:"outlined",fullWidth:!0,placeholder:i,disabled:a||e,type:"text",error:!!((m=l.detailsStep)!=null&&m.trackName),helperText:(h=(p=(u=l.detailsStep)==null?void 0:u.trackName)==null?void 0:p.message)!=null?h:c})}}))},Um=B(e=>({container:{display:"flex",flexDirection:"column",gap:e.spacing(1)}})),Km=({disabled:e,ownerEntityRef:a})=>{var n,r,l;const i=Um(),{options:o,isLoading:s}=xa(),{user:c,userEntityRef:d}=mt(),{control:m,formState:{errors:u}}=me();let p=Da(o.map(k=>({value:k.ref,label:k.name})),"value");d&&(p=[{value:d,label:c==null?void 0:c.metadata.name},...p]),a&&d!==a&&!p.some(k=>k.value===a)&&(p=[{value:a,label:j(a).name},...p]);const{name:h,description:b}=at.owner;return t.createElement("div",{className:i.container},t.createElement("div",null,t.createElement(v,{variant:"subtitle2"},h),t.createElement(v,{variant:"caption"},b)),t.createElement("div",null,t.createElement(qt,{name:"detailsStep.ownerEntityRef",control:m,options:s?void 0:p,disabled:e||s,helperText:(l=(r=(n=u==null?void 0:u.detailsStep)==null?void 0:n.ownerEntityRef)==null?void 0:r.message)!=null?l:void 0})))},jm=B(e=>({container:{display:"flex",flexDirection:"column",gap:e.spacing(2)}})),qm=()=>{var e;const a=jm(),{isLoading:n,isReadOnly:r,selectedItem:l}=Re();return t.createElement("div",{className:a.container},t.createElement(_m,{disabled:r,isLoading:n}),t.createElement(Wm,{isLoading:n,disabled:r}),t.createElement(Km,{disabled:n||r,ownerEntityRef:(e=l==null?void 0:l.ownerEntityRef)!=null?e:void 0}),t.createElement(Hm,{isLoading:n,disabled:r}))},fl=({onSave:e,title:a,open:n,handleClose:r})=>{const{selectedItem:l,isLoading:i,isReadOnly:o}=Re(),{formMethods:s,onSubmit:c,selectableChips:d,checksLoading:m}=tc(e),u=[{label:"Enter track details",content:()=>t.createElement(qm,null)},{label:"Add levels",content:()=>t.createElement(Gm,{selectableChips:d,checksLoading:m})},{label:"Choose the affected entities (Optional)",content:()=>t.createElement(nl,{name:"filtersStep.filters",control:s.control,disabled:o,description:at.filter.description})}],p=l?[...Array(u.length).keys()]:[0];return t.createElement($a,{backend:Aa},t.createElement(tt,{handleClose:r,title:a,open:n},t.createElement(or,{...s},t.createElement("form",{onSubmit:s.handleSubmit(c)},t.createElement(en,{onClose:r,handleSubmit:s.handleSubmit,trigger:s.trigger,onSubmit:c,initialVisited:p,stepNameMap:$m,steps:u,isLoading:i,isReadOnly:o,saveButtonText:"Save Track"})))))},Qm=({track:e,canEdit:a})=>{const{setSelectedItem:n,setIsLoading:r,selectedItem:l,showReadOnlyModal:i}=Re(),{mutateAsync:o,isLoading:s}=Dm();G(()=>r(s),[r,s]);const c=!a||!e.isEditable;G(()=>{c?i(e):n(e)},[e,n,c,i]);const[d,m]=Je(to),u=U(async p=>{await o(p,{onSuccess:m})},[m,o]);return G(()=>{},[e,i,c]),l?t.createElement(fl,{handleClose:m,title:`${c?"View":"Edit"} Track`,open:!0,onSave:u}):null},Ym=()=>{var e,a;const{trackId:n}=Ue(),{data:r,isLoading:l}=ht({ids:[n!=null?n:""],first:1}),i=(a=(e=r==null?void 0:r.edges)==null?void 0:e[0])==null?void 0:a.node,{loading:o,allowed:s}=_({permission:Gn,resourceRef:n}),{loading:c,allowed:d}=_({permission:Wn,resourceRef:n});return t.createElement(t.Fragment,null,t.createElement(Zt,{entityName:"track",entityId:n,showNotFound:!l&&!i,showCannotView:!o&&!c&&!d}),l||o||c?t.createElement(ut,null):d&&i&&t.createElement(Ar,null,t.createElement(Qm,{track:i,canEdit:s})))},Xm="check-pass-rates-summary.csv",Zm="track-pass-rates-summary.csv",Jm="entity-pass-rates-summary.csv",eu="team-pass-rates-summary.csv",tu="check-pass-rates.csv",au="track-pass-rates.csv",nu="entity-pass-rates.csv",ru="team-pass-rates.csv",lu="campaign-track-pass-rates.csv";function xe(e){const a=Qe.utc();return e.map((n,r)=>({name:_t(a,e.length-r-1),passRate:n}))}var iu=(e=>(e.Bar="bar",e.Line="line",e))(iu||{});const ou=-25,Pe=[0,100],El=85,aa=25,bt="name",su=250,Ct=.5,yl="circle",bl=8,Cl="monotone",kt=({children:e})=>t.createElement(Fa,{minHeight:su,debounce:1},e),cu=B(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}})),kl=()=>{const e=[{x:"A",y:25},{x:"B",y:50},{x:"C",y:75}],a=cu();return t.createElement("div",{className:a.container},t.createElement(kt,null,t.createElement(Ma,{data:e},t.createElement(pt,{strokeDasharray:"3 3",vertical:!1,opacity:Ct}),t.createElement(Ye,{dataKey:"x",stroke:"#ccc",hide:!0}),t.createElement(Xe,{domain:Pe,stroke:"#ccc",hide:!0}),t.createElement(Ba,{type:"monotone",dataKey:"y",stroke:"#ccc",dot:!1}))),t.createElement(v,{className:a.chartMessage},"No Data"))},du=R(e=>({legend:{color:ee(e)}})),xt=({data:e,lines:a})=>{const n=Ce(),r=Ze(n),l=ee(n),i=du();return e.length?t.createElement(kt,null,t.createElement(Ma,{data:e},t.createElement(pt,{vertical:!1,opacity:Ct}),t.createElement(Ye,{dataKey:bt,stroke:l}),t.createElement(Xe,{width:aa,domain:Pe,stroke:l}),t.createElement(Cr,{position:{y:ou},contentStyle:{backgroundColor:n.palette.background.paper}}),a.length>1&&t.createElement(kr,{iconType:yl,iconSize:bl,formatter:o=>t.createElement("span",{className:i.legend},o)}),a.map((o,s)=>t.createElement(Ba,{key:o.dataKey,dataKey:o.dataKey,stroke:r[s%r.length],strokeWidth:2,dot:!1,name:o.name,type:Cl})))):t.createElement(kl,null)},mu=({data:e,lines:a})=>{const n=Ce(),r=Ze(n);return t.createElement(Fa,{height:50,width:100},t.createElement(Ma,{data:e},t.createElement(Ye,{hide:!0,dataKey:bt}),t.createElement(Xe,{width:0,domain:Pe}),a.map((l,i)=>t.createElement(Ba,{key:l.dataKey,dataKey:l.dataKey,stroke:r[i%r.length],strokeWidth:2,dot:!1,name:l.name,type:Cl}))))},wt=({chartData:e,tableChart:a})=>{const n=[{dataKey:"passRate",name:"Pass rate"}];return a?t.createElement(mu,{data:e,lines:n}):t.createElement(xt,{data:e,lines:n})};var F=(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))(F||{});const xl={Entity:"Entities are software components, like a system, service, or library. They are the entities/components that Soundcheck runs checks against. Choosing entities will filter the results to only show those that are associated with the selected entity/entities.","Entity Kind":"The 'kind' of the Entity as defined by Catalog, e.g. Component, System, User, Group, etc. This will filter results to only show those for Entities with the selected kind(s).","Entity Type":"The type of Entity as defined by Catalog, e.g. Database, Team, Service, Website, etc. This will filter results to only show those related to Entities with the selected type(s).","Entity Owner":"The owner of the Entity, typically a team or and individual. This will filter results to only those Entities that are owned by the selected owner(s).","Entity Lifecycle":"The lifecycle of the entity: e.g. experimental, production, etc. This will filter results to only show those related to Entities with the selected lifecycle(s).",System:"This System filter will filter results to only show those for Entities that are part of the selected System(s).",Track:"This Track filter will filter results to only show those related to the selected Track(s).","Track Level":"This Track level filter will filter results to only show those related to the selected Track level(s).",Check:"This Check filter will filter results to only show those related to the selected Check(s).","Check Owner":"The owner of the Check, typically a team or an individual. This will limit results to only be results from Checks that are owned by the selected owner(s)."},uu={hidden:{height:0,opacity:0,overflow:"hidden"},visible:{height:"auto",opacity:1,overflow:"visible"}};function pu({visible:e,...a}){return t.createElement(Go.div,{...a,animate:e?"visible":"hidden",initial:"hidden",variants:uu})}const hu=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}})),gu=()=>{const e=hu();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(ke,null)))};function vu(e){var a;const n=D(A),[r,l]=T(null),i=async()=>(await n.getEntityRefsForTechHealthFilter(e)).entityRefsForTechHealthFilter,o=V([O.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 fu=(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 d of(r=c.levels)!=null?r:[])for(const m of(l=d.checks)!=null?l:[])s.includes(m.id)||(s.push(m.id),o.push({label:(i=m.name)!=null?i:m.id,value:m.id}));return o},Eu=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}`}))},yu=(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}})},na=e=>(e!=null?e:[]).map(a=>({label:a,value:a})),bu=()=>{const[e,a]=T(!1),{userEntityRef:n}=mt(),{data:r,isLoading:l}=vu(n),{data:i,isLoading:o}=Vi(),s=K(()=>qe.mapValues(qe.keyBy(i!=null?i:[],"ref"),I=>I.name),[i]),{data:c,isLoading:d}=ht({first:100}),m=K(()=>{var I;return(I=c==null?void 0:c.edges.map(P=>P.node))!=null?I:[]},[c]),{data:u,isLoading:p}=Ut({first:100}),h=K(()=>{var I;return(I=u==null?void 0:u.edges.map(P=>P.node))!=null?I:[]},[u]),{data:b,isLoading:k}=Et("kind"),{data:E,isLoading:C}=Et("spec.lifecycle"),{data:y,isLoading:f}=Et("spec.type"),{data:w,isLoading:N}=Et("spec.system"),L=K(()=>{var I;return{[F.Kind]:na(b),[F.Lifecycle]:na(E),[F.Type]:na(y),[F.System]:na(w),[F.Entity]:r.map(P=>({label:j(P).name,value:P})),[F.EntityOwner]:(I=i==null?void 0:i.map(P=>({label:P.name,value:P.ref})))!=null?I:[],[F.Track]:m.map(P=>({label:P.name,value:P.id})),[F.Level]:Eu(m),[F.Check]:fu(h,m),[F.CheckOwner]:yu(h,s)}},[b,E,y,r,i,s,m,h,w]);return G(()=>{a(k||C||f||l||o||d||p||N)},[k,C,f,l,o,d,p,N]),{facetOptions:L,isLoading:e}},nt=30,Ge=2,rt=90,lt=()=>Object.fromEntries(Object.values(F).map(e=>[e,[]])),Cu=(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))}))},ku=(e,a,n,r)=>{const l=i=>a[i].length?{included:a[i]}:void 0;return{checkIds:l(F.Check),checkOwners:l(F.CheckOwner),entityOwners:l(F.EntityOwner),entityRefs:l(F.Entity),tracks:Cu(e[F.Track],a[F.Track],a[F.Level]),numberOfDays:n!=null?n:nt,context:r?{loggedInUser:r}:void 0,entityTypes:l(F.Type),entityKinds:l(F.Kind),entityLifecycles:l(F.Lifecycle),systems:l(F.System)}},wl=$t({facetOptionsLoading:!1,getFacetOptions:()=>[],getFacetOptionLabel:()=>"",facetFilters:lt(),clearAllFilters:()=>{},getSelectedFacetValues:()=>[],setSelectedFacetValues:()=>{},numberOfDays:nt,setNumberOfDays:()=>{},filter:{},loggedInUser:"Unknown"}),fe=()=>At(wl),xu=e=>{const{userEntityRef:a,loading:n}=mt(),{isLoading:r,facetOptions:l}=bu(),[i,o]=Mt("soundcheck.techHealth.facetFilters",lt());i&&Object.values(F).forEach(E=>{i[E]||(i[E]=[])});const[s,c]=Mt("soundcheck.techHealth.numberOfDays",nt),d=K(()=>ku(l,i!=null?i:lt(),s,a),[i,l,s,a]),m=()=>{c(nt),o(lt())},u=E=>l[E].map(C=>C.value),p=(E,C)=>{var y;let f=(y=l[E].find(w=>w.value===C))==null?void 0:y.label;if(!f)try{const w=j(C);f=Bt(w)}catch{}return Tr(),f!=null?f:C},h=E=>i?i[E]:[],b=(E,C)=>{const y={...i!=null?i:lt()};y[E]=C,o(y)},k={facetOptionsLoading:r,getFacetOptions:u,getFacetOptionLabel:p,facetFilters:i!=null?i:lt(),clearAllFilters:m,getSelectedFacetValues:h,setSelectedFacetValues:b,numberOfDays:s!=null?s:nt,setNumberOfDays:c,filter:d!=null?d:{},loggedInUser:"Unknown"};return r||n?t.createElement(gu,null):t.createElement(wl.Provider,{...e,value:k})},wu=50,Tu=R(({palette:e,spacing:a})=>({header:{display:"flex",alignItems:"left",flexDirection:"row",cursor:"pointer",justifyContent:"space-between"},label:{display:"flex",alignItems:"center"},tooltipIcon:{display:"flex",alignItems:"center",justifyContent:"center",color:e.info.light},chip:{backgroundColor:e.info.dark,color:e.common.white,textOverflow:"ellipsis",overflow:"hidden","& svg":{color:si(e.common.white,.7),"&:hover":{color:e.common.white}}},autoCompleteInput:{"&& input":{margin:a(1,0,0,0),width:"100%"}}})),Su=({facet:e})=>{var a;const n=Tu(),{getFacetOptions:r,getFacetOptionLabel:l,getSelectedFacetValues:i,setSelectedFacetValues:o}=fe(),[s,c]=T(!!((a=i(e))!=null&&a.length)),[d,m]=T(!1),[u,p]=T(""),h=()=>{c(C=>!C)},b=C=>{(C.key==="Enter"||C.key===" ")&&h()},k=C=>{if(e===F.Entity&&C[C.length-1]){const y=C[C.length-1];if(!y.includes(":")||!y.includes("/")){m(!0),p("Custom entities require a valid kind and namespace such as: component:default/entity");return}}m(!1),p(""),o(e,C)},E=Tr({matchFrom:"any",limit:wu});return t.createElement(S,null,t.createElement("div",{className:n.header,onClick:h,onKeyDown:b,role:"button",tabIndex:0},t.createElement("div",{className:n.label},t.createElement(S,null,t.createElement(v,{variant:"subtitle2"},e)),xl[e]&&t.createElement(ne,{title:xl[e],className:n.tooltipIcon},t.createElement(ci,null,t.createElement(Bo,{style:{fontSize:16,verticalAlign:"text-top"}})))),t.createElement(S,null,t.createElement(dt,{size:"small",onKeyDown:b},s?t.createElement(Mo,{fontSize:"small"}):t.createElement(Er,{fontSize:"small"})))),t.createElement(pu,{visible:s},t.createElement(La,{disableCloseOnSelect:!0,fullWidth:!0,multiple:!0,freeSolo:e===F.Entity,popupIcon:null,ChipProps:{color:"primary",className:n.chip,size:"small"},filterOptions:E,options:r(e),getOptionLabel:C=>l(e,C),value:i(e),onChange:(C,y)=>k(y),renderInput:C=>t.createElement(Y,{...C,className:n.autoCompleteInput,margin:"normal",placeholder:`Search for ${e}`,error:d,helperText:u}),renderOption:(C,{selected:y})=>t.createElement(ze,{onClick:f=>f.preventDefault(),control:t.createElement(Ie,{icon:t.createElement(cr,{fontSize:"small"}),checkedIcon:t.createElement(sr,{fontSize:"small"}),checked:y}),label:l(e,C)})})))},Ru=R(e=>({root:{display:"flex",flexDirection:"row",alignItems:"center",justifyContent:"space-between",paddingBottom:e.spacing(.25)}}));function Pu(){const e=Ru(),{numberOfDays:a,facetFilters:n,clearAllFilters:r}=fe(),l=Object.keys(F).some(i=>n[F[i]].length)||a!==nt;return t.createElement(S,{className:e.root},t.createElement(S,null,t.createElement(v,{variant:"h6"},"Filters")),l&&t.createElement(S,null,t.createElement(H,{onClick:r,size:"small"},"Clear all")))}const Nu=R(({palette:e,spacing:a})=>({root:{padding:({size:n})=>n==="small"?a(1,2):a(2),borderBottom:`1px solid ${e.border}`}}));function Cn(e){const a=Nu(e);return t.createElement(S,{...e,className:a.root})}const Lu=R(({palette:e,spacing:a})=>({select:{width:"100%",margin:a(1,0)},selectedChip:{backgroundColor:`${e.info.dark} !important`,color:"#fff","&:hover":{backgroundColor:e.info.dark}}})),ra=[7,30,90].map(e=>({value:e,label:`Last ${e} days`}));function Ou(){const e=Lu(),{numberOfDays:a,setNumberOfDays:n}=fe(),r=[...ra];ra.map(u=>u.value).includes(a)||r.push({value:a,label:`Last ${a} days`});const[l,i]=T(r),[o,s]=T(""),c=()=>{if(o.length){const u=parseInt(o,10);return!isNaN(u)&&(u<Ge||u>rt)}return!1},d=()=>{const u=parseInt(o,10);if(u<Ge)return`Minimum of ${Ge} days`;if(u>rt)return`Maximum of ${rt} days`},m=u=>{if(u.key==="Enter"){const p=parseInt(o,10);p>=Ge&&p<=rt?(ra.map(h=>h.value).includes(p)||i([...ra,{value:p,label:`Last ${p} days`}]),n(p),s("")):p<Ge?s(`${Ge}`):s(`${rt}`)}};return t.createElement(S,null,t.createElement(S,{marginBottom:2},t.createElement(S,null,l.sort((u,p)=>u.value-p.value).map(({label:u,value:p})=>t.createElement(_e,{key:p,label:u,className:a===p?e.selectedChip:void 0,color:a===p?"primary":void 0,size:"small",onClick:()=>n(p)})))),t.createElement(S,null,t.createElement(Y,{fullWidth:!0,placeholder:"Number of days",inputProps:{min:Ge,max:rt},onKeyDown:m,helperText:d(),value:o,type:"number",error:c(),onChange:u=>s(u.target.value)})))}const Iu=R(e=>({filters:{maxWidth:"300px",width:"100%",backgroundColor:e.palette.background.paper}})),Du=()=>{const e=Iu(),a=Ft().pathname.includes("campaigns"),[n]=Mt("soundcheck.overview.groupRef",null),[r,l]=T(!0),{getFacetOptions:i,setSelectedFacetValues:o}=fe(),s=i(F.EntityOwner)[0];G(()=>{r&&(o(F.EntityOwner,[n!=null?n:s]),l(!1))},[o,n,s,r,l]);let c=Object.values(F);if(a){const d=[F.Track,F.Level];c=c.filter(m=>!d.includes(m))}return t.createElement(S,{className:e.filters},t.createElement(Cn,null,t.createElement(Pu,null)),t.createElement(Cn,null,t.createElement(Ou,null)),c.map(d=>t.createElement(Cn,{key:d,size:"small"},t.createElement(Su,{facet:d}))))},Tl=$t({checkPassRateSnapshot:{data:void 0,isLoading:!0,isError:!1},checkPassRateTrend:{data:void 0,isLoading:!0,isError:!1},trackPassRateOverviewSnapshot:{data:void 0,isLoading:!0,isError:!1},trackPassRateOverviewTrend:{data:void 0,isLoading:!0,isError:!1},entityPassRatesOverviewTrends:{data:void 0,isLoading:!0,isError:!1},groupPassRatesOverviewTrends:{data:void 0,isLoading:!0,isError:!1}}),Ne=()=>At(Tl),$u=e=>{const{filter:a}=fe(),n=is(a),r=Or(a),l=ss(a),i=Ga(a),o=cs(a),s=ms(a),c=K(()=>({checkPassRateSnapshot:n,checkPassRateTrend:r,trackPassRateOverviewSnapshot:l,trackPassRateOverviewTrend:i,entityPassRatesOverviewTrends:o,groupPassRatesOverviewTrends:s}),[n,r,l,i,o,s]);return n.isLoading||r.isLoading||l.isLoading||i.isLoading||o.isLoading||s.isLoading?t.createElement(ke,null):t.createElement(Tl.Provider,{...e,value:c})},Sl=e=>{const a=(e==null?void 0:e.overallTrackPassRate)||[];if(!a.length)return[];const n=Qe.utc();return a.reduce((r,{trendPassRates:l,levelOrdinal:i},o)=>{var s;const c=(s=l==null?void 0:l.map((d,m)=>({name:_t(n,l.length-m-1),[`Level${i}`]:d})))!=null?s:[];return o===0?c:r.map((d,m)=>({...d,...c[m]}))},[])},Au=()=>{var e,a;const{trackPassRateOverviewTrend:{data:n,isError:r}}=Ne();if(r)return t.createElement(v,{color:"error"},"Failed to load track data.");const l=Sl(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(xt,{data:l,lines:i})},Fu=e=>{const a=(e==null?void 0:e.overallEntityPassRates)||[];if(!a.length)return[];const n=Qe.utc();return a.reduce((r,{trendPassRates:l,id:i},o)=>{var s;const c=(s=l==null?void 0:l.map((d,m)=>({name:_t(n,l.length-m-1),[i]:d})))!=null?s:[];return o===0?c:r.map((d,m)=>({...d,...c[m]}))},[])},Mu=()=>{var e,a;const{entityPassRatesOverviewTrends:{data:n}}=Ne(),r=(a=(e=n==null?void 0:n.overallEntityPassRates)==null?void 0:e.map(({id:i})=>({dataKey:i,name:j(i).name})))!=null?a:[],l=Fu(n);return t.createElement(xt,{data:l,lines:r})},Bu=B(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}})),Gu=({layout:e,theme:a})=>{const n=e===Tt.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=Bu();return t.createElement("div",{className:i.container},t.createElement(kt,null,t.createElement(xr,{data:n?l:r,margin:{left:0},layout:e},t.createElement(pt,{strokeDasharray:"3 3",vertical:n,horizontal:!n,opacity:Ct}),t.createElement(Ye,{dataKey:n?void 0:"x",type:n?St.Number:St.Category,domain:n?Pe:void 0,hide:!0}),t.createElement(Xe,{width:n?El:aa,dataKey:n?"x":void 0,type:n?St.Category:St.Number,domain:n?void 0:Pe,hide:!0}),t.createElement(wr,{dataKey:"y",fill:a.palette.divider,barSize:n?Rl:Pl}))),t.createElement(v,{className:i.chartMessage},"No Data"))},Wu=R(e=>({legend:{color:ee(e)}}));var Tt=(e=>(e.Horizontal="horizontal",e.Vertical="vertical",e))(Tt||{});const Rl=20,Pl=50;var St=(e=>(e.Category="category",e.Number="number",e))(St||{});const Nl={dataKey:"passRate",name:"Pass rate"},kn=Pi(({data:e,layout:a})=>{const n=a==="vertical",r=Ce(),l=Ze(r),i=ee(r),o=Wu();return e.length?t.createElement(kt,{"aria-label":"Bar chart representing data points."},t.createElement(xr,{data:e,layout:a},t.createElement(pt,{vertical:n,horizontal:!n,opacity:Ct}),t.createElement(Ye,{dataKey:n?void 0:bt,type:n?"number":"category",domain:n?Pe:void 0,stroke:i}),t.createElement(Xe,{width:n?El:aa,dataKey:n?bt:void 0,type:n?"category":"number",domain:n?void 0:Pe,stroke:i}),t.createElement(Cr,{contentStyle:{backgroundColor:r.palette.background.paper},itemStyle:{color:ee(r)},cursor:{fill:"transparent"}}),t.createElement(kr,{iconType:yl,iconSize:bl,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(wr,{barSize:n?Rl:Pl,dataKey:Nl.dataKey,name:Nl.name},e.map(({name:s},c)=>t.createElement($o,{key:s,fill:l[c%l.length]}))))):t.createElement(Gu,{layout:a,theme:r})}),Vu=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:[]},Hu=()=>{const{trackPassRateOverviewSnapshot:{data:e,isError:a}}=Ne();if(a)return t.createElement(v,{color:"error"},"Failed to load track data.");const n=Vu(e);return t.createElement(kn,{data:n,layout:Tt.Horizontal})},zu=e=>{var a;return(a=e==null?void 0:e.map(({id:n,groupTitle:r,snapshotPassRate:l})=>({name:r!=null?r:j(n).name,passRate:l})))!=null?a:[]},_u=()=>{var e;const{groupPassRatesOverviewTrends:{data:a}}=Ne(),n=(e=a==null?void 0:a.groupPassRates)==null?void 0:e.sort((l,i)=>i.snapshotPassRate-l.snapshotPassRate),r=zu(n);return t.createElement(kn,{data:r,layout:Tt.Vertical})},Uu=B(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"}})),la=({title:e,subtitle:a,summaryCardContent:n,chartSectionContent:r,disableDataExport:l,csvData:i,csvFilename:o})=>{const s=Uu();return t.createElement(ha,{className:s.card},t.createElement(S,{className:s.headerRow},t.createElement(S,{className:s.headerSection},t.createElement(v,{className:s.title},e),t.createElement(v,{variant:"caption"},a)),t.createElement(S,{className:s.headerExportSection},t.createElement(Sr,{data:i,filename:o,onClick:()=>!l},t.createElement(ne,{title:"Export to CSV"},t.createElement("span",null,t.createElement(H,{disabled:l},t.createElement(Wo,null))))))),t.createElement(S,{className:s.contentRow},n&&t.createElement(S,{className:s.leftSection},t.createElement(S,{className:s.summaryCard},n)),t.createElement(S,{className:s.chartSection},r)))};function Le(e,a){const n=e;if(a){const r=Qe.utc();for(let l=a-1;l>=0;l--)n.push(r.minus({day:l}).toISODate())}return n}function it(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 Ku(e){const a=[];return a.push(Le(["check_id","check_name","check_owner_ref"],it(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 ju(e){var a,n;const r=[];if(r.push(Le(["entity_ref","entity_name","entity_owner_ref"],it(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,j(l.id).name,(n=l.entityOwnerRef)!=null?n:"",...i])}return r}function qu(e){const a=[];return a.push(Le(["team_ref","team_name"],it(e))),e!=null&&e.length&&e.map(n=>{var r,l;a.push([n.id,(r=n.groupTitle)!=null?r:j(n.id).name,...(l=n.trendPassRates)!=null?l:[n.snapshotPassRate]])}),a}function Qu(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 Ll(e,a){const n=[],r=e!=null&&e.length?Math.max(...e.map(i=>it(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(Le(l,r)),e!=null&&e.length&&e.map(i=>{var o;(o=i.levels)==null||o.map(s=>{n.push(Qu(i,s,a))})}),n}function Yu(e){var a,n,r;const l=[];return l.push(Le(["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 Xu(e){var a;const n=[];return n.push(Le(["level_ordinal","level_name"],it(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 Zu(e){var a;const n=[];return n.push(Le(["entity_ref","entity_name"],it(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,j(r.id).name,...(l=r.trendPassRates)!=null?l:[0]])}),n}function Ju(e){var a,n;const r=[];return r.push(Le(["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:j(l.id).name,l.snapshotPassRate])})),r}const ep=R(e=>({chartHeader:{marginBottom:e.spacing(2)},overallSummaryBox:{display:"flex",flexDirection:"column",height:"100%",color:ee(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`}})),tp=()=>{var e,a,n,r;const l=Ce(),i=ep(),{checkPassRateTrend:{data:o,isLoading:s,isError:c},checkPassRateSnapshot:{data:d}}=Ne(),m=(a=(e=o==null?void 0:o.overallCheckPassRates)==null?void 0:e.length)!=null?a:0,u=xe((n=o==null?void 0:o.overallCheckPassRates)!=null?n:[]),p=(r=d==null?void 0:d.overallCheckPassRates)==null?void 0:r[0];let h;p?h=`${p}%`:h="No Data";const b=t.createElement(S,{className:i.overallSummaryBox},t.createElement(yr,{value:p!=null?p:0,text:h,styles:br({textColor:ee(l),pathColor:Ze(l)[0],trailColor:l.palette.divider,textSize:m?void 0:8})}),t.createElement(v,{className:i.summaryText},"Current check pass rate")),k=!(o!=null&&o.overallCheckPassRates)||!m||s||c;return t.createElement(la,{title:"Check pass rate",subtitle:"Aggregate pass rate for checks",summaryCardContent:b,chartSectionContent:t.createElement(wt,{chartData:u}),disableDataExport:k,csvFilename:Xm,csvData:Yu(o)})},ap=()=>{var e;const{entityPassRatesOverviewTrends:{data:a,isLoading:n,isError:r}}=Ne(),l=(e=a==null?void 0:a.overallEntityPassRates)==null?void 0:e.length,i=!(a!=null&&a.overallEntityPassRates)||!l||n||r;return t.createElement(la,{title:"Entity pass rate",subtitle:"By default, this chart shows the top 5 entities by pass rate for all teams with which you are associated. To see a different set of entities, use the filters.",chartSectionContent:t.createElement(Mu,null),disableDataExport:i,csvFilename:Jm,csvData:Zu(a)})},np=()=>{var e;const{groupPassRatesOverviewTrends:{data:a,isLoading:n,isError:r}}=Ne(),l=(e=a==null?void 0:a.groupPassRates)==null?void 0:e.length,i=!(a!=null&&a.groupPassRates)||!l||n||r;return t.createElement(la,{title:"Team pass rate",subtitle:"Compare the aggregate pass rate for teams",chartSectionContent:t.createElement(_u,null),disableDataExport:i,csvFilename:eu,csvData:Ju(a)})},rp=()=>{var e;const{trackPassRateOverviewTrend:{data:a,isLoading:n,isError:r}}=Ne(),l=(e=a==null?void 0:a.overallTrackPassRate)==null?void 0:e.length,i=!(a!=null&&a.overallTrackPassRate)||!l||n||r;return t.createElement(la,{title:"Track pass rate",subtitle:"Aggregate pass rate for tracks",summaryCardContent:t.createElement(Hu,null),chartSectionContent:t.createElement(Au,null),disableDataExport:i,csvFilename:Zm,csvData:Xu(a)})},lp=B(e=>({root:{display:"flex",flexDirection:"column",gap:e.spacing(2),flex:1,background:e.palette.background.default}})),ip=()=>{const e=lp();return t.createElement(S,{className:e.root},t.createElement($u,null,t.createElement(tp,null),t.createElement(rp,null),t.createElement(ap,null),t.createElement(np,null)))},re=B(e=>({root:{display:"flex",flexDirection:"column",flex:1,background:e.palette.background.default},ownerText:{fontWeight:500,color:ee(e)},flexColumn:{display:"flex",flexDirection:"column",gap:e.spacing(.5)},boldText:{fontWeight:"bold"},descriptionText:{maxWidth:400,color:ee(e),fontSize:e.typography.subtitle2.fontSize,lineHeight:e.typography.subtitle1.fontSize},detailButton:{textTransform:"none",backgroundColor:"transparent","&:hover":{backgroundColor:e.palette.action.hover}}})),ia=({name:e="",description:a=""})=>{const n=re();return t.createElement(S,{className:n.flexColumn},t.createElement(v,{className:n.boldText},e),t.createElement(Lt,{className:n.descriptionText,content:a!=null?a:""}))},oa=({navigateTo:e})=>{const a=re(),n=he();return t.createElement(H,{variant:"text",className:a.detailButton,onClick:()=>n(e)},t.createElement(v,{className:a.ownerText},"View detail"))},op=e=>(e==null?void 0:e.kind)==="Group",sp=e=>(e==null?void 0:e.kind)==="User",xn=({ownerEntityRef:e})=>{var a,n;const{data:r,error:l}=Hi(e!=null?e:void 0);if(r){let i;return op(r)||sp(r)?i=(n=r.metadata.title)!=null?n:(a=r.spec.profile)==null?void 0:a.displayName:i=r.metadata.name,t.createElement(Fe,{entityRef:Sa(r),title:i})}else if(l&&e)return t.createElement(ne,{title:"Unable to pull owner reference from Catalog API"},t.createElement(v,{style:{color:"red"},variant:"body2"},(()=>{try{return j(e).name}catch{return e}})()));return null};var Ee=(e=>(e[e.UP=0]="UP",e[e.DOWN=1]="DOWN",e[e.FLAT=2]="FLAT",e))(Ee||{});const cp=R(e=>({cardSection:{marginBottom:e.spacing(2)},listItem:{padding:0},listItemText:{margin:0}})),dp=({ownerEntityRef:e,passRates:a})=>{const n=cp();return t.createElement(It,{dense:!0,disablePadding:!0,className:n.cardSection},t.createElement(v,{variant:"overline",color:"textSecondary"},"Details"),e&&t.createElement(be,{disableGutters:!0,className:n.listItem},t.createElement(ne,{title:"Owner"},t.createElement(te,null,t.createElement(Vt,{color:"action",fontSize:"small"}))),t.createElement(ae,{className:n.listItemText,primary:t.createElement(Fe,{entityRef:e!=null?e:"No Owner",hideIcon:!0})})),a.map(({name:r,value:l,trend:i},o)=>t.createElement(be,{disableGutters:!0,className:n.listItem,key:o},t.createElement(ne,{title:"The most recent pass rate."},t.createElement(te,null,i===Ee.UP&&t.createElement(zo,{color:"primary",fontSize:"small"}),i===Ee.DOWN&&t.createElement(Vo,{color:"error",fontSize:"small"}),i===Ee.FLAT&&t.createElement(Ho,{color:"action",fontSize:"small"}))),t.createElement(ae,{className:n.listItemText,primary:t.createElement(v,{variant:"body2",color:"textSecondary"},r!=null?r:"Latest Pass Rate",": ",t.createElement("b",null,Math.round(l),"%"))}))))},mp=B(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"}})),Rt=({data:e})=>{const a=mp(),n=he(),[r,l]=T(0),[i,o]=T(10);G(()=>{l(0)},[e.length]);const s=(p,h)=>{l(h)},c=p=>{try{const h=Number.parseInt(p.target.value,10);o(h),l(0)}catch{}},d=r*i,m=d+i,u=[{dataKey:"passRate",name:"Pass rate"}];return t.createElement(S,{className:a.root},t.createElement(g,{container:!0,spacing:2,className:a.gridContainer},e.slice(d,m).map((p,h)=>{var b,k;return t.createElement(g,{item:!0,key:h,xs:12,sm:12,md:6,lg:4,xl:3},t.createElement(vt,{title:(b=p.name)!=null?b:p.id,description:p.description,children:t.createElement(S,{className:a.cardContent},t.createElement(S,{className:a.footer},t.createElement(dp,{ownerEntityRef:p.owner,passRates:p.lineChart.snapshotPassRates}),t.createElement(xt,{data:p.lineChart.trendPassRates,lines:(k=p.lineChart.lineConfigs)!=null?k:u}))),handleView:()=>n(p.navigateTo)}))})),t.createElement(On,{rowsPerPageOptions:[10,25,50],component:"div",count:e.length,rowsPerPage:i,page:r,onPageChange:s,onRowsPerPageChange:c,labelRowsPerPage:"Items per page:"}))},up=B(e=>({paper:{width:"100%",boxShadow:"none",border:`1px solid ${e.palette.divider}`,borderRadius:e.shape.borderRadius},tableHeaderCell:{fontWeight:"bold"}})),Pt=({data:e,columns:a})=>{const n=up(),[r,l]=T(0),[i,o]=T(10);G(()=>{l(0)},[e.length]);const s=(u,p)=>{l(p)},c=u=>{o(+u.target.value),l(0)},d=r*i,m=d+i;return t.createElement(Te,{className:n.paper},t.createElement(di,{size:"small"},t.createElement(mi,null,t.createElement(In,null,a.map(u=>t.createElement(Dn,{key:`header-${u.id}`,className:n.tableHeaderCell},u.label)))),t.createElement(ui,null,e.slice(d,m).map(u=>t.createElement(In,{key:u.id},a.map(p=>t.createElement(Dn,{key:`cell-${p.id}`},p.renderCell?p.renderCell(u):u[p.id])))))),t.createElement(On,{rowsPerPageOptions:[10,25,50],component:"div",count:e.length,rowsPerPage:i,page:r,onPageChange:s,onRowsPerPageChange:c}))};var pp=(e=>(e.Check="check",e.Track="track",e.Entity="entity",e.Group="group",e))(pp||{}),q=(e=>(e[e.TABLE=0]="TABLE",e[e.GRID=1]="GRID",e))(q||{});function sa(e){if(!e||!e.length)return Ee.FLAT;if(e.length===1)return e[0]>0?Ee.UP:Ee.FLAT;const a=e[e.length-1]-e[0];return a<0?Ee.DOWN:a>0?Ee.UP:Ee.FLAT}function hp(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:sa((i=n.trendPassRates)!=null?i:[])}],trendPassRates:xe((o=n.trendPassRates)!=null?o:[])},owner:(s=n.checkOwnerRef)!=null?s:void 0,navigateTo:a({checkId:n.id})}})}function gp(e,a){return e.map(n=>{var r,l,i,o;return{id:n.id,name:j(n.id).name,description:(r=n.entityDescription)!=null?r:void 0,lineChart:{snapshotPassRates:[{value:n.snapshotPassRate,trend:sa((l=n.trendPassRates)!=null?l:[])}],trendPassRates:xe((i=n.trendPassRates)!=null?i:[])},owner:(o=n.entityOwnerRef)!=null?o:void 0,navigateTo:`${a(j(n.id))}/soundcheck`}})}function vp(e,a){return e.map(n=>{var r,l,i;return{id:n.id,name:(r=n.groupTitle)!=null?r:j(n.id).name,lineChart:{snapshotPassRates:[{value:n.snapshotPassRate,trend:sa((l=n.trendPassRates)!=null?l:[])}],trendPassRates:xe((i=n.trendPassRates)!=null?i:[])},navigateTo:a(j(n.id))}})}const Ol=(e,a,n)=>{let r="";return a?r=a({trackId:e}):n&&(r=n({campaignId:e})),r};function Il(e,a,n){return e.map(r=>{var l,i,o,s,c,d,m;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:h,trendPassRates:b})=>({name:p?`Level ${u} (${p})`:`Level ${u}`,value:h,trend:sa(b!=null?b:[])})))!=null?s:[],trendPassRates:Sl({overallTrackPassRate:r.levels}),lineConfigs:(d=(c=r.levels)==null?void 0:c.map(({levelOrdinal:u,levelName:p})=>({dataKey:`Level${u}`,name:p!=null?p:`Level ${u}`})))!=null?d:[]},owner:(m=r.trackOwnerRef)!=null?m:void 0,navigateTo:Ol(r.id,a,n)}})}const fp=B(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"}})),Nt=({viewMode:e,setViewMode:a,isLoading:n,searchTerm:r,setSearchTerm:l,searchPlaceholder:i,csvData:o,csvFilename:s})=>{const c=fp(),d=(k,E)=>{E!==null&&a(E)},[m,u]=t.useState(null),p=!!m,h=k=>{u(k.currentTarget)},b=()=>{u(null)};return t.createElement(g,{container:!0,spacing:2,className:c.header},t.createElement(g,{item:!0,xs:6},t.createElement(qa,{searchTerm:r,setSearchTerm:l,disabled:n,placeholder:i||"Search",variant:"outlined",size:"small"})),t.createElement(g,{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:h,endIcon:t.createElement(Ko,null)},"Export"),t.createElement(Ot,{id:"export-menu",anchorEl:m,getContentAnchorEl:null,open:p,onClose:b,MenuListProps:{"aria-labelledby":"export-button",disablePadding:!0},anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"}},t.createElement(Sr,{data:o,filename:s},t.createElement(pe,{onClick:b,className:c.menuItem},t.createElement(te,{className:c.listItemIcon},t.createElement(Uo,null)),t.createElement(ae,null,"CSV")))),t.createElement(co,{size:"small",value:e,exclusive:!0,onChange:d},t.createElement(lr,{value:q.TABLE,title:"Table view"},t.createElement(jo,{color:"primary"})),t.createElement(lr,{value:q.GRID,title:"Grid view"},t.createElement(_o,{color:"primary"})))))},Ep=({row:{trendPassRates:e,snapshotPassRate:a}})=>{const n=re(),r=xe(e!=null?e:[]);return t.createElement(S,{className:n.flexColumn},t.createElement(v,{className:n.boldText},Math.round(a),"%"),t.createElement(wt,{chartData:r,tableChart:!0}))},yp=(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 d=(c=s.levels)==null?void 0:c.find(({levelOrdinal:m})=>m===o);return d?t.createElement(Ep,{row:d}):t.createElement(t.Fragment,null)}}})},Dl=(e,a,n,r)=>{const l=e.flatMap(s=>{var c;return((c=s.levels)==null?void 0:c.map(d=>d.levelOrdinal))||[]}),i=Math.min(...l),o=Math.max(...l);return[{label:"NAME",id:"trackName",renderCell:s=>{var c;return t.createElement(ia,{name:(c=s.trackName)!=null?c:s.id,description:s.trackDescription})}},...yp(i,o,!!n),{label:"OWNER",id:"trackOwnerRef",renderCell:s=>{var c;return t.createElement(xn,{ownerEntityRef:(c=s.trackOwnerRef)!=null?c:void 0})}},{label:"ACTION",id:"action",renderCell:({id:s})=>{var c;let d=s;return n&&r&&(d=(c=r.find(({trackId:m})=>m===s))==null?void 0:c.campaignId),d?t.createElement(oa,{navigateTo:Ol(d,a,n)}):t.createElement(t.Fragment,null)}}]},bp=()=>{const e=re(),{filter:a}=fe(),n=Q(Xn),{data:r,isLoading:l,isError:i}=Dr(a),{data:o,isLoading:s,isError:c}=Wa(a),[d,m]=T(q.TABLE),[u,p]=T(""),h=K(()=>{var y;return Dl((y=r==null?void 0:r.individualTrackPassRate)!=null?y:[],n)},[r==null?void 0:r.individualTrackPassRate,n]),b=l||s;if(b)return t.createElement(ke,null);if(i||c)return t.createElement(v,{color:"error"},"Failed to load tracks");const{individualTrackPassRate:k}=r;if(!k)return t.createElement(v,{color:"error"},"No available tracks");const E=u.length?k.filter(({id:y,trackName:f})=>{var w;return((w=f==null?void 0:f.toLowerCase())==null?void 0:w.includes(u.toLowerCase()))||y.toLowerCase().includes(u.toLowerCase())}):k;E.forEach(y=>{var f;const w=(f=o==null?void 0:o.individualTrackPassRate)==null?void 0:f.find(({id:N})=>N===y.id);w&&y.levels.forEach(N=>{var L,I;N.trendPassRates=(I=(L=w==null?void 0:w.levels)==null?void 0:L.find(({levelOrdinal:P})=>P===N.levelOrdinal))==null?void 0:I.trendPassRates})});const C=Ll(E);return t.createElement(S,{className:e.root},t.createElement(g,{container:!0,direction:"row"},t.createElement(Nt,{viewMode:d,setViewMode:m,isLoading:b,searchTerm:u,setSearchTerm:p,searchPlaceholder:"Search available tracks",csvData:C,csvFilename:au}),d===q.TABLE&&t.createElement(Pt,{data:E,columns:h}),d===q.GRID&&t.createElement(Rt,{data:Il(E,n)})))},wn=({snapshot:e})=>{const a=re();return t.createElement(S,{className:a.flexColumn},t.createElement(v,{className:a.boldText},Math.round(e),"%"))},Cp=({row:{trendPassRates:e}})=>{const a=re(),n=xe(e!=null?e:[]);return t.createElement(S,{className:a.flexColumn},t.createElement(wt,{chartData:n,tableChart:!0}))};function kp(e){return[{label:"NAME",id:"entityName",renderCell:({id:a,entityDescription:n})=>t.createElement(ia,{name:j(a).name,description:n})},{label:"LATEST",id:"latest",renderCell:a=>t.createElement(wn,{snapshot:a.snapshotPassRate})},{label:"TREND",id:"trend",renderCell:a=>t.createElement(Cp,{row:a})},{label:"OWNER",id:"entityOwnerRef",renderCell:({entityOwnerRef:a})=>t.createElement(xn,{ownerEntityRef:a!=null?a:void 0})},{label:"ACTION",id:"action",renderCell:({id:a})=>t.createElement(oa,{navigateTo:`${e(j(a))}/soundcheck`})}]}const xp=()=>{const e=re(),{filter:a}=fe(),n=Q(Ra),{data:r,isLoading:l,isError:i}=zi(a),{data:o,isLoading:s,isError:c}=ds(a),[d,m]=T(q.TABLE),[u,p]=T("");if(l||s)return t.createElement(ke,null);if(i||c)return t.createElement(v,{color:"error"},"Failed to load entities");const{individualEntityPassRates:h}=r;if(!h)return t.createElement(v,{color:"error"},"No available entities");const b=u.length?h.filter(({id:E})=>{var C;return(C=E.toLowerCase())==null?void 0:C.includes(u.toLowerCase())}):h;b.forEach(E=>{var C;const y=(C=o==null?void 0:o.individualEntityPassRates)==null?void 0:C.find(({id:f})=>f===E.id);y!=null&&y.trendPassRates&&(E.trendPassRates=y.trendPassRates)});const k=ju(b);return t.createElement(S,{className:e.root},t.createElement(g,{container:!0,direction:"row"},t.createElement(Nt,{viewMode:d,setViewMode:m,isLoading:l||s,searchTerm:u,setSearchTerm:p,searchPlaceholder:"Search available entities",csvData:k,csvFilename:nu}),d===q.TABLE&&t.createElement(Pt,{data:b,columns:kp(n)}),d===q.GRID&&t.createElement(Rt,{data:gp(b,n)})))},wp=({row:{trendPassRates:e}})=>{const a=re(),n=xe(e!=null?e:[]);return n.length?t.createElement(S,{className:a.flexColumn},t.createElement(wt,{chartData:n,tableChart:!0})):t.createElement(S,{className:a.flexColumn},t.createElement(v,null,"No data"))};function Tp(e){return[{label:"NAME",id:"groupName",renderCell:({groupTitle:a,id:n})=>t.createElement(ia,{name:a!=null?a:j(n).name})},{label:"LATEST",id:"latest",renderCell:a=>t.createElement(wn,{snapshot:a.snapshotPassRate})},{label:"TREND",id:"trend",renderCell:a=>t.createElement(wp,{row:a})},{label:"ACTION",id:"action",renderCell:({id:a})=>t.createElement(oa,{navigateTo:e(j(a))})}]}const Sp=()=>{var e;const a=re(),{filter:n}=fe();n.context=void 0;const r=Q(Ra),{data:l,isLoading:i,isError:o}=us(n),{data:s,isLoading:c,isError:d}=ps(n),[m,u]=T(q.TABLE),[p,h]=T("");if(i||c)return t.createElement(ke,null);if(o||d)return t.createElement(v,{color:"error"},"Failed to load groups");if(!((e=l==null?void 0:l.groupPassRates)!=null&&e.length))return t.createElement(v,{color:"error"},"No available groups");const{groupPassRates:b}=l,k=p.length?b.filter(({id:C,groupTitle:y})=>{var f;return((f=y==null?void 0:y.toLowerCase())==null?void 0:f.includes(p.toLowerCase()))||C.toLowerCase().includes(p.toLowerCase())}):b;k.forEach(C=>{var y;const f=(y=s==null?void 0:s.groupPassRates)==null?void 0:y.find(w=>w.id===C.id);f!=null&&f.trendPassRates&&(C.trendPassRates=f.trendPassRates)});const E=qu(k);return t.createElement(S,{className:a.root},t.createElement(g,{container:!0,direction:"row"},t.createElement(Nt,{viewMode:m,setViewMode:u,isLoading:i||c,searchTerm:p,setSearchTerm:h,searchPlaceholder:"Search available teams",csvFilename:ru,csvData:E}),m===q.TABLE&&t.createElement(Pt,{data:k,columns:Tp(r)}),m===q.GRID&&t.createElement(Rt,{data:vp(k,r)})))},Rp=()=>{const e=re(),{filter:a}=fe(),n=Q(Un),{data:r}=Hn({orderAlphabetical:"default",searchByStatus:"active"}),l=r==null?void 0:r.edges.map(L=>L.node),i=l==null?void 0:l.map(({id:L,track:I})=>({campaignId:L,trackId:I.id})),o=i==null?void 0:i.map(({trackId:L})=>({trackId:L})),{data:s,isLoading:c,isError:d}=Dr({...a,tracks:o,trackTypes:{included:["campaign"]}}),{data:m,isLoading:u,isError:p}=Wa({...a,tracks:o,trackTypes:{included:["campaign"]}}),[h,b]=T(q.TABLE),[k,E]=T(""),C=K(()=>{var L;return Dl((L=s==null?void 0:s.individualTrackPassRate)!=null?L:[],void 0,n,i)},[s==null?void 0:s.individualTrackPassRate,n,i]),y=u||c;if(y)return t.createElement(ke,null);if(p||d)return t.createElement(v,{color:"error"},"Failed to load campaign tracks");const{individualTrackPassRate:f}=s;if(!f)return t.createElement(v,{color:"error"},"No available campaign tracks");const w=k.length?f.filter(({id:L,trackName:I})=>{var P;return((P=I==null?void 0:I.toLowerCase())==null?void 0:P.includes(k.toLowerCase()))||L.toLowerCase().includes(k.toLowerCase())}):f;w.forEach(L=>{var I,P;const X=(I=m==null?void 0:m.individualTrackPassRate)==null?void 0:I.find(({id:le})=>le===L.id);X&&((P=L==null?void 0:L.levels)==null||P.forEach(le=>{var ue,ye;le.trendPassRates=(ye=(ue=X==null?void 0:X.levels)==null?void 0:ue.find(({levelOrdinal:Oe})=>Oe===le.levelOrdinal))==null?void 0:ye.trendPassRates}))});const N=Ll(w,i);return t.createElement(S,{className:e.root},t.createElement(g,{container:!0,direction:"row"},t.createElement(Nt,{viewMode:h,setViewMode:b,isLoading:y,searchTerm:k,setSearchTerm:E,searchPlaceholder:"Search available campaigns",csvData:N,csvFilename:lu}),h===q.TABLE&&t.createElement(Pt,{data:w,columns:C}),h===q.GRID&&t.createElement(Rt,{data:Il(w,void 0,n)})))},Pp=({row:e})=>{var a;const n=re(),r=xe((a=e.trendPassRates)!=null?a:[]);return t.createElement(S,{className:n.flexColumn},t.createElement(wt,{chartData:r,tableChart:!0}))};function Np(e){return[{label:"NAME",id:"checkName",renderCell:a=>{var n;return t.createElement(ia,{name:(n=a.checkName)!=null?n:a.id,description:a.checkDescription})}},{label:"LATEST",id:"snapshotPassRate",renderCell:a=>t.createElement(wn,{snapshot:a.snapshotPassRate})},{label:"TREND",id:"trendPassRate",renderCell:a=>t.createElement(Pp,{row:a})},{label:"OWNER",id:"checkOwner",renderCell:a=>{var n;return t.createElement(xn,{ownerEntityRef:(n=a.checkOwnerRef)!=null?n:void 0})}},{label:"ACTION",id:"action",renderCell:a=>t.createElement(oa,{navigateTo:e({checkId:a.id})})}]}const Lp=()=>{const e=re(),{filter:a}=fe(),n=Q(Qn),{data:r,isLoading:l,isError:i}=Ir(a),{data:o,isLoading:s,isError:c}=os(a),[d,m]=T(q.TABLE),[u,p]=T("");if(l||s)return t.createElement(ke,null);if(i||c)return t.createElement(v,{color:"error"},"Failed to load checks");const{individualCheckPassRates:h}=r;if(!h)return t.createElement(v,{color:"error"},"No available checks");h.forEach(E=>{var C,y;E.trendPassRates=(y=(C=o==null?void 0:o.individualCheckPassRates)==null?void 0:C.find(f=>f.id===E.id))==null?void 0:y.trendPassRates});const b=u.length?h.filter(({id:E,checkName:C})=>{var y;return((y=C==null?void 0:C.toLowerCase())==null?void 0:y.includes(u.toLowerCase()))||E.toLowerCase().includes(u.toLowerCase())}):h,k=Ku(b);return t.createElement(S,{className:e.root},t.createElement(g,{container:!0,direction:"row"},t.createElement(Nt,{viewMode:d,setViewMode:m,isLoading:l,searchTerm:u,setSearchTerm:p,searchPlaceholder:"Search available checks",csvData:k,csvFilename:tu}),d===q.TABLE&&t.createElement(Pt,{data:b,columns:Np(n)}),d===q.GRID&&t.createElement(Rt,{data:hp(b,n)})))},Op=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}`}}})),Ip=()=>{const e=Op(),a=D(ct),n=!a.getRegisteredFlags().find(r=>r.name==="soundcheck-enable-campaigns")||a.isActive("soundcheck-enable-campaigns");return t.createElement(xu,null,t.createElement("div",{className:e.container},t.createElement("div",{className:e.fixedColumn},t.createElement(Du,null)),t.createElement("div",{className:e.flexibleColumn},t.createElement(S,{className:e.pageLayout},t.createElement(Vn,null,t.createElement(Se,{path:"/*",element:t.createElement(Z,null,t.createElement(Z.Route,{title:"Summary",path:"/"},t.createElement(ip,null)),n&&t.createElement(Z.Route,{title:"Campaigns",path:"/campaigns"},t.createElement(Rp,null)),t.createElement(Z.Route,{title:"Checks",path:"/checks"},t.createElement(Lp,null)),t.createElement(Z.Route,{title:"Tracks",path:"/tracks"},t.createElement(bp,null)),t.createElement(Z.Route,{title:"Entities",path:"/entities"},t.createElement(xp,null)),t.createElement(Z.Route,{title:"Teams",path:"/teams"},t.createElement(Sp,null)))}))))))},ca={WHITE:"#ffffff",BRONZE:"#e07000",SILVER:"#cccccc",GOLD:"#ffc121"},Tn=[ca.BRONZE,ca.SILVER,ca.GOLD],Dp={variant:Zn.Medal,options:{level:0,color:""}},$p=(e,a)=>{const n=Tn.slice(Tn.length-Math.min(a,Tn.length));return n.length<a&&n.unshift(...Array(a-n.length).fill(ca.WHITE)),n[e-1]},Ap=(e,a)=>{if(e===0)return Dp;const n=a.levels.filter(r=>r.ordinal!==0).length;return{variant:Zn.Medal,options:{level:e,color:$p(e,n)}}},ot=(e,a)=>{if(isNaN(a))return"#ddd";const n=100;return a<n/3?e.palette.status.error:a<n*(2/3)?e.palette.status.warning:e.palette.status.ok},Fp=({data:e,lineConfig:a,color:n})=>{const r=Ce(),l=ee(r);return e.length?t.createElement(Fa,{minHeight:100,debounce:1},t.createElement(Ao,{data:e},t.createElement(pt,{vertical:!1,opacity:Ct}),t.createElement(Ye,{dataKey:bt,stroke:l,style:{fontSize:"0.7rem"}}),t.createElement(Xe,{width:aa,domain:Pe,stroke:l,style:{fontSize:"0.7rem"}}),t.createElement(Fo,{key:a.dataKey,dataKey:a.dataKey,name:a.name,stackId:"1",type:"monotone",stroke:n,strokeWidth:1.2,fill:n}))):t.createElement(kl,null)},Mp=(e,a)=>{for(const n of e.levels)for(const r of n.checks)if(r.id===a.id)return r.name;return a.name?a.name:a.id},$l=R(e=>({card:{display:"flex",flexDirection:"column",border:`1px solid ${e.palette.divider}`,width:"99%"},title:{fontWeight:"bold",fontSize:"0.9rem",cursor:"default",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},headerRow:{display:"flex",padding:e.spacing(1,1),borderBottom:`1px solid ${e.palette.divider}`,width:"100%"},headerSection:{display:"flex",flexDirection:"column",gap:e.spacing(.5),flexGrow:1,width:"100%"},contentRow:{padding:e.spacing(1,1,0),display:"flex"},leftSection:{width:"75px",minWidth:"75px"},summaryCard:{height:"100%",display:"flex",flexDirection:"column",justifyContent:"space-between"},chartSection:{flex:1,width:"100%",minWidth:"150px"},chartSkeletonSection:{flex:1,width:"100%",minWidth:"150px",padding:e.spacing(0,0,1,1)},overallSummaryBox:{display:"flex",flexDirection:"column",height:"100%",color:ee(e),textAlign:"center",gap:e.spacing(2)}})),Bp=()=>{const e=$l();return t.createElement(S,{className:e.contentRow},t.createElement(S,{className:e.leftSection},t.createElement(S,{className:e.summaryCard},t.createElement(Rr,{variant:"circle",height:75}))),t.createElement(S,{className:e.chartSkeletonSection},t.createElement(Rr,{variant:"rect",height:92})))},Gp=({check:e,track:a})=>{var n,r,l;const i=$l(),o=Ce(),{data:s,isLoading:c}=Or({tracks:[{trackId:a.id}],checkIds:{included:[e.id]},numberOfDays:30}),{data:d,isLoading:m}=Ir({tracks:[{trackId:a.id}],checkIds:{included:[e.id]}}),u={dataKey:"passRate",name:"Pass rate"},p=(r=(n=s==null?void 0:s.overallCheckPassRates)==null?void 0:n.length)!=null?r:0,h=xe((l=s==null?void 0:s.overallCheckPassRates)!=null?l:[]),b=d!=null&&d.individualCheckPassRates&&d.individualCheckPassRates.length?Math.round(d.individualCheckPassRates[0].snapshotPassRate):0;let k;!(d!=null&&d.individualCheckPassRates)||!d.individualCheckPassRates.length?k="No Data":k=`${b}%`;const E=t.createElement(S,{className:i.overallSummaryBox},t.createElement(yr,{value:b,text:k,styles:br({textColor:ee(o),pathColor:ot(o,b),trailColor:o.palette.divider,textSize:p?void 0:10})}));return t.createElement(Te,{className:i.card,elevation:0},t.createElement(S,{className:i.headerRow},t.createElement(S,{className:i.headerSection},t.createElement(v,{className:i.title},Mp(a,e)))),c||m?t.createElement(Bp,null):t.createElement(S,{className:i.contentRow},E&&t.createElement(S,{className:i.leftSection},t.createElement(S,{className:i.summaryCard},E)),t.createElement(S,{className:i.chartSection},t.createElement(Fp,{data:h,lineConfig:u,color:ot(o,b)}))))},Wp=R(()=>({root:{display:"flex"},boldCaption:{fontWeight:"bold"}})),Vp=({ordinal:e,name:a,description:n})=>{const r=Wp();return t.createElement("div",{className:r.root},t.createElement("div",null,a?t.createElement(t.Fragment,null,t.createElement("div",null,t.createElement(v,{variant:"caption",className:r.boldCaption},a)),t.createElement("div",null,t.createElement(v,{variant:"caption"},`Level ${e}`))):t.createElement(v,{variant:"caption",className:r.boldCaption},`Level ${e}`),n&&t.createElement(Lt,{content:n})))},Hp=({children:e,level:a})=>{const{ordinal:n,name:r,description:l}=a;return t.createElement(_i,{arrow:!0,title:t.createElement(Vp,{ordinal:n,name:r!=null?r:void 0,description:l!=null?l:void 0}),enterDelay:500,placement:"bottom"},e)},zp=(e,a)=>{if(!(e!=null&&e.overallTrackPassRate)||a===void 0)return;const n=e.overallTrackPassRate.filter(r=>r.levelOrdinal>=a).reduce((r,l)=>r+(l.snapshotPassRate||0),0);return Math.round(Math.min(100,n))},_p=B(e=>({card:{border:`1px solid ${e.palette.divider}`,width:"99%"},title:{fontWeight:"bold",fontSize:"1.1rem",cursor:"default"},header:{padding:e.spacing(1.5,2),borderBottom:`1px solid ${e.palette.divider}`},levelNameContainer:{gridGap:e.spacing(1)},passRate:{fontWeight:"bold",fontSize:e.typography.overline.fontSize,cursor:"default"},gaugeContainer:{width:200,paddingLeft:e.spacing(.75),paddingRight:e.spacing(.75),paddingTop:2},content:{padding:e.spacing(2.5,2),display:"flex",gap:e.spacing(2)},description:{padding:0},gridItem:{padding:0}})),Up=({track:e,level:a,index:n})=>{var r,l;const i=_p(),{data:o}=Ga({tracks:[{trackId:e.id}],numberOfDays:30}),s=Ze(Ce()),c=zp(o,a.ordinal),d=c!==void 0?`${c}%`:"";return t.createElement(Te,{elevation:1,className:i.card},t.createElement(S,{className:i.header},t.createElement(g,{container:!0,alignItems:"center",justifyContent:"space-between"},t.createElement(g,{item:!0},t.createElement(g,{container:!0,item:!0,alignItems:"center",justifyContent:"space-between",className:i.levelNameContainer},t.createElement(nr,{badge:(r=a.badge)!=null?r:Ap(a.ordinal,e)}),t.createElement(Hp,{level:a},t.createElement(v,{className:i.title},(l=a.name)!=null?l:`Level ${a.ordinal}`)))),t.createElement(g,{item:!0},t.createElement(g,{container:!0},t.createElement(v,{variant:"overline",className:i.passRate},d),t.createElement("div",{className:i.gaugeContainer},t.createElement(Bl,{value:c!=null?c:0,getColor:m=>s[n]})))))),t.createElement(S,{className:i.content},t.createElement(g,{container:!0,spacing:1},a.checks.map(m=>t.createElement(g,{item:!0,xs:12,sm:6,md:4,className:i.gridItem,key:m.id},t.createElement(Gp,{track:e,check:m}))))))};function Kp(e){const a=D(A);return V([O.TrackEntities,e],async()=>a.getTrackEntities(e),{refetchOnWindowFocus:!1})}const jp=R(e=>{const a=e.palette.background.paper;return{popoverRoot:{backgroundColor:a,maxWidth:1e3},content:{padding:e.spacing(2)},popper:{zIndex:2e3,'&[x-placement*="bottom"] $arrow':{top:0,left:0,marginTop:"-0.71em",marginLeft:4,marginRight:4,"&::before":{transformOrigin:"0 100%"}},'&[x-placement*="top"] $arrow':{bottom:0,left:0,marginBottom:"-0.71em",marginLeft:4,marginRight:4,"&::before":{transformOrigin:"100% 0"}},'&[x-placement*="right"] $arrow':{left:0,marginLeft:"-0.71em",height:"1em",width:"0.71em",marginTop:4,marginBottom:4,"&::before":{transformOrigin:"100% 100%"}},'&[x-placement*="left"] $arrow':{right:0,marginRight:"-0.71em",height:"1em",width:"0.71em",marginTop:4,marginBottom:4,"&::before":{transformOrigin:"0 0"}}},arrow:{overflow:"hidden",position:"absolute",width:"1em",height:"0.71em",boxSizing:"border-box",color:a,"&::before":{content:'""',margin:"auto",display:"block",width:"100%",height:"100%",boxShadow:e.shadows[1],backgroundColor:"currentColor",transform:"rotate(45deg)"}}}}),qp=({placement:e="top",arrow:a=!0,open:n,onClose:r=()=>{},content:l,children:i})=>{const o=jp(),[s,c]=t.useState(null),[d,m]=t.useState(null);return t.createElement("div",{"data-testid":"rich-tooltip"},t.cloneElement(i,{...i.props,ref:m}),t.createElement(pi,{open:n,anchorEl:d,placement:e,transition:!0,className:o.popper,modifiers:{preventOverflow:{enabled:!0,boundariesElement:"window"},arrow:{enabled:a,element:s}}},({TransitionProps:u})=>t.createElement(hi,{...u,timeout:350},t.createElement(Te,{elevation:3},t.createElement(gi,{onClickAway:r},t.createElement(Te,{className:o.popoverRoot},a?t.createElement("span",{className:o.arrow,ref:c}):null,t.createElement(S,{className:o.content},l)))))))},Al=e=>{const a=e.total-e.notApplicable;return a===0?100:Math.round(e.passed/a*100)},Qp=(e,a)=>e.levels.find(n=>n.ordinal===a),Yp=R(e=>({cell:{backgroundColor:({passRate:a})=>$n(ot(e,a),.75),color:({passRate:a})=>An(ot(e,a),.7),cursor:"default",borderRadius:"4px",textAlign:"center",fontSize:".9rem",width:"50px"},tooltip:{width:"225px"},topLevelStatus:{borderBottom:`1px solid ${e.palette.divider}`,paddingBottom:e.spacing(1)},levelStatus:{borderBottom:`1px solid ${e.palette.divider}`,paddingTop:e.spacing(1),paddingBottom:e.spacing(1)},bottomLevelStatus:{paddingTop:e.spacing(1)},levelPassRate:{backgroundColor:({passRate:a})=>$n(ot(e,a),.75),color:({passRate:a})=>An(ot(e,a),.7),borderRadius:"4px",textAlign:"center",fontSize:".7rem",width:"32px",height:"15px"}})),Xp=({track:e,status:a})=>{const n=Al(a),r=Yp({passRate:n}),[l,i]=T(!1),o=ba(null),s=()=>{o.current=setTimeout(()=>i(!0),500)},c=()=>{clearTimeout(o.current),i(!1)};return t.createElement(qp,{content:t.createElement("div",{className:r.tooltip},a.statusByLevel.map((d,m)=>{var u;let p;m===0?p=r.topLevelStatus:m===a.statusByLevel.length-1?p=r.bottomLevelStatus:p=r.levelStatus;const h=Qp(e,d.ordinal);return t.createElement("div",{key:m,className:p,style:{display:"flex",flexDirection:"column",justifyContent:"space-between"}},t.createElement("div",null,t.createElement(v,{variant:"caption",style:{fontWeight:"bold"}},(u=h==null?void 0:h.name)!=null?u:`Level ${d.ordinal}`)),t.createElement("div",{style:{display:"flex",justifyContent:"space-between"}},t.createElement(v,{variant:"caption"},`Passing ${d.passed} of ${d.total-d.notApplicable} checks`),t.createElement(v,{className:r.levelPassRate},`${Al(d)}%`)))})),open:l,placement:"bottom",onClose:()=>i(!1)},t.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center"},onMouseEnter:s,onMouseLeave:c},t.createElement(v,{className:r.cell},`${n}%`)))},We=Object.freeze({createBadgeColumn(){return{title:"",field:"badge",render:e=>e.badge?t.createElement(nr,{badge:e.badge}):t.createElement(ro,null),width:"auto",align:"center",sorting:!1}},createStatusColumn(){return{title:"Checks",field:"status",render:e=>e.status&&t.createElement(Xp,{track:e.track,status:e.status}),width:"auto",align:"center",sorting:!1}},createNameColumn(e){return{title:"Name",field:"resolved.entityRef",highlight:!0,customSort(a,n){return 0},render:({entity:a})=>t.createElement(Fe,{entityRef:a,defaultKind:(e==null?void 0:e.defaultKind)||"Component"})}},createSystemColumn(){return{title:"System",field:"resolved.partOfSystemRelationTitle",customSort(e,a){return 0},render:({resolved:e})=>t.createElement(tr,{entityRefs:e.partOfSystemRelations,defaultKind:"system"})}},createOwnerColumn(){return{title:"Owner",field:"resolved.ownedByRelationsTitle",customSort(e,a){return 0},render:({resolved:e})=>t.createElement(tr,{entityRefs:e.ownedByRelations,defaultKind:"group"})}},createSpecTypeColumn(){return{title:"Type",field:"entity.spec.type",customSort(e,a){return 0}}},createSpecLifecycleColumn(){return{title:"Lifecycle",field:"entity.spec.lifecycle",customSort(e,a){return 0},width:"auto"}},createMetadataDescriptionColumn(){return{title:"Description",field:"entity.metadata.description",customSort(e,a){return 0},render:({entity:e})=>t.createElement(Gl,{text:e.metadata.description,placement:"bottom-start"}),width:"auto"}},createTagsColumn(){return{title:"Tags",field:"entity.metadata.tags",cellStyle:{padding:"0px 16px 0px 20px"},render:({entity:e})=>t.createElement(t.Fragment,null,e.metadata.tags&&e.metadata.tags.map(a=>t.createElement(_e,{key:a,label:a,size:"small",variant:"outlined",style:{marginBottom:"0px"}}))),width:"auto",sorting:!1}},createTitleColumn(e){return{title:"Title",field:"entity.metadata.title",customSort(a,n){return 0},hidden:e==null?void 0:e.hidden,searchable:!0}},createLabelColumn(e,a){return{title:(a==null?void 0:a.title)||"Label",field:"entity.metadata.labels",customSort(n,r){return 0},cellStyle:{padding:"0px 16px 0px 20px"},render:({entity:n})=>{var r;const l=(r=n.metadata)==null?void 0:r.labels,i=l&&l[e]||(a==null?void 0:a.defaultValue);return t.createElement(t.Fragment,null,i&&t.createElement(_e,{key:i,label:i,size:"small",variant:"outlined"}))},width:"auto",sorting:!1}},createNamespaceColumn(){return{title:"Namespace",field:"entity.metadata.namespace",customSort(e,a){return 0},width:"auto"}}});function Zp(e){var a;const{trackDetails:n,track:r,entity:l}=e,i=ar(l,Yi,{kind:"system"}),o=ar(l,Xi),s=Sa(l);return{id:s,entity:l,badge:(a=n.badge)!=null?a:void 0,track:r,status:n.status,resolved:{name:Bt(l,{defaultKind:"Component"}),entityRef:s,ownedByRelationsTitle:o.map(c=>Bt(c,{defaultKind:"group"})).join(", "),ownedByRelations:o,partOfSystemRelationTitle:i.map(c=>Bt(c,{defaultKind:"system"})).join(", "),partOfSystemRelations:i}}}const Jp=[We.createBadgeColumn(),We.createNameColumn(),We.createStatusColumn(),We.createSystemColumn(),We.createOwnerColumn(),We.createSpecTypeColumn(),We.createSpecLifecycleColumn()],eh=[Ae.CertificationLevel,Ae.Name,Ae.CheckPassRate,Ae.System,Ae.Owner,Ae.Type,Ae.Lifecycle],th=R({tableContainer:{display:"flex",flexDirection:"column",height:"100%",width:"99%"}}),ah=({track:e})=>{var a,n,r;const l=th(),[i,o]=T({orderBy:void 0,pageInfo:{page:0,pageSize:25,direction:"forward",cursor:null}}),{data:s,isLoading:c}=Kp({trackId:e.id,orderBy:i.orderBy,[i.pageInfo.direction==="forward"?"first":"last"]:i.pageInfo.pageSize,[i.pageInfo.direction==="forward"?"after":"before"]:i.pageInfo.cursor}),d=U((k,E)=>{let C;k===-1?C=void 0:C={field:eh[k],direction:E==="asc"?Jn.Asc:Jn.Desc},o({orderBy:C,pageInfo:{...i.pageInfo,page:0,cursor:null}})},[i]),m=U((k,E)=>{var C,y;const f=k>i.pageInfo.page?"forward":"backward",w=f==="forward"?(C=s==null?void 0:s.trackEntities.pageInfo.endCursor)!=null?C:null:(y=s==null?void 0:s.trackEntities.pageInfo.startCursor)!=null?y:null;o({...i,pageInfo:{page:k,pageSize:E,direction:f,cursor:w}})},[s,i]),u=(a=s==null?void 0:s.trackEntities.edges.map(k=>k.node.entityRef))!=null?a:[],{data:p,isLoading:h}=Ui({entityRefs:u}),b=(n=qe.compact(s==null?void 0:s.trackEntities.edges.map(k=>{const E=p==null?void 0:p.items.find(C=>!!C&&Sa(C)===k.node.entityRef);return E?Zp({trackDetails:k.node,track:e,entity:E}):void 0})))!=null?n:[];return t.createElement("div",{className:l.tableContainer},t.createElement(Wl,{columns:Jp,data:b,options:{paging:!0,showFirstLastPageButtons:!1,paginationPosition:"both",emptyRowsWhenPaging:!1,pageSizeOptions:[10,25,50],pageSize:25,search:!1,showTitle:!1},onOrderChange:d,onPageChange:m,page:i.pageInfo.page,totalCount:(r=s==null?void 0:s.trackEntities.totalCount)!=null?r:0,isLoading:c||h,components:{Toolbar:()=>null}}))},nh=e=>{var a,n;const r=(e==null?void 0:e.individualTrackPassRate)||[];if(!r.length)return[];const l=Qe.utc();return(n=(a=r==null?void 0:r[0])==null?void 0:a.levels)==null?void 0:n.reduce((i,{trendPassRates:o,levelOrdinal:s},c,d)=>{var m;const u=(m=o==null?void 0:o.map((p,h)=>{const b=Math.min(d.slice(c).reduce((k,{trendPassRates:E})=>k+(E?E[h]:0),0),100);return{name:_t(l,o.length-h-1),[`Level ${s}`]:b}}))!=null?m:[];return c===0?u:i.map((p,h)=>({...p,...u[h]}))},[])},rh=({trackId:e})=>{var a,n,r,l;const{data:i,isError:o}=Wa({tracks:[{trackId:e}],numberOfDays:30});if(o)return t.createElement(v,{color:"error"},"Failed to load track data.");const s=nh(i),c=(l=(r=(n=(a=i==null?void 0:i.individualTrackPassRate)==null?void 0:a[0])==null?void 0:n.levels)==null?void 0:r.map(({levelOrdinal:d,levelName:m})=>({dataKey:`Level ${d}`,name:m!=null?m:`Level ${d}`})))!=null?l:[];return t.createElement(xt,{data:s,lines:c})},lh=(e,a)=>{var n;const r=Ze(e);return(n=a==null?void 0:a.map(({levelOrdinal:l},i,o)=>{const s=Math.min(o.slice(i).reduce((c,{snapshotPassRate:d})=>c+d,0),100);return{name:`Level ${l}`,passRate:s,fill:r[i%r.length]}}))!=null?n:[]},ih=({trackId:e})=>{const a=Ce(),{data:n,isLoading:r}=Ga({tracks:[{trackId:e}],numberOfDays:30});return t.createElement(t.Fragment,null,!r&&n&&t.createElement("div",null,t.createElement(kt,null,t.createElement(kn,{data:lh(a,n.overallTrackPassRate),layout:Tt.Horizontal}))))},oh=R(e=>({card:{display:"flex",flexDirection:"column",border:`1px solid ${e.palette.divider}`,width:"99%"},title:{fontWeight:"bold",fontSize:"1.1rem",lineHeight:`${e.typography.h5.fontSize}px`,cursor:"default"},header:{display:"flex",padding:e.spacing(1,1),borderBottom:`1px solid ${e.palette.divider}`,flexDirection:"column",gap:e.spacing(.5)},content:{padding:e.spacing(1,1,0),display:"flex",margin:e.spacing(1),gap:e.spacing(1)},leftSection:{width:"225px",minWidth:"225px"},summaryCard:{height:"100%",display:"flex",flexDirection:"column",justifyContent:"space-between"},chartSection:{flex:1,width:"100%",minWidth:"150px"},overallSummaryBox:{display:"flex",flexDirection:"column",height:"100%",color:ee(e),textAlign:"center",gap:e.spacing(2)}})),sh=({trackId:e})=>{var a,n;const r=oh(),{data:l,isLoading:i}=ht({ids:[e!=null?e:""],first:1}),o=(n=(a=l==null?void 0:l.edges)==null?void 0:a[0])==null?void 0:n.node;return t.createElement(Te,{className:r.card},t.createElement(S,{className:r.header},!i&&o&&t.createElement(v,{className:r.title},"Track Progress")),t.createElement(S,{className:r.content},t.createElement(S,{className:r.leftSection},t.createElement(S,{className:r.summaryCard},t.createElement(ih,{trackId:e}))),t.createElement(S,{className:r.chartSection},t.createElement(rh,{trackId:e}))))},ch=R(e=>({root:{height:"100%",background:e.palette.background.default},header:{backgroundColor:e.palette.background.paper,borderRadius:0},trackProgressContainer:{margin:e.spacing(2,0,2,2)},trackContainerContent:{padding:e.spacing(2,2,1),backgroundColor:e.palette.background.paper},levelCard:{margin:e.spacing(1,0,2)},editButton:{marginLeft:"auto"},tabsContainer:{margin:e.spacing(1,0,1,2)},trackEntitesContainer:{marginTop:e.spacing(1)}}));function Fl({children:e,value:a,index:n}){return t.createElement("div",{hidden:a!==n},a===n&&e)}const dh=()=>{var e,a,n,r;const l=ch(),[i,o]=T(0),s=(y,f)=>{o(f)},{trackId:c}=Ue(),{data:d,isLoading:m}=ht({ids:[c!=null?c:""],first:1}),u=(a=(e=d==null?void 0:d.edges)==null?void 0:e[0])==null?void 0:a.node,{loading:p,allowed:h}=_({permission:Wn,resourceRef:c}),{loading:b,allowed:k}=_({permission:Gn,resourceRef:c}),E=he(),C=Q(ao);return t.createElement("div",null,t.createElement(Zt,{entityName:"track",entityId:c,showNotFound:!m&&!u,showCannotView:!p&&!h}),m&&t.createElement(ut,null),u&&t.createElement("div",{className:l.root},t.createElement(Te,{elevation:3,className:l.header},t.createElement("div",{className:l.trackContainerContent},t.createElement("div",{style:{display:"flex",alignItems:"center"}},t.createElement("div",null,t.createElement(v,{variant:"h5"},u.name),t.createElement(Fe,{entityRef:u.ownerEntityRef})),!b&&k&&u.isEditable&&t.createElement(H,{className:l.editButton,variant:"contained",color:"primary",onClick:()=>{E(C({trackId:u.id}))}},"Edit Track")),t.createElement(Lt,{content:(n=u.description)!=null?n:""}))),t.createElement("div",{className:l.trackProgressContainer},t.createElement(sh,{trackId:c})),t.createElement("div",{className:l.tabsContainer},t.createElement(fa,{value:i,onChange:s},t.createElement(De,{label:"Levels"}),t.createElement(De,{label:"Entities"})),t.createElement(Fl,{value:i,index:0},u&&((r=u.levels)==null?void 0:r.map((y,f)=>t.createElement("div",{className:l.levelCard,key:y.ordinal},t.createElement(Up,{track:u,level:y,index:f}))))),t.createElement(Fl,{value:i,index:1},u&&t.createElement("div",{className:l.trackEntitesContainer},t.createElement(ah,{track:u}))))))},mh=()=>{const{setIsLoading:e,setShowAddModal:a,showAddModal:n}=Re(),{mutateAsync:r,isLoading:l}=Lr();return G(()=>{e(l)},[e,l]),t.createElement(fl,{handleClose:()=>a(!1),title:"Create Track",open:n,onSave:async i=>{await r(i,{onSuccess:()=>a(!1)})}})};var da=(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))(da||{}),Sn=(e=>(e.title="No tracks found",e.description="No tracks matched your search. Consider changing search term and filters.",e))(Sn||{});const uh=()=>t.createElement(g,{item:!0,container:!0,"data-testid":"tracks-skeleton"},Array.from({length:6},(e,a)=>t.createElement(g,{key:`loading-${a}`,xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem"},t.createElement(Gt,{variant:"rect",height:385})))),ph="Error Deleting Track";function hh(){const e=D(A),a=oe(),{showAlert:n}=ce(),r=async l=>{const i=await e.deleteProgram(l);if(!i)throw new Error(`Failed to delete track ${l}`);return i};return se([de.DeleteProgram],r,{onSuccess:()=>{const l=[O.GetAllPrograms,O.GetOverallTrackPassRateSnapshots,O.GetOverallTrackPassRateTrends,O.GetIndividualTrackPassRateSnapshots,O.GetIndividualTrackPassRateTrends];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:ph,message:o})}})}const gh=R(e=>({root:{position:"relative",height:"100%"},cardSection:{marginBottom:e.spacing(2)},listItem:{padding:0},listItemText:{margin:0}})),vh=({track:e})=>{var a,n,r;const l=gh(),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(It,{dense:!0,disablePadding:!0,className:l.cardSection},t.createElement(v,{variant:"overline",color:"textSecondary"},"Track Details"),t.createElement(be,{disableGutters:!0,className:l.listItem},t.createElement(ne,{title:"Levels"},t.createElement(te,null,t.createElement(Qo,{color:"action",fontSize:"small"}))),t.createElement(ae,{className:l.listItemText,primary:t.createElement(v,{variant:"body2",color:"textSecondary"},`${i} ${i===1?"Level":"Levels"}`)})),t.createElement(be,{disableGutters:!0,className:l.listItem},t.createElement(ne,{title:"Checks"},t.createElement(te,null,t.createElement(qo,{color:"action",fontSize:"small"}))),t.createElement(ae,{className:l.listItemText,primary:t.createElement(v,{variant:"body2",color:"textSecondary"},`${o} ${o===1?"Check":"Checks"}`)})),e.documentationURL&&t.createElement(be,{disableGutters:!0,className:l.listItem},t.createElement(ne,{title:"Documentation"},t.createElement(te,null,t.createElement(Yo,{color:"action",fontSize:"small"}))),t.createElement(ae,{className:l.listItemText,primary:t.createElement(ua,{to:e.documentationURL,target:"_blank",rel:"noopener noreferrer"},"Learn more")})),t.createElement(be,{disableGutters:!0,className:l.listItem},t.createElement(ne,{title:"Owner"},t.createElement(te,null,t.createElement(Vt,{color:"action",fontSize:"small"}))),t.createElement(ae,{className:l.listItemText,primary:t.createElement(Fe,{entityRef:e.ownerEntityRef,hideIcon:!0})})))},fh=({summary:e})=>{const{loading:a,allowed:n}=_({permission:wi,resourceRef:e.id}),{showModal:r}=je(),{mutate:l}=hh(),i=he(),o=Q(Xn),s=U(async()=>{await r({title:"Delete Track",message:`Are you sure you want to delete track ${e.name}?`})&&l(e.id)},[r,e.id,e.name,l]),c=U(()=>{i(o({trackId:e.id}))},[i,e.id,o]);return t.createElement(vt,{title:e.name,description:e.description,children:t.createElement(vh,{track:e}),handleView:c,handleDelete:e.isEditable&&!a&&n?s:void 0})},Eh=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)}})),yh=({tracksPerPage:e,currentCursor:a})=>{var n;const r=Eh(),[l,i]=T(a),[o,s]=T(""),[c,d]=T($e.Alpha),[m,u]=T($e.Owner),[p,h]=T([]),[b,k]=T("");Pa(()=>{k(o)},500,[o]);const{setShowAddModal:E}=Re(),{loading:C,allowed:y}=_({permission:Ti}),{data:f,isLoading:w}=ht({ids:void 0,first:e,after:l,orderAlphabetical:c,searchByOwner:m,searchByName:b}),[N,L]=T(f),I=(n=N==null?void 0:N.edges)==null?void 0:n.map($=>$.node),[P,X]=T([]),le=D(ct),ue=!le.getRegisteredFlags().find($=>$.name==="soundcheck-enable-track-creation")||le.isActive("soundcheck-enable-track-creation"),ye=!y||!ue,Oe=$=>{d($.target.value)},Ve=$=>{u($.target.value)};if(G(()=>{f&&L(()=>{var $,M;return{totalCount:f.totalCount,edges:f.edges,pageInfo:{startCursor:f.pageInfo.startCursor,endCursor:f.pageInfo.endCursor,hasNextPage:($=f==null?void 0:f.pageInfo.hasNextPage)!=null?$:!1,hasPreviousPage:(M=f==null?void 0:f.pageInfo.hasPreviousPage)!=null?M:!1}}})},[f]),G(()=>{const $=N==null?void 0:N.edges.map(we=>we.node),M=_a($!=null?$:[]);h(M!=null?M:[])},[w,N]),!w&&!I)return t.createElement(Ke,{title:da.title,description:da.description,imgSrc:Na,action:!C&&t.createElement(H,{disabled:ye,variant:"contained",color:"primary",onClick:()=>E(!0)},da.callToAction)});let ie;w?ie=t.createElement(uh,null):I!=null&&I.length?ie=I==null?void 0:I.map($=>t.createElement(g,{key:$.id,xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem","aria-label":"result"},t.createElement(fh,{summary:$}))):ie=t.createElement(g,{xs:12,item:!0,role:"listitem","aria-label":"result"},t.createElement(Ke,{title:Sn.title,description:Sn.description}));const st=(N==null?void 0:N.pageInfo.hasNextPage)||(P==null?void 0:P.length)>0;return t.createElement(g,{container:!0,direction:"row",className:r.container},t.createElement(g,{container:!0,spacing:4,className:r.header},t.createElement(Qa,{searchPlaceholder:"Search available tracks",isLoading:w,searchTerm:o,setSearchTerm:s,filterAlpha:c,handleAlphabeticalFilterChange:Oe,filterOwner:m,handleOwnerFilterChange:Ve,owners:p}),t.createElement(g,{item:!0,xs:3},t.createElement("div",{className:r.headerButtons},!C&&t.createElement(H,{disabled:ye,variant:"contained",color:"primary",onClick:()=>E(!0)},"Create Track")))),t.createElement(g,{container:!0,spacing:4,role:"list","aria-label":"tracks"},ie),st&&t.createElement("div",{className:r.pagination},t.createElement(ka,{response:N,listingsPerPage:e,cursor:l,setCursor:i,prevCursors:P,setPrevCursors:X,labelPerPageDropdown:"Tracks Per Page:",urlRoute:"tracks?tracksPerPage="})))},bh=()=>{const{showAddModal:e}=Re(),[a]=Ca(),n=a.get("tracksPerPage"),r=n?parseInt(n,10):wa;return t.createElement("div",null,t.createElement(Vl,{variant:"info",message:"Programs will now be referred to as Tracks throughout the Soundcheck UI.",id:"programTrackBanner"}),t.createElement(yh,{tracksPerPage:r}),e&&t.createElement(mh,null))},Ch=()=>t.createElement(Ar,null,t.createElement(bh,null)),kh=R(e=>({breadcrumbs:{color:e.palette.common.white,marginTop:e.spacing(2)},link:{color:e.palette.common.white,textDecoration:"none",fontStyle:"normal",fontWeight:"bold"},text:{fontStyle:"normal",fontWeight:"normal"}})),xh=({pages:e})=>{const a=Q(er),n=kh(),r=Ft().pathname===a();return t.createElement(Hl,{className:n.breadcrumbs},!r&&t.createElement(ua,{className:n.link,to:a()},"Home"),e.map(({title:l,path:i},o)=>i?t.createElement(ua,{className:n.link,to:i,key:i,relative:"path"},l):t.createElement(v,{className:n.text,key:`${o}`},l)))},wh=e=>{const a={"^/soundcheck/campaigns$":"Campaigns","^/soundcheck/tracks$":"Tracks","^/soundcheck/tracks/[^/]+$":"Track Details","^/soundcheck/checks$":"Checks","^/soundcheck/collectors$":"Collectors","^/soundcheck/tech-health$":"Tech Health","^/soundcheck/tech-health/campaigns":"Campaigns","^/soundcheck/tech-health/checks":"Checks","^/soundcheck/tech-health/tracks":"Tracks","^/soundcheck/tech-health/entities":"Entities","^/soundcheck/tech-health/teams":"Teams"};for(const[n,r]of Object.entries(a))if(new RegExp(n).test(e))return r;return null},Th=e=>e.split("/").filter(a=>a).map((a,n,r)=>{const l=`/${r.slice(0,n+1).join("/")}`,i=wh(l);if(i)return l===e?{title:i}:{path:l,title:i}}).filter(a=>!!a),Sh=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"}}})),Rh=({title:e="Soundcheck"})=>{const a=Sh(),n=Q(er),[r,l]=Ki(),{group:i}=r,[o,s]=T(void 0),[c,d]=Mt("soundcheck.overview.groupRef",null),m=D(ct),u=!m.getRegisteredFlags().find(P=>P.name==="soundcheck-enable-tech-health")||m.isActive("soundcheck-enable-tech-health"),p=!m.getRegisteredFlags().find(P=>P.name==="soundcheck-enable-collectors")||m.isActive("soundcheck-enable-collectors"),h=!m.getRegisteredFlags().find(P=>P.name==="soundcheck-enable-campaigns")||m.isActive("soundcheck-enable-campaigns"),{loading:b,allowed:k}=_({permission:Si}),{loading:E,allowed:C}=_({permission:Ri}),y=P=>{P&&(l({...r,group:P}),d(P))},f=p&&!b&&k,w=u&&!E&&C,N=Ft().pathname.replace(/\/+$/,""),L=N===n(),I=Th(N);return t.createElement(lo,null,t.createElement(ji,null,t.createElement(io,null,t.createElement(oo,null,t.createElement(S,{className:a.root},t.createElement(zl,{themeId:"tool"},t.createElement(vi,{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(_l,{title:e,subtitle:t.createElement(xh,{pages:I})},L&&t.createElement(qi,{onChange:y,initialValue:c!=null?c:i,setError:s})),t.createElement(S,{className:a.pageContent},t.createElement(S,{className:a.pageLayout},t.createElement(Vn,null,t.createElement(Se,{path:"/campaigns/:campaignId/edit",element:t.createElement(jc,null)}),t.createElement(Se,{path:"/campaigns/:campaignId",element:t.createElement(Kc,null)}),t.createElement(Se,{path:"/tracks/:trackId/edit",element:t.createElement(Ym,null)}),t.createElement(Se,{path:"/tracks/:trackId",element:t.createElement(dh,null)}),t.createElement(Se,{path:"/checks/:checkId",element:t.createElement(em,null)}),t.createElement(Se,{path:"/collectors/:collectorId",element:t.createElement(km,null)}),t.createElement(Se,{path:"/*",element:t.createElement(Z,null,t.createElement(Z.Route,{title:"Overview",path:"/"},t.createElement("div",{className:a.tabContent},t.createElement(Qi,{groupSelectorError:o,searchParams:r,setSearchParams:l}))),w&&t.createElement(Z.Route,{title:"Tech Health",path:"/tech-health"},t.createElement(Ip,null)),t.createElement(Z.Route,{title:"Checks",path:"/checks"},t.createElement(dm,null)),t.createElement(Z.Route,{title:"Tracks",path:"/tracks"},t.createElement(Ch,null)),h&&t.createElement(Z.Route,{title:"Campaigns",path:"/campaigns"},t.createElement($c,null)),f&&t.createElement(Z.Route,{title:"Collectors",path:"/collectors"},t.createElement(Om,null)))}))))))))))};export{Rh as RoutingPage};
2
+ //# sourceMappingURL=index-99d39b7d.esm.js.map
package/dist/index.esm.js CHANGED
@@ -1,2 +1,2 @@
1
- import{createPlugin as i,createApiFactory as r,discoveryApiRef as p,fetchApiRef as m,createRoutableExtension as e,createComponentExtension as c}from"@backstage/core-plugin-api";import{s as u,S as a,e as n,g as d,o as h,r as s}from"./esm/routes-93cd1496.esm.js";import"react";import"./esm/EmptyState-6a402254.esm.js";import"./esm/Card-2862fdca.esm.js";import"graphql-request";import"graphql-tag";import"@backstage/core-compat-api";import"@tanstack/react-query";import"lodash";import"@material-ui/core";import"@material-ui/lab";import"@material-ui/icons/Check";import"@material-ui/icons/Close";import"@material-ui/icons/HelpOutline";import"@material-ui/icons/RemoveCircleOutline";import"@material-ui/icons/ReportProblemOutlined";import"classnames";import"@backstage/catalog-model";import"@backstage/plugin-catalog-react";import"./images/empty-state.svg";import"@backstage/core-components";import"@material-ui/core/styles/makeStyles";import"@spotify/backstage-plugin-core";import"./esm/CertificationSidebar-5e4230a7.esm.js";import"react-router-dom";import"@material-ui/icons/Schedule";import"luxon";import"./esm/license-e9e73904.esm.js";const t=i({id:"soundcheck",apis:[r({api:u,deps:{discoveryApi:p,fetchApi:m},factory:o=>new a(o)})],routes:{entityContent:n}}),v=t.provide(e({name:"EntitySoundcheckContent",component:()=>import("./esm/EntitySoundcheckContent-bc7bdbe2.esm.js").then(o=>o.EntitySoundcheckContent),mountPoint:n})),R=t.provide(c({name:"EntitySoundcheckCard",component:{lazy:()=>import("./esm/index-f4bdaf5c.esm.js").then(o=>o.EntitySoundcheckCard)}})),k=t.provide(e({name:"GroupSoundcheckContent",component:()=>import("./esm/index-5610fc82.esm.js").then(o=>o.FixedGroupOverviewPage),mountPoint:d})),g=t.provide(e({name:"SoundcheckOverviewPage",component:()=>import("./esm/index-5610fc82.esm.js").then(o=>o.OverviewPage),mountPoint:h})),S=t.provide(e({name:"SoundcheckRoutingPage",component:()=>import("./esm/index-b2acbf0c.esm.js").then(o=>o.RoutingPage),mountPoint:s}));export{R as EntitySoundcheckCard,v as EntitySoundcheckContent,k as GroupSoundcheckContent,g as SoundcheckOverviewPage,S as SoundcheckRoutingPage,t as soundcheckPlugin};
1
+ import{createPlugin as i,createApiFactory as r,discoveryApiRef as p,fetchApiRef as m,createRoutableExtension as e,createComponentExtension as c}from"@backstage/core-plugin-api";import{s as u,S as a,e as n,g as d,o as h,r as s}from"./esm/routes-93cd1496.esm.js";import"react";import"./esm/EmptyState-6a402254.esm.js";import"./esm/Card-2862fdca.esm.js";import"graphql-request";import"graphql-tag";import"@backstage/core-compat-api";import"@tanstack/react-query";import"lodash";import"@material-ui/core";import"@material-ui/lab";import"@material-ui/icons/Check";import"@material-ui/icons/Close";import"@material-ui/icons/HelpOutline";import"@material-ui/icons/RemoveCircleOutline";import"@material-ui/icons/ReportProblemOutlined";import"classnames";import"@backstage/catalog-model";import"@backstage/plugin-catalog-react";import"./images/empty-state.svg";import"@backstage/core-components";import"@material-ui/core/styles/makeStyles";import"@spotify/backstage-plugin-core";import"./esm/CertificationSidebar-5e4230a7.esm.js";import"react-router-dom";import"@material-ui/icons/Schedule";import"luxon";import"./esm/license-e9e73904.esm.js";const t=i({id:"soundcheck",apis:[r({api:u,deps:{discoveryApi:p,fetchApi:m},factory:o=>new a(o)})],routes:{entityContent:n}}),v=t.provide(e({name:"EntitySoundcheckContent",component:()=>import("./esm/EntitySoundcheckContent-bc7bdbe2.esm.js").then(o=>o.EntitySoundcheckContent),mountPoint:n})),R=t.provide(c({name:"EntitySoundcheckCard",component:{lazy:()=>import("./esm/index-f4bdaf5c.esm.js").then(o=>o.EntitySoundcheckCard)}})),k=t.provide(e({name:"GroupSoundcheckContent",component:()=>import("./esm/index-5610fc82.esm.js").then(o=>o.FixedGroupOverviewPage),mountPoint:d})),g=t.provide(e({name:"SoundcheckOverviewPage",component:()=>import("./esm/index-5610fc82.esm.js").then(o=>o.OverviewPage),mountPoint:h})),S=t.provide(e({name:"SoundcheckRoutingPage",component:()=>import("./esm/index-99d39b7d.esm.js").then(o=>o.RoutingPage),mountPoint:s}));export{R as EntitySoundcheckCard,v as EntitySoundcheckContent,k as GroupSoundcheckContent,g as SoundcheckOverviewPage,S as SoundcheckRoutingPage,t 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.12.0",
4
+ "version": "0.12.2",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "homepage": "https://backstage.spotify.com",
7
7
  "main": "./dist/index.esm.js",