{"version":3,"sources":["block-filtered-package.js"],"names":["BlockFilteredPackage","constructor","container","options","this","Object","assign","venueSelector","pleaseSelect","swiperActiveWrapper","availableSlide","swiperElement","swiperPagination","swiperPaginationNext","swiperPaginationPrevious","swiperButton","modal","modalOpenButton","modalCloseButton","isSwiperActive","document","querySelector","venueSelectors","querySelectorAll","availableSlides","swiperElem","swuperPagination","swiperButtons","modals","modalCloseButtons","swiper","initSwiper","setEvents","let","self","forEach","venue","addEventListener","onVenueSelect","closeButton","e","stopPropagation","closeModals","setModalEvents","button","openModal","dataset","modalOpen","id","modalId","classList","add","remove","elem","venueSelect","filterVenues","style","display","opacity","destroy","innerHTML","slide","split","filter","x","length","append","cloneNode","Swiper","direction","loop","slidesPerView","centeredSlides","slideToClickedSlide","initialSlide","spaceBetween","grabCursor","autoResize","pagination","el","clickable","navigation","nextEl","prevEl","breakpoints","998","1200"],"mappings":"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","file":"block-filtered-package.min.js","sourcesContent":["export default class BlockFilteredPackage {\r\n constructor(container, options) {\r\n const defaultOptions = {\r\n venueSelector: '.select-venue .venues .venue',\r\n pleaseSelect: '.placeholder-please-select-message',\r\n swiperActiveWrapper: '.swiper .swiper-wrapper',\r\n availableSlide: '.package-data .swiper-slide',\r\n swiperElement: '.swiper',\r\n swiperPagination: '.swiper-pagination',\r\n swiperPaginationNext: '.swiper-button-next',\r\n swiperPaginationPrevious: '.swiper-button-prev',\r\n swiperButton: '.swiper-button',\r\n modal: '.package-modal',\r\n modalOpenButton: '.modal-trigger',\r\n modalCloseButton: '.icon-modal-close',\r\n isSwiperActive: true\r\n };\r\n this.options = Object.assign({}, defaultOptions, options);\r\n \r\n this.container = document.querySelector(container);\r\n this.venueSelectors = this.container.querySelectorAll(this.options.venueSelector);\r\n this.pleaseSelect = this.container.querySelector(this.options.pleaseSelect);\r\n this.availableSlides = this.container.querySelectorAll(this.options.availableSlide);\r\n this.swiperActiveWrapper = this.container.querySelector(this.options.swiperActiveWrapper);\r\n this.swiperElem = this.container.querySelector(this.options.swiperElement);\r\n this.swiperPagination = this.container.querySelector(this.options.swuperPagination);\r\n this.swiperPaginationNext = this.container.querySelector(this.options.swiperPaginationNext);\r\n this.swiperPaginationPrevious = this.container.querySelector(this.options.swiperPaginationPrevious);\r\n this.swiperButtons = this.container.querySelectorAll(this.options.swiperButton);\r\n this.isSwiperActive = this.options.isSwiperActive;\r\n \r\n this.modals = this.container.querySelectorAll(this.options.modal);\r\n this.modalCloseButtons = this.container.querySelectorAll(this.options.modalCloseButton);\r\n \r\n this.swiper = null;\r\n\r\n if(this.isSwiperActive)\r\n this.initSwiper();\r\n \r\n this.setEvents();\r\n }\r\n\r\n setEvents() {\r\n let self = this;\r\n this.venueSelectors.forEach(venue => {\r\n venue.addEventListener('click', function() {\r\n self.onVenueSelect(this);\r\n });\r\n });\r\n\r\n this.modalCloseButtons.forEach(closeButton => {\r\n closeButton.addEventListener('click', e => {\r\n e.stopPropagation()\r\n self.closeModals();\r\n })\r\n });\r\n\r\n this.setModalEvents();\r\n }\r\n\r\n setModalEvents() {\r\n let self = this;\r\n\r\n let modalOpenButtons = this.swiperElem.querySelectorAll(this.options.modalOpenButton);\r\n modalOpenButtons.forEach(button => {\r\n button.addEventListener('click', function(e) {\r\n e.stopPropagation()\r\n self.openModal(button.dataset.modalOpen);\r\n });\r\n });\r\n }\r\n \r\n openModal(id) {\r\n this.modals.forEach(modal => {\r\n if (modal.dataset.modalId === id) {\r\n modal.classList.add('active');\r\n }\r\n })\r\n }\r\n closeModals() {\r\n this.modals.forEach(modal => {\r\n modal.classList.remove('active');\r\n });\r\n }\r\n\r\n onVenueSelect(elem) {\r\n var id = elem.dataset.id;\r\n this.venueSelect(id);\r\n }\r\n\r\n venueSelect(id) {\r\n this.filterVenues(id);\r\n\r\n if (this.pleaseSelect !== null) {\r\n this.pleaseSelect.style.display = 'none';\r\n }\r\n // Show the swiper buttons\r\n this.swiperButtons.forEach(button => {\r\n button.style.opacity = 1;\r\n });\r\n\r\n this.setModalEvents();\r\n }\r\n\r\n filterVenues(id) {\r\n if(this.isSwiperActive)\r\n this.swiper.destroy(true, true)\r\n \r\n this.swiperActiveWrapper.innerHTML = '';\r\n this.availableSlides.forEach(slide => {\r\n let venues = slide.dataset.venue.split('|');\r\n let shouldBeVisible = venues.filter(x=> x === id).length;\r\n \r\n if (shouldBeVisible) {\r\n this.swiperActiveWrapper.append(slide.cloneNode(true));\r\n }\r\n })\r\n\r\n if(this.isSwiperActive)\r\n this.initSwiper();\r\n }\r\n \r\n initSwiper() {\r\n this.swiper = new Swiper(this.swiperElem, {\r\n direction: 'horizontal',\r\n loop: false,\r\n slidesPerView: 1.15,\r\n centeredSlides: true,\r\n slideToClickedSlide: true,\r\n initialSlide: 0,\r\n spaceBetween: 15,\r\n grabCursor: true,\r\n autoResize: false,\r\n pagination: {\r\n el: this.swiperPagination,\r\n clickable: true\r\n },\r\n navigation: {\r\n nextEl: this.swiperPaginationNext,\r\n prevEl: this.swiperPaginationPrevious,\r\n },\r\n breakpoints: {\r\n 998: {\r\n slidesPerView: 3.15,\r\n centeredSlides: false,\r\n spaceBetween: 30\r\n },\r\n 1200: {\r\n slidesPerView: 3,\r\n centeredSlides: false,\r\n spaceBetween: 30\r\n }\r\n }\r\n })\r\n }\r\n}"]}