1/* @license GPL-2.0-or-later https://www.drupal.org/licensing/faq */ 2(function(Drupal,once,drupalSettings){'use strict';const visibleBodyClass='conversion-banner-visible';const revealThreshold=75;function getPreferredBanner(wrapper){return wrapper.querySelector('.js-conversion-banner[data-property-specific="true"]')||wrapper.querySelector('.js-conversion-banner');}function prepareMobileMessages(banner){banner.querySelectorAll('.js-conversion-banner-message').forEach((message)=>{const links=message.querySelectorAll('a[href]');const link=links.length===1?links[0]:null;const hasMobileMessage=link&&link.getAttribute('href').trim()!==''&&link.textContent.trim()!=='';message.classList.toggle('has-mobile-message',hasMobileMessage);if(!hasMobileMessage)return;const fullMessage=document.createElement('div');fullMessage.classList.add('conversion-banner__full-message');while(message.firstChild)fullMessage.appendChild(message.firstChild);const mobileMessage=document.createElement('a');mobileMessage.classList.add('conversion-banner__mobile-message');mobileMessage.setAttribute('href',link.getAttribute('href'));mobileMessage.textContent=link.textContent.trim();const hreflang=link.getAttribute('hreflang');if(hreflang)mobileMessage.setAttribute('hreflang',hreflang);message.append(fullMessage,mobileMessage);});}function mountCarousel(banner){const carousel=banner.querySelector('.js-conversion-banner-carousel');if(!carousel||typeof Splide==='undefined')return;const slider=new Splide(carousel,{type:'loop',pagination:false,keyboard:'focused',speed:850,i18n:{prev:Drupal.t('Previous promotion'),next:Drupal.t('Next promotion')}});slider.mount();}function showPreview(banner){const wrapper=banner.closest('.c-site-alerts');if(wrapper)wrapper.style.display='block';banner.style.display='block';banner.classList.add('conversion-banner--preview','is-visible');banner.setAttribute('aria-hidden','false');}function initializeReveal(banner){let frameRequested=false;const update=()=>{frameRequested=false;const isRendered=banner.getClientRects().length>0;const scrollPosition=window.scrollY||window.pageYOffset;const hasFocus=banner.contains(document.activeElement);const isVisible=isRendered&&(scrollPosition>=revealThreshold||hasFocus);banner.classList.toggle('is-visible',isVisible);banner.setAttribute('aria-hidden',isVisible?'false':'true');document.body.classList.toggle(visibleBodyClass,isVisible);};const requestUpdate=()=>{if(frameRequested)return;frameRequested=true;window.requestAnimationFrame(update);};window.addEventListener('scroll',requestUpdate,{passive:true});window.addEventListener('resize',requestUpdate);window.addEventListener('pageshow',requestUpdate);banner.addEventListener('focusout',requestUpdate);requestUpdate();}Drupal.behaviors.conversionBanner={attach(context){once('conversionBanner','.js-conversion-banner',context).forEach((banner)=>{const wrapper=banner.closest('.c-site-alerts')||document;if(getPreferredBanner(wrapper)!==banner){once.remove('conversionBanner',banner);return;}prepareMobileMessages(banner);const previewMode=Boolean(drupalSettings.verb_site_alert&&drupalSettings.verb_site_alert.previewMode);if(previewMode){showPreview(banner);mountCarousel(banner);return;}mountCarousel(banner);initializeReveal(banner);});}};})(Drupal,once,drupalSettings);;
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.