PageSourceSearch

https://www.parquelapaz.com/static/dist/chunk-filter_carousel-CFDxL2zq.js

js parquelapaz.com collected 2026-10-09 00:28:43 UTC 8,694 bytes, 197 lines download raw bytes

1import { i as initSwiper, S as Swiper } from "./chunk-swiper-carousel-CoIKyzd8.js";
2function filterCarousel() {
3  function elementControl(element, value, slide) {
4    let plainText = value;
5    if (slide.querySelector(element)) {
6      const truncateWords = slide.querySelector(element).dataset.truncatewords;
7      if (truncateWords) {
8        let truncatedValue = value.split(" ").slice(0, truncateWords);
9        plainText = value.replace(/(<([^>]+)>)/gi, "");
10        if (element != ".js-paragraph")
11          slide.querySelector(element).title = plainText;
12        plainText = plainText.length > truncateWords ? `${truncatedValue.join(" ")}…` : plainText;
13      }
14      plainText ? slide.querySelector(element).innerHTML = plainText : slide.querySelector(element).remove();
15    }
16  }
17  function imageControl(element, value, slide, title = false) {
18    if (slide.querySelector(element)) {
19      if (value) {
20        slide.querySelector(element).src = value;
21        if (title) {
22          slide.querySelector(element).alt = title;
23        }
24      } else {
25        slide.querySelector(element).remove();
26      }
27    }
28  }
29  function linkControl(element, value, slide) {
30    if (slide.querySelector(element)) {
31      value ? slide.querySelector(element).href = value : slide.querySelector(element).remove();
32    }
33  }
34  function modalControl(element, value, slide) {
35    if (slide.querySelector(element)) {
36      value ? slide.querySelector(element).dataset.target = value : slide.querySelector(element).remove();
37    }
38  }
39  function updateBookingButton(element, value, slide) {
40    let button = slide.querySelector(element);
41    if (button) {
42      button.classList.remove("js-reveal-offer");
43      const now = (/* @__PURE__ */ new Date()).toLocaleDateString("es-ES", {
44        day: "numeric",
45        month: "2-digit",
46        year: "numeric"
47      });
48      const hotel_name = value.hotel_name != null ? value.hotel_name : value.title;
49      const hotel_code = value.hotel_code != null ? value.hotel_code : value.destination_code;
50      const from_data = value.from_data != null ? value.from_data : false;
51      const to_data = value.to_data != null ? value.to_data : "";
52      button.dataset.desde = from_data ? from_data : now;
53      button.dataset.hasta = to_data ? to_data : "";
54      button.dataset.oferta = value.title;
55      button.dataset.hotel = hotel_name ? hotel_name : "";
56      button.dataset.hotelCod = hotel_code ? hotel_code : "";
57      button.dataset.codigo = value.code;
58      button.dataset.type = value.type != null ? value.type : "";
59      button.dataset.url = value.url_bookcore != null ? value.url_bookcore : "";
60      button.dataset.minimoNoches = value.min_nights != null ? value.min_nights : "";
61      if (button.dataset.paquete) {
62        if (button.dataset.url) {
63          button.addEventListener("click", function(event) {
64            event.preventDefault();
65            window.location.href = button.dataset.url;
66          });
67        } else {
68          button.addEventListener("click", function() {
69            RoiEngineWidget.createPackageModal(this);
70          });
71        }
72      } else if (button.dataset.codigo && button.dataset.oferta) {
73        button.addEventListener("click", function() {
74          RoiEngineWidget.createOfferModal(this);
75        });
76      } else if (button.dataset.codigo || button.dataset.hotelCod) {
77        button.addEventListener("click", function() {
78          RoiEngineWidget.createRoomModal(this);
79        });
80      }
81    }
82  }
83  function navigationControl(carouselItems, element) {
84    let config = JSON.parse(element.dataset.swiperCarouselConfig);
85    const arrows = element.parentNode.querySelector(".js-swiper-arrows");
86    config.itemsLenght = carouselItems.length;
87    config.itemsVisibleSm = config.items_visible_sm;
88    config.itemsVisibleLg = config.items_visible_lg;
89    if (config.itemsVisibleSm > config.itemsVisibleLg) {
90      config.itemsVisibleSm = config.itemsVisibleLg;
91    }
92    element.dataset.swiperCarouselConfig = JSON.stringify(config);
93    if (arrows) {
94      config.itemsLenght > config.itemsVisibleLg ? arrows.classList.remove("hidden-lg") : arrows.classList.add("hidden-lg");
95    }
96  }
97  function sortCarousel(carouselItems, element, swp_slide, swp_wrap) {
98    if (carouselInstance) {
99      carouselInstance.destroy(true, true);
100    }
101    swp_wrap.innerHTML = "";
102    carouselItems = carouselItems.length == 1 && carouselItems[0].hotels != null ? carouselItems[0].hotels : carouselItems;
103    carouselItems.forEach(function(el) {
104      createCard(el, swp_slide, swp_wrap);
105    });
106    element.classList.add("js-swpCarousel");
107    navigationControl(carouselItems, element);
108    initSwiper(element);
109    var carouselInstance = Swiper;
110  }
111  function createCard(el, swp_slide, swp_wrap) {
112    let slide = document.createElement("div");
113    slide.classList.add("swiper-slide");
114    slide.innerHTML = swp_slide;
115    swp_wrap.appendChild(slide);
116    elementControl(".js-title", el.title, slide);
117    elementControl(".js-subtitle", el.subtitle, slide);
118    el.text = el.text.replace(/(?:\r\n|\r|\n)/g, "<br>");
119    elementControl(".js-paragraph", el.text, slide);
120    imageControl(".js-img--image", el.images, slide, el.title);
121    if (el.modal_target) {
122      modalControl(".js-sd-modal__button", el.modal_target, slide);
123    } else {
124      linkControl(".js-cta", el.url, slide);
125    }
126    elementControl(".js-price-from", el.from_price, slide);
127    elementControl(".js-price-currency", el.currency, slide);
128    if (!el.from_price) {
129      if (slide.querySelector(".js-actions-from")) {
130        slide.querySelector(".js-actions-from").remove();
131      }
132    }
133    updateBookingButton(".js-booking-button", el, slide);
134  }
135  function initFilterCarousel(element) {
136    if (element) {
137      const moduleWrap = element.parentNode.parentNode.parentNode;
138      const filters = moduleWrap.querySelectorAll(".js-carousel-filter");
139      let swpSlide = element.querySelector(".swiper-slide");
140      let swpWrap = element.querySelector(".swiper-wrapper");
141      let carouselItems = JSON.parse(element.dataset.carouselItemsJson);
142      swpSlide = swpSlide ? swpSlide.innerHTML : "";
143      sortCarousel(carouselItems, element, swpSlide, swpWrap);
144      filters.forEach(function(filter) {
145        filter.addEventListener("change", function() {
146          let filteredItem = "";
147          let filterType = filter.dataset.filterType;
148          let selectedFilterValue = filter.value;
149          const noResults = moduleWrap.querySelector(".js-filter-carousel-andromeda__no-results");
150          const countryFilter = moduleWrap.querySelector(".js-carousel-filter--country");
151          const cityFilter = moduleWrap.querySelector(".js-carousel-filter--city");
152          let cityFilterJson = [];
153          if (cityFilter) {
154            cityFilterJson = JSON.parse(cityFilter.dataset.jsonOptions);
155          }
156          if (noResults) {
157            noResults.classList.remove("filter-carousel-andromeda__no-results--show");
158          }
159          if (filterType) {
160            filteredItem = carouselItems.filter(function(item) {
161              return selectedFilterValue != "" ? item[filterType] === selectedFilterValue : item[filterType] != selectedFilterValue;
162            });
163          }
164          if (filterType == "country_code") {
165            if (!cityFilter)
166              return;
167            cityFilterJson.forEach(function(city) {
168              cityFilter.selectedIndex = 0;
169              if (city.country_code === selectedFilterValue || selectedFilterValue === "") {
170                cityFilter.querySelector(`option[value=${city.city_code}]`).style.display = "block";
171              } else {
172                cityFilter.querySelector(`option[value=${city.city_code}]`).style.display = "none";
173              }
174            });
175          } else if (filterType == "city_code" && selectedFilterValue === "" && countryFilter) {
176            filteredItem = carouselItems.filter(function(item) {
177              return countryFilter.value === "" ? item["country_code"] != countryFilter.value : item["country_code"] === countryFilter.value;
178            });
179          }
180          if (filteredItem.length === 0 && noResults) {
181            noResults.classList.add("filter-carousel-andromeda__no-results--show");
182            noResults.style.height = `${swpWrap.clientHeight}px`;
183          }
184          sortCarousel(filteredItem, element, swpSlide, swpWrap);
185        });
186      });
187    }
188  }
189  const carousel = document.querySelectorAll(".js-filter-carousel");
190  carousel.forEach(function(element) {
191    initFilterCarousel(element);
192  });
193}
194export {
195  filterCarousel as f
196};
197//# sourceMappingURL=chunk-filter_carousel-CFDxL2zq.js.map

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.