"use strict";(self.__LOADABLE_LOADED_CHUNKS__=self.__LOADABLE_LOADED_CHUNKS__||[]).push([[638],{35129:(_,I,a)=>{a.d(I,{A:()=>o});var t=a(48322),T=a(14864);const D=()=>t.createElement(T.m,{script:[{type:"text/javascript",innerHTML:O}]}),O=` document.addEventListener("DOMContentLoaded", (event) => { window.GeckoEngagementWidget={widgetId:"98108c8d-4ebe-43eb-b590-ecf0ff9eb4e5"}; }); (function (d) { "use strict"; var geckoScript = d.createElement("script"); geckoScript.id = "gecko-chat-script"; geckoScript.src = "https://widget.geckoengage.com/embed"; var scriptTags = d.getElementsByTagName("script")[0]; if (d.getElementById("gecko-chat-script")) { return; } scriptTags.parentNode.insertBefore(geckoScript, scriptTags); })(document) `,o=D},45084:(_,I,a)=>{a.r(I),a.d(I,{default:()=>St});var t=a(48322),T=a(11514),D=a(6842),O=a(48786),o=a(34500),s=a(58641),U=a(14864);const ee=({pubukprn:e,unistatsYear:n,ucasCode:l,kisMode:r="FullTime",language:c="en-GB",displayMode:h="responsive"})=>{const f=l.split("/"),g=f.length;return t.createElement(t.Fragment,null,t.createElement(U.m,{script:[{type:"text/javascript",innerHTML:oe}]}),f.map(E=>E?(g>2&&(h="horizontal"),t.createElement(le,{key:E,className:"kis-widget","data-institution":e,"data-course":n+"_"+E,"data-kismode":r,"data-orientation":h,$displayMode:h,"data-language":c})):null))},te=(0,o.css)` width: 615px; height: 150px; `,ne=(0,o.css)` width: 190px; height: 500px; `,ae=(0,o.css)` min-width: 190px; `,le=o.default.div` ${e=>e.$displayMode==="horizontal"&&te}; ${e=>e.$displayMode==="vertical"&&ne} ${e=>e.$displayMode==="responsive"&&ae} `,oe=` (function (d) { "use strict"; var widgetScript = d.createElement("script"); widgetScript.id = "unistats-widget-script"; widgetScript.src = "https://discoveruni.gov.uk/widget/embed-script"; var scriptTags = d.getElementsByTagName("script")[0]; if (d.getElementById("unistats-widget-script")) { return; } scriptTags.parentNode.insertBefore(widgetScript, scriptTags); })(document)`,re=ee;var P=a(38559);const ce=({title:e,description:n,unistats:l})=>l?t.createElement(ie,null,t.createElement(P.I,null,t.createElement(se,null,t.createElement(de,null,t.createElement(s.Ay,{$size:"2",as:"h2",$color:"white"},e),t.createElement(s.Ay,{$size:"4 italic",as:"p",$color:"white"},n)),t.createElement(me,null,t.createElement(re,{...l}))))):null,ie=o.default.div` background-color: ${e=>e.theme.colors.stone.primary}; `,se=(0,o.default)(P.V)` display: flex; flex-direction: column; gap: ${e=>e.theme.spacing.l}; padding-top: ${e=>e.theme.spacing.l}; padding-bottom: ${e=>e.theme.spacing.l}; @media ${e=>e.theme.mq.min.tablet} { display: grid; grid-auto-flow: column; grid-auto-columns: 1fr; gap: ${e=>e.theme.spacing.xs}; padding-top: ${e=>e.theme.spacing.xxl}; padding-bottom: ${e=>e.theme.spacing.xxl}; } `,me=o.default.div` display: flex; flex-direction: column; gap: ${e=>e.theme.spacing.s}; `,de=o.default.div` display: flex; flex-direction: column; gap: ${e=>e.theme.spacing.s}; `,ue=ce;var H=a(43266),ge=a(39289),pe=a(60608),he=a(73218),b=a(68046),fe=a(81321),G=a(87977),F=a(92779),z=a(83652);const Ee=({intro:e,semesters:n})=>t.createElement(ye,null,e?t.createElement(b.VK,{text:e}):null,n?.map(l=>{if(l)return t.createElement("div",{key:l.id},t.createElement(s.Ay,{as:"h4",$size:"4 serif"},l.title),t.createElement(z.MarkupStyled,null,t.createElement("ul",null,l.courses?.map(r=>t.createElement("li",{key:r},r)))))})),ye=o.default.div` display: flex; flex-direction: column; gap: ${e=>e.theme.spacing.m}; `,$e=Ee;var ve=a(89381),Ae=a(6893);const xe=({structures:e})=>t.createElement(Ce,null,e.map(n=>n.years?t.createElement(Se,{key:n.id},e.length>1?t.createElement(s.Ay,{as:"h3",$size:"3"},n.title):t.createElement(s.Ay,{as:"h3",className:"visually-hidden"},n.title),t.createElement(Ae.A,null,n.years?.map((l,r)=>t.createElement(ve.A,{open:r===0,title:l.title,key:l.id},t.createElement($e,{...l}))))):null)),Ce=o.default.div` display: flex; flex-direction: column; gap: ${e=>e.theme.spacing.l}; `,Se=o.default.div` display: flex; flex-direction: column; gap: ${e=>e.theme.spacing.m}; `,Ie=xe;var Pe=a(37479),be=a(84990),A=a(79353);const ze=({value:e,variant:n="percent",label:l,theme:r="light"})=>{if(e===0)return null;const c=r==="dark"?"stoneShade":"bluePrimary";return t.createElement(Te,{$theme:r},t.createElement("div",null,n==="gbp"&&t.createElement(s.Ay,{as:"span",$size:"2",$color:c},"\xA3"),t.createElement(s.Ay,{as:"span",$size:"1",$color:c},e),(n==="aed"||n==="myr")&&t.createElement(s.Ay,{as:"span",$size:"2",$color:c},n.toUpperCase()),n==="percent"&&t.createElement(s.Ay,{as:"span",$size:"2",$color:c},"%")),t.createElement(A.Ay,null,l))},Te=o.default.div` --bordercolor: ${e=>e.theme.colors.bluebright.shade}; ${e=>e.$theme==="dark"&&`--bordercolor:${e.theme.colors.stone.primary}`}; display: flex; flex-direction: column; align-items: flex-start; padding-left: ${e=>e.theme.spacing.s}; border-left: ${e=>e.theme.spacing.xxxs} solid var(--bordercolor); max-width: 28rem; `,De=ze;var Oe=a(57643),w=a(76921),R=a(92589),we=a(3767);const Le=({careerPaths:e,employabilityStats:n})=>t.createElement(Me,null,n?.percentages?.stats.length?t.createElement(L,{...n.percentages}):null,n?.salary?.stats.length?t.createElement(L,{...n.salary}):null,n?.pgtOnline?.stats?.length?t.createElement(L,{...n.pgtOnline}):null,n?.employerLogos?.length?t.createElement(t.Fragment,null,t.createElement(s.Ay,{as:"h3",$size:"4 serif",$color:"stoneShade"},R.Vt.pgtOnline.employersHeading),n?.employerIntro?t.createElement(A.Ay,{$color:"white"},n.employerIntro):null,t.createElement(we.A,{links:n.employerLogos,$noContainer:!0,$themeOverride:"darkBrown"})):null,e?.paths.length?t.createElement(ke,null,t.createElement(s.Ay,{as:"h3",$size:"4 serif",$color:"stoneShade"},e.heading),t.createElement(z.MarkupStyled,null,t.createElement(Be,null,e.paths.map((l,r)=>t.createElement("li",{key:l+r},l)))),e.cta?.link?t.createElement(je,{path:e.cta.link,$variant:"whiteOutline"},e.cta.label):null):null,n?.testimonial?t.createElement(w.A,{...n.testimonial,variant:"feature"}):null),Me=o.default.div` display: flex; flex-direction: column; gap: ${e=>e.theme.spacing.l}; `,ke=o.default.div` display: flex; flex-direction: column; gap: ${e=>e.theme.spacing.s}; `,Be=o.default.ul` margin-top: 0; `,je=(0,o.default)(Oe.Ay)` width: fit-content; `,L=({heading:e,intro:n,stats:l})=>l?t.createElement(Ue,null,e&&t.createElement(s.Ay,{as:"h3",$size:"4 serif",$color:"stoneShade"},e),n&&t.createElement(b.VK,{text:n}),l?t.createElement(He,null,l.map((r,c)=>t.createElement(De,{...r,theme:"dark",key:r.label+c}))):null):null,Ue=o.default.div` display: flex; flex-direction: column; gap: ${e=>e.theme.spacing.s}; `,He=o.default.div` display: flex; flex-wrap: wrap; gap: ${e=>e.theme.spacing.l}; `,Ge=Le;var x=a(59792),Fe=a(67820),m=a(96175);const Re=({title:e,copy:n,programmes:l,backgroundImage:r})=>t.createElement(Ve,{$hasBgImage:!!r},r&&t.createElement(Ke,null,t.createElement(Ne,{src:r,srcSet:r+"&w=640 640w, "+r+"&w=1280 1280w, "+r+"&w=1597 1597w",alt:"",loading:"lazy","aria-hidden":!0})),t.createElement(P.V,null,t.createElement(We,null,t.createElement(Ye,null,t.createElement(s.Ay,{as:"h2",$size:"2",$color:"bluebrightShade"},e),n?t.createElement(A.Ay,{$color:"white"},t.createElement(z.default,{theme:"blue",text:n})):null),l?.length?t.createElement(Qe,null,l?.map(c=>c?.title?t.createElement(Xe,{key:c.title},t.createElement(s.Ay,{as:"h3",$size:"4 serif",$color:"white"},t.createElement(Ze,{link:c.link,title:c.title})),c.copy?t.createElement(A.Ay,{$color:"white"},t.createElement(z.default,{text:c.copy})):null):null)):null))),Ke=o.default.div` position: absolute; height: 100%; width: 100%; overflow: hidden; z-index: -1; `,Ne=o.default.img` position: absolute; height: 100%; width: 100%; inset: 0; object-fit: cover; color: transparent; `,Ve=o.default.div` position: relative; background: ${e=>e.theme.colors.blue.primary}; background: ${e=>e.$hasBgImage&&e.theme.colors.blue.primary+"db"}; `,We=(0,o.default)(P.I)` display: flex; flex-direction: column; gap: ${e=>e.theme.spacing.s}; padding-top: ${e=>e.theme.spacing.l}; padding-bottom: ${e=>e.theme.spacing.l}; @media ${e=>e.theme.mq.min.tablet} { padding-top: ${e=>e.theme.spacing.xxl}; padding-bottom: ${e=>e.theme.spacing.xxl}; } `,Ye=o.default.div` display: flex; flex-direction: column; gap: ${e=>e.theme.spacing.s}; ${m.x4}; `,Qe=o.default.div` @media ${e=>e.theme.mq.min.tablet} { display: grid; grid-auto-columns: 1fr; grid-auto-flow: column; } `,Xe=o.default.div` --spacing: ${e=>e.theme.spacing.s}; --border-color: #ffffff40; display: flex; flex-direction: column; gap: ${e=>e.theme.spacing.s}; &:only-child { max-width: 60rem; } &:not(:first-child) { padding-top: var(--spacing); } &:not(:last-child) { padding-bottom: var(--spacing); box-shadow: 0 0.0625rem 0 0 var(--border-color); } @media ${e=>e.theme.mq.min.tablet} { &:not(:first-child) { padding-left: var(--spacing); padding-top: 0; } &:not(:last-child) { padding-right: var(--spacing); padding-bottom: 0; box-shadow: 0.0625rem 0 0 0 var(--border-color); } } `,Ze=({title:e,link:n})=>n?t.createElement(Fe.A,{path:n},e):t.createElement(t.Fragment,null,e),Je=Re;var qe=a(86973),C=a(2739),_e=a(86492);const et=({image:e,title:n,sub:l,testimony:r})=>t.createElement(tt,null,e?t.createElement(rt,null,t.createElement(ct,{src:e.src,alt:e.alt,loading:"lazy"})):t.createElement(it,null,t.createElement(_e.DA,null)),t.createElement(nt,null,t.createElement(at,null,t.createElement(s.Ay,{as:"p",$size:"4 serif",$color:"stoneDark"},n),l&&t.createElement(lt,{as:"p"},l)),t.createElement(ot,{as:"blockquote"},r))),tt=o.default.div` display: flex; padding: 0; flex-direction: column; align-items: flex-start; gap: 0; height: 100%; `,nt=o.default.div` display: flex; padding: ${e=>e.theme.spacing.s}; flex-direction: column; align-items: flex-start; gap: ${e=>e.theme.spacing.s}; align-self: stretch; height: 100%; background-color: ${e=>e.theme.colors.neutral.white}; `,at=o.default.div` display: flex; padding: 0; flex-direction: column; gap: ${e=>e.theme.spacing.xxs}; align-self: stretch; `,lt=(0,o.default)(A.Ay)` color: ${e=>e.theme.colors.neutral.black}; font-size: 1.25em; `,ot=(0,o.default)(A.Ay)` color: ${e=>e.theme.colors.neutral.black}; &::before { content: open-quote; } &::after { content: close-quote; } `,rt=o.default.div` height: 15rem; width: 100%; `,ct=o.default.img` height: 15rem; object-fit: cover; object-position: center center; width: 100%; `,it=o.default.div` display: flex; height: 15rem; padding: ${e=>e.theme.spacing.xl} 0; justify-content: center; align-items: center; align-self: stretch; color: ${e=>e.theme.colors.blue.shade}; background-color: ${e=>e.theme.colors.blue.mid}; & svg { fill: ${e=>e.theme.colors.blue.shade}; height: 7.5em; } `,st=et;var mt=a(170);const dt=({programmes:e})=>t.createElement(C.zF,null,e.map(n=>t.createElement(x.A,{key:n.id,color:"green",...n,padded:!0})));var ut=a(64398),gt=a(47474);const pt=({award:e,brand:n,clearing:l,code:r,codeShort:c,gscope:h,subject:f,subjectAdditional:g,title:E,thumbnail:v})=>t.createElement("div",{id:"content-summary","data-award":e,"data-brand":n,"data-clearing":l,"data-gcm":c,"data-gcmfull":r,"data-gscope":"campus-"+h,"data-subject":f+"|"+g,"data-title":E,"data-thumbnail":v});var K=a(78917);const ht=({course:e})=>{const n=K.Ok;return t.createElement(U.m,null,t.createElement("script",{type:"application/ld+json"},` { "@context": "https://schema.org", "@type": "Course", "availableLanguage": "${e?.availableLanguage}" ${e?.courseCode?`,"courseCode": "${e?.courseCode}"`:""} ${e?.description?`,"description": "${e?.description}"`:""} ,"educationalCredentialAwarded": { "@type": "EducationalOccupationalCredential", "credentialCategory": "${e?.educationalCredentialAwarded?.credentialCategory}", "name": "${e?.educationalCredentialAwarded?.name}" }, "financialAidEligible": "${e?.financialAidEligible}", "hasCourseInstance": { "courseMode": "${e?.hasCourseInstance?.courseMode}", "courseWorkload": "${e?.hasCourseInstance?.courseWorkload}" ${e?.hasCourseInstance?.instructor?.name?`,"instructor": { "@type": "Person", ${e?.hasCourseInstance?.instructor?.name?`,"name": "${e?.hasCourseInstance?.instructor?.name}"`:""} ${e?.hasCourseInstance?.instructor?.description?`,"description": "${e?.hasCourseInstance?.instructor?.description}"`:""} ${e?.hasCourseInstance?.instructor?.image?.src?`,"image": "${n+e?.hasCourseInstance?.instructor?.image?.src}"`:""} }`:""} ${e?.hasCourseInstance?.location?`,"location": "${e?.hasCourseInstance?.location}"`:""} } ${e?.image?.src?`,"image": [ "${n+e.image.src+"&w=450&h=450&fit=crop"}", /* 1x1 */ "${n+e.image.src+"&w=600&h=450&fit=crop"}", /* 4x3 */ "${n+e.image.src+"&w=800&h=450&fit=crop"}" /* 16x9 */ ]`:""} ,"inLanguage": "${e?.inLanguage}" ${e?.name?`,"name": "${e?.name}"`:""} ,"offers": { "@type": "Offer", "category": "Paid" }, "provider": { "@type": "Organization", "name": "${e?.provider?.name}", "url": "${e?.provider?.url}" }, "publisher": { "@type": "Organization", "name": "${e?.provider?.name}", "url": "${e?.provider?.url}" } }, `))};var ft=a(35129),u=a(38970),Et=a(15556),N=a(16711),yt=a(33483),V=a(73321),$t=a(48983);const vt={id:"",mapper:(e=[])=>e},At=()=>{const[e,n]=(0,t.useState)(vt),l=(0,H.d4)($t.fn),r=V.T+l,h="https://search.hw.ac.uk/s/recommender/similarItems.json?collection=heriot-watt~sp-programmes&maxRecommendations=4&scope="+(V.T+l.substring(0,l.lastIndexOf("/"))+"/");if(!h||!r){console.error("funnelBackUri or pageUri is not defined");return}const f=h+"&seedItem="+r;return(0,t.useEffect)(()=>{fetch(f).then(g=>{if(!g.ok)throw new Error(`HTTP error! status: ${g.status}`);return g.json()}).then(g=>{n({id:"relatedProgrammes",config:{title:R.Zz.heading,customApi:{uri:f}},mapper:(E=[])=>E?.RecommendationResponse?.recommendations?.map(i=>({id:i.itemID,image:{src:i.metaData.thumbnail[0]||i.metaData.image[0],alt:"",width:348,height:240,id:i.itemID},taxonomy:i.metaData.campus[0]||void 0,link:i.itemID,title:i.metaData.t[0]||i.title}))})}).catch(g=>console.error("Error:",g))},[h,r]),(0,yt.zK)(e)},xt=({mappedEntry:e})=>{const{breadcrumb:n,hero:l,anchorMenu:r,keyInformation:c,promotion:h,studentExperience:f,goGlobal:g,courseContent:E,videos:v,studentTestimonials:i,teachingStaff:y,feesFunding:$,entryRequirements:M,whyHw:Dt,employability:S,studentLife:p,discoverUni:W,contact:Y,recommendedProgrammes:Q,relatedProgrammes:k,metaData:X,funnelbackMetadata:Z,courseSchema:J}=e||{},B=(0,H.d4)(ge.zj)||"uk",j=(0,D.iA)(B)||void 0,{results:q}=At(),It=!!(S?.section.lead||S?.content.undergraduate?.percentages?.stats?.length||S?.content.careerPaths?.paths.length),Pt=!!(p?.content.chatToOurStudents||p?.content.lifeIn||p?.content.studentSupport||p?.content.virtualTour);return t.createElement(Ct,{$hasAnchorMenu:!0},t.createElement(gt.A,{pageTitle:l?.heading?l?.heading:"",description:X?.description,ogDescription:X?.description,ogImage:K.Ok+e?.hero.image?.src}),n?t.createElement(mt.A,{...n}):null,l?t.createElement(Pe.A,{image:l.image,badge:l.badge},t.createElement(be.Ay,{heading:l.heading,ctas:l.ctas,share:l.share})):null,t.createElement("article",null,t.createElement(F.A,{...r}),c?.details?.data.length&&c?.overview?t.createElement(m.Ay,{...c.section,...u.wH},c.details&&t.createElement(pe.Ay,{...c.details}),c.overview&&t.createElement(b.VK,{text:c.overview})):null,h?t.createElement(G.A,{...h}):null,f?.tabs.length?t.createElement(m.Ay,{...f.section,...u.HV},t.createElement(he.Ay,{data:f.tabs})):null,g?t.createElement(Je,{...g}):null,E?.content?.structures[0]?.years[0]?.id?t.createElement(m.Ay,{...E.section,...u.wH},t.createElement(Ie,{...E.content})):null,v?.content.length?t.createElement(m.Ay,{...v.section,...u.jg},t.createElement(C.Ay,null,v.content.map(d=>d?.videoID?t.createElement(fe.default,{key:d.videoID,videoID:d.videoID,title:d.title,copy:d.copy,size:"large",...v.content}):null))):null,i?.content.cards?.length||i?.content.quote?.text?t.createElement(m.Ay,{...i.section,...u.jg},i.content.cards?.length?t.createElement(C.Gz,null,i.content.cards?.map(d=>t.createElement(st,{key:d.title,...d}))):null,i.content.quote?.text?t.createElement(w.A,{variant:"feature",...i.content.quote}):null):null,y?.content.leader||y?.content.cards?.length||y?.content.quote?.text?t.createElement(m.Ay,{...y.section,...u.jg},y?.content.leader||y?.content.cards?.length?t.createElement(C.Gz,null,y.content.leader?t.createElement(N.A,{header:"Programme leader",...y.content.leader}):null,y.content.cards?.map(d=>t.createElement(N.A,{key:d.name,...d}))):null,y.content.quote?.text&&t.createElement(w.A,{variant:"feature",...y.content.quote})):null,$?.content?.feesInfo||$?.content?.feeAdditional?t.createElement(m.Ay,{...$.section,...u.wH},$.content.feesInfo?t.createElement(T.A,{...$.content.feesInfo}):null,$.content.feeAdditional?t.createElement(ut.A,{...$.content.feeAdditional}):null,$.content.feePromo?t.createElement(Et.A,{...$.content.feePromo}):null):null,M?.content?t.createElement(m.Ay,{...M.section,...u.wH},t.createElement(qe.A,{...M.content})):null,j?t.createElement(m.Ay,{...j.section,...u.Ac},t.createElement(b.VK,{text:j.content.text,theme:"dark"})):null,It?t.createElement(m.Ay,{...S?.section,...u.jg},t.createElement(Ge,{...S?.content})):null,Pt?t.createElement(m.Ay,{...p?.section,...u.jg},t.createElement(C.zF,null,p?.content.lifeIn?t.createElement(x.A,{...p.content.lifeIn,padded:!0}):null,p?.content.studentSupport?t.createElement(x.A,{...p.content.studentSupport,padded:!0}):null,p?.content.virtualTour?t.createElement(x.A,{...p.content.virtualTour,padded:!0}):null,p?.content.chatToOurStudents?t.createElement(x.A,{...p.content.chatToOurStudents,padded:!0}):null)):null,W&&B==="uk"?t.createElement("section",null,t.createElement(ue,{...W})):null,Y?t.createElement("section",null,t.createElement(G.A,{...Y})):null,k?.content?.length?t.createElement(m.Ay,{...k.section,...u.jg},t.createElement(C.Gz,null,k.content.map(d=>t.createElement(x.A,{key:d.title,color:"green",...d,padded:!0})))):Q&&q?.length?t.createElement(m.Ay,{...Q.section,...u.jg},t.createElement(dt,{programmes:q})):null,Z&&t.createElement(pt,{...Z}),J&&t.createElement(ht,{...J}),B==="uk"&&t.createElement(ft.A,null)))},Ct=(0,o.default)(O.A)` margin-bottom: ${e=>e.$hasAnchorMenu&&F.Q}; // height of anchor menu `,St=xt}}]);