unleash-server 5.2.4 → 5.2.5

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.
Files changed (30) hide show
  1. package/dist/lib/routes/admin-api/project/api-token.js +1 -2
  2. package/dist/lib/routes/admin-api/project/api-token.js.map +1 -1
  3. package/dist/test/e2e/api/admin/api-token.auth.e2e.test.js +43 -0
  4. package/dist/test/e2e/api/admin/api-token.auth.e2e.test.js.map +1 -1
  5. package/frontend/build/index.html +1 -1
  6. package/frontend/build/static/{AdvancedPlayground-b8d00f81.js → AdvancedPlayground-23b331cd.js} +1 -1
  7. package/frontend/build/static/{CreateProject-fe1d0f0f.js → CreateProject-3de26b03.js} +1 -1
  8. package/frontend/build/static/{Error-6550f020.js → Error-3f9f3bb5.js} +1 -1
  9. package/frontend/build/static/{FeatureArchiveDialog-42d2cf92.js → FeatureArchiveDialog-33634918.js} +1 -1
  10. package/frontend/build/static/{FeatureMetricsChart-70a6747e.js → FeatureMetricsChart-29151824.js} +1 -1
  11. package/frontend/build/static/{FeatureViewLazyExport-60874e5e.js → FeatureViewLazyExport-440af9f1.js} +2 -2
  12. package/frontend/build/static/{LazyAdminExport-c5eec10c.js → LazyAdminExport-2f4272d5.js} +2 -2
  13. package/frontend/build/static/{LazyProjectExport-7f66ff80.js → LazyProjectExport-eb893846.js} +1 -1
  14. package/frontend/build/static/{NetworkOverview-b82ebe0c.js → NetworkOverview-01bb5ab9.js} +2 -2
  15. package/frontend/build/static/{NetworkTraffic-51a825ea.js → NetworkTraffic-6f341b62.js} +1 -1
  16. package/frontend/build/static/{Playground-2b482aeb.js → Playground-85262bd8.js} +1 -1
  17. package/frontend/build/static/{PlaygroundGuidancePopper-5673aca8.js → PlaygroundGuidancePopper-b41d2afe.js} +1 -1
  18. package/frontend/build/static/RoleCell-90199573.js +1 -0
  19. package/frontend/build/static/{StrategyItemContainer-7b356e23.js → StrategyItemContainer-bb74986e.js} +1 -1
  20. package/frontend/build/static/{chartjs-adapter-date-fns.esm-04fda623.js → chartjs-adapter-date-fns.esm-4f594471.js} +1 -1
  21. package/frontend/build/static/{flowchart-elk-definition-170a3958-68f1625d.js → flowchart-elk-definition-170a3958-bdf223e6.js} +1 -1
  22. package/frontend/build/static/{index-545ad556.js → index-56e4c3f3.js} +1 -1
  23. package/frontend/build/static/{index-78d048a4.js → index-6c460833.js} +2 -2
  24. package/frontend/build/static/{index-b74e9af8.js → index-d11f5e3e.js} +1 -1
  25. package/frontend/build/static/{is_dark-77b9ee14.js → is_dark-8e88e01a.js} +1 -1
  26. package/frontend/build/static/{mindmap-definition-44684416-4cca63a5.js → mindmap-definition-44684416-33fa2a43.js} +1 -1
  27. package/frontend/build/static/{timeline-definition-8e5a9bc6-31dad151.js → timeline-definition-8e5a9bc6-5a93a392.js} +1 -1
  28. package/frontend/build/static/{unknownify-53fb2d5d.js → unknownify-ad38e3d1.js} +1 -1
  29. package/package.json +1 -1
  30. package/frontend/build/static/RoleCell-c9b26e7a.js +0 -1
@@ -1 +1 @@
1
- import{cH as n,cK as s,cJ as o}from"./index-78d048a4.js";function i(e,r){n(2,arguments);var a=s(e),t=o(r);return isNaN(t)?new Date(NaN):(t&&a.setDate(a.getDate()+t),a)}export{i as a};
1
+ import{cH as n,cK as s,cJ as o}from"./index-6c460833.js";function i(e,r){n(2,arguments);var a=s(e),t=o(r);return isNaN(t)?new Date(NaN):(t&&a.setDate(a.getDate()+t),a)}export{i as a};
@@ -353,12 +353,12 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
353
353
  --data-raw '${JSON.stringify(S(),void 0,2)}'`,children:l(SD,{handleSubmit:async z=>{if(r){z.preventDefault(),R();try{await c(r.id,S()),await d(),s(t?`/projects/${t}/settings/segments/`:"/segments/"),i({title:"Segment updated",type:"success"})}catch(B){a(ht(B))}}},name:p,setName:f,description:h,setDescription:g,project:v,setProject:y,constraints:b,setConstraints:w,errors:k,clearErrors:R,mode:"edit",children:l(Lc,{permission:EE,disabled:!T||_,"data-testid":Pie})})})},tke=()=>{const{uiConfig:e}=At(),t=gt();return l(U9,{onClick:()=>t("/environments/create"),maxWidth:"700px",Icon:ua,permission:pi,disabled:!e.flags.EEA,children:"New environment"})},nke=(e,t,n)=>{const r=m.useRef(null);return m.useEffect(()=>{if(r.current)return r.current.dataset.index=String(e),rke(r.current,t,(n==null?void 0:n.current)??void 0)},[e,t]),r},rke=(e,t,n)=>{const r=p=>{dg&&t(Number(dg.dataset.index),Number(e.dataset.index),p)},o=n??e,i=p=>{p.target===o&&(e.draggable=!0)},a=()=>{e.draggable=!1},s=()=>{e.draggable=!0,dg=e},c=()=>{r(!1)},u=p=>{p.preventDefault()},d=()=>{r(!0),dg=null};return o.addEventListener("mouseenter",i),o.addEventListener("mouseleave",a),n&&e.addEventListener("mouseenter",a),e.addEventListener("dragstart",s),e.addEventListener("dragenter",c),e.addEventListener("dragover",u),e.addEventListener("drop",d),()=>{o.removeEventListener("mouseenter",i),o.removeEventListener("mouseleave",a),n&&e.removeEventListener("mouseenter",a),e.removeEventListener("dragstart",s),e.removeEventListener("dragenter",c),e.removeEventListener("dragover",u),e.removeEventListener("drop",d)}};let dg;const oke=C(Fi)(()=>({"&:hover":{".drag-handle .drag-icon":{display:"inherit",cursor:"grab"}}})),ike=({row:e,moveListItem:t})=>{const{hasAccess:n}=m.useContext(Ao),r=m.useRef(null),{searchQuery:o}=Rl(),i=!o&&n(cx),a=nke(e.index,t,r),s=(c,u)=>i&&c.column.isDragHandle?l(Ui,{...c.getCellProps(),ref:u,className:"drag-handle",children:c.render("Cell")}):l(Ui,{...c.getCellProps(),children:c.render("Cell")});return l(oke,{hover:!0,ref:i?a:void 0,children:e.cells.map(c=>s(c,r))})},ake=C(se)(({theme:e})=>({fontWeight:"bold",fontSize:e.fontSizes.smallerBody})),ske=C(se)(({theme:e})=>({fontSize:e.fontSizes.smallerBody})),_3=C(Zt)(({theme:e})=>({marginLeft:e.spacing(1)})),lke=({environment:e})=>{const{searchQuery:t}=Rl();return x(er,{sx:n=>({[n.breakpoints.up("sm")]:{minWidth:"350px"}}),children:[l(Ha,{search:t,children:e.name}),l(Y,{condition:e.protected,show:l(_3,{color:"success",children:"Predefined"})}),l(Y,{condition:!e.enabled,show:l(kd,{maxWidth:"270px",title:x(me,{children:[l(ake,{children:"Deprecated environment"}),l(ske,{children:"This environment is not auto-enabled for new projects. The project owner will need to manually enable it in the project."})]}),describeChild:!0,arrow:!0,children:l(_3,{color:"neutral",children:"Deprecated"})})})]})},gu=({permission:e,projectId:t,children:n,environmentId:r,tooltip:o,tooltipProps:i})=>{const{hasAccess:a}=m.useContext(Ao);let s;return t&&r?s=a(e,t,r):t?s=a(e,t):s=a(e),l(Ad,{...i,title:k1(s,o),children:n({hasAccess:s})})},cke=C(V2)(({theme:e})=>({padding:e.spacing(1)})),Fg=C(Wa)(({theme:e})=>({borderRadius:e.shape.borderRadius})),uke=C(Fg)(({theme:e})=>({color:e.palette.error.main})),dke=C(Ou)(({theme:e})=>({color:e.palette.error.main})),pke=({environment:e,onEdit:t,onDeprecateToggle:n,onClone:r,onDelete:o})=>{const[i,a]=m.useState(null),s=!!i,c=f=>{a(f.currentTarget)},u=()=>{a(null)},d=`environment-${e.name}-actions`,p=`${d}-menu`;return x(me,{children:[l(Et,{title:"Environment actions",arrow:!0,describeChild:!0,children:l(Ht,{id:d,"aria-controls":s?p:void 0,"aria-haspopup":"true","aria-expanded":s?"true":void 0,onClick:c,type:"button",children:l(KE,{})})}),l(G2,{id:p,anchorEl:i,open:s,onClose:u,transformOrigin:{horizontal:"right",vertical:"top"},anchorOrigin:{horizontal:"right",vertical:"bottom"},disableScrollLock:!0,children:x(cke,{"aria-labelledby":d,children:[l(gu,{permission:cx,children:({hasAccess:f})=>x(Fg,{onClick:()=>{t(),u()},disabled:!f||e.protected,children:[l(Ou,{children:l(ji,{})}),l(rn,{children:l(se,{variant:"body2",children:"Edit"})})]})}),l(gu,{permission:pi,children:({hasAccess:f})=>x(Fg,{onClick:()=>{r(),u()},disabled:!f,children:[l(Ou,{children:l(ole,{})}),l(rn,{children:l(se,{variant:"body2",children:"Clone"})})]})}),l(gu,{permission:cx,children:({hasAccess:f})=>x(Fg,{onClick:()=>{n(),u()},disabled:!f||e.protected,children:[l(Ou,{children:l(Y,{condition:e.enabled,show:l(Lle,{}),elseShow:l(Mle,{})})}),l(rn,{children:l(se,{variant:"body2",children:e.enabled?"Deprecate":"Undeprecate"})})]})}),l(gu,{permission:qle,children:({hasAccess:f})=>x(uke,{onClick:()=>{o(),u()},disabled:!f||e.protected,children:[l(dke,{children:l(go,{})}),l(rn,{children:l(se,{variant:"body2",children:"Delete"})})]})})]})})]})},P3=(e,t)=>{var n;return!!((n=t==null?void 0:t.toLowerCase())!=null&&n.includes(e.toLowerCase()))},fke=C("div")(({theme:e})=>({display:"flex",flexDirection:"column",color:e.palette.text.secondary,"& > span:first-of-type":{color:e.palette.text.primary}})),hke=C("div")(({theme:e})=>({paddingLeft:e.spacing(1)})),mke=C("div")(({theme:e})=>({display:"flex",marginBottom:e.spacing(3),"& > div:first-of-type":{width:"100%",maxWidth:e.spacing(50),marginRight:e.spacing(1)}})),gke=(e,t,n)=>x("li",{...e,children:[l(Ja,{icon:l(X1,{fontSize:"small"}),checkedIcon:l(J1,{fontSize:"small"}),style:{marginRight:8},checked:n}),x(fke,{children:[l("span",{children:t.name}),l("span",{children:t.description})]})]}),vke=e=>l(hke,{children:e.length>1?`${e.length} projects selected`:e[0].name}),yke=({projects:e,setProjects:t})=>{const{projects:n}=da(),r=n.sort((c,u)=>c.name.localeCompare(u.name)).map(({id:c,name:u,description:d})=>({id:c,name:u,description:d})),o=r.filter(({id:c})=>e.includes(c)),i=e.length>0&&e.length===r.length,a=()=>{const c=i?[]:r.map(({id:u})=>u);t(c)};return l(mke,{children:l(Nh,{size:"small",multiple:!0,limitTags:1,openOnFocus:!0,disableCloseOnSelect:!0,value:o,onChange:(c,u,d)=>{c.type==="keydown"&&c.key==="Backspace"&&d==="removeOption"||t(u.map(({id:p})=>p))},options:r,renderOption:(c,u,{selected:d})=>gke(c,u,d),filterOptions:(c,{inputValue:u})=>c.filter(({name:d,description:p})=>P3(u,d)||P3(u,p)),isOptionEqualToValue:(c,u)=>c.id===u.id,getOptionLabel:c=>c.name||c.description||"",renderInput:c=>l(Sn,{...c,label:"Projects"}),renderTags:c=>vke(c),groupBy:()=>"Select/Deselect all",renderGroup:({key:c,children:u})=>x(m.Fragment,{children:[l(Y,{condition:r.length>2,show:l(BT,{isAllSelected:i,onClick:a})}),u]},c)})})},Pp="*",bke=({...e})=>l(Sr,{elevation:8,...e}),wke=C(Ja)(({theme:e})=>({marginRight:e.spacing(.4)})),Ske=({options:e,defaultValue:t=[Pp],onChange:n,disabled:r,error:o,onFocus:i})=>{const[a,s]=m.useState(typeof t=="string"?[t]:t),[c,u]=m.useState(typeof t=="string"||t.includes(Pp)),d=a.length>0&&a.length===e.length&&a[0]!==Pp,p=(y,b)=>{b?(u(!0),n([Pp])):(u(!1),n(a.includes(Pp)?[]:a))},f=()=>{const y=d?[]:e.map(({value:b})=>b);s(y),n(y)};return x(Le,{sx:{mt:-1,mb:3},children:[l(Le,{sx:{mt:1,mb:.25,ml:1.5},children:l(Hr,{disabled:r,"data-testid":"select-all-projects",control:l(Ja,{checked:r||c,onChange:p}),label:"ALL current and future projects"})}),l(Nh,{disabled:r||c,multiple:!0,limitTags:2,options:e,disableCloseOnSelect:!0,getOptionLabel:({label:y})=>y,groupBy:()=>"Select/Deselect all",renderGroup:({key:y,children:b})=>x(m.Fragment,{children:[l(Y,{condition:e.length>2,show:l(BT,{isAllSelected:d,onClick:f})}),b]},y),fullWidth:!0,PaperComponent:bke,renderOption:(y,b,{selected:w})=>x("li",{...y,children:[l(wke,{icon:l(X1,{fontSize:"small"}),checkedIcon:l(J1,{fontSize:"small"}),checked:w}),b.label]}),renderInput:y=>l(Sn,{...y,error:!!o,helperText:o,variant:"outlined",label:"Projects",placeholder:"Select one or more projects",onFocus:i,"data-testid":"select-input"}),value:c||r?e:e.filter(y=>a.includes(y.value)),onChange:(y,b)=>{const w=b.map(({value:S})=>S);s(w),n(w)}})]})},xke=()=>{const{makeRequest:e,createRequest:t,errors:n,loading:r}=Yn({propagateErrors:!0});return{deleteToken:async a=>{const s=`api/admin/api-tokens/${a}`,c=t(s,{method:"DELETE"});try{return await e(c.caller,c.id)}catch(u){throw u}},createToken:async a=>{const c=t("api/admin/api-tokens",{method:"POST",body:JSON.stringify(a)});try{return await e(c.caller,c.id)}catch(u){throw u}},errors:n,loading:r}},Cke=C("form")(()=>({display:"flex",flexDirection:"column",height:"100%"})),tu=C("p")(({theme:e})=>({display:"flex",color:e.palette.text.primary,marginBottom:e.spacing(1),"&:not(:first-of-type)":{marginTop:e.spacing(4)}})),vw=C("p")(({theme:e})=>({color:e.palette.text.secondary,marginBottom:e.spacing(1)})),Eke=C(Cr)(({theme:e})=>({width:"100%",maxWidth:e.spacing(50)})),Tke=C("div")(({theme:e})=>({padding:e.spacing(3),backgroundColor:e.palette.background.elevation2,borderRadius:e.shape.borderRadiusMedium,marginTop:e.spacing(4)})),kke=C("div")(({theme:e})=>({padding:e.spacing(0,4),"& > p:not(:first-of-type)":{marginTop:e.spacing(2)}})),Ake=C("div")(({theme:e})=>({marginTop:"auto",display:"flex",justifyContent:"flex-end",[e.breakpoints.down("sm")]:{marginTop:e.spacing(4)}})),Rke=C(Ve)(({theme:e})=>({marginLeft:e.spacing(3)})),_ke=({environment:e,open:t,setOpen:n,newToken:r})=>{const{environments:o,refetchEnvironments:i}=_d(),{cloneEnvironment:a,loading:s}=$d(),{createToken:c}=xke(),{projects:u}=da(),{setToastData:d,setToastApiError:p}=Nt(),{uiConfig:f}=At(),[h,g]=m.useState(`${e.name}_clone`),[v,y]=m.useState("development"),[b,w]=m.useState([]),[S,k]=m.useState(["*"]),[R,T]=m.useState(!0),[A,P]=m.useState("later"),[_,I]=m.useState({}),$=Q=>{I(ae=>({...ae,[Q]:void 0}))},z=(Q,ae)=>{I(Ae=>({...Ae,[Q]:ae}))};m.useEffect(()=>{g(B(e.name)),y("development"),w([]),k(["*"]),T(!0),P("later"),I({})},[e]);const B=Q=>{let ae=`${Q}_clone`,Ae=2;for(;!U(ae);)ae=`${e.name}_clone_${Ae}`,Ae++;return ae},L=()=>({name:h,type:v,projects:b,clonePermissions:R}),q=()=>({username:`${h}_token`,type:"CLIENT",environment:h,projects:S}),G=async Q=>{Q.preventDefault();try{if(await a(e.name,L()),A==="now"){const Ae=await(await c(q())).json();r(Ae)}d({title:"Environment successfully cloned!",type:"success"}),i(),n(!1)}catch(ae){p(ht(ae))}},te=()=>`curl --location --request POST '${f.unleashUrl}/api/admin/environments/${e.name}/clone' \\
354
354
  --header 'Authorization: INSERT_API_KEY' \\
355
355
  --header 'Content-Type: application/json' \\
356
- --data-raw '${JSON.stringify(L(),void 0,2)}'`,H=Q=>Q.length,U=Q=>!(o!=null&&o.some(ae=>ae.name===Q)),j=H(h)&&U(h)&&S.length,O=Q=>{$("name"),U(Q)||z("name","An environment with that name already exists."),g(Q)},D=u.map(Q=>({value:Q.id,label:Q.name}));return l(Q1,{open:t,onClose:()=>{n(!1)},label:`Clone ${e.name} environment`,children:l(Xr,{loading:s,modal:!0,title:`Clone ${e.name} environment`,description:"Cloning an environment will clone all feature toggles and their configuration (activation strategies, segments, status, etc) into a new environment.",documentationLink:"https://docs.getunleash.io/reference/environments#cloning-environments",documentationLinkLabel:"Cloning environments documentation",formatApiCode:te,children:x(Cke,{onSubmit:G,children:[x("div",{children:[l(tu,{children:"What is your new environment name? (Can't be changed later)"}),l(Eke,{autoFocus:!0,label:"Environment name",error:!!_.name,errorText:_.name,value:h,onChange:Q=>O(Q.target.value),required:!0}),l(tu,{children:"What type of environment do you want to create?"}),l(G9,{onChange:Q=>y(Q.currentTarget.value),value:v}),x(tu,{children:["Select which projects you want to clone the environment configuration in?",l(td,{tooltip:"The cloned environment will keep the feature toggle state for the selected projects, where it will be enabled by default."})]}),l(yke,{projects:b,setProjects:w}),l(tu,{children:"Keep the users permission for this environment?"}),l(vw,{children:"If you turn it off, the permission for this environment across all projects and feature toggles will remain only for admin and editor roles."}),l(Hr,{label:R?"Yes":"No",control:l(Qa,{onChange:Q=>T(Q.target.checked),checked:R})}),x(Tke,{children:[l(tu,{children:"API Token"}),x(vw,{children:["In order to connect your SDKs to your newly cloned environment, you will also need an API token."," ",l(Vr,{href:"https://docs.getunleash.io/reference/api-tokens-and-client-keys",target:"_blank",rel:"noreferrer",children:"Read more about API tokens"}),"."]}),l(As,{children:x(K2,{value:A,onChange:Q=>P(Q.target.value),name:"api-token-generation",children:[l(Hr,{value:"later",control:l(oc,{}),label:"I want to generate an API token later"}),l(Hr,{value:"now",control:l(oc,{}),label:"Generate an API token now"})]})}),x(kke,{children:[l(vw,{children:"A new Server-side SDK (CLIENT) API token will be generated for the cloned environment, so you can get started right away."}),l(Y,{condition:A==="now",show:x(me,{children:[l(tu,{children:"Which projects do you want this token to give access to?"}),l(Ske,{options:D,defaultValue:S,onChange:k,error:_.projects,onFocus:()=>$("projects")})]})})]})]})]}),x(Ake,{children:[l(Ve,{type:"submit",variant:"contained",color:"primary",disabled:!j,children:"Clone environment"}),l(Rke,{onClick:()=>{n(!1)},children:"Cancel"})]})]})})})};var WT={},Pke=Tn;Object.defineProperty(WT,"__esModule",{value:!0});var CD=WT.default=void 0,Ike=Pke(kn()),Oke=An,$ke=(0,Ike.default)((0,Oke.jsx)("path",{d:"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm-1 4 6 6v10c0 1.1-.9 2-2 2H7.99C6.89 23 6 22.1 6 21l.01-14c0-1.1.89-2 1.99-2h7zm-1 7h5.5L14 6.5V12z"}),"FileCopy");CD=WT.default=$ke;const ED=({token:e})=>{const{setToastData:t}=Nt();return x(Le,{sx:r=>({backgroundColor:r.palette.background.elevation2,padding:r.spacing(4),borderRadius:`${r.shape.borderRadius}px`,marginTop:r.spacing(2),display:"flex",justifyContent:"space-between",alignItems:"center",wordBreak:"break-all"}),children:[e,l(Et,{title:"Copy token",arrow:!0,children:l(Ht,{onClick:()=>{K9(e)?t({type:"success",title:"Token copied to clipboard"}):t({type:"error",title:"Could not copy token"})},size:"large",children:l(CD,{})})})]})},Nke=({open:e,setOpen:t,token:n})=>x(Zn,{open:e,secondaryButtonText:"Close",onClose:(r,o)=>{o||t(!1)},title:"New API token created",children:[l(se,{variant:"body1",children:"Your new token has been created successfully."}),x(se,{variant:"body1",children:['You can also find it as "',l("strong",{children:n==null?void 0:n.username}),'" in the'," ",l(cn,{to:"/admin/api",children:"API access page"}),"."]}),l(ED,{token:(n==null?void 0:n.secret)||""})]}),Lke=C(Le)(({theme:e})=>({display:"flex",alignItems:"center",justifyContent:"flex-end",paddingLeft:e.spacing(.5),minWidth:e.spacing(6.5),cursor:"grab"})),Mke=C(Ht)(({theme:e})=>({padding:e.spacing(1.5,0),cursor:"inherit",transition:"color 0.2s ease-in-out",color:e.palette.action.active})),Dke=C(yL,{shouldForwardProp:e=>e!=="deprecated"})(({theme:e,deprecated:t})=>({color:t?e.palette.neutral.border:e.palette.primary.main})),TD=({environment:e})=>x(Lke,{children:[l(Mke,{size:"large",disableRipple:!0,className:"drag-icon",children:l(fle,{titleAccess:"Drag to reorder"})}),l(Dke,{deprecated:!e.enabled})]}),Bke=C(ca)(({theme:e})=>({marginTop:e.spacing(3)})),Fke=C("p",{shouldForwardProp:e=>e!=="warning"})(({theme:e,warning:t})=>({color:t?e.palette.error.dark:e.palette.text.primary})),kD=({environment:e,warnEnabledToggles:t})=>{const n=m.useMemo(()=>[{id:"Icon",width:"1%",Cell:({row:{original:c}})=>l(TD,{environment:c})},{Header:"Name",accessor:"name",Cell:er},{Header:"Type",accessor:"type",Cell:er},{Header:"Visible in",accessor:c=>c.projectCount===1?"1 project":`${c.projectCount} projects`,Cell:({row:{original:c},value:u})=>x(er,{children:[u,l(Y,{condition:!!t,show:l(Fke,{warning:!!(c.enabledToggleCount&&c.enabledToggleCount>0),children:c.enabledToggleCount===1?"1 toggle enabled":`${c.enabledToggleCount} toggles enabled`})})]})}],[t]),{getTableProps:r,getTableBodyProps:o,headerGroups:i,rows:a,prepareRow:s}=tn.useTable({columns:n,data:[e],disableSortBy:!0});return x(Bke,{...r(),rowHeight:"compact",children:[l(la,{headerGroups:i}),l(aa,{...o(),children:a.map(c=>(s(c),l(Fi,{hover:!0,...c.getRowProps(),children:c.cells.map(u=>l(Ui,{...u.getCellProps(),children:u.render("Cell")}))})))})]})},zke=({environment:e,open:t,setOpen:n,onConfirm:r})=>{const{enabled:o}=e,i=o?"Deprecate":"Undeprecate";return x(Zn,{title:`${i} environment?`,open:t,primaryButtonText:i,secondaryButtonText:"Close",onClick:r,onClose:()=>{n(!1)},children:[l(Y,{condition:o,show:l(Kt,{severity:"info",children:"Deprecating an environment will mark it as deprecated. Deprecated environments are set as not visible by default for new projects. Project owners are still able to override this setting in the project. This environment will still be visible in any current projects."}),elseShow:l(Kt,{severity:"info",children:"Undeprecating an environment will no longer mark it as deprecated. An undeprecated environment will be set as visible by default for new projects."})}),l(kD,{environment:e})]})},jke=C("p")(({theme:e})=>({marginTop:e.spacing(3),marginBottom:e.spacing(1.5)})),Uke=C(Cr)(()=>({width:"100%"})),Wke=({environment:e,open:t,setOpen:n,onConfirm:r})=>{const[o,i]=m.useState("");return m.useEffect(()=>{i("")},[t]),x(Zn,{title:"Delete environment?",open:t,primaryButtonText:"Delete environment",disabledPrimaryButton:e.name!==o,secondaryButtonText:"Close",onClick:r,onClose:()=>{n(!1)},children:[x(Kt,{severity:"error",children:[l("strong",{children:"Danger! This action is not reversible. Please proceed with caution."})," ","Deleting this environment will result in removing all strategies that are active in this environment across all feature toggles."]}),l(kD,{environment:e,warnEnabledToggles:!0}),x(jke,{children:["In order to delete this environment, please enter the id of the environment in the textfield below:"," ",l("strong",{children:e.name})]}),l(Uke,{label:"Environment name",value:o,onChange:a=>i(a.target.value)})]})},Hke=({environment:e})=>{const t=gt(),{setToastApiError:n,setToastData:r}=Nt(),{environments:o,refetchEnvironments:i}=_d(),{refetch:a}=XE(),{deleteEnvironment:s,toggleEnvironmentOn:c,toggleEnvironmentOff:u}=$d(),[d,p]=m.useState(!1),[f,h]=m.useState(!1),[g,v]=m.useState(!1),[y,b]=m.useState(!1),[w,S]=m.useState();return x(qa,{children:[l(pke,{environment:e,onEdit:()=>t(`/environments/${e.name}`),onDeprecateToggle:()=>h(!0),onClone:()=>{o.length<Mv?v(!0):r({type:"error",title:"Environment limit reached",text:`You have reached the maximum number of environments (${Mv}). Please reach out if you need more.`})},onDelete:()=>p(!0)}),l(Wke,{environment:e,open:d,setOpen:p,onConfirm:async()=>{try{await s(e.name),a(),r({type:"success",title:"Environment deleted",text:`You have successfully deleted the ${e.name} environment.`})}catch(T){n(ht(T))}finally{p(!1),await i()}}}),l(zke,{environment:e,open:f,setOpen:h,onConfirm:async()=>{try{e.enabled?(await u(e.name),r({type:"success",title:"Environment deprecated successfully"})):(await c(e.name),r({type:"success",title:"Environment undeprecated successfully"}))}catch(T){n(ht(T))}finally{h(!1),await i()}}}),l(_ke,{environment:e,open:g,setOpen:v,newToken:T=>{S(T),b(!0)}}),l(Nke,{open:y,setOpen:b,token:w})]})},Vke=C(Le)(({theme:e})=>({display:"flex",flexDirection:"column",justifyContent:"center",wordBreak:"break-word",padding:e.spacing(1,2)})),Gke=C("span")(({theme:e})=>({overflow:"hidden",textOverflow:"ellipsis",display:"-webkit-box",WebkitBoxOrient:"vertical",WebkitLineClamp:"1",lineClamp:"1"})),qke=C("span")(({theme:e})=>({color:e.palette.text.secondary,overflow:"hidden",textOverflow:"ellipsis",fontSize:"inherit",WebkitLineClamp:"1",lineClamp:"1",display:"-webkit-box",WebkitBoxOrient:"vertical"})),al=({value:e,subtitle:t,afterTitle:n})=>{const{searchQuery:r}=Rl();return x(Vke,{children:[x(Gke,{style:{WebkitLineClamp:t?1:2,lineClamp:t?1:2},"data-loading":!0,children:[l(Ha,{search:r,children:e}),n]}),l(Y,{condition:!!t,show:()=>l(qke,{"data-loading":!0,children:l(Ha,{search:r,children:t})})})]})},Yke=C(Kt)(({theme:e})=>({marginBottom:e.spacing(4)})),Kke=()=>{const{changeSortOrder:e}=$d(),{setToastApiError:t}=Nt(),{environments:n,mutateEnvironments:r}=_d(),o=m.useCallback(async(y,b,w=!1)=>{const S=[...n],k=S[y];if(S.splice(y,1),S.splice(b,0,k),await r(S),w)try{await e(uve(S))}catch(R){t(ht(R))}},[e,n,r,t]),{getTableProps:i,getTableBodyProps:a,headerGroups:s,rows:c,prepareRow:u,state:{globalFilter:d},setGlobalFilter:p}=tn.useTable({columns:Xke,data:n,disableSortBy:!0},tn.useGlobalFilter),h=x(me,{children:[l(Eo,{initialValue:d,onChange:p}),l(On.Divider,{}),l(tke,{})]});let g=c.length;const v=l(On,{title:`Environments (${g})`,actions:h});return x(wr,{header:v,children:[l(Yke,{severity:"info",children:"This is the order of environments that you have today in each feature toggle. Rearranging them here will change also the order inside each feature toggle."}),l(_s,{value:d,children:x(ca,{...i(),rowHeight:"compact",children:[l(la,{headerGroups:s}),l(aa,{...a(),children:c.map(y=>(u(y),l(ike,{row:y,moveListItem:o},y.original.name)))})]})}),l(Y,{condition:c.length===0,show:l(Y,{condition:(d==null?void 0:d.length)>0,show:x(ir,{children:["No environments found matching “",d,"”"]}),elseShow:l(ir,{children:"No environments available. Get started by adding one."})})})]})},Xke=[{id:"Icon",width:"1%",Cell:({row:{original:e}})=>l(TD,{environment:e}),disableGlobalFilter:!0,isDragHandle:!0},{Header:"Name",accessor:"name",Cell:({row:{original:e}})=>l(lke,{environment:e}),minWidth:350},{Header:"Type",accessor:"type",Cell:al},{Header:"Visible in",accessor:e=>e.projectCount===1?"1 project":`${e.projectCount} projects`,Cell:er},{Header:"API Tokens",accessor:e=>e.apiTokenCount===1?"1 token":`${e.apiTokenCount} tokens`,Cell:er},{Header:"Actions",id:"Actions",align:"center",width:"1%",Cell:({row:{original:e}})=>l(Hke,{environment:e}),disableGlobalFilter:!0}],Jke=()=>{const e=Ga("projectId"),t=gt();return l(fi,{onClick:()=>{t(e?`/projects/${e}/settings/segments/create`:"/segments/create")},permission:[w1,TE],projectId:e,"data-testid":Sie,children:"New segment"})},Qke=C("div")(({theme:e})=>({display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",margin:e.spacing(6),marginLeft:"auto",marginRight:"auto"})),Zke=C(se)(({theme:e})=>({fontSize:e.fontSizes.mainHeader,marginBottom:e.spacing(2.5)})),eAe=C("p")(({theme:e})=>({fontSize:e.fontSizes.smallBody,color:e.palette.text.secondary,maxWidth:515,marginBottom:e.spacing(2.5),textAlign:"center"})),tAe=C(cn)(({theme:e})=>({textDecoration:"none",color:e.palette.primary.main,fontWeight:e.fontWeight.bold})),nAe=()=>{const{hasAccess:e}=m.useContext(Ao);return x(Qke,{children:[l(Zke,{children:"No segments yet!"}),l(eAe,{children:"Segment makes it easy for you to define who should be exposed to your feature. The segment is often a collection of constraints and can be reused."}),l(Y,{condition:e(w1),show:l(tAe,{to:"/segments/create",children:"Create your first segment"})})]})},rAe=C(Cr)(({theme:e})=>({marginTop:e.spacing(2)})),oAe=({segment:e,open:t,onClose:n,onRemove:r})=>{const[o,i]=m.useState(""),a=u=>i(u.currentTarget.value),s=()=>{n(),i("")},c="delete-segment-confirmation-form";return x(Zn,{title:"Are you sure you want to delete this segment?",open:t,primaryButtonText:"Delete segment",secondaryButtonText:"Cancel",onClick:()=>{r(),i("")},disabledPrimaryButton:(e==null?void 0:e.name)!==o,onClose:s,formId:c,children:[x("p",{children:["In order to delete this segment, please enter the name of the segment in the field below: ",l("strong",{children:e==null?void 0:e.name})]}),l("form",{id:c,children:l(rAe,{autoFocus:!0,onChange:a,value:o,label:"Segment name","data-testid":Oie})})]})},iAe=C("ul")({marginBottom:0}),aAe=C(cn)(({theme:e})=>({textDecoration:"none",color:e.palette.primary.main,fontWeight:e.fontWeight.bold})),sAe=({segment:e,open:t,onClose:n,strategies:r})=>x(Zn,{title:"You can't delete a segment that's currently in use",open:t,primaryButtonText:"OK",onClick:n,children:[x("p",{children:["The following feature toggles are using the"," ",l("strong",{children:e.name})," segment for their strategies:"]}),l(iAe,{children:r==null?void 0:r.map(o=>l("li",{children:x(aAe,{to:IT(o.projectId,o.featureName,o.environment,o.id),target:"_blank",rel:"noopener noreferrer",children:[o.featureName," ",lAe(o)]})},o.id))})]}),lAe=e=>e.strategyName?`(${Ss(e.strategyName)})`:"",cAe=({segment:e,open:t,onClose:n,onRemove:r})=>{const{strategies:o,loading:i}=yD(e.id),a=(o==null?void 0:o.length)===0;return i?null:l(Y,{condition:a,show:l(oAe,{segment:e,open:t,onClose:n,onRemove:r}),elseShow:l(sAe,{segment:e,open:t,onClose:n,strategies:o})})},uAe=({segment:e})=>{const t=Ga("projectId"),{refetchSegments:n}=Pl(),{deleteSegment:r}=FT(),{setToastData:o,setToastApiError:i}=Nt(),[a,s]=m.useState(!1),c=async()=>{try{await r(e.id),await n(),o({type:"success",title:"Successfully deleted segment"})}catch(u){i(ht(u))}finally{s(!1)}};return x(me,{children:[l($r,{onClick:()=>s(!0),permission:[Jle,TE],projectId:t,tooltipProps:{title:"Remove segment"},"data-testid":`${Iie}_${e.name}`,children:l(go,{"data-loading":!0})}),l(Y,{condition:a,show:()=>l(cAe,{segment:e,open:a,onClose:()=>s(!1),onRemove:c})})]})},dAe=({segment:e})=>{const t=Ga("projectId"),n=gt();return l($r,{onClick:()=>{n(t?`/projects/${t}/settings/segments/edit/${e.id}`:`/segments/edit/${e.id}`)},permission:[EE,TE],projectId:t,tooltipProps:{title:"Edit segment"},children:l(ji,{"data-loading":!0})})},pAe=({segment:e})=>x(qa,{children:[l(dAe,{segment:e}),l(uAe,{segment:e})]}),fAe=()=>{const e=Ga("projectId"),{segments:t,loading:n}=Pl(),{uiConfig:r}=At(),o=nr(sa.breakpoints.down("md")),[i]=m.useState({sortBy:[{id:"createdAt"}],hiddenColumns:["description"]}),a=m.useMemo(()=>t?e?t.filter(({project:y})=>y===e):t:Array(5).fill({name:"Segment name",description:"Segment descripton",createdAt:new Date().toISOString(),createdBy:"user",projectId:"Project"}),[t,e]),s=m.useMemo(()=>hAe(r.flags.segmentContextFieldUsage),[r.flags.segmentContextFieldUsage]),{getTableProps:c,getTableBodyProps:u,headerGroups:d,rows:p,prepareRow:f,state:{globalFilter:h},setGlobalFilter:g,setHiddenColumns:v}=tn.useTable({initialState:i,columns:s,data:a,sortTypes:ai,autoResetGlobalFilter:!1,autoResetHiddenColumns:!1,autoResetSortBy:!1,disableSortRemove:!0,defaultColumn:{Cell:al}},tn.useGlobalFilter,tn.useSortBy);return Rd([{condition:o,columns:["createdAt","createdBy"]},{condition:!!e,columns:["project"]}],v,s),l(wr,{header:l(On,{title:`Segments (${p.length})`,actions:x(me,{children:[l(Eo,{initialValue:h,onChange:g}),l(On.Divider,{}),l(Jke,{})]})}),isLoading:n,children:l(Y,{condition:!n&&a.length===0,show:l(ir,{children:l(nAe,{})}),elseShow:()=>x(me,{children:[l(_s,{value:h,children:x(ca,{...c(),rowHeight:"standard",children:[l(la,{headerGroups:d}),l(aa,{...u(),children:p.map(y=>(f(y),l(Fi,{hover:!0,...y.getRowProps(),children:y.cells.map(b=>l(Ui,{...b.getCellProps(),children:b.render("Cell")}))})))})]})}),l(Y,{condition:p.length===0&&(h==null?void 0:h.length)>0,show:x(ir,{children:["No segments found matching “",h,"”"]})})]})})})},hAe=e=>[{id:"Icon",width:"1%",disableGlobalFilter:!0,disableSortBy:!0,Cell:()=>l(O1,{icon:l(bL,{color:"disabled"})})},{Header:"Name",accessor:"name",width:"60%",Cell:({row:{original:{name:t,description:n,id:r}}})=>l(Va,{title:t,to:`/segments/edit/${r}`,subtitle:n})},...e?[{Header:"Used in",width:"60%",Cell:({row:{original:t}})=>l(lD,{original:t})}]:[],{Header:"Project",accessor:"project",Cell:({value:t})=>l(Y,{condition:!!t,show:l(Va,{title:t,to:`/projects/${t}`}),elseShow:l(er,{children:"Global"})}),sortType:"alphanumeric",maxWidth:150,filterName:"project",searchable:!0},{Header:"Created at",accessor:"createdAt",minWidth:150,Cell:ah,disableGlobalFilter:!0},{Header:"Created by",accessor:"createdBy",width:"25%"},{Header:"Actions",id:"Actions",align:"center",width:"1%",disableSortBy:!0,disableGlobalFilter:!0,Cell:({row:{original:t}})=>l(pAe,{segment:t})},{accessor:"description"}],mAe=e=>fetch(e).then(vn("Feature toggle archive")).then(t=>t.json()),AD=e=>{const{data:t,error:n,mutate:r,isLoading:o}=Rn(Ot(e?`/api/admin/archive/features/${e}`:"api/admin/archive/features"),mAe,{refreshInterval:15e3});return{archivedFeatures:t==null?void 0:t.features,refetchArchived:r,loading:o,error:n}},gAe=({onRevive:e,onDelete:t,project:n})=>x(qa,{children:[l($r,{onClick:e,projectId:n,permission:CE,tooltipProps:{title:"Revive feature toggle"},children:l(EL,{})}),l($r,{permission:OL,projectId:n,tooltipProps:{title:"Delete feature toggle"},onClick:t,children:l(go,{})})]}),vAe=()=>{const{makeRequest:e,createRequest:t,errors:n,loading:r}=Yn({propagateErrors:!0});return{reviveFeature:async a=>{const s=`api/admin/archive/revive/${a}`,c=t(s,{method:"POST"});return e(c.caller,c.id)},deleteFeature:async a=>{const s=`api/admin/archive/${a}`,c=t(s,{method:"DELETE"});return e(c.caller,c.id)},errors:n,loading:r}},yAe=({value:e})=>{const{locationSettings:t}=Za(),n=gn();return e?l(er,{children:l(Et,{title:`Archived on: ${Zu(e,t.locale)}`,arrow:!0,children:l(se,{noWrap:!0,variant:"body2","data-loading":!0,children:l(E1,{date:new Date(e),title:"",live:!1})})})}):l(er,{children:l(se,{variant:"body2",color:n.palette.text.secondary,children:"not available"})})},bAe=C("p")(({theme:e})=>({marginTop:e.spacing(3)})),wAe=C(Cr)(({theme:e})=>({marginTop:e.spacing(2),width:"100%"})),SAe="I want to delete",RD=({deletedFeatures:e,projectId:t,open:n,setOpen:r,refetch:o})=>{const[i,a]=m.useState(""),{setToastData:s,setToastApiError:c}=Nt(),{deleteFeatures:u}=Vh(),d=async()=>{try{if(e.length===0)return;await u(t,e),await o(),s({type:"success",title:"Feature toggles deleted",text:`You have successfully deleted following features toggles: ${e.join(", ")}.`})}catch(h){c(ht(h))}finally{p()}},p=()=>{r(!1),a("")},f="delete-feature-toggle-confirmation-form";return x(Zn,{title:"Delete feature toggles?",open:n,primaryButtonText:"Delete feature toggles",secondaryButtonText:"Cancel",onClick:d,onClose:p,disabledPrimaryButton:SAe!==i,formId:f,children:[x(Kt,{severity:"warning",children:[l("b",{children:"Warning!"})," Before you delete a feature toggle, make sure all in-code references to that feature toggle have been removed. Otherwise, a new feature toggle with the same name could activate the old code paths."]}),x(bAe,{children:["In order to delete feature toggles, please enter the following confirmation text in the text field below:"," ",l("strong",{children:"I want to delete"})]}),l("form",{id:f,children:l(wAe,{autoFocus:!0,onChange:h=>{a(h.currentTarget.value)},value:i,placeholder:"<deletion confirmation>",label:"Deletion confirmation"})})]})},xAe=C(Le)(({theme:e})=>({display:"flex",justifyContent:"center",paddingLeft:e.spacing(2)})),CAe=({onChange:e,checked:t,title:n})=>l(xAe,{"data-testid":Jie,children:l(Ja,{onChange:e,title:n,checked:t})}),EAe=C("div")(({theme:e})=>({position:"sticky",marginTop:"auto",bottom:0,zIndex:e.zIndex.mobileStepper,pointerEvents:"none"})),TAe=C(Le)(({theme:e})=>({display:"flex",justifyContent:"center",width:"100%",flexWrap:"wrap",paddingBottom:e.spacing(2)})),kAe=C(Sr)(({theme:e})=>({display:"flex",alignItems:"center",justifyContent:"flex-end",marginTop:e.spacing(2),marginLeft:"auto",marginRight:"auto",padding:e.spacing(2,3),backgroundColor:e.palette.background.paper,border:`1px solid ${e.palette.background.alternative}`,borderRadius:e.shape.borderRadiusLarge,gap:e.spacing(1),flexWrap:"wrap",pointerEvents:"auto"})),AAe=C("span")(({theme:e})=>({background:e.palette.background.alternative,color:e.palette.common.white,padding:e.spacing(.5,1),borderRadius:e.shape.borderRadius})),RAe=C(se)(({theme:e})=>({paddingRight:e.spacing(2),marginRight:"auto"})),_Ae=({count:e,children:t})=>e===0?null:l(EAe,{"data-testid":Kie,children:l(TAe,{children:x(kAe,{elevation:4,children:[x(RAe,{children:[l(AAe,{"data-testid":Xie,children:e})," selected"]}),t]})})}),PAe=({selectedIds:e,projectId:t})=>{const{reviveFeatures:n}=Vh(),{setToastData:r,setToastApiError:o}=Nt(),{refetchArchived:i}=AD(t),[a,s]=m.useState(!1),{trackEvent:c}=xr(),u=async()=>{try{await n(t,e),await i(),r({type:"success",title:"And we're back!",text:"The feature toggles have been revived."}),c("batch_operations",{props:{eventType:"features revived"}})}catch(p){o(ht(p))}},d=async()=>{s(!0)};return x(me,{children:[l(gu,{projectId:t,permission:CE,children:({hasAccess:p})=>l(Ve,{disabled:!p,startIcon:l(EL,{}),variant:"outlined",size:"small",onClick:u,children:"Revive"})}),l(gu,{projectId:t,permission:OL,children:({hasAccess:p})=>l(Ve,{disabled:!p,startIcon:l(go,{}),variant:"outlined",size:"small",onClick:d,children:"Delete"})}),l(RD,{deletedFeatures:e,projectId:t,open:a,setOpen:s,refetch:()=>{i(),c("batch_operations",{props:{eventType:"features deleted"}})}})]})},IAe=({archivedFeatures:e=[],loading:t,refetch:n,storedParams:r,setStoredParams:o,title:i,projectId:a})=>{const s=nr(sa.breakpoints.down("md")),c=nr(sa.breakpoints.down("lg")),{setToastData:u,setToastApiError:d}=Nt(),[p,f]=m.useState(!1),[h,g]=m.useState(),[v,y]=vd(),{reviveFeature:b}=vAe(),[w,S]=m.useState(v.get("search")||""),k=m.useCallback(async H=>{try{await b(H),await n(),u({type:"success",title:"And we're back!",text:"The feature toggle has been revived."})}catch(U){d(ht(U))}},[n,b,d,u]),R=m.useMemo(()=>[...a?[{id:"Select",Header:({getToggleAllRowsSelectedProps:H})=>l(Ja,{...H()}),Cell:({row:H})=>{var U;return l(CAe,{...(U=H==null?void 0:H.getToggleRowSelectedProps)==null?void 0:U.call(H)})},maxWidth:50,disableSortBy:!0,hideInMenu:!0}]:[],{Header:"Seen",width:85,canSort:!0,Cell:JL,accessor:"lastSeenAt",align:"center"},{Header:"Type",accessor:"type",width:85,canSort:!0,Cell:t9,align:"center"},{Header:"Name",accessor:"name",searchable:!0,minWidth:100,Cell:({value:H,row:{original:U}})=>l(al,{value:H,subtitle:U.description}),sortType:"alphanumeric"},{Header:"Created",accessor:"createdAt",width:150,Cell:ah,sortType:"date"},{Header:"Archived",accessor:"archivedAt",width:150,Cell:yAe,sortType:"date"},...a?[]:[{Header:"Project ID",accessor:"project",sortType:"alphanumeric",filterName:"project",searchable:!0,maxWidth:170,Cell:({value:H})=>l(Va,{title:H,to:`/projects/${H}`})}],{Header:"State",accessor:"stale",Cell:s9,sortType:"boolean",maxWidth:120,filterName:"state",filterParsing:H=>H?"stale":"active"},{Header:"Actions",id:"Actions",align:"center",maxWidth:120,canSort:!1,Cell:({row:{original:H}})=>l(gAe,{project:H.project,onRevive:()=>k(H.name),onDelete:()=>{g(H),f(!0)}})},{accessor:"description",header:"Description",searchable:!0}],[a]),{data:T,getSearchText:A,getSearchContext:P}=Wh(R,w,e),_=m.useMemo(()=>t?h9:T,[T,t]),[I]=m.useState(()=>({sortBy:[{id:v.get("sort")||r.id,desc:v.has("order")?v.get("order")==="desc":r.desc}],hiddenColumns:["description"],selectedRowIds:{}})),$=m.useCallback(H=>H.name,[]),{headerGroups:z,rows:B,state:{sortBy:L,selectedRowIds:q},prepareRow:G,setHiddenColumns:te}=tn.useTable({columns:R,data:_,initialState:I,sortTypes:ai,autoResetHiddenColumns:!1,disableSortRemove:!0,autoResetSortBy:!1,getRowId:$},tn.useFlexLayout,tn.useSortBy,tn.useRowSelect);return Rd([{condition:s,columns:["type","createdAt"]},{condition:c,columns:["lastSeenAt","stale"]}],te,R),m.useEffect(()=>{if(t)return;const H={};H.sort=L[0].id,L[0].desc&&(H.order="desc"),w&&(H.search=w),y(H,{replace:!0}),o({id:L[0].id,desc:L[0].desc||!1})},[t,L,w]),x(me,{children:[x(wr,{isLoading:t,header:l(On,{titleElement:`${i} (${B.length<_.length?`${B.length} of ${_.length}`:_.length})`,actions:l(Eo,{initialValue:w,onChange:S,hasFilters:!0,getSearchContext:P})}),children:[l(_s,{value:A(w),children:l(S1,{rows:B,headerGroups:z,prepareRow:G})}),l(Y,{condition:B.length===0,show:()=>l(Y,{condition:(w==null?void 0:w.length)>0,show:x(ir,{children:["No feature toggles found matching “",w,"”"]}),elseShow:l(ir,{children:"None of the feature toggles were archived yet."})})}),l(RD,{deletedFeatures:[h==null?void 0:h.name],projectId:a??(h==null?void 0:h.project),open:p,setOpen:f,refetch:n})]}),l(Y,{condition:!!a,show:l(_Ae,{count:Object.keys(q).length,children:l(PAe,{selectedIds:Object.keys(q),projectId:a})})})]})},OAe={id:"createdAt"},{value:$Ae,setValue:NAe}=Oc("FeaturesArchiveTable:v1",OAe),LAe=()=>{n9("Archive");const{archivedFeatures:e=[],loading:t,refetchArchived:n}=AD();return l(IAe,{title:"Archive",archivedFeatures:e,loading:t,storedParams:$Ae,setStoredParams:NAe,refetch:n})},MAe=m.lazy(()=>import("./Playground-2b482aeb.js")),DAe=m.lazy(()=>import("./AdvancedPlayground-b8d00f81.js")),BAe=()=>{const{uiConfig:e}=At();return e.flags.advancedPlayground?l(DAe,{}):l(MAe,{})},FAe=C(Ve)(({theme:e,selected:t})=>({"&.MuiButton-root":{cursor:"pointer",height:e.spacing(6.5),border:0,backgroundColor:t?e.palette.background.paper:"transparent",borderLeft:`${e.spacing(1)} solid ${t?e.palette.background.alternative:"transparent"}`,borderRadius:e.shape.borderRadiusMedium,justifyContent:"start",transition:"background-color 0.2s ease",color:e.palette.text.primary,textAlign:"left",padding:e.spacing(2,4),fontSize:e.fontSizes.bodySize,fontWeight:t?e.fontWeight.bold:e.fontWeight.medium,lineHeight:1.2},"&:hover":{backgroundColor:e.palette.neutral.light},"&.Mui-disabled":{pointerEvents:"auto"},justifyContent:"space-between"})),zAe=({label:e,selected:t,onClick:n})=>l(FAe,{selected:!!t,onClick:n,disableRipple:!0,disableElevation:!0,disableFocusRipple:!0,disableTouchRipple:!0,fullWidth:!0,children:e}),jAe=C("div")(({theme:e})=>({display:"flex",gap:e.spacing(3),[e.breakpoints.down("md")]:{flexDirection:"column"}})),UAe=C("div")(()=>({flexGrow:1,display:"flex",flexDirection:"column"})),WAe=C("div")(({theme:e})=>({display:"flex",flexDirection:"column",gap:e.spacing(1),width:e.spacing(30),flexShrink:0,[e.breakpoints.down("md")]:{width:"100%"}})),HAe=({tabs:e,value:t,onChange:n,children:r})=>x(jAe,{children:[l(WAe,{children:e.filter(o=>!o.hidden).map(o=>l(zAe,{label:o.label,selected:o.id===t,onClick:()=>n(o)},o.id))}),l(UAe,{children:r})]}),_D=(e,t={})=>{const n=async()=>{const u=Ot(`api/admin/auth/${e}/settings`);return(await fetch(u,{method:"GET"}).then(vn("Auth settings"))).json()},r=`api/admin/auth/${e}/settings`,{data:o,error:i}=Rn(r,n,t),[a,s]=m.useState(!i&&!o),c=()=>{Kr(r)};return m.useEffect(()=>{s(!i&&!o)},[o,i]),{config:o||{},error:i,loading:a,refetch:c}},VAe=()=>{const{makeRequest:e,createRequest:t,errors:n,loading:r}=Yn({propagateErrors:!0});return{changePassword:async i=>{const a=t("api/admin/user/change-password",{method:"POST",body:JSON.stringify(i)});try{await e(a.caller,a.id)}catch(s){throw s}},errors:n,loading:r}},GAe=C("form")(({theme:e})=>({display:"flex",flexDirection:"column",gap:e.spacing(2),maxWidth:e.spacing(44)})),qAe=()=>{const{config:e,loading:t}=_D("simple"),[n,r]=m.useState(!1),{setToastData:o,setToastApiError:i}=Nt(),[a,s]=m.useState(!1),[c,u]=m.useState(),[d,p]=m.useState(),[f,h]=m.useState(""),[g,v]=m.useState(""),[y,b]=m.useState(""),{changePassword:w}=VAe(),S=async k=>{if(k.preventDefault(),f===g){if(!a)u(L9);else{r(!0),u(void 0),p(void 0);try{await w({password:f,confirmPassword:g,oldPassword:y}),o({title:"Password changed successfully",text:"Now you can sign in using your new password.",type:"success"})}catch(R){const T=ht(R);R instanceof wE?p(T):u(T),i(T)}}r(!1)}};return t?null:l(wr,{isLoading:n,header:"Change password",children:l(Y,{condition:e.disabled,show:l(Kt,{severity:"error",children:"Password based login is currently disabled for your Unleash instance."}),elseShow:x(GAe,{children:[l(M9,{password:f,callback:s,"data-loading":!0}),l(lc,{"data-loading":!0,label:"Old password",name:"oldPassword",value:y,error:!!d,helperText:d,autoComplete:"current-password",onChange:k=>b(k.target.value)}),l(lc,{"data-loading":!0,label:"Password",name:"password",value:f,error:!!c,helperText:c,autoComplete:"new-password",onChange:k=>h(k.target.value)}),l(lc,{"data-loading":!0,label:"Confirm password",name:"confirmPassword",value:g,autoComplete:"new-password",onChange:k=>v(k.target.value)}),l(B9,{"data-loading":!0,started:!!(f&&g),matchingPasswords:f===g}),l(Ve,{"data-loading":!0,variant:"contained",color:"primary",type:"submit",onClick:S,children:"Save"})]})})})},YAe="environment",KAe="project",PD="root",ID="project",XAe="root-custom",JAe="custom",QAe=[PD,ID],v8e=[PD,XAe],ZAe=[ID,JAe],eRe=10,HT=()=>{const{data:e,error:t,mutate:n}=Rn(Ot("api/admin/user/tokens"),tRe);return{tokens:e?e.pats:void 0,loading:!t&&!e,refetchTokens:()=>n(),error:t}},tRe=e=>fetch(e).then(vn("Personal API Tokens")).then(t=>t.json()),OD=()=>{const{makeRequest:e,createRequest:t,errors:n,loading:r}=Yn({propagateErrors:!0});return{createPersonalAPIToken:async c=>{const u=t("api/admin/user/tokens",{method:"POST",body:JSON.stringify(c)});try{return await(await e(u.caller,u.id)).json()}catch(d){throw d}},deletePersonalAPIToken:async c=>{const u=t(`api/admin/user/tokens/${c}`,{method:"DELETE"});try{await e(u.caller,u.id)}catch(d){throw d}},createUserPersonalAPIToken:async(c,u)=>{const d=t(`api/admin/user-admin/${c}/pat`,{method:"POST",body:JSON.stringify(u)});try{return await(await e(d.caller,d.id)).json()}catch(p){throw p}},deleteUserPersonalAPIToken:async(c,u)=>{const d=t(`api/admin/user-admin/${c}/pat/${u}`,{method:"DELETE"});try{await e(d.caller,d.id)}catch(p){throw p}},errors:n,loading:r}},nRe=e=>{const t=new Date(e);return ih(t,"yyyy-MM-dd")},rRe=e=>{const t=new Date(e);return ih(t,"yyyy-MM-dd")+"T"+ih(t,"HH:mm")},oRe=({label:e,type:t="datetime",error:n,errorText:r,min:o,max:i,value:a,onChange:s,...c})=>{const u=t==="datetime"?rRe:nRe;return l(Sn,{type:t==="datetime"?"datetime-local":"date",size:"small",variant:"outlined",label:e,error:n,helperText:r,value:u(a.toISOString()),onChange:p=>{const f=q9(p.target.value);s(f??a)},FormHelperTextProps:{["data-testid"]:D6},inputProps:{min:o&&u(o.toISOString()),max:i&&u(i.toISOString())},...c})},I3=C("p")(({theme:e})=>({color:e.palette.text.secondary,marginBottom:e.spacing(1)})),iRe=C(Cr)(({theme:e})=>({width:"100%",maxWidth:e.spacing(50),marginBottom:e.spacing(2)})),aRe=C("div")(({theme:e,custom:t})=>({display:"flex",alignItems:t?"start":"center",gap:e.spacing(1.5),marginBottom:e.spacing(2),[e.breakpoints.down("sm")]:{flexDirection:"column",alignItems:"flex-start"}})),sRe=C(JE)(({theme:e})=>({minWidth:e.spacing(20),marginRight:e.spacing(.5),[e.breakpoints.down("sm")]:{width:e.spacing(50)}})),lRe=C(oRe)(({theme:e})=>({width:e.spacing(28),[e.breakpoints.down("sm")]:{width:e.spacing(50)}})),cRe=C(Kt)(({theme:e})=>({marginBottom:e.spacing(2),maxWidth:e.spacing(50)}));var $D=(e=>(e["7DAYS"]="7d",e["30DAYS"]="30d",e["60DAYS"]="60d",e.NEVER="never",e.CUSTOM="custom",e))($D||{});const ND=[{key:"7d",days:7,label:"7 days"},{key:"30d",days:30,label:"30 days"},{key:"60d",days:60,label:"60 days"},{key:"never",label:"Never"},{key:"custom",label:"Custom"}],Px=e=>{const t=new Date,n=ND.find(({key:r})=>r===e);return e==="never"?t.setFullYear(t.getFullYear()+1e3):e==="custom"?t.setMinutes(t.getMinutes()+30):n!=null&&n.days&&t.setDate(t.getDate()+n.days),t},uRe=({description:e,setDescription:t,isDescriptionUnique:n,expiration:r,setExpiration:o,expiresAt:i,setExpiresAt:a,errors:s,setErrors:c})=>{const{locationSettings:u}=Za(),d=v=>{c(y=>({...y,[v]:void 0}))},p=(v,y)=>{c(b=>({...b,[v]:y}))};m.useEffect(()=>{d("expiresAt"),a(Px(r))},[r]);const f=v=>{d("description"),n&&!n(v)&&p("description","A token with that description already exists."),t(v)},h=r==="custom",g=i.getFullYear()>new Date().getFullYear()+100;return x(me,{children:[l(I3,{children:"Describe what this token will be used for"}),l(iRe,{autoFocus:!0,label:"Description",error:!!s.description,errorText:s.description,value:e,onChange:v=>f(v.target.value),required:!0}),l(I3,{children:"Token expiration date"}),x(aRe,{custom:h,children:[l(sRe,{name:"expiration",id:"expiration",label:"Token will expire in",value:r,onChange:v=>o(v.target.value),options:ND}),l(Y,{condition:h,show:()=>l(lRe,{label:"Date",value:i,onChange:v=>{d("expiresAt"),v<new Date&&p("expiresAt","Invalid date, must be in the future"),a(v)},min:new Date,error:!!s.expiresAt,errorText:s.expiresAt,required:!0}),elseShow:l(Y,{condition:g,show:x(se,{variant:"body2",children:["The token will ",l("strong",{children:"never"})," ","expire!"]}),elseShow:()=>x(se,{variant:"body2",children:["Token will expire on"," ",l("strong",{children:Zu(i,u.locale)})]})})})]}),l(Y,{condition:g,show:l(cRe,{severity:"warning",children:"We strongly recommend that you set an expiration date for your token to help keep your information secure."})})]})},dRe=C("form")(()=>({display:"flex",flexDirection:"column",height:"100%"})),pRe=C("div")(({theme:e})=>({marginTop:"auto",display:"flex",justifyContent:"flex-end",[e.breakpoints.down("sm")]:{marginTop:e.spacing(4)}})),fRe=C(Ve)(({theme:e})=>({marginLeft:e.spacing(3)})),pg=$D["30DAYS"],hRe=({open:e,setOpen:t,newToken:n})=>{const{tokens:r,refetchTokens:o}=HT(),{createPersonalAPIToken:i,loading:a}=OD(),{setToastApiError:s}=Nt(),{uiConfig:c}=At(),[u,d]=m.useState(""),[p,f]=m.useState(pg),[h,g]=m.useState(Px(pg)),[v,y]=m.useState({});m.useEffect(()=>{d(""),f(pg),g(Px(pg)),y({})},[e]);const b=()=>({description:u,expiresAt:h}),w=async A=>{A.preventDefault();try{const P=await i(b());n(P),o(),t(!1)}catch(P){s(ht(P))}},S=()=>`curl --location --request POST '${c.unleashUrl}/api/admin/user/tokens' \\
356
+ --data-raw '${JSON.stringify(L(),void 0,2)}'`,H=Q=>Q.length,U=Q=>!(o!=null&&o.some(ae=>ae.name===Q)),j=H(h)&&U(h)&&S.length,O=Q=>{$("name"),U(Q)||z("name","An environment with that name already exists."),g(Q)},D=u.map(Q=>({value:Q.id,label:Q.name}));return l(Q1,{open:t,onClose:()=>{n(!1)},label:`Clone ${e.name} environment`,children:l(Xr,{loading:s,modal:!0,title:`Clone ${e.name} environment`,description:"Cloning an environment will clone all feature toggles and their configuration (activation strategies, segments, status, etc) into a new environment.",documentationLink:"https://docs.getunleash.io/reference/environments#cloning-environments",documentationLinkLabel:"Cloning environments documentation",formatApiCode:te,children:x(Cke,{onSubmit:G,children:[x("div",{children:[l(tu,{children:"What is your new environment name? (Can't be changed later)"}),l(Eke,{autoFocus:!0,label:"Environment name",error:!!_.name,errorText:_.name,value:h,onChange:Q=>O(Q.target.value),required:!0}),l(tu,{children:"What type of environment do you want to create?"}),l(G9,{onChange:Q=>y(Q.currentTarget.value),value:v}),x(tu,{children:["Select which projects you want to clone the environment configuration in?",l(td,{tooltip:"The cloned environment will keep the feature toggle state for the selected projects, where it will be enabled by default."})]}),l(yke,{projects:b,setProjects:w}),l(tu,{children:"Keep the users permission for this environment?"}),l(vw,{children:"If you turn it off, the permission for this environment across all projects and feature toggles will remain only for admin and editor roles."}),l(Hr,{label:R?"Yes":"No",control:l(Qa,{onChange:Q=>T(Q.target.checked),checked:R})}),x(Tke,{children:[l(tu,{children:"API Token"}),x(vw,{children:["In order to connect your SDKs to your newly cloned environment, you will also need an API token."," ",l(Vr,{href:"https://docs.getunleash.io/reference/api-tokens-and-client-keys",target:"_blank",rel:"noreferrer",children:"Read more about API tokens"}),"."]}),l(As,{children:x(K2,{value:A,onChange:Q=>P(Q.target.value),name:"api-token-generation",children:[l(Hr,{value:"later",control:l(oc,{}),label:"I want to generate an API token later"}),l(Hr,{value:"now",control:l(oc,{}),label:"Generate an API token now"})]})}),x(kke,{children:[l(vw,{children:"A new Server-side SDK (CLIENT) API token will be generated for the cloned environment, so you can get started right away."}),l(Y,{condition:A==="now",show:x(me,{children:[l(tu,{children:"Which projects do you want this token to give access to?"}),l(Ske,{options:D,defaultValue:S,onChange:k,error:_.projects,onFocus:()=>$("projects")})]})})]})]})]}),x(Ake,{children:[l(Ve,{type:"submit",variant:"contained",color:"primary",disabled:!j,children:"Clone environment"}),l(Rke,{onClick:()=>{n(!1)},children:"Cancel"})]})]})})})};var WT={},Pke=Tn;Object.defineProperty(WT,"__esModule",{value:!0});var CD=WT.default=void 0,Ike=Pke(kn()),Oke=An,$ke=(0,Ike.default)((0,Oke.jsx)("path",{d:"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm-1 4 6 6v10c0 1.1-.9 2-2 2H7.99C6.89 23 6 22.1 6 21l.01-14c0-1.1.89-2 1.99-2h7zm-1 7h5.5L14 6.5V12z"}),"FileCopy");CD=WT.default=$ke;const ED=({token:e})=>{const{setToastData:t}=Nt();return x(Le,{sx:r=>({backgroundColor:r.palette.background.elevation2,padding:r.spacing(4),borderRadius:`${r.shape.borderRadius}px`,marginTop:r.spacing(2),display:"flex",justifyContent:"space-between",alignItems:"center",wordBreak:"break-all"}),children:[e,l(Et,{title:"Copy token",arrow:!0,children:l(Ht,{onClick:()=>{K9(e)?t({type:"success",title:"Token copied to clipboard"}):t({type:"error",title:"Could not copy token"})},size:"large",children:l(CD,{})})})]})},Nke=({open:e,setOpen:t,token:n})=>x(Zn,{open:e,secondaryButtonText:"Close",onClose:(r,o)=>{o||t(!1)},title:"New API token created",children:[l(se,{variant:"body1",children:"Your new token has been created successfully."}),x(se,{variant:"body1",children:['You can also find it as "',l("strong",{children:n==null?void 0:n.username}),'" in the'," ",l(cn,{to:"/admin/api",children:"API access page"}),"."]}),l(ED,{token:(n==null?void 0:n.secret)||""})]}),Lke=C(Le)(({theme:e})=>({display:"flex",alignItems:"center",justifyContent:"flex-end",paddingLeft:e.spacing(.5),minWidth:e.spacing(6.5),cursor:"grab"})),Mke=C(Ht)(({theme:e})=>({padding:e.spacing(1.5,0),cursor:"inherit",transition:"color 0.2s ease-in-out",color:e.palette.action.active})),Dke=C(yL,{shouldForwardProp:e=>e!=="deprecated"})(({theme:e,deprecated:t})=>({color:t?e.palette.neutral.border:e.palette.primary.main})),TD=({environment:e})=>x(Lke,{children:[l(Mke,{size:"large",disableRipple:!0,className:"drag-icon",children:l(fle,{titleAccess:"Drag to reorder"})}),l(Dke,{deprecated:!e.enabled})]}),Bke=C(ca)(({theme:e})=>({marginTop:e.spacing(3)})),Fke=C("p",{shouldForwardProp:e=>e!=="warning"})(({theme:e,warning:t})=>({color:t?e.palette.error.dark:e.palette.text.primary})),kD=({environment:e,warnEnabledToggles:t})=>{const n=m.useMemo(()=>[{id:"Icon",width:"1%",Cell:({row:{original:c}})=>l(TD,{environment:c})},{Header:"Name",accessor:"name",Cell:er},{Header:"Type",accessor:"type",Cell:er},{Header:"Visible in",accessor:c=>c.projectCount===1?"1 project":`${c.projectCount} projects`,Cell:({row:{original:c},value:u})=>x(er,{children:[u,l(Y,{condition:!!t,show:l(Fke,{warning:!!(c.enabledToggleCount&&c.enabledToggleCount>0),children:c.enabledToggleCount===1?"1 toggle enabled":`${c.enabledToggleCount} toggles enabled`})})]})}],[t]),{getTableProps:r,getTableBodyProps:o,headerGroups:i,rows:a,prepareRow:s}=tn.useTable({columns:n,data:[e],disableSortBy:!0});return x(Bke,{...r(),rowHeight:"compact",children:[l(la,{headerGroups:i}),l(aa,{...o(),children:a.map(c=>(s(c),l(Fi,{hover:!0,...c.getRowProps(),children:c.cells.map(u=>l(Ui,{...u.getCellProps(),children:u.render("Cell")}))})))})]})},zke=({environment:e,open:t,setOpen:n,onConfirm:r})=>{const{enabled:o}=e,i=o?"Deprecate":"Undeprecate";return x(Zn,{title:`${i} environment?`,open:t,primaryButtonText:i,secondaryButtonText:"Close",onClick:r,onClose:()=>{n(!1)},children:[l(Y,{condition:o,show:l(Kt,{severity:"info",children:"Deprecating an environment will mark it as deprecated. Deprecated environments are set as not visible by default for new projects. Project owners are still able to override this setting in the project. This environment will still be visible in any current projects."}),elseShow:l(Kt,{severity:"info",children:"Undeprecating an environment will no longer mark it as deprecated. An undeprecated environment will be set as visible by default for new projects."})}),l(kD,{environment:e})]})},jke=C("p")(({theme:e})=>({marginTop:e.spacing(3),marginBottom:e.spacing(1.5)})),Uke=C(Cr)(()=>({width:"100%"})),Wke=({environment:e,open:t,setOpen:n,onConfirm:r})=>{const[o,i]=m.useState("");return m.useEffect(()=>{i("")},[t]),x(Zn,{title:"Delete environment?",open:t,primaryButtonText:"Delete environment",disabledPrimaryButton:e.name!==o,secondaryButtonText:"Close",onClick:r,onClose:()=>{n(!1)},children:[x(Kt,{severity:"error",children:[l("strong",{children:"Danger! This action is not reversible. Please proceed with caution."})," ","Deleting this environment will result in removing all strategies that are active in this environment across all feature toggles."]}),l(kD,{environment:e,warnEnabledToggles:!0}),x(jke,{children:["In order to delete this environment, please enter the id of the environment in the textfield below:"," ",l("strong",{children:e.name})]}),l(Uke,{label:"Environment name",value:o,onChange:a=>i(a.target.value)})]})},Hke=({environment:e})=>{const t=gt(),{setToastApiError:n,setToastData:r}=Nt(),{environments:o,refetchEnvironments:i}=_d(),{refetch:a}=XE(),{deleteEnvironment:s,toggleEnvironmentOn:c,toggleEnvironmentOff:u}=$d(),[d,p]=m.useState(!1),[f,h]=m.useState(!1),[g,v]=m.useState(!1),[y,b]=m.useState(!1),[w,S]=m.useState();return x(qa,{children:[l(pke,{environment:e,onEdit:()=>t(`/environments/${e.name}`),onDeprecateToggle:()=>h(!0),onClone:()=>{o.length<Mv?v(!0):r({type:"error",title:"Environment limit reached",text:`You have reached the maximum number of environments (${Mv}). Please reach out if you need more.`})},onDelete:()=>p(!0)}),l(Wke,{environment:e,open:d,setOpen:p,onConfirm:async()=>{try{await s(e.name),a(),r({type:"success",title:"Environment deleted",text:`You have successfully deleted the ${e.name} environment.`})}catch(T){n(ht(T))}finally{p(!1),await i()}}}),l(zke,{environment:e,open:f,setOpen:h,onConfirm:async()=>{try{e.enabled?(await u(e.name),r({type:"success",title:"Environment deprecated successfully"})):(await c(e.name),r({type:"success",title:"Environment undeprecated successfully"}))}catch(T){n(ht(T))}finally{h(!1),await i()}}}),l(_ke,{environment:e,open:g,setOpen:v,newToken:T=>{S(T),b(!0)}}),l(Nke,{open:y,setOpen:b,token:w})]})},Vke=C(Le)(({theme:e})=>({display:"flex",flexDirection:"column",justifyContent:"center",wordBreak:"break-word",padding:e.spacing(1,2)})),Gke=C("span")(({theme:e})=>({overflow:"hidden",textOverflow:"ellipsis",display:"-webkit-box",WebkitBoxOrient:"vertical",WebkitLineClamp:"1",lineClamp:"1"})),qke=C("span")(({theme:e})=>({color:e.palette.text.secondary,overflow:"hidden",textOverflow:"ellipsis",fontSize:"inherit",WebkitLineClamp:"1",lineClamp:"1",display:"-webkit-box",WebkitBoxOrient:"vertical"})),al=({value:e,subtitle:t,afterTitle:n})=>{const{searchQuery:r}=Rl();return x(Vke,{children:[x(Gke,{style:{WebkitLineClamp:t?1:2,lineClamp:t?1:2},"data-loading":!0,children:[l(Ha,{search:r,children:e}),n]}),l(Y,{condition:!!t,show:()=>l(qke,{"data-loading":!0,children:l(Ha,{search:r,children:t})})})]})},Yke=C(Kt)(({theme:e})=>({marginBottom:e.spacing(4)})),Kke=()=>{const{changeSortOrder:e}=$d(),{setToastApiError:t}=Nt(),{environments:n,mutateEnvironments:r}=_d(),o=m.useCallback(async(y,b,w=!1)=>{const S=[...n],k=S[y];if(S.splice(y,1),S.splice(b,0,k),await r(S),w)try{await e(uve(S))}catch(R){t(ht(R))}},[e,n,r,t]),{getTableProps:i,getTableBodyProps:a,headerGroups:s,rows:c,prepareRow:u,state:{globalFilter:d},setGlobalFilter:p}=tn.useTable({columns:Xke,data:n,disableSortBy:!0},tn.useGlobalFilter),h=x(me,{children:[l(Eo,{initialValue:d,onChange:p}),l(On.Divider,{}),l(tke,{})]});let g=c.length;const v=l(On,{title:`Environments (${g})`,actions:h});return x(wr,{header:v,children:[l(Yke,{severity:"info",children:"This is the order of environments that you have today in each feature toggle. Rearranging them here will change also the order inside each feature toggle."}),l(_s,{value:d,children:x(ca,{...i(),rowHeight:"compact",children:[l(la,{headerGroups:s}),l(aa,{...a(),children:c.map(y=>(u(y),l(ike,{row:y,moveListItem:o},y.original.name)))})]})}),l(Y,{condition:c.length===0,show:l(Y,{condition:(d==null?void 0:d.length)>0,show:x(ir,{children:["No environments found matching “",d,"”"]}),elseShow:l(ir,{children:"No environments available. Get started by adding one."})})})]})},Xke=[{id:"Icon",width:"1%",Cell:({row:{original:e}})=>l(TD,{environment:e}),disableGlobalFilter:!0,isDragHandle:!0},{Header:"Name",accessor:"name",Cell:({row:{original:e}})=>l(lke,{environment:e}),minWidth:350},{Header:"Type",accessor:"type",Cell:al},{Header:"Visible in",accessor:e=>e.projectCount===1?"1 project":`${e.projectCount} projects`,Cell:er},{Header:"API Tokens",accessor:e=>e.apiTokenCount===1?"1 token":`${e.apiTokenCount} tokens`,Cell:er},{Header:"Actions",id:"Actions",align:"center",width:"1%",Cell:({row:{original:e}})=>l(Hke,{environment:e}),disableGlobalFilter:!0}],Jke=()=>{const e=Ga("projectId"),t=gt();return l(fi,{onClick:()=>{t(e?`/projects/${e}/settings/segments/create`:"/segments/create")},permission:[w1,TE],projectId:e,"data-testid":Sie,children:"New segment"})},Qke=C("div")(({theme:e})=>({display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",margin:e.spacing(6),marginLeft:"auto",marginRight:"auto"})),Zke=C(se)(({theme:e})=>({fontSize:e.fontSizes.mainHeader,marginBottom:e.spacing(2.5)})),eAe=C("p")(({theme:e})=>({fontSize:e.fontSizes.smallBody,color:e.palette.text.secondary,maxWidth:515,marginBottom:e.spacing(2.5),textAlign:"center"})),tAe=C(cn)(({theme:e})=>({textDecoration:"none",color:e.palette.primary.main,fontWeight:e.fontWeight.bold})),nAe=()=>{const{hasAccess:e}=m.useContext(Ao);return x(Qke,{children:[l(Zke,{children:"No segments yet!"}),l(eAe,{children:"Segment makes it easy for you to define who should be exposed to your feature. The segment is often a collection of constraints and can be reused."}),l(Y,{condition:e(w1),show:l(tAe,{to:"/segments/create",children:"Create your first segment"})})]})},rAe=C(Cr)(({theme:e})=>({marginTop:e.spacing(2)})),oAe=({segment:e,open:t,onClose:n,onRemove:r})=>{const[o,i]=m.useState(""),a=u=>i(u.currentTarget.value),s=()=>{n(),i("")},c="delete-segment-confirmation-form";return x(Zn,{title:"Are you sure you want to delete this segment?",open:t,primaryButtonText:"Delete segment",secondaryButtonText:"Cancel",onClick:()=>{r(),i("")},disabledPrimaryButton:(e==null?void 0:e.name)!==o,onClose:s,formId:c,children:[x("p",{children:["In order to delete this segment, please enter the name of the segment in the field below: ",l("strong",{children:e==null?void 0:e.name})]}),l("form",{id:c,children:l(rAe,{autoFocus:!0,onChange:a,value:o,label:"Segment name","data-testid":Oie})})]})},iAe=C("ul")({marginBottom:0}),aAe=C(cn)(({theme:e})=>({textDecoration:"none",color:e.palette.primary.main,fontWeight:e.fontWeight.bold})),sAe=({segment:e,open:t,onClose:n,strategies:r})=>x(Zn,{title:"You can't delete a segment that's currently in use",open:t,primaryButtonText:"OK",onClick:n,children:[x("p",{children:["The following feature toggles are using the"," ",l("strong",{children:e.name})," segment for their strategies:"]}),l(iAe,{children:r==null?void 0:r.map(o=>l("li",{children:x(aAe,{to:IT(o.projectId,o.featureName,o.environment,o.id),target:"_blank",rel:"noopener noreferrer",children:[o.featureName," ",lAe(o)]})},o.id))})]}),lAe=e=>e.strategyName?`(${Ss(e.strategyName)})`:"",cAe=({segment:e,open:t,onClose:n,onRemove:r})=>{const{strategies:o,loading:i}=yD(e.id),a=(o==null?void 0:o.length)===0;return i?null:l(Y,{condition:a,show:l(oAe,{segment:e,open:t,onClose:n,onRemove:r}),elseShow:l(sAe,{segment:e,open:t,onClose:n,strategies:o})})},uAe=({segment:e})=>{const t=Ga("projectId"),{refetchSegments:n}=Pl(),{deleteSegment:r}=FT(),{setToastData:o,setToastApiError:i}=Nt(),[a,s]=m.useState(!1),c=async()=>{try{await r(e.id),await n(),o({type:"success",title:"Successfully deleted segment"})}catch(u){i(ht(u))}finally{s(!1)}};return x(me,{children:[l($r,{onClick:()=>s(!0),permission:[Jle,TE],projectId:t,tooltipProps:{title:"Remove segment"},"data-testid":`${Iie}_${e.name}`,children:l(go,{"data-loading":!0})}),l(Y,{condition:a,show:()=>l(cAe,{segment:e,open:a,onClose:()=>s(!1),onRemove:c})})]})},dAe=({segment:e})=>{const t=Ga("projectId"),n=gt();return l($r,{onClick:()=>{n(t?`/projects/${t}/settings/segments/edit/${e.id}`:`/segments/edit/${e.id}`)},permission:[EE,TE],projectId:t,tooltipProps:{title:"Edit segment"},children:l(ji,{"data-loading":!0})})},pAe=({segment:e})=>x(qa,{children:[l(dAe,{segment:e}),l(uAe,{segment:e})]}),fAe=()=>{const e=Ga("projectId"),{segments:t,loading:n}=Pl(),{uiConfig:r}=At(),o=nr(sa.breakpoints.down("md")),[i]=m.useState({sortBy:[{id:"createdAt"}],hiddenColumns:["description"]}),a=m.useMemo(()=>t?e?t.filter(({project:y})=>y===e):t:Array(5).fill({name:"Segment name",description:"Segment descripton",createdAt:new Date().toISOString(),createdBy:"user",projectId:"Project"}),[t,e]),s=m.useMemo(()=>hAe(r.flags.segmentContextFieldUsage),[r.flags.segmentContextFieldUsage]),{getTableProps:c,getTableBodyProps:u,headerGroups:d,rows:p,prepareRow:f,state:{globalFilter:h},setGlobalFilter:g,setHiddenColumns:v}=tn.useTable({initialState:i,columns:s,data:a,sortTypes:ai,autoResetGlobalFilter:!1,autoResetHiddenColumns:!1,autoResetSortBy:!1,disableSortRemove:!0,defaultColumn:{Cell:al}},tn.useGlobalFilter,tn.useSortBy);return Rd([{condition:o,columns:["createdAt","createdBy"]},{condition:!!e,columns:["project"]}],v,s),l(wr,{header:l(On,{title:`Segments (${p.length})`,actions:x(me,{children:[l(Eo,{initialValue:h,onChange:g}),l(On.Divider,{}),l(Jke,{})]})}),isLoading:n,children:l(Y,{condition:!n&&a.length===0,show:l(ir,{children:l(nAe,{})}),elseShow:()=>x(me,{children:[l(_s,{value:h,children:x(ca,{...c(),rowHeight:"standard",children:[l(la,{headerGroups:d}),l(aa,{...u(),children:p.map(y=>(f(y),l(Fi,{hover:!0,...y.getRowProps(),children:y.cells.map(b=>l(Ui,{...b.getCellProps(),children:b.render("Cell")}))})))})]})}),l(Y,{condition:p.length===0&&(h==null?void 0:h.length)>0,show:x(ir,{children:["No segments found matching “",h,"”"]})})]})})})},hAe=e=>[{id:"Icon",width:"1%",disableGlobalFilter:!0,disableSortBy:!0,Cell:()=>l(O1,{icon:l(bL,{color:"disabled"})})},{Header:"Name",accessor:"name",width:"60%",Cell:({row:{original:{name:t,description:n,id:r}}})=>l(Va,{title:t,to:`/segments/edit/${r}`,subtitle:n})},...e?[{Header:"Used in",width:"60%",Cell:({row:{original:t}})=>l(lD,{original:t})}]:[],{Header:"Project",accessor:"project",Cell:({value:t})=>l(Y,{condition:!!t,show:l(Va,{title:t,to:`/projects/${t}`}),elseShow:l(er,{children:"Global"})}),sortType:"alphanumeric",maxWidth:150,filterName:"project",searchable:!0},{Header:"Created at",accessor:"createdAt",minWidth:150,Cell:ah,disableGlobalFilter:!0},{Header:"Created by",accessor:"createdBy",width:"25%"},{Header:"Actions",id:"Actions",align:"center",width:"1%",disableSortBy:!0,disableGlobalFilter:!0,Cell:({row:{original:t}})=>l(pAe,{segment:t})},{accessor:"description"}],mAe=e=>fetch(e).then(vn("Feature toggle archive")).then(t=>t.json()),AD=e=>{const{data:t,error:n,mutate:r,isLoading:o}=Rn(Ot(e?`/api/admin/archive/features/${e}`:"api/admin/archive/features"),mAe,{refreshInterval:15e3});return{archivedFeatures:t==null?void 0:t.features,refetchArchived:r,loading:o,error:n}},gAe=({onRevive:e,onDelete:t,project:n})=>x(qa,{children:[l($r,{onClick:e,projectId:n,permission:CE,tooltipProps:{title:"Revive feature toggle"},children:l(EL,{})}),l($r,{permission:OL,projectId:n,tooltipProps:{title:"Delete feature toggle"},onClick:t,children:l(go,{})})]}),vAe=()=>{const{makeRequest:e,createRequest:t,errors:n,loading:r}=Yn({propagateErrors:!0});return{reviveFeature:async a=>{const s=`api/admin/archive/revive/${a}`,c=t(s,{method:"POST"});return e(c.caller,c.id)},deleteFeature:async a=>{const s=`api/admin/archive/${a}`,c=t(s,{method:"DELETE"});return e(c.caller,c.id)},errors:n,loading:r}},yAe=({value:e})=>{const{locationSettings:t}=Za(),n=gn();return e?l(er,{children:l(Et,{title:`Archived on: ${Zu(e,t.locale)}`,arrow:!0,children:l(se,{noWrap:!0,variant:"body2","data-loading":!0,children:l(E1,{date:new Date(e),title:"",live:!1})})})}):l(er,{children:l(se,{variant:"body2",color:n.palette.text.secondary,children:"not available"})})},bAe=C("p")(({theme:e})=>({marginTop:e.spacing(3)})),wAe=C(Cr)(({theme:e})=>({marginTop:e.spacing(2),width:"100%"})),SAe="I want to delete",RD=({deletedFeatures:e,projectId:t,open:n,setOpen:r,refetch:o})=>{const[i,a]=m.useState(""),{setToastData:s,setToastApiError:c}=Nt(),{deleteFeatures:u}=Vh(),d=async()=>{try{if(e.length===0)return;await u(t,e),await o(),s({type:"success",title:"Feature toggles deleted",text:`You have successfully deleted following features toggles: ${e.join(", ")}.`})}catch(h){c(ht(h))}finally{p()}},p=()=>{r(!1),a("")},f="delete-feature-toggle-confirmation-form";return x(Zn,{title:"Delete feature toggles?",open:n,primaryButtonText:"Delete feature toggles",secondaryButtonText:"Cancel",onClick:d,onClose:p,disabledPrimaryButton:SAe!==i,formId:f,children:[x(Kt,{severity:"warning",children:[l("b",{children:"Warning!"})," Before you delete a feature toggle, make sure all in-code references to that feature toggle have been removed. Otherwise, a new feature toggle with the same name could activate the old code paths."]}),x(bAe,{children:["In order to delete feature toggles, please enter the following confirmation text in the text field below:"," ",l("strong",{children:"I want to delete"})]}),l("form",{id:f,children:l(wAe,{autoFocus:!0,onChange:h=>{a(h.currentTarget.value)},value:i,placeholder:"<deletion confirmation>",label:"Deletion confirmation"})})]})},xAe=C(Le)(({theme:e})=>({display:"flex",justifyContent:"center",paddingLeft:e.spacing(2)})),CAe=({onChange:e,checked:t,title:n})=>l(xAe,{"data-testid":Jie,children:l(Ja,{onChange:e,title:n,checked:t})}),EAe=C("div")(({theme:e})=>({position:"sticky",marginTop:"auto",bottom:0,zIndex:e.zIndex.mobileStepper,pointerEvents:"none"})),TAe=C(Le)(({theme:e})=>({display:"flex",justifyContent:"center",width:"100%",flexWrap:"wrap",paddingBottom:e.spacing(2)})),kAe=C(Sr)(({theme:e})=>({display:"flex",alignItems:"center",justifyContent:"flex-end",marginTop:e.spacing(2),marginLeft:"auto",marginRight:"auto",padding:e.spacing(2,3),backgroundColor:e.palette.background.paper,border:`1px solid ${e.palette.background.alternative}`,borderRadius:e.shape.borderRadiusLarge,gap:e.spacing(1),flexWrap:"wrap",pointerEvents:"auto"})),AAe=C("span")(({theme:e})=>({background:e.palette.background.alternative,color:e.palette.common.white,padding:e.spacing(.5,1),borderRadius:e.shape.borderRadius})),RAe=C(se)(({theme:e})=>({paddingRight:e.spacing(2),marginRight:"auto"})),_Ae=({count:e,children:t})=>e===0?null:l(EAe,{"data-testid":Kie,children:l(TAe,{children:x(kAe,{elevation:4,children:[x(RAe,{children:[l(AAe,{"data-testid":Xie,children:e})," selected"]}),t]})})}),PAe=({selectedIds:e,projectId:t})=>{const{reviveFeatures:n}=Vh(),{setToastData:r,setToastApiError:o}=Nt(),{refetchArchived:i}=AD(t),[a,s]=m.useState(!1),{trackEvent:c}=xr(),u=async()=>{try{await n(t,e),await i(),r({type:"success",title:"And we're back!",text:"The feature toggles have been revived."}),c("batch_operations",{props:{eventType:"features revived"}})}catch(p){o(ht(p))}},d=async()=>{s(!0)};return x(me,{children:[l(gu,{projectId:t,permission:CE,children:({hasAccess:p})=>l(Ve,{disabled:!p,startIcon:l(EL,{}),variant:"outlined",size:"small",onClick:u,children:"Revive"})}),l(gu,{projectId:t,permission:OL,children:({hasAccess:p})=>l(Ve,{disabled:!p,startIcon:l(go,{}),variant:"outlined",size:"small",onClick:d,children:"Delete"})}),l(RD,{deletedFeatures:e,projectId:t,open:a,setOpen:s,refetch:()=>{i(),c("batch_operations",{props:{eventType:"features deleted"}})}})]})},IAe=({archivedFeatures:e=[],loading:t,refetch:n,storedParams:r,setStoredParams:o,title:i,projectId:a})=>{const s=nr(sa.breakpoints.down("md")),c=nr(sa.breakpoints.down("lg")),{setToastData:u,setToastApiError:d}=Nt(),[p,f]=m.useState(!1),[h,g]=m.useState(),[v,y]=vd(),{reviveFeature:b}=vAe(),[w,S]=m.useState(v.get("search")||""),k=m.useCallback(async H=>{try{await b(H),await n(),u({type:"success",title:"And we're back!",text:"The feature toggle has been revived."})}catch(U){d(ht(U))}},[n,b,d,u]),R=m.useMemo(()=>[...a?[{id:"Select",Header:({getToggleAllRowsSelectedProps:H})=>l(Ja,{...H()}),Cell:({row:H})=>{var U;return l(CAe,{...(U=H==null?void 0:H.getToggleRowSelectedProps)==null?void 0:U.call(H)})},maxWidth:50,disableSortBy:!0,hideInMenu:!0}]:[],{Header:"Seen",width:85,canSort:!0,Cell:JL,accessor:"lastSeenAt",align:"center"},{Header:"Type",accessor:"type",width:85,canSort:!0,Cell:t9,align:"center"},{Header:"Name",accessor:"name",searchable:!0,minWidth:100,Cell:({value:H,row:{original:U}})=>l(al,{value:H,subtitle:U.description}),sortType:"alphanumeric"},{Header:"Created",accessor:"createdAt",width:150,Cell:ah,sortType:"date"},{Header:"Archived",accessor:"archivedAt",width:150,Cell:yAe,sortType:"date"},...a?[]:[{Header:"Project ID",accessor:"project",sortType:"alphanumeric",filterName:"project",searchable:!0,maxWidth:170,Cell:({value:H})=>l(Va,{title:H,to:`/projects/${H}`})}],{Header:"State",accessor:"stale",Cell:s9,sortType:"boolean",maxWidth:120,filterName:"state",filterParsing:H=>H?"stale":"active"},{Header:"Actions",id:"Actions",align:"center",maxWidth:120,canSort:!1,Cell:({row:{original:H}})=>l(gAe,{project:H.project,onRevive:()=>k(H.name),onDelete:()=>{g(H),f(!0)}})},{accessor:"description",header:"Description",searchable:!0}],[a]),{data:T,getSearchText:A,getSearchContext:P}=Wh(R,w,e),_=m.useMemo(()=>t?h9:T,[T,t]),[I]=m.useState(()=>({sortBy:[{id:v.get("sort")||r.id,desc:v.has("order")?v.get("order")==="desc":r.desc}],hiddenColumns:["description"],selectedRowIds:{}})),$=m.useCallback(H=>H.name,[]),{headerGroups:z,rows:B,state:{sortBy:L,selectedRowIds:q},prepareRow:G,setHiddenColumns:te}=tn.useTable({columns:R,data:_,initialState:I,sortTypes:ai,autoResetHiddenColumns:!1,disableSortRemove:!0,autoResetSortBy:!1,getRowId:$},tn.useFlexLayout,tn.useSortBy,tn.useRowSelect);return Rd([{condition:s,columns:["type","createdAt"]},{condition:c,columns:["lastSeenAt","stale"]}],te,R),m.useEffect(()=>{if(t)return;const H={};H.sort=L[0].id,L[0].desc&&(H.order="desc"),w&&(H.search=w),y(H,{replace:!0}),o({id:L[0].id,desc:L[0].desc||!1})},[t,L,w]),x(me,{children:[x(wr,{isLoading:t,header:l(On,{titleElement:`${i} (${B.length<_.length?`${B.length} of ${_.length}`:_.length})`,actions:l(Eo,{initialValue:w,onChange:S,hasFilters:!0,getSearchContext:P})}),children:[l(_s,{value:A(w),children:l(S1,{rows:B,headerGroups:z,prepareRow:G})}),l(Y,{condition:B.length===0,show:()=>l(Y,{condition:(w==null?void 0:w.length)>0,show:x(ir,{children:["No feature toggles found matching “",w,"”"]}),elseShow:l(ir,{children:"None of the feature toggles were archived yet."})})}),l(RD,{deletedFeatures:[h==null?void 0:h.name],projectId:a??(h==null?void 0:h.project),open:p,setOpen:f,refetch:n})]}),l(Y,{condition:!!a,show:l(_Ae,{count:Object.keys(q).length,children:l(PAe,{selectedIds:Object.keys(q),projectId:a})})})]})},OAe={id:"createdAt"},{value:$Ae,setValue:NAe}=Oc("FeaturesArchiveTable:v1",OAe),LAe=()=>{n9("Archive");const{archivedFeatures:e=[],loading:t,refetchArchived:n}=AD();return l(IAe,{title:"Archive",archivedFeatures:e,loading:t,storedParams:$Ae,setStoredParams:NAe,refetch:n})},MAe=m.lazy(()=>import("./Playground-85262bd8.js")),DAe=m.lazy(()=>import("./AdvancedPlayground-23b331cd.js")),BAe=()=>{const{uiConfig:e}=At();return e.flags.advancedPlayground?l(DAe,{}):l(MAe,{})},FAe=C(Ve)(({theme:e,selected:t})=>({"&.MuiButton-root":{cursor:"pointer",height:e.spacing(6.5),border:0,backgroundColor:t?e.palette.background.paper:"transparent",borderLeft:`${e.spacing(1)} solid ${t?e.palette.background.alternative:"transparent"}`,borderRadius:e.shape.borderRadiusMedium,justifyContent:"start",transition:"background-color 0.2s ease",color:e.palette.text.primary,textAlign:"left",padding:e.spacing(2,4),fontSize:e.fontSizes.bodySize,fontWeight:t?e.fontWeight.bold:e.fontWeight.medium,lineHeight:1.2},"&:hover":{backgroundColor:e.palette.neutral.light},"&.Mui-disabled":{pointerEvents:"auto"},justifyContent:"space-between"})),zAe=({label:e,selected:t,onClick:n})=>l(FAe,{selected:!!t,onClick:n,disableRipple:!0,disableElevation:!0,disableFocusRipple:!0,disableTouchRipple:!0,fullWidth:!0,children:e}),jAe=C("div")(({theme:e})=>({display:"flex",gap:e.spacing(3),[e.breakpoints.down("md")]:{flexDirection:"column"}})),UAe=C("div")(()=>({flexGrow:1,display:"flex",flexDirection:"column"})),WAe=C("div")(({theme:e})=>({display:"flex",flexDirection:"column",gap:e.spacing(1),width:e.spacing(30),flexShrink:0,[e.breakpoints.down("md")]:{width:"100%"}})),HAe=({tabs:e,value:t,onChange:n,children:r})=>x(jAe,{children:[l(WAe,{children:e.filter(o=>!o.hidden).map(o=>l(zAe,{label:o.label,selected:o.id===t,onClick:()=>n(o)},o.id))}),l(UAe,{children:r})]}),_D=(e,t={})=>{const n=async()=>{const u=Ot(`api/admin/auth/${e}/settings`);return(await fetch(u,{method:"GET"}).then(vn("Auth settings"))).json()},r=`api/admin/auth/${e}/settings`,{data:o,error:i}=Rn(r,n,t),[a,s]=m.useState(!i&&!o),c=()=>{Kr(r)};return m.useEffect(()=>{s(!i&&!o)},[o,i]),{config:o||{},error:i,loading:a,refetch:c}},VAe=()=>{const{makeRequest:e,createRequest:t,errors:n,loading:r}=Yn({propagateErrors:!0});return{changePassword:async i=>{const a=t("api/admin/user/change-password",{method:"POST",body:JSON.stringify(i)});try{await e(a.caller,a.id)}catch(s){throw s}},errors:n,loading:r}},GAe=C("form")(({theme:e})=>({display:"flex",flexDirection:"column",gap:e.spacing(2),maxWidth:e.spacing(44)})),qAe=()=>{const{config:e,loading:t}=_D("simple"),[n,r]=m.useState(!1),{setToastData:o,setToastApiError:i}=Nt(),[a,s]=m.useState(!1),[c,u]=m.useState(),[d,p]=m.useState(),[f,h]=m.useState(""),[g,v]=m.useState(""),[y,b]=m.useState(""),{changePassword:w}=VAe(),S=async k=>{if(k.preventDefault(),f===g){if(!a)u(L9);else{r(!0),u(void 0),p(void 0);try{await w({password:f,confirmPassword:g,oldPassword:y}),o({title:"Password changed successfully",text:"Now you can sign in using your new password.",type:"success"})}catch(R){const T=ht(R);R instanceof wE?p(T):u(T),i(T)}}r(!1)}};return t?null:l(wr,{isLoading:n,header:"Change password",children:l(Y,{condition:e.disabled,show:l(Kt,{severity:"error",children:"Password based login is currently disabled for your Unleash instance."}),elseShow:x(GAe,{children:[l(M9,{password:f,callback:s,"data-loading":!0}),l(lc,{"data-loading":!0,label:"Old password",name:"oldPassword",value:y,error:!!d,helperText:d,autoComplete:"current-password",onChange:k=>b(k.target.value)}),l(lc,{"data-loading":!0,label:"Password",name:"password",value:f,error:!!c,helperText:c,autoComplete:"new-password",onChange:k=>h(k.target.value)}),l(lc,{"data-loading":!0,label:"Confirm password",name:"confirmPassword",value:g,autoComplete:"new-password",onChange:k=>v(k.target.value)}),l(B9,{"data-loading":!0,started:!!(f&&g),matchingPasswords:f===g}),l(Ve,{"data-loading":!0,variant:"contained",color:"primary",type:"submit",onClick:S,children:"Save"})]})})})},YAe="environment",KAe="project",PD="root",ID="project",XAe="root-custom",JAe="custom",QAe=[PD,ID],v8e=[PD,XAe],ZAe=[ID,JAe],eRe=10,HT=()=>{const{data:e,error:t,mutate:n}=Rn(Ot("api/admin/user/tokens"),tRe);return{tokens:e?e.pats:void 0,loading:!t&&!e,refetchTokens:()=>n(),error:t}},tRe=e=>fetch(e).then(vn("Personal API Tokens")).then(t=>t.json()),OD=()=>{const{makeRequest:e,createRequest:t,errors:n,loading:r}=Yn({propagateErrors:!0});return{createPersonalAPIToken:async c=>{const u=t("api/admin/user/tokens",{method:"POST",body:JSON.stringify(c)});try{return await(await e(u.caller,u.id)).json()}catch(d){throw d}},deletePersonalAPIToken:async c=>{const u=t(`api/admin/user/tokens/${c}`,{method:"DELETE"});try{await e(u.caller,u.id)}catch(d){throw d}},createUserPersonalAPIToken:async(c,u)=>{const d=t(`api/admin/user-admin/${c}/pat`,{method:"POST",body:JSON.stringify(u)});try{return await(await e(d.caller,d.id)).json()}catch(p){throw p}},deleteUserPersonalAPIToken:async(c,u)=>{const d=t(`api/admin/user-admin/${c}/pat/${u}`,{method:"DELETE"});try{await e(d.caller,d.id)}catch(p){throw p}},errors:n,loading:r}},nRe=e=>{const t=new Date(e);return ih(t,"yyyy-MM-dd")},rRe=e=>{const t=new Date(e);return ih(t,"yyyy-MM-dd")+"T"+ih(t,"HH:mm")},oRe=({label:e,type:t="datetime",error:n,errorText:r,min:o,max:i,value:a,onChange:s,...c})=>{const u=t==="datetime"?rRe:nRe;return l(Sn,{type:t==="datetime"?"datetime-local":"date",size:"small",variant:"outlined",label:e,error:n,helperText:r,value:u(a.toISOString()),onChange:p=>{const f=q9(p.target.value);s(f??a)},FormHelperTextProps:{["data-testid"]:D6},inputProps:{min:o&&u(o.toISOString()),max:i&&u(i.toISOString())},...c})},I3=C("p")(({theme:e})=>({color:e.palette.text.secondary,marginBottom:e.spacing(1)})),iRe=C(Cr)(({theme:e})=>({width:"100%",maxWidth:e.spacing(50),marginBottom:e.spacing(2)})),aRe=C("div")(({theme:e,custom:t})=>({display:"flex",alignItems:t?"start":"center",gap:e.spacing(1.5),marginBottom:e.spacing(2),[e.breakpoints.down("sm")]:{flexDirection:"column",alignItems:"flex-start"}})),sRe=C(JE)(({theme:e})=>({minWidth:e.spacing(20),marginRight:e.spacing(.5),[e.breakpoints.down("sm")]:{width:e.spacing(50)}})),lRe=C(oRe)(({theme:e})=>({width:e.spacing(28),[e.breakpoints.down("sm")]:{width:e.spacing(50)}})),cRe=C(Kt)(({theme:e})=>({marginBottom:e.spacing(2),maxWidth:e.spacing(50)}));var $D=(e=>(e["7DAYS"]="7d",e["30DAYS"]="30d",e["60DAYS"]="60d",e.NEVER="never",e.CUSTOM="custom",e))($D||{});const ND=[{key:"7d",days:7,label:"7 days"},{key:"30d",days:30,label:"30 days"},{key:"60d",days:60,label:"60 days"},{key:"never",label:"Never"},{key:"custom",label:"Custom"}],Px=e=>{const t=new Date,n=ND.find(({key:r})=>r===e);return e==="never"?t.setFullYear(t.getFullYear()+1e3):e==="custom"?t.setMinutes(t.getMinutes()+30):n!=null&&n.days&&t.setDate(t.getDate()+n.days),t},uRe=({description:e,setDescription:t,isDescriptionUnique:n,expiration:r,setExpiration:o,expiresAt:i,setExpiresAt:a,errors:s,setErrors:c})=>{const{locationSettings:u}=Za(),d=v=>{c(y=>({...y,[v]:void 0}))},p=(v,y)=>{c(b=>({...b,[v]:y}))};m.useEffect(()=>{d("expiresAt"),a(Px(r))},[r]);const f=v=>{d("description"),n&&!n(v)&&p("description","A token with that description already exists."),t(v)},h=r==="custom",g=i.getFullYear()>new Date().getFullYear()+100;return x(me,{children:[l(I3,{children:"Describe what this token will be used for"}),l(iRe,{autoFocus:!0,label:"Description",error:!!s.description,errorText:s.description,value:e,onChange:v=>f(v.target.value),required:!0}),l(I3,{children:"Token expiration date"}),x(aRe,{custom:h,children:[l(sRe,{name:"expiration",id:"expiration",label:"Token will expire in",value:r,onChange:v=>o(v.target.value),options:ND}),l(Y,{condition:h,show:()=>l(lRe,{label:"Date",value:i,onChange:v=>{d("expiresAt"),v<new Date&&p("expiresAt","Invalid date, must be in the future"),a(v)},min:new Date,error:!!s.expiresAt,errorText:s.expiresAt,required:!0}),elseShow:l(Y,{condition:g,show:x(se,{variant:"body2",children:["The token will ",l("strong",{children:"never"})," ","expire!"]}),elseShow:()=>x(se,{variant:"body2",children:["Token will expire on"," ",l("strong",{children:Zu(i,u.locale)})]})})})]}),l(Y,{condition:g,show:l(cRe,{severity:"warning",children:"We strongly recommend that you set an expiration date for your token to help keep your information secure."})})]})},dRe=C("form")(()=>({display:"flex",flexDirection:"column",height:"100%"})),pRe=C("div")(({theme:e})=>({marginTop:"auto",display:"flex",justifyContent:"flex-end",[e.breakpoints.down("sm")]:{marginTop:e.spacing(4)}})),fRe=C(Ve)(({theme:e})=>({marginLeft:e.spacing(3)})),pg=$D["30DAYS"],hRe=({open:e,setOpen:t,newToken:n})=>{const{tokens:r,refetchTokens:o}=HT(),{createPersonalAPIToken:i,loading:a}=OD(),{setToastApiError:s}=Nt(),{uiConfig:c}=At(),[u,d]=m.useState(""),[p,f]=m.useState(pg),[h,g]=m.useState(Px(pg)),[v,y]=m.useState({});m.useEffect(()=>{d(""),f(pg),g(Px(pg)),y({})},[e]);const b=()=>({description:u,expiresAt:h}),w=async A=>{A.preventDefault();try{const P=await i(b());n(P),o(),t(!1)}catch(P){s(ht(P))}},S=()=>`curl --location --request POST '${c.unleashUrl}/api/admin/user/tokens' \\
357
357
  --header 'Authorization: INSERT_API_KEY' \\
358
358
  --header 'Content-Type: application/json' \\
359
359
  --data-raw '${JSON.stringify(b(),void 0,2)}'`,k=A=>A.length,R=A=>!(r!=null&&r.some(P=>P.description===A)),T=k(u)&&R(u)&&h>new Date;return l(Q1,{open:e,onClose:()=>{t(!1)},label:"Create personal API token",children:l(Xr,{loading:a,modal:!0,title:"Create personal API token",description:`Use personal API tokens to authenticate to the Unleash API as
360
360
  yourself. A personal API token has the same access privileges as
361
- your user.`,documentationLink:"https://docs.getunleash.io/reference/api-tokens-and-client-keys",documentationLinkLabel:"Tokens documentation",formatApiCode:S,children:x(dRe,{onSubmit:w,children:[l("div",{children:l(uRe,{description:u,setDescription:d,isDescriptionUnique:R,expiration:p,setExpiration:f,expiresAt:h,setExpiresAt:g,errors:v,setErrors:y})}),x(pRe,{children:[l(Ve,{type:"submit",variant:"contained",color:"primary",disabled:!T,children:"Create token"}),l(fRe,{onClick:()=>{t(!1)},children:"Cancel"})]})]})})})},mRe=({open:e,setOpen:t,token:n})=>{const{refetchTokens:r}=HT(),{deletePersonalAPIToken:o}=OD(),{setToastData:i,setToastApiError:a}=Nt();return l(Zn,{open:e,primaryButtonText:"Delete token",secondaryButtonText:"Cancel",onClick:async()=>{if(n)try{await o(n==null?void 0:n.id),r(),t(!1),i({title:"Token deleted successfully",type:"success"})}catch(c){a(ht(c))}},onClose:()=>{t(!1)},title:"Delete token?",children:x(se,{children:['Any applications or scripts using this token "',l("strong",{children:n==null?void 0:n.description}),'" will no longer be able to access the Unleash API. You cannot undo this action.']})})},gRe=C(Kt)(({theme:e})=>({marginBottom:e.spacing(3)})),vRe=({open:e,setOpen:t,token:n})=>x(Zn,{open:e,secondaryButtonText:"Close",onClose:(r,o)=>{o||t(!1)},title:"Personal API token created",children:[l(gRe,{severity:"info",children:"Make sure to copy your personal API token now. You won't be able to see it again!"}),l(se,{variant:"body1",children:"Your token:"}),l(ED,{token:(n==null?void 0:n.secret)||""})]}),LD=({value:e,live:t=!1,emptyText:n,title:r,dateFormat:o=Zu})=>{const{locationSettings:i}=Za();if(!e)return l(er,{children:n});const a=o(e,i.locale);return l(er,{children:l(Et,{title:(r==null?void 0:r(a))??a,arrow:!0,children:l(se,{noWrap:!0,component:"span",variant:"body2","data-loading":!0,children:l(E1,{date:new Date(e),live:t,title:""})})})})},yRe=C(Kt)(({theme:e})=>({marginBottom:e.spacing(3)})),bRe=C("div")(({theme:e})=>({display:"flex",flexDirection:"column",alignItems:"center",padding:e.spacing(10,2)})),wRe=C(se)(({theme:e})=>({fontSize:e.fontSizes.mainHeader,marginBottom:e.spacing(1.5)})),SRe=C(se)(({theme:e})=>({color:e.palette.text.secondary,marginBottom:e.spacing(4.5)})),xRe=Array(15).fill({description:"Short description of the feature",type:"-",createdAt:new Date(2022,1,1),project:"projectID"}),CRe={id:"createdAt"},{value:O3,setValue:ERe}=Oc("PersonalAPITokensTable:v1",CRe),TRe=()=>{const e=gn(),t=nr(e.breakpoints.down("md")),n=nr(e.breakpoints.down("sm")),{tokens:r=[],loading:o}=HT(),[i,a]=vd(),[s]=m.useState(()=>({sortBy:[{id:i.get("sort")||O3.id,desc:i.has("order")?i.get("order")==="desc":O3.desc}],globalFilter:i.get("search")||""})),[c,u]=m.useState(s.globalFilter),[d,p]=m.useState(!1),[f,h]=m.useState(!1),[g,v]=m.useState(!1),[y,b]=m.useState(),[w,S]=m.useState(),k=m.useMemo(()=>[{Header:"Description",accessor:"description",Cell:al,minWidth:100,searchable:!0},{Header:"Expires",accessor:"expiresAt",Cell:({value:L})=>new Date(L).getFullYear()>new Date().getFullYear()+100?l(er,{children:"Never"}):l(ah,{value:L}),sortType:"date",maxWidth:150},{Header:"Created",accessor:"createdAt",Cell:ah,sortType:"date",maxWidth:150},{Header:"Last seen",accessor:"seenAt",Cell:LD,sortType:"date",maxWidth:150},{Header:"Actions",id:"Actions",align:"center",Cell:({row:{original:L}})=>l(qa,{children:l(Et,{title:"Delete token",arrow:!0,describeChild:!0,children:l("span",{children:l(Ht,{onClick:()=>{S(L),v(!0)},children:l(go,{})})})})}),maxWidth:100,disableSortBy:!0}],[S,v]),{data:R,getSearchText:T,getSearchContext:A}=Wh(k,c,r),P=m.useMemo(()=>(R==null?void 0:R.length)===0&&o?xRe:R,[R,o]),{headerGroups:_,rows:I,prepareRow:$,state:{sortBy:z},setHiddenColumns:B}=tn.useTable({columns:k,data:P,initialState:s,sortTypes:ai,autoResetHiddenColumns:!1,autoResetSortBy:!1,disableSortRemove:!0,disableMultiSort:!0},tn.useSortBy,tn.useFlexLayout);return Rd([{condition:n,columns:["expiresAt"]},{condition:t,columns:["createdAt"]}],B,k),m.useEffect(()=>{const L={};L.sort=z[0].id,z[0].desc&&(L.order="desc"),c&&(L.search=c),a(L,{replace:!0}),ERe({id:z[0].id,desc:z[0].desc||!1})},[z,c,a]),x(wr,{isLoading:o,header:l(On,{title:`Personal API tokens (${I.length<P.length?`${I.length} of ${P.length}`:P.length})`,actions:x(me,{children:[l(Y,{condition:!t,show:x(me,{children:[l(Eo,{initialValue:c,onChange:u,getSearchContext:A}),l(On.Divider,{})]})}),l(Ve,{variant:"contained",color:"primary",disabled:r.length>=eRe,onClick:()=>p(!0),children:"New token"})]}),children:l(Y,{condition:t,show:l(Eo,{initialValue:c,onChange:u,hasFilters:!0,getSearchContext:A})})}),children:[l(yRe,{severity:"info",children:"Use personal API tokens to authenticate to the Unleash API as yourself. A personal API token has the same access privileges as your user."}),l(_s,{value:T(c),children:l(S1,{rows:I,headerGroups:_,prepareRow:$})}),l(Y,{condition:I.length===0,show:l(Y,{condition:(c==null?void 0:c.length)>0,show:x(ir,{children:["No tokens found matching “",c,"”"]}),elseShow:x(bRe,{children:[l(wRe,{children:"You have no personal API tokens yet."}),l(SRe,{variant:"body2",children:"Need an API token for scripts or testing? Create a personal API token for quick access to the Unleash API."}),l(Ve,{variant:"outlined",onClick:()=>p(!0),children:"Create your first token"})]})})}),l(hRe,{open:d,setOpen:p,newToken:L=>{b(L),h(!0)}}),l(vRe,{open:f,setOpen:h,token:y}),l(mRe,{open:g,setOpen:v,token:w})]})},kRe=()=>{const{data:e,error:t,mutate:n}=Rn(Ot("api/admin/user/profile"),ARe);return{profile:e,loading:!t&&!e,refetchProfile:()=>n(),error:t}},ARe=e=>fetch(e).then(vn("Profile")).then(t=>t.json());var VT={},RRe=Tn;Object.defineProperty(VT,"__esModule",{value:!0});var MD=VT.default=void 0,_Re=RRe(kn()),PRe=An,IRe=(0,_Re.default)((0,PRe.jsx)("path",{d:"M20 6h-8l-2-2H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16.77c.68 0 1.23-.56 1.23-1.23V8c0-1.1-.9-2-2-2zm0 12H4V6h5.17l2 2H20v10zm-2-6H6v-2h12v2zm-4 4H6v-2h8v2z"}),"TopicOutlined");MD=VT.default=IRe;const DD=(e,t={})=>{const{isEnterprise:n}=At(),{data:r,error:o,mutate:i}=bl(!!e&&n(),void 0,Ot(`api/admin/roles/${e}`),$3,t),{data:a,error:s,mutate:c}=bl(!!e&&!n(),{rootRoles:[]},Ot("api/admin/user-admin"),$3,t);return m.useMemo(()=>n()?{role:r,loading:!o&&!r,refetch:()=>i(),error:o}:{role:{...((a==null?void 0:a.rootRoles)??[]).find(({id:u})=>u===+e),permissions:[]},loading:!s&&!a,refetch:()=>c(),error:s},[r,o,i,a,s,c])},$3=e=>fetch(e).then(vn("Role")).then(t=>t.json()),dc=e=>e.environment?`${e.id}-${e.environment}`:`${e.id}`,y8e=e=>e.reduce((t,n)=>(t[dc(n)]=n,t),{}),b8e=(e,t)=>{let n=Xh(e);return n[dc(t)]?delete n[dc(t)]:n[dc(t)]={...t},n},w8e=(e,t)=>{let n=Xh(e);return t.every(o=>n[dc(o)])?t.forEach(o=>{delete n[dc(o)]}):t.forEach(o=>{n[dc(o)]={...o}}),n},ORe=e=>e.filter(({name:n})=>n!=="ADMIN").reduce((n,r)=>{var a;const o=((a=yEe.find(s=>s.permissions.includes(r.name)))==null?void 0:a.label)||"Other",i=n.find(({label:s})=>s===o);return i?i.permissions.push(r):n.push({label:o,type:"root",permissions:[r]}),n},[]).sort(NRe),$Re=e=>{const t=e.filter(({type:o})=>o===KAe),n=e.filter(({type:o})=>o===YAe),r=[];return t.length&&r.push({label:"Project",type:"project",permissions:t}),r.push(...n.reduce((o,i)=>{const a=i.environment,s=o.find(({label:c})=>c===a);return s?s.permissions.push(i):o.push({label:a,type:"environment",permissions:[i]}),o},[])),r},S8e=(e,t)=>[...e,...t.flatMap(({permissions:n})=>n)],NRe=({label:e},{label:t})=>e==="Other"&&t!=="Other"?1:e!=="Other"&&t==="Other"?-1:e.localeCompare(t),LRe=C("div",{shouldForwardProp:e=>e!=="tooltip"})(({theme:e,tooltip:t})=>({width:"100%",maxWidth:e.spacing(50),padding:t?e.spacing(1):e.spacing(3),backgroundColor:t?e.palette.background.paper:e.palette.neutral.light,color:e.palette.text.secondary,fontSize:e.fontSizes.smallBody,borderRadius:e.shape.borderRadiusMedium})),MRe=C("div")(({theme:e})=>({marginTop:e.spacing(2)})),N3=C("p")(({theme:e})=>({color:e.palette.text.primary,fontSize:e.fontSizes.smallBody,fontWeight:e.fontWeight.bold,marginBottom:e.spacing(1)})),DRe=C("p")(({theme:e})=>({fontSize:e.fontSizes.smallBody,marginTop:e.spacing(1)})),BRe=({roleId:e,tooltip:t,...n})=>{const{role:r}=DD(e.toString());if(!r)return null;const{name:o,description:i,permissions:a,type:s}=r,u=ZAe.includes(s)?$Re(a):ORe(a);return x(LRe,{tooltip:t,...n,children:[l(N3,{sx:{mb:0},children:o}),l(DRe,{children:i}),l(Y,{condition:!QAe.includes(r.type),show:()=>u.map(({label:d,permissions:p})=>x(MRe,{children:[l(N3,{children:d}),p.map(f=>l("p",{children:f.displayName},f.id))]},d))})]})},FRe=({roleId:e})=>{const{role:t}=DD(e.toString());return t?l(kd,{title:l(BRe,{roleId:e,tooltip:!0}),arrow:!0,children:l(Zt,{color:"success",icon:l(Rle,{}),sx:{cursor:"pointer"},children:t.name})}):null},zRe=C("div")(({theme:e})=>({display:"flex",flexDirection:"row",alignItems:"center",padding:e.spacing(6),borderRadius:e.shape.borderRadiusLarge,backgroundColor:e.palette.background.alternative,color:e.palette.primary.contrastText,marginBottom:e.spacing(3),boxShadow:e.boxShadows.primaryHeader})),jRe=C("div")(()=>({flexGrow:1})),URe=C(se)(({theme:e})=>({fontSize:e.spacing(3.75)})),WRe=C(uE)(({theme:e})=>({width:e.spacing(9.5),height:e.spacing(9.5),marginRight:e.spacing(3)})),L3=C(se)(({theme:e})=>({fontSize:e.fontSizes.mainHeader,marginBottom:e.spacing(3)})),HRe=C("div")(({theme:e})=>({display:"flex",flexDirection:"row","& > div > p":{marginBottom:e.spacing(1.5)}})),VRe=C(Zt)(({theme:e})=>({cursor:"pointer",marginRight:e.spacing(1)})),GRe=C("div")(({theme:e})=>({width:"100%",height:"1px",backgroundColor:e.palette.divider,margin:e.spacing(3,0)})),qRe=C(As)(({theme:e})=>({marginTop:e.spacing(1.5),width:e.spacing(30)})),YRe=C(Mh)(({theme:e})=>({backgroundColor:e.palette.background.paper})),KRe=({user:e})=>{const{profile:t}=kRe(),n=gt(),{locationSettings:r,setLocationSettings:o}=Za(),[i,a]=m.useState(),[s,c]=m.useState(["en-US","en-GB","nb-NO","sv-SE","da-DK","en-IN","de","cs","pt-BR","fr-FR"]);m.useEffect(()=>{const d=s.find(p=>p.toLowerCase().includes(r.locale.toLowerCase()));a(d),d||c(p=>[...p,r.locale])},[r]);const u=d=>{const p=d.target.value;a(p),o({locale:p})};return x(me,{children:[x(zRe,{children:[l(WRe,{user:e}),x(jRe,{children:[l(URe,{children:e.name||e.username}),l(se,{variant:"body1",children:e.email})]})]}),x(wr,{children:[l(L3,{children:"Access"}),x(HRe,{children:[l(Le,{sx:{width:"50%"},children:l(Y,{condition:!!(t!=null&&t.rootRole),show:()=>x(me,{children:[l(se,{variant:"body2",children:"Your root role"}),l(FRe,{roleId:t==null?void 0:t.rootRole.id})]})})}),x(Le,{children:[l(se,{variant:"body2",children:"Projects"}),l(Y,{condition:!!(t!=null&&t.projects.length),show:t==null?void 0:t.projects.map(d=>l(Et,{title:"View project",arrow:!0,placement:"bottom-end",describeChild:!0,children:l(VRe,{onClick:p=>{p.preventDefault(),n(`/projects/${d}`)},color:"secondary",icon:l(MD,{}),children:d})},d)),elseShow:l(Et,{title:"You are not assigned to any projects",arrow:!0,describeChild:!0,children:l(Zt,{children:"No projects"})})})]})]}),l(GRe,{}),l(L3,{children:"Settings"}),l(se,{variant:"body2",children:"This is the format used across the system for time and date"}),x(qRe,{variant:"outlined",size:"small",children:[l(YRe,{htmlFor:"locale-select",children:"Date/Time formatting"}),l(Dh,{id:"locale-select",value:i||"",native:!0,onChange:u,MenuProps:{style:{zIndex:9999}},children:s.map(d=>l("option",{value:d,children:d},d))})]})]})]})},XRe=()=>{const{user:e}=di(),t=ko(),n=gt(),{config:r,loading:o}=_D("simple"),{uiConfig:i}=At(),a=[{id:"profile",label:"Profile"},{id:"password",label:"Change password",path:"change-password",hidden:r.disabled},{id:"pat",label:"Personal API tokens",path:"personal-api-tokens",hidden:i.flags.personalAccessTokensKillSwitch}],s=p=>{n(p.path?`/profile/${p.path}`:"/profile",{replace:!0}),d(p.id)},c=()=>{const p=t.pathname;return(a.find(({path:h})=>h&&p.includes(h))||a[0]).id},[u,d]=m.useState(c());return m.useEffect(()=>{d(c())},[t]),o?null:x(HAe,{tabs:a,value:u,onChange:s,children:[l(Y,{condition:u==="profile",show:l(KRe,{user:e})}),l(Y,{condition:u==="password",show:l(qAe,{})}),l(Y,{condition:u==="pat",show:l(TRe,{})})]})},JRe=m.lazy(()=>import("./CreateProject-fe1d0f0f.js")),QRe=m.lazy(()=>import("./FeatureViewLazyExport-60874e5e.js")),ZRe=m.lazy(()=>import("./LazyAdminExport-c5eec10c.js")),e_e=m.lazy(()=>import("./LazyProjectExport-7f66ff80.js")),t_e=()=>l(Pc,{to:"/admin/users",replace:!0}),n_e=()=>{const{isEnterprise:e}=At(),{data:t,error:n,mutate:r}=bl(e(),{events:[]},Ot("api/admin/logins"),r_e);return m.useMemo(()=>({events:(t==null?void 0:t.events)??[],loading:!n&&!t,refetch:()=>r(),error:n}),[t,n,r])},r_e=e=>fetch(e).then(vn("Login History")).then(t=>t.json()),M3=C(Le)(()=>({display:"flex",justifyContent:"center"})),o_e=({row:e,value:t})=>{const{searchQuery:n}=Rl();return t?l(M3,{children:l(Zt,{color:"success",children:"True"})}):l(M3,{children:l(kd,{arrow:!0,title:l(Ha,{search:n,children:e.original.failure_reason}),children:l(Zt,{color:"error",children:"False"})})})},i_e=C(Le)(()=>({display:"flex",justifyContent:"center"})),a_e=({onDelete:e})=>l(i_e,{children:l($r,{"data-loading":!0,onClick:e,permission:pi,tooltipProps:{title:"Remove event"},children:l(go,{})})}),s_e=({event:e,open:t,setOpen:n,onConfirm:r})=>x(Zn,{title:"Delete event?",open:t,primaryButtonText:"Delete event",secondaryButtonText:"Cancel",onClick:()=>r(e),onClose:()=>{n(!1)},children:["You are about to delete event: ",x("strong",{children:["#",e==null?void 0:e.id]})]}),l_e=()=>{const{loading:e,makeRequest:t,createRequest:n,errors:r}=Yn({propagateErrors:!0});return{downloadCSV:async()=>{const c=n("api/admin/logins",{method:"GET",responseType:"blob",headers:{Accept:"text/csv"}},"downloadCSV"),u=await(await t(c.caller,c.id)).blob(),d=window.URL.createObjectURL(u);window.location.assign(d)},removeEvent:async s=>{const c="removeEvent",u=n(`api/admin/logins/${s}`,{method:"DELETE"},c);await t(u.caller,u.id)},removeAllEvents:async()=>{const c=n("api/admin/logins",{method:"DELETE"},"removeAllEvents");await t(c.caller,c.id)},errors:r,loading:e}},c_e=({open:e,setOpen:t,onConfirm:n})=>x(Zn,{title:"Clear login history?",open:e,primaryButtonText:"Clear login history",secondaryButtonText:"Cancel",onClick:n,onClose:()=>{t(!1)},children:["You are about to clear the login history.",l("br",{}),"This will delete all the login events."]}),u_e={id:"created_at"},{value:D3,setValue:d_e}=Oc("LoginHistoryTable:v1",u_e),p_e={simple:"Password",oidc:"OIDC",saml:"SAML",google:"Google"},f_e=()=>{const{setToastData:e,setToastApiError:t}=Nt(),{events:n,loading:r,refetch:o}=n_e(),{removeEvent:i,removeAllEvents:a,downloadCSV:s}=l_e(),[c,u]=vd(),[d]=m.useState(()=>({sortBy:[{id:c.get("sort")||D3.id,desc:c.has("order")?c.get("order")==="desc":D3.desc}],hiddenColumns:["failure_reason"],globalFilter:c.get("search")||""})),[p,f]=m.useState(d.globalFilter),[h,g]=m.useState(),[v,y]=m.useState(!1),[b,w]=m.useState(!1),S=async G=>{try{await i(G.id),e({title:"Event has been deleted",type:"success"}),o(),y(!1)}catch(te){t(ht(te))}},k=async()=>{try{await a(),e({title:"History has been cleared",type:"success"}),o(),w(!1)}catch(G){t(ht(G))}},R=nr(sa.breakpoints.down("sm")),T=nr(sa.breakpoints.down("md")),A=m.useMemo(()=>[{Header:"Created",accessor:"created_at",Cell:({value:G})=>l(LD,{value:G,dateFormat:C1}),sortType:"date",maxWidth:150},{Header:"Username",accessor:"username",minWidth:100,Cell:al,searchable:!0},{Header:"Authentication",accessor:G=>p_e[G.auth_type]||G.auth_type,width:150,maxWidth:150,Cell:al,searchable:!0,filterName:"auth"},{Header:"IP address",accessor:"ip",Cell:al,searchable:!0},{Header:"Success",accessor:"successful",align:"center",Cell:o_e,filterName:"success",filterParsing:G=>G.toString()},{Header:"Actions",id:"Actions",align:"center",Cell:({row:{original:G}})=>l(a_e,{onDelete:()=>{g(G),y(!0)}}),width:150,disableSortBy:!0},{accessor:"failure_reason",Header:"Failure Reason",searchable:!0}],[]),{data:P,getSearchText:_,getSearchContext:I}=Wh(A,p,n),{headerGroups:$,rows:z,prepareRow:B,state:{sortBy:L},setHiddenColumns:q}=tn.useTable({columns:A,data:P,initialState:d,sortTypes:ai,autoResetHiddenColumns:!1,autoResetSortBy:!1,disableSortRemove:!0,disableMultiSort:!0,defaultColumn:{Cell:er}},tn.useSortBy,tn.useFlexLayout);return Rd([{condition:R,columns:["role","seenAt"]},{condition:T,columns:["imageUrl","tokens","createdAt"]}],q,A),m.useEffect(()=>{const G={};G.sort=L[0].id,L[0].desc&&(G.order="desc"),p&&(G.search=p),u(G,{replace:!0}),d_e({id:L[0].id,desc:L[0].desc||!1})},[L,p,u]),x(wr,{isLoading:r,header:l(On,{title:`Login history (${z.length})`,actions:x(me,{children:[l(Y,{condition:!T,show:l(Eo,{initialValue:p,onChange:f,hasFilters:!0,getSearchContext:I})}),l(Y,{condition:z.length>0,show:x(me,{children:[l(Y,{condition:!T,show:l(On.Divider,{})}),l(Et,{title:"Download login history",arrow:!0,children:l(Ht,{onClick:s,children:l(ple,{})})}),l(Et,{title:"Clear login history",arrow:!0,children:l(Ht,{onClick:()=>w(!0),children:l(go,{})})})]})})]}),children:l(Y,{condition:T,show:l(Eo,{initialValue:p,onChange:f,hasFilters:!0,getSearchContext:I})})}),children:[l(_s,{value:_(p),children:l(S1,{rows:z,headerGroups:$,prepareRow:B})}),l(Y,{condition:z.length===0,show:l(Y,{condition:(p==null?void 0:p.length)>0,show:x(ir,{children:["No login events found matching “",p,"”"]}),elseShow:l(ir,{children:"No login events available."})})}),l(s_e,{event:h,open:v,setOpen:y,onConfirm:S}),l(c_e,{open:b,setOpen:w,onConfirm:k})]})},h_e=()=>l("div",{children:l(pD,{permissions:pi,children:l(f_e,{})})}),hh=[{path:"/splash/:splashId",title:"Unleash",component:fTe,type:"protected",menu:{},isStandalone:!0},{path:"/projects/create",parent:"/projects",title:"Create",component:JRe,type:"protected",enterprise:!0,menu:{}},{path:"/projects/:projectId/edit",parent:"/projects",title:":projectId",component:ICe,type:"protected",enterprise:!0,menu:{}},{path:"/projects/:projectId/archived",title:":projectId",parent:"/archive",component:cve,type:"protected",menu:{}},{path:"/projects/:projectId/features/:featureId/:activeTab/copy",parent:"/projects/:projectId/features/:featureId/:activeTab",title:"Copy",component:G2e,type:"protected",menu:{}},{path:"/projects/:projectId/features/:featureId/edit",parent:"/projects",title:"Edit feature",component:o2e,type:"protected",menu:{}},{path:"/projects/:projectId/features/:featureId/*",parent:"/projects",title:"FeatureView",component:QRe,type:"protected",menu:{}},{path:"/projects/:projectId/create-toggle",parent:"/projects/:projectId/features",title:"Create feature toggle",component:WCe,type:"protected",menu:{}},{path:"/projects/:projectId/features2/:featureId",parent:"/features",title:":featureId",component:y3,type:"protected",menu:{}},{path:"/projects/:projectId/*",parent:"/projects",title:":projectId",component:e_e,flag:Kme,type:"protected",menu:{}},{path:"/projects",title:"Projects",component:lve,type:"protected",menu:{mobile:!0}},{path:"/features/:activeTab/:featureId",parent:"/features",title:":featureId",component:y3,type:"protected",menu:{}},{path:"/features",title:"Feature toggles",component:hfe,type:"protected",menu:{mobile:!0}},{path:"/playground",title:"Playground",component:BAe,hidden:!1,type:"protected",menu:{mobile:!0}},{path:"/applications/:name",title:":name",parent:"/applications",component:u2e,type:"protected",menu:{}},{path:"/applications",title:"Applications",component:d2e,type:"protected",menu:{mobile:!0,advanced:!0}},{path:"/context/create",parent:"/context",title:"Create",component:gTe,type:"protected",menu:{}},{path:"/context/edit/:name",parent:"/context",title:":name",component:sCe,type:"protected",menu:{}},{path:"/context",title:"Context fields",component:h2e,type:"protected",menu:{mobile:!0,advanced:!0}},{path:"/strategies/create",title:"Create",parent:"/strategies",component:JEe,type:"protected",menu:{}},{path:"/strategies/:name/edit",title:":name",parent:"/strategies",component:QEe,type:"protected",menu:{}},{path:"/strategies/:name",title:":name",parent:"/strategies",component:ehe,type:"protected",menu:{}},{path:"/strategies",title:"Strategy types",component:Bhe,type:"protected",menu:{mobile:!0,advanced:!0}},{path:"/environments/create",title:"Environments",component:Zve,parent:"/environments",type:"protected",menu:{}},{path:"/environments/:id",title:"Edit",component:nye,type:"protected",menu:{}},{path:"/environments",title:"Environments",component:Kke,type:"protected",flag:Xme,menu:{mobile:!0,advanced:!0}},{path:"/tag-types/create",parent:"/tag-types",title:"Create",component:vCe,type:"protected",menu:{}},{path:"/tag-types/edit/:name",parent:"/tag-types",title:":name",component:gCe,type:"protected",menu:{}},{path:"/tag-types",title:"Tag types",component:jhe,type:"protected",menu:{mobile:!0,advanced:!0}},{path:"/addons/create/:providerId",parent:"/addons",title:"Create",component:D2e,type:"protected",menu:{}},{path:"/addons/edit/:addonId",parent:"/addons",title:"Edit",component:B2e,type:"protected",menu:{}},{path:"/addons",title:"Addons",component:Qhe,hidden:!1,type:"protected",menu:{mobile:!0,advanced:!0}},{path:"/segments/create",title:"Segments",component:JTe,hidden:!1,type:"protected",layout:"main",menu:{},flag:Gb},{path:"/segments/edit/:segmentId",title:"Segments",component:eke,hidden:!1,type:"protected",layout:"main",menu:{},flag:Gb},{path:"/segments",title:"Segments",component:fAe,hidden:!1,type:"protected",menu:{mobile:!0,advanced:!0},flag:Gb},{path:"/history",title:"Event log",component:NEe,type:"protected",menu:{adminSettings:!0}},{path:"/admin/logins",title:"Login history",component:h_e,type:"protected",menu:{adminSettings:!0}},{path:"/archive",title:"Archived toggles",component:LAe,type:"protected",menu:{}},{path:"/admin",title:"Admin",component:t_e,hidden:!1,type:"protected",menu:{}},{path:"/admin/*",title:"Admin",component:ZRe,hidden:!1,type:"protected",menu:{}},{path:"/profile/*",title:"Profile",component:XRe,type:"protected",menu:{}},{path:"/login",title:"Log in",component:Yme,type:"unprotected",hidden:!0,menu:{},isStandalone:!0},{path:"/new-user",title:"New user",hidden:!0,component:Cge,type:"unprotected",menu:{},isStandalone:!0},{path:"/reset-password",title:"Reset password",hidden:!0,component:kge,type:"unprotected",menu:{},isStandalone:!0},{path:"/forgotten-password",title:"Forgotten password",hidden:!0,component:$ge,type:"unprotected",menu:{},isStandalone:!0}],m_e=[{path:"/history",title:"Event log",menu:{adminSettings:!0}},{path:"/admin/logins",title:"Login history",menu:{adminSettings:!0,mode:["enterprise"]}},{path:"/admin/users",title:"Users",menu:{adminSettings:!0}},{path:"/admin/groups",title:"Groups",menu:{adminSettings:!0,mode:["enterprise"]},flag:Jme},{path:"/admin/roles/*",title:"Roles",menu:{adminSettings:!0,mode:["enterprise"]}},{path:"/admin/auth",title:"Single sign-on",menu:{adminSettings:!0}},{path:"/admin/instance",title:"Instance stats",menu:{adminSettings:!0}},{path:"/admin/service-accounts",title:"Service accounts",menu:{adminSettings:!0,mode:["enterprise"]}},{path:"/admin/network/*",title:"Network",menu:{adminSettings:!0,mode:["pro","enterprise"]},configFlag:"networkViewEnabled"},{path:"/admin/maintenance",title:"Maintenance",menu:{adminSettings:!0}},{path:"/admin/cors",title:"CORS origins",flag:"embedProxyFrontend",menu:{adminSettings:!0}},{path:"/admin/admin-invoices",title:"Billing & invoices",menu:{adminSettings:!0,mode:["pro"]}}],g_e=hh.filter(e=>!e.hidden),v_e=()=>{const e=g_e.filter(o=>o.menu.advanced),t=hh.filter(o=>o.menu.adminSettings),n=hh.filter(o=>o.menu.mobile),r={mainNavRoutes:e,adminRoutes:t,mobileRoutes:n};return()=>r},B3=e=>e.map(t=>({path:t.path,flag:t.flag,title:t.title,menu:t.menu,configFlag:t.configFlag})),y_e=v_e(),b_e=(e={})=>{const t=Ot("api/admin/notifications"),{data:n,error:r,mutate:o}=Rn(t,w_e,e),i=m.useCallback(()=>{o().catch(console.warn)},[o]);return{notifications:n,error:r,loading:!r&&!n,refetchNotifications:i,mutateNotifications:o}},w_e=async e=>await(await fetch(e).then(vn("Notifications"))).json();var GT={},S_e=Tn;Object.defineProperty(GT,"__esModule",{value:!0});var qT=GT.default=void 0,x_e=S_e(kn()),C_e=An,E_e=(0,x_e.default)((0,C_e.jsx)("path",{d:"M12 22c1.1 0 2-.9 2-2h-4c0 1.1.89 2 2 2zm6-6v-5c0-3.07-1.64-5.64-4.5-6.32V4c0-.83-.67-1.5-1.5-1.5s-1.5.67-1.5 1.5v.68C7.63 5.36 6 7.92 6 11v5l-2 2v1h16v-1l-2-2z"}),"Notifications");qT=GT.default=E_e;const T_e=C(Le)(({theme:e})=>({padding:e.spacing(1,1.5,1,3),display:"flex",justifyContent:"space-between",alignItems:"center",position:"relative",boxShadow:e.boxShadows.separator})),k_e=({children:e})=>l(me,{children:x(T_e,{children:[l(se,{fontWeight:"bold",children:"Notifications"}),e]})}),A_e=C(ia)(({theme:e})=>({padding:e.spacing(1,1,3,1)})),R_e=({children:e})=>l(A_e,{"data-testid":"NOTIFICATIONS_LIST",children:e}),__e=e=>m.createElement("svg",{width:18,height:14,viewBox:"0 0 18 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e},m.createElement("path",{d:"M0.59 2.00016L2 0.590157L5.41 4.00016L4 5.41016L0.59 2.00016ZM13 11.5002L13 8.00016L7.41 8.00016L2 13.4102L0.59 12.0002L6.59 6.00016L13 6.00016L13 2.50016L17.5 7.00016L13 11.5002Z",fill:"currentColor"})),F3=C(Le,{shouldForwardProp:e=>e!=="readAt"})(({theme:e,readAt:t})=>({padding:e.spacing(.5),marginRight:e.spacing(1.5),backgroundColor:t?e.palette.neutral.light:e.palette.secondary.light,width:"30px",height:"30px",display:"flex",justifyContent:"center",alignItems:"center",borderRadius:`${e.shape.borderRadius}px`,top:3,left:7})),P_e=C(Fee)(({theme:e})=>({position:"relative",cursor:"pointer",padding:e.spacing(2.5,2,3,2),borderRadius:e.shape.borderRadiusMedium,width:"100%","&:after":{content:'""',width:`calc(100% - ${e.spacing(4)})`,height:"1px",position:"absolute",bottom:0,backgroundColor:e.palette.divider}})),I_e=C(Le)(({theme:e})=>({display:"flex",flexDirection:"column",width:"100%"})),O_e=C(Le)(({theme:e})=>({display:"flex",justifyContent:"space-between",alignItems:"center",margin:e.spacing(1,0,0,5.25)})),$_e=C(se,{shouldForwardProp:e=>e!=="readAt"})(({theme:e,readAt:t})=>({display:"flex",alignItems:"center",fontSize:e.fontSizes.smallBody,fontWeight:t?"normal":"bold",textDecoration:"none",color:"inherit",wordBreak:"break-all"})),N_e=C(se)(({theme:e})=>({fontSize:e.fontSizes.smallerBody,color:e.palette.neutral.main})),L_e=C(Le)(({theme:e})=>({...Ic})),M_e=C(Cd)(({theme:e})=>({width:"18px",height:"18px"})),D_e=C(se)(({theme:e})=>({fontSize:e.fontSizes.smallBody,color:e.palette.neutral.main,marginLeft:e.spacing(1)})),B_e=({notification:e,onNotificationClick:t})=>{const n=gn(),{readAt:r}=e;return l(P_e,{onClick:()=>t(e),children:x(I_e,{children:[x($_e,{readAt:!!r,children:[(i=>{if(i==="change-request")return l(F3,{readAt:!!r,children:l(__e,{color:e.readAt?n.palette.neutral.main:n.palette.primary.main,style:{transform:"scale(0.8)"}})});if(i==="toggle")return l(F3,{readAt:!!r,children:l(Ole,{sx:a=>({height:"20px",width:"20px",color:r?a.palette.neutral.main:a.palette.primary.main})})})})(e.notificationType)," ",e.message]}),x(O_e,{children:[x(L_e,{children:[l(M_e,{src:e.createdBy.imageUrl||""}),x(D_e,{children:["Created by ",e.createdBy.username]})]}),l(N_e,{children:l(E1,{date:new Date(e.createdAt)})})]})]})})},F_e=C(Le)(()=>({display:"flex",justifyContent:"center",alignItems:"center",flexDirection:"column",minHeight:"150px"})),z_e=C(qT)(({theme:e})=>({height:"30px",width:"30px",color:e.palette.neutral.main,marginBottom:e.spacing(1)})),j_e=({text:e})=>x(F_e,{children:[l(z_e,{}),l(se,{color:"neutral.main",children:e})]}),U_e=()=>{const{makeRequest:e,createRequest:t,errors:n,loading:r}=Yn({propagateErrors:!0});return{loading:r,errors:n,markAsRead:async i=>{const s=t("api/admin/notifications/read",{method:"POST",body:JSON.stringify(i)});try{await e(s.caller,s.id)}catch(c){throw c}}}},W_e=C(Le)(({theme:e})=>({display:"flex",gap:e.spacing(1),marginTop:e.spacing(.5)})),H_e=({id:e,localStorageKey:t,eventName:n})=>{var d;const{uiConfig:r}=At(),{value:o,setValue:i}=Oc(`${r.baseUriPath}:${t}:v1:${e}`,{}),[a,s]=m.useState(o.value),{trackEvent:c}=xr();if(!((d=r==null?void 0:r.flags)!=null&&d.T)||a)return null;const u=p=>{s(p),i({value:p}),c(n,{props:{eventType:e,wasHelpful:p==="yes"}})};return x(Sr,{elevation:0,sx:{background:p=>p.palette.neutral.light,padding:p=>p.spacing(1.5,2),marginTop:p=>p.spacing(1.5)},children:["Was this information useful to you?",x(W_e,{children:[l(Ve,{size:"small",variant:a==="yes"?"contained":"outlined",sx:{padding:0},onClick:()=>u("yes"),disabled:!!a,children:"Yes"}),l(Ve,{size:"small",variant:a==="no"?"contained":"outlined",sx:{padding:0},onClick:()=>u("no"),disabled:!!a,children:"No"})]})]})},V_e=C(Le)(()=>({position:"relative"})),G_e=C(Le)(({theme:e})=>({backgroundColor:e.palette.background.elevation1,display:"flex",justifyContent:"center"})),q_e=C(se)(({theme:e})=>({fontWeight:"bold",fontSize:e.fontSizes.smallBody,color:e.palette.primary.main,textAlign:"center"})),Y_e=C(Sr)(({theme:e})=>({width:"420px",boxShadow:e.boxShadows.popup,borderRadius:`${e.shape.borderRadiusLarge}px`,position:"absolute",right:-100,top:60,maxHeight:"80vh",overflowY:"auto"})),K_e=C(Le)(({theme:e})=>({backgroundColor:e.palette.primary.main,borderRadius:"100%",width:"7px",height:"7px",position:"absolute",top:7,right:4})),X_e=C(Le)(()=>({...Ic})),J_e=C(se)(({theme:e})=>({fontSize:e.fontSizes.smallBody})),Q_e=C(Ht)(({theme:e})=>({"&:focus-visible":{outlineStyle:"solid",outlineWidth:2,outlineColor:e.palette.primary.main,borderRadius:"100%"}})),Z_e=()=>{const[e,t]=m.useState(!1),{notifications:n,refetchNotifications:r}=b_e({refreshInterval:15e3}),o=gt(),{markAsRead:i}=U_e(),{uiConfig:a}=At(),{trackEvent:s}=xr(),[c,u]=m.useState(!1),d=async w=>{var S;w.link&&o(w.link),(S=a==null?void 0:a.flags)!=null&&S.T&&s("notifications",{props:{eventType:w.notificationType}}),t(!1);try{await i({notifications:[w.id]}),r()}catch(k){console.error("Error marking notification as read: ",k)}},p=async()=>{try{n&&n.length>0&&(await i({notifications:n.map(w=>w.id)}),r())}catch(w){console.error("Error marking all notification as read: ",w)}},f=w=>{w.key==="Escape"&&t(!1)},h=n==null?void 0:n.filter(w=>w.readAt===null),g=!!(h&&h.length>0),v=w=>c?!w.readAt:!0,y=n==null?void 0:n.filter(v).map(w=>l(B_e,{notification:w,onNotificationClick:d},w.id)),b=!!(n&&n.length>0&&!c);return x(V_e,{children:[x(Q_e,{onClick:()=>t(!e),"data-testid":"NOTIFICATIONS_BUTTON",disableFocusRipple:!0,children:[l(Y,{condition:g,show:l(K_e,{})}),l(qT,{})]}),l(Y,{condition:e,show:l(IN,{onClickAway:()=>t(!1),children:x(Y_e,{className:"dropdown-outline",onKeyDown:f,"data-testid":"NOTIFICATIONS_MODAL",children:[l(k_e,{children:x(X_e,{children:[l(J_e,{children:"Show only unread"}),l(Qa,{onClick:()=>u(!c),checked:c})]})}),l(Y,{condition:g,show:l(G_e,{"data-testid":"UNREAD_NOTIFICATIONS",children:l(Ve,{onClick:p,children:x(q_e,{children:["Mark all as read (",h==null?void 0:h.length,")"]})})})})," ",l(Y,{condition:(y==null?void 0:y.length)===0,show:l(j_e,{text:c?"No unread notifications":"No new notifications"})}),l(R_e,{children:y}),l(Y,{condition:b,show:x(me,{children:[l(H_e,{eventName:"notifications",id:"useful",localStorageKey:"NotificationsUsefulPrompt"}),l("br",{})]})})]})})})]})},z3=C(rK)(({theme:e})=>({backgroundColor:e.palette.background.paper,padding:e.spacing(1),boxShadow:"none",position:"relative",zIndex:300})),j3=C(AJ)(({theme:e})=>({display:"flex",alignItems:"center",maxWidth:1280,"&&&":{padding:0}})),U3=C("div")({marginLeft:"auto",display:"flex",alignItems:"center"}),ePe=C("nav")({display:"flex",alignItems:"center",flexGrow:1}),tPe=C(uL)({width:"150px"}),nPe=C(cL)({width:"150px"}),rPe=C("div")(({theme:e})=>({display:"flex",justifyContent:"center",marginLeft:e.spacing(3),"& a":{textDecoration:"none",color:"inherit",marginRight:e.spacing(3),display:"flex",alignItems:"center"}})),oPe=C("button")(({theme:e})=>({...zi(e),border:"none",background:"transparent",height:"100%",display:"flex",fontSize:e.fontSizes.bodySize,fontFamily:e.typography.fontFamily,alignItems:"center",color:"inherit",cursor:"pointer"})),W3=e=>({color:e.palette.neutral.main}),fg=C(cn)(({theme:e})=>zi(e)),iPe=C(Ht)(({theme:e})=>({...zi(e),borderRadius:100})),aPe=()=>{const{onSetThemeMode:e,themeMode:t}=N6(),n=gn(),r=vl(),o=vl(),[i,a]=m.useState(null),[s,c]=m.useState(null),[u,d]=m.useState(!1),{permissions:p}=A1(),{uiConfig:f,isOss:h,isPro:g,isEnterprise:v}=At(),y=nr(n.breakpoints.down("md")),[b,w]=m.useState(!1),S=()=>w(_=>!_),k=()=>a(null),R=()=>c(null);m.useEffect(()=>{(p==null?void 0:p.find(I=>I.permission===pi))&&d(!0)},[p]);const T=y_e(),A=_=>{const{mode:I}=_.menu;return!I||I.includes("pro")&&g()||I.includes("enterprise")&&v()},P={mainNavRoutes:B3(T.mainNavRoutes).concat([{path:"/admin/api",title:"API access",menu:{}}]).filter(Xb(f)),mobileRoutes:B3(T.mobileRoutes).filter(Xb(f)),adminRoutes:m_e.filter(Xb(f)).filter(A).map(_=>({..._,path:_.path.replace("/*","")}))};return y?l(z3,{position:"static",children:x(j3,{children:[l(Et,{title:"Menu",arrow:!0,children:l(Ht,{sx:{color:_=>_.palette.text.primary},onClick:S,"aria-controls":"header-drawer","aria-expanded":b,size:"large",children:l(oL,{})})}),l(rle,{flags:f.flags,links:f.links,open:b,toggleDrawer:S,admin:u,routes:P}),l(U3,{children:l(bP,{})})]})}):l(z3,{position:"static",children:x(j3,{children:[l(fg,{to:"/",sx:Ic,"aria-label":"Home",children:l(Td,{darkmode:l(tPe,{"aria-label":"Unleash logo"}),lightmode:l(nPe,{"aria-label":"Unleash logo"})})}),x(ePe,{children:[x(rPe,{children:[l(fg,{to:"/projects",children:"Projects"}),l(fg,{to:"/features",children:"Feature toggles"}),l(fg,{to:"/playground",children:"Playground"}),x(oPe,{onClick:_=>c(_.currentTarget),"aria-controls":s?o:void 0,"aria-expanded":!!s,children:["Configure",l(ox,{sx:W3})]}),l(kP,{id:o,options:P.mainNavRoutes,anchorEl:s,handleClose:R,style:{top:10}})]}),x(U3,{children:[l(Et,{title:t==="dark"?"Switch to light theme":"Switch to dark theme",arrow:!0,children:l(Ht,{onClick:e,sx:zi,children:l(Y,{condition:t==="dark",show:l(ule,{}),elseShow:l(Cle,{})})})})," ",l(Y,{condition:!h()&&!(f!=null&&f.flags.disableNotifications),show:l(Z_e,{})}),l(Et,{title:"Documentation",arrow:!0,children:l(Ht,{href:"https://docs.getunleash.io/",target:"_blank",rel:"noopener noreferrer",size:"large",disableRipple:!0,sx:zi,children:l(pE,{})})}),l(Y,{condition:u,show:l(Et,{title:"Settings",arrow:!0,children:x(iPe,{onClick:_=>a(_.currentTarget),"aria-controls":i?r:void 0,"aria-expanded":!!i,size:"large",disableRipple:!0,children:[l(iL,{}),l(ox,{sx:W3})]})})}),l(kP,{id:r,options:P.adminRoutes,anchorEl:i,handleClose:k,style:{top:5,left:-100}})," ",l(bP,{})]})]})]})})},sPe=e=>{var n;const t=(n=e.versionInfo)==null?void 0:n.current;return t!=null&&t.enterprise?`${e.name} ${t.enterprise}`:t!=null&&t.oss?`${e.name} ${t.oss}`:`${e.name} ${e.version}`},lPe=e=>{var r,o;const t=(r=e.versionInfo)==null?void 0:r.latest,n=(o=e.versionInfo)==null?void 0:o.isLatest;if(t!=null&&t.enterprise&&!n)return`Upgrade available - Latest Enterprise release: ${t.enterprise}`;if(t!=null&&t.oss&&!n)return`Upgrade available - Latest OSS release: ${t.oss}`},zg=C("h2")(({theme:e})=>({all:"unset",display:"block",margin:e.spacing(2,0),fontSize:e.fontSizes.bodySize,fontWeight:e.fontWeight.bold})),cPe=e=>{var i;const t=(i=e.uiConfig.versionInfo)==null?void 0:i.instanceId,n=sPe(e.uiConfig),r=e.uiConfig.environment,o=lPe(e.uiConfig);return x("section",{title:"API details",children:[x(zg,{children:[n," ",l(Y,{condition:!!r,show:x("small",{children:["(",r,")"]})})]}),l(Y,{condition:!!o,show:x("small",{children:[o,l("br",{})]})}),l("br",{}),l("small",{children:e.uiConfig.slogan}),l("br",{}),l(Y,{condition:!!t,show:l("small",{children:`${t}`})})]})},uPe=C("footer")(({theme:e})=>({padding:e.spacing(4,8),width:"100%",flexGrow:1,zIndex:100,backgroundColor:e.palette.background.paper})),yw=C(ia)({padding:0,margin:0}),ur=C(Ia)(({theme:e})=>({padding:0,margin:0,"& a":{...zi(e),textDecoration:"none",color:e.palette.text.primary,"&:hover":{textDecoration:"underline"}}})),dPe=()=>{const{uiConfig:e}=At();return l(uPe,{children:x(Wn,{container:!0,justifyContent:"center",spacing:10,style:{marginBottom:0},children:[l(Wn,{item:!0,md:4,xs:12,children:l(cPe,{uiConfig:e})}),l(Wn,{item:!0,xs:12,md:"auto",children:x(Wn,{container:!0,spacing:7,direction:"row",children:[l(Wn,{item:!0,children:x("section",{title:"Unleash SDK",children:[l(zg,{children:"Server SDKs"}),x(yw,{dense:!0,children:[l(ur,{children:l(rn,{primary:l("a",{href:"https://docs.getunleash.io/reference/sdks/node",target:"_blank",rel:"noreferrer",children:"Node.js"})})}),l(ur,{children:l(rn,{primary:l("a",{href:"https://docs.getunleash.io/reference/sdks/java",target:"_blank",rel:"noreferrer",children:"Java"})})}),l(ur,{children:l(rn,{primary:l("a",{href:"https://docs.getunleash.io/reference/sdks/go",target:"_blank",rel:"noreferrer",children:"Go"})})})," ",l(ur,{children:l(rn,{primary:l("a",{href:"https://docs.getunleash.io/reference/sdks/rust",target:"_blank",rel:"noreferrer",children:"Rust"})})})," ",l(ur,{children:l(rn,{primary:l("a",{href:"https://docs.getunleash.io/reference/sdks/ruby",target:"_blank",rel:"noreferrer",children:"Ruby"})})})," ",l(ur,{children:l(rn,{primary:l("a",{href:"https://docs.getunleash.io/reference/sdks/python",target:"_blank",rel:"noreferrer",children:"Python"})})}),l(ur,{children:l(rn,{primary:l("a",{href:"https://docs.getunleash.io/reference/sdks/dotnet",target:"_blank",rel:"noreferrer",children:".NET"})})}),l(ur,{children:l(rn,{primary:l("a",{href:"https://docs.getunleash.io/reference/sdks/php",target:"_blank",rel:"noreferrer",children:"PHP"})})}),l(ur,{children:l(rn,{primary:l("a",{href:"https://docs.getunleash.io/reference/sdks",target:"_blank",rel:"noreferrer",children:"All SDKs"})})})]})]})}),l(Wn,{item:!0,children:x("section",{title:"Unleash SDK",children:[l(zg,{children:"Frontend SDKs"}),x(yw,{dense:!0,children:[l(ur,{children:l(rn,{primary:l("a",{href:"https://docs.getunleash.io/reference/unleash-proxy",target:"_blank",rel:"noreferrer",children:"Unleash Proxy"})})}),l(ur,{children:l(rn,{primary:l("a",{href:"https://docs.getunleash.io/reference/sdks/javascript-browser",target:"_blank",rel:"noreferrer",children:"JavaScript"})})}),l(ur,{children:l(rn,{primary:l("a",{href:"https://docs.getunleash.io/reference/sdks/react",target:"_blank",rel:"noreferrer",children:"React"})})}),l(ur,{children:l(rn,{primary:l("a",{href:"https://docs.getunleash.io/reference/sdks/next-js",target:"_blank",rel:"noreferrer",children:"Next.js"})})}),l(ur,{children:l(rn,{primary:l("a",{href:"https://docs.getunleash.io/reference/sdks/vue",target:"_blank",rel:"noreferrer",children:"Vue"})})}),l(ur,{children:l(rn,{primary:l("a",{href:"https://docs.getunleash.io/reference/sdks/ios-proxy",target:"_blank",rel:"noreferrer",children:"iOS"})})}),l(ur,{children:l(rn,{primary:l("a",{href:"https://docs.getunleash.io/reference/sdks/android-proxy",target:"_blank",rel:"noreferrer",children:"Android"})})}),l(ur,{children:l(rn,{primary:l("a",{href:"https://docs.getunleash.io/reference/sdks/flutter",target:"_blank",rel:"noreferrer",children:"Flutter"})})})]})]})}),l(Wn,{item:!0,children:x("section",{children:[l(zg,{children:"About"}),x(yw,{dense:!0,children:[l(ur,{children:l(rn,{primary:l("a",{href:"https://www.getunleash.io/",target:"_blank",rel:"noreferrer",children:"getunleash.io"})})}),l(ur,{children:l(rn,{primary:l("a",{href:"https://twitter.com/getunleash",target:"_blank",rel:"noreferrer",children:"Twitter"})})}),l(ur,{children:l(rn,{primary:l("a",{href:"https://www.linkedin.com/company/getunleash",target:"_blank",rel:"noreferrer",children:"LinkedIn"})})}),l(ur,{children:l(rn,{primary:l("a",{href:"https://github.com/Unleash/unleash",target:"_blank",rel:"noreferrer",children:"GitHub"})})}),l(ur,{children:l(rn,{primary:l("a",{href:"https://slack.unleash.run",target:"_blank",rel:"noreferrer",children:"Slack Community"})})})]})]})})]})})]})})},pPe=C(Kt)(({theme:e})=>({marginBottom:e.spacing(2)})),fPe=C(se)(({theme:e})=>({maxWidth:"800px"})),hPe=C("a")(({theme:e})=>({display:"block",marginTop:e.spacing(1),width:"100px"})),mPe=e=>!(!e||localStorage&&localStorage.getItem(e)),gPe=({toast:e})=>{const[t,n]=m.useState(!1);m.useEffect(()=>{n(mPe((e==null?void 0:e.id)||""))},[e==null?void 0:e.id]);const r=()=>{localStorage&&localStorage.setItem((e==null?void 0:e.id)||"","seen"),n(!1)};return e?l(Y,{condition:t,show:x(pPe,{severity:e.severity,onClose:r,children:[l(fPe,{variant:"body2",children:e.message}),l(hPe,{href:e.link,target:"_blank",rel:"noopener noreferrer",children:"View more"})]})}):null},vPe=C("div")(({theme:e})=>({height:e.spacing(2.5),margin:e.spacing(2,0)})),yPe=C(PX)({"& > ol":{flexWrap:"nowrap","& > li:last-child":{minWidth:0}}}),H3=C("p")(P6),bPe=C(cn)(({theme:e})=>({"& > *":{maxWidth:e.spacing(25)}})),wPe=()=>{const{isAdmin:e}=m.useContext(Ao),t=ko(),n=t.pathname.split("/").filter(r=>r).filter(r=>r!=="create"&&r!=="edit"&&r!=="view"&&r!=="variants"&&r!=="logs"&&r!=="metrics"&&r!=="copy"&&r!=="features"&&r!=="features2"&&r!=="create-toggle"&&r!=="settings"&&r!=="profile");return l(vPe,{children:l(Y,{condition:t.pathname.includes("admin")&&e||!t.pathname.includes("admin"),show:l(Y,{condition:n.length>1,show:l(yPe,{"aria-label":"Breadcrumbs",children:n.map((r,o)=>{if(o===n.length-1)return l(H3,{children:r},r);let a="/";return n.forEach((s,c)=>{c!==o&&c<o?a+=s+"/":c===o&&(a+=s)}),l(bPe,{to:a,children:l(H3,{children:r})},r)})})})})})},V3="/static/texture-c29e66c0.png",BD="skip-nav-target-id",SPe=()=>l("div",{id:BD}),xPe=C("a")(({theme:e})=>({position:"fixed",overflow:"hidden",zIndex:1e3,top:e.spacing(2.25),left:e.spacing(2.25),padding:e.spacing(1,2),whiteSpace:"nowrap",textDecoration:"none",background:e.palette.background.alternative,color:e.palette.common.white,borderRadius:e.shape.borderRadius,fontSize:e.fontSizes.smallBody,...zi(e),[e.breakpoints.down(960)]:{top:"0.8rem",left:"0.8rem"},"&:not(:focus):not(:active)":{clip:"rect(0 0 0 0)",clipPath:"inset(50%)",zIndex:-1,width:1,height:1,margin:-1,padding:0}})),CPe=()=>x(xPe,{href:`#${BD}`,children:["Skip to content ",l("span",{"aria-hidden":!0,children:"↓"})]}),EPe=({featureName:e,projectId:t,conflict:n,onNavigate:r,children:o})=>x(JN,{elevation:0,sx:i=>({marginTop:i.spacing(2),overflow:"hidden"}),children:[x(Le,{sx:i=>({backgroundColor:i.palette.neutral.light,borderRadius:a=>`${a.shape.borderRadiusLarge}px ${a.shape.borderRadiusLarge}px 0 0`,border:"1px solid",borderColor:a=>n?a.palette.warning.border:a.palette.divider,borderBottom:"none",overflow:"hidden"}),children:[l(Y,{condition:!!n,show:x(Kt,{severity:"warning",sx:{px:3,mb:2,"&.MuiAlert-standardWarning":{borderStyle:"none"}},children:[l("strong",{children:"Conflict!"})," ",n,"."]})}),x(Le,{sx:{display:"flex",pt:n?0:2,pb:2,px:3},children:[l(se,{children:"Feature toggle name: "}),l(Vr,{component:cn,to:`/projects/${t}/features/${e}`,color:"primary",underline:"hover",sx:{marginLeft:1,"& :hover":{textDecoration:"underline"}},onClick:r,children:l("strong",{children:e})})]})]}),l(Le,{children:o})]});var YT={},TPe=Tn;Object.defineProperty(YT,"__esModule",{value:!0});var FD=YT.default=void 0,kPe=TPe(kn()),APe=An,RPe=(0,kPe.default)((0,APe.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zM4 12c0-4.42 3.58-8 8-8 1.85 0 3.55.63 4.9 1.69L5.69 16.9C4.63 15.55 4 13.85 4 12zm8 8c-1.85 0-3.55-.63-4.9-1.69L18.31 7.1C19.37 8.45 20 10.15 20 12c0 4.42-3.58 8-8 8z"}),"Block");FD=YT.default=RPe;var KT={},_Pe=Tn;Object.defineProperty(KT,"__esModule",{value:!0});var zD=KT.default=void 0,PPe=_Pe(kn()),IPe=An,OPe=(0,PPe.default)((0,IPe.jsx)("path",{d:"m19.07 4.93-1.41 1.41C19.1 7.79 20 9.79 20 12c0 4.42-3.58 8-8 8s-8-3.58-8-8c0-4.08 3.05-7.44 7-7.93v2.02C8.16 6.57 6 9.03 6 12c0 3.31 2.69 6 6 6s6-2.69 6-6c0-1.66-.67-3.16-1.76-4.24l-1.41 1.41C15.55 9.9 16 10.9 16 12c0 2.21-1.79 4-4 4s-4-1.79-4-4c0-1.86 1.28-3.41 3-3.86v2.14c-.6.35-1 .98-1 1.72 0 1.1.9 2 2 2s2-.9 2-2c0-.74-.4-1.38-1-1.72V2h-1C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10c0-2.76-1.12-5.26-2.93-7.07z"}),"TrackChanges");zD=KT.default=OPe;var $Pe=200,XT="__lodash_hash_undefined__",NPe=1/0,jD=9007199254740991,LPe="[object Arguments]",MPe="[object Function]",DPe="[object GeneratorFunction]",BPe="[object Symbol]",FPe=/[\\^$.*+?()[\]{}|]/g,zPe=/^\[object .+?Constructor\]$/,jPe=/^(?:0|[1-9]\d*)$/,UPe=typeof xi=="object"&&xi&&xi.Object===Object&&xi,WPe=typeof self=="object"&&self&&self.Object===Object&&self,JT=UPe||WPe||Function("return this")();function HPe(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}function VPe(e,t){var n=e?e.length:0;return!!n&&YPe(e,t,0)>-1}function GPe(e,t,n){for(var r=-1,o=e?e.length:0;++r<o;)if(n(t,e[r]))return!0;return!1}function UD(e,t){for(var n=-1,r=e?e.length:0,o=Array(r);++n<r;)o[n]=t(e[n],n,e);return o}function QT(e,t){for(var n=-1,r=t.length,o=e.length;++n<r;)e[o+n]=t[n];return e}function qPe(e,t,n,r){for(var o=e.length,i=n+(r?1:-1);r?i--:++i<o;)if(t(e[i],i,e))return i;return-1}function YPe(e,t,n){if(t!==t)return qPe(e,KPe,n);for(var r=n-1,o=e.length;++r<o;)if(e[r]===t)return r;return-1}function KPe(e){return e!==e}function XPe(e,t){for(var n=-1,r=Array(e);++n<e;)r[n]=t(n);return r}function JPe(e){return function(t){return e(t)}}function QPe(e,t){return e.has(t)}function ZPe(e,t){return e==null?void 0:e[t]}function e5e(e){var t=!1;if(e!=null&&typeof e.toString!="function")try{t=!!(e+"")}catch{}return t}function WD(e,t){return function(n){return e(t(n))}}var t5e=Array.prototype,n5e=Function.prototype,Z1=Object.prototype,bw=JT["__core-js_shared__"],G3=function(){var e=/[^.]+$/.exec(bw&&bw.keys&&bw.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}(),HD=n5e.toString,Bd=Z1.hasOwnProperty,ZT=Z1.toString,r5e=RegExp("^"+HD.call(Bd).replace(FPe,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),q3=JT.Symbol,o5e=WD(Object.getPrototypeOf,Object),i5e=Z1.propertyIsEnumerable,a5e=t5e.splice,Y3=q3?q3.isConcatSpreadable:void 0,Ix=Object.getOwnPropertySymbols,K3=Math.max,s5e=GD(JT,"Map"),mh=GD(Object,"create");function xc(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function l5e(){this.__data__=mh?mh(null):{}}function c5e(e){return this.has(e)&&delete this.__data__[e]}function u5e(e){var t=this.__data__;if(mh){var n=t[e];return n===XT?void 0:n}return Bd.call(t,e)?t[e]:void 0}function d5e(e){var t=this.__data__;return mh?t[e]!==void 0:Bd.call(t,e)}function p5e(e,t){var n=this.__data__;return n[e]=mh&&t===void 0?XT:t,this}xc.prototype.clear=l5e;xc.prototype.delete=c5e;xc.prototype.get=u5e;xc.prototype.has=d5e;xc.prototype.set=p5e;function Fd(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function f5e(){this.__data__=[]}function h5e(e){var t=this.__data__,n=e0(t,e);if(n<0)return!1;var r=t.length-1;return n==r?t.pop():a5e.call(t,n,1),!0}function m5e(e){var t=this.__data__,n=e0(t,e);return n<0?void 0:t[n][1]}function g5e(e){return e0(this.__data__,e)>-1}function v5e(e,t){var n=this.__data__,r=e0(n,e);return r<0?n.push([e,t]):n[r][1]=t,this}Fd.prototype.clear=f5e;Fd.prototype.delete=h5e;Fd.prototype.get=m5e;Fd.prototype.has=g5e;Fd.prototype.set=v5e;function zd(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function y5e(){this.__data__={hash:new xc,map:new(s5e||Fd),string:new xc}}function b5e(e){return t0(this,e).delete(e)}function w5e(e){return t0(this,e).get(e)}function S5e(e){return t0(this,e).has(e)}function x5e(e,t){return t0(this,e).set(e,t),this}zd.prototype.clear=y5e;zd.prototype.delete=b5e;zd.prototype.get=w5e;zd.prototype.has=S5e;zd.prototype.set=x5e;function Hv(e){var t=-1,n=e?e.length:0;for(this.__data__=new zd;++t<n;)this.add(e[t])}function C5e(e){return this.__data__.set(e,XT),this}function E5e(e){return this.__data__.has(e)}Hv.prototype.add=Hv.prototype.push=C5e;Hv.prototype.has=E5e;function T5e(e,t){var n=ek(e)||qD(e)?XPe(e.length,String):[],r=n.length,o=!!r;for(var i in e)(t||Bd.call(e,i))&&!(o&&(i=="length"||D5e(i,r)))&&n.push(i);return n}function e0(e,t){for(var n=e.length;n--;)if(H5e(e[n][0],t))return n;return-1}function k5e(e,t,n,r){var o=-1,i=VPe,a=!0,s=e.length,c=[],u=t.length;if(!s)return c;n&&(t=UD(t,JPe(n))),r?(i=GPe,a=!1):t.length>=$Pe&&(i=QPe,a=!1,t=new Hv(t));e:for(;++o<s;){var d=e[o],p=n?n(d):d;if(d=r||d!==0?d:0,a&&p===p){for(var f=u;f--;)if(t[f]===p)continue e;c.push(d)}else i(t,p,r)||c.push(d)}return c}function VD(e,t,n,r,o){var i=-1,a=e.length;for(n||(n=M5e),o||(o=[]);++i<a;){var s=e[i];t>0&&n(s)?t>1?VD(s,t-1,n,r,o):QT(o,s):r||(o[o.length]=s)}return o}function A5e(e,t,n){var r=t(e);return ek(e)?r:QT(r,n(e))}function R5e(e){if(!tk(e)||F5e(e))return!1;var t=KD(e)||e5e(e)?r5e:zPe;return t.test(W5e(e))}function _5e(e){if(!tk(e))return j5e(e);var t=z5e(e),n=[];for(var r in e)r=="constructor"&&(t||!Bd.call(e,r))||n.push(r);return n}function P5e(e,t){return e=Object(e),I5e(e,t,function(n,r){return r in e})}function I5e(e,t,n){for(var r=-1,o=t.length,i={};++r<o;){var a=t[r],s=e[a];n(s,a)&&(i[a]=s)}return i}function O5e(e,t){return t=K3(t===void 0?e.length-1:t,0),function(){for(var n=arguments,r=-1,o=K3(n.length-t,0),i=Array(o);++r<o;)i[r]=n[t+r];r=-1;for(var a=Array(t+1);++r<t;)a[r]=n[r];return a[t]=i,HPe(e,this,a)}}function $5e(e){return A5e(e,Y5e,L5e)}function t0(e,t){var n=e.__data__;return B5e(t)?n[typeof t=="string"?"string":"hash"]:n.map}function GD(e,t){var n=ZPe(e,t);return R5e(n)?n:void 0}var N5e=Ix?WD(Ix,Object):JD,L5e=Ix?function(e){for(var t=[];e;)QT(t,N5e(e)),e=o5e(e);return t}:JD;function M5e(e){return ek(e)||qD(e)||!!(Y3&&e&&e[Y3])}function D5e(e,t){return t=t??jD,!!t&&(typeof e=="number"||jPe.test(e))&&e>-1&&e%1==0&&e<t}function B5e(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}function F5e(e){return!!G3&&G3 in e}function z5e(e){var t=e&&e.constructor,n=typeof t=="function"&&t.prototype||Z1;return e===n}function j5e(e){var t=[];if(e!=null)for(var n in Object(e))t.push(n);return t}function U5e(e){if(typeof e=="string"||q5e(e))return e;var t=e+"";return t=="0"&&1/e==-NPe?"-0":t}function W5e(e){if(e!=null){try{return HD.call(e)}catch{}try{return e+""}catch{}}return""}function H5e(e,t){return e===t||e!==e&&t!==t}function qD(e){return V5e(e)&&Bd.call(e,"callee")&&(!i5e.call(e,"callee")||ZT.call(e)==LPe)}var ek=Array.isArray;function YD(e){return e!=null&&G5e(e.length)&&!KD(e)}function V5e(e){return XD(e)&&YD(e)}function KD(e){var t=tk(e)?ZT.call(e):"";return t==MPe||t==DPe}function G5e(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=jD}function tk(e){var t=typeof e;return!!e&&(t=="object"||t=="function")}function XD(e){return!!e&&typeof e=="object"}function q5e(e){return typeof e=="symbol"||XD(e)&&ZT.call(e)==BPe}function Y5e(e){return YD(e)?T5e(e,!0):_5e(e)}var K5e=O5e(function(e,t){return e==null?{}:(t=UD(VD(t,1),U5e),P5e(e,k5e($5e(e),t)))});function JD(){return[]}var X5e=K5e;const J5e=qr(X5e),Q5e=C("div")(({theme:e})=>({overflowX:"auto","& code":{wordWrap:"break-word",whiteSpace:"pre-wrap",fontFamily:"monospace",lineHeight:1.5,fontSize:e.fontSizes.smallBody}})),ww=({change:e,currentStrategy:t})=>{const n=e.action==="deleteStrategy"?void 0:e.payload;return l(Q5e,{children:l(K1,{entry:{preData:J5e(t,"sortOrder"),data:n}})})},Z5e=({change:e,previousTitle:t})=>x(me,{children:[l(Y,{condition:!!(t&&t!==e.payload.title),show:x(Ox,{children:[l(se,{component:"span",color:"text.secondary",children:t||Ss(e.payload.name)})," "]})}),l(Ox,{children:l(se,{component:"span",children:e.payload.title})})]}),e3e=C("div")(({theme:e})=>({display:"grid",gridAutoFlow:"column",gridTemplateColumns:"auto 1fr",gap:e.spacing(1),alignItems:"center"})),Ox=C("div")(()=>({...P6,maxWidth:500})),Sw=({change:e,previousTitle:t,children:n})=>x(e3e,{children:[l(Che,{strategyName:e.payload.name}),x(Ox,{children:[l(Hh,{tooltip:n,tooltipProps:{maxWidth:500,maxHeight:600},children:l(se,{component:"span",children:Ss(e.payload.name)})}),l(Z5e,{change:e,previousTitle:t})]})]}),X3=({percentage:e,size:t="4rem"})=>{const n=gn(),r={display:"block",borderRadius:"100%",transform:"rotate(-90deg)",height:t,width:t,background:n.palette.background.elevation2},o=100/(2*Math.PI),i=2*o;return l("svg",{viewBox:`0 0 ${i} ${i}`,style:r,"aria-hidden":!0,children:l("circle",{r:o,cx:o,cy:o,fill:"none",stroke:n.palette.primary.light,strokeWidth:i,strokeDasharray:`${e} 100`})})},t3e=C("div")(({theme:e})=>({width:"100%",padding:e.spacing(2,3),borderRadius:e.shape.borderRadiusMedium,border:`1px solid ${e.palette.divider}`})),n3e=C("p")(({theme:e})=>({display:"inline",margin:e.spacing(.5,0),maxWidth:"95%",textAlign:"center",wordBreak:"break-word"})),r3e=C(ks)(({theme:e})=>({margin:e.spacing(.5)})),xw=({value:e,text:t})=>l(t3e,{children:l(Y,{condition:e.length===0,show:x("p",{children:["No ",t,"s added yet."]}),elseShow:x("div",{children:[x(n3e,{children:[e.length," ",e.length>1?`${t}s`:t," will get access."]}),e.map(n=>l(r3e,{label:l(Ta,{maxWidth:"300",text:n,maxLength:50})},n))]})})}),o3e=({segments:e})=>!e||e.length===0?null:l(me,{children:e.map((t,n)=>x(m.Fragment,{children:[l(Y,{condition:n>0,show:l(AT,{text:"AND"})}),l(jM,{segment:t})]},t.id))}),J3=()=>l(Le,{sx:{px:3,color:"text.disabled"},children:"This strategy does not have constraints or parameters."}),Fl=C(Le)(({theme:e})=>({padding:e.spacing(2,3),border:`1px solid ${e.palette.divider}`,borderRadius:e.shape.borderRadiusMedium})),Cw=C("span")(({theme:e})=>({color:e.palette.neutral.main})),Q3=({strategy:e})=>{const{parameters:t,constraints:n=[]}=e,{strategies:r}=Id(),{uiConfig:o}=At(),{segments:i}=Pl(),a=i==null?void 0:i.filter(p=>{var f;return(f=e.segments)==null?void 0:f.includes(p.id)}),s=r.find(p=>p.name===e.name),c=m.useMemo(()=>!t||s!=null&&s.editable?null:Object.keys(t).map(p=>{switch(p){case"rollout":case"Rollout":const f=vf(t[p]);return x(Fl,{sx:{display:"flex",alignItems:"center"},children:[l(Le,{sx:{mr:2},children:l(X3,{percentage:f,size:"2rem"})}),x("div",{children:[x(Zt,{color:"success",children:[f,"%"]})," of your base"," ",n.length>0?"who match constraints":""," ","is included."]})]});case"userIds":case"UserIds":const h=Ys(t[p]);return l(xw,{value:h,text:"user"},p);case"hostNames":case"HostNames":const g=Ys(t[p]);return l(xw,{value:g,text:"host"},p);case"IPs":const v=Ys(t[p]);return l(xw,{value:v,text:"IP"},p);case"stickiness":case"groupId":return null;default:return null}}),[t,s,n]),u=m.useMemo(()=>{if(!t||!(s!=null&&s.editable))return null;const p=l(Cw,{children:" is set to "});return s==null?void 0:s.parameters.map(f=>{const{type:h,name:g}={...f};if(!h||!g||t[g]===void 0)return null;const v=l(Ta,{maxLength:15,maxWidth:"150",text:g});switch(f==null?void 0:f.type){case"list":const y=Ys(t[g]);return y.length>0?x(Fl,{children:[v," ",x(Cw,{children:["has ",y.length," ",y.length>1?"items":"item",":"," ",y.map(k=>l(ks,{label:l(Ta,{maxWidth:"300",text:k,maxLength:50}),sx:{mr:.5}},k))]})]}):null;case"percentage":const b=vf(t[g]);return t[g]!==""?x(Fl,{sx:{display:"flex",alignItems:"center"},children:[l(Le,{sx:{mr:2},children:l(X3,{percentage:b,size:"2rem"})}),x("div",{children:[v,p,x(Zt,{color:"success",children:[b,"%"]})]})]}):null;case"boolean":return t[g]==="true"||t[g]==="false"?x(Fl,{children:[l(Ta,{maxLength:15,maxWidth:"150",text:g}),p,l(Zt,{color:t[g]==="true"?"success":"error",children:t[g]})]}):null;case"string":const w=il(t[g]);return typeof t[g]<"u"?x(Fl,{children:[v,l(Y,{condition:w==="",show:l(Cw,{children:" is an empty string"}),elseShow:x(me,{children:[p,l(Ta,{maxWidth:"300",text:w,maxLength:50})]})})]}):null;case"number":const S=vf(t[g]);return t[g]!==""&&S!==void 0?x(Fl,{children:[v,p,l(Ta,{maxWidth:"300",text:String(S),maxLength:50})]}):null;case"default":return null}return null})},[t,s]);if(!t)return l(J3,{});const d=[!!o.flags.SE&&a&&a.length>0&&l(o3e,{segments:a}),n.length>0&&l(q1,{constraints:n,showLabel:!1}),e.name==="default"&&l(me,{children:x(Fl,{sx:{width:"100%"},children:["The standard strategy is ",l(Zt,{color:"success",children:"ON"})," ","for all users."]})}),...c??[],...u??[]].filter(Boolean);return l(Y,{condition:d.length>0,show:l(me,{children:d.map((p,f)=>x(m.Fragment,{children:[l(Y,{condition:f>0,show:l(AT,{text:"AND"})}),p]},f))}),elseShow:l(J3,{})})},i3e=(e,t,n,r)=>{var a,s;return(s=(a=xs(t,n).feature)==null?void 0:a.environments.find(c=>c.name===r))==null?void 0:s.strategies.find(c=>"id"in e.payload&&c.id===e.payload.id)},QD=C(Le)({display:"flex",justifyContent:"space-between",alignItems:"center"}),Z3=C(Le)(({theme:e})=>({display:"grid",gridTemplateColumns:"auto 40px",gap:e.spacing(1),alignItems:"center",marginBottom:e.spacing(2),width:"100%"})),Ew=C(Le)(({theme:e})=>({display:"grid",gridTemplateColumns:"150px auto",gridAutoFlow:"column",alignItems:"center",flexGrow:1,gap:e.spacing(1)})),a3e=e=>typeof e=="object"&&e!==null&&"name"in e,eI=({show:e=!0,disabled:t})=>e?t?l(Et,{title:"This strategy will not be taken into account when evaluating feature toggle.",arrow:!0,sx:{cursor:"pointer"},children:l(Zt,{color:"disabled",icon:l(FD,{}),children:"Disabled"})}):l(Et,{title:"This was disabled before and with this change it will be taken into account when evaluating feature toggle.",arrow:!0,sx:{cursor:"pointer"},children:l(Zt,{color:"success",icon:l(zD,{}),children:"Enabled"})}):null,s3e=({wasDisabled:e=!1,willBeDisabled:t=!1})=>e&&t?l(se,{color:"action.disabled",children:"Editing strategy:"}):!e&&t?l(se,{color:"error.dark",children:"Editing strategy:"}):e&&!t?l(se,{color:"success.dark",children:"Editing strategy:"}):l(se,{children:"Editing strategy:"}),l3e=({discard:e,change:t,featureName:n,environmentName:r,projectId:o})=>{var a,s,c,u,d;const i=i3e(t,o,n,r);return x(me,{children:[t.action==="addStrategy"&&x(me,{children:[x(Z3,{children:[x(Ew,{children:[l(se,{color:(a=t.payload)!=null&&a.disabled?"action.disabled":"success.dark",children:"+ Adding strategy:"}),l(Sw,{change:t,children:l(ww,{change:t,currentStrategy:i})}),l("div",{children:l(eI,{disabled:!0,show:((s=t.payload)==null?void 0:s.disabled)===!0})})]}),l("div",{children:e})]}),l(Q3,{strategy:t.payload})]}),t.action==="deleteStrategy"&&x(QD,{children:[x(Ew,{children:[l(se,{sx:p=>({color:p.palette.error.main}),children:"- Deleting strategy:"}),a3e(t.payload)&&l(Sw,{change:t,children:l(ww,{change:t,currentStrategy:i})})]}),l("div",{children:e})]}),t.action==="updateStrategy"&&x(me,{children:[x(Z3,{children:[x(Ew,{children:[l(s3e,{wasDisabled:i==null?void 0:i.disabled,willBeDisabled:(c=t.payload)==null?void 0:c.disabled}),l(Sw,{change:t,previousTitle:i==null?void 0:i.title,children:l(ww,{change:t,currentStrategy:i})})]}),l("div",{children:e})]}),l(Y,{condition:((u=t.payload)==null?void 0:u.disabled)!==(i==null?void 0:i.disabled),show:x(se,{sx:{marginTop:p=>p.spacing(2),marginBottom:p=>p.spacing(2),...Ic,gap:p=>p.spacing(1)},children:["This strategy will be"," ",l(eI,{disabled:((d=t.payload)==null?void 0:d.disabled)||!1})]})}),l(Q3,{strategy:t.payload})]})]})},c3e=({enabled:e,discard:t})=>x(QD,{children:[x(Le,{sx:{display:"flex",alignItems:"center"},children:["New status:"," ",l(Zt,{sx:n=>({marginLeft:n.spacing(1)}),color:e?"success":"error",children:e?" Enabled":"Disabled"})]}),t]}),u3e=C(se)(({theme:e})=>({fontSize:e.fontSizes.smallerBody,whiteSpace:"pre-wrap"})),d3e=({value:e})=>{const{searchQuery:t}=Rl();return e?e.type==="string"&&e.value.length<20?l(er,{children:l(Ha,{search:t,children:e.value})}):l(er,{children:l(Hh,{tooltip:l(me,{children:l(u3e,{children:l(Ha,{search:t,children:e.value})})}),highlighted:t.length>0&&e.value.toLowerCase().includes(t.toLowerCase()),children:e.type})}):l(er,{})},p3e=C(se)(({theme:e})=>({fontSize:e.fontSizes.smallerBody})),f3e=({value:e})=>{const{searchQuery:t}=Rl();if(!e||e.length===0)return l(er,{});const n=r=>`${r.contextName}:${r.values.join()}`;return l(er,{children:l(Hh,{tooltip:l(me,{children:e.map((r,o)=>l(p3e,{children:l(Ha,{search:t,children:n(r)})},r.contextName+o))}),highlighted:t.length>0&&(e==null?void 0:e.map(n).join(`
361
+ your user.`,documentationLink:"https://docs.getunleash.io/reference/api-tokens-and-client-keys",documentationLinkLabel:"Tokens documentation",formatApiCode:S,children:x(dRe,{onSubmit:w,children:[l("div",{children:l(uRe,{description:u,setDescription:d,isDescriptionUnique:R,expiration:p,setExpiration:f,expiresAt:h,setExpiresAt:g,errors:v,setErrors:y})}),x(pRe,{children:[l(Ve,{type:"submit",variant:"contained",color:"primary",disabled:!T,children:"Create token"}),l(fRe,{onClick:()=>{t(!1)},children:"Cancel"})]})]})})})},mRe=({open:e,setOpen:t,token:n})=>{const{refetchTokens:r}=HT(),{deletePersonalAPIToken:o}=OD(),{setToastData:i,setToastApiError:a}=Nt();return l(Zn,{open:e,primaryButtonText:"Delete token",secondaryButtonText:"Cancel",onClick:async()=>{if(n)try{await o(n==null?void 0:n.id),r(),t(!1),i({title:"Token deleted successfully",type:"success"})}catch(c){a(ht(c))}},onClose:()=>{t(!1)},title:"Delete token?",children:x(se,{children:['Any applications or scripts using this token "',l("strong",{children:n==null?void 0:n.description}),'" will no longer be able to access the Unleash API. You cannot undo this action.']})})},gRe=C(Kt)(({theme:e})=>({marginBottom:e.spacing(3)})),vRe=({open:e,setOpen:t,token:n})=>x(Zn,{open:e,secondaryButtonText:"Close",onClose:(r,o)=>{o||t(!1)},title:"Personal API token created",children:[l(gRe,{severity:"info",children:"Make sure to copy your personal API token now. You won't be able to see it again!"}),l(se,{variant:"body1",children:"Your token:"}),l(ED,{token:(n==null?void 0:n.secret)||""})]}),LD=({value:e,live:t=!1,emptyText:n,title:r,dateFormat:o=Zu})=>{const{locationSettings:i}=Za();if(!e)return l(er,{children:n});const a=o(e,i.locale);return l(er,{children:l(Et,{title:(r==null?void 0:r(a))??a,arrow:!0,children:l(se,{noWrap:!0,component:"span",variant:"body2","data-loading":!0,children:l(E1,{date:new Date(e),live:t,title:""})})})})},yRe=C(Kt)(({theme:e})=>({marginBottom:e.spacing(3)})),bRe=C("div")(({theme:e})=>({display:"flex",flexDirection:"column",alignItems:"center",padding:e.spacing(10,2)})),wRe=C(se)(({theme:e})=>({fontSize:e.fontSizes.mainHeader,marginBottom:e.spacing(1.5)})),SRe=C(se)(({theme:e})=>({color:e.palette.text.secondary,marginBottom:e.spacing(4.5)})),xRe=Array(15).fill({description:"Short description of the feature",type:"-",createdAt:new Date(2022,1,1),project:"projectID"}),CRe={id:"createdAt"},{value:O3,setValue:ERe}=Oc("PersonalAPITokensTable:v1",CRe),TRe=()=>{const e=gn(),t=nr(e.breakpoints.down("md")),n=nr(e.breakpoints.down("sm")),{tokens:r=[],loading:o}=HT(),[i,a]=vd(),[s]=m.useState(()=>({sortBy:[{id:i.get("sort")||O3.id,desc:i.has("order")?i.get("order")==="desc":O3.desc}],globalFilter:i.get("search")||""})),[c,u]=m.useState(s.globalFilter),[d,p]=m.useState(!1),[f,h]=m.useState(!1),[g,v]=m.useState(!1),[y,b]=m.useState(),[w,S]=m.useState(),k=m.useMemo(()=>[{Header:"Description",accessor:"description",Cell:al,minWidth:100,searchable:!0},{Header:"Expires",accessor:"expiresAt",Cell:({value:L})=>new Date(L).getFullYear()>new Date().getFullYear()+100?l(er,{children:"Never"}):l(ah,{value:L}),sortType:"date",maxWidth:150},{Header:"Created",accessor:"createdAt",Cell:ah,sortType:"date",maxWidth:150},{Header:"Last seen",accessor:"seenAt",Cell:LD,sortType:"date",maxWidth:150},{Header:"Actions",id:"Actions",align:"center",Cell:({row:{original:L}})=>l(qa,{children:l(Et,{title:"Delete token",arrow:!0,describeChild:!0,children:l("span",{children:l(Ht,{onClick:()=>{S(L),v(!0)},children:l(go,{})})})})}),maxWidth:100,disableSortBy:!0}],[S,v]),{data:R,getSearchText:T,getSearchContext:A}=Wh(k,c,r),P=m.useMemo(()=>(R==null?void 0:R.length)===0&&o?xRe:R,[R,o]),{headerGroups:_,rows:I,prepareRow:$,state:{sortBy:z},setHiddenColumns:B}=tn.useTable({columns:k,data:P,initialState:s,sortTypes:ai,autoResetHiddenColumns:!1,autoResetSortBy:!1,disableSortRemove:!0,disableMultiSort:!0},tn.useSortBy,tn.useFlexLayout);return Rd([{condition:n,columns:["expiresAt"]},{condition:t,columns:["createdAt"]}],B,k),m.useEffect(()=>{const L={};L.sort=z[0].id,z[0].desc&&(L.order="desc"),c&&(L.search=c),a(L,{replace:!0}),ERe({id:z[0].id,desc:z[0].desc||!1})},[z,c,a]),x(wr,{isLoading:o,header:l(On,{title:`Personal API tokens (${I.length<P.length?`${I.length} of ${P.length}`:P.length})`,actions:x(me,{children:[l(Y,{condition:!t,show:x(me,{children:[l(Eo,{initialValue:c,onChange:u,getSearchContext:A}),l(On.Divider,{})]})}),l(Ve,{variant:"contained",color:"primary",disabled:r.length>=eRe,onClick:()=>p(!0),children:"New token"})]}),children:l(Y,{condition:t,show:l(Eo,{initialValue:c,onChange:u,hasFilters:!0,getSearchContext:A})})}),children:[l(yRe,{severity:"info",children:"Use personal API tokens to authenticate to the Unleash API as yourself. A personal API token has the same access privileges as your user."}),l(_s,{value:T(c),children:l(S1,{rows:I,headerGroups:_,prepareRow:$})}),l(Y,{condition:I.length===0,show:l(Y,{condition:(c==null?void 0:c.length)>0,show:x(ir,{children:["No tokens found matching “",c,"”"]}),elseShow:x(bRe,{children:[l(wRe,{children:"You have no personal API tokens yet."}),l(SRe,{variant:"body2",children:"Need an API token for scripts or testing? Create a personal API token for quick access to the Unleash API."}),l(Ve,{variant:"outlined",onClick:()=>p(!0),children:"Create your first token"})]})})}),l(hRe,{open:d,setOpen:p,newToken:L=>{b(L),h(!0)}}),l(vRe,{open:f,setOpen:h,token:y}),l(mRe,{open:g,setOpen:v,token:w})]})},kRe=()=>{const{data:e,error:t,mutate:n}=Rn(Ot("api/admin/user/profile"),ARe);return{profile:e,loading:!t&&!e,refetchProfile:()=>n(),error:t}},ARe=e=>fetch(e).then(vn("Profile")).then(t=>t.json());var VT={},RRe=Tn;Object.defineProperty(VT,"__esModule",{value:!0});var MD=VT.default=void 0,_Re=RRe(kn()),PRe=An,IRe=(0,_Re.default)((0,PRe.jsx)("path",{d:"M20 6h-8l-2-2H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16.77c.68 0 1.23-.56 1.23-1.23V8c0-1.1-.9-2-2-2zm0 12H4V6h5.17l2 2H20v10zm-2-6H6v-2h12v2zm-4 4H6v-2h8v2z"}),"TopicOutlined");MD=VT.default=IRe;const DD=(e,t={})=>{const{isEnterprise:n}=At(),{data:r,error:o,mutate:i}=bl(!!e&&n(),void 0,Ot(`api/admin/roles/${e}`),$3,t),{data:a,error:s,mutate:c}=bl(!!e&&!n(),{rootRoles:[]},Ot("api/admin/user-admin"),$3,t);return m.useMemo(()=>n()?{role:r,loading:!o&&!r,refetch:()=>i(),error:o}:{role:{...((a==null?void 0:a.rootRoles)??[]).find(({id:u})=>u===+e),permissions:[]},loading:!s&&!a,refetch:()=>c(),error:s},[r,o,i,a,s,c])},$3=e=>fetch(e).then(vn("Role")).then(t=>t.json()),dc=e=>e.environment?`${e.id}-${e.environment}`:`${e.id}`,y8e=e=>e.reduce((t,n)=>(t[dc(n)]=n,t),{}),b8e=(e,t)=>{let n=Xh(e);return n[dc(t)]?delete n[dc(t)]:n[dc(t)]={...t},n},w8e=(e,t)=>{let n=Xh(e);return t.every(o=>n[dc(o)])?t.forEach(o=>{delete n[dc(o)]}):t.forEach(o=>{n[dc(o)]={...o}}),n},ORe=e=>e.filter(({name:n})=>n!=="ADMIN").reduce((n,r)=>{var a;const o=((a=yEe.find(s=>s.permissions.includes(r.name)))==null?void 0:a.label)||"Other",i=n.find(({label:s})=>s===o);return i?i.permissions.push(r):n.push({label:o,type:"root",permissions:[r]}),n},[]).sort(NRe),$Re=e=>{const t=e.filter(({type:o})=>o===KAe),n=e.filter(({type:o})=>o===YAe),r=[];return t.length&&r.push({label:"Project",type:"project",permissions:t}),r.push(...n.reduce((o,i)=>{const a=i.environment,s=o.find(({label:c})=>c===a);return s?s.permissions.push(i):o.push({label:a,type:"environment",permissions:[i]}),o},[])),r},S8e=(e,t)=>[...e,...t.flatMap(({permissions:n})=>n)],NRe=({label:e},{label:t})=>e==="Other"&&t!=="Other"?1:e!=="Other"&&t==="Other"?-1:e.localeCompare(t),LRe=C("div",{shouldForwardProp:e=>e!=="tooltip"})(({theme:e,tooltip:t})=>({width:"100%",maxWidth:e.spacing(50),padding:t?e.spacing(1):e.spacing(3),backgroundColor:t?e.palette.background.paper:e.palette.neutral.light,color:e.palette.text.secondary,fontSize:e.fontSizes.smallBody,borderRadius:e.shape.borderRadiusMedium})),MRe=C("div")(({theme:e})=>({marginTop:e.spacing(2)})),N3=C("p")(({theme:e})=>({color:e.palette.text.primary,fontSize:e.fontSizes.smallBody,fontWeight:e.fontWeight.bold,marginBottom:e.spacing(1)})),DRe=C("p")(({theme:e})=>({fontSize:e.fontSizes.smallBody,marginTop:e.spacing(1)})),BRe=({roleId:e,tooltip:t,...n})=>{const{role:r}=DD(e.toString());if(!r)return null;const{name:o,description:i,permissions:a,type:s}=r,u=ZAe.includes(s)?$Re(a):ORe(a);return x(LRe,{tooltip:t,...n,children:[l(N3,{sx:{mb:0},children:o}),l(DRe,{children:i}),l(Y,{condition:!QAe.includes(r.type),show:()=>u.map(({label:d,permissions:p})=>x(MRe,{children:[l(N3,{children:d}),p.map(f=>l("p",{children:f.displayName},f.id))]},d))})]})},FRe=({roleId:e})=>{const{role:t}=DD(e.toString());return t?l(kd,{title:l(BRe,{roleId:e,tooltip:!0}),arrow:!0,children:l(Zt,{color:"success",icon:l(Rle,{}),sx:{cursor:"pointer"},children:t.name})}):null},zRe=C("div")(({theme:e})=>({display:"flex",flexDirection:"row",alignItems:"center",padding:e.spacing(6),borderRadius:e.shape.borderRadiusLarge,backgroundColor:e.palette.background.alternative,color:e.palette.primary.contrastText,marginBottom:e.spacing(3),boxShadow:e.boxShadows.primaryHeader})),jRe=C("div")(()=>({flexGrow:1})),URe=C(se)(({theme:e})=>({fontSize:e.spacing(3.75)})),WRe=C(uE)(({theme:e})=>({width:e.spacing(9.5),height:e.spacing(9.5),marginRight:e.spacing(3)})),L3=C(se)(({theme:e})=>({fontSize:e.fontSizes.mainHeader,marginBottom:e.spacing(3)})),HRe=C("div")(({theme:e})=>({display:"flex",flexDirection:"row","& > div > p":{marginBottom:e.spacing(1.5)}})),VRe=C(Zt)(({theme:e})=>({cursor:"pointer",marginRight:e.spacing(1)})),GRe=C("div")(({theme:e})=>({width:"100%",height:"1px",backgroundColor:e.palette.divider,margin:e.spacing(3,0)})),qRe=C(As)(({theme:e})=>({marginTop:e.spacing(1.5),width:e.spacing(30)})),YRe=C(Mh)(({theme:e})=>({backgroundColor:e.palette.background.paper})),KRe=({user:e})=>{const{profile:t}=kRe(),n=gt(),{locationSettings:r,setLocationSettings:o}=Za(),[i,a]=m.useState(),[s,c]=m.useState(["en-US","en-GB","nb-NO","sv-SE","da-DK","en-IN","de","cs","pt-BR","fr-FR"]);m.useEffect(()=>{const d=s.find(p=>p.toLowerCase().includes(r.locale.toLowerCase()));a(d),d||c(p=>[...p,r.locale])},[r]);const u=d=>{const p=d.target.value;a(p),o({locale:p})};return x(me,{children:[x(zRe,{children:[l(WRe,{user:e}),x(jRe,{children:[l(URe,{children:e.name||e.username}),l(se,{variant:"body1",children:e.email})]})]}),x(wr,{children:[l(L3,{children:"Access"}),x(HRe,{children:[l(Le,{sx:{width:"50%"},children:l(Y,{condition:!!(t!=null&&t.rootRole),show:()=>x(me,{children:[l(se,{variant:"body2",children:"Your root role"}),l(FRe,{roleId:t==null?void 0:t.rootRole.id})]})})}),x(Le,{children:[l(se,{variant:"body2",children:"Projects"}),l(Y,{condition:!!(t!=null&&t.projects.length),show:t==null?void 0:t.projects.map(d=>l(Et,{title:"View project",arrow:!0,placement:"bottom-end",describeChild:!0,children:l(VRe,{onClick:p=>{p.preventDefault(),n(`/projects/${d}`)},color:"secondary",icon:l(MD,{}),children:d})},d)),elseShow:l(Et,{title:"You are not assigned to any projects",arrow:!0,describeChild:!0,children:l(Zt,{children:"No projects"})})})]})]}),l(GRe,{}),l(L3,{children:"Settings"}),l(se,{variant:"body2",children:"This is the format used across the system for time and date"}),x(qRe,{variant:"outlined",size:"small",children:[l(YRe,{htmlFor:"locale-select",children:"Date/Time formatting"}),l(Dh,{id:"locale-select",value:i||"",native:!0,onChange:u,MenuProps:{style:{zIndex:9999}},children:s.map(d=>l("option",{value:d,children:d},d))})]})]})]})},XRe=()=>{const{user:e}=di(),t=ko(),n=gt(),{config:r,loading:o}=_D("simple"),{uiConfig:i}=At(),a=[{id:"profile",label:"Profile"},{id:"password",label:"Change password",path:"change-password",hidden:r.disabled},{id:"pat",label:"Personal API tokens",path:"personal-api-tokens",hidden:i.flags.personalAccessTokensKillSwitch}],s=p=>{n(p.path?`/profile/${p.path}`:"/profile",{replace:!0}),d(p.id)},c=()=>{const p=t.pathname;return(a.find(({path:h})=>h&&p.includes(h))||a[0]).id},[u,d]=m.useState(c());return m.useEffect(()=>{d(c())},[t]),o?null:x(HAe,{tabs:a,value:u,onChange:s,children:[l(Y,{condition:u==="profile",show:l(KRe,{user:e})}),l(Y,{condition:u==="password",show:l(qAe,{})}),l(Y,{condition:u==="pat",show:l(TRe,{})})]})},JRe=m.lazy(()=>import("./CreateProject-3de26b03.js")),QRe=m.lazy(()=>import("./FeatureViewLazyExport-440af9f1.js")),ZRe=m.lazy(()=>import("./LazyAdminExport-2f4272d5.js")),e_e=m.lazy(()=>import("./LazyProjectExport-eb893846.js")),t_e=()=>l(Pc,{to:"/admin/users",replace:!0}),n_e=()=>{const{isEnterprise:e}=At(),{data:t,error:n,mutate:r}=bl(e(),{events:[]},Ot("api/admin/logins"),r_e);return m.useMemo(()=>({events:(t==null?void 0:t.events)??[],loading:!n&&!t,refetch:()=>r(),error:n}),[t,n,r])},r_e=e=>fetch(e).then(vn("Login History")).then(t=>t.json()),M3=C(Le)(()=>({display:"flex",justifyContent:"center"})),o_e=({row:e,value:t})=>{const{searchQuery:n}=Rl();return t?l(M3,{children:l(Zt,{color:"success",children:"True"})}):l(M3,{children:l(kd,{arrow:!0,title:l(Ha,{search:n,children:e.original.failure_reason}),children:l(Zt,{color:"error",children:"False"})})})},i_e=C(Le)(()=>({display:"flex",justifyContent:"center"})),a_e=({onDelete:e})=>l(i_e,{children:l($r,{"data-loading":!0,onClick:e,permission:pi,tooltipProps:{title:"Remove event"},children:l(go,{})})}),s_e=({event:e,open:t,setOpen:n,onConfirm:r})=>x(Zn,{title:"Delete event?",open:t,primaryButtonText:"Delete event",secondaryButtonText:"Cancel",onClick:()=>r(e),onClose:()=>{n(!1)},children:["You are about to delete event: ",x("strong",{children:["#",e==null?void 0:e.id]})]}),l_e=()=>{const{loading:e,makeRequest:t,createRequest:n,errors:r}=Yn({propagateErrors:!0});return{downloadCSV:async()=>{const c=n("api/admin/logins",{method:"GET",responseType:"blob",headers:{Accept:"text/csv"}},"downloadCSV"),u=await(await t(c.caller,c.id)).blob(),d=window.URL.createObjectURL(u);window.location.assign(d)},removeEvent:async s=>{const c="removeEvent",u=n(`api/admin/logins/${s}`,{method:"DELETE"},c);await t(u.caller,u.id)},removeAllEvents:async()=>{const c=n("api/admin/logins",{method:"DELETE"},"removeAllEvents");await t(c.caller,c.id)},errors:r,loading:e}},c_e=({open:e,setOpen:t,onConfirm:n})=>x(Zn,{title:"Clear login history?",open:e,primaryButtonText:"Clear login history",secondaryButtonText:"Cancel",onClick:n,onClose:()=>{t(!1)},children:["You are about to clear the login history.",l("br",{}),"This will delete all the login events."]}),u_e={id:"created_at"},{value:D3,setValue:d_e}=Oc("LoginHistoryTable:v1",u_e),p_e={simple:"Password",oidc:"OIDC",saml:"SAML",google:"Google"},f_e=()=>{const{setToastData:e,setToastApiError:t}=Nt(),{events:n,loading:r,refetch:o}=n_e(),{removeEvent:i,removeAllEvents:a,downloadCSV:s}=l_e(),[c,u]=vd(),[d]=m.useState(()=>({sortBy:[{id:c.get("sort")||D3.id,desc:c.has("order")?c.get("order")==="desc":D3.desc}],hiddenColumns:["failure_reason"],globalFilter:c.get("search")||""})),[p,f]=m.useState(d.globalFilter),[h,g]=m.useState(),[v,y]=m.useState(!1),[b,w]=m.useState(!1),S=async G=>{try{await i(G.id),e({title:"Event has been deleted",type:"success"}),o(),y(!1)}catch(te){t(ht(te))}},k=async()=>{try{await a(),e({title:"History has been cleared",type:"success"}),o(),w(!1)}catch(G){t(ht(G))}},R=nr(sa.breakpoints.down("sm")),T=nr(sa.breakpoints.down("md")),A=m.useMemo(()=>[{Header:"Created",accessor:"created_at",Cell:({value:G})=>l(LD,{value:G,dateFormat:C1}),sortType:"date",maxWidth:150},{Header:"Username",accessor:"username",minWidth:100,Cell:al,searchable:!0},{Header:"Authentication",accessor:G=>p_e[G.auth_type]||G.auth_type,width:150,maxWidth:150,Cell:al,searchable:!0,filterName:"auth"},{Header:"IP address",accessor:"ip",Cell:al,searchable:!0},{Header:"Success",accessor:"successful",align:"center",Cell:o_e,filterName:"success",filterParsing:G=>G.toString()},{Header:"Actions",id:"Actions",align:"center",Cell:({row:{original:G}})=>l(a_e,{onDelete:()=>{g(G),y(!0)}}),width:150,disableSortBy:!0},{accessor:"failure_reason",Header:"Failure Reason",searchable:!0}],[]),{data:P,getSearchText:_,getSearchContext:I}=Wh(A,p,n),{headerGroups:$,rows:z,prepareRow:B,state:{sortBy:L},setHiddenColumns:q}=tn.useTable({columns:A,data:P,initialState:d,sortTypes:ai,autoResetHiddenColumns:!1,autoResetSortBy:!1,disableSortRemove:!0,disableMultiSort:!0,defaultColumn:{Cell:er}},tn.useSortBy,tn.useFlexLayout);return Rd([{condition:R,columns:["role","seenAt"]},{condition:T,columns:["imageUrl","tokens","createdAt"]}],q,A),m.useEffect(()=>{const G={};G.sort=L[0].id,L[0].desc&&(G.order="desc"),p&&(G.search=p),u(G,{replace:!0}),d_e({id:L[0].id,desc:L[0].desc||!1})},[L,p,u]),x(wr,{isLoading:r,header:l(On,{title:`Login history (${z.length})`,actions:x(me,{children:[l(Y,{condition:!T,show:l(Eo,{initialValue:p,onChange:f,hasFilters:!0,getSearchContext:I})}),l(Y,{condition:z.length>0,show:x(me,{children:[l(Y,{condition:!T,show:l(On.Divider,{})}),l(Et,{title:"Download login history",arrow:!0,children:l(Ht,{onClick:s,children:l(ple,{})})}),l(Et,{title:"Clear login history",arrow:!0,children:l(Ht,{onClick:()=>w(!0),children:l(go,{})})})]})})]}),children:l(Y,{condition:T,show:l(Eo,{initialValue:p,onChange:f,hasFilters:!0,getSearchContext:I})})}),children:[l(_s,{value:_(p),children:l(S1,{rows:z,headerGroups:$,prepareRow:B})}),l(Y,{condition:z.length===0,show:l(Y,{condition:(p==null?void 0:p.length)>0,show:x(ir,{children:["No login events found matching “",p,"”"]}),elseShow:l(ir,{children:"No login events available."})})}),l(s_e,{event:h,open:v,setOpen:y,onConfirm:S}),l(c_e,{open:b,setOpen:w,onConfirm:k})]})},h_e=()=>l("div",{children:l(pD,{permissions:pi,children:l(f_e,{})})}),hh=[{path:"/splash/:splashId",title:"Unleash",component:fTe,type:"protected",menu:{},isStandalone:!0},{path:"/projects/create",parent:"/projects",title:"Create",component:JRe,type:"protected",enterprise:!0,menu:{}},{path:"/projects/:projectId/edit",parent:"/projects",title:":projectId",component:ICe,type:"protected",enterprise:!0,menu:{}},{path:"/projects/:projectId/archived",title:":projectId",parent:"/archive",component:cve,type:"protected",menu:{}},{path:"/projects/:projectId/features/:featureId/:activeTab/copy",parent:"/projects/:projectId/features/:featureId/:activeTab",title:"Copy",component:G2e,type:"protected",menu:{}},{path:"/projects/:projectId/features/:featureId/edit",parent:"/projects",title:"Edit feature",component:o2e,type:"protected",menu:{}},{path:"/projects/:projectId/features/:featureId/*",parent:"/projects",title:"FeatureView",component:QRe,type:"protected",menu:{}},{path:"/projects/:projectId/create-toggle",parent:"/projects/:projectId/features",title:"Create feature toggle",component:WCe,type:"protected",menu:{}},{path:"/projects/:projectId/features2/:featureId",parent:"/features",title:":featureId",component:y3,type:"protected",menu:{}},{path:"/projects/:projectId/*",parent:"/projects",title:":projectId",component:e_e,flag:Kme,type:"protected",menu:{}},{path:"/projects",title:"Projects",component:lve,type:"protected",menu:{mobile:!0}},{path:"/features/:activeTab/:featureId",parent:"/features",title:":featureId",component:y3,type:"protected",menu:{}},{path:"/features",title:"Feature toggles",component:hfe,type:"protected",menu:{mobile:!0}},{path:"/playground",title:"Playground",component:BAe,hidden:!1,type:"protected",menu:{mobile:!0}},{path:"/applications/:name",title:":name",parent:"/applications",component:u2e,type:"protected",menu:{}},{path:"/applications",title:"Applications",component:d2e,type:"protected",menu:{mobile:!0,advanced:!0}},{path:"/context/create",parent:"/context",title:"Create",component:gTe,type:"protected",menu:{}},{path:"/context/edit/:name",parent:"/context",title:":name",component:sCe,type:"protected",menu:{}},{path:"/context",title:"Context fields",component:h2e,type:"protected",menu:{mobile:!0,advanced:!0}},{path:"/strategies/create",title:"Create",parent:"/strategies",component:JEe,type:"protected",menu:{}},{path:"/strategies/:name/edit",title:":name",parent:"/strategies",component:QEe,type:"protected",menu:{}},{path:"/strategies/:name",title:":name",parent:"/strategies",component:ehe,type:"protected",menu:{}},{path:"/strategies",title:"Strategy types",component:Bhe,type:"protected",menu:{mobile:!0,advanced:!0}},{path:"/environments/create",title:"Environments",component:Zve,parent:"/environments",type:"protected",menu:{}},{path:"/environments/:id",title:"Edit",component:nye,type:"protected",menu:{}},{path:"/environments",title:"Environments",component:Kke,type:"protected",flag:Xme,menu:{mobile:!0,advanced:!0}},{path:"/tag-types/create",parent:"/tag-types",title:"Create",component:vCe,type:"protected",menu:{}},{path:"/tag-types/edit/:name",parent:"/tag-types",title:":name",component:gCe,type:"protected",menu:{}},{path:"/tag-types",title:"Tag types",component:jhe,type:"protected",menu:{mobile:!0,advanced:!0}},{path:"/addons/create/:providerId",parent:"/addons",title:"Create",component:D2e,type:"protected",menu:{}},{path:"/addons/edit/:addonId",parent:"/addons",title:"Edit",component:B2e,type:"protected",menu:{}},{path:"/addons",title:"Addons",component:Qhe,hidden:!1,type:"protected",menu:{mobile:!0,advanced:!0}},{path:"/segments/create",title:"Segments",component:JTe,hidden:!1,type:"protected",layout:"main",menu:{},flag:Gb},{path:"/segments/edit/:segmentId",title:"Segments",component:eke,hidden:!1,type:"protected",layout:"main",menu:{},flag:Gb},{path:"/segments",title:"Segments",component:fAe,hidden:!1,type:"protected",menu:{mobile:!0,advanced:!0},flag:Gb},{path:"/history",title:"Event log",component:NEe,type:"protected",menu:{adminSettings:!0}},{path:"/admin/logins",title:"Login history",component:h_e,type:"protected",menu:{adminSettings:!0}},{path:"/archive",title:"Archived toggles",component:LAe,type:"protected",menu:{}},{path:"/admin",title:"Admin",component:t_e,hidden:!1,type:"protected",menu:{}},{path:"/admin/*",title:"Admin",component:ZRe,hidden:!1,type:"protected",menu:{}},{path:"/profile/*",title:"Profile",component:XRe,type:"protected",menu:{}},{path:"/login",title:"Log in",component:Yme,type:"unprotected",hidden:!0,menu:{},isStandalone:!0},{path:"/new-user",title:"New user",hidden:!0,component:Cge,type:"unprotected",menu:{},isStandalone:!0},{path:"/reset-password",title:"Reset password",hidden:!0,component:kge,type:"unprotected",menu:{},isStandalone:!0},{path:"/forgotten-password",title:"Forgotten password",hidden:!0,component:$ge,type:"unprotected",menu:{},isStandalone:!0}],m_e=[{path:"/history",title:"Event log",menu:{adminSettings:!0}},{path:"/admin/logins",title:"Login history",menu:{adminSettings:!0,mode:["enterprise"]}},{path:"/admin/users",title:"Users",menu:{adminSettings:!0}},{path:"/admin/groups",title:"Groups",menu:{adminSettings:!0,mode:["enterprise"]},flag:Jme},{path:"/admin/roles/*",title:"Roles",menu:{adminSettings:!0,mode:["enterprise"]}},{path:"/admin/auth",title:"Single sign-on",menu:{adminSettings:!0}},{path:"/admin/instance",title:"Instance stats",menu:{adminSettings:!0}},{path:"/admin/service-accounts",title:"Service accounts",menu:{adminSettings:!0,mode:["enterprise"]}},{path:"/admin/network/*",title:"Network",menu:{adminSettings:!0,mode:["pro","enterprise"]},configFlag:"networkViewEnabled"},{path:"/admin/maintenance",title:"Maintenance",menu:{adminSettings:!0}},{path:"/admin/cors",title:"CORS origins",flag:"embedProxyFrontend",menu:{adminSettings:!0}},{path:"/admin/admin-invoices",title:"Billing & invoices",menu:{adminSettings:!0,mode:["pro"]}}],g_e=hh.filter(e=>!e.hidden),v_e=()=>{const e=g_e.filter(o=>o.menu.advanced),t=hh.filter(o=>o.menu.adminSettings),n=hh.filter(o=>o.menu.mobile),r={mainNavRoutes:e,adminRoutes:t,mobileRoutes:n};return()=>r},B3=e=>e.map(t=>({path:t.path,flag:t.flag,title:t.title,menu:t.menu,configFlag:t.configFlag})),y_e=v_e(),b_e=(e={})=>{const t=Ot("api/admin/notifications"),{data:n,error:r,mutate:o}=Rn(t,w_e,e),i=m.useCallback(()=>{o().catch(console.warn)},[o]);return{notifications:n,error:r,loading:!r&&!n,refetchNotifications:i,mutateNotifications:o}},w_e=async e=>await(await fetch(e).then(vn("Notifications"))).json();var GT={},S_e=Tn;Object.defineProperty(GT,"__esModule",{value:!0});var qT=GT.default=void 0,x_e=S_e(kn()),C_e=An,E_e=(0,x_e.default)((0,C_e.jsx)("path",{d:"M12 22c1.1 0 2-.9 2-2h-4c0 1.1.89 2 2 2zm6-6v-5c0-3.07-1.64-5.64-4.5-6.32V4c0-.83-.67-1.5-1.5-1.5s-1.5.67-1.5 1.5v.68C7.63 5.36 6 7.92 6 11v5l-2 2v1h16v-1l-2-2z"}),"Notifications");qT=GT.default=E_e;const T_e=C(Le)(({theme:e})=>({padding:e.spacing(1,1.5,1,3),display:"flex",justifyContent:"space-between",alignItems:"center",position:"relative",boxShadow:e.boxShadows.separator})),k_e=({children:e})=>l(me,{children:x(T_e,{children:[l(se,{fontWeight:"bold",children:"Notifications"}),e]})}),A_e=C(ia)(({theme:e})=>({padding:e.spacing(1,1,3,1)})),R_e=({children:e})=>l(A_e,{"data-testid":"NOTIFICATIONS_LIST",children:e}),__e=e=>m.createElement("svg",{width:18,height:14,viewBox:"0 0 18 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e},m.createElement("path",{d:"M0.59 2.00016L2 0.590157L5.41 4.00016L4 5.41016L0.59 2.00016ZM13 11.5002L13 8.00016L7.41 8.00016L2 13.4102L0.59 12.0002L6.59 6.00016L13 6.00016L13 2.50016L17.5 7.00016L13 11.5002Z",fill:"currentColor"})),F3=C(Le,{shouldForwardProp:e=>e!=="readAt"})(({theme:e,readAt:t})=>({padding:e.spacing(.5),marginRight:e.spacing(1.5),backgroundColor:t?e.palette.neutral.light:e.palette.secondary.light,width:"30px",height:"30px",display:"flex",justifyContent:"center",alignItems:"center",borderRadius:`${e.shape.borderRadius}px`,top:3,left:7})),P_e=C(Fee)(({theme:e})=>({position:"relative",cursor:"pointer",padding:e.spacing(2.5,2,3,2),borderRadius:e.shape.borderRadiusMedium,width:"100%","&:after":{content:'""',width:`calc(100% - ${e.spacing(4)})`,height:"1px",position:"absolute",bottom:0,backgroundColor:e.palette.divider}})),I_e=C(Le)(({theme:e})=>({display:"flex",flexDirection:"column",width:"100%"})),O_e=C(Le)(({theme:e})=>({display:"flex",justifyContent:"space-between",alignItems:"center",margin:e.spacing(1,0,0,5.25)})),$_e=C(se,{shouldForwardProp:e=>e!=="readAt"})(({theme:e,readAt:t})=>({display:"flex",alignItems:"center",fontSize:e.fontSizes.smallBody,fontWeight:t?"normal":"bold",textDecoration:"none",color:"inherit",wordBreak:"break-all"})),N_e=C(se)(({theme:e})=>({fontSize:e.fontSizes.smallerBody,color:e.palette.neutral.main})),L_e=C(Le)(({theme:e})=>({...Ic})),M_e=C(Cd)(({theme:e})=>({width:"18px",height:"18px"})),D_e=C(se)(({theme:e})=>({fontSize:e.fontSizes.smallBody,color:e.palette.neutral.main,marginLeft:e.spacing(1)})),B_e=({notification:e,onNotificationClick:t})=>{const n=gn(),{readAt:r}=e;return l(P_e,{onClick:()=>t(e),children:x(I_e,{children:[x($_e,{readAt:!!r,children:[(i=>{if(i==="change-request")return l(F3,{readAt:!!r,children:l(__e,{color:e.readAt?n.palette.neutral.main:n.palette.primary.main,style:{transform:"scale(0.8)"}})});if(i==="toggle")return l(F3,{readAt:!!r,children:l(Ole,{sx:a=>({height:"20px",width:"20px",color:r?a.palette.neutral.main:a.palette.primary.main})})})})(e.notificationType)," ",e.message]}),x(O_e,{children:[x(L_e,{children:[l(M_e,{src:e.createdBy.imageUrl||""}),x(D_e,{children:["Created by ",e.createdBy.username]})]}),l(N_e,{children:l(E1,{date:new Date(e.createdAt)})})]})]})})},F_e=C(Le)(()=>({display:"flex",justifyContent:"center",alignItems:"center",flexDirection:"column",minHeight:"150px"})),z_e=C(qT)(({theme:e})=>({height:"30px",width:"30px",color:e.palette.neutral.main,marginBottom:e.spacing(1)})),j_e=({text:e})=>x(F_e,{children:[l(z_e,{}),l(se,{color:"neutral.main",children:e})]}),U_e=()=>{const{makeRequest:e,createRequest:t,errors:n,loading:r}=Yn({propagateErrors:!0});return{loading:r,errors:n,markAsRead:async i=>{const s=t("api/admin/notifications/read",{method:"POST",body:JSON.stringify(i)});try{await e(s.caller,s.id)}catch(c){throw c}}}},W_e=C(Le)(({theme:e})=>({display:"flex",gap:e.spacing(1),marginTop:e.spacing(.5)})),H_e=({id:e,localStorageKey:t,eventName:n})=>{var d;const{uiConfig:r}=At(),{value:o,setValue:i}=Oc(`${r.baseUriPath}:${t}:v1:${e}`,{}),[a,s]=m.useState(o.value),{trackEvent:c}=xr();if(!((d=r==null?void 0:r.flags)!=null&&d.T)||a)return null;const u=p=>{s(p),i({value:p}),c(n,{props:{eventType:e,wasHelpful:p==="yes"}})};return x(Sr,{elevation:0,sx:{background:p=>p.palette.neutral.light,padding:p=>p.spacing(1.5,2),marginTop:p=>p.spacing(1.5)},children:["Was this information useful to you?",x(W_e,{children:[l(Ve,{size:"small",variant:a==="yes"?"contained":"outlined",sx:{padding:0},onClick:()=>u("yes"),disabled:!!a,children:"Yes"}),l(Ve,{size:"small",variant:a==="no"?"contained":"outlined",sx:{padding:0},onClick:()=>u("no"),disabled:!!a,children:"No"})]})]})},V_e=C(Le)(()=>({position:"relative"})),G_e=C(Le)(({theme:e})=>({backgroundColor:e.palette.background.elevation1,display:"flex",justifyContent:"center"})),q_e=C(se)(({theme:e})=>({fontWeight:"bold",fontSize:e.fontSizes.smallBody,color:e.palette.primary.main,textAlign:"center"})),Y_e=C(Sr)(({theme:e})=>({width:"420px",boxShadow:e.boxShadows.popup,borderRadius:`${e.shape.borderRadiusLarge}px`,position:"absolute",right:-100,top:60,maxHeight:"80vh",overflowY:"auto"})),K_e=C(Le)(({theme:e})=>({backgroundColor:e.palette.primary.main,borderRadius:"100%",width:"7px",height:"7px",position:"absolute",top:7,right:4})),X_e=C(Le)(()=>({...Ic})),J_e=C(se)(({theme:e})=>({fontSize:e.fontSizes.smallBody})),Q_e=C(Ht)(({theme:e})=>({"&:focus-visible":{outlineStyle:"solid",outlineWidth:2,outlineColor:e.palette.primary.main,borderRadius:"100%"}})),Z_e=()=>{const[e,t]=m.useState(!1),{notifications:n,refetchNotifications:r}=b_e({refreshInterval:15e3}),o=gt(),{markAsRead:i}=U_e(),{uiConfig:a}=At(),{trackEvent:s}=xr(),[c,u]=m.useState(!1),d=async w=>{var S;w.link&&o(w.link),(S=a==null?void 0:a.flags)!=null&&S.T&&s("notifications",{props:{eventType:w.notificationType}}),t(!1);try{await i({notifications:[w.id]}),r()}catch(k){console.error("Error marking notification as read: ",k)}},p=async()=>{try{n&&n.length>0&&(await i({notifications:n.map(w=>w.id)}),r())}catch(w){console.error("Error marking all notification as read: ",w)}},f=w=>{w.key==="Escape"&&t(!1)},h=n==null?void 0:n.filter(w=>w.readAt===null),g=!!(h&&h.length>0),v=w=>c?!w.readAt:!0,y=n==null?void 0:n.filter(v).map(w=>l(B_e,{notification:w,onNotificationClick:d},w.id)),b=!!(n&&n.length>0&&!c);return x(V_e,{children:[x(Q_e,{onClick:()=>t(!e),"data-testid":"NOTIFICATIONS_BUTTON",disableFocusRipple:!0,children:[l(Y,{condition:g,show:l(K_e,{})}),l(qT,{})]}),l(Y,{condition:e,show:l(IN,{onClickAway:()=>t(!1),children:x(Y_e,{className:"dropdown-outline",onKeyDown:f,"data-testid":"NOTIFICATIONS_MODAL",children:[l(k_e,{children:x(X_e,{children:[l(J_e,{children:"Show only unread"}),l(Qa,{onClick:()=>u(!c),checked:c})]})}),l(Y,{condition:g,show:l(G_e,{"data-testid":"UNREAD_NOTIFICATIONS",children:l(Ve,{onClick:p,children:x(q_e,{children:["Mark all as read (",h==null?void 0:h.length,")"]})})})})," ",l(Y,{condition:(y==null?void 0:y.length)===0,show:l(j_e,{text:c?"No unread notifications":"No new notifications"})}),l(R_e,{children:y}),l(Y,{condition:b,show:x(me,{children:[l(H_e,{eventName:"notifications",id:"useful",localStorageKey:"NotificationsUsefulPrompt"}),l("br",{})]})})]})})})]})},z3=C(rK)(({theme:e})=>({backgroundColor:e.palette.background.paper,padding:e.spacing(1),boxShadow:"none",position:"relative",zIndex:300})),j3=C(AJ)(({theme:e})=>({display:"flex",alignItems:"center",maxWidth:1280,"&&&":{padding:0}})),U3=C("div")({marginLeft:"auto",display:"flex",alignItems:"center"}),ePe=C("nav")({display:"flex",alignItems:"center",flexGrow:1}),tPe=C(uL)({width:"150px"}),nPe=C(cL)({width:"150px"}),rPe=C("div")(({theme:e})=>({display:"flex",justifyContent:"center",marginLeft:e.spacing(3),"& a":{textDecoration:"none",color:"inherit",marginRight:e.spacing(3),display:"flex",alignItems:"center"}})),oPe=C("button")(({theme:e})=>({...zi(e),border:"none",background:"transparent",height:"100%",display:"flex",fontSize:e.fontSizes.bodySize,fontFamily:e.typography.fontFamily,alignItems:"center",color:"inherit",cursor:"pointer"})),W3=e=>({color:e.palette.neutral.main}),fg=C(cn)(({theme:e})=>zi(e)),iPe=C(Ht)(({theme:e})=>({...zi(e),borderRadius:100})),aPe=()=>{const{onSetThemeMode:e,themeMode:t}=N6(),n=gn(),r=vl(),o=vl(),[i,a]=m.useState(null),[s,c]=m.useState(null),[u,d]=m.useState(!1),{permissions:p}=A1(),{uiConfig:f,isOss:h,isPro:g,isEnterprise:v}=At(),y=nr(n.breakpoints.down("md")),[b,w]=m.useState(!1),S=()=>w(_=>!_),k=()=>a(null),R=()=>c(null);m.useEffect(()=>{(p==null?void 0:p.find(I=>I.permission===pi))&&d(!0)},[p]);const T=y_e(),A=_=>{const{mode:I}=_.menu;return!I||I.includes("pro")&&g()||I.includes("enterprise")&&v()},P={mainNavRoutes:B3(T.mainNavRoutes).concat([{path:"/admin/api",title:"API access",menu:{}}]).filter(Xb(f)),mobileRoutes:B3(T.mobileRoutes).filter(Xb(f)),adminRoutes:m_e.filter(Xb(f)).filter(A).map(_=>({..._,path:_.path.replace("/*","")}))};return y?l(z3,{position:"static",children:x(j3,{children:[l(Et,{title:"Menu",arrow:!0,children:l(Ht,{sx:{color:_=>_.palette.text.primary},onClick:S,"aria-controls":"header-drawer","aria-expanded":b,size:"large",children:l(oL,{})})}),l(rle,{flags:f.flags,links:f.links,open:b,toggleDrawer:S,admin:u,routes:P}),l(U3,{children:l(bP,{})})]})}):l(z3,{position:"static",children:x(j3,{children:[l(fg,{to:"/",sx:Ic,"aria-label":"Home",children:l(Td,{darkmode:l(tPe,{"aria-label":"Unleash logo"}),lightmode:l(nPe,{"aria-label":"Unleash logo"})})}),x(ePe,{children:[x(rPe,{children:[l(fg,{to:"/projects",children:"Projects"}),l(fg,{to:"/features",children:"Feature toggles"}),l(fg,{to:"/playground",children:"Playground"}),x(oPe,{onClick:_=>c(_.currentTarget),"aria-controls":s?o:void 0,"aria-expanded":!!s,children:["Configure",l(ox,{sx:W3})]}),l(kP,{id:o,options:P.mainNavRoutes,anchorEl:s,handleClose:R,style:{top:10}})]}),x(U3,{children:[l(Et,{title:t==="dark"?"Switch to light theme":"Switch to dark theme",arrow:!0,children:l(Ht,{onClick:e,sx:zi,children:l(Y,{condition:t==="dark",show:l(ule,{}),elseShow:l(Cle,{})})})})," ",l(Y,{condition:!h()&&!(f!=null&&f.flags.disableNotifications),show:l(Z_e,{})}),l(Et,{title:"Documentation",arrow:!0,children:l(Ht,{href:"https://docs.getunleash.io/",target:"_blank",rel:"noopener noreferrer",size:"large",disableRipple:!0,sx:zi,children:l(pE,{})})}),l(Y,{condition:u,show:l(Et,{title:"Settings",arrow:!0,children:x(iPe,{onClick:_=>a(_.currentTarget),"aria-controls":i?r:void 0,"aria-expanded":!!i,size:"large",disableRipple:!0,children:[l(iL,{}),l(ox,{sx:W3})]})})}),l(kP,{id:r,options:P.adminRoutes,anchorEl:i,handleClose:k,style:{top:5,left:-100}})," ",l(bP,{})]})]})]})})},sPe=e=>{var n;const t=(n=e.versionInfo)==null?void 0:n.current;return t!=null&&t.enterprise?`${e.name} ${t.enterprise}`:t!=null&&t.oss?`${e.name} ${t.oss}`:`${e.name} ${e.version}`},lPe=e=>{var r,o;const t=(r=e.versionInfo)==null?void 0:r.latest,n=(o=e.versionInfo)==null?void 0:o.isLatest;if(t!=null&&t.enterprise&&!n)return`Upgrade available - Latest Enterprise release: ${t.enterprise}`;if(t!=null&&t.oss&&!n)return`Upgrade available - Latest OSS release: ${t.oss}`},zg=C("h2")(({theme:e})=>({all:"unset",display:"block",margin:e.spacing(2,0),fontSize:e.fontSizes.bodySize,fontWeight:e.fontWeight.bold})),cPe=e=>{var i;const t=(i=e.uiConfig.versionInfo)==null?void 0:i.instanceId,n=sPe(e.uiConfig),r=e.uiConfig.environment,o=lPe(e.uiConfig);return x("section",{title:"API details",children:[x(zg,{children:[n," ",l(Y,{condition:!!r,show:x("small",{children:["(",r,")"]})})]}),l(Y,{condition:!!o,show:x("small",{children:[o,l("br",{})]})}),l("br",{}),l("small",{children:e.uiConfig.slogan}),l("br",{}),l(Y,{condition:!!t,show:l("small",{children:`${t}`})})]})},uPe=C("footer")(({theme:e})=>({padding:e.spacing(4,8),width:"100%",flexGrow:1,zIndex:100,backgroundColor:e.palette.background.paper})),yw=C(ia)({padding:0,margin:0}),ur=C(Ia)(({theme:e})=>({padding:0,margin:0,"& a":{...zi(e),textDecoration:"none",color:e.palette.text.primary,"&:hover":{textDecoration:"underline"}}})),dPe=()=>{const{uiConfig:e}=At();return l(uPe,{children:x(Wn,{container:!0,justifyContent:"center",spacing:10,style:{marginBottom:0},children:[l(Wn,{item:!0,md:4,xs:12,children:l(cPe,{uiConfig:e})}),l(Wn,{item:!0,xs:12,md:"auto",children:x(Wn,{container:!0,spacing:7,direction:"row",children:[l(Wn,{item:!0,children:x("section",{title:"Unleash SDK",children:[l(zg,{children:"Server SDKs"}),x(yw,{dense:!0,children:[l(ur,{children:l(rn,{primary:l("a",{href:"https://docs.getunleash.io/reference/sdks/node",target:"_blank",rel:"noreferrer",children:"Node.js"})})}),l(ur,{children:l(rn,{primary:l("a",{href:"https://docs.getunleash.io/reference/sdks/java",target:"_blank",rel:"noreferrer",children:"Java"})})}),l(ur,{children:l(rn,{primary:l("a",{href:"https://docs.getunleash.io/reference/sdks/go",target:"_blank",rel:"noreferrer",children:"Go"})})})," ",l(ur,{children:l(rn,{primary:l("a",{href:"https://docs.getunleash.io/reference/sdks/rust",target:"_blank",rel:"noreferrer",children:"Rust"})})})," ",l(ur,{children:l(rn,{primary:l("a",{href:"https://docs.getunleash.io/reference/sdks/ruby",target:"_blank",rel:"noreferrer",children:"Ruby"})})})," ",l(ur,{children:l(rn,{primary:l("a",{href:"https://docs.getunleash.io/reference/sdks/python",target:"_blank",rel:"noreferrer",children:"Python"})})}),l(ur,{children:l(rn,{primary:l("a",{href:"https://docs.getunleash.io/reference/sdks/dotnet",target:"_blank",rel:"noreferrer",children:".NET"})})}),l(ur,{children:l(rn,{primary:l("a",{href:"https://docs.getunleash.io/reference/sdks/php",target:"_blank",rel:"noreferrer",children:"PHP"})})}),l(ur,{children:l(rn,{primary:l("a",{href:"https://docs.getunleash.io/reference/sdks",target:"_blank",rel:"noreferrer",children:"All SDKs"})})})]})]})}),l(Wn,{item:!0,children:x("section",{title:"Unleash SDK",children:[l(zg,{children:"Frontend SDKs"}),x(yw,{dense:!0,children:[l(ur,{children:l(rn,{primary:l("a",{href:"https://docs.getunleash.io/reference/unleash-proxy",target:"_blank",rel:"noreferrer",children:"Unleash Proxy"})})}),l(ur,{children:l(rn,{primary:l("a",{href:"https://docs.getunleash.io/reference/sdks/javascript-browser",target:"_blank",rel:"noreferrer",children:"JavaScript"})})}),l(ur,{children:l(rn,{primary:l("a",{href:"https://docs.getunleash.io/reference/sdks/react",target:"_blank",rel:"noreferrer",children:"React"})})}),l(ur,{children:l(rn,{primary:l("a",{href:"https://docs.getunleash.io/reference/sdks/next-js",target:"_blank",rel:"noreferrer",children:"Next.js"})})}),l(ur,{children:l(rn,{primary:l("a",{href:"https://docs.getunleash.io/reference/sdks/vue",target:"_blank",rel:"noreferrer",children:"Vue"})})}),l(ur,{children:l(rn,{primary:l("a",{href:"https://docs.getunleash.io/reference/sdks/ios-proxy",target:"_blank",rel:"noreferrer",children:"iOS"})})}),l(ur,{children:l(rn,{primary:l("a",{href:"https://docs.getunleash.io/reference/sdks/android-proxy",target:"_blank",rel:"noreferrer",children:"Android"})})}),l(ur,{children:l(rn,{primary:l("a",{href:"https://docs.getunleash.io/reference/sdks/flutter",target:"_blank",rel:"noreferrer",children:"Flutter"})})})]})]})}),l(Wn,{item:!0,children:x("section",{children:[l(zg,{children:"About"}),x(yw,{dense:!0,children:[l(ur,{children:l(rn,{primary:l("a",{href:"https://www.getunleash.io/",target:"_blank",rel:"noreferrer",children:"getunleash.io"})})}),l(ur,{children:l(rn,{primary:l("a",{href:"https://twitter.com/getunleash",target:"_blank",rel:"noreferrer",children:"Twitter"})})}),l(ur,{children:l(rn,{primary:l("a",{href:"https://www.linkedin.com/company/getunleash",target:"_blank",rel:"noreferrer",children:"LinkedIn"})})}),l(ur,{children:l(rn,{primary:l("a",{href:"https://github.com/Unleash/unleash",target:"_blank",rel:"noreferrer",children:"GitHub"})})}),l(ur,{children:l(rn,{primary:l("a",{href:"https://slack.unleash.run",target:"_blank",rel:"noreferrer",children:"Slack Community"})})})]})]})})]})})]})})},pPe=C(Kt)(({theme:e})=>({marginBottom:e.spacing(2)})),fPe=C(se)(({theme:e})=>({maxWidth:"800px"})),hPe=C("a")(({theme:e})=>({display:"block",marginTop:e.spacing(1),width:"100px"})),mPe=e=>!(!e||localStorage&&localStorage.getItem(e)),gPe=({toast:e})=>{const[t,n]=m.useState(!1);m.useEffect(()=>{n(mPe((e==null?void 0:e.id)||""))},[e==null?void 0:e.id]);const r=()=>{localStorage&&localStorage.setItem((e==null?void 0:e.id)||"","seen"),n(!1)};return e?l(Y,{condition:t,show:x(pPe,{severity:e.severity,onClose:r,children:[l(fPe,{variant:"body2",children:e.message}),l(hPe,{href:e.link,target:"_blank",rel:"noopener noreferrer",children:"View more"})]})}):null},vPe=C("div")(({theme:e})=>({height:e.spacing(2.5),margin:e.spacing(2,0)})),yPe=C(PX)({"& > ol":{flexWrap:"nowrap","& > li:last-child":{minWidth:0}}}),H3=C("p")(P6),bPe=C(cn)(({theme:e})=>({"& > *":{maxWidth:e.spacing(25)}})),wPe=()=>{const{isAdmin:e}=m.useContext(Ao),t=ko(),n=t.pathname.split("/").filter(r=>r).filter(r=>r!=="create"&&r!=="edit"&&r!=="view"&&r!=="variants"&&r!=="logs"&&r!=="metrics"&&r!=="copy"&&r!=="features"&&r!=="features2"&&r!=="create-toggle"&&r!=="settings"&&r!=="profile");return l(vPe,{children:l(Y,{condition:t.pathname.includes("admin")&&e||!t.pathname.includes("admin"),show:l(Y,{condition:n.length>1,show:l(yPe,{"aria-label":"Breadcrumbs",children:n.map((r,o)=>{if(o===n.length-1)return l(H3,{children:r},r);let a="/";return n.forEach((s,c)=>{c!==o&&c<o?a+=s+"/":c===o&&(a+=s)}),l(bPe,{to:a,children:l(H3,{children:r})},r)})})})})})},V3="/static/texture-c29e66c0.png",BD="skip-nav-target-id",SPe=()=>l("div",{id:BD}),xPe=C("a")(({theme:e})=>({position:"fixed",overflow:"hidden",zIndex:1e3,top:e.spacing(2.25),left:e.spacing(2.25),padding:e.spacing(1,2),whiteSpace:"nowrap",textDecoration:"none",background:e.palette.background.alternative,color:e.palette.common.white,borderRadius:e.shape.borderRadius,fontSize:e.fontSizes.smallBody,...zi(e),[e.breakpoints.down(960)]:{top:"0.8rem",left:"0.8rem"},"&:not(:focus):not(:active)":{clip:"rect(0 0 0 0)",clipPath:"inset(50%)",zIndex:-1,width:1,height:1,margin:-1,padding:0}})),CPe=()=>x(xPe,{href:`#${BD}`,children:["Skip to content ",l("span",{"aria-hidden":!0,children:"↓"})]}),EPe=({featureName:e,projectId:t,conflict:n,onNavigate:r,children:o})=>x(JN,{elevation:0,sx:i=>({marginTop:i.spacing(2),overflow:"hidden"}),children:[x(Le,{sx:i=>({backgroundColor:i.palette.neutral.light,borderRadius:a=>`${a.shape.borderRadiusLarge}px ${a.shape.borderRadiusLarge}px 0 0`,border:"1px solid",borderColor:a=>n?a.palette.warning.border:a.palette.divider,borderBottom:"none",overflow:"hidden"}),children:[l(Y,{condition:!!n,show:x(Kt,{severity:"warning",sx:{px:3,mb:2,"&.MuiAlert-standardWarning":{borderStyle:"none"}},children:[l("strong",{children:"Conflict!"})," ",n,"."]})}),x(Le,{sx:{display:"flex",pt:n?0:2,pb:2,px:3},children:[l(se,{children:"Feature toggle name: "}),l(Vr,{component:cn,to:`/projects/${t}/features/${e}`,color:"primary",underline:"hover",sx:{marginLeft:1,"& :hover":{textDecoration:"underline"}},onClick:r,children:l("strong",{children:e})})]})]}),l(Le,{children:o})]});var YT={},TPe=Tn;Object.defineProperty(YT,"__esModule",{value:!0});var FD=YT.default=void 0,kPe=TPe(kn()),APe=An,RPe=(0,kPe.default)((0,APe.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zM4 12c0-4.42 3.58-8 8-8 1.85 0 3.55.63 4.9 1.69L5.69 16.9C4.63 15.55 4 13.85 4 12zm8 8c-1.85 0-3.55-.63-4.9-1.69L18.31 7.1C19.37 8.45 20 10.15 20 12c0 4.42-3.58 8-8 8z"}),"Block");FD=YT.default=RPe;var KT={},_Pe=Tn;Object.defineProperty(KT,"__esModule",{value:!0});var zD=KT.default=void 0,PPe=_Pe(kn()),IPe=An,OPe=(0,PPe.default)((0,IPe.jsx)("path",{d:"m19.07 4.93-1.41 1.41C19.1 7.79 20 9.79 20 12c0 4.42-3.58 8-8 8s-8-3.58-8-8c0-4.08 3.05-7.44 7-7.93v2.02C8.16 6.57 6 9.03 6 12c0 3.31 2.69 6 6 6s6-2.69 6-6c0-1.66-.67-3.16-1.76-4.24l-1.41 1.41C15.55 9.9 16 10.9 16 12c0 2.21-1.79 4-4 4s-4-1.79-4-4c0-1.86 1.28-3.41 3-3.86v2.14c-.6.35-1 .98-1 1.72 0 1.1.9 2 2 2s2-.9 2-2c0-.74-.4-1.38-1-1.72V2h-1C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10c0-2.76-1.12-5.26-2.93-7.07z"}),"TrackChanges");zD=KT.default=OPe;var $Pe=200,XT="__lodash_hash_undefined__",NPe=1/0,jD=9007199254740991,LPe="[object Arguments]",MPe="[object Function]",DPe="[object GeneratorFunction]",BPe="[object Symbol]",FPe=/[\\^$.*+?()[\]{}|]/g,zPe=/^\[object .+?Constructor\]$/,jPe=/^(?:0|[1-9]\d*)$/,UPe=typeof xi=="object"&&xi&&xi.Object===Object&&xi,WPe=typeof self=="object"&&self&&self.Object===Object&&self,JT=UPe||WPe||Function("return this")();function HPe(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}function VPe(e,t){var n=e?e.length:0;return!!n&&YPe(e,t,0)>-1}function GPe(e,t,n){for(var r=-1,o=e?e.length:0;++r<o;)if(n(t,e[r]))return!0;return!1}function UD(e,t){for(var n=-1,r=e?e.length:0,o=Array(r);++n<r;)o[n]=t(e[n],n,e);return o}function QT(e,t){for(var n=-1,r=t.length,o=e.length;++n<r;)e[o+n]=t[n];return e}function qPe(e,t,n,r){for(var o=e.length,i=n+(r?1:-1);r?i--:++i<o;)if(t(e[i],i,e))return i;return-1}function YPe(e,t,n){if(t!==t)return qPe(e,KPe,n);for(var r=n-1,o=e.length;++r<o;)if(e[r]===t)return r;return-1}function KPe(e){return e!==e}function XPe(e,t){for(var n=-1,r=Array(e);++n<e;)r[n]=t(n);return r}function JPe(e){return function(t){return e(t)}}function QPe(e,t){return e.has(t)}function ZPe(e,t){return e==null?void 0:e[t]}function e5e(e){var t=!1;if(e!=null&&typeof e.toString!="function")try{t=!!(e+"")}catch{}return t}function WD(e,t){return function(n){return e(t(n))}}var t5e=Array.prototype,n5e=Function.prototype,Z1=Object.prototype,bw=JT["__core-js_shared__"],G3=function(){var e=/[^.]+$/.exec(bw&&bw.keys&&bw.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}(),HD=n5e.toString,Bd=Z1.hasOwnProperty,ZT=Z1.toString,r5e=RegExp("^"+HD.call(Bd).replace(FPe,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),q3=JT.Symbol,o5e=WD(Object.getPrototypeOf,Object),i5e=Z1.propertyIsEnumerable,a5e=t5e.splice,Y3=q3?q3.isConcatSpreadable:void 0,Ix=Object.getOwnPropertySymbols,K3=Math.max,s5e=GD(JT,"Map"),mh=GD(Object,"create");function xc(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function l5e(){this.__data__=mh?mh(null):{}}function c5e(e){return this.has(e)&&delete this.__data__[e]}function u5e(e){var t=this.__data__;if(mh){var n=t[e];return n===XT?void 0:n}return Bd.call(t,e)?t[e]:void 0}function d5e(e){var t=this.__data__;return mh?t[e]!==void 0:Bd.call(t,e)}function p5e(e,t){var n=this.__data__;return n[e]=mh&&t===void 0?XT:t,this}xc.prototype.clear=l5e;xc.prototype.delete=c5e;xc.prototype.get=u5e;xc.prototype.has=d5e;xc.prototype.set=p5e;function Fd(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function f5e(){this.__data__=[]}function h5e(e){var t=this.__data__,n=e0(t,e);if(n<0)return!1;var r=t.length-1;return n==r?t.pop():a5e.call(t,n,1),!0}function m5e(e){var t=this.__data__,n=e0(t,e);return n<0?void 0:t[n][1]}function g5e(e){return e0(this.__data__,e)>-1}function v5e(e,t){var n=this.__data__,r=e0(n,e);return r<0?n.push([e,t]):n[r][1]=t,this}Fd.prototype.clear=f5e;Fd.prototype.delete=h5e;Fd.prototype.get=m5e;Fd.prototype.has=g5e;Fd.prototype.set=v5e;function zd(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function y5e(){this.__data__={hash:new xc,map:new(s5e||Fd),string:new xc}}function b5e(e){return t0(this,e).delete(e)}function w5e(e){return t0(this,e).get(e)}function S5e(e){return t0(this,e).has(e)}function x5e(e,t){return t0(this,e).set(e,t),this}zd.prototype.clear=y5e;zd.prototype.delete=b5e;zd.prototype.get=w5e;zd.prototype.has=S5e;zd.prototype.set=x5e;function Hv(e){var t=-1,n=e?e.length:0;for(this.__data__=new zd;++t<n;)this.add(e[t])}function C5e(e){return this.__data__.set(e,XT),this}function E5e(e){return this.__data__.has(e)}Hv.prototype.add=Hv.prototype.push=C5e;Hv.prototype.has=E5e;function T5e(e,t){var n=ek(e)||qD(e)?XPe(e.length,String):[],r=n.length,o=!!r;for(var i in e)(t||Bd.call(e,i))&&!(o&&(i=="length"||D5e(i,r)))&&n.push(i);return n}function e0(e,t){for(var n=e.length;n--;)if(H5e(e[n][0],t))return n;return-1}function k5e(e,t,n,r){var o=-1,i=VPe,a=!0,s=e.length,c=[],u=t.length;if(!s)return c;n&&(t=UD(t,JPe(n))),r?(i=GPe,a=!1):t.length>=$Pe&&(i=QPe,a=!1,t=new Hv(t));e:for(;++o<s;){var d=e[o],p=n?n(d):d;if(d=r||d!==0?d:0,a&&p===p){for(var f=u;f--;)if(t[f]===p)continue e;c.push(d)}else i(t,p,r)||c.push(d)}return c}function VD(e,t,n,r,o){var i=-1,a=e.length;for(n||(n=M5e),o||(o=[]);++i<a;){var s=e[i];t>0&&n(s)?t>1?VD(s,t-1,n,r,o):QT(o,s):r||(o[o.length]=s)}return o}function A5e(e,t,n){var r=t(e);return ek(e)?r:QT(r,n(e))}function R5e(e){if(!tk(e)||F5e(e))return!1;var t=KD(e)||e5e(e)?r5e:zPe;return t.test(W5e(e))}function _5e(e){if(!tk(e))return j5e(e);var t=z5e(e),n=[];for(var r in e)r=="constructor"&&(t||!Bd.call(e,r))||n.push(r);return n}function P5e(e,t){return e=Object(e),I5e(e,t,function(n,r){return r in e})}function I5e(e,t,n){for(var r=-1,o=t.length,i={};++r<o;){var a=t[r],s=e[a];n(s,a)&&(i[a]=s)}return i}function O5e(e,t){return t=K3(t===void 0?e.length-1:t,0),function(){for(var n=arguments,r=-1,o=K3(n.length-t,0),i=Array(o);++r<o;)i[r]=n[t+r];r=-1;for(var a=Array(t+1);++r<t;)a[r]=n[r];return a[t]=i,HPe(e,this,a)}}function $5e(e){return A5e(e,Y5e,L5e)}function t0(e,t){var n=e.__data__;return B5e(t)?n[typeof t=="string"?"string":"hash"]:n.map}function GD(e,t){var n=ZPe(e,t);return R5e(n)?n:void 0}var N5e=Ix?WD(Ix,Object):JD,L5e=Ix?function(e){for(var t=[];e;)QT(t,N5e(e)),e=o5e(e);return t}:JD;function M5e(e){return ek(e)||qD(e)||!!(Y3&&e&&e[Y3])}function D5e(e,t){return t=t??jD,!!t&&(typeof e=="number"||jPe.test(e))&&e>-1&&e%1==0&&e<t}function B5e(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}function F5e(e){return!!G3&&G3 in e}function z5e(e){var t=e&&e.constructor,n=typeof t=="function"&&t.prototype||Z1;return e===n}function j5e(e){var t=[];if(e!=null)for(var n in Object(e))t.push(n);return t}function U5e(e){if(typeof e=="string"||q5e(e))return e;var t=e+"";return t=="0"&&1/e==-NPe?"-0":t}function W5e(e){if(e!=null){try{return HD.call(e)}catch{}try{return e+""}catch{}}return""}function H5e(e,t){return e===t||e!==e&&t!==t}function qD(e){return V5e(e)&&Bd.call(e,"callee")&&(!i5e.call(e,"callee")||ZT.call(e)==LPe)}var ek=Array.isArray;function YD(e){return e!=null&&G5e(e.length)&&!KD(e)}function V5e(e){return XD(e)&&YD(e)}function KD(e){var t=tk(e)?ZT.call(e):"";return t==MPe||t==DPe}function G5e(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=jD}function tk(e){var t=typeof e;return!!e&&(t=="object"||t=="function")}function XD(e){return!!e&&typeof e=="object"}function q5e(e){return typeof e=="symbol"||XD(e)&&ZT.call(e)==BPe}function Y5e(e){return YD(e)?T5e(e,!0):_5e(e)}var K5e=O5e(function(e,t){return e==null?{}:(t=UD(VD(t,1),U5e),P5e(e,k5e($5e(e),t)))});function JD(){return[]}var X5e=K5e;const J5e=qr(X5e),Q5e=C("div")(({theme:e})=>({overflowX:"auto","& code":{wordWrap:"break-word",whiteSpace:"pre-wrap",fontFamily:"monospace",lineHeight:1.5,fontSize:e.fontSizes.smallBody}})),ww=({change:e,currentStrategy:t})=>{const n=e.action==="deleteStrategy"?void 0:e.payload;return l(Q5e,{children:l(K1,{entry:{preData:J5e(t,"sortOrder"),data:n}})})},Z5e=({change:e,previousTitle:t})=>x(me,{children:[l(Y,{condition:!!(t&&t!==e.payload.title),show:x(Ox,{children:[l(se,{component:"span",color:"text.secondary",children:t||Ss(e.payload.name)})," "]})}),l(Ox,{children:l(se,{component:"span",children:e.payload.title})})]}),e3e=C("div")(({theme:e})=>({display:"grid",gridAutoFlow:"column",gridTemplateColumns:"auto 1fr",gap:e.spacing(1),alignItems:"center"})),Ox=C("div")(()=>({...P6,maxWidth:500})),Sw=({change:e,previousTitle:t,children:n})=>x(e3e,{children:[l(Che,{strategyName:e.payload.name}),x(Ox,{children:[l(Hh,{tooltip:n,tooltipProps:{maxWidth:500,maxHeight:600},children:l(se,{component:"span",children:Ss(e.payload.name)})}),l(Z5e,{change:e,previousTitle:t})]})]}),X3=({percentage:e,size:t="4rem"})=>{const n=gn(),r={display:"block",borderRadius:"100%",transform:"rotate(-90deg)",height:t,width:t,background:n.palette.background.elevation2},o=100/(2*Math.PI),i=2*o;return l("svg",{viewBox:`0 0 ${i} ${i}`,style:r,"aria-hidden":!0,children:l("circle",{r:o,cx:o,cy:o,fill:"none",stroke:n.palette.primary.light,strokeWidth:i,strokeDasharray:`${e} 100`})})},t3e=C("div")(({theme:e})=>({width:"100%",padding:e.spacing(2,3),borderRadius:e.shape.borderRadiusMedium,border:`1px solid ${e.palette.divider}`})),n3e=C("p")(({theme:e})=>({display:"inline",margin:e.spacing(.5,0),maxWidth:"95%",textAlign:"center",wordBreak:"break-word"})),r3e=C(ks)(({theme:e})=>({margin:e.spacing(.5)})),xw=({value:e,text:t})=>l(t3e,{children:l(Y,{condition:e.length===0,show:x("p",{children:["No ",t,"s added yet."]}),elseShow:x("div",{children:[x(n3e,{children:[e.length," ",e.length>1?`${t}s`:t," will get access."]}),e.map(n=>l(r3e,{label:l(Ta,{maxWidth:"300",text:n,maxLength:50})},n))]})})}),o3e=({segments:e})=>!e||e.length===0?null:l(me,{children:e.map((t,n)=>x(m.Fragment,{children:[l(Y,{condition:n>0,show:l(AT,{text:"AND"})}),l(jM,{segment:t})]},t.id))}),J3=()=>l(Le,{sx:{px:3,color:"text.disabled"},children:"This strategy does not have constraints or parameters."}),Fl=C(Le)(({theme:e})=>({padding:e.spacing(2,3),border:`1px solid ${e.palette.divider}`,borderRadius:e.shape.borderRadiusMedium})),Cw=C("span")(({theme:e})=>({color:e.palette.neutral.main})),Q3=({strategy:e})=>{const{parameters:t,constraints:n=[]}=e,{strategies:r}=Id(),{uiConfig:o}=At(),{segments:i}=Pl(),a=i==null?void 0:i.filter(p=>{var f;return(f=e.segments)==null?void 0:f.includes(p.id)}),s=r.find(p=>p.name===e.name),c=m.useMemo(()=>!t||s!=null&&s.editable?null:Object.keys(t).map(p=>{switch(p){case"rollout":case"Rollout":const f=vf(t[p]);return x(Fl,{sx:{display:"flex",alignItems:"center"},children:[l(Le,{sx:{mr:2},children:l(X3,{percentage:f,size:"2rem"})}),x("div",{children:[x(Zt,{color:"success",children:[f,"%"]})," of your base"," ",n.length>0?"who match constraints":""," ","is included."]})]});case"userIds":case"UserIds":const h=Ys(t[p]);return l(xw,{value:h,text:"user"},p);case"hostNames":case"HostNames":const g=Ys(t[p]);return l(xw,{value:g,text:"host"},p);case"IPs":const v=Ys(t[p]);return l(xw,{value:v,text:"IP"},p);case"stickiness":case"groupId":return null;default:return null}}),[t,s,n]),u=m.useMemo(()=>{if(!t||!(s!=null&&s.editable))return null;const p=l(Cw,{children:" is set to "});return s==null?void 0:s.parameters.map(f=>{const{type:h,name:g}={...f};if(!h||!g||t[g]===void 0)return null;const v=l(Ta,{maxLength:15,maxWidth:"150",text:g});switch(f==null?void 0:f.type){case"list":const y=Ys(t[g]);return y.length>0?x(Fl,{children:[v," ",x(Cw,{children:["has ",y.length," ",y.length>1?"items":"item",":"," ",y.map(k=>l(ks,{label:l(Ta,{maxWidth:"300",text:k,maxLength:50}),sx:{mr:.5}},k))]})]}):null;case"percentage":const b=vf(t[g]);return t[g]!==""?x(Fl,{sx:{display:"flex",alignItems:"center"},children:[l(Le,{sx:{mr:2},children:l(X3,{percentage:b,size:"2rem"})}),x("div",{children:[v,p,x(Zt,{color:"success",children:[b,"%"]})]})]}):null;case"boolean":return t[g]==="true"||t[g]==="false"?x(Fl,{children:[l(Ta,{maxLength:15,maxWidth:"150",text:g}),p,l(Zt,{color:t[g]==="true"?"success":"error",children:t[g]})]}):null;case"string":const w=il(t[g]);return typeof t[g]<"u"?x(Fl,{children:[v,l(Y,{condition:w==="",show:l(Cw,{children:" is an empty string"}),elseShow:x(me,{children:[p,l(Ta,{maxWidth:"300",text:w,maxLength:50})]})})]}):null;case"number":const S=vf(t[g]);return t[g]!==""&&S!==void 0?x(Fl,{children:[v,p,l(Ta,{maxWidth:"300",text:String(S),maxLength:50})]}):null;case"default":return null}return null})},[t,s]);if(!t)return l(J3,{});const d=[!!o.flags.SE&&a&&a.length>0&&l(o3e,{segments:a}),n.length>0&&l(q1,{constraints:n,showLabel:!1}),e.name==="default"&&l(me,{children:x(Fl,{sx:{width:"100%"},children:["The standard strategy is ",l(Zt,{color:"success",children:"ON"})," ","for all users."]})}),...c??[],...u??[]].filter(Boolean);return l(Y,{condition:d.length>0,show:l(me,{children:d.map((p,f)=>x(m.Fragment,{children:[l(Y,{condition:f>0,show:l(AT,{text:"AND"})}),p]},f))}),elseShow:l(J3,{})})},i3e=(e,t,n,r)=>{var a,s;return(s=(a=xs(t,n).feature)==null?void 0:a.environments.find(c=>c.name===r))==null?void 0:s.strategies.find(c=>"id"in e.payload&&c.id===e.payload.id)},QD=C(Le)({display:"flex",justifyContent:"space-between",alignItems:"center"}),Z3=C(Le)(({theme:e})=>({display:"grid",gridTemplateColumns:"auto 40px",gap:e.spacing(1),alignItems:"center",marginBottom:e.spacing(2),width:"100%"})),Ew=C(Le)(({theme:e})=>({display:"grid",gridTemplateColumns:"150px auto",gridAutoFlow:"column",alignItems:"center",flexGrow:1,gap:e.spacing(1)})),a3e=e=>typeof e=="object"&&e!==null&&"name"in e,eI=({show:e=!0,disabled:t})=>e?t?l(Et,{title:"This strategy will not be taken into account when evaluating feature toggle.",arrow:!0,sx:{cursor:"pointer"},children:l(Zt,{color:"disabled",icon:l(FD,{}),children:"Disabled"})}):l(Et,{title:"This was disabled before and with this change it will be taken into account when evaluating feature toggle.",arrow:!0,sx:{cursor:"pointer"},children:l(Zt,{color:"success",icon:l(zD,{}),children:"Enabled"})}):null,s3e=({wasDisabled:e=!1,willBeDisabled:t=!1})=>e&&t?l(se,{color:"action.disabled",children:"Editing strategy:"}):!e&&t?l(se,{color:"error.dark",children:"Editing strategy:"}):e&&!t?l(se,{color:"success.dark",children:"Editing strategy:"}):l(se,{children:"Editing strategy:"}),l3e=({discard:e,change:t,featureName:n,environmentName:r,projectId:o})=>{var a,s,c,u,d;const i=i3e(t,o,n,r);return x(me,{children:[t.action==="addStrategy"&&x(me,{children:[x(Z3,{children:[x(Ew,{children:[l(se,{color:(a=t.payload)!=null&&a.disabled?"action.disabled":"success.dark",children:"+ Adding strategy:"}),l(Sw,{change:t,children:l(ww,{change:t,currentStrategy:i})}),l("div",{children:l(eI,{disabled:!0,show:((s=t.payload)==null?void 0:s.disabled)===!0})})]}),l("div",{children:e})]}),l(Q3,{strategy:t.payload})]}),t.action==="deleteStrategy"&&x(QD,{children:[x(Ew,{children:[l(se,{sx:p=>({color:p.palette.error.main}),children:"- Deleting strategy:"}),a3e(t.payload)&&l(Sw,{change:t,children:l(ww,{change:t,currentStrategy:i})})]}),l("div",{children:e})]}),t.action==="updateStrategy"&&x(me,{children:[x(Z3,{children:[x(Ew,{children:[l(s3e,{wasDisabled:i==null?void 0:i.disabled,willBeDisabled:(c=t.payload)==null?void 0:c.disabled}),l(Sw,{change:t,previousTitle:i==null?void 0:i.title,children:l(ww,{change:t,currentStrategy:i})})]}),l("div",{children:e})]}),l(Y,{condition:((u=t.payload)==null?void 0:u.disabled)!==(i==null?void 0:i.disabled),show:x(se,{sx:{marginTop:p=>p.spacing(2),marginBottom:p=>p.spacing(2),...Ic,gap:p=>p.spacing(1)},children:["This strategy will be"," ",l(eI,{disabled:((d=t.payload)==null?void 0:d.disabled)||!1})]})}),l(Q3,{strategy:t.payload})]})]})},c3e=({enabled:e,discard:t})=>x(QD,{children:[x(Le,{sx:{display:"flex",alignItems:"center"},children:["New status:"," ",l(Zt,{sx:n=>({marginLeft:n.spacing(1)}),color:e?"success":"error",children:e?" Enabled":"Disabled"})]}),t]}),u3e=C(se)(({theme:e})=>({fontSize:e.fontSizes.smallerBody,whiteSpace:"pre-wrap"})),d3e=({value:e})=>{const{searchQuery:t}=Rl();return e?e.type==="string"&&e.value.length<20?l(er,{children:l(Ha,{search:t,children:e.value})}):l(er,{children:l(Hh,{tooltip:l(me,{children:l(u3e,{children:l(Ha,{search:t,children:e.value})})}),highlighted:t.length>0&&e.value.toLowerCase().includes(t.toLowerCase()),children:e.type})}):l(er,{})},p3e=C(se)(({theme:e})=>({fontSize:e.fontSizes.smallerBody})),f3e=({value:e})=>{const{searchQuery:t}=Rl();if(!e||e.length===0)return l(er,{});const n=r=>`${r.contextName}:${r.values.join()}`;return l(er,{children:l(Hh,{tooltip:l(me,{children:e.map((r,o)=>l(p3e,{children:l(Ha,{search:t,children:n(r)})},r.contextName+o))}),highlighted:t.length>0&&(e==null?void 0:e.map(n).join(`
362
362
  `).toLowerCase().includes(t.toLowerCase())),children:e.length===1?"1 override":`${e.length} overrides`})})},h3e=({variants:e,searchValue:t=""})=>{const n=ar("projectId"),r=gn(),o=nr(r.breakpoints.down("md")),i=nr(r.breakpoints.down("lg")),a=m.useMemo(()=>[{Header:"Name",accessor:"name",Cell:al,sortType:"alphanumeric",minWidth:350,searchable:!0},{Header:"Payload",accessor:"payload",Cell:d3e,disableSortBy:!0,searchable:!0,filterParsing:y=>y==null?void 0:y.value},{Header:"Overrides",accessor:"overrides",Cell:f3e,disableSortBy:!0,searchable:!0,filterParsing:y=>(y==null?void 0:y.map(({contextName:b,values:w})=>`${b}:${w.join()}`).join(`
363
363
  `))||""},{Header:"Weight",accessor:"weight",Cell:({row:{original:{name:y,weight:b}}})=>x(er,{"data-testid":`VARIANT_WEIGHT_${y}`,children:[gve(b)," %"]}),sortType:"number"},{Header:"Type",accessor:y=>y.weightType==="fix"?"Fixed":"Variable",Cell:er,sortType:"alphanumeric"}],[n,e]),s=m.useMemo(()=>({sortBy:[{id:"name",desc:!1}]}),[]),{data:c,getSearchText:u}=Wh(a,t,e),{getTableProps:d,getTableBodyProps:p,headerGroups:f,rows:h,prepareRow:g,setHiddenColumns:v}=tn.useTable({columns:a,data:c,initialState:s,sortTypes:ai,autoResetHiddenColumns:!1,autoResetSortBy:!1,disableSortRemove:!0,disableMultiSort:!0},tn.useSortBy);return Rd([{condition:o,columns:["payload","overrides"]},{condition:i,columns:["weightType"]}],v,a),x(me,{children:[l(_s,{value:u(t),children:x(ca,{...d(),children:[l(la,{headerGroups:f}),l(aa,{...p(),children:h.map(y=>(g(y),l(Fi,{hover:!0,...y.getRowProps(),children:y.cells.map(b=>l(Ui,{...b.getCellProps(),children:b.render("Cell")}))})))})]})}),l(Y,{condition:h.length===0,show:l(Y,{condition:(t==null?void 0:t.length)>0,show:x(ir,{children:["No variants found matching “",t,"”"]})})})]})},m3e=C("div")(({theme:e})=>({overflowX:"auto","& code":{wordWrap:"break-word",whiteSpace:"pre-wrap",fontFamily:"monospace",lineHeight:1.5,fontSize:e.fontSizes.smallBody}})),tI=e=>e.reduce((t,{name:n,...r})=>({...t,[n]:r}),{}),g3e=({preData:e,data:t})=>l(m3e,{children:l(K1,{entry:{preData:tI(e),data:tI(t)},sort:(n,r)=>n.index-r.index})}),v3e=C(Le)({display:"flex",flexDirection:"column"}),y3e=C(Le)(({theme:e})=>({display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:e.spacing(2),lineHeight:e.spacing(3)})),b3e=C("div")(({theme:e})=>({marginTop:e.spacing(1.5),display:"flex",alignItems:"center",gap:e.spacing(1.5),marginBottom:e.spacing(.5),fontSize:e.fontSizes.smallBody})),w3e=({feature:e,project:t,environment:n,change:r,discard:o})=>{var s,c;const{feature:i}=xs(t,e),a=((s=i.environments.find(({name:u})=>n===u))==null?void 0:s.variants)??[];return x(v3e,{children:[x(y3e,{children:[l(Hh,{tooltip:l(g3e,{preData:a,data:r.payload.variants}),tooltipProps:{maxWidth:500,maxHeight:600},children:"Updating variants to:"}),o]}),l(h3e,{variants:r.payload.variants}),l(Y,{condition:r.payload.variants.length>1,show:l(me,{children:x(b3e,{children:[l("p",{children:"Stickiness:"}),l(Zt,{children:((c=r.payload.variants[0])==null?void 0:c.stickiness)||"default"})]})})})]})},S3e=C(Le,{shouldForwardProp:e=>!e.startsWith("$")})(({theme:e,$hasConflict:t,$isInConflictFeature:n,$isAfterWarning:r,$isLast:o})=>({borderLeft:"1px solid",borderRight:"1px solid",borderTop:"1px solid",borderBottom:o?"1px solid":"none",borderRadius:o?`0 0
364
364
  ${e.shape.borderRadiusLarge}px ${e.shape.borderRadiusLarge}px`:0,borderColor:t||n?e.palette.warning.border:e.palette.divider,borderTopColor:(t||r)&&!n?e.palette.warning.border:e.palette.divider})),x3e=C(Kt)(({theme:e})=>({borderRadius:0,padding:e.spacing(0,2),"&.MuiAlert-standardWarning":{borderStyle:"none none solid none"}})),nI=({index:e,change:t,feature:n,changeRequest:r,discard:o})=>{var a;const i=n.defaultChange?n.changes.length+1:n.changes.length;return x(S3e,{$hasConflict:!!t.conflict,$isInConflictFeature:!!n.conflict,$isAfterWarning:!!((a=n.changes[e-1])!=null&&a.conflict),$isLast:e+1===i,children:[l(Y,{condition:!!t.conflict&&!n.conflict,show:x(x3e,{severity:"warning",children:[l("strong",{children:"Conflict!"})," This change can’t be applied."," ",t.conflict,"."]})}),x(Le,{sx:s=>({padding:s.spacing(3)}),children:[t.action==="updateEnabled"&&l(c3e,{enabled:t.payload.enabled,discard:o}),t.action==="addStrategy"||t.action==="deleteStrategy"||t.action==="updateStrategy"?l(l3e,{discard:o,change:t,featureName:n.name,environmentName:r.environment,projectId:r.project}):null,t.action==="patchVariant"&&l(w3e,{feature:n.name,project:r.project,environment:r.environment,change:t,discard:o})]})]},DM(t))},nk=e=>e.features.flatMap(t=>t.changes).length,C3e=({change:e,changeRequestId:t,environment:n,open:r,onSubmit:o,onClose:i,featureId:a})=>{const s=ar("projectId"),{editChange:c}=Kh(),[u,d]=m.useState(e.payload),{segments:p}=Pl(),f=(p||[]).filter(L=>{var q;return(q=e.payload.segments)==null?void 0:q.includes(L.id)}),[h,g]=m.useState(f),v={parameters:e.payload.parameters,name:e.payload.name},{setToastData:y,setToastApiError:b}=Nt(),w=GM(),{uiConfig:S}=At(),{unleashUrl:k}=S,{isChangeRequestConfigured:R}=$c(s),{feature:T,refetchFeature:A}=xs(s,a),P=m.useRef(T),{data:_,staleDataNotification:I,forceRefreshCache:$}=YM({unleashGetter:xs,params:[s,a],dataKey:"feature",refetchFunctionKey:"refetchFeature",options:{}},T,{afterSubmitAction:A},KM);m.useEffect(()=>{P.current.name===""&&T.name&&($(T),P.current=T)},[T]);const z={...u,segments:h.map(L=>L.id)},B=async()=>{try{await c(s,t,e.id,{action:u.id?"updateStrategy":"addStrategy",feature:a,payload:z}),o(),y({title:"Change updated",type:"success"})}catch(L){b(ht(L))}};return!v||!_?null:l(Q1,{open:r,onClose:i,label:"Edit change",onClick:L=>{L.stopPropagation()},children:x(Xr,{modal:!0,title:Ss(v.name??""),description:T3e,documentationLink:k3e,documentationLinkLabel:A3e,formatApiCode:()=>E3e(s,t,e.id,z,k),children:[l(VM,{projectId:s,feature:_,strategy:u,setStrategy:d,segments:h,setSegments:g,environmentId:n,onSubmit:B,onCancel:i,loading:!1,permission:b1,errors:w,isChangeRequest:R(n)}),I]})})},E3e=(e,t,n,r,o)=>{if(!o)return"";const i=`${o}/api/admin/projects/${e}/change-requests/${t}/changes/${n}`,a=JSON.stringify(r,void 0,2);return`curl --location --request PUT '${i}' \\