{"version":3,"sources":["webpack://frontendplaceholder/./Src/Scripts/components/add-ons.js"],"names":["constructor","elm","addOnModal","addOnLinks","document","querySelectorAll","dataset","addOnsModal","lazyLoadingGroupingText","querySelector","categoryGroupingText","addOnModalModule","then","default","SlideInModal","forEach","le","sectionKey","getAttribute","addEventListener","e","preventDefault","open","openModule","section","events","length","classList","contains","click","x","onclick","headerElement","eventCard","closest","toggle","lazyLoadDetails","scrollIntoView","behavior","eventId","lazyLoadProducts","fetch","response","json","eventsData","container","add","removeAttribute","remove","event","Dates","date","specificEventDateElems","EventId","filteredProducts","Products","filter","product","GroupingText","replace","toLowerCase","sort","a","b","Name","localeCompare","additionalProducts","clonedProduct","cloneProduct","eventDate","prepend","appendChild","processEventDate","processEventDetails","toggleEventDetails","template","getElementById","content","eventProductDiv","importNode","src","ProductImagePath","innerText","innerHTML","Description","productUrl","ProductPurchaseUrls","find","url","Culture","Link","setAttribute"],"mappings":"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","file":"1071.1637ce16ddad63fe7156.js","sourcesContent":["export default class AddOns {\n constructor(elm) {\n const addOnModal = elm;\n const addOnLinks = [...document.querySelectorAll(`[data-add-on-link=\"${addOnModal.dataset.addOnsModal}\"]`)];\n const lazyLoadingGroupingText = addOnModal.querySelector('[data-category-grouping-text]')?.dataset?.categoryGroupingText;\n\n if (addOnLinks) {\n let addOnModalModule;\n\n import('../components/slide-in-modal').then(({ default: SlideInModal }) => {\n function openModule(sectionKey) {\n if (addOnModalModule) {\n addOnModalModule.open(sectionKey);\n } else if (addOnModal) {\n addOnModalModule = new SlideInModal(addOnModal);\n addOnModalModule.open(sectionKey);\n }\n }\n\n addOnLinks.forEach(le => {\n if (le === null) return;\n const sectionKey = le.getAttribute('data-add-on-section');\n le.addEventListener('click', (e) => {\n e.preventDefault();\n openModule(sectionKey);\n const section = elm.querySelector(`[data-slide-in-modal__section=\"${sectionKey}\"]`);\n if (section) {\n const events = section.querySelectorAll('.add-on-event');\n if (events && events.length === 1 && !events[0].classList.contains('add-on-event--expanded')) {\n events[0].querySelector('.add-on-event__header').click();\n }\n }\n });\n });\n });\n }\n\n const addOnEventsToggles = addOnModal.querySelectorAll('.add-on-event__header');\n addOnEventsToggles.forEach(x => x.onclick = () => toggleEventDetails(x));\n const template = document.getElementById('event--product-template')?.content;\n function toggleEventDetails(headerElement) {\n const eventCard = headerElement.closest('.add-on-event');\n eventCard.classList.toggle('add-on-event--expanded');\n\n const lazyLoadDetails = eventCard.querySelector('[data-lazy-load-products]');\n if (!lazyLoadDetails) {\n eventCard.scrollIntoView({ behavior: 'smooth' });\n return;\n }\n\n // For use in the section where we are searching for events and lazyloading products\n const eventId = lazyLoadDetails.dataset.lazyLoadProducts;\n fetch(`/umbraco/api/tixly/fetcheventbyid?EventID=${eventId}`)\n .then(response => response.json())\n .then(eventsData => processEventDetails(eventsData, eventCard))\n .then(() => {\n eventCard.scrollIntoView({ behavior: 'smooth' });\n });\n }\n\n function processEventDetails(eventsData, eventCard) {\n if (!eventsData.forEach) {\n const container = eventCard.querySelector('[data-event-date-id]');\n container?.classList.add('no-products-found');\n container.removeAttribute('data-lazy-load-products');\n container.classList.remove('add-on-event__details--loading');\n return;\n }\n eventsData.forEach(event => {\n event.Dates.forEach(date => {\n processEventDate(date);\n });\n });\n }\n\n function processEventDate(date) {\n const specificEventDateElems = addOnModal.querySelectorAll(`[data-event-date-id=\"${date.EventId}\"]`);\n if (specificEventDateElems.length > 0) {\n const filteredProducts = date.Products\n .filter(product => product.GroupingText.replace(' ', '').toLowerCase() === lazyLoadingGroupingText)\n .sort((a, b) => a.Name.localeCompare(b.Name));\n\n const additionalProducts = date.Products\n .filter(product => product.GroupingText.replace(' ', '').toLowerCase() !== lazyLoadingGroupingText)\n .sort((a, b) => a.Name.localeCompare(b.Name));\n\n if (filteredProducts.length > 0) {\n filteredProducts.forEach(product => {\n const clonedProduct = cloneProduct(date, product);\n specificEventDateElems.forEach(eventDate => {\n eventDate.prepend(clonedProduct);\n });\n });\n } else {\n specificEventDateElems.forEach(eventDate => {\n eventDate?.classList.add('no-products-found');\n });\n }\n\n if (additionalProducts.length > 0) {\n specificEventDateElems.forEach(eventDate => {\n eventDate?.classList.add('other-products-found');\n additionalProducts.forEach(product => {\n const clonedProduct = cloneProduct(date, product);\n eventDate.appendChild(clonedProduct);\n });\n });\n }\n\n specificEventDateElems.forEach(eventDate => {\n eventDate.removeAttribute('data-lazy-load-products');\n eventDate.classList.remove('add-on-event__details--loading');\n });\n }\n }\n\n function cloneProduct(date, product) {\n const eventProductDiv = document.importNode(template, true);\n eventProductDiv.querySelector('img').src = product.ProductImagePath;\n eventProductDiv.querySelector('h3').innerText = product.Name;\n eventProductDiv.querySelector('.event-product__description').innerHTML = product.Description;\n const productUrl = date.ProductPurchaseUrls.find(url => url.Culture === 'da-DK').Link;\n eventProductDiv.querySelector('a.btn').setAttribute('href', productUrl);\n return eventProductDiv;\n }\n }\n}\n"],"sourceRoot":""}