1"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4410],{6376:(t,e,i)=>{i.d(e,{A:()=>r});var a=i(8319),s=i(5827);const r=class{constructor(t,e){this.base=t,this.options=e,this.swiperElement=this.base.querySelector(".master-carousel__swiper"),this.cardsContainer=this.base.querySelector(".master-carousel__swiper-wrapper")}setSkeleton(t){this.cardsContainer.innerHTML=Array(5).fill(null).map(()=>t()).join("")}initializeSwiper(){this.base.classList.remove("hidden"),this.swiperElement&&(this.swiper=new a.A(this.swiperElement,{modules:[s.Vx],slidesPerView:"auto",slidesPerGroup:1,slidesPerGroupAuto:!1,spaceBetween:16,speed:1e3,navigation:{nextEl:".master-carousel__swiper .swiper-button-next",prevEl:".master-carousel__swiper .swiper-button-prev",enabled:!1},breakpoints:{768:{navigation:{enabled:!0}}},on:{lock:()=>{this.base.classList.add("master-carousel__base--locked")},unlock:()=>{this.base.classList.remove("master-carousel__base--locked")}}}),this.setupKeyboardNavigation())}populateCards(t,e){this.cardsContainer.innerHTML=t.map(t=>e(t,this.options)).join("")}updateSwiper(){this.swiper.update()}createAlertDiv(t){const e=document.createElement("div");return e.className="alert alert-info",e.setAttribute("role","alert"),e.textContent=t,e}handleError(t){if(console.warn(t),this.swiper.destroy(),this.options.isEditMode){const e=this.createAlertDiv(t);this.base.parentNode.append(e),this.swiperElement.remove()}else this.base.remove()}setupKeyboardNavigation(){this.cardsContainer.addEventListener("focusin",t=>{if(this.noFocusNavigationSelectors?.some(e=>t.target.closest(e)))return;const e=t.target.closest(".swiper-slide");if(e&&this.swiper){const t=Array.from(this.swiper.slides).indexOf(e);-1!==t&&this.swiper.slideTo(t,0)}})}}},6136:(t,e,i)=>{var a=i(6376),s=i(2511),r=i(5637),o=i(3351),n=i.n(o),d=i(2919),c=i.n(d);const l=(t,e,i)=>{const a={...i,"Interacted Element":t};c().track(e.interacted,a)};const h=class{static impressions(t){const{productArea:e,pageType:i}=window.reactSettingsMixpanel?.props?.context||{},a=JSON.parse(t.getAttribute("data-mixpanel-params-exhibitorMasterCarousel")),s=JSON.parse(t.getAttribute("data-mixpanel-events-exhibitorMasterCarousel")),r=t.parentElement.querySelector(".master-carousel__base"),o=new Map,n=new IntersectionObserver(t=>{t.forEach(t=>{const r=t.target;if(t.isIntersecting&&1===t.intersectionRatio){if(!o.has(r)){const t=setTimeout(()=>{const t=JSON.parse(r.getAttribute("data-mixpanel-params-exhibitor-card")),n={"Product Area":e,"Page Type":i,...a,...t};c().track(s.impression,n),o.delete(r)},3e3);o.set(r,t)}}else o.has(r)&&(clearTimeout(o.get(r)),o.delete(r))})},{threshold:1});r.querySelectorAll(".exhibitor-card").forEach(t=>{n.observe(t)})}static interactions(t,e){const{productArea:i,pageType:a}=window.reactSettingsMixpanel?.props?.context||{},s=JSON.parse(e.getAttribute("data-mixpanel-params-exhibitorMasterCarousel")),r=JSON.parse(e.getAttribute("data-mixpanel-events-exhibitorMasterCarousel")),o=e.parentElement.querySelector(".master-carousel__base"),n={"Product Area":i,"Page Type":a,...s};o.addEventListener("click",t=>{const e=t.target.closest(".exhibitor-card");e&&((t,e,i)=>{const a={...i,...JSON.parse(t.getAttribute("data-mixpanel-params-exhibitor-card")),"Interacted Element":"card"};c().track(e.interacted,a)})(e,r,n)});const d=o.querySelector(".swiper-button-prev"),h=o.querySelector(".swiper-button-next");d&&d.addEventListener("click",()=>l("click left",r,n)),h&&h.addEventListener("click",()=>l("click right",r,n)),t.on("touchEnd",t=>{switch(t.swipeDirection){case"prev":l("drag right",r,n);break;case"next":l("drag left",r,n)}})}static planInteracted(t,e,i){const{productArea:a,pageType:s}=window.reactSettingsMixpanel?.props?.context||{},r=JSON.parse(t.getAttribute("data-mixpanel-params-exhibitorMasterCarousel")),o=JSON.parse(e.getAttribute("data-mixpanel-params-exhibitor-card")),n=i?"Plan Added":"Plan Removed",d=i?"Entity Added":"Entity Removed",l={"Product Area":a,"Page Type":s,Component:r["Component Name"],[d]:"exhibitor","Interacted Element":i?"Favourite":"Unfavourite","Exhibitor ID":o["Exhibitor ID"],"Exhibitor Name":o["Exhibitor Name"],"Slot Type":o["Slot Type"],"Package Type":o["Package Type"]};c().track(n,l)}};var p=i(567);const b="featured",u="recommended";class m extends a.A{constructor(t,e){super(t.parentElement.querySelector(".master-carousel__base"),e),this.element=t,this.options.cookieGroup="3",this.noFocusNavigationSelectors=[`.${s.N.addToPlan}`],this.options.configuration===u?rx.global.cookie.checkComponent(this)&&this.init():this.init()}init(){this.exhibitorsData=[],this._areListenersAdded=!1,this.setRefs(),this.setSkeleton(),this.initializeSwiper(),window.showPlanningFlag&&rx.showPlanFacade.init(this.options.ringboxEndpoint,this.options.ringboxApiKey),this.getExhibitorIDs().then(()=>this.fetchExhibitorsData()).catch(t=>this.handleError(`Exhibitor Master Carousel - ${t.message}`))}setRefs(){this.cardsContainer=this.base.querySelector(".master-carousel__swiper-wrapper")}setSkeleton(){this.cardsContainer.innerHTML=Array(5).fill(null).map(()=>(0,r.w)()).join("")}async getLastExhibitorInteraction(){try{const t=await rx.eventEditionInteractions.read(this.options.eventEdition,"exhibitors");return t?.organisationId||null}catch(t){throw new Error(`Error retrieving last exhibitor interaction from rx.eventEditionInteractions: ${t.message}`)}}buildRecommendationsQuery(t){const e=t?`organisationId: "${t}"`:"";return`\n\t\t\t{\n\t\t\t\texhibitorRecommendations(\n\t\t\t\t\teventEditionId: "${this.options.eventEdition}"\n\t\t\t\t\tlocale: "${this.options.locale}"\n\t\t\t\t\tinterfaceLocale: "${this.options.interfaceLocale}"\n\t\t\t\t\t${e}\n\t\t\t\t\tsource: 0\n\t\t\t\t\tmaxResult: 12\n\t\t\t\t) {\n\t\t\t\t\tid\n\t\t\t\t}\n\t\t\t}\n\t\t`}async getDynamicExhibitors(t=null){const e=this.options.ringboxEndpoint,i=this.options.ringboxApiKey,a=this.buildRecommendationsQuery(t);let s;try{const t=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json","x-clientid":i},body:JSON.stringify({query:a})}),r=await t.json();if(!r?.data?.exhibitorRecommendations?.length)throw new Error("No recommendation IDs provided");s=r.data.exhibitorRecommendations.map(t=>
1t.id)}catch(t){throw new Error(`exhibitorRecommendations error: ${t.message}`)}return s}async getExhibitorIDs(){if(this.options.configuration===u){const t=await this.getLastExhibitorInteraction();this.exhibitorIds=await this.getDynamicExhibitors(t)}else"popular"===this.options.configuration?this.exhibitorIds=await this.getDynamicExhibitors():this.exhibitorIds=this.options.exhibitorIds.split(",")}setFilters(){const t=this.options.locale.toLowerCase(),e=["recordType:exhibitor",`eventEditionId:${this.options.eventEdition}`],i=[];if(this.options.configuration===b)e.push(`locale:${t}`),i.push("packageId=3");else if(this.exhibitorIds.length>0){const i=this.exhibitorIds.map(e=>`objectID:${e}_${t}`).join(" OR ");e.push(`(${i})`)}return{searchFilters:e.join(" AND "),numericFilters:i}}fetchExhibitorsData(){const t=n()(this.options.appId,this.options.APIKey),e=`${this.options.eventId}-index`,i=t.initIndex(e),{searchFilters:a,numericFilters:s}=this.setFilters();i.search("",{filters:a,numericFilters:s,attributesToRetrieve:["id","exhibitorName","exhibitorDescription","logo","standReference","packageId","ppsAnswers","organisationGuid"]}).then(async({hits:t})=>{if(!t.length)throw new Error("Filter without hits");this.exhibitorsData=this.processExhibitorsData(t),await this.renderExhibitorCards(),this.setTracking()}).catch(t=>{this.handleError(`Exhibitor Master Carousel - ${t.message}`)})}processExhibitorsData(t){let e=[];
1if("curated"===this.options.configuration){e=this.exhibitorIds.map(e=>t.find(t=>t.id===e)).filter(t=>void 0!==t)}else e=this.options.configuration===b?t.sort(()=>Math.random()-.5):t;return e.map((t,e)=>(0,p.N)(t,e,this.options))}async renderExhibitorCards(){await this.populateCards(),this.updateSwiper(),this.addEventListeners(),this.addPubSubSubscription()}addPubSubSubscription(){window.showPlanningFlag&&rx.pubSub.subscribe(rx.pubSub.topics.SHOW_PLAN_EXHIBITORS_UPDATED,this.onPubSubEvent.bind(this))}onPubSubEvent(t,e){if(t===rx.pubSub.topics.SHOW_PLAN_EXHIBITORS_UPDATED){const t=this.cardsContainer.querySelector(`button[data-exhibitor-id="${e.exhibitorId}"]`);t&&this.toggleAddToPlanButton(t,e.isAdded)}}async populateCards(){let t=null;if(window.showPlanningFlag)try{const e=await rx.showPlanFacade.getState();t=e?.exhibitors||null}catch(t){console.warn(`Failed to fetch show plan state: ${t.message}`)}const e=this.getShowPlanIDs(t);this.cardsContainer.innerHTML=this.exhibitorsData.map(t=>(0,r.T)(t,e)).join("")}getShowPlanIDs(t){return t?.map(t=>t.id)||null}addEventListeners(){this._areListenersAdded||(this._areListenersAdded=!0,this.cardsContainer.addEventListener("click",this.onCardClick.bind(this)))}onCardClick(t){if(!window.showPlanningFlag)return;const e=t.target.closest(`.${s.N.addToPlan}`);e&&(t.preventDefault(),t.stopPropagation(),this.updateMyPlan(e))}updateMyPlan(t){const e=!t.classList.contains(s.N.addedToPlan);try{const i=t.closest(".exhibitor-card"),a=JSON.parse(t.dataset.addToPlanParams);e?(rx.showPlanFacade.add("exhibitor",a),h.planInteracted(this.element,i,!0)):(rx.showPlanFacade.remove("exhibitor",a),h.planInteracted(this.element,i,!1))}catch(t){console.warn(`Show plan update failed: ${t.message}`)}}toggleAddToPlanButton(t,e){const i=t?.querySelector("i");if(!i)return void console.warn("Add to Plan button icon not found");t.classList.toggle(s.N.addedToPlan,e),i.classList.toggle("far",!e),i.classList.toggle("fas",e);const a=t.dataset.exhibitorId,r=this.exhibitorsData.find(t=>String(t.id)===a);if(!r)return void console.warn(`Add to Plan button update: no exhibitor data found for exhibitor id "${a}"`);const o=e?r.removeFromPlanLabel.replace(/&name/g,()=>r.title):r.addToPlanLabel.replace(/&name/g,()=>r.title);t.setAttribute("aria-label",o),t.setAttribute("aria-pressed",e)}setTracking(){h.impressions(this.element),h.interactions(this.swiper,this.element)}}rx.componentLoader.register({exhibitorMasterCarousel:m})},5637:(t,e,i)=>{i.d(e,{T:()=>s,w:()=>r});var a=i(2511);const s=({priority:t,id:e,packageType:i,index:s,logo:r,title:o,url:n,standLabel:d,stands:c,description:l,tags:h,organisationId:p,addToPlanLabel:b,removeFromPlanLabel:u},m)=>{const x=n&&""!==n.trim()?`<a href="${n}" class="exhibitor-card__anchor">${o}</a>`:`<span>${o}</span>`,g=Array.isArray(m),v=g&&m.includes(e),w=(v?u.replace(/&name/g,()=>o):b.replace(/&name/g,()=>o)).replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">"),_={exhibitorId:e,name:o,logo:r||"",standReference:c||"",organisationId:p};return`\n\t\t<article class="swiper-slide theme__btn--border-radius theme__ac-color--outline-focus exhibitor-card ${t?"exhibitor-card--priority":""}"\n\t\tdata-card-type="exhibitor"\n\t\tdata-mixpanel-params-exhibitor-card='${JSON.stringify({"Exhibitor ID":e||"","Exhibitor Name":o||"","Package Type":i||"","Slot Type":t?"priority":"standard","Card Position":s+1}).replace(/'/g,"'")}'>\n\t\t${t?`<div class="exhibitor-card__priority-banner theme__ac-color--background-color theme__btn-text--color">${t}</div>`:""}\n \t<div class="exhibitor-card__contents-wrap">\n\t\t\t<header class="exhibitor-card__header">\n\t\t\t\t<div class="exhibitor-card__logo">\n\t\t\t\t\t${r?`<img src="${r}" alt="">`:'\n\t\t\t\t\t<svg viewBox="0 0 96 96" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false">\n\t\t\t\t\t\t<path d="m0 16c0-8.8366 7.1634-16 16-16h64c8.8366 0 16 7.1634 16 16v64c0 8.8366-7.1634 16-16 16h-64c-8.8366 0-16-7.1634-16-16v-64z" fill="#F6F6F6"/>\n\t\t\t\t\t\t<path d="m48 31.333v-13.333h-33.333v60h66.667v-46.667h-33.333zm-20 40h-6.6666v-6.6666h6.6666v6.6666zm0-13.333h-6.6666v-6.6667h6.6666v6.6667zm0-13.333h-6.6666v-6.6667h6.6666v6.6667zm0-13.333h-6.6666v-6.6666h6.6666v6.6666zm13.333 40h-6.6667v
1-6.6666h6.6667v6.6666zm0-13.333h-6.6667v-6.6667h6.6667v6.6667zm0-13.333h-6.6667v-6.6667h6.6667v6.6667zm0-13.333h-6.6667v-6.6666h6.6667v6.6666zm33.333 40h-26.667v-6.6666h6.6667v-6.6667h-6.6667v-6.6667h6.6667v-6.6666h-6.6667v-6.6667h26.667v33.333zm-6.6667-26.667h-6.6666v6.6666h6.6666v-6.6666zm0 13.333h-6.6666v6.6667h6.6666v-6.6667z" fill="#1A1A1A"/>\n\t\t\t\t\t</svg>'}\n\t\t\t\t</div>\n\t\t\t\t<div class="exhibitor-card__title" role="heading" aria-level="3">\n\t\t\t\t\t${x}\n\t\t\t\t</div>\n\t\t\t\t${g?`<button type="button" class="${a.N.addToPlan} ${v?a.N.addedToPlan:""} theme__ac-color--color-hover" data-add-to-plan-params='${JSON.stringify(_).replace(/'/g,"'")}' data-exhibitor-id="${e}" aria-label="${w}" aria-pressed="${v}">\n\t\t\t\t\t<i class="${v?"fas":"far"} fa-heart" aria-hidden="true"></i>\n\t\t\t\t</button>`:""}\n\t\t\t</header>\n\t\t\t<div class="exhibitor-card__stand">\n\t\t\t\t${c&&`<i class="exhibitor-card__stand-icon theme__ac-color--color fa fa-location-dot"></i>\n\t\t\t\t<span class="exhibitor-card__stand-label">${d}</span>\n\t\t\t\t<span class="exhibitor-card__stand-code">${c}</span>`}\n\t\t\t</div>\n\t\t\t<div class="exhibitor-card__description">${l}</div>\n\t\t\t<footer class="exhibitor-card__footer">\n\t\t\t\t<ul class="exhibitor-card__taglist">\n\t\t\t\t\t${h&&h.map(t=>`<li>${t}</li>`).join("")}\n\t\t\t\t</ul>\n\t\t\t</footer>\n\t\t</div>\n\t</article>`},r=()=>'\n\t<div class="swiper-slide exhibitor-card">\n \t<div class="exhibitor-card__contents-wrap">\n\t\t\t<div class="exhibitor-card__header">\n\t\t\t\t<div class="exhibitor-card__logo skeleton-box" style="width:48px;height:48px;"></div>\n\t\t\t\t<div class="exhibitor-card__title skeleton-box"></div>\n\t\t\t</div>\n\t\t\t<div class="skeleton-box" style="width:50%;margin-bottom:16px"></div>\n\t\t\t<div class="skeleton-box"></div>\n\t\t\t<div class="skeleton-box" style="width:75%"></div>\n\t\t\t<div class="exhibitor-card__footer skeleton-box" style="width:75%"></div>\n\t\t</div>\n\t</div>\n'},567:(t,e,i)=>{function a(t,e,i){const a=t.exhibitorName||"",s=encodeURIComponent(a.replace(/[^\w\s\d\p{L}-]/gu,"").toLowerCase()),r=2===t.packageId||3===t.packageId;return{id:t.id,packageType:(o=t.packageId,{1:"Bronze",2:"Silver",3:"Gold",4:"Basic"}[o]||""),index:e,priority:r?i.premiumBannerLabel:"",title:a,url:i.exhibitorDetailsPage?`${i.exhibitorDetailsPage}.${s}.${t.organisationGuid}.html`:"",logo:t.logo||"",standLabel:i.standLabel||"",stands:t.standReference||"",description:t.exhibitorDescription||"",tags:t.ppsAnswers||"",organisationId:t.organisationGuid||"",addToPlanLabel:i.addToPlanLabel||"Add &name to plan",removeFromPlanLabel:i.removeFromPlanLabel||"Remove &name from plan"};var o}i.d(e,{N:()=>a})},2511:(t,e,i)=>{i.d(e,{N:()=>a});const a={addToPlan:"exhibitor-card__addToPlan",addedToPlan:"exhibitor-card__addToPlan--added"}}},t=>{t.O(0,[2330,7926],()=>{return e=6136,t(t.s=e);var e});t.O()}]);
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.