1"use strict";(self.webpackChunk_gp_web_frontend=self.webpackChunk_gp_web_frontend||[]).push([["tom-events-occurrences"],{
1"./src/ts/components/tom-events-occurrences/tom-events-occurrences.ts":(e,t,n)=>{n.r(t),n.d(t,{init:()=>o,tomEventsOccurrencesComponent:()=>c});const c=e=>{let t=0;const n={},c={},o={},r={updateButtonStyles:t=>{e.querySelectorAll("[data-month-index]").forEach(((e,n)=>{const c=e;n===t?c.classList.add("selected"):c.classList.remove("selected")}))},updateOccurrencesDisplay:t=>{e.querySelectorAll(".month-occurrences").forEach(((e,n)=>{const c=e;n===t?(c.classList.remove("hidden"),c.classList.add("active")):(c.classList.add("hidden"),c.classList.remove("active"))}))},updateOccurrencesContent:(t,n,c)=>{var o,r;const s=e.querySelector(`[data-month-index="${t}"].month-occurrences`);if(s&&n.length>0){const a=s.querySelector('[class*="occurrencesContent"]'),i=null==a?void 0:a.querySelector(".articleRow");if(i&&(i.innerHTML="",n.forEach((e=>{const t=document.createElement("article");t.className="occurrenceTemplate",t.innerHTML=`\n <time class="occurrenceDate" datetime="${e.startDate}">\n <span class="dateText" data-date-content>${e.startDateLocale}</span>\n </time>\n <div class="occurrenceInfo">\n ${e.allDay?'<span class="dateTime tom-occurrence-hidden" data-time-content></span>':`<span class="dateTime tom-occurrence-visible" data-time-content>${e.startTimeLocale}</span>`}\n ${e.name?`<span class="occurrenceName tom-occurrence-visible" data-name-content>${e.name}</span>`:'<span class="occurrenceName tom-occurrence-hidden" data-name-content></span>'}\n <span class="venueName">\n ${e.venueName?`<a href="${e.venueUrl||"#"}" data-venue-content>${e.venueName}</a>`:'<a href="#" data-venue-content></a>'}\n </span>\n ${e.price?`<div class="price tom-occurrence-visible-block" data-price-content><span>${e.price}</span></div>`:'<div class="price tom-occurrence-hidden" data-price-content><span></span></div>'}\n </div>\n `,i.appendChild(t)}))),(null==c?void 0:c.nextUrl)&&""!==c.nextUrl.trim()){let e=s.querySelector(".viewMoreCta");if(e||(e=s.querySelector('[class*="viewMoreCta"]')),!e){const t=s.querySelector('[class*="viewMoreButton"]');t&&(e=t.parentElement)}if(e){e.classList.remove("tom-occurrence-hidden");const n=e.querySelector('[class*="viewMoreButton"]');n&&(n.setAttribute("data-month-index",t.toString()),n.setAttribute("data-next-url",c.nextUrl))}else{const e=s.querySelector('[class*="viewMoreButton"]');e&&(e.setAttribute("data-month-index",t.toString()),e.setAttribute("data-next-url",c.nextUrl),null===(o=e.parentElement)||void 0===o||o.classList.remove("tom-occurrence-hidden"))}}else{const n=e.querySelector(`[data-month-index="${t}"].month-occurrences`);if(n){const e=n.querySelector(".viewMoreCta")||n.querySelector('[class*="viewMoreCta"]')||(null===(r=n.querySelector('[class*="viewMoreButton"]'))||void 0===r?void 0:r.parentElement);e&&e.classList.add("tom-occurrence-hidden")}}}else if(s){const e=s.querySelector('[class*="occurrencesContent"]'),t=null==e?void 0:e.querySelector(".articleRow");t&&(t.innerHTML='<p class="no-occurrences">No occurrences found for this month.</p>');const n=s.querySelector(".viewMoreCta");n&&n.classList.add("hidden")}},fetchMonthData:async(o,s)=>{if(n[o])return t=o,r.updateButtonStyles(t),r.updateOccurrencesDisplay(t),void r.updateOccurrencesContent(o,n[o].occurrences,n[o].pagination);c[o]=!0;try{const c=document.documentElement.lang||"en-GB",a=e.getAttribute("data-timezone")||"Europe/London",i=await fetch("/api/tom-event-occurrences",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({occurrencesUrl:s,locale:c,timeZone:a})});if(i.ok){const e=await i.json();n[o]=e,t=o,r.updateButtonStyles(t),r.updateOccurrencesDisplay(t),r.updateOccurrencesContent(o,e.occurrences,e.pagination)}else r.updateOccurrencesContent(o,[])}catch(e){r.updateOccurrencesContent(o,[])}finally{c[o]=!1}},showMoreData:async(t,c)=>{var s,a,i,l;if(!o[t]){o[t]=!0;try{const o=document.documentElement.lang||"en-GB",l=e.getAttribute("data-timezone")||"Europe/London",u=await fetch("/api/tom-event-occurrences",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({occurrencesUrl:c,locale:o,timeZone:l})});if(u.ok){const c=await u.json();if(!c.occurrences||0===c.occurrences.length){const n=e.querySelector(`[data-month-index="${t}"].month-occurrences`);if(n){const e=n.querySelector(".viewMoreCta")||n.querySelector('[class*="viewMoreCta"]')||(null===(s=n.querySelector('[class*="viewMoreButton"]'))||void 0===s?void 0:s.parentElement);if(e){e.classList.add("tom-occurrence-hidden");const t=e.querySelector('[class*="viewMoreButton"]');t&&(t.setAttribute("data-month-index",""),t.setAttribute("data-next-url",""))}}return}const o=n[t],i=new Set(o.occurrences.map((e=>
1e.uid)).filter(Boolean)),l=c.occurrences.filter((e=>!e.uid||!i.has(e.uid)));if(0===l.length){const n=e.querySelector(`[data-month-index="${t}"].month-occurrences`);if(n){const e=n.querySelector(".viewMoreCta")||n.querySelector('[class*="viewMoreCta"]')||(null===(a=n.querySelector('[class*="viewMoreButton"]'))||void 0===a?void 0:a.parentElement);if(e){e.classList.add("tom-occurrence-hidden");const t=e.querySelector('[class*="viewMoreButton"]');t&&(t.setAttribute("data-month-index",""),t.setAttribute("data-next-url",""))}}return}const d=[...o.occurrences,...l];n[t]={occurrences:d,pagination:c.pagination},r.updateOccurrencesContent(t,d,c.pagination)}else{const n=e.querySelector(`[data-month-index="${t}"].month-occurrences`);if(n){const e=n.querySelector(".viewMoreCta")||n.querySelector('[class*="viewMoreCta"]')||(null===(i=n.querySelector('[class*="viewMoreButton"]'))||void 0===i?void 0:i.parentElement);e&&e.classList.add("tom-occurrence-hidden")}}}catch(n){const c=e.querySelector(`[data-month-index="${t}"].month-occurrences`);if(c){const e=c.querySelector(".viewMoreCta")||c.querySelector('[class*="viewMoreCta"]')||(null===(l=c.querySelector('[class*="viewMoreButton"]'))||void 0===l?void 0:l.parentElement);e&&e.classList.add("tom-occurrence-hidden")}}finally{o[t]=!1}}},onButtonClick:e=>{var t,n,c,o,s,a;const i=e.target;if(i.matches('[class*="viewMoreButton"]')||i.closest('[class*="viewMoreButton"]')||(null===(t=i.textContent)||void 0===t?void 0:t.includes("Show More"))&&"BUTTON"===i.tagName||i.closest("button")&&(null===(c=null===(n=i.closest("button"))||void 0===n?void 0:n.textContent)||void 0===c?void 0:c.includes("Show More"))){let t;e.preventDefault(),e.stopPropagation(),t=i.matches('[class*="viewMoreButton"]')?i:i.closest('[class*="viewMoreButton"]')?i.closest('[class*="viewMoreButton"]'):(null===(o=i.textContent)||void 0===o?void 0:o.includes("Show More"))&&"BUTTON"===i.tagName?i:i.closest("button")&&(null===(a=null===(s=i.closest("button"))||void 0===s?void 0:s.textContent)||void 0===a?void 0:a.includes("Show More"))?i.closest("button"):i;const n=null==t?void 0:t.getAttribute("data-month-index"),c=null==t?void 0:t.getAttribute("data-next-url");if(n&&c&&""!==c.trim()){const e=parseInt(n);r.showMoreData(e,c)}return}const l=i.matches("button")?i:i.closest("button");if(l&&l.hasAttribute("data-month-index")&&l.hasAttribute("data-occurrences-url")){const e=l.getAttribute("data-month-index"),t=l.getAttribute("data-occurrences-url");if(e&&t){const n=parseInt(e);l.getAttribute("data-original-text")||l.setAttribute("data-original-text",l.textContent||""),r.fetchMonthData(n,t)}}},init:()=>(e.addEventListener("click",r.onButtonClick),r.updateButtonStyles(t),r.updateOccurrencesDisplay(t),{})};return r},o=e=>{const t=Math.floor(1e4*Math.random());return{listeners:c(e).init(),componentId:`tom-events-occurrences-${t}`}}}
1}]);
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.