10100 Hillside Ln W,
Minnetonka, MN 55305
Office:
(612) 327-9182
import{a as e}from"../../shared/js/rolldown-runtime.WmLfqUcM.js";import{a as t,d as n,n as r,r as i}from"./vendor-query.DdXA9l73.js";import{i as a}from"./vendor-react.C_maUxYk.js";import{Ht as o,Jt as s,Kt as c,Lt as l,Nt as u,O as d,Qt as f,T as p,Wt as m,_t as h,an as g,gt as _,j as v,k as y,ot as b,qt as x,t as S,tn as C,w}from"./shared.is9eW3zt.js";import{A as T,Dt as E,F as ee,Ft as D,I as te,M as ne,Nt as re,Ot as O,P as ie,d as k,ht as A,t as j}from"./vendor-ui.DXm-99Gq.js";import{t as ae}from"./analytics-links.yJWZ7vZX.js";var M=e(n()),N=a(),P=(0,M.forwardRef)((e,t)=>(0,N.jsx)(`svg`,{width:18,height:18,viewBox:`0 0 18 18`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,ref:t,...e,children:(0,N.jsx)(`path`,{d:`M6.93 0.78C6.46 0.793 5.933 0.819 5.76 0.838C4.827 0.942 4.168 1.182 3.626 1.615C2.958 2.15 2.565 2.858 2.4 3.827C2.297 4.43 2.272 5.137 2.268 7.59L2.265 9.945L2.329 10.065C2.477 10.34 2.702 10.479 3 10.479C3.298 10.479 3.523 10.34 3.671 10.065C3.735 9.946 3.735 9.932 3.753 7.335C3.771 4.581 3.782 4.351 3.917 3.817C4.021 3.404 4.143 3.181 4.412 2.912C4.681 2.643 4.904 2.521 5.317 2.417C5.78 2.3 6.129 2.276 7.598 2.259L9 2.242L9.001 2.434C9.003 2.973 9.063 4.517 9.09 4.74C9.202 5.642 9.547 6.357 10.076 6.78C10.466 7.091 11.098 7.328 11.76 7.41C11.976 7.437 13.53 7.497 14.076 7.499L14.246 7.5L14.256 8.723C14.265 9.907 14.267 9.949 14.329 10.065C14.477 10.34 14.702 10.479 15 10.479C15.298 10.479 15.523 10.34 15.671 10.065C15.734 9.947 15.735 9.921 15.734 8.55C15.734 7.333 15.727 7.122 15.68 6.9C15.621 6.622 15.476 6.303 15.284 6.03C15.076 5.75 10.681 1.361 10.437 1.19C10.189 1.016 9.889 0.878 9.642 0.823C9.38 0.766 8.133 0.746 6.93 0.78ZM13.013 5.995C12.596 5.995 11.976 5.95 11.675 5.896C11.307 5.819 11.13 5.735 10.948 5.552C10.764 5.369 10.681 5.193 10.603 4.819C10.556 4.596 10.501 3.914 10.5 3.54V3.315L11.835 4.65L13.171 5.985L13.013 5.995ZM3.644 11.282C3.067 11.326 2.68 11.478 2.385 11.775C2.184 11.977 2.069 12.189 1.972 12.534C1.908 12.757 1.906 12.816 1.906 14.25C1.906 15.684 1.908 15.743 1.972 15.966C2.069 16.311 2.184 16.523 2.385 16.725C2.58 16.921 2.833 17.062 3.137 17.143C3.596 17.264 4.746 17.265 5.205 17.144C5.793 16.989 6.205 16.555 6.316 15.973C6.416 15.45 6.341 15.185 6.032 14.974C5.579 14.665 4.971 14.948 4.895 15.503C4.885 15.578 4.866 15.652 4.847 15.713C4.808 15.752 3.748 15.759 3.578 15.721C3.432 15.688 3.421 15.679 3.398 15.576C3.368 15.431 3.368 13.069 3.398 12.924C3.421 12.821 3.432 12.812 3.578 12.779C3.748 12.741 4.808 12.748 4.847 12.787C4.886 12.826 4.886 12.918 4.895 12.989C4.961 13.467 5.388 13.741 5.86 13.61C6.02 13.565 6.284 13.303 6.327 13.147C6.372 12.983 6.368 12.791 6.316 12.519C6.205 11.937 5.792 11.502 5.205 11.348C4.856 11.256 4.245 11.227 3.644 11.282ZM8.235 11.279C7.606 11.351 7.164 11.706 6.981 12.285C6.922 12.474 6.915 12.559 6.915 13.125C6.915 13.651 6.924 13.785 6.97 13.935C7.107 14.382 7.449 14.716 7.984 14.847C8.074 14.872 8.364 14.899 8.645 14.91L9.144 14.929L9.162 15.018C9.185 15.134 9.185 15.457 9.162 15.574L9.143 15.666L8.389 15.676C7.556 15.687 7.494 15.699 7.294 15.889C7.146 16.03 7.081 16.19 7.081 16.42C7.081 16.66 7.147 16.816 7.311 16.964C7.514 17.146 7.569 17.155 8.505 17.154C9.205 17.153 9.377 17.144 9.537 17.101C10.077 16.955 10.434 16.596 10.582 16.052C10.622 15.907 10.633 15.737 10.633 15.295C10.633 14.853 10.622 14.683 10.582 14.538C10.435 13.994 10.07 13.628 9.541 13.493C9.317 13.437 9.171 13.428 8.87 13.405L8.385 13.385V12.665L9.105 12.65C9.757 12.636 9.838 12.629 9.96 12.571C10.213 12.451 10.386 12.184 10.386 11.9C10.386 11.616 10.221 11.355 9.975 11.23C9.863 11.171 9.808 11.166 9.15 11.161C8.762 11.158 8.351 11.166 8.235 11.279ZM11.426 11.27C11.342 11.286 11.265 11.314 11.189 11.379C10.959 11.576 10.849 11.804 10.849 12.048C10.85 12.232 10.897 12.37 11.557 14.105C12.567 16.759 12.565 16.756 12.81 17.001C13.171 17.362 13.718 17.344 14.182 16.957C14.413 16.695 14.396 16.735 15.393 14.099C16.195 11.978 16.183 12.025 16.027 11.718C15.766 11.202 15.013 11.178 14.74 11.676C14.656 11.827 14.507 12.194 14.083 13.364C13.757 14.227 13.48 14.922 13.467 14.909C13.454 14.896 13.177 14.2 12.853 13.325C12.529 12.45 12.277 11.788 12.224 11.69C12.159 11.568 12.058 11.467 11.88 11.379C11.73 11.305 11.579 11.278 11.426 11.27Z`,fill:`currentColor`,fillRule:`evenodd`})})),F=(e,t,n,i,a,o)=>{let s=C();return r({queryKey:[`admin-students`,e,t,n,i,a,o],queryFn:()=>s.adminStudents.getAdminStudents(e,t,n,i,a,o)})},oe=()=>{let e=C(),n=t();return i({mutationFn:t=>e.adminStudents.deleteStudents(t),onSuccess:()=>{n.invalidateQueries({queryKey:[`admin-students`]})}})},se=()=>{let e=C();return i({mutationFn:t=>e.adminStudents.clearStudentSessions(t)})},I=()=>{let e=C();return i({mutationFn:({search:t,courseId:n,dateRange:r})=>e.adminStudents.exportAdminStudents(t,n,r)})},L=(0,M.createContext)(null),R=({children:e})=>{let{__:t}=g(),{page:n,perPage:r}=y(),[i,a]=(0,M.useState)(n||1),[s,c]=(0,M.useState)(r||10),[u,d]=(0,M.useState)(``),[f,p]=(0,M.useState)(null),[m,h]=(0,M.useState)(o(`students`)),[_,b]=(0,M.useState)([]),[x,S]=(0,M.useState)(0),{sort:C,onSort:w}=v(),T=F(i,s,l(u,500),C,f,m);return(0,M.useEffect)(()=>{T.data&&S(T.data.total_students)},[T.data]),(0,N.jsx)(L.Provider,{value:{page:i,setPage:a,perPage:s,setPerPage:c,search:u,setSearch:d,courseId:f,setCourseId:p,dateRange:m,setDateRange:h,selectedStudents:_,setSelectedStudents:b,studentsQuery:T,total:x,sort:C,onSort:w},children:T.error?(0,N.jsx)(O,{children:t(`Error`)}):e})},z=()=>{let e=(0,M.useContext)(L);if(!e)throw Error(`useManageStudentsContext must be used within ManageStudentsProvider`);return e},ce=({showPoints:e})=>(0,N.jsxs)(k,{background:`white`,children:[(0,N.jsx)(x,{children:(0,N.jsx)(c,{fixedWidth:!0,w:`20px`,h:`20px`})}),(0,N.jsx)(x,{children:(0,N.jsx)(c,{w:`120px`,h:`20px`})}),(0,N.jsx)(x,{children:(0,N.jsx)(c,{w:`140px`,h:`20px`})}),(0,N.jsx)(x,{children:(0,N.jsx)(c,{w:`100px`,h:`20px`})}),(0,N.jsx)(x,{children:(0,N.jsx)(c,{w:`50px`,h:`20px`})}),e&&(0,N.jsx)(x,{children:(0,N.jsx)(c,{w:`40px`,h:`20px`})}),(0,N.jsx)(x,{children:(0,N.jsxs)(A,{gap:`8px`,alignItems:`center`,children:[(0,N.jsx)(c,{fixedWidth:!0,w:`70px`,h:`34px`}),(0,N.jsx)(c,{fixedWidth:!0,w:`36px`,h:`34px`})]})})]}),le=()=>{let{__:e}=g();return[{id:`delete`,label:e(`Unenroll from courses`)}]},B=()=>{let e=C(),n=t();return i({mutationFn:t=>t.action===`delete`?e.adminStudents.deleteStudents(t.items.map(e=>e.user_id)):Promise.resolve(),onSuccess:()=>{n.invalidateQueries({queryKey:[`admin-students`]})}})},V=e=>{let t=e.date_formatted?.date||``,n=e.date_formatted?.time||``;return!t&&!n?`—`:[t,n].filter(Boolean).join(` - `)},H=`https://stylemixthemes.com/wordpress-lms-plugin/pricing/?utm_source=mswpadmin&utm_medium=students-tab&utm_campaign=upgrade-to-pro-button`,U=e=>`${e||``}admin.php?page=stm-lms-go-pro&utm_source=mswpadmin&utm_medium=students-tab&utm_campaign=upgrade-to-pro-button`,W=()=>{let{__:e,sprintf:t}=g(),{admin_url:n,enabled_addons:r,is_pro:i,is_pro_plus:a}=h(),{can_clear_student_sessions:o}=_(`react_students`),{showSuccessToast:s,showErrorToast:c}=b(),l=(0,M.useRef)(null),v=le(),{mutate:y}=oe(),{mutate:x,isLoading:C}=se(),{page:D,setPage:k,perPage:P,setPerPage:F,search:I,setSearch:L,courseId:R,setCourseId:W,setDateRange:G,studentsQuery:K,total:q,selectedStudents:J,setSelectedStudents:Y,sort:ue,onSort:X}=z(),Z=!!r?.point_system,Q=e=>{k(1),Y([]),e()},de=e=>{J.includes(e)?Y(J.filter(t=>t!==e)):Y([...J,e])};(0,M.useEffect)(()=>{Y([])},[D,Y]);let $=e(`Are you sure you want to unenroll this student from your courses? This action cannot be undone. All course progress for this student will be permanently lost.`),fe=e(`Are you sure you want to unenroll the selected students from your courses? This action cannot be undone. All course progress for the selected students will be permanently lost.`),pe=(0,M.useMemo)(()=>[{label:e(`Student`),key:`name`,isSortable:!0,minWidth:`170px`,isTruncated:!0,rowRenderer:e=>(0,N.jsx)(S,{noOfLines:1,children:e.display_name||`—`})},{label:e(`Email`),key:`email`,isSortable:!0,minWidth:`180px`,isTruncated:!0,rowRenderer:e=>(0,N.jsx)(S,{noOfLines:1,children:e.email||`—`})},{label:e(`Joined`),key:`joined`,isSortable:!0,minWidth:`140px`,isTruncated:!0,rowRenderer:e=>(0,N.jsx)(S,{noOfLines:1,children:V(e)})},{label:e(`Course enrolled`),key:`enrolled`,isSortable:!0,width:`96px`,headerProps:{whiteSpace:`normal`,lineHeight:`16px`},rowRenderer:e=>e.enrolled||0},{label:e(`Points`),key:`points`,isSortable:!0,width:`80px`,condition:Z,rowRenderer:e=>e.points||0},{label:e(`Actions`),key:`actions`,width:`1%`,rowRenderer:r=>{let u=ae({user_id:r.user_id,role:`student`},`manage_students`),d=i?H:U(n),p=e(i?`The ability to view detailed reports on students is only available in the PRO PLUS version of the plugin.`:`The ability to view detailed reports on students is only available in the PRO version of the plugin.`),m=r.display_name||r.email||String(r.user_id),h=[...o&&r.can_clear_sessions?[{label:e(`Clear sessions`),onClick:()=>{if(C)return;let n=t(e(`Are you sure you want to clear all active sessions for %s? The student will be signed out on every device.`),m);window.confirm(n)&&x(r.user_id,{onSuccess:t=>{s(t.message||e(`Student sessions have been cleared.`))},onError:t=>{c(t instanceof Error&&t.message?t.message:e(`Unable to clear sessions for this student.`))}})}}]:[],{label:e(`Unenroll`),color:`error`,onClick:()=>{window.confirm($)&&y([r.user_id],{onSuccess:()=>{Y(J.filter(e=>e!==r.user_id))}})}}];return(0,N.jsxs)(A,{gap:`8px`,onClick:e=>e.stopPropagation(),children:[a?(0,N.jsx)(E,{as:`a`,href:u,m:`0`,variant:`defaultLight`,children:e(`View`)}):(0,N.jsxs)(te,{trigger:`hover`,placement:`top`,children:[(0,N.jsx)(T,{children:(0,N.jsx)(O,{display:`inline-block`,cursor:`not-allowed`,children:(0,N.jsx)(E,{m:`0`,variant:`defaultLight`,pointerEvents:`none`,opacity:.6,"aria-disabled":`true`,tabIndex:-1,children:e(`View`)})})}),(0,N.jsx)(re,{containerRef:l,children:(0,N.jsxs)(ne,{p:`25px 15px`,borderRadius:`4px`,borderColor:`border`,children:[(0,N.jsx)(ee,{}),(0,N.jsxs)(ie,{m:`0`,p:`0`,children:[(0,N.jsx)(j,{color:`dark70`,fontWeight:`medium`,align:`center`,children:p}),(0,N.jsx)(A,{justify:`center`,children:(0,N.jsx)(E,{as:`a`,href:d,variant:`primary`,m:`10px 0 0`,children:e(`Upgrade MasterStudy`)})})]})]})})]}),(0,N.jsx)(f,{items:h})]})}}],[e,t,n,o,x,y,i,a,C,J,Y,c,s,$,Z]);return(0,N.jsxs)(O,{ref:l,children:[(0,N.jsxs)(u,{allTimeEndDate:null,selectedItems:J,setSelectedItems:Y,getItemId:e=>e.id,totalItems:q,dataItems:K.data?.students||[],bulkActions:v,useBulkAction:B,bulkActionGuard:{delete:fe},datePickerLocalStorageKey:`students`,onDateRangeChange:(e,t)=>Q(()=>G(m(e,t))),children:[(0,N.jsx)(O,{maxW:`220px`,w:`100%`,children:(0,N.jsx)(w,{value:R,onChange:e=>Q(()=>W(e)),placeholder:e(`All courses`)})}),(0,N.jsx)(O,{maxW:`240px`,w:`100%`,children:(0,N.jsx)(p,{placeholder:e(`Search by name or email`),value:I,onChange:e=>Q(()=>L(e.target.value))})})]}),(0,N.jsx)(d,{headers:pe,data:K.data?.students||[],selectedItems:J,page:D,total:q,perPage:P,isLoading:K.isLoading||K.isRefetching,SkeletonCells:(0,N.jsx)(ce,{showPoints:Z}),onPageChange:k,onSelectItem:e=>de(e.id),onPerPageChange:e=>Q(()=>F(e)),sort:ue,onSort:X})]})},G=e=>{if(!Array.isArray(e)||e.length===0)return;let t=Object.keys(e[0]),n=[t.join(`,`),...e.map(e=>t.map(t=>{let n=e[t];if(Array.isArray(n))return`"${n.join(`,`).replace(/"/g,`""`)}"`;let r=n==null?``:String(n);return r.includes(`,`)||r.includes(`"`)||r.includes(` `)?`"${r.replace(/"/g,`""`)}"`:r}).join(`,`))],r=new Blob([``+n.join(`\r `)],{type:`text/csv;charset=utf-8;`}),i=document.createElement(`a`);i.href=URL.createObjectURL(r),i.download=`enrolled_students.csv`,i.click(),URL.revokeObjectURL(i.href)},K=()=>{let{__:e}=g(),{search:t,courseId:n,dateRange:r}=z(),{mutate:i,isLoading:a}=I();return(0,N.jsx)(s,{title:e(`Students`),button:(0,N.jsx)(E,{m:`0`,variant:`primary`,onClick:()=>{i({search:t,courseId:n,dateRange:r},{onSuccess:G})},isLoading:a,leftIcon:(0,N.jsx)(D,{as:P,boxSize:`18px`}),children:(0,N.jsx)(j,{children:e(`Export CSV`)})}),children:(0,N.jsx)(W,{})})},q=()=>(0,N.jsx)(R,{children:(0,N.jsx)(K,{})});export{q as default};
