1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[92490],{3610:(e,t,r)=>{"use strict";function n(e,t,r){let n=[],a=[...t],i=[...e],l=new Set(r),o=e.length+Math.min(t.length,l.size);for(let e=1;e<=o;e++)l.has(e)&&a.length>0?n.push({kind:"sponsored",data:a.shift(),position:e}):i.length>0&&n.push({kind:"organic",data:i.shift(),position:e});return n}function a(e){return e?e.split(",").map(e=>parseInt(e.trim(),10)).filter(e=>Number.isFinite(e)&&e>0):[]}r.d(t,{C:()=>n,V:()=>a})},7399:(e,t,r)=>{"use strict";r.r(t),r.d(t,{GravityFormClient:()=>j});var n=r(95155),a=r(12115),i=r(30837);let l={2:"prefix",3:"first",4:"middle",6:"last",8:"suffix"},o=(e,t)=>`input_${e}_${t}`,s=(e,t)=>`input_${e}_${t}`,d=e=>"string"==typeof e?e:"",u=async e=>{if(!e.ok)throw Error(`Failed to submit form with code ${e.status}: ${e.statusText}`);let t=await e.json();return{data:t?.data?.submitGfForm??null,errors:t?.errors}},c=async(e,t,r,n)=>u(await fetch(`${e}/graphql`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({query:t,variables:{id:r,fieldValues:n}}),signal:AbortSignal.timeout(3e4)})),m=async(e,t,r,n)=>{let a=new FormData,i={query:t,variables:{id:r,fieldValues:n.map(e=>({...e,fileUploadValues:e.fileUploadValues||[]}))}};a.append("operations",JSON.stringify(i));let l={};return n.forEach((e,t)=>{let r=e.fileUploadValues;(r instanceof FileList||Array.isArray(r))&&Array.from(r).forEach((e,r)=>{let n=`file_${t}_${r}`;a.append(n,e),l[n]=[`variables.fieldValues.${t}.fileUploadValues.${r}`]})}),a.append("map",JSON.stringify(l)),u(await fetch(`${e}/graphql`,{method:"POST",body:a,signal:AbortSignal.timeout(3e4)}))},h=async(e,t,r,n)=>n.some(e=>!!e.fileUploadValues)?m(e,t,r,n):c(e,t,r,n);function p({field:e,htmlFor:t}){return(0,n.jsx)(i.Label,{htmlFor:t,required:!!e.isRequired,className:"HIDDEN"===e.labelPlacement?"sr-only":"mb-xs block font-bold",children:e.label})}function f({field:e}){return(0,n.jsxs)("legend",{className:"HIDDEN"===e.labelPlacement?"sr-only":"mb-xs block font-bold text-heading",children:[e.label,e.isRequired&&(0,n.jsx)("span",{className:"ml-1 text-error-500","aria-label":"required",children:"*"})]})}function g({error:e}){return e?(0,n.jsx)("div",{className:"mt-xxs w-full border border-error-500 bg-error-100 px-md py-xs text-b5 text-error-500",role:"alert",children:e.message}):null}let x={TEXT:"text",EMAIL:"email",PHONE:"tel",NUMBER:"number",DATE:"date"};function b({field:e,formId:t,error:r}){let a=o(t,e.id),l=x[e.type]??"text";return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(p,{field:e,htmlFor:a}),(0,n.jsx)(i.Input,{id:a,name:a,type:l,placeholder:e.placeholder,required:!!e.isRequired,error:!!r}),(0,n.jsx)(g,{error:r})]})}let v={TEXT:b,EMAIL:b,PHONE:b,NUMBER:b,DATE:b,TEXTAREA:function({field:e,formId:t,error:r}){let a=o(t,e.id);return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(p,{field:e,htmlFor:a}),(0,n.jsx)(i.Textarea,{id:a,name:a,placeholder:e.placeholder,required:!!e.isRequired,error:!!r}),(0,n.jsx)(g,{error:r})]})},RADIO:function({field:e,formId:t,error:r}){let a=o(t,e.id),l=e.choices??[];return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("fieldset",{className:"flex flex-col gap-xxs border-0 p-0",children:[(0,n.jsx)(f,{field:e}),(0,n.jsx)(i.Radio,{name:a,required:!!e.isRequired,orientation:"vertical",options:l.map(e=>({value:e.value,label:e.text,error:!!r}))})]}),(0,n.jsx)(g,{error:r})]})},CHECKBOX:function({field:e,formId:t,error:r}
1){let a=e.choices??[],l=e.inputs??[],d=o(t,e.id);return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("fieldset",{className:"flex flex-col gap-xxs border-0 p-0",children:[(0,n.jsx)(f,{field:e}),a.map((a,o)=>{let u=s(t,l[o]?.id??`${e.id}.${o+1}`),c=`${d}-${o}`;return(0,n.jsx)(i.Checkbox,{id:c,name:u,value:a.value,label:a.text,error:!!r},a.value)})]}),(0,n.jsx)(g,{error:r})]})},SELECT:function({field:e,formId:t,error:r}){let a=o(t,e.id),l=e.choices??[];return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(p,{field:e,htmlFor:a}),(0,n.jsx)(i.Select,{id:a,name:a,required:!!e.isRequired,placeholder:e.placeholder||"Select...",error:!!r,children:l.map(e=>(0,n.jsx)(i.SelectItem,{value:e.value,children:e.text},e.value))}),(0,n.jsx)(g,{error:r})]})},NAME:function({field:e,formId:t,error:r}){let a=(e.inputs??[]).filter(e=>!e.isHidden);return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("fieldset",{className:"flex flex-col gap-xxs border-0 p-0",children:[(0,n.jsx)(f,{field:e}),(0,n.jsx)("div",{className:"flex flex-col gap-sm sm:flex-row",children:a.map(r=>{let a=s(t,r.id),l=r.customLabel||r.label;return(0,n.jsxs)("div",{className:"flex w-full flex-col",children:[l&&(0,n.jsx)("label",{htmlFor:a,className:"mb-xxs block text-b5 text-body",children:l}),(0,n.jsx)(i.Input,{id:a,name:a,type:"text",placeholder:r.placeholder,required:!!e.isRequired})]},r.id)})})]}),(0,n.jsx)(g,{error:r})]})},FILEUPLOAD:function({field:e,formId:t,error:r}){let a=o(t,e.id),l=e.allowedExtensions?.length?e.allowedExtensions.map(e=>`.${e.replace(/^\./,"")}`).join(","):void 0;return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(p,{field:e,htmlFor:a}),(0,n.jsx)(i.Input,{id:a,name:a,type:"file",accept:l,multiple:!!e.canAcceptMultipleFiles,required:!!e.isRequired,error:!!r}),(0,n.jsx)(g,{error:r})]})},CONSENT:function({field:e,formId:t,error:r}){let a=o(t,e.id),l=e.description?e.description.replace(/\n/g,"<br />"):null;return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("fieldset",{className:"border-0 p-0",children:[(0,n.jsx)(f,{field:e}),l&&(0,n.jsx)("div",{className:"mb-sm mt-xxs max-h-[15rem] w-full overflow-y-auto border border-neutral-200 bg-white p-xs text-b5 leading-6 text-body",dangerouslySetInnerHTML:{__html:l}}),(0,n.jsx)(i.Checkbox,{id:a,name:a,required:!!e.isRequired,error:!!r,label:e.checkboxLabel??""})]}),(0,n.jsx)(g,{error:r})]})}};function y({fields:e,formId:t,errors:r}){return(0,n.jsx)("ul",{className:"m-0 flex list-none flex-col gap-md p-0",children:e.map(e=>{let a=v[e.type];if(!a)return null;let i=r?.find(({id:t})=>t===e.id);return(0,n.jsx)("li",{className:"m-0 p-0",children:(0,n.jsx)(a,{field:e,formId:t,error:i})},e.id)})})}function j({id:e,title:t,description:r,fields:u,confirmations:c,submitButton:m,hasHoneypot:p,submit:f}){let[g,x]=a.useState(),[b,v]=a.useState(),[j,w]=a.useState(!1),[S,N]=a.useState(!1),[E,k]=a.useState(),A=`gravity-form-${e}`,F=`input_${e}_${Math.max(0,...u.map(e=>e.id))+1}`,T=async r=>{r.preventDefault(),w(!0);let n=new FormData(r.currentTarget),a=((e,t,r)=>{let n=[];for(let a of t){let t=o(r,a.id);switch(a.type){case"EMAIL":{let r=d(e.get(t));r&&n.push({id:a.id,emailValues:{value:r}});break}case"FILEUPLOAD":{let r=e.getAll(t).filter(e=>e instanceof File&&e.size>0);r.length&&n.push({id:a.id,fileUploadValues:r});break}case"CONSENT":{let r=null!=e.get(t);n.push({id:a.id,value:String(r)});break}case"CHECKBOX":{let t=(a.inputs??a.choices?.map((e,t)=>({id:`${a.id}.${t+1}`}))??[]).map(t=>{let n=d(e.get(s(r,t.id)));return n?{inputId:Number(t.id),value:n}:null}).filter(e=>!!e);t.length&&n.push({id:a.id,checkboxValues:t});break}case"NAME":{let t={};(a.inputs??[]).forEach(n=>{if(n.isHidden)return;let a=n.id.split(".")[1],i=a?l[a]:void 0,o=d(e.get(s(r,n.id)));i&&o&&(t[i]=o)}),Object.keys(t).length&&n.push({id:a.id,nameValues:t});break}default:{let r=d(e.get(t));r&&n.push({id:a.id,value:r})}}}return n})(n,u,e);!function(e){let t=window;try{t.tagular?.("beam","FormSubmitted",{"@type":"redventures.usertracking.v3.FormSubmitted",...e})}catch(t){let e;e=window.newrelic,e?.noticeError?.(t instanceof Error?t:Error(String(t)),{component:"GravityForm",action:"formSubmittedBeam"})}}({outboundUrl:c[0]?.url||"",formContext:{formId:String(e),formName:t,formType:c[0]?.type},field:u.map(t=>
1{let r,a=o(e,t.id),i=(r=!1,n.forEach((e,t)=>{r||(t===a||t.startsWith(`${a}.`))&&(e instanceof File?e.size>0:d(e).length>0)&&(r=!0)}),r);return{fieldId:String(t.id),fieldLabel:t.label??"",fieldName:a,fieldType:t.type,fieldValue:i?"hidden":"blank"}})});try{let{data:t,errors:r}=await h(f.cmsUrl,f.query,e,a),n=!1;if(r?.length&&(x(r),n=!0),t?.errors?.length&&(v(t.errors),n=!0),n)return void w(!1);(()=>{let{redirectUrl:e,message:t}=function(e,t){let r=e?.message||"Successfully Sent!";if((e?.type==="REDIRECT"||e?.type==="PAGE")&&e.url){let n=function(e,t){try{let r=new URL(e,t);return r.origin===t?r.href:void 0}catch{return}}(e.url,t);if(n)return{redirectUrl:n,message:r}}return{message:r}}(c[0],window.location.origin);if(e){window.location.href=e;return}k(t),N(!0),v(void 0),x(void 0)})(),w(!1)}catch(e){x([{message:e instanceof Error?e.message:`An unknown error occurred handling form submit: ${String(e)}`}]),w(!1)}},O=!!(g?.length||b?.length),$=!S&&(t||r);return S?(0,n.jsx)(i.Section,{as:"div",padding:"none",gap:"xxs",role:"status",children:(0,n.jsx)(i.Text,{tag:"p",variant:"b3",id:A,children:E})}):(0,n.jsxs)(i.Flex,{direction:"column",gap:"md",width:"full",children:[O&&(0,n.jsxs)("div",{className:"w-full border border-error-500 bg-error-100 px-md py-sm text-body",role:"alert",children:[(0,n.jsx)(i.Text,{tag:"p",variant:"b3",weight:"bold",color:"heading",children:"There was a problem with your submission. Please review the fields below."}),!!g?.length&&(0,n.jsx)(i.List,{bulletStyle:"bullet",className:"mt-xxs",children:g?.map((e,t)=>(0,n.jsx)(i.ListItem,{className:"text-b5 text-error-500",children:e.message},t))})]}),$&&(0,n.jsxs)(i.Flex,{direction:"column",gap:"xxs",className:"text-center",children:[t&&(0,n.jsx)(i.Text,{tag:"p",variant:"b1",weight:"bold",color:"heading",children:t}),r&&(0,n.jsx)(i.Text,{tag:"p",variant:"b4",children:r})]}),(0,n.jsx)("form",{id:A,onSubmit:T,noValidate:!1,children:(0,n.jsxs)(i.Flex,{direction:"column",gap:"md",children:[(0,n.jsx)(y,{fields:u,formId:e,errors:b}),p&&(0,n.jsx)("input",{type:"text",name:F,tabIndex:-1,autoComplete:"off","aria-hidden":"true",className:"hidden"}),(0,n.jsxs)(i.Flex,{direction:"row",align:"center",justify:"center",gap:"md",className:"pt-xs",children:[(0,n.jsx)(i.Button,{type:"submit",disabled:j,children:m?.text||"Submit"}),j&&(0,n.jsx)(i.Spinner,{})]})]})})]})}},12720:(e,t,r)=>{"use strict";r.r(t),r.d(t,{RankingsAdapter:()=>T});var n=r(95155),a=r(12115),i=r(30837);function l(e){if(null==e)return;let t=Number(e);return Number.isFinite(t)?t:void 0}function o(e){let t=l(e);if(null!=t)return t>1?t/100:t}function s(e,t){let r=e.details??{}
1,n=e.schoolId??r.sdbSchoolId??r.schoolId;return{rank:e.rank??t+1,name:e.overrideFields?.schoolName??r.schoolName??"",sdbSchoolId:n,url:e.url??void 0,helid:e.helid??void 0,city:e.overrideFields?.city??r.city??void 0,stateCode:r.stateCode??void 0,blurb:e.blurb??void 0,schoolLevel:r.schoolLevel,percentOnlinePrograms:l(r.percentOnlinePrograms),accreditation:r.accreditation,superlativeTitle:e.overrideFields?.superlativeTitle??void 0,undergradTuitionInState:l(r.undergradTuitionInState),undergradTuitionOutOfState:l(r.undergradTuitionOutOfState),gradTuitionInState:l(r.gradTuitionInState),gradTuitionOutOfState:l(r.gradTuitionOutOfState),percentOnlineEnrollment:o(r.percentOnlineEnrollment),retentionRate:o(r.retentionRate),admissionRate:o(r.admissionRate),graduationRate:o(r.graduationRate),totalStudentsEnrolled:l(r.totalStudentsEnrolled),isPrivate:function(e){if(null!=e)return"string"==typeof e?"true"===e.toLowerCase()||"1"===e:!!e}(r.isPrivate),overallScore:o(r.overallScore),academicQuality:o(r.academicQuality),recommend:o(r.recommend),wouldAttendAgain:o(r.wouldAttendAgain)}}async function d(e){if(!e)return null;try{var t;let r=`/api/rango/${encodeURIComponent(e)}`,n=await fetch(r);if(200!==n.status)return null;let a=await n.json();if(!a)return null;let i=!a.extId;return{schools:(i?a.rankings??[]:a.schools??[]).map((e,t)=>{if(!i)return s(e,t);let r={...e,rank:e.rank??l(e.Rank)??t+1,blurb:e.blurb??e.Copy,overrideFields:{...e.overrideFields,schoolName:e.overrideFields?.schoolName??e.School,city:e.overrideFields?.city??e["City "]??e.City,stateName:e.overrideFields?.stateName??e.State},helid:e.helid??e.Helid,url:e.url??e.Url};return s(r,t)}),isLegacy:i,type:(t=a.type,"unranked"===t?"unranked":"ranked")}}catch{return null}}let u=new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",maximumFractionDigits:0}),c=new Intl.NumberFormat("en-US",{style:"percent",maximumFractionDigits:0}),m=new Intl.NumberFormat("en-US");function h(e){return null!=e?u.format(e):"N/A"}function p(e){return null!=e?c.format(e):"N/A"}function f(e,t){var r,n,a;let i,l,o="grad"===t,s=o?e.gradTuitionInState:e.undergradTuitionInState,d=o?e.gradTuitionOutOfState:e.undergradTuitionOutOfState,u=h(s),c=h(d);return"N/A"!==u&&"N/A"!==c&&([u,c]=(r=u,n=c,i=r.length,i===(l=n.length)?[r,n]:i<l?[r.replace("$",`$${" ".repeat(l-i)}`),n]:[r,n.replace("$",`$${" ".repeat(i-l)}`)])),{stats:[{label:"Online Enrollment",value:p(e.percentOnlineEnrollment)},{label:"Accreditation",value:e.accreditation?"Yes":"No",tooltip:e.accreditation||void 0},{label:"Acceptance Rate",value:p(e.admissionRate)},{label:"Graduation Rate",value:p(e.graduationRate)}],details:[{label:o?"Avg. Grad Tuition, In-State":"Avg. Undergrad Tuition, In-State",value:u},{label:o?"Avg. Grad Tuition, Out-of-State":"Avg. Undergrad Tuition, Out-of-State",value:c},{label:"Retention Rate",value:p(e.retentionRate)},{label:"Students Enrolled",value:null!=(a=e.totalStudentsEnrolled)?m.format(a):"N/A"},{label:"Institution Type",value:null!=e.isPrivate?e.isPrivate?"Private":"Public":"N/A"},{label:"Accreditation",value:e.accreditation||"N/A"}]}}var g=r(3610),x=r(75295),b=r(71059);let v=[{weight:"30%",title:"Academic Quality",description:"Factors including retention rate, graduation rate, and student-to-faculty ratio help provide insight into a school's academic quality."},{weight:"20%",title:"Affordability",description:"Data on net cost, post-graduation debt, and the percentage of students awarded loans and other aid provide information on affordability."},{weight:"20%",title:"Accessibility",description:"Online degree availability and online enrollment rates can reflect a school's commitment to supporting remote learners."},{weight:"30%",title:"School Reputation",description:"Competitive admissions, high enrollment, and strong alumni earnings can indicate a positive reputation among students and employers."}];function y({siteName:e,variant:t}){return"alternate"===t?(0,n.jsxs)("p",{children:[e," ranks education programs using data from reputable sources like the U.S. Department of Education. Our vetting process also includes a quality assurance team that assesses datasets for accuracy."]}):(0,n.jsxs)("p",{children:[e," ranks education programs using data from reputable sources like the U.S. Department of Education. Our vetting process also includes a quality assurance team that assesses datasets for accuracy. For more information about how ",e," evaluates and ranks education programs, check out"," ",(0,n.jsx)(i.Link,{href:"/methodology/",variant:"default",underline:"always",children:"our full ranking methodology"})," ","or review the summary below."]})}function j({year:e,siteName:t}){return(0,n.jsxs)("div",{className:"flex flex-col gap-md text-b4 text-body","data-testid":"rankings-methodology-body","data-variant":"alternate",children:[(0,n.jsx)(y,{siteName:t,variant:"alternate"}),(0,n.jsxs)("p",{children:[t," reserves the right to exclude any schools that lack significant data from the rankings to ensure accurate calculations.",e?` This ranking is from ${e}.`:""," For more about how"," ",t," evaluates and ranks education programs, visit"," ",(0,n.jsx)(i.Link,{href:"/methodology/",variant:"default",underline:"always",children:"our full ranking methodology"}),"."]})]})}function w({year:e,siteName:t}){return(0,n.jsxs)("div",{className:"flex flex-col gap-md text-b4 text-body","data-testid":"rankings-methodology-body","data-variant":"enhanced",children:[(0,n.jsx)(y,{siteName:t,variant:"enhanced"}),(0,n.jsxs)("p",{children:[e?`This ranking is from ${e}. `:"","To qualify for our rankings lists, each school must be an accredited public or private nonprofit institution. Each eligible school is then ranked based on a formula that measures:"]}),(0,n.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-md",children:v.map(e=>(0,n.jsxs)("div",{className:"bg-white rounded-sm p-md flex flex-col gap-xs",children:[(0,n.jsxs)("div",{className:"flex flex-row items-center gap-sm",children:[(0,n.jsx)("span",{className:"bg-secondary-50 text-heading rounded-sm px-sm py-xxs text-h5 font-bold",children:e.weight}),(0,n.jsx)("h4",{className:"text-h5 font-bold text-heading",children:e.title})]}),(0,n.jsx)("p",{className:"text-b5 text-subtext leading-b5",children:e.description})]},e.title))})]})}let S=({variant:e="enhanced",year:t,siteName:r="This site"})=>{let a="alternate"===e?(0,n.jsx)(j,{year:t,siteName:r}):(0,n.jsx)(w,{year:t,siteName:r});return(0,n.jsx)("div",{className:"mt-lg","data-testid":"rankings-methodology",children:(0,n.jsx)(i.Accordion,{type:"single",collapsible:!0,variant:"primary",items:[{title:"How We Rank Schools",value:`methodology-${e}`,content:a}]})})},N=({siteName:e="This site"})=>{let t=`${e} is an advertising-supported site. Featured or trusted partner programs and all school search, finder, or match results are for schools that compensate us. This compensation does not influence our school rankings, resource guides, or other editorially-independent information published on this site.`;return(0,n.jsxs)("p",{className:"text-b5 leading-b5 text-subtext","data-testid":"rankings-disclosure",children:["We use trusted sources like"," ",(0,n.jsx)(i.Link,{href:"https://www.petersons.com/",target:"_blank",rel:"noopener noreferrer",variant:"default",underline:"always",className:"text-b5",children:"Peterson's Data"})," ","and the National Center for Education Statistics to inform the data for these schools."," ",(0,n.jsx)(i.Tooltip,{content:t,children:(0,n.jsx)(i.Button,{type:"button",variant:"textOnlyNeutral",size:"flush",children:"Sponsored results"})})," ","from our partners appear among these rankings and are indicated as such."]})};r(60685);let E=new Set(["enhanced","regular","alternate"]),k=["43a39c71-4319-59b9-bd56-01caf4d0f622"],A=[3,9],F={__skeleton:!0,name:"",logoSrc:"",logoAlt:""},T=({extid:e,gid:t,showstudenttestimonials:r,limit:l,degree:o,category:s,subject:u,sponsoredpositions:c,methodology:m,year:h,sitename:v,disclosureSiteName:y})=>{let[j,w]=(0,a.useState)(null),[T,O]=(0,a.useState)(!0),[$,C]=(0,a.useState)([]),[I,L]=(0,a.useState)(!0),[R,q]=(0,a.useState)({}),[P,U]=(0,a.useState)({}),[_,D]=(0,a.useState)({}),H=e||t||"",M="true"===r,z="undergrad",V=(0,g.V)(c),B=V.length>0?V:A,G=B.length>0;(0,a.useEffect)(()=>
1{if(!H)return void O(!1);let e=!1;return O(!0),d(H).then(t=>{e||(w(t),O(!1))}),()=>{e=!0}},[H]);let W=l?parseInt(l,10):NaN,Q=Number.isFinite(W)&&W>0?(j?.schools??[]).slice(0,W):j?.schools??[],J=Q.map(e=>e.sdbSchoolId).filter(e=>!!e),X=J.join(","),Y=J.length>0;if((0,a.useEffect)(()=>{if(!G&&!Y){C([]),q({}),L(!0);return}let e=!1,t=new AbortController;L(!1),q({});let r=window.location.href,n=new Set([...J,...k]),a=Math.max(50,B.length);return(0,x.R)({degree:o,category:s,subject:u,presentationUrl:r,limit:a},t.signal).then(t=>{if(e)return;let r={};for(let e of t){let t=e.organization?.meta?.sdbSchoolId,n=e.destination?.url;t&&n&&!r[t]&&(r[t]={url:n,helid:"undefined"!=typeof crypto&&"randomUUID"in crypto?crypto.randomUUID():`helid-${Date.now()}-${Math.random().toString(16).slice(2)}`})}q(r),G?C(t.filter(e=>{let t=e.organization?.meta?.sdbSchoolId;return!t||!n.has(t)}).slice(0,B.length).map(b.v)):C([]),L(!0)}),()=>{e=!0,t.abort()}},[o,s,u,G,Y,B.length,X]),T)return(0,n.jsx)("div",{className:"flex flex-col gap-lg my-lg","aria-busy":"true","aria-label":"Loading rankings",children:Array.from({length:3}).map((e,t)=>(0,n.jsx)("div",{className:"h-48 rounded-lg bg-neutral-100 animate-pulse"},t))});if(!j||0===j.schools.length)return null;let K=Q.map(e=>{if(e.url&&e.helid)return e;let t=e.sdbSchoolId?R[e.sdbSchoolId]:void 0;return t?{...e,url:t.url,helid:t.helid}:e}),Z=e=>P[e]??{expanded:!1,modalOpen:!1,compared:!1},ee=(e,t)=>{U(r=>({...r,[e]:{...Z(e),...t}}))},et=e=>_[e]??{expanded:!1,modalOpen:!1},er=(e,t)=>{D(r=>({...r,[e]:{...et(e),...t}}))},en=G&&!I?B.map(()=>F):$,ea=(0,g.C)(K,en,B);return(0,n.jsxs)("div",{className:"flex flex-col gap-md md:gap-lg",children:[(0,n.jsx)(N,{siteName:y||v}),ea.map(e=>{var t;let r,a,l;if("sponsored"===e.kind){if(!0===e.data.__skeleton)return(0,n.jsx)("div",{className:"h-48 rounded-lg bg-neutral-100 animate-pulse","aria-busy":"true","aria-label":"Loading sponsored card"},`sponsored-skel-${e.position}`);let t=`sponsored-${e.position}-${e.data.name}`,r=et(t);return(0,n.jsx)(i.SponsoredCard,{...e.data,expanded:r.expanded,onExpandedChange:e=>er(t,{expanded:e}),modalOpen:r.modalOpen,onModalOpenChange:e=>er(t,{modalOpen:e})},t)}let o=e.data,s=`${o.rank}-${o.name}`,d=Z(s),u=(r=[],o.city&&o.stateCode&&r.push(`${o.city}, ${o.stateCode}`),(a=function(e){if(!e)return"";switch(e.trim()){case"Four or more years":return"4 year";case"At least 2 but less than 4 years":return"2 year";case"Less Than 2 Years":return"<2 year";default:return""}}(o.schoolLevel))&&r.push(a),(l=null==(t=o.percentOnlinePrograms)?"":t<=0?"Campus":t>=100?"Online":"Campus + Online")&&r.push(l),r);o.accreditation&&u.push("Accredited");let c=!!(o.url&&o.helid);return(0,n.jsx)(i.RankingCard,{variant:j.type,rank:o.rank,name:o.name,superlative:o.superlativeTitle,badges:u,exploreHref:c?o.url:void 0,exploreLabel:"Explore Program",stats:function(e,t,r){let{stats:n}=f(e,t),a=r?null==e.overallScore||null==e.academicQuality||null==e.recommend||null==e.wouldAttendAgain?null:[{label:"Overall Score",value:p(e.overallScore),tooltip:"Studentsâ general impression of their college experience as a whole."},{label:"Academic Quality",value:p(e.academicQuality),tooltip:"How students rate the strength of academics."},{label:"Recommend",value:p(e.recommend),tooltip:"How likely students are to recommend the school to others."},{label:"Would Attend Again",value:p(e.wouldAttendAgain),tooltip:"How likely students would be to choose the same school again."}]:null;return(a?[...a,...n]:n).map(e=>({label:e.label,value:String(e.value),tooltip:e.tooltip}))}(o,z,M),details:function(e,t){let{details:r}=f(e,t);return r.map(e=>({label:e.label,value:String(e.value),tooltip:e.tooltip}))}(o,z),expanded:d.expanded,onExpandedChange:e=>ee(s,{expanded:e}),modalOpen:d.modalOpen,onModalOpenChange:e=>ee(s,{modalOpen:e}),compared:d.compared,onComparedChange:e=>ee(s,{compared:e}),children:o.blurb&&(0,n.jsx)("div",{className:"blurb-check-list [&>p]:mb-xs [&>p]:text-b5 [&>p]:leading-b5 [&>p]:text-subtext [&>p:first-child]:mt-0 [&>p>a]:text-primary-700 [&>p>a]:underline [&>strong]:font-bold [&>ul]:mt-xxs [&>ul]:mb-sm [&>ol]:ml-sm [&>ol]:mt-xxs [&>ol]:list-decimal [&>li]:mb-1 [&>li]:text-b5 [&>li]:text-subtext [&>h2]:font-bold [&>h2]:text-h5 [&>h2]:leading-h5 [&>h2]:mb-xxs [&>h2]:mt-xs [&>h3]:font-bold [&>h3]:text-h5 [&>h3]:leading-h5 [&>h3]:mb-xxs [&>h3]:mt-xs [&>h4]:font-bold [&>h4]:text-h5 [&>h4]:leading-h5 [&>h4]:mb-xxs",dangerouslySetInnerHTML:{__html:o.blurb}})},s)}),"string"==typeof m&&E.has(m)&&(0,n.jsx)(S,{variant:m,year:h,siteName:v})]})}},14846:(e,t,r)=>{"use strict";r.r(t),r.d(t,{EmailBannerClient:()=>l});var n=r(95155),a=r(12115),i=r(30837);function l(){let[e,t]=(0,a.useState)("idle"),[r,l]=(0,a.useState)(""),o=async e=>{t("loading"),l("");try{let r=await fetch("/api/hen/lists/subscribe",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:e})});if(!r.ok){let e=await r.json();throw Error(e.message||"Failed to subscribe")}t("success")}catch(r){let e;t("error"),l(r instanceof Error?r.message:"Something went wrong. Please try again."),e=window.newrelic,r instanceof Error?e?.noticeError?.(r,{component:"EmailBanner",action:"subscription"}):e?.noticeError?.(Error("Email subscription failed"),{component:"EmailBanner",action:"subscription"})}};return(0,n.jsx)(i.EmailBanner,{status:e,errorMessage:r,onSubmit:o})}},26762:(e,t,r)=>{"use strict";r.r(t),r.d(t,{SortableTableClient:()=>s});var n=r(95155),a=r(12115),i=r(30837);function l(e){let t=e.replace(/[$,%\s]/g,"");if(""===t)return null;let r=Number(t);return Number.isFinite(r)?r:null}let o=(e,t,r)=>(l(String(e.getValue(r)))??0)-(l(String(t.getValue(r)))??0);function s({title:e,headers:t,rows:r,pageSize:s=10,showSearch:d=!1}){let u=(0,a.useMemo)(()=>r.map(e=>t.reduce((t,r,n)=>(t[r]=e[n]??{text:"",content:""},t),{})),[t,r]),c=(0,a.useMemo)(()=>t.map(e=>{let t=function(e,t){let r=!1;for(let n of e){let e=n[t]?.text??"";if(""!==e.trim()&&(r=!0,null===l(e)))return!1}return r}(u,e);return{id:e,accessorFn:t=>t[e]?.text??"",header:e,enableSorting:!0,...t&&{sortingFn:o},cell:({row:t})=>t.original[e]?.content??""}}),[t,u]);return 0===c.length?null:(0,n.jsxs)(i.Flex,{direction:"column",gap:"md",children:[e&&(0,n.jsx)(i.SectionHeader,{size:"h3",title:e}),(0,n.jsx)(i.DataTable,{columns:c,data:u,mode:"paginated",pageSize:s,searchColumns:d?t:void 0,...e?{"aria-label":e}:{}})]})}},60685:()=>{},71059:(e,t,r)=>{"use strict";function n(e){var t;let r,n,a=e.organization;return{sponsorLabel:"Sponsored Partner",name:a.name,logoSrc:e.imageUrl??"",logoAlt:`${a.name} logo`,visitHref:e.destination?.url,visitLabel:"Explore Program",sponsoredVisit:!0,metaItems:(r=[],n=(t=e).meta,n?.degree?.name&&r.push(n.degree.name),n?.subject?.name&&r.push(n.subject.name),t.flexibility&&r.push(t.flexibility),r.length>0?r:void 0),aboutHeading:`About ${a.name}
1`,children:e.snippet||e.shortDescription||void 0}}r.d(t,{v:()=>n})},75295:(e,t,r)=>{"use strict";async function n(e,t,r={}){let i=r.urlOverride??"/api/offerings/ranking/";try{let r=await fetch(i,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e),signal:t});if(!r.ok){let e=Error(`fetchSponsoredOfferings non-2xx (${r.status})`);return console.error(e.message),a(e,{url:i,status:r.status}),[]}return(await r.json()).data??[]}catch(e){if(e?.name==="AbortError")return[];return console.error("fetchSponsoredOfferings failed",e),a(e,{url:i}),[]}}function a(e,t){let r=window.newrelic;r?.noticeError?.(e instanceof Error?e:Error(String(e)),t)}r.d(t,{R:()=>n})},84142:(e,t,r)=>{"use strict";r.d(t,{SponsoredCardAdapter:()=>l});var n=r(95155),a=r(12115),i=r(30837);r(60685);let l=({"logo-src":e,"logo-alt":t="","sponsor-label":r,"visit-href":l,"visit-label":o,"sponsored-visit":s,name:d,"name-href":u,"about-heading":c,"meta-items":m,children:h})=>{let[p,f]=(0,a.useState)(!1),[g,x]=(0,a.useState)(!1),b=d?.trim()??"",v=e?.trim()??"";if(!b||!v)return null;let y=function(e){if(!e?.trim())return;let t=e.split("|").map(e=>e.trim()).filter(Boolean);return t.length>0?t:void 0}(m),j=null!=h?(0,n.jsx)("div",{className:"blurb-check-list",children:h}):null;return(0,n.jsx)(i.SponsoredCard,{sponsorLabel:r,visitHref:l,visitLabel:o,sponsoredVisit:"false"!==s,logoSrc:v,logoAlt:t||`${b} logo`,name:b,nameHref:u,aboutHeading:c,metaItems:y,expanded:p,onExpandedChange:f,modalOpen:g,onModalOpenChange:x,children:j})}},97320:(e,t,r)=>{"use strict";r.r(t),r.d(t,{EmbedClient:()=>N});var n=r(95155);let a=new Set(["youtube","everviz","twitter","instagram","tiktok","generic"]),i=/(?:youtube(?:-nocookie)?\.com\/(?:embed\/|watch\?v=)|youtu\.be\/)([\w-]{6,})/i,l=new Set(["cc_lang_pref","cc_load_policy","color","controls","disablekb","end","fs","hl","iv_load_policy","list","listType","loop","modestbranding","playlist","playsinline","rel","start"]),o=/app\.everviz\.com\/(?:embed|inject)\/([\w-]+)/i,s=/tiktok\.com\/(?:embed\/(?:v\d+\/)?|@[^/]+\/video\/)(\d+)/i,d=/status(?:es)?\/(\d+)/i;function u(e){return!!e&&/^(https?:)?\/\//i.test(e.trim())}let c="https://www.tiktok.com/embed.js";function m(e){if(!e||"object"!=typeof e||"everviz-dimensions"!==e.type)return null;let t=Number(e.height);return Number.isFinite(t)&&t>0?t:null}function h({children:e,ratio:t}){return(0,n.jsx)("div",{className:"my-lg w-full overflow-hidden",style:{aspectRatio:function(e,t="16 / 9"){if(!e)return t;let r=e.split(/[:/]/).map(e=>e.trim());if(2===r.length){let[e,t]=r.map(Number);if(Number.isFinite(e)&&Number.isFinite(t)&&e>0&&t>0)return`${e} / ${t}`}return t}(t)},children:e})}function p({src:e,url:t,id:r,title:a,ratio:o}){let s=function(e){if(!e)return null;let t=e.trim(),r=t.match(i),n=r?r[1]:/^[\w-]{6,}$/.test(t)?t:null;if(!n)return null;let a=function(e){let t;if(!e.includes("?"))return"";try{t=new URL(e.replace(/&/gi,"&"),"https://x.invalid").searchParams}catch{return""}let r=new URLSearchParams;return t.forEach((e,t)=>{l.has(t)&&/^[A-Za-z0-9_,-]+$/.test(e)&&r.append(t,e)}),r.toString()}(t),o=a?`?${a}`:"";return`https://www.youtube-nocookie.com/embed/${n}${o}`}(e??t??r);return s?(0,n.jsx)(h,{ratio:o,children:(0,n.jsx)("iframe",{className:"h-full w-full border-0",src:s,title:a??"YouTube video player",loading:"lazy",referrerPolicy:"strict-origin-when-cross-origin",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowFullScreen:!0})}):null}var f=r(12115);function g({src:e,url:t,id:r,title:a,ratio:i}){let l=(0,f.useRef)(null),s=function({iframeRef:e,origin:t,getHeight:r}){let[n,a]=(0,f.useState)(null);return(0,f.useEffect)(()=>
1{function n(n){if(n.origin!==t)return;let i=e.current;if(!i||n.source!==i.contentWindow)return;let l=r(n.data);null!=l&&Number.isFinite(l)&&l>0&&a(Math.ceil(l))}return window.addEventListener("message",n),()=>window.removeEventListener("message",n)},[e,t,r]),n}({iframeRef:l,origin:"https://app.everviz.com",getHeight:m}),d=function(e){if(!e)return null;let t=e.trim(),r=t.match(o);return r?r[1]:/^[\w-]+$/.test(t)?t:null}(r??e??t);if(!d)return null;let u=(0,n.jsx)("iframe",{ref:l,className:"h-full w-full border-0",src:`https://app.everviz.com/embed/${d}`,title:a??"Everviz data visualization",loading:"lazy",scrolling:"no"});return null!=s?(0,n.jsx)("div",{className:"my-lg w-full",style:{height:s},children:u}):(0,n.jsx)(h,{ratio:i,children:u})}var x=r(24364);function b({src:e,url:t,id:r}){let a=function(e){if(!e)return null;let t=e.trim(),r=t.match(d);return r?r[1]:/^\d+$/.test(t)?t:null}(r??e??t);return a?(0,n.jsx)("div",{className:"my-lg flex justify-center [&_.react-tweet-theme]:my-0",children:(0,n.jsx)(x.Y,{id:a})}):null}let v=new Map;function y({url:e,src:t,title:r}){let a=e??t,i=function(e){let[t,r]=(0,f.useState)(()=>e?v.get(e)??"idle":"idle");return(0,f.useEffect)(()=>{if(!e)return;let t=document.querySelector(`script[data-embed-src="${e}"]`),n=t?.dataset.embedStatus;if(t&&n?v.set(e,n):"ready"!==v.get(e)||t||v.delete(e),"ready"===v.get(e)&&t)return void r("ready");let a=()=>{v.set(e,"ready"),t&&(t.dataset.embedStatus="ready"),r("ready")},i=()=>{v.set(e,"error"),t&&(t.dataset.embedStatus="error"),r("error")};return t?(r(v.get(e)??"loading"),t.addEventListener("load",a),t.addEventListener("error",i)):((t=document.createElement("script")).src=e,t.async=!0,t.dataset.embedSrc=e,t.dataset.embedStatus="loading",v.set(e,"loading"),r("loading"),t.addEventListener("load",a),t.addEventListener("error",i),document.body.appendChild(t)),()=>{t?.removeEventListener("load",a),t?.removeEventListener("error",i)}},[e]),t}(u(a)?"https://www.instagram.com/embed.js":void 0);return((0,f.useEffect)(()=>{"ready"===i&&window.instgrm?.Embeds?.process()},[i,a]),u(a))?(0,n.jsx)("div",{className:"my-lg flex justify-center","aria-label":r||void 0,children:(0,n.jsx)("blockquote",{className:"instagram-media","data-instgrm-permalink":a,"data-instgrm-version":"14"})}):null}let j=!1;function w({url:e,src:t,id:r,title:a}){let i=function(e){if(!e)return null;let t=e.trim();return/^\d+$/.test(t)?t:t.match(s)?.[1]??null}(r??e??t),l=e??t;return((0,f.useEffect)(()=>{i&&function(){if("undefined"==typeof document||j||!Array.from(document.querySelectorAll("blockquote.tiktok-embed")).some(e=>!e.querySelector("iframe")))return;j=!0,document.querySelectorAll(`script[src="${c}"]`).forEach(e=>e.remove());let e=document.createElement("script");e.src=c,e.async=!0;let t=()=>{j=!1};e.addEventListener("load",t),e.addEventListener("error",t),document.body.appendChild(e)}()},[i]),i)?(0,n.jsx)("div",{className:"my-lg flex justify-center","aria-label":a||void 0,children:(0,n.jsx)("blockquote",{className:"tiktok-embed",cite:u(l)?l:void 0,"data-video-id":i,style:{maxWidth:605,minWidth:325},children:(0,n.jsx)("section",{})})}):null}function S({src:e,url:t,title:r,ratio:a}){let i=e??t;return u(i)?(0,n.jsx)(h,{ratio:a,children:(0,n.jsx)("iframe",{className:"h-full w-full border-0",src:i,title:r??"Embedded content",loading:"lazy",referrerPolicy:"strict-origin-when-cross-origin",sandbox:"allow-scripts allow-popups allow-presentation",allowFullScreen:!0})}):null}function N({provider:e,src:t,url:r,id:i,title:l,"aspect-ratio":o}){let s;switch("x"===(s=(e??"").trim().toLowerCase())?"twitter":a.has(s)?s:"generic"){case"youtube":return(0,n.jsx)(p,{src:t,url:r,id:i,title:l,ratio:o});case"everviz":return(0,n.jsx)(g,{src:t,url:r,id:i,title:l,ratio:o});case"twitter":return(0,n.jsx)(b,{src:t,url:r,id:i});case"instagram":return(0,n.jsx)(y,{url:r,src:t,title:l});case"tiktok":return(0,n.jsx)(w,{url:r,src:t,id:i,title:l});default:return(0,n.jsx)(S,{src:t,url:r,title:l,ratio:o})}}}}]); 2//# sourceMappingURL=92490-1227cc0be3b36bc3.js.map
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.