1(self.webpackChunkuniversity_of_glasgow=self.webpackChunkuniversity_of_glasgow||[]).push([[8116,9715],{14168:function(e,t,s){"use strict";s.r(t),s.d(t,{default:function(){return Tiles}});var i=s(14309),l=s(67193),a=s(17334);class Tiles{constructor(e=".tileContainer"){this.tileelement=e,this.tileelementselector=".tileContainer"===this.tileelement?".tileContainer:not(.tile-hold)":this.tileelement,this.rowclass=`${this.tileelement.replace(".","")}-row`,this.tilecolumnel=".tile-column",this.targetspan=12,this.defaultcolspan="6",this.tiles=[],this.tilerows=[],this.tilecolumns=[],this.tilegroups=[],this.hasicon=!1,this.singlelink=!1,this.mediaquery=i.A.currentmediaquery(),this.parseTileLinks=void 0===window.parseTileLinks||!1!==window.parseTileLinks,this.refreshCaches=this.refreshCaches.bind(this);try{this.initialize()}catch(e){console.log(e)}}initialize(){this.mapcolumns(),this.refreshCaches(),this._onResize=(0,a.debounce)((()=>{const e=i.A.currentmediaquery();e!==this.mediaquery&&(this.mediaquery=e,this.mediaquerychange())}),250),window.addEventListener("resize",this._onResize),this.preparsed=!1;const e=[];if(this.tiles.forEach((t=>{t.parentNode.classList.contains(this.rowclass)&&(e.push(t),this.preparsed=!0)})),e.length>0){const t=e[0].parentNode,s=document.createDocumentFragment();e.forEach((e=>s.appendChild(e))),t.parentNode.insertBefore(s,t)}this.preparsed&&this.tilerows.forEach((e=>{e.parentNode.removeChild(e)})),this.maptiles(this.tiles),this.wraptiles(),this.mediaquerychange();try{this.trackContent()}catch(e){console.log(e)}}mediaquerychange(){this.mediaquery=i.A.currentmediaquery(),this.assignclasses(),this.refreshCaches(),this.tilerows.forEach((e=>{e.classList.toggle("medium","medium"===this.mediaquery)}))}refreshCaches(){this.tiles=[...document.querySelectorAll(this.tileelementselector)],this.tilerows=[...document.querySelectorAll(".tileRow")],this.tilecolumns=[...document.querySelectorAll(this.tilecolumnel)]}watchImage(e){const t=e.querySelector("img");t&&(t.hasAttribute("loading")||t.setAttribute("loading","lazy"),t.complete?t.classList.add("loaded"):t.addEventListener("load",(e=>{e.target.classList.add("loaded")})))}assignclasses(){if("undefined"!=typeof performance&&performance.mark)try{performance.mark("tiles-assignclasses-start")}catch(e){}const e=["large-6","medium-4","medium-6","medium-8"],t=[];if(this.tilegroups.forEach((s=>{const i=s.length;s.forEach(((s,l)=>{if(s.classList.contains("hide"))return;const a={tile:s,remove:[...e],add:[],style:[],textAdds:[],imageAdds:[],watchImageEls:[]},n=s.dataset.colspan?s.dataset.colspan:this.defaultcolspan,r=s.querySelector(".tileImage"),o=s.querySelector(".tileText")||!1;try{o&&0===o.innerHTML.trim().length&&a.style.push({el:o,prop:"display",value:"none"})}catch(e){console.log(e,"error at tile")}try{r&&r.querySelector("img")&&a.watchImageEls.push(r)}catch(e){console.log(e,"error at tileimage")}try{"3"===n&&o&&o.querySelector("h2, h3, h4, h5, h6")&&a.textAdds.push({el:o,classes:["small-heading"]})}catch(e){}o&&2!==l&&!o.classList.contains("banner")?"12"!==n||s.dataset.noimage?(a.add.push(`large-${n}`),a.add.push("medium-6")):(a.add.push("medium-12"),a.add.push(`large-${n}`),s.dataset.fiftyFull&&"true"===s.dataset.fiftyFull?(a.add.push("isfiftyfull"),o&&a.textAdds.push({el:o,classes:["large-6","columns"]}),r&&a.imageAdds.push({el:r,classes:["large-6","columns"]})):(r&&a.imageAdds.push({el:r,classes:["large-8","columns"]}),o&&!o.classList.contains("search")&&a.textAdds.push({el:o,classes:["large-4","columns"]}))):("3"==n&&3!=i?(a.add.push("medium-6"),a.add.push("is-four-column")):a.add.push("medium-12"),a.add.push(`large-${n}`)),t.push(a)})),t.splice(0).forEach((e=>{const{tile:t,remove:s,add:i,style:l,textAdds:a,imageAdds:n,watchImageEls:r}=e;try{s.forEach((e=>t.classList.remove(e)))}catch(e){}try{i.forEach((e=>t.classList.add(e)))}catch(e){}l.forEach((e=>{try{e.el.style[e.prop]=e.value}catch(e){}})),a.forEach((e=>{try{e.el.classList.add(...e.classes)}catch(e){}})),n.forEach((e=>{try{e.el.classList.add(...e.classes)}catch(e){}})),r.forEach((e=>{try{this.watchImage(e)}catch(e){}}))}
1))})),"undefined"!=typeof performance&&performance.mark&&performance.measure)try{performance.mark("tiles-assignclasses-end"),performance.measure("tiles-assignclasses","tiles-assignclasses-start","tiles-assignclasses-end")}catch(e){}}mapcolumns(){const e=[...document.querySelectorAll(this.tilecolumnel)];e.length>0&&(e.forEach((e=>{[...e.querySelectorAll(this.tileelementselector)].forEach((e=>{e.removeAttribute("class"),e.classList.add("tile-column-child")})),e.classList.add("tileContainer"),e.classList.add("columns"),e.classList.add("large-4")})),this.tiles=[...document.querySelectorAll(this.tileelementselector)],this.tilecolumns=e)}maptiles(e){if("undefined"!=typeof performance&&performance.mark)try{performance.mark("tiles-maptiles-start")}catch(e){}let t=0,s=[];if(e.forEach((e=>{e.querySelector(".tile"),e.querySelector(".tileText"),e.querySelector(".tileImage");if(!e.classList.contains("hide")){try{const t=e.querySelector(".tile-icon");if(t){const s=e.querySelector(".tilewraplink");this.singlelink&&s&&s.classList.add("has-icon"),this.hasicon=!0;const i=e.querySelector(".tile-icon-spacer"),l=t;new ResizeObserver((e=>{let t=e[0].contentRect.height;i.style.height=`calc(100% - ${t}px)`})).observe(l)}}catch(e){console.error(e)}let i=!1;if(e.dataset.colspan?(t+=parseInt(e.dataset.colspan),12==parseInt(e.dataset.colspan)&&(i=!0)):t+=parseInt(this.defaultcolspan),i){const t=e.querySelector(".tileText"),s=e.querySelector(".tileImage");if(e.querySelector(".tileImage")&&!e.querySelector(".videoTile")){if(!e.querySelector(".tileImage").querySelector("img")&&e.querySelector(".tileText")&&e.querySelector(".tileText").classList.add("large-12"),e.dataset.imageRight&&"true"===e.dataset.imageRight){let t=e.querySelector(".tileImage").cloneNode(!0);t.classList.add("hide-for-small-only"),e.dataset.fiftyFull&&"true"!==!e.dataset.fiftyFull?t.classList.add("large-6"):(t.classList.remove("large-6"),t.classList.add("large-8")),t.classList.add("columns"),e.querySelector(".tileImage").classList.add("show-for-small-only"),e.querySelector(".tileText").insertAdjacentElement("afterend",t),this.watchImage(t)}""===t.textContent.trim()&&s.querySelector("img")&&(t.remove(),s.classList.add("large-12","medium-12","small-12"),s.classList.remove("large-8","columns"))}}try{e.querySelector(".link-replaced")||[...e.querySelectorAll("li")].map((e=>{!e.querySelector("a")&&e.classList.add("no-link")}))}catch(e){console.log(e)}const checkmultilinks=function(e){let t="",s=!0;return 0!==e.length&&[...e].forEach(((e,i)=>{0===i&&(t=e.getAttribute("href")),(e.getAttribute("href")!==t||e.classList.contains("tile-not-expanded"))&&(s=!1)})),s},replacelinks=function(e){[...e].forEach((e=>{let t;if(t=e.querySelector("img")?"":"link-replaced",!e.classList.contains("calltoaction")){let s="P"!==e.parentNode.tagName||e.parentNode.classList.contains("calltoaction")||e.parentNode.classList.contains("no-bullet")?`<span class="${t}">${e.innerHTML}</span>`:`<ul><li><span class="${t}">${e.innerHTML}</span></li></ul>`;e.insertAdjacentHTML("afterend",s),e.parentNode.removeChild(e)}}))};try{let t=e.querySelector(".tile");const s=[...e.querySelectorAll("a:not(.content-anchor):not(#uofg-575 > a)")];if(t){let i=t.classList;if(e.querySelector(".tileText")&&s.length>=1&&checkmultilinks(s)&&!i.contains("plain")&&!i.contains("videoTile")&&!i.contains("modalTile")&&!i.contains("twitter")&&!i.contains("tile-07")&&!i.contains("black")&&!i.contains("event")&&this.parseTileLinks&&!e.querySelector(".calltoaction")&&!e.querySelector(".banner")&&!e.parentNode.classList.contains(".no-bullet")&&!i.contains("podcast-tile")&&!e.getElementsByTagName("a")[0].classList.contains("no-tile-wrap")&&!e.getElementsByTagName("a")[0].classList.contains("twitter-timeline")){1!==e.querySelector(".tile .tileText").childElementCount||e.querySelector(".tile .tileImage img")||e.querySelector(".calltoaction")||e.querySelector(".tile .tileText").classList.add("single-child");let t=s[0],i=t.getAttribute("href"),l=e.textContent.trim(),a=t.dataset.ga;e.querySelector(".tileText").setAttribute("aria-hidden","true"),e.querySelector(".tileImage").setAttribute("aria-hidden","true"),replacelinks(e.getElementsByTagName("a"));let n=e.querySelector(".tile").innerHTML;document.getElementById("uofg-575")||(this.singlelink=!0);let r=`<a class="tilewraplink ${this.hasicon?"has-icon":""}" aria-label="${l}" ${a?`data-ga="${a}"`:""} href="${i}">${n}</a>`,o=e.querySelector(".tile"),c=document.createElement("div");c.innerHTML=r,o.textContent="",o.insertAdjacentHTML("beforeend",c.innerHTML)}}}catch(e){console.error(e)}try{let i=[];e.nextElementSibling&&(i=[...e.nextElementSibling.classList]),e.classList.contains("hide")||(t>=this.targetspan||!i.includes(this.tileelement.replace(".",""))?(s.push(e),this.tilegroups.push(s),s=[],t=0):s.push(e))}catch(e){console.error(e)}}})),s.length>0&&this.tilegroups.push(s),"undefined"!=typeof performance&&performance.mark&&performance.measure)try{performance.mark("tiles-maptiles-end"),performance.measure("tiles-maptiles","tiles-maptiles-start","tiles-maptiles-end")}catch(e){}}wraptiles(){this.tilegroups.forEach(((e,t)=>{let s=document.createElement("div");s.classList.add("row"),s.classList.add("tileRow"),s.classList.add(this.rowclass),s.classList.add("tilegroup-"+t),0===t&&s.classList.add("first-tile-row"),e[0].parentNode.insertBefore(s,e[0]);const i=document.createDocumentFragment();e.forEach((e=>{e.querySelector("#coursefinder")&&s.classList.add("first-tile-row"),e.querySelector(".autocomplete-fix")&&(s.classList.add("autocomplete-fix-next"),s.parentNode.classList.add("autocomplete-fix"),s.parentNode.parentNode.classList.add("autocomplete-fix")),i.appendChild(e)})),s.appendChild(i)})),this.tilerows=[...document.querySelectorAll(".tileRow")];let e=!1;this.tilerows.forEach(((t,s)=>{t.classList.contains("autocomplete-fix-next")&&(e=s+1)})),e&&this.tilerows[e].classList.add("autocomplete-fix")}
1trackContent(){const e=["lavendar","lavender","pillarbox","thistle","cobalt","leaf"];this.tiles.forEach((t=>{const s=t.querySelector(".tile");if(!s)return;if(e.filter((e=>s.classList.contains(e))).length>0){let e=!1;[...t.querySelectorAll(".tileText>p")].forEach((t=>{t.textContent.split(" ").filter((e=>""!==e&&"\n"!==e)).length>70&&(e=!0)})),e&&setTimeout(l.A.logevent("large tile","view",t.dataset.contentid),1e3)}}))}}},17334:function(e){function debounce(e,t,s){var i,l,a,n,r;function later(){var o=Date.now()-n;o<t&&o>=0?i=setTimeout(later,t-o):(i=null,s||(r=e.apply(a,l),a=l=null))}null==t&&(t=100);var debounced=function(){a=this,l=arguments,n=Date.now();var o=s&&!i;return i||(i=setTimeout(later,t)),o&&(r=e.apply(a,l),a=l=null),r};return debounced.clear=function(){i&&(clearTimeout(i),i=null)},debounced.flush=function(){i&&(r=e.apply(a,l),a=l=null,clearTimeout(i),i=null)},debounced}debounce.debounce=debounce,e.exports=debounce},91360:function(e,t,s){"use strict";s.r(t),s.d(t,{default:function(){return Events}});var i=s(55498),l=s(7103),a=s(14168);class Events{constructor(e,t={}){this.el=e,this.config={feed:"/feeds/events/eventfeedbyid.php?ids="},this.singleTile=!!this.el.dataset.single&&"true"==this.el.dataset.single,this.eventIDs=!!this.el.dataset.eventIds&&this.el.dataset.eventIds,this.span=this.el.dataset.span?this.el.dataset.span:4,this.background=this.el.dataset.background?this.el.dataset.background:"light-grey",this.datecolour=this.el.dataset.datecolour?this.el.dataset.datecolour:"universityblue",this.morelink=this.el.dataset.moreLink&&""!==this.el.dataset.moreLink?this.el.dataset.moreLink:null,this.heading=this.el.dataset.heading&&""!==this.el.dataset.heading?this.el.dataset.heading:null,this.limit=this.el.dataset.limit&&""!==this.el.dataset.limit?parseInt(this.el.dataset.limit):3,this.eventIDs&&this.getEvents()}getEvents(){fetch(`${this.config.feed}${this.eventIDs}`).then((e=>e.json())).then((e=>{const t=e.slice(0,this.limit);e=t.reverse();try{e?this.singleTile?this.outputTile(this.buildEventTileList(e)):e.forEach(((e,t)=>{this.limit>t&&this.outputTile(this.buildEventTileSingle(e))})):this.outputTile(`\n <h2>${this.heading}</h2>\n `)}catch(e){}})).then((e=>{[...document.querySelectorAll(".tileRow")].forEach((e=>{[...e.childNodes].forEach((t=>{e.insertAdjacentElement("beforebegin",t)})),e.remove()})),this.el.remove(),new a.default(".tileContainer")})).then((e=>{l.A.formatEventDates(".event-date")}))}buildEventTileList(e){let t=[];return e.forEach(((e,s)=>{this.limit>s&&t.push(`\n <li class="hentry">\n <a href="${e.url}">\n <p>${e.title}<br />${e.date}, ${e.time}</p>\n </a>\n </li>\n `)})),t=t.reverse(),`\n ${this.heading?`<h2>${this.heading}</h2>`:""}\n <ul class="hfeed">\n ${t.join("")}\n </ul>\n ${this.morelink?`<p><a href="${this.morelink}">More events ....</a></p>`:""}\n `}buildEventTileSingle(e){return`\n <p class="event-date ${this.datecolour}">${e.shortDate}</p>\n <a href="${e.url}">\n <h2>${e.title}</h2>\n \n <p><strong>Date:</strong> ${e.date}<br />\n <strong>Time:</strong> ${e.time} <br />\n <strong>Categories:</strong> ${e.categories.join(", ")} <br />\n <strong>Venue:</strong> ${e.venue}<br />\n </p>\n <p>${e.summary}</p>\n </a>\n `}outputTile(e){const t=i.A.tile({content:e,extraclasses:"events-tile-wrapper",span:this.span,backgroundclass:this.background});this.el.insertAdjacentHTML("afterend",t)}}}}]); 2//# sourceMappingURL=gu-events-tile.398210c7.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.