1/******** 38015 internalID:MzgwMTUx *********/ 2 3const customCard = document.querySelectorAll('[data-component="custom--card"]'); 4 5customCard.forEach(card => { 6 const mainLink = card.querySelector('.custom-card-pattern__card-link'); 7 const clickableElements = Array.from(card.querySelectorAll("a")); 8 9 clickableElements.forEach((element) => 10 element.addEventListener("click", (e) => e.stopPropagation()) 11 ); 12 13 function handleEvent(event){ 14 const noTextSelected = !window.getSelection().toString(); 15 if(noTextSelected){ 16 mainLink.click(); 17 } 18 } 19 card.addEventListener('click', handleEvent); 20});/******** 100003 internalID:MTAwMDAzMQ *********/ 21 22$(document).ready(function() { 23 24 if (typeof $.fn.slick === 'function') { 25 $('.custom-slick-process-carousel').slick({ 26 arrowsPlacement:'split', 27 dots: true, 28 adaptiveHeight: true, 29 autoplay: false, 30 infinite: false, 31 autoplaySpeed: 5000, 32 prevArrow: '<button type="button" class="custom-slick-process-arrows custom-slick-process-arrows--prev">' 33 + ' <span class="fa fa-solid-chevron-left"></span>' 34 + ' <span class="visually-hidden">Previous slide</span>' 35 + '</button>', 36 nextArrow: '<button type="button" class="custom-slick-process-arrows custom-slick-process-arrows--next">' 37 + ' <span class="fa fa-solid-chevron-right"></span>' 38 + ' <span class="visually-hidden">Next slide</span>' 39 + '</button>', 40 }); 41 } 42 });/******** 38011 internalID:MzgwMTEx *********/ 43 44 /* focusin/out event polyfill (firefox) */ 45!function(){ 46 var w = window, 47 d = w.document; 48 49 if( w.onfocusin === undefined ){ 50 d.addEventListener('focus' ,addPolyfill ,true); 51 d.addEventListener('blur' ,addPolyfill ,true); 52 d.addEventListener('focusin' ,removePolyfill ,true); 53 d.addEventListener('focusout' ,removePolyfill ,true); 54 } 55 function addPolyfill(e){ 56 var type = e.type === 'focus' ? 'focusin' : 'focusout'; 57 var event = new CustomEvent(type, { bubbles:true, cancelable:false }); 58 event.c1Generated = true; 59 e.target.dispatchEvent( event ); 60 } 61 function removePolyfill(e){ 62if(!e.c1Generated){ // focus after focusin, so chrome will the first time trigger tow times focusin 63 d.removeEventListener('focus' ,addPolyfill ,true); 64 d.removeEventListener('blur' ,addPolyfill ,true); 65 d.removeEventListener('focusin' ,removePolyfill ,true); 66 d.removeEventListener('focusout' ,removePolyfill ,true); 67} 68setTimeout(function(){ 69 d.removeEventListener('focusin' ,removePolyfill ,true); 70 d.removeEventListener('focusout' ,removePolyfill ,true); 71}); 72} 73}(); 74 75var myCarousel = (function() { 76 77 var carousel, slides, index, slidenav, settings, timer, setFocus, animationSuspended; 78 79 function forEachElement(elements, fn) { 80 for (var i = 0; i < elements.length; i++) 81 fn(elements[i], i); 82 } 83 84 function removeClass(el, className) { 85 if (el.classList) { 86 el.classList.remove(className); 87 } else { 88 el.className = el.className.replace(new RegExp('(^|\\b)' + className.split(' ').join('|') + '(\\b|$)', 'gi'), ' '); 89 } 90 } 91 92 function hasClass(el, className) { 93 if (el.classList) { 94 return el.classList.contains(className); 95 } else { 96 return new RegExp('(^| )' + className + '( |$)', 'gi').test(el.className); 97 } 98 } 99 100 function init(set) { 101 settings = set; 102 carousel = document.getElementById(settings.id); 103 104 /*Return where page isn't using the carousel*/ 105 try { 106 slides = carousel.querySelectorAll(".slide"); 107 } catch (err) { 108 return; 109 } 110 111 carousel.className = 'active carousel'; 112 113 var ctrls = document.createElement('ul'); 114 115 ctrls.className = 'controls'; 116 ctrls.innerHTML = '<li>' + 117 '<button type="button" class="btn-prev"><span class="visuallyhidden">go to previous slide</span></button>' + 118 '</li>' + 119 '<li>' + 120 '<button type="button" class="btn-next"><span class="visuallyhidden">
120go to next slide</span></button>' + 121 '</li>'; 122 123 ctrls.querySelector('.btn-prev') 124 .addEventListener('click', function () { 125 prevSlide(true); 126 }); 127 ctrls.querySelector('.btn-next') 128 .addEventListener('click', function () { 129 nextSlide(true); 130 }); 131 132 carousel.appendChild(ctrls); 133 134 if (settings.slidenav || settings.animate) { 135 slidenav = document.createElement('ul'); 136 137 slidenav.className = 'slidenav'; 138 139 if (settings.animate) { 140 var li = document.createElement('li'); 141 142 if (settings.startAnimated) { 143 li.innerHTML = '<button data-action="stop"><span class="visuallyhidden">Stop Animation </span>ï¿</button>'; 144 } else { 145 li.innerHTML = '<button data-action="start"><span class="visuallyhidden">Start Animation </span>â¶</button>'; 146 } 147 148 slidenav.appendChild(li); 149 } 150 151 if (settings.slidenav) { 152 153 forEachElement(slides, function(el, i){ 154 var li = document.createElement('li'); 155 var klass = (i===0) ? 'class="current" ' : ''; 156 var kurrent = (i===0) ? ' <span class="visuallyhidden">(Current Item)</span>' : ''; 157 158 li.innerHTML = '<button '+ klass +'data-slide="' + i + '"><span class="visuallyhidden">Event item</span> ' + (i+1) + kurrent + '</button>'; 159 slidenav.appendChild(li); 160 }); 161 } 162 163 slidenav.addEventListener('click', function(event) { 164 var button = event.target; 165 if (button.localName == 'button') { 166 if (button.getAttribute('data-slide')) { 167 stopAnimation(); 168 setSlides(button.getAttribute('data-slide'), true); 169 } else if (button.getAttribute('data-action') == "stop") { 170 stopAnimation(); 171 } else if (button.getAttribute('data-action') == "start") { 172 startAnimation(); 173 } 174 } 175 }, true); 176 177 carousel.className = 'active carousel with-slidenav'; 178 carousel.appendChild(slidenav); 179 } 180 181 var liveregion = document.createElement('div'); 182 liveregion.setAttribute('aria-live', 'polite'); 183 liveregion.setAttribute('aria-atomic', 'true'); 184 liveregion.setAttribute('class', 'liveregion visuallyhidden'); 185 carousel.appendChild(liveregion); 186 187 slides[0].parentNode.addEventListener('transitionend', function (event) { 188 var slide = event.target; 189 removeClass(slide, 'in-transition'); 190 if (hasClass(slide, 'current')) { 191 if(setFocus) { 192 slide.setAttribute('tabindex', '-1'); 193 slide.focus(); 194 setFocus = false; 195 } 196 } 197 }); 198 199 carousel.addEventListener('mouseenter', suspendAnimation); 200 carousel.addEventListener('mouseleave', function(event) { 201 if (animationSuspended) { 202 startAnimation(); 203 } 204 }); 205 206 carousel.addEventListener('focusin', function(event) { 207 if (!hasClass(event.target, 'slide')) { 208 suspendAnimation(); 209 } 210 }); 211 carousel.addEventListener('focusout', function(event) { 212 if (!hasClass(event.target, 'slide') && animationSuspended) { 213 startAnimation(); 214 } 215 }); 216 217 index = 0; 218 setSlides(index); 219 220 if (settings.startAnimated) { 221 timer = setTimeout(nextSlide, 5000); 222 } 223 } 224 225 function setSlides(new_current, setFocusHere, transition, announceItemHere) { 226 setFocus = typeof setFocusHere !== 'undefined' ? setFocusHere : false; 227 announceItem = typeof announceItemHere !== 'undefined' ? announceItemHere : false; 228 transition = typeof transition !== 'undefined' ? transition : 'none'; 229 230 new_current = parseFloat(new_current); 231 232 var length = slides.length; 233 var new_next = new_current+1; 234 var new_prev = new_current-1; 235 236 if(new_next === length) { 237 new_next = 0; 238 } else if(new_prev < 0) { 239 new_prev = length-1; 240 } 241 242 for (var i = slides.length - 1; i >= 0; i--) { 243 slides[i].className = "slide"; 244 } 245 246 slides[new_next].className = 'next slide' + ((transition == 'next') ? ' in-transition' : ''); 247 slides[new_next].setAttribute('aria-hidden', 'true'); 248 249 slides[new_prev].className = 'prev slide' + ((transition == 'prev') ? ' in-transition' : ''); 250 slides[new_prev].setAttribute('aria-hidden', 'true'); 251 252 253 slides[new_current].className = 'current slide'; 254 slides[new_current].removeAttribute('aria-hidden'); 255 256 257 if (announceItem) { 258 carousel.querySelector('.liveregion').textContent = 'Item ' + (new_current + 1) + ' of ' + slides.length; 259 } 260 261 if(settings.slidenav) { 262 var buttons = carousel.querySelectorAll('.slidenav button[data-sli
262de]'); 263 for (var j = buttons.length - 1; j >= 0; j--) { 264 buttons[j].className = ''; 265 buttons[j].innerHTML = '<span class="visuallyhidden">Event item</span> ' + (j+1); 266 } 267 buttons[new_current].className = "current"; 268 buttons[new_current].innerHTML = '<span class="visuallyhidden">Event item</span> ' + (new_current+1) + ' <span class="visuallyhidden">(Current Item)</span>'; 269 } 270 271 index = new_current; 272 273 } 274 275 function nextSlide(announceItem) { 276 announceItem = typeof announceItem !== 'undefined' ? announceItem : false; 277 278 var length = slides.length, 279 new_current = index + 1; 280 281 if(new_current === length) { 282 new_current = 0; 283 } 284 285 setSlides(new_current, false, 'prev', announceItem); 286 287 if (settings.animate) { 288 timer = setTimeout(nextSlide, 5000); 289 } 290 291 } 292 293 function prevSlide(announceItem) { 294 announceItem = typeof announceItem !== 'undefined' ? announceItem : false; 295 296 var length = slides.length, 297 new_current = index - 1; 298 299 if(new_current < 0) { 300 new_current = length-1; 301 } 302 303 setSlides(new_current, false, 'next', announceItem); 304 305 } 306 307 function stopAnimation() { 308 clearTimeout(timer); 309 settings.animate = false; 310 animationSuspended = false; 311 _this = carousel.querySelector('[data-action]'); 312 _this.innerHTML = '<span class="visuallyhidden">Start Animation </span>â¶'; 313 _this.setAttribute('data-action', 'start'); 314 } 315 316 function startAnimation() { 317 settings.animate = true; 318 animationSuspended = false; 319 timer = setTimeout(nextSlide, 5000); 320 _this = carousel.querySelector('[data-action]'); 321 _this.innerHTML = '<span class="visuallyhidden">Stop Animation </span>ï¿'; 322 _this.setAttribute('data-action', 'stop'); 323 } 324 325 function suspendAnimation() { 326 if(settings.animate) { 327 clearTimeout(timer); 328 settings.animate = false; 329 animationSuspended = true; 330 } 331 } 332 333 return { 334 init:init, 335 next:nextSlide, 336 prev:prevSlide, 337 goto:setSlides, 338 stop:stopAnimation, 339 start:startAnimation 340 }; 341}); 342 343var c = new myCarousel(); 344c.init({ 345 id: 'c', 346 slidenav: true, 347 animate: true, 348 startAnimated: true 349});/******** 38005 internalID:MzgwMDUx *********/ 350 351// Matching non-linear element heights - v1.0 - 18/12/2016 - M.J.Foskett - https://websemantics.uk/ 352var matchHeights = function () { 353 354 "use strict"; 355 356 var dataAttr = "data-matchHeights"; 357 var minViewportWidth = 460; 358 359 function _getHeightSetsArray(dataAttr) { 360 // Return an array containing the different values of data-data-heightmatch 361 var value; 362 var arr = []; 363 var sets = document.querySelectorAll("[" + dataAttr + "]"); 364 var i = sets.length; 365 while (i--) { 366 value = sets[i].getAttribute(dataAttr); 367 if (arr.indexOf(value) === -1) { 368 arr.push(value); 369 } 370 } 371 return arr; 372 } 373 374 function _resetMinHeights(set) { 375 // reset min-heights by removing the inline style. 376 var i = set.length; 377 while (i--) { 378 set[i].removeAttribute("style"); 379 } 380 } 381 382 function _getMaxSetHeight(set) { 383 // return the height of the tallest element in set 384 var maxHeight = 0; 385 var currentHeight; 386 var i = set.length; 387 while (i--) { 388 currentHeight = set[i].clientHeight; 389 if (currentHeight > maxHeight) { 390 maxHeight = currentHeight; 391 } 392 } 393 return maxHeight; 394 } 395 396 function _setMinHeight(set, matchedHeight) { 397 var i = set.length; 398 399 while (i--) { 400 set[i].style.minHeight = matchedHeight + "px"; 401 } 402 } 403 404 function init() { 405 406 var sets = _getHeightSetsArray(dataAttr); 407 var i = sets.length; 408 var set; 409 410 while (i--) { 411 412 set = document.querySelectorAll("[" + dataAttr + "=\"" + sets[i] + "\"]"); 413 414 _resetMinHeights(set); 415 416 // Only above minimum screen width 417 if (document.body.clientWidth >= minViewportWidth) { 418 419 _setMinHeight(set, _getMaxSetHeight(set)); 420 421 } 422 } 423 } 424 425 init(); 426 427}; 428 429 430// https://john-dugan.com/javascript-debounce/ 431// https://codepen.io/johndugan/pen/BNwBWL?editors=001 432var debounce=function(e,t,n){var a;return function(){var r=this,i=arguments,o=function(){a=null,n||e.apply(r,i)},s=n&&!a;clearTimeout(a),a=setTimeout(o,t||200),s&&e.apply(r,i)}}; 433 434 435window.addEventListener("load", matchHeights, false); 436window.addEventListener("resize", debounce(matchHeights, 100, false), false); 437/******** 38003 internalID:MzgwMDMx *********/ 438 439//todo
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.