PageSourceSearch

https://www.brunel.ac.uk/_MB34Eg_9d49cebe-fa40-4682-96e7-4326239fc…/modern/js/593.07370fa14bd8ee8af9c6.mjs

js brunel.ac.uk collected 2026-09-24 08:33:14 UTC 18,236 bytes, 318 lines download raw bytes

1"use strict";(self.__LOADABLE_LOADED_CHUNKS__=self.__LOADABLE_LOADED_CHUNKS__||[]).push([[593],{8052:(B,C,a)=>{a.d(C,{A:()=>u});var e=a(48322),g=a(99087);const f=g.default.div`
2  display: flex;
3  align-items: center;
4  justify-content: flex-end;
5  margin: 0 0 5rem 0;
6`;var x=a(82472);const s=g.default.button`
7  ${()=>(0,g.css)`
8      cursor: pointer;
9      background: ${x.A.white};
10      width: 44px;
11      height: 44px;
12      border: 0.1rem solid #f5f5f5;
13      text-align: center;
14      display: inline-flex;
15      align-items: center;
16      justify-content: center;
17      margin-left: 1rem;
18      font-size: 1.4rem;
19      line-height: 3.2rem;
20      display: block;
21      color: ${x.A.black};
22      background-color: ${x.A.greyAlt};
23
24      &:enabled:hover {
25        background: ${x.A.greyLight};
26      }
27
28      &:disabled {
29        opacity: 0.5;
30        cursor: default;
31        /* &:hover{
32          bac
33        } */
34      }
35
36      &.inactive {
37        border-bottom: 1px solid ${x.A.core_digital_cerulean};
38      }
39
40      &.active {
41      }
42
43      .icon {
44        display: flex;
45        align-items: center;
46        justify-content: center;
47        svg {
48          height: 2.4rem;
49          path: {
50            fill: ${x.A.black};
51          }
52        }
53      }
54    `}
55`,y=({className:b,label:E,updatePageIndex:A,index:w,disabled:T})=>{const d=(n,i)=>{if(T||typeof i!="number"||!Number.isFinite(i))return;const t=Math.trunc(Number(i));if(!Number.isNaN(t)){n.preventDefault();try{n.currentTarget?.blur?.()}catch{}try{A(t)}catch(o){console.error("[PaginationItem] updatePageIndex error",o)}}};return e.createElement(s,{disabled:T,type:"button",className:b,onClick:n=>d(n,w)},E==="Back"||E==="Next"?e.createElement("div",{className:"icon"},E==="Back"?"<":">"):E&&E.toString())},u=({className:b,paging:E,updatePageIndex:A,scrollTarget:w})=>{const T=(r,N)=>{try{i(Math.trunc(Number(r)))}catch{}try{let k=0;typeof window<"u"&&(k=document.documentElement&&document.documentElement.scrollTop||document.body&&document.body.scrollTop||window.pageYOffset||0);const P=A(r,N);if(typeof window<"u"){try{window.scrollTo(0,k)}catch{}const l=N!==void 0?N:w;if(l){const _=(()=>typeof l=="string"?l.startsWith(".")||l.startsWith("#")?l:`.${l}`:String(l))(),D=(()=>{try{const M=document.querySelector(_);if(!M)return 0;const F=M.getBoundingClientRect(),j=window.pageYOffset||document.documentElement&&document.documentElement.scrollTop||document.body&&document.body.scrollTop||0;return Math.max(0,Math.floor(F.top+j))}catch{return 0}})(),U=8;let L=0;const z=setInterval(()=>{try{window.scrollTo({top:D,behavior:"smooth"})}catch{try{window.scrollTo(0,D)}catch{}}L+=1;const M=document.documentElement&&document.documentElement.scrollTop||document.body&&document.body.scrollTop||0;if((Math.abs(M-D)<=2||L>=U)&&(clearInterval(z),Math.abs(M-D)>2))try{window.scrollTo(0,D)}catch{}},120);try{window.scrollTo({top:D,behavior:"smooth"})}catch{try{window.scrollTo(0,D)}catch{}}}else{let O=0;const U=setInterval(()=>{try{window.scrollTo({top:0,behavior:"smooth"})}catch{try{window.scrollTo(0,0)}catch{}}O+=1;const L=document.documentElement&&document.documentElement.scrollTop||document.body&&document.body.scrollTop||0;if((L===0||O>=8)&&(clearInterval(U),L!==0))try{window.scrollTo(0,0)}catch{}},120);try{window.scrollTo({top:0,behavior:"smooth"})}catch{try{window.scrollTo(0,0)}catch{}}}}return P}catch(k){try{typeof window<"u"&&window.scrollTo({top:0})}catch{}throw k}},[n,i]=e.useState(null);let{pageIndex:t,pageCount:o}={...E};const c=n!==null?n:t;t=Number.isFinite(Number(t))?Number(t):0,o=Math.max(1,Number.isFinite(Number(o))?Number(o):1),e.useEffect(()=>{try{const r=Number.isFinite(Number(t))?Number(t):0;n!==null&&r===n&&i(null)}catch{i(null)}},[t,n]);let m=Math.ceil(c-5/2);m<0&&(m=0);let I=m+5-1;I>o-1&&(I=o-1,m=o-5,m<0&&(m=0));let $=[];for(let r=m;r<=I;r++){let N=r==c;$.push({i:r,updatePageIndex:T,isCurrentPage:N})}return o<=0?null:e.createElement(f,{className:b},e.createElement(y,{className:`control prev ${c>0?"":"disabled"}`,disabled:!(c>0),index:Math.max(0,Math.min(c-1,o-1)),label:"Back",updatePageIndex:T}),$&&$?.length>0?$.map(r=>e.createElement(y,{index:Math.max(0,Math.min(r.i,o-1)),label:r.i+1,disabled:r.isCurrentPage||n!==null&&r.i===n,key:r.i,updatePageIndex:r.updatePageIndex,className:r.isCurrentPage||n!==null&&r.i===n?"inactive":"active"})):null,e.createElement(y,{className:`control next ${c<o-1?"":"disabled"}`,disabled:!(c<o-1),index:Math.max(0,Math.min(c+1,o-1)),label:"Next",updatePageIndex:T}))}},10191:(B,C,a)=>{a.d(C,{A:()=>S});var e=a(48322),g=a(99087);const f=g.default.button`
56  ${({theme:s,styleType:p})=>{let y={defaultStyles:s?.buttonStyles[p]?.default,hoverStyles:s?.buttonStyles[p]?.hover,focusStyles:s?.buttonStyles[p]?.focus};const h=u=>{if(!u)return;const{background_color:b,border_color:E,text_color:A,opacity:w}=u;return(0,g.css)`
57        ${b&&`background-color: ${b};`}
58        ${E&&`border: 2px solid ${E};`}
59        ${A&&`
60          color: ${A};
61          .i {
62            path,
63            circle,
64            rect {
65              stroke: ${A};
66            }
67          }
68        `}
69        ${w&&`opacity: ${w};`}
70      `};return(0,g.css)`
71      display: inline-block;
72      padding: 1.2rem 1.6rem;
73      border: none;
74      width: fit-content;
75      text-decoration: none;
76      text-align: center;
77      color: ${s.colors.white};
78      background-color: ${s.colors.core_digital_cerulean};
79      background: ${s.colors.core_digital_cerulean}
80        url('/_MB34Eg_9d49cebe-fa40-4682-96e7-4326239fc749/static-main/img/button-bg.svg') top right no-repeat;
81      background-size: contain;
82
83      ${h(y.defaultStyles)};
84      transition: all 300ms ease-in-out;
85
86      &:hover {
87        ${h(y.hoverStyles)}
88      }
89
90      &:focus {
91        ${h(y.focusStyles)}
92      }
93
94      &.button--large {
95        padding: 2.4rem 3.2rem;
96      }
97    `}};
98`,S=({className:s,title:p,size:y,children:h,styleType:u="primary",onClick:b,...E})=>e.createElement(f,{styleType:u,onClick:b,...E,className:`button button--${y} ${s}`},p||h)},16117:(B,C,a)=>{a.d(C,{A:()=>y});var e=a(48322),g=a(99087);const f=g.default.div`
99  ${({theme:h,breakpoint:u})=>(0,g.css)`
100      margin-bottom: 3.2rem;
101
102      .filter-toggle {
103        display: flex;
104        justify-content: center;
105        align-items: center;
106        padding: 1.2rem;
107        margin-bottom: 2.4rem;
108        border: 0;
109        width: 100%;
110        min-width: 12rem;
111        font-size: 1.4rem;
112        text-decoration: none;
113        text-align: center;
114        color: ${h.colors.white};
115        background-color: ${h.colors.aquaAlt};
116        cursor: pointer;
117
118        @media screen and (min-width: ${u}px) {
119          display: none;
120        }
121
122        &:hover,
123        &:focus {
124          text-decoration: underline;
125        }
126      }
127
128      .filter-hidden {
129        @media screen and (max-width: ${u}px) {
130          display: none;
131        }
132      }
133
134      .filter-visible {
135        display: block;
136      }
137    `};
138`,x=h=>u=>{u.key==="Enter"&&h(u)};var S=a(10191),s=a(27745);const y=({breakpoint:h=840,children:u,className:b,openTitle:E="Open Filter",closeTitle:A="Close Filter"})=>{const[w,T]=(0,e.useState)(!1),[d,n]=(0,e.useState)(!1),[i,t]=(0,e.useState)(!0),o=()=>{T(!w),n(!d),t(!i)};return e.createElement(f,{className:b,breakpoint:h},e.createElement(S.A,{className:"filter-toggle",onClick:()=>o(),onKeyDown:x(()=>o),"aria-expanded":d,"aria-controls":"filteredContent"},w?A:E,e.createElement(s.I,{icon:w?"chevronUp":"chevronDown"})),e.createElement("div",{id:"filteredContent",className:`filter-toggle__children ${w?"filter-visible":"filter-hidden"}`,"aria-hidden":i},u))}},20548:(B,C,a)=>{a.d(C,{A:()=>T});var e=a(48322),g=a(82472),v=a(99087),f=a(973);const S=v.default.div`
139  ${({type:d})=>(0,v.css)`
140      position: relative;
141      width: 100%;
142      font-size: 1.4rem;
143
144      @media ${f.mq.medium} {
145        width: auto;
146      }
147
148      .dropdown__select {
149        position: relative;
150        margin-top: 1.2rem;
151      }
152
153      .filter-control__label {
154        color: ${g.A.blueAlt};
155        font-weight: 600;
156        white-space: nowrap;
157      }
158
159      select {
160        padding: 1.6rem 4.8rem 1.6rem 1.6rem;
161        border: 1px solid ${g.A.grey};
162        width: 100%;
163        cursor: pointer;
164        background: none;
165        -webkit-appearance: none;
166        -moz-appearance: none;
167        font-size: 1.4rem;
168      }
169
170      select::-ms-expand {
171        display: none;
172      }
173
174      input[type='checkbox'] {
175        float: right;
176        margin: 0.4rem;
177        width: 20px;
178        height: 20px;
179      }
180
181      .dropdown__icon {
182        pointer-events: none;
183        width: 24px;
184        height: 24px;
185        position: absolute;
186        top: 50%;
187        right: 5px;
188        transform-origin: 2.5px center;
189        transform: translateY(-50%) rotate(90deg);
190      }
191
192      ${d==="sort"&&(0,v.css)`
193        .dropdown__icon {
194          height: 18px;
195          width: 18px;
196        }
197      `}
198    `};
199`;var s=a(97594);const y=v.default.div`
200  ${({theme:{colors:d}})=>{const n={color:`${d.blueAlt}`,bgColor:"#fff",borderRadius:"0",optionlabel:`${d.blueAlt}`,optionlabelBg:"white"};return(0,v.css)`
201      position: relative;
202
203      .filter-toggle {
204        background: ${n.bgColor};
205        border: 1px solid black;
206        border-radius: ${n.borderRadius};
207        padding: 1.6rem;
208        color: ${n.color};
209        width: 100%;
210        display: flex;
211        justify-content: space-between;
212        align-items: center;
213        cursor: pointer;
214        /* background: rgba(255, 255, 255, 1)
215          url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAYAAABiDJ37AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAD0SURBVHgBpZLNDcIwDIWdlEoIoYpjaZKSERgBNoANGKFMABvABmUDRugIjEAPIHHj0AsXGmwhoFL/y5NycZ6/Z1m2hBBTx3HcJElu8IeUGi8Gg+GD2zYA5xC5rquho2gopIT9/pcuVvjOXaDUg713rQmakZRyS9ARqiXsrJRaFRoIKqU4NYF+YL4vt5VGNB3whVUeCqTgWthvUhEhdFce6oXo2Rf98aJir2cvGYOZ73ubfJi3MYbpy+UaQBtpTTvycEfjIAujmtblO2Z10OeTRwBmzZg1MSYNLCudx/Et7gR8Q8U0TeFojIE6WGPhOc1yh1uiF0dLQ+HwZpbXAAAAAElFTkSuQmCC')
216          no-repeat right 2.55rem center; */
217
218        svg {
219          margin-left: 8px;
220          width: 12px;
221          height: auto;
222          transition: transform 0.2s ease-in-out;
223        }
224        &.open {
225          svg {
226            transform: scaleY(-1);
227          }
228        }
229        &.has-options {
230          font-weight: 700;
231        }
232      }
233      .drop-filter-set {
234        position: absolute;
235        overflow: hidden;
236        top: calc(100% - 0.2rem);
237        z-index: 98;
238        background: #fff;
239        width: 100%;
240        border-radius: 0;
241        box-shadow: 0 0.4rem 1.5rem rgba(0, 0, 0, 0.2);
242        overflow-y: scroll;
243        max-height: 200px;
244
245        &.closed {
246          display: none;
247        }
248      }
249      .filter-status {
250        display: flex;
251        justify-content: space-between;
252        align-items: center;
253        padding: 0.8rem 1.6rem;
254        margin-bottom: 1.6rem;
255        font-size: 1.4rem;
256        border-bottom: 1px solid ${d.blue};
257      }
258      .clear-set {
259        padding: 0.4rem 1.6rem;
260        border: none;
261        border-radius: 0;
262
263        &:not(:disabled) {
264          cursor: pointer;
265        }
266      }
267      .filter-options {
268        padding: 0 1.6rem;
269        list-style-type: none;
270        margin-block: 0;
271
272        .filter-option {
273          margin-bottom: 0.8rem;
274
275          &:last-child label {
276            border-radius: 0;
277          }
278          input {
279            appearance: none;
280            background-color: #fff;
281            margin: 0;
282            margin-right: 0.8rem;
283            display: grid;
284            place-content: center;
285            font: inherit;
286            color: currentColor;
287            width: 2em;
288            height: 2em;
289            border: 0.15em solid currentColor;
290            transform: translateY(-0.075em);
291
292            &::before {
293              content: '';
294              width: 18px;
295              height: 14px;
296              transform: scale(0);
297              background-image: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTgiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxOCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTAgN0w2LjYyNzM5IDE0TDE4IDEuOTg4TDE2LjEzMTEgMEw2LjYyNzM5IDEwLjAzOEwxLjg1NTY3IDUuMDRMMCA3WiIgZmlsbD0iIzFENzBCOCIvPgo8L3N2Zz4K);
298            }
299
300            &:checked::before {
301              transform: scale(1);
302            }
303          }
304          label {
305            display: grid;
306            grid-template-columns: 1em auto;
307            align-items: center;
308            gap: 1.5em;
309            color: ${n.optionlabel};
310            background: ${n.optionlabelBg};
311            cursor: pointer;
312          }
313        }
314      }
315    `}};
316`,u=(d,n,i)=>{const t=m=>{const I=m.type==="keyup"&&m.keyCode==27,$=!d.current.contains(m.target),r=m.relatedTarget&&!d.current.contains(m.relatedTarget);d.current&&($||r)&&c(),I&&(c(),n&&n.current&&n.current.focus())},o=()=>{document.removeEventListener("click",t,!1),document.removeEventListener("focusout",t,!1),document.removeEventListener("keyup",t,!1),document.addEventListener("click",t,!1),document.addEventListener("focusout",t,!1),document.addEventListener("keyup",t,!1)},c=()=>{document.removeEventListener("click",t,!1),document.removeEventListener("focusout",t,!1),document.removeEventListener("keyup",t,!1),i&&i()};return{initElementFocus:o,destroyElementFocus:c}},A=({filterKey:d,options:n,title:i,updateSelectedFilters:t})=>{const[o,c]=(0,e.useState)(!1),m=(0,e.useRef)(null),I=(0,e.useRef)(null),{initElementFocus:$,destroyElementFocus:r}=u(m,I,()=>c(!1));if(!n||n.length===0)return null;const N=l=>{c(l),l?$():r()},k=n.length,P=n.filter(l=>l.isSelected).length;return e.createElement(y,{ref:m},e.createElement("button",{ref:I,className:`filter-toggle 
317          ${n.filter(l=>l.isSelected).length>0?" has-options":""}
318          ${o?" open":""}`,onClick:()=>N(!o)},e.createElement("span",null,e.createElement(s.A,null,"Listing filter "),i,!o&&e.createElement(e.Fragment,null,e.createElement("span",{"aria-hidden":"true"},` (${P})`),e.createElement(s.A,null,` ${P} of ${k} selected`))),e.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 13 8",className:"filter-toggle-icon","aria-hidden":!0},e.createElement("path",{fill:"#005282",d:"M10.85 0 6.33 4.82 1.82 0 .33 1.59l6 6.41 6-6.41L10.85 0Z"}))),e.createElement("div",{className:`drop-filter-set ${o?"open":"closed"}`},e.createElement("div",{className:"filter-status"},e.createElement("div",null,P," of ",k," ",e.createElement(s.A,null,"selected")),e.createElement("button",{className:"clear-set",disabled:!n.some(l=>l.isSelected),onClick:()=>{n.filter(l=>l.isSelected).forEach(l=>{t(d,decodeURIComponent(l.key))})}},"Clear ",e.createElement(s.A,null,"filters"))),e.createElement("ul",{className:"filter-options"}
318,n.map(l=>{const _=`${d}-${decodeURIComponent(l.key)}`;return l.contentTypeId,l.title&&e.createElement("li",{key:decodeURIComponent(l.key),className:"filter-option"},e.createElement("label",{htmlFor:_},e.createElement("input",{id:_,className:l.isSelected?"active":void 0,type:"checkbox",checked:l.isSelected,onChange:()=>t(d,decodeURIComponent(l.key))}),l.contentTypeId==="dataStartingYear"?`${l.title}-${(Number(l.title)+1).toString().substring(2)}`:l.title,e.createElement(s.A,null,". Press escape to exit filter selection")))}))))},T=({className:d,defaultValue:n="Select",filterGroupKey:i,filters:t,label:o,multiSelect:c,type:m="default",updateSelectedFilters:I=($,r)=>({})})=>{const $=(r,N)=>{N==="0/2/24/28/2951"&&I(r,"0/2/24/28/2887"),I(r,N)};return!t||t.length<1?null:(t=t.filter(r=>r.key!=="0/2/24/28/2887"),e.createElement(S,{className:d,type:m},t.length===1&&t[0].key==="true"&&e.createElement(e.Fragment,null,o?e.createElement("label",{className:"filter-control__label",htmlFor:i},o,t.some(r=>r.isSelected)&&e.createElement("span",{style:{color:g.A.brightPink}}," *")):e.createElement(s.A,null,e.createElement("label",{htmlFor:i},n)),e.createElement("input",{type:"checkbox",id:i,checked:t[0].isSelected,onChange:r=>I(i,r.target.checked.toString())})),(t.length>1||t[0].key!=="true")&&e.createElement(A,{key:i,filterKey:i,options:t,title:o||"",updateSelectedFilters:$})))}},30685:(B,C,a)=>{a.d(C,{A:()=>S});var e=a(48322),g=a(14864),v=a(77334),f=a(69076);const S=({title:s=f.yy,description:p,keywords:y,image:h,type:u="WebPage",uri:b,department:E,speakable:A,courseMode:w,startDate:T,endDate:d,location:n,name:i,price:t})=>{const o=s===f.yy?s:`${s} | ${f.yy}`,c=h&&v.A.resolveRelativeUrl(h.asset.sys.uri),m={"@context":"https://schema.org","@type":u,name:o,...A?{speakable:{"@type":"SpeakableSpecification",cssSelector:[{speakable:A}]}}:{},...p?{description:p}:{},...b?{url:v.A.resolveRelativeUrl(b)}:{},provider:{"@type":"CollegeOrUniversity",name:f.yy,url:f.W6},...c?{image:c}:{},...u==="Course"?{hasCourseInstance:[{"@type":"CourseInstance",courseMode:w??"Onsite",...T?{startDate:T}:{},location:{"@type":n?"Place":void 0,name:i??f.yy},offers:{"@type":"Offer",price:t?t+" Fees quoted are per year and are subject to an annual increase":"TBD",priceCurrency:"GBP"}}]}:{}};return e.createElement(g.m,null,e.createElement("title",null,o),c?e.createElement("link",{rel:"preload",as:"image",href:c}):null,b&&e.createElement("link",{rel:"canonical",href:v.A.resolveRelativeUrl(b)}),p&&e.createElement("meta",{name:"description",content:p}),y&&e.createElement("meta",{name:"keywords",content:y}),e.createElement("meta",{property:"og:title",content:o}),p&&e.createElement("meta",{property:"og:description",content:p}),c&&e.createElement("meta",{property:"og:image",content:c}),e.createElement("meta",{property:"twitter:title",content:o}),p&&e.createElement("meta",{property:"twitter:description",content:p}),c&&e.createElement("meta",{property:"twitter:image",content:c}),e.createElement("script",{type:"application/ld+json"},JSON.stringify(m)))}},93183:(B,C,a)=>{a.d(C,{A:()=>v});var e=a(48322);const v=()=>{const[f,x]=(0,e.useState)({width:void 0,height:void 0});return(0,e.useEffect)(()=>{function S(){x({width:window.innerWidth,height:window.innerHeight})}return window.addEventListener("resize",S),S(),()=>window.removeEventListener("resize",S)},[]),f}}}]);

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.