1!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},t=(new e.Error).stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="ca42dd86-ac21-48c9-97cf-a377b34552da",e._sentryDebugIdIdentifier="sentry-dbid-ca42dd86-ac21-48c9-97cf-a377b34552da")}catch(e){}}();"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([["1837"],{93306:function(e,t,n){n.d(t,{h:()=>p});var r=n(97496),i=n(95931),a=n(39678),o=n(41779),l=n(48764),s=n(11028),c=n(94695),d=n(50473),u=n(11823);let p=e=>{var t;let{options:n,selectedOption:p,onChange:h,triggerLabel:m,className:g,align:b="left",width:f,minWidth:v=150,menuCss:y,ariaLabel:w,ariaLabelledBy:Z,disabled:C}=e,[x,k]=(0,i.useState)(!1),S=(0,i.useCallback)(e=>{null==e||e.stopPropagation(),k(!0)},[]),B=(0,i.useCallback)(e=>{null==e||e.stopPropagation(),k(!1)},[]),D=(0,i.useRef)(null);(0,l.r)(D);let I=(0,i.useCallback)(e=>{if(e===p)return void B();h(e),B()},[h,p,B]),X=null!=(t=n.find(e=>e.id===p))?t:n[0],A=(0,i.useId)(),L="dropdown-menu-".concat(A),N="dropdown-button-".concat(A);return(0,d.k)(m||X,"Invalid option"),(0,r.BX)("div",{css:{position:"relative"},className:g,children:[(0,r.BX)(o.i,{id:N,css:{color:u.r.colors.n80,fontWeight:550,display:"flex",gap:8,alignItems:"center",justifyContent:"space-between",width:null!=f?f:"100%",padding:6,borderRadius:4,transition:"background-color 250ms ease-out, box-shadow 250ms ease-out",cursor:C?"default":"pointer",opacity:C?.5:1,":hover:not(:disabled)":{background:u.r.colors.n10,boxShadow:u.r.shadow1}},onClick:x?B:S,"aria-haspopup":"menu","aria-expanded":x,"aria-controls":L,"aria-labelledby":Z,"aria-label":Z?void 0:null!=w?w:"string"==typeof m?m:void 0,disabled:C,children:[null!=m?m:null==X?void 0:X.label,(0,r.tZ)(c.u,{width:"1.5em","aria-hidden":!0,css:{pointerEvents:"none",path:{transition:"transform 250ms ease-out",transformOrigin:"center",transform:x?"rotateX(180deg)":"none"}}})]}),x&&(0,r.tZ)(a.Y,{onClickOutside:B,onEscapeKey:B,scrollLock:!1,children:(0,r.tZ)("div",{id:L,ref:D,role:"menu","aria-labelledby":null!=Z?Z:N,css:{position:"absolute",[b]:0,top:0,zIndex:3,background:u.r.colors.n0,borderRadius:8,boxShadow:u.r.shadow2,border:"1px solid ".concat(u.r.colors.n10),minWidth:v,width:null!=f?f:"auto",overflow:"hidden",margin:0,padding:"4px",listStyle:"none",display:"flex",flexDirection:"column",gap:"4px",...y},children:n.map(e=>{let t=e.id===p,n="dropdown-item-".concat(e.id);return(0,r.BX)(o.i,{role:"menuitem",id:n,disabled:e.disabled,onClick:t=>{t.stopPropagation(),e.disabled||I(e.id)},css:{...u.r.bodyS,display:"flex",alignItems:"center",justifyContent:"space-between",width:"100%",background:e.disabled?u.r.colors.n10:t?u.r.colors.n80:"none",borderRadius:"4px",padding:"8px 12px",color:e.disabled?u.r.colors.n50:t?u.r.colors.n10:u.r.colors.n80,cursor:e.disabled?"not-allowed":"pointer",opacity:e.disabled?.5:1,":hover":e.disabled||t?{}:{background:"".concat(u.r.colors.n10,"80"),color:u.r.colors.n80}},children:[e.label,t&&!e.disabled&&(0,r.tZ)(s.nQ,{"aria-hidden":!0})]},e.id)})})})]})}},48149:function(e,t,n){n.d(t,{p:()=>d});var r=n(97496),i=n(95931),a=n(99168),o=n(52993),l=n(99111),s=n(31756),c=n(11823);let d=e=>{var t;let{title:n,action:c,input:d,renderTable:p,extra:h}=e,[m,g]=(0,i.useState)(!1),b=(0,s.HA)(c,{prepareInput:()=>d,autoload:!1}),f=null==(t=b.data)?void 0:t.data;return(0,r.tZ)(l.we,{title:n,collapsed:!m,onHeaderClick:()=>{m||b.load(),g(!m)},extra:h,children:b.isLoading?(0,r.tZ)(u,{css:{display:"flex",justifyContent:"center"},children:(0,r.tZ)(o.T,{})}):b.error?(0,r.BX)(u,{css:{display:"flex",justifyContent:"space-between"},children:["An error occurred while loading the data."," ",(0,r.tZ)(a.zx,{size:"S",onClick:b.load,children:"Retry"})]}):f&&f.length>0?p(f):(0,r.tZ)(u,{children:"None"})})},u=e=>{let{className:t,children:n}=e;return(0,r.tZ)("div",{css:{background:"color-mix(in srgb, ".concat(c.r.colors.n10," 65%, transparent)"),padding:24,borderRadius:6},className:t,children:n})}},99486:function(e,t,n){n.d(t,{$:()=>E,P:()=>M});var r=n(97496),i=n(3098),a=n(87057),o=n(4622),l=n(25891),s=n(8e3),c=n(36769),d=n(93306),u=n(46128);let p="/api/playground/data-explorer/subscriptions",h=async(e,t)=>{if(!t)throw o.Am.error("Please select a valid end date"),Error("No end date provided");let n=await u.L.put("".concat(p,"/").concat(e),{body:{endDate:t}});if(!n.success)throw Error(n.error||"Failed to update subscription");o.Am.success("Subscription end date updated successfully")},m=async e=>{let t=await u.L.post("".concat(p,"/").concat(e));if(!t.success)throw Error(t.error||"Failed to convert trial subscription");o.Am.success("Subscription converted from trial successfully")},g=async e=>{let t=await u.L.delete("".concat(p,"/").concat(e));if(!t.success)throw Error(t.error);o.Am.success("Subscription terminated successfully")},b=async(e,t)=>{let n=await u.L.put("".concat(p,"/").concat(e),{body:{entitlements:t}});if(!n.success)throw Error(n.error||"Failed to update subscription products");o.Am.success("Subscription products updated successfully")};
1var f=n(95931),v=n(99168),y=n(16258),w=n(51976),Z=n(57268),C=n(11823);let x=e=>{let{subscription:t,onConfirm:n}=e,[i,a]=(0,f.useState)(t.endDate.toISOString().split("T")[0]);return(0,r.BX)("div",{children:[(0,r.tZ)(y.yt,{identifier:"new-end-date",label:"New End Date",children:(0,r.tZ)(w.o,{id:"new-end-date",type:"date",value:i,onChange:e=>{a(e.target.value)},css:{marginBottom:16}})}),(0,r.tZ)(D,{onCancel:()=>{(0,s.Wr)()},onConfirm:()=>n(i)})]})},k=e=>{let{onConfirm:t}=e;return(0,r.BX)("div",{children:[(0,r.tZ)("p",{children:"This will convert the trial subscription to a regular subscription. The end date will remain unchanged."}),(0,r.tZ)(D,{onCancel:()=>{(0,s.Wr)()},onConfirm:t})]})},S=e=>{let{onConfirm:t}=e;return(0,r.BX)("div",{children:[(0,r.tZ)("p",{children:"This will immediately terminate the subscription by setting its end date to the current date and marking it as canceled."}),(0,r.tZ)(D,{onCancel:()=>{(0,s.Wr)()},onConfirm:t,dangerConfirm:!0})]})},B=e=>{let{subscription:t,onConfirm:n}=e,[i,a]=(0,f.useState)(!1),[o,l]=(0,f.useState)(()=>{var e,n,r,i,a,o;return{generator:null!=(i=null==(e=t.entitlements.generator)?void 0:e.seats)?i:0,tutor:null!=(a=null==(n=t.entitlements.tutor)?void 0:n.seats)?a:0,ufliPortal:null!=(o=null==(r=t.entitlements.ufliPortal)?void 0:r.seats)?o:0}}),c=async e=>{e.preventDefault(),a(!0);try{let e={generator:o.generator>0?{seats:o.generator}:null,tutor:o.tutor>0?{seats:o.tutor}:null,ufliPortal:o.ufliPortal>0?{seats:o.ufliPortal}:null};await n(e),(0,s.Wr)()}catch(e){}finally{a(!1)}};return(0,r.BX)("form",{onSubmit:e=>{c(e)},children:[(0,r.BX)("div",{css:{marginBottom:24},children:[(0,r.tZ)("div",{css:{...C.r.bodyM,color:C.r.colors.n70,marginBottom:16},children:"Set the number of seats for each product. Products with 0 seats will be removed from the subscription."}),(0,r.tZ)(Z.M,{values:o,onSeatChange:(e,t)=>
1{l(n=>({...n,[e]:t}))}})]}),(0,r.BX)(v.W4,{align:"end",children:[(0,r.tZ)(v.zx,{type:"button",level:"secondary",onClick:()=>{(0,s.Wr)()},disabled:i,children:"Cancel"}),(0,r.tZ)(v.zx,{type:"submit",level:"primary",loading:i,loadingLabel:"Applying changes",children:"Apply Changes"})]})]})},D=e=>{let{onCancel:t,onConfirm:n,dangerConfirm:i=!1}=e;return(0,r.BX)(v.W4,{align:"end",css:{marginTop:24},children:[(0,r.tZ)(v.zx,{level:"secondary",onClick:t,children:"Cancel"}),(0,r.tZ)(v.zx,{level:"primary",color:i?"coral":"neutral",onClick:()=>{n()},children:"Confirm"})]})};var I=n(78090),X=n(79748),A=n(50266),L=n(10664),N=n(26389);let E=e=>{let{title:t,subscriptions:n,className:i}=e;return(0,r.BX)("div",{className:i,children:[(0,r.tZ)("h4",{css:{...C.r.titleM,color:C.r.colors.n80,marginBottom:8},children:t||"Subscriptions"}),n.length>0?(0,r.tZ)("div",{css:{display:"flex",flexDirection:"column",gap:12},children:n.toSorted((e,t)=>e.startDate.getTime()-t.startDate.getTime()).map(e=>(0,r.tZ)(M,{subscription:e},e.id))}):(0,r.tZ)("div",{css:{color:C.r.colors.n50,fontStyle:"italic"},children:"No subscriptions"})]})},M=e=>{let{subscription:t,readOnly:n=!1}=e,o=Object.entries(t.entitlements).filter(e=>null!=e[1]&&e[1].seats>0),s=(0,i.C)(t.startDate)?(0,a.A)(t.endDate)?"active"!==t.status||t.trial?"non-renewing":"auto-renews":"expired":"pending";return(0,r.BX)("div",{css:{padding:12,borderRadius:8,border:"1px solid ".concat(C.r.colors.n20),background:C.r.colors.n0,..."expired"===s&&{opacity:.5}},children:[(0,r.BX)("div",{css:{display:"flex",justifyContent:"space-between",alignItems:"center",gap:4,flexWrap:"wrap-reverse"},children:[(0,r.BX)("div",{css:{...C.r.titleS,color:C.r.colors.n80},children:[(0,r.tZ)(c.Ji,{formatter:I.k3,value:t.startDate})," ","â"," ",(0,r.tZ)(c.Ji,{formatter:I.k3,value:t.endDate})]}),(0,r.BX)("div",{css:{flex:1,display:"flex",alignItems:"center",gap:4},children:[(0,r.tZ)(l.D,{color:t.trial?"blue":"purple",css:C.r.capXS,children:t.trial?"Trial":"Paid"}),(0,r.tZ)(T,{status:s,css:C.r.capXS}),!n&&(0,r.tZ)(P,{subscription:t,css:{marginLeft:"auto",flexShrink:0}})]})]}),o.length>0?(0,r.tZ)("div",{css:{display:"flex",flexDirection:"column",gap:8,marginTop:8},children:o.map(e=>{let[t,n]=e;return(0,r.BX)("div",{css:{display:"flex",justifyContent:"space-between",alignItems:"center",...C.r.bodyM,color:C.r.colors.n70,background:C.r.colors.n10,padding:"8px 12px",borderRadius:4},children:[(0,r.tZ)("span",{children:(0,N.J9)(t)}),(0,r.tZ)("span",{css:{...C.r.capS},children:(0,L._6)(n.seats,"seat")})]},t)})}):(0,r.tZ)("div",{css:{...C.r.bodyM,color:C.r.colors.n50,marginBottom:16},children:"No products found."})]})},R=async(e,t)=>{try{await e(),await (0,A.If)(),(0,s.Wr)()}catch(n){let e=(0,X.Y)(n,t);console.error("".concat(t,": ").concat(e),n),o.Am.error(e)}},P=e=>{let{subscription:t,className:n}=e,i=!!t.stripeSubscriptionId,o=t.trial,l="active"===t.status&&(0,a.A)(t.endDate),c=[...l?[{id:"edit_products",label:"Edit Products"}]:[],...l&&!i?[{id:"update_end_date",label:"Update End Date"},{id:"terminate",label:(0,r.tZ)("span",{css:{color:C.r.colors.red100},children:"Terminate"})}]:[],...l&&o?[{id:"convert_trial",label:"Convert Trial"}]:[]],u=c.length>0;return(0,r.tZ)(d.h,{options:c,selectedOption:"",onChange:e=>{switch(e){case"edit_products":(0,s.vC)({title:"Edit Product Entitlements",content:(0,r.tZ)(B,{subscription:t,onConfirm:e=>R(()=>b(t.id,e),"Failed to update products, please try again")})});break;case"update_end_date":(0,s.vC)({title:"Update Subscription End Date",content:(0,r.tZ)(x,{subscription:t,onConfirm:e=>R(()=>h(t.id,e),"Failed to update end date, please try again")})});break;case"convert_trial":(0,s.vC)({title:"Convert Trial Subscription",content:(0,r.tZ)(k,{subscription:t,onConfirm:()=>R(()=>m(t.id),"Failed to convert trial subscription, please try again")})});break;case"terminate":(0,s.vC)({title:"Terminate Subscription",content:(0,r.tZ)(S,{subscription:t,onConfirm:()=>R(()=>g(t.id),"Failed to terminate subscription, please try again")})})}},triggerLabel:" ",align:"right",ariaLabel:"Subscription actions",disabled:!u,className:n})},T=e=>{let{status:t,className:n}=e;switch(t){case"auto-renews":return(0,r.tZ)(l.D,{color:"green",className:n,children:"Auto-renews"});
1case"pending":return(0,r.tZ)(l.D,{color:"purple",className:n,children:"Pending"});case"expired":return(0,r.tZ)(l.D,{color:"neutral",className:n,children:"Expired"});case"non-renewing":return(0,r.tZ)(l.D,{color:"neutral",className:n,children:"Non-renewing"})}}},46403:function(e,t,n){n.d(t,{P:()=>w,h:()=>b});var r=n(97496),i=n(20178),a=n.n(i),o=n(95931),l=n(4622),s=n(72871),c=n(63482),d=n(8e3),u=n(36769),p=n(33173),h=n(67661),m=n(31756),g=n(11823);let b=(0,m.Rt)({description:"load invitations",request:{method:"get",path:"/api/playground/data-explorer/invitations"}}),f=(0,m.Rt)({description:"cancel this invitation",request:{method:"post",path:"/api/playground/data-explorer/invitations?action=cancel"}}),v=(0,m.Rt)({description:"resend this invitation",request:{method:"post",path:"/api/playground/data-explorer/invitations?action=resend"}}),y=(0,m.Rt)({description:"accept this district administrator invitation",request:{method:"post",path:"/api/playground/data-explorer/invitations?action=acceptDistrictAdmin"},effects:{success:[{effect:"toast",message:"District administrator invitation accepted."},{effect:"refresh"}]}}),w=e=>{let{invitations:t,showOrganization:n=!1,userId:i}=e,[a,l]=(0,o.useState)({}),s=(0,o.useMemo)(()=>t.map(e=>{let t=a[e.id];return t?{...e,status:t}:e}),[t,a]),c=(0,o.useMemo)(()=>k.display({id:"actions",cell:e=>(0,r.tZ)(Z,{invitation:e.row.original,userId:i,onStatusChange:t=>{l(n=>({...n,[e.row.original.id]:t}))}})}),[i]),d=(0,o.useMemo)(()=>n?k.columns([S,B,D,X,A,c]):k.columns([S,D,X,A,c]),[n,c]),u=(0,h.Oq)({data:s,columns:d,getRowId:e=>String(e.id),paginate:{pageSize:200}});return(0,r.BX)(r.HY,{children:[(0,r.tZ)(h.R1,{table:u,gridTemplate:n?"minmax(0, 1.5fr) minmax(130px, 1fr) 110px 90px 90px 40px":"minmax(0, 1.5fr) 110px 90px 90px 40px",ariaLabel:"Invitations",emptyMessage:"No invitations",noMatchesMessage:"No matching invitations",scrollable:!0}),(0,r.tZ)(h.QQ,{table:u})]})},Z=e=>{let{invitation:t,userId:n,onStatusChange:i}=e,a=(0,m.lM)(f,{onResult:e=>{"success"===e.status&&(l.Am.success("Invitation cancelled."),i("cancelled"))}}),o=(0,m.lM)(v,{onResult:e=>{"success"===e.status&&l.Am.success("Invitation resent to ".concat(t.email,"."))}});if(!x.has(t.status))return null;let s=[...n&&"district_admin"===t.role&&"pending"===t.status?[{label:"Accept for user",onClick:()=>{(0,d.vC)({title:"Accept district administrator invitation",minimal:!0,content:(0,r.tZ)(C,{userId:n,invitation:t,onAccepted:()=>{i("accepted")}})})}}]:[],{label:"Resend invitation",onClick:()=>{o.dispatch({body:{invitationId:t.id}})}},{label:"Cancel invitation",color:g.r.colors.red100,onClick:()=>{window.confirm("Once cancelled, this invitation cannot be accepted by the recipient. Are you sure you want to cancel this invitation?")&&a.dispatch({body:{invitationId:t.id}})}}];return(0,r.tZ)(p.P,{label:"Actions for ".concat(t.email),items:s})},C=e=>{let{userId:t,invitation:n,onAccepted:i}=e,a=(0,m.lM)(y,{onResult:e=>{"success"===e.status&&(i(),(0,d.Wr)())}});return(0,r.tZ)(c.U,{message:(0,r.BX)(r.HY,{children:[(0,r.BX)("p",{children:["This will make ",(0,r.tZ)("strong",{children:n.email})," a district administrator for ",(0,r.tZ)("strong",{children:n.districtName})," and remove their direct school associations."]}),(0,r.tZ)("p",{children:"Users with classrooms, roster-managed accounts, or unsupported organization responsibilities cannot be upgraded through this action."})]}),confirmLabel:"Accept invitation",onCancel:d.Wr,onConfirm:()=>{a.dispatch({body:{userId:t,invitationId:n.id}})},buttonProps:{confirm:{loading:a.loading,loadingLabel:"Accepting invitation"}}})},x=new Set(["pending","failed","unreachable"]),k=(0,h.Wv)(),S=k.accessor("email",{header:"Email",cell:e=>(0,r.tZ)("span",{title:e.getValue(),css:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.getValue()})}),B=k.accessor(e=>{var t,n;return null!=(n=null!=(t=e.schoolName)?t:e.districtName)?n:void 0},{id:"organization",header:()=>(0,r.tZ)("span",{css:{whiteSpace:"nowrap"},children:"Organization"}),cell:e=>{var t,n;let i=e.row.original;return i.schoolId?(0,r.tZ)(a(),{href:"/dev/playground/data-explorer/schools/".concat(i.schoolId),children:null!=(t=i.schoolName)?t:"Unnamed school"}):i.districtId?(0,r.tZ)(a(),{href:"/dev/playground/data-explorer/districts/".concat(i.districtId),children:null!=(n=i.districtName)?n:"Unnamed district"}):(0,r.tZ)("span",{css:{color:g.r.colors.n50},children:"â"})},sortUndefined:"last"}),D=k.accessor("persona",{id:"role",header:"Role",cell:e=>(0,r.tZ)(s.D,{persona:e.getValue(),titleCase:!0})}),I={pending:g.r.colors.n70,accepted:g.r.colors.green90,declined:g.r.colors.n50,cancelled:g.r.colors.n50,failed:g.r.colors.red100,unreachable:g.r.colors.red100},X=k.accessor("status",{header:"Status",cell:e=>(0,r.tZ)("span",{css:{color:I[e.getValue()],fontWeight:500},children:e.getValue()})}),A=k.accessor("sentAt",{header:"Sent",cell:e=>(0,r.tZ)(u.bb,{value:e.getValue()})})},11028:function(e,t,n){n.d(t,{nQ:()=>i,rE:()=>a,sE:()=>o});var r=n(97496);let i=e=>{let{title:t,...n}=e;return(0,r.BX)("svg",{width:"1em",viewBox:"0 0 24 24",...n,children:[(0,r.tZ)("title",{children:null!=t?t:"Check"}),(0,r.tZ)("path",{fill:"currentColor",d:"M10 15.17l9.192-9.191 1.414 1.414L10 17.999l-6.364-6.364 1.414-1.414 4.95 4.95z"})]})},a=e=>{let{title:t,...n}=e;return(0,r.BX)("svg",{width:"1em",viewBox:"0 0 24 24",...n,children:[(0,r.tZ)("title",{children:null!=t?t:"Check"}),(0,r.tZ)("path",{fill:"currentColor",d:"M12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22ZM12 20C16.4183 20 20 16.4183 20 12C20 7.58172 16.4183 4 12 4C7.58172 4 4 7.58172 4 12C4 16.4183 7.58172 20 12 20ZM11.0026 16L6.75999 11.7574L8.17421 10.3431L11.0026 13.1716L16.6595 7.51472L18.0737 8.92893L11.0026 16Z"})]})},o=e=>{let{title:t,...n}=e;return(0,r.BX)("svg",{width:"1em",viewBox:"0 0 24 24",...n,children:[(0,r.tZ)("title",{children:null!=t?t:"Check"}),(0,r.tZ)("path",{fill:"currentColor",d:"M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10Zm-.997-6 7.07-7.071-1.413-1.414-5.657 5.657-2.829-2.829-1.414 1.414L11.003 16Z"})]})}},94695:function(e,t,n){n.d(t,{u:()=>a});var r=n(97496),i=n(11823);let a=e=>{let{circleFill:t=i.r.colors.n30,stroke:n=i.r.colors.n80,...a}=e;return(0,r.BX)("svg",{width:"1em",viewBox:"0 0 24 24",fill:"none",...a,children:[(0,r.tZ)("circle",{cx:12,cy:12,r:12,fill:t}),(0,r.tZ)("path",{d:"M16 10.5L12 14.5L8 10.5",stroke:n,strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round"})]})}},87057:function(e,t,n){n.d(t,{A:()=>i});var r=n(43670);function i(e){return+(0,r.Q)(e)>Date.now()}},3098:function(e,t,n){n.d(t,{C:()=>i});var r=n(43670);function i(e){return+(0,r.Q)(e)<Date.now()}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.