PageSourceSearch

https://softmech.org/3t4/js/dist/gu-tiles.d232682f.js

js softmech.org collected 2026-09-28 06:38:05 UTC 11,003 bytes, 2 lines download raw bytes

1(self.webpackChunkuniversity_of_glasgow=self.webpackChunkuniversity_of_glasgow||[]).push([[9715],{14168:function(e,t,s){"use strict";s.r(t),s.d(t,{default:function(){return Tiles}});var l=s(14309),a=s(67193),i=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=l.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,i.debounce)((()=>{const e=l.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=l.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 l=s.length;s.forEach(((s,a)=>{if(s.classList.contains("hide"))return;const i={tile:s,remove:[...e],add:[],style:[],textAdds:[],imageAdds:[],watchImageEls:[]},r=s.dataset.colspan?s.dataset.colspan:this.defaultcolspan,c=s.querySelector(".tileImage"),n=s.querySelector(".tileText")||!1;try{n&&0===n.innerHTML.trim().length&&i.style.push({el:n,prop:"display",value:"none"})}catch(e){console.log(e,"error at tile")}try{c&&c.querySelector("img")&&i.watchImageEls.push(c)}catch(e){console.log(e,"error at tileimage")}try{"3"===r&&n&&n.querySelector("h2, h3, h4, h5, h6")&&i.textAdds.push({el:n,classes:["small-heading"]})}catch(e){}n&&2!==a&&!n.classList.contains("banner")?"12"!==r||s.dataset.noimage?(i.add.push(`large-${r}`),i.add.push("medium-6")):(i.add.push("medium-12"),i.add.push(`large-${r}`),s.dataset.fiftyFull&&"true"===s.dataset.fiftyFull?(i.add.push("isfiftyfull"),n&&i.textAdds.push({el:n,classes:["large-6","columns"]}),c&&i.imageAdds.push({el:c,classes:["large-6","columns"]})):(c&&i.imageAdds.push({el:c,classes:["large-8","columns"]}),n&&!n.classList.contains("search")&&i.textAdds.push({el:n,classes:["large-4","columns"]}))):("3"==r&&3!=l?(i.add.push("medium-6"),i.add.push("is-four-column")):i.add.push("medium-12"),i.add.push(`large-${r}`)),t.push(i)})),t.splice(0).forEach((e=>{const{tile:t,remove:s,add:l,style:a,textAdds:i,imageAdds:r,watchImageEls:c}=e;try{s.forEach((e=>t.classList.remove(e)))}catch(e){}try{l.forEach((e=>t.classList.add(e)))}catch(e){}a.forEach((e=>{try{e.el.style[e.prop]=e.value}catch(e){}})),i.forEach((e=>{try{e.el.classList.add(...e.classes)}catch(e){}})),r.forEach((e=>{try{e.el.classList.add(...e.classes)}catch(e){}})),c.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 l=e.querySelector(".tile-icon-spacer"),a=t;new ResizeObserver((e=>{let t=e[0].contentRect.height;l.style.height=`calc(100% - ${t}px)`})).observe(a)}}catch(e){console.error(e)}let l=!1;if(e.dataset.colspan?(t+=parseInt(e.dataset.colspan),12==parseInt(e.dataset.colspan)&&(l=!0)):t+=parseInt(this.defaultcolspan),l){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,l)=>{0===l&&(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 l=t.classList;if(e.querySelector(".tileText")&&s.length>=1&&checkmultilinks(s)&&!l.contains("plain")&&!l.contains("videoTile")&&!l.contains("modalTile")&&!l.contains("twitter")&&!l.contains("tile-07")&&!l.contains("black")&&!l.contains("event")&&this.parseTileLinks&&!e.querySelector(".calltoaction")&&!e.querySelector(".banner")&&!e.parentNode.classList.contains(".no-bullet")&&!l.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],l=t.getAttribute("href"),a=e.textContent.trim(),i=t.dataset.ga;e.querySelector(".tileText").setAttribute("aria-hidden","true"),e.querySelector(".tileImage").setAttribute("aria-hidden","true"),replacelinks(e.getElementsByTagName("a"));let r=e.querySelector(".tile").innerHTML;document.getElementById("uofg-575")||(this.singlelink=!0);let c=`<a class="tilewraplink ${this.hasicon?"has-icon":""}" aria-label="${a}" ${i?`data-ga="${i}"`:""} href="${l}">${r}</a>`,n=e.querySelector(".tile"),o=document.createElement("div");o.innerHTML=c,n.textContent="",n.insertAdjacentHTML("beforeend",o.innerHTML)}}}catch(e){console.error(e)}try{let l=[];
1e.nextElementSibling&&(l=[...e.nextElementSibling.classList]),e.classList.contains("hide")||(t>=this.targetspan||!l.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 l=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")),l.appendChild(e)})),s.appendChild(l)})),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")}trackContent(){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(a.A.logevent("large tile","view",t.dataset.contentid),1e3)}}))}}},17334:function(e){function debounce(e,t,s){var l,a,i,r,c;function later(){var n=Date.now()-r;n<t&&n>=0?l=setTimeout(later,t-n):(l=null,s||(c=e.apply(i,a),i=a=null))}null==t&&(t=100);var debounced=function(){i=this,a=arguments,r=Date.now();var n=s&&!l;return l||(l=setTimeout(later,t)),n&&(c=e.apply(i,a),i=a=null),c};return debounced.clear=function(){l&&(clearTimeout(l),l=null)},debounced.flush=function(){l&&(c=e.apply(i,a),i=a=null,clearTimeout(l),l=null)},debounced}debounce.debounce=debounce,e.exports=debounce}}]);
2//# sourceMappingURL=gu-tiles.d232682f.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.